00001 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationVersion.h"
00002
00003 using namespace ots;
00004
00005
00006 const unsigned int ConfigurationVersion::INVALID = -1;
00007 const unsigned int ConfigurationVersion::DEFAULT = 0;
00008 const unsigned int ConfigurationVersion::SCRATCH = ~(1<<31);
00009
00010
00011 ConfigurationVersion::ConfigurationVersion(unsigned int version) :
00012 version_(version)
00013 {}
00014 ConfigurationVersion::ConfigurationVersion (char* const &versionStr)
00015 {
00016 if(!versionStr) version_ = ConfigurationVersion::INVALID;
00017 else
00018 sscanf(versionStr,"%u",&version_);
00019 }
00020 ConfigurationVersion::ConfigurationVersion (const std::string &versionStr)
00021 : ConfigurationVersion((char* )versionStr.c_str())
00022 {}
00023
00024
00025 ConfigurationVersion::~ConfigurationVersion(void)
00026 {}
00027
00028
00029
00030
00031 unsigned int ConfigurationVersion::version(void) const
00032 {
00033 return version_;
00034 }
00035
00036
00037
00038 std::string ConfigurationVersion::toString(void) const
00039 {
00040
00041 return (isTemporaryVersion()||isInvalid())?std::to_string((int)version_):
00042 std::to_string(version_);
00043 }
00044
00045
00046
00047 ConfigurationVersion& ConfigurationVersion::operator=(const unsigned int version)
00048 {
00049 version_ = version;
00050 return *this;
00051 }
00052
00053
00054
00055 bool ConfigurationVersion::operator==(unsigned int version) const
00056 {
00057 return (version_ == version);
00058 }
00059 bool ConfigurationVersion::operator==(const ConfigurationVersion& version) const
00060 {
00061 return (version_ == version.version_);
00062 }
00063
00064
00065
00066 bool ConfigurationVersion::operator!=(unsigned int version) const
00067 {
00068 return (version_ != version);
00069 }
00070 bool ConfigurationVersion::operator!=(const ConfigurationVersion& version) const
00071 {
00072 return (version_ != version.version_);
00073 }
00074
00075
00076
00077 bool ConfigurationVersion::operator<(const ConfigurationVersion& version) const
00078 {
00079 return (version_ < version.version_);
00080 }
00081
00082
00083
00084 bool ConfigurationVersion::operator>(const ConfigurationVersion& version) const
00085 {
00086 return (version_ > version.version_);
00087 }
00088
00089
00090
00091 bool ConfigurationVersion::isInvalid() const
00092 {
00093 return (version_ == ConfigurationVersion::INVALID ||
00094 (version_ > ConfigurationVersion::SCRATCH &&
00095 version_ < INVALID-NUM_OF_TEMP_VERSIONS) );
00096 }
00097
00098
00099
00100
00101 bool ConfigurationVersion::isTemporaryVersion() const
00102 {
00103 return (version_ >= INVALID-NUM_OF_TEMP_VERSIONS && version_ != INVALID);
00104 }
00105
00106
00107
00108
00109 bool ConfigurationVersion::isScratchVersion() const
00110 {
00111 return (version_ == ConfigurationVersion::SCRATCH);
00112 }
00113
00114
00115
00116
00117 bool ConfigurationVersion::isMockupVersion() const
00118 {
00119 return (version_ == ConfigurationVersion::INVALID);
00120 }
00121
00122
00123
00124
00125
00126
00127
00128 ConfigurationVersion ConfigurationVersion::getNextVersion(const ConfigurationVersion& version)
00129 {
00130 ConfigurationVersion retVersion(version.version_+1);
00131 return (!retVersion.isInvalid() && !retVersion.isTemporaryVersion())?
00132 retVersion:ConfigurationVersion();
00133 }
00134
00135
00136
00137
00138
00139
00140
00141
00142 ConfigurationVersion ConfigurationVersion::getNextTemporaryVersion(const ConfigurationVersion& version)
00143 {
00144 ConfigurationVersion retVersion(version.isTemporaryVersion()?(version.version_-1):(INVALID-1));
00145 return retVersion.isTemporaryVersion()?retVersion:ConfigurationVersion();
00146 }
00147
00148
00149
00150
00151
00152
00153
00154