File indexing completed on 2026-04-09 07:49:53
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009 enum {
0010 T_UNDEF,
0011 T_DISC,
0012 T_LINE,
0013 T_POINT,
0014 T_CIRCLE,
0015 T_RECTANGLE,
0016 T_SPHERE_MARSAGLIA,
0017 T_SPHERE,
0018 T_LAST
0019 };
0020
0021
0022 #if defined(__CUDACC__) || defined(__CUDABE__)
0023 #else
0024 #include <cstring>
0025 #include <string>
0026
0027 struct storchtype
0028 {
0029 static constexpr const char* T_UNDEF_ = "undef";
0030 static constexpr const char* T_DISC_ = "disc" ;
0031 static constexpr const char* T_LINE_ = "line" ;
0032 static constexpr const char* T_POINT_ = "point" ;
0033 static constexpr const char* T_CIRCLE_ = "circle" ;
0034 static constexpr const char* T_RECTANGLE_ = "rectangle" ;
0035 static constexpr const char* T_SPHERE_MARSAGLIA_ = "sphere_marsaglia" ;
0036 static constexpr const char* T_SPHERE_ = "sphere" ;
0037
0038 static unsigned Type(const char* name);
0039 static unsigned Type(const std::string& name);
0040 static const char* Name(unsigned type);
0041 static bool IsValid(unsigned type);
0042 };
0043
0044 inline unsigned storchtype::Type(const char* name)
0045 {
0046 unsigned type = T_UNDEF ;
0047 if(strcmp(name,T_DISC_)==0) type = T_DISC ;
0048 if(strcmp(name,T_LINE_)==0) type = T_LINE ;
0049 if(strcmp(name,T_POINT_)==0) type = T_POINT ;
0050 if(strcmp(name,T_CIRCLE_)==0) type = T_CIRCLE ;
0051 if(strcmp(name,T_RECTANGLE_)==0) type = T_RECTANGLE ;
0052 if(strcmp(name,T_SPHERE_MARSAGLIA_)==0) type = T_SPHERE_MARSAGLIA ;
0053 if(strcmp(name,T_SPHERE_)==0) type = T_SPHERE ;
0054 return type ;
0055 }
0056
0057 inline unsigned storchtype::Type(const std::string& name)
0058 {
0059 return Type(name.c_str());
0060 }
0061
0062 inline const char* storchtype::Name(unsigned type)
0063 {
0064 const char* n = T_UNDEF_ ;
0065 switch(type)
0066 {
0067 case T_UNDEF: n = T_UNDEF_ ; break ;
0068 case T_DISC: n = T_DISC_ ; break ;
0069 case T_LINE: n = T_LINE_ ; break ;
0070 case T_POINT: n = T_POINT_ ; break ;
0071 case T_CIRCLE: n = T_CIRCLE_ ; break ;
0072 case T_RECTANGLE: n = T_RECTANGLE_ ; break ;
0073 case T_SPHERE_MARSAGLIA: n = T_SPHERE_MARSAGLIA_ ; break ;
0074 case T_SPHERE: n = T_SPHERE_ ; break ;
0075 default : break ;
0076 }
0077 return n ;
0078 }
0079 inline bool storchtype::IsValid(unsigned type)
0080 {
0081 return type > T_UNDEF && type < T_LAST ;
0082 }
0083
0084 #endif
0085
0086