#include <UserDataHeader.h>
Inheritance diagram for DayaBay::UserDataHeader:
Public Types | |
typedef std::vector< DayaBay::UserData * > | UserDataList |
Container for user-defined data. | |
typedef std::vector< IHeader * > | Vector |
typedef std::vector< const IHeader * > | ConstVector |
Public Member Functions | |
virtual const std::string & | defLoc () const |
UserDataHeader () | |
Default Constructor. | |
virtual | ~UserDataHeader () |
destructor | |
virtual const CLID & | clID () const |
void | clearData () |
Clear user data. | |
void | setInt (const std::string &name, const int &value) |
Set a user-defined data name and value. | |
void | setIntArray (const std::string &name, const std::vector< int > &value) |
Set a user-defined data name and value. | |
void | setFloat (const std::string &name, const float &value) |
Set a user-defined data name and value. | |
void | setFloatArray (const std::string &name, const std::vector< float > &value) |
Set a user-defined data name and value. | |
int | getInt (const std::string &name, int def=0) |
Get a user-defined data as an int. | |
std::vector< int > | getIntArray (const std::string &name) |
Get a user-defined data as an vector<int>. | |
float | getFloat (const std::string &name, float def=0.0) |
Get a user-defined data as a float. | |
std::vector< float > | getFloatArray (const std::string &name) |
Get a user-defined data as a vector<float>. | |
void | set (const std::string &name, const int &value) |
Set a user-defined data name and value. | |
void | set (const std::string &name, const float &value) |
Set a user-defined data name and value. | |
void | set (const std::string &name, const std::vector< int > &value) |
Set a user-defined data name and value. | |
void | set (const std::string &name, const std::vector< float > &value) |
Set a user-defined data name and value. | |
UserData * | get (const std::string &name) |
Get a user-defined data name and value. | |
std::ostream & | fillStream (std::ostream &s) const |
Serialize to an ostream. | |
const UserDataList & | data () const |
Retrieve const List of user-defined data. | |
UserDataList & | data () |
Retrieve List of user-defined data. | |
void | setData (const UserDataList &value) |
Update List of user-defined data. | |
virtual const std::string & | defLoc () |
void | setInputHeaders (const std::vector< const DayaBay::IHeader * > &iheaders) |
void | addInputHeader (const DayaBay::IHeader *iheader) |
const TimeStamp & | timeStamp () const |
void | setTimeStamp (const TimeStamp &ts) |
const std::vector< const DayaBay::IHeader * > | findHeaders (const CLID &clid) const |
const Context & | context () const |
void | setContext (const Context &value) |
int | execNumber () const |
void | setExecNumber (int value) |
const std::vector< unsigned long > & | randomState () const |
void | setRandomState (const std::vector< unsigned long > &value) |
const std::vector< const DayaBay::IHeader * > & | inputHeaders () const |
const DayaBay::JobId & | jobId () const |
void | setJobId (const DayaBay::JobId &value) |
virtual void | setOutputAddress (const GenericAddress *roa) |
virtual void | setInputAddress (const GenericAddress *ria) |
virtual const TimeStamp & | earliest () const |
void | setEarliest (const TimeStamp &value) |
virtual const TimeStamp & | latest () const |
void | setLatest (const TimeStamp &value) |
virtual const GenericAddress * | outputAddress () const |
virtual const GenericAddress * | inputAddress () const |
void | setRegistry (IRegistry *pRegistry) |
IRegistry * | registry () const |
LinkManager * | linkMgr () const |
unsigned char | version () const |
void | setVersion (unsigned char vsn) |
unsigned long | refCount () const |
virtual unsigned long | addRef () |
virtual unsigned long | release () |
const std::string & | name () const |
virtual StreamBuffer & | serialize (StreamBuffer &s) |
virtual StreamBuffer & | serialize (StreamBuffer &s) const |
Static Public Member Functions | |
static const std::string & | defaultLocation () |
Give access to default location from class scope. | |
static const CLID & | classID () |
static UserDataHeader * | create () |
Make a new UserDataHeader. | |
static void * | operator new (size_t size) |
operator new | |
static void * | operator new (size_t size, void *pObj) |
placement operator new it is needed by libstdc++ 3.2.3 (e.g. | |
static void | operator delete (void *p) |
operator delete | |
static void | operator delete (void *p, void *pObj) |
placement operator delete not sure if really needed, but it does not harm | |
Private Attributes | |
UserDataList | m_data |
List of user-defined data. | |
Friends | |
friend friend std::ostream & | operator<< (std::ostream &s, const DataObject &obj) |
Definition at line 55 of file UserDataHeader.h.
typedef std::vector<DayaBay::UserData*> DayaBay::UserDataHeader::UserDataList |
DayaBay::UserDataHeader::UserDataHeader | ( | ) | [inline] |
DayaBay::UserDataHeader::~UserDataHeader | ( | ) | [virtual] |
destructor
Definition at line 11 of file UserDataHeader.cc.
00012 { 00013 // cerr << "Destroying UserDataHeader (" << (void*)this << ") " 00014 // << "#" << this->execNumber() << " @" << this->timeStamp().AsString() 00015 // << endl; 00016 00017 // Destructor 00018 this->clearData(); 00019 }
static const std::string& DayaBay::UserDataHeader::defaultLocation | ( | ) | [inline, static] |
Give access to default location from class scope.
Reimplemented from DayaBay::HeaderObject.
Definition at line 60 of file UserDataHeader.h.
00060 { return UserDataHeaderLocation::Default; }
virtual const std::string& DayaBay::UserDataHeader::defLoc | ( | ) | const [inline, virtual] |
Reimplemented from DayaBay::HeaderObject.
Definition at line 61 of file UserDataHeader.h.
00061 { return UserDataHeaderLocation::Default; }
const CLID & DayaBay::UserDataHeader::clID | ( | ) | const [inline, virtual] |
Reimplemented from DayaBay::HeaderObject.
Definition at line 200 of file UserDataHeader.h.
00201 { 00202 return DayaBay::UserDataHeader::classID(); 00203 }
const CLID & DayaBay::UserDataHeader::classID | ( | ) | [inline, static] |
DayaBay::UserDataHeader * DayaBay::UserDataHeader::create | ( | ) | [static] |
Make a new UserDataHeader.
Definition at line 6 of file UserDataHeader.cc.
00007 { 00008 return new UserDataHeader; 00009 }
void DayaBay::UserDataHeader::clearData | ( | ) |
void DayaBay::UserDataHeader::setInt | ( | const std::string & | name, | |
const int & | value | |||
) |
Set a user-defined data name and value.
Definition at line 46 of file UserDataHeader.cc.
00048 { 00049 DayaBay::UserData* data = this->get(name); 00050 if( !data ) { 00051 // If data field doesn't exist, create it 00052 m_data.push_back( new DayaBay::UserInt(name, value) ); 00053 return; 00054 } 00055 if(data->type() != DayaBay::UserData::Int){ 00056 // Error! Wrong data type // <-- passive-aggressive comment 00057 return; 00058 } 00059 // If data field exists, reset value 00060 (dynamic_cast<DayaBay::UserInt*>(data))->setValue( value ); 00061 }
void DayaBay::UserDataHeader::setIntArray | ( | const std::string & | name, | |
const std::vector< int > & | value | |||
) |
Set a user-defined data name and value.
Definition at line 63 of file UserDataHeader.cc.
00065 { 00066 DayaBay::UserData* data = this->get(name); 00067 if(!data ){ 00068 // If data field doesn't exist, create it 00069 m_data.push_back( new DayaBay::UserIntArray(name, value) ); 00070 return; 00071 } 00072 if(data->type() != DayaBay::UserData::IntArray){ 00073 // Error! Wrong data type 00074 return; 00075 } 00076 // If data field exists, reset value 00077 (dynamic_cast<UserIntArray*>(data))->setValue( value ); 00078 }
void DayaBay::UserDataHeader::setFloat | ( | const std::string & | name, | |
const float & | value | |||
) |
Set a user-defined data name and value.
Definition at line 81 of file UserDataHeader.cc.
00083 { 00084 DayaBay::UserData* data = this->get(name); 00085 if( !data ){ 00086 // If data field doesn't exist, create it 00087 m_data.push_back( new DayaBay::UserFloat(name, value) ); 00088 return; 00089 } 00090 if(data->type() != DayaBay::UserData::Float){ 00091 // Error! Wrong data type 00092 return; 00093 } 00094 // If data field exists, reset value 00095 (dynamic_cast<DayaBay::UserFloat*>(data))->setValue( value ); 00096 }
void DayaBay::UserDataHeader::setFloatArray | ( | const std::string & | name, | |
const std::vector< float > & | value | |||
) |
Set a user-defined data name and value.
Definition at line 98 of file UserDataHeader.cc.
00100 { 00101 DayaBay::UserData* data = this->get(name); 00102 if(!data ){ 00103 // If data field doesn't exist, create it 00104 m_data.push_back( new DayaBay::UserFloatArray(name, value) ); 00105 return; 00106 } 00107 if(data->type() != DayaBay::UserData::FloatArray){ 00108 // Error! Wrong data type 00109 return; 00110 } 00111 // If data field exists, reset value 00112 (dynamic_cast<UserFloatArray*>(data))->setValue( value ); 00113 }
int DayaBay::UserDataHeader::getInt | ( | const std::string & | name, | |
int | def = 0 | |||
) |
Get a user-defined data as an int.
Definition at line 115 of file UserDataHeader.cc.
00116 { 00117 DayaBay::UserData* data = this->get(name); 00118 00119 if (!data) { return def; } 00120 if (data->type() != DayaBay::UserData::Int) { return def; } 00121 00122 return (dynamic_cast<DayaBay::UserInt*>(data))->value(); 00123 }
std::vector< int > DayaBay::UserDataHeader::getIntArray | ( | const std::string & | name | ) |
Get a user-defined data as an vector<int>.
Definition at line 125 of file UserDataHeader.cc.
00126 { 00127 DayaBay::UserData* data = this->get(name); 00128 00129 if (!data) { return std::vector<int>(); } 00130 if (data->type() != DayaBay::UserData::IntArray) { 00131 return std::vector<int>(); 00132 } 00133 00134 return (dynamic_cast<DayaBay::UserIntArray*>(data))->value(); 00135 }
float DayaBay::UserDataHeader::getFloat | ( | const std::string & | name, | |
float | def = 0.0 | |||
) |
Get a user-defined data as a float.
Definition at line 137 of file UserDataHeader.cc.
00138 { 00139 DayaBay::UserData* data = this->get(name); 00140 00141 if (!data) { return def; } 00142 if (data->type() != DayaBay::UserData::Float) { return def; } 00143 00144 return (dynamic_cast<DayaBay::UserFloat*>(data))->value(); 00145 }
std::vector< float > DayaBay::UserDataHeader::getFloatArray | ( | const std::string & | name | ) |
Get a user-defined data as a vector<float>.
Definition at line 147 of file UserDataHeader.cc.
00148 { 00149 DayaBay::UserData* data = this->get(name); 00150 00151 if (!data) { return std::vector<float>(); } 00152 if (data->type() != DayaBay::UserData::FloatArray) { 00153 return std::vector<float>(); 00154 } 00155 00156 return (dynamic_cast<DayaBay::UserFloatArray*>(data))->value(); 00157 }
void DayaBay::UserDataHeader::set | ( | const std::string & | name, | |
const int & | value | |||
) | [inline] |
void DayaBay::UserDataHeader::set | ( | const std::string & | name, | |
const float & | value | |||
) | [inline] |
void DayaBay::UserDataHeader::set | ( | const std::string & | name, | |
const std::vector< int > & | value | |||
) | [inline] |
Set a user-defined data name and value.
Definition at line 237 of file UserDataHeader.h.
00239 { 00240 this->setIntArray(name, value); 00241 }
void DayaBay::UserDataHeader::set | ( | const std::string & | name, | |
const std::vector< float > & | value | |||
) | [inline] |
Set a user-defined data name and value.
Definition at line 243 of file UserDataHeader.h.
00245 { 00246 this->setFloatArray(name, value); 00247 }
DayaBay::UserData * DayaBay::UserDataHeader::get | ( | const std::string & | name | ) | [inline] |
Get a user-defined data name and value.
Definition at line 249 of file UserDataHeader.h.
00250 { 00251 00252 DayaBay::UserDataHeader::UserDataList::iterator dataIter, 00253 dataEnd = m_data.end(); 00254 for(dataIter=m_data.begin(); dataIter!=dataEnd; dataIter++){ 00255 if( (*dataIter)->name() == name ) return (*dataIter); 00256 } 00257 return 0; 00258 00259 }
std::ostream & DayaBay::UserDataHeader::fillStream | ( | std::ostream & | s | ) | const [virtual] |
Serialize to an ostream.
Reimplemented from DayaBay::HeaderObject.
Definition at line 30 of file UserDataHeader.cc.
00031 { 00032 HeaderObject::fillStream(s); 00033 00034 s << "{" << std::endl; 00035 s << "user-defined data : ["; 00036 for (size_t ind=0; ind<m_data.size(); ++ind) { 00037 s << " " << m_data[ind]; 00038 } 00039 s << " ]" << std::endl; 00040 s << "}" << std::endl; 00041 00042 return s; 00043 }
const DayaBay::UserDataHeader::UserDataList & DayaBay::UserDataHeader::data | ( | ) | const [inline] |
Retrieve const List of user-defined data.
Definition at line 210 of file UserDataHeader.h.
00211 { 00212 return m_data; 00213 }
DayaBay::UserDataHeader::UserDataList & DayaBay::UserDataHeader::data | ( | ) | [inline] |
Retrieve List of user-defined data.
Definition at line 215 of file UserDataHeader.h.
00216 { 00217 return m_data; 00218 }
void DayaBay::UserDataHeader::setData | ( | const UserDataList & | value | ) | [inline] |
Update List of user-defined data.
Definition at line 220 of file UserDataHeader.h.
00221 { 00222 m_data = value; 00223 }
static void* DayaBay::UserDataHeader::operator new | ( | size_t | size | ) | [inline, static] |
operator new
Reimplemented from DayaBay::HeaderObject.
Definition at line 149 of file UserDataHeader.h.
00150 { 00151 return ( sizeof(UserDataHeader) == size ? 00152 boost::singleton_pool<UserDataHeader, sizeof(UserDataHeader)>::malloc() : 00153 ::operator new(size) ); 00154 }
static void* DayaBay::UserDataHeader::operator new | ( | size_t | size, | |
void * | pObj | |||
) | [inline, static] |
placement operator new it is needed by libstdc++ 3.2.3 (e.g.
in std::vector) it is not needed in libstdc++ >= 3.4
Reimplemented from DayaBay::HeaderObject.
Definition at line 159 of file UserDataHeader.h.
static void DayaBay::UserDataHeader::operator delete | ( | void * | p | ) | [inline, static] |
operator delete
Reimplemented from DayaBay::HeaderObject.
Definition at line 165 of file UserDataHeader.h.
00166 { 00167 boost::singleton_pool<UserDataHeader, sizeof(UserDataHeader)>::is_from(p) ? 00168 boost::singleton_pool<UserDataHeader, sizeof(UserDataHeader)>::free(p) : 00169 ::operator delete(p); 00170 }
static void DayaBay::UserDataHeader::operator delete | ( | void * | p, | |
void * | pObj | |||
) | [inline, static] |
placement operator delete not sure if really needed, but it does not harm
Reimplemented from DayaBay::HeaderObject.
Definition at line 174 of file UserDataHeader.h.
00175 { 00176 ::operator delete (p, pObj); 00177 }
UserDataList DayaBay::UserDataHeader::m_data [private] |