| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DayaBay::UserDataHeader Class Reference

General container for user-defined data. More...

#include <UserDataHeader.h>

Inheritance diagram for DayaBay::UserDataHeader:

[legend]
Collaboration diagram for DayaBay::UserDataHeader:
[legend]
List of all members.

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 CLIDclID () 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.
UserDataget (const std::string &name)
 Get a user-defined data name and value.
std::ostream & fillStream (std::ostream &s) const
 Serialize to an ostream.
const UserDataListdata () const
 Retrieve const List of user-defined data.
UserDataListdata ()
 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 TimeStamptimeStamp () const
void setTimeStamp (const TimeStamp &ts)
const std::vector< const DayaBay::IHeader * > findHeaders (const CLID &clid) const
const Contextcontext () 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::JobIdjobId () const
void setJobId (const DayaBay::JobId &value)
virtual void setOutputAddress (const GenericAddress *roa)
virtual void setInputAddress (const GenericAddress *ria)
virtual const TimeStampearliest () const
void setEarliest (const TimeStamp &value)
virtual const TimeStamplatest () const
void setLatest (const TimeStamp &value)
virtual const GenericAddressoutputAddress () const
virtual const GenericAddressinputAddress () const
void setRegistry (IRegistry *pRegistry)
IRegistryregistry () const
LinkManagerlinkMgr () 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 StreamBufferserialize (StreamBuffer &s)
virtual StreamBufferserialize (StreamBuffer &s) const

Static Public Member Functions

static const std::string & defaultLocation ()
 Give access to default location from class scope.
static const CLIDclassID ()
static UserDataHeadercreate ()
 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)

Detailed Description

General container for user-defined data.

Author:
dandwyer@caltech.edu created Mon Apr 11 03:30:16 2011

Definition at line 55 of file UserDataHeader.h.


Member Typedef Documentation

typedef std::vector<DayaBay::UserData*> DayaBay::UserDataHeader::UserDataList

Container for user-defined data.

Definition at line 64 of file UserDataHeader.h.


Constructor & Destructor Documentation

DayaBay::UserDataHeader::UserDataHeader (  )  [inline]

Default Constructor.

Definition at line 67 of file UserDataHeader.h.

00067 : m_data() {}

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 }


Member Function Documentation

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.

virtual const std::string& DayaBay::UserDataHeader::defLoc (  )  const [inline, virtual]

Reimplemented from DayaBay::HeaderObject.

Definition at line 61 of file UserDataHeader.h.

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]

Reimplemented from DayaBay::HeaderObject.

Definition at line 205 of file UserDataHeader.h.

00206 {
00207   return CLID_UserDataHeader;
00208 }

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 (  ) 

Clear user data.

Definition at line 21 of file UserDataHeader.cc.

00022 {
00023   for (size_t ind=0; ind<m_data.size(); ++ind) {
00024     delete m_data[ind];
00025     m_data[ind]=0;
00026   }
00027   m_data.clear();
00028 }

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]

Set a user-defined data name and value.

Definition at line 225 of file UserDataHeader.h.

00227 {
00228 this->setInt(name,value);
00229 }

void DayaBay::UserDataHeader::set ( const std::string &  name,
const float &  value 
) [inline]

Set a user-defined data name and value.

Definition at line 231 of file UserDataHeader.h.

00233 {
00234 this->setFloat(name, value);
00235 }

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.

00160     {
00161       return ::operator new (size,pObj);
00162     }

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     }


Member Data Documentation

UserDataList DayaBay::UserDataHeader::m_data [private]

List of user-defined data.

Definition at line 183 of file UserDataHeader.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:19:30 2011 for UserData by doxygen 1.4.7