SequenceData.h

00001 #ifndef SEQUENCEDATA_H
00002 #define SEQUENCEDATA_H
00003 
00004 #include <is/info.h>
00005 
00006 #include <string>
00007 
00008 
00009 // <<BeginUserCode>>
00010 
00011 // <<EndUserCode>>
00018 class SequenceData : public ISInfo {
00019 public:
00020     enum status_E {EXECUTING,COMPLETED,ABORTED};
00021 
00022 
00026     std::string                   sequenceName;
00027 
00031     unsigned long                 runNumber;
00032 
00036     unsigned long                 startScanNumber;
00037 
00041     unsigned long                 nTests;
00042 
00046     std::string *                 testNames;
00050     size_t                        testNames_size;
00051 
00054     status_E                      status;
00055 
00059     std::string                   startTime;
00060 
00064     std::string                   endTime;
00065 
00069     std::string *                 modules;
00073     size_t                        modules_size;
00074 
00078     unsigned long                 version;
00079 
00080 
00081     static const ISType & type() {
00082     static const ISType type_ = SequenceData( ).ISInfo::type();
00083     return type_;
00084     }
00085 
00086     SequenceData( )
00087       : ISInfo( "SequenceData" )
00088     {
00089     initialize();
00090     }
00091 
00092     ~SequenceData(){
00093     if ( testNames_size != 0 ) delete[] testNames;
00094     if ( modules_size != 0 ) delete[] modules;
00095 
00096 // <<BeginUserCode>>
00097 
00098 // <<EndUserCode>>
00099     }
00100 
00101 protected:
00102     SequenceData( const std::string & type )
00103       : ISInfo( type )
00104     {
00105     initialize();
00106     }
00107 
00108     void publishGuts( ISostream & out ){
00109     out << sequenceName << runNumber << startScanNumber << nTests;
00110     out.put( testNames, testNames_size );
00111     out << status << startTime << endTime;
00112     out.put( modules, modules_size );
00113     out << version;
00114     }
00115 
00116     void refreshGuts( ISistream & in ){
00117     in >> sequenceName >> runNumber >> startScanNumber >> nTests;
00118     if ( testNames_size != 0 ) delete[] testNames;
00119     in.get( &testNames, testNames_size );
00120     in >> (int&)status >> startTime >> endTime;
00121     if ( modules_size != 0 ) delete[] modules;
00122     in.get( &modules, modules_size );
00123     in >> version;
00124     }
00125 
00126 private:
00127     void initialize()
00128     {
00129     testNames_size = 0;
00130     status = EXECUTING;
00131     modules_size = 0;
00132     version = 1;
00133 
00134 // <<BeginUserCode>>
00135 
00136 // <<EndUserCode>>
00137     }
00138 
00139 
00140 // <<BeginUserCode>>
00141 
00142 // <<EndUserCode>>
00143 };
00144 
00145 // <<BeginUserCode>>
00146 
00147 // <<EndUserCode>>
00148 #endif // SEQUENCEDATA_H

Generated on Mon Feb 6 14:01:29 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6