Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:53

0001 #pragma once
0002 /**
0003 storchtype.h
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