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

In This Package:

UserDataHeader.cc

Go to the documentation of this file.
00001 #include "Event/UserDataHeader.h"
00002 
00003 #include <iostream>
00004 using namespace std;
00005 
00006 DayaBay::UserDataHeader* DayaBay::UserDataHeader::create()
00007 {
00008     return new UserDataHeader;
00009 }
00010 
00011 DayaBay::UserDataHeader::~UserDataHeader()
00012 {
00013     // cerr << "Destroying UserDataHeader (" << (void*)this << ") "
00014     //      << "#" << this->execNumber() << " @" << this->timeStamp().AsString() 
00015     //      << endl;
00016 
00017   // Destructor
00018   this->clearData();
00019 }
00020 
00021 void DayaBay::UserDataHeader::clearData()
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 }
00029 
00030 std::ostream& DayaBay::UserDataHeader::fillStream(std::ostream& s) const
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 }
00044 
00045 
00046 void DayaBay::UserDataHeader::setInt(const std::string& name, 
00047                                      const int& value)
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 }
00062 
00063 void DayaBay::UserDataHeader::setIntArray(const std::string& name, 
00064                                           const std::vector<int>& value)
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 }
00079 
00080 
00081 void DayaBay::UserDataHeader::setFloat(const std::string& name, 
00082                                        const float& value)
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 }
00097 
00098 void DayaBay::UserDataHeader::setFloatArray(const std::string& name, 
00099                                             const std::vector<float>& value)
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 }
00114 
00115 int DayaBay::UserDataHeader::getInt(const std::string& name, int def)
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 }
00124 
00125 std::vector<int> DayaBay::UserDataHeader::getIntArray(const std::string& name)
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 }
00136 
00137 float DayaBay::UserDataHeader::getFloat(const std::string& name, float def)
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 }
00146 
00147 std::vector<float> DayaBay::UserDataHeader::getFloatArray(const std::string& name)
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 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

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