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
00014
00015
00016
00017
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
00052 m_data.push_back( new DayaBay::UserInt(name, value) );
00053 return;
00054 }
00055 if(data->type() != DayaBay::UserData::Int){
00056
00057 return;
00058 }
00059
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
00069 m_data.push_back( new DayaBay::UserIntArray(name, value) );
00070 return;
00071 }
00072 if(data->type() != DayaBay::UserData::IntArray){
00073
00074 return;
00075 }
00076
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
00087 m_data.push_back( new DayaBay::UserFloat(name, value) );
00088 return;
00089 }
00090 if(data->type() != DayaBay::UserData::Float){
00091
00092 return;
00093 }
00094
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
00104 m_data.push_back( new DayaBay::UserFloatArray(name, value) );
00105 return;
00106 }
00107 if(data->type() != DayaBay::UserData::FloatArray){
00108
00109 return;
00110 }
00111
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 }