00001 #include "Conventions/Site.h"
00002 #include <string>
00003 #include <cstring>
00004 #include <cassert>
00005
00006 using namespace Site;
00007
00008 const char* Site::AsString(Site_t site)
00009 {
00010 switch(site) {
00011 case kUnknown: return "Unknown"; break;
00012 case kDayaBay: return "DayaBay"; break;
00013 case kLingAo: return "LingAo"; break;
00014 case kMid: return "Mid"; break;
00015 case kFar: return "Far"; break;
00016 case kAberdeen: return "Aberdeen"; break;
00017 case kSAB: return "SAB"; break;
00018 case kPMTBenchTest: return "PMTBenchTest"; break;
00019 case kAll: return "All"; break;
00020 default: return "?Unknown?"; break;
00021 }
00022 }
00023
00024 const char* Site::StringFromMask(int mask)
00025 {
00026 if(mask==0) return Site::AsString(Site::kUnknown);
00027 static std::string out;
00028 out="";
00029 int nout = 0;
00030
00031 for (int i=0; i<32; i++) {
00032 Site::Site_t asite = (Site::Site_t)(1<<i);
00033 if (mask & asite) {
00034 if(nout > 0) out += ",";
00035 out += Site::AsString(asite);
00036 nout++;
00037 }
00038 }
00039 return out.c_str();
00040 }
00041
00042 Site_t Site::FromString(const char* str)
00043 {
00044 if(strncasecmp("Unknown",str,7)==0) return kUnknown;
00045 if(strncasecmp("DayaBay",str,7)==0) return kDayaBay;
00046 if(strncasecmp("LingAo",str,6)==0) return kLingAo;
00047 if(strncasecmp("Mid",str,3)==0) return kMid;
00048 if(strncasecmp("Far",str,3)==0) return kFar;
00049 if(strncasecmp("Aberdeen",str,8)==0) return kAberdeen;
00050 if(strncasecmp("SAB",str,3)==0) return kSAB;
00051 if(strncasecmp("PMTBenchTest",str,12)==0) return kPMTBenchTest;
00052 if(strncasecmp("All",str,3)==0) return kAll;
00053 return kUnknown;
00054 }
00055
00056 int Site::MaskFromString(const char* )
00057 {
00058 assert(0);
00059 }
00060
00061 int Site::FullMask()
00062 {
00063 return kDayaBay+kLingAo+kMid+kFar+kAberdeen+kSAB+kPMTBenchTest;
00064 }