Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #pragma once
0002 /**
0003 SBAS.h : Basis mode used by SGLM 
0004 ====================================
0005 **/
0006 
0007 
0008 enum { BAS_MANUAL, BAS_EXTENT, BAS_GAZELENGTH, BAS_NEARABS, BAS_ASIS } ;  
0009 
0010 
0011 #ifndef __CUDACC__
0012 #include <cstring>
0013 #include <cstdlib>
0014 #include <cassert>
0015 
0016 struct SBAS
0017 {
0018     static const char* Name(int cam);
0019     static int        Type(const char* name);
0020     static constexpr const char* MANUAL_ = "manual" ;
0021     static constexpr const char* EXTENT_ = "extent" ;
0022     static constexpr const char* GAZELENGTH_ = "gazelength" ;
0023     static constexpr const char* NEARABS_ = "nearabs" ;
0024     static constexpr const char* ASIS_ = "asis" ;
0025     static int EGet(const char* ekey, const char* fallback);   
0026 
0027     static int EGetInt(const char* ekey, const char* fallback);   
0028     static int AsInt(const char* str); 
0029     static const char* DescInt(int val); 
0030 };
0031 
0032 
0033 inline int SBAS::EGet(const char* ekey, const char* fallback)
0034 {
0035     const char* name_ = getenv(ekey) ; 
0036     const char* name = name_ ? name_ : fallback ; 
0037     assert( name ); 
0038     int bas = SBAS::Type(name ); 
0039     const char* name2 = SBAS::Name(bas) ; 
0040     bool consistent = strcmp( name, name2) == 0 ; 
0041     if(!consistent) printf("SBAS::EGet ERROR unknown name [%s]\n", name ) ;  
0042     assert(consistent ); 
0043     return bas ; 
0044 }
0045 
0046 inline const char* SBAS::Name(int cam )
0047 {
0048     const char* s = nullptr ;
0049     switch(cam)
0050     {
0051         case BAS_MANUAL:     s = MANUAL_     ; break ;
0052         case BAS_EXTENT:     s = EXTENT_     ; break ;
0053         case BAS_GAZELENGTH: s = GAZELENGTH_ ; break ;
0054         case BAS_NEARABS:    s = NEARABS_    ; break ;
0055         case BAS_ASIS:       s = ASIS_       ; break ;
0056     }
0057     return s ; 
0058 }
0059 inline int SBAS::Type(const char* name)
0060 {
0061     int type = BAS_MANUAL ;
0062     if(strcmp(name,MANUAL_) == 0 )     type = BAS_MANUAL ;
0063     if(strcmp(name,EXTENT_) == 0 )     type = BAS_EXTENT ;
0064     if(strcmp(name,GAZELENGTH_) == 0 ) type = BAS_GAZELENGTH ;
0065     if(strcmp(name,NEARABS_) == 0 )    type = BAS_NEARABS ;
0066     if(strcmp(name,ASIS_) == 0 )       type = BAS_ASIS ;
0067     return type ;
0068 }
0069 
0070 
0071 
0072 
0073 
0074 
0075 
0076 
0077 inline int SBAS::AsInt(const char* str)
0078 {
0079     return std::atoi(str); 
0080 } 
0081 inline const char* SBAS::DescInt(int val)
0082 {
0083     std::stringstream ss ; 
0084     ss << val ; 
0085     std::string str = ss.str(); 
0086     return strdup(str.c_str()); 
0087 } 
0088 
0089 
0090 
0091 
0092 
0093 
0094 
0095 
0096 #endif
0097 
0098 
0099 
0100 
0101