00001 #include "Version.h" 00002 #include <string> 00003 #include <sstream> 00004 #include <cstring> 00005 #include <cmath> 00006 00007 using namespace std; 00008 00009 namespace Sct { 00010 00011 //Tag from CVS 00012 #define TAG "$Name: SctRodDaq_2_1 $" 00013 00014 //Build information 00015 const char* BuildSystem = "Linux pcdk 2.4.18-27.7.cb2 #6 Mon Apr 14 10:50:39 BST 2003 i686 unknown"; 00016 const char* BuildHost = "pcdk.hep.phy.cam.ac.uk"; 00017 const char* BuildDate = "10:49:54 16 Dec 2003"; 00018 const char* CmtConfig = "i686-rh73-gcc295 "; 00019 const char* OnlineVersion = "online-00-19-01 "; 00020 const char* RootVersion = "3.05/07"; 00021 const char* GccVersion = "2.95.2"; 00022 const char* RodDaqVersion = "SctRodDaq_2_1"; 00023 const char* DataFlowVersion = "DF-00-05-00"; 00024 00025 const char* getVersionString() { 00026 static char* str = 0; 00027 if (!str) { 00028 if (strlen(TAG) > 10) { 00029 str = new char[strlen(TAG)-6]; 00030 strncpy(str, &TAG[7], strlen(TAG)-9); 00031 str[strlen(TAG)-9] = '\0'; 00032 } else { 00033 str = new char[20]; 00034 strcpy(str, "SctRodDaq_0_00_Exp"); 00035 } 00036 } 00037 return str; 00038 } 00039 00040 const char* getVersionModifier() { 00041 return &strrchr(VersionString, '_')[1]; 00042 } 00043 00044 unsigned int getMajorVersion() { 00045 return (unsigned int)floor(Version); 00046 } 00047 00048 unsigned int getMinorVersion() { 00049 return (unsigned int) floor( (Version - MajorVersion) * 101); 00050 } 00051 00052 double getVersion() { 00053 char str [strlen(VersionString) - 10]; 00054 strcpy(str, &VersionString[10]); 00055 str[1] = '.'; 00056 return atof(str); 00057 } 00058 00059 const char* VersionString = getVersionString(); 00060 const char* VersionModifier = getVersionModifier(); 00061 const double Version = getVersion(); 00062 const unsigned int MajorVersion = getMajorVersion(); 00063 const unsigned int MinorVersion = getMinorVersion(); 00064 00065 }