00001 #include "Conventions/SimFlag.h" 00002 #include <string> 00003 #include <cstring> 00004 00005 using namespace SimFlag; 00006 00007 const char* SimFlag::AsString(SimFlag_t flag) 00008 { 00009 switch(flag) { 00010 case kUnknown: return "Unknown"; break; 00011 case kData: return "Data"; break; 00012 case kMC: return "MC"; break; 00013 default: return "?Unknown?"; break; 00014 } 00015 } 00016 00017 SimFlag_t SimFlag::FromString(const char* str) 00018 { 00019 if(strncasecmp("Data",str,4)==0) return kData; 00020 if(strncasecmp("MC",str,4)==0) return kMC; 00021 return kUnknown; 00022 } 00023 00024 00025 const char* SimFlag::StringFromMask(int mask) 00026 { 00027 if(mask==0) return SimFlag::AsString(SimFlag::kUnknown); 00028 static std::string out; 00029 out=""; 00030 int nout = 0; 00031 00032 for (int i=0; i<32; i++) { 00033 SimFlag::SimFlag_t a = (SimFlag::SimFlag_t)(1<<i); 00034 if (mask & a) { 00035 if(nout > 0) out += ","; 00036 out += SimFlag::AsString(a); 00037 nout++; 00038 } 00039 } 00040 return out.c_str(); 00041 } 00042 00043 int SimFlag::FullMask() 00044 { 00045 return kData+kMC; 00046 }