File indexing completed on 2026-04-09 07:49:30
0001 #pragma once
0002
0003
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