1 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationGroupKey.h"
8 const unsigned int ConfigurationGroupKey::INVALID = -1;
9 const unsigned int ConfigurationGroupKey::DEFAULT = 0;
12 ConfigurationGroupKey::ConfigurationGroupKey(
unsigned int key) :
18 ConfigurationGroupKey::ConfigurationGroupKey(
char *
const &groupString)
20 if(!groupString) {key_ = ConfigurationGroupKey::INVALID;
return; }
24 int i = strlen(groupString)-1;
26 if((groupString[i] <
'0' || groupString[i] >
'9') &&
27 groupString[i] !=
'-' && groupString[i] !=
'_' && groupString[i] !=
'.')
30 if(i == (
int)strlen(groupString)-1)
32 key_ = ConfigurationGroupKey::DEFAULT;
41 sscanf(&groupString[i],
"%u",&key_);
45 ConfigurationGroupKey::ConfigurationGroupKey(
const std::string &groupString)
50 ConfigurationGroupKey::~ConfigurationGroupKey(
void)
54 unsigned int ConfigurationGroupKey::key(
void)
const
61 bool ConfigurationGroupKey::operator==(
unsigned int key)
const
67 return (key_ == key.key_);
72 std::string ConfigurationGroupKey::toString(
void)
const
75 return (isInvalid())?std::to_string((
int)key_):
88 bool ConfigurationGroupKey::operator!=(
unsigned int key)
const
94 return (key_ != key.key_);
101 return (key_ < key.key_);
108 return (key_ > key.key_);
113 bool ConfigurationGroupKey::isInvalid()
const
115 return (key_ == INVALID);
131 const unsigned int ConfigurationGroupKey::getDefaultKey(
void)
137 const unsigned int ConfigurationGroupKey::getInvalidKey(
void)
148 std::string ConfigurationGroupKey::getFullGroupString(
const std::string &groupName,
151 if(groupName.size() == 0)
152 throw std::runtime_error(
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! The Group Name was not provided.");
153 else if(groupName.size() == 1)
154 throw std::runtime_error(
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! The Group Name is too short: \"" +
158 for(
unsigned int i=0;i<groupName.size();++i)
161 (groupName[i] >=
'A' &&groupName[i] <=
'Z') ||
162 (groupName[i] >=
'a' &&groupName[i] <=
'z') ||
163 (groupName[i] >=
'0' &&groupName[i] <=
'9') ) )
164 throw std::runtime_error(
"ConfigurationGroupKey::getFullGroupString() Illegal Group Name! Group Name must be alpha-numeric: \"" +
169 return groupName +
"_v" + std::to_string(key.key_);
173 void ConfigurationGroupKey::getGroupNameAndKey(
const std::string &fullGroupString,
176 auto i = fullGroupString.rfind(
"_v");
177 groupName = fullGroupString.substr(0,i);