1 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationGroupKey.h"
2 #include "otsdaq-core/Macros/CoutHeaderMacros.h"
9 const unsigned int ConfigurationGroupKey::INVALID = -1;
10 const unsigned int ConfigurationGroupKey::DEFAULT = 0;
13 ConfigurationGroupKey::ConfigurationGroupKey(
unsigned int key) :
19 ConfigurationGroupKey::ConfigurationGroupKey(
char *
const &groupString)
21 if(!groupString) {key_ = ConfigurationGroupKey::INVALID;
return; }
25 int i = strlen(groupString)-1;
27 if((groupString[i] <
'0' || groupString[i] >
'9') &&
28 groupString[i] !=
'-' && groupString[i] !=
'_' && groupString[i] !=
'.')
31 if(i == (
int)strlen(groupString)-1)
33 key_ = ConfigurationGroupKey::DEFAULT;
42 sscanf(&groupString[i],
"%u",&key_);
46 ConfigurationGroupKey::ConfigurationGroupKey(
const std::string &groupString)
51 ConfigurationGroupKey::~ConfigurationGroupKey(
void)
55 unsigned int ConfigurationGroupKey::key(
void)
const
62 bool ConfigurationGroupKey::operator==(
unsigned int key)
const
68 return (key_ == key.key_);
73 std::string ConfigurationGroupKey::toString(
void)
const
76 return (isInvalid())?std::to_string((
int)key_):
89 bool ConfigurationGroupKey::operator!=(
unsigned int key)
const
95 return (key_ != key.key_);
102 return (key_ < key.key_);
109 return (key_ > key.key_);
114 bool ConfigurationGroupKey::isInvalid()
const
116 return (key_ == INVALID);
132 const unsigned int ConfigurationGroupKey::getDefaultKey(
void)
138 const unsigned int ConfigurationGroupKey::getInvalidKey(
void)
149 std::string ConfigurationGroupKey::getFullGroupString(
const std::string &groupName,
152 if(groupName.size() == 0)
155 __SS__ << (
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! The Group Name was not provided.\n");
156 __COUT_ERR__ << ss.str();
157 throw std::runtime_error(ss.str());
159 else if(groupName.size() == 1)
161 __SS__ << (
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! The Group Name is too short: \"" +
162 groupName +
"\"") << std::endl;
163 __COUT_ERR__ << ss.str();
164 throw std::runtime_error(ss.str());
168 for(
unsigned int i=0;i<groupName.size();++i)
171 (groupName[i] >=
'A' &&groupName[i] <=
'Z') ||
172 (groupName[i] >=
'a' &&groupName[i] <=
'z') ||
173 (groupName[i] >=
'0' &&groupName[i] <=
'9') ) )
175 __SS__ << (
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! Group Name must be alpha-numeric: \"" +
176 groupName +
"\"") << std::endl;
177 __COUT_ERR__ << ss.str();
178 throw std::runtime_error(ss.str());
183 return groupName +
"_v" + std::to_string(key.key_);
187 void ConfigurationGroupKey::getGroupNameAndKey(
const std::string &fullGroupString,
190 auto i = fullGroupString.rfind(
"_v");
191 groupName = fullGroupString.substr(0,i);