00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "C_XmlData.hpp"
00021 #include "Utils.hpp"
00022
00023 #include <cstring>
00024
00025 #include "GeneratorTrace.hpp"
00026
00027
00028
00029 _C_XmlEntity_Basic::_C_XmlEntity_Basic () {
00030 m_name = NULL ;
00031 }
00032
00033 _C_XmlEntity_Basic::_C_XmlEntity_Basic (char *P_name) {
00034 set_name(P_name);
00035 }
00036
00037 _C_XmlEntity_Basic::~_C_XmlEntity_Basic () {
00038 FREE_VAR(m_name);
00039 }
00040
00041 char *_C_XmlEntity_Basic::get_name () {
00042 return (m_name);
00043 }
00044
00045 void _C_XmlEntity_Basic::set_name (char *P_name) {
00046 FREE_VAR(m_name) ;
00047 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00048 strcpy (m_name, P_name);
00049 }
00050
00051
00052 C_XmlData::C_XmlField::C_XmlField() {
00053
00054 m_name = NULL ;
00055 m_value = NULL ;
00056
00057 }
00058
00059
00060 C_XmlData::C_XmlField::C_XmlField(char *P_name, char* P_value) {
00061
00062 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00063 strcpy (m_name, P_name);
00064 ALLOC_VAR(m_value, char*, sizeof(char)*strlen(P_value)+1) ;
00065 strcpy (m_value, P_value);
00066
00067 }
00068
00069 C_XmlData::C_XmlField::C_XmlField(char *P_name) {
00070
00071 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00072 strcpy (m_name, P_name);
00073 m_value = NULL ;
00074
00075 }
00076
00077 C_XmlData::C_XmlField::~C_XmlField() {
00078
00079 FREE_VAR(m_name);
00080 FREE_VAR(m_value);
00081
00082 }
00083
00084 void C_XmlData::C_XmlField::set_name(char *P_name) {
00085 FREE_VAR(m_name) ;
00086 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00087 strcpy (m_name, P_name);
00088 }
00089
00090 void C_XmlData::C_XmlField::set_value(char *P_value) {
00091 GEN_DEBUG(1, "C_XmlData::C_XmlField::set_value start");
00092 FREE_VAR(m_value) ;
00093 ALLOC_VAR(m_value, char*, sizeof(char)*strlen(P_value)+1) ;
00094 strcpy (m_value, P_value);
00095
00096 GEN_DEBUG(1, "C_XmlData::C_XmlField::set_value m_value " << m_value );
00097 GEN_DEBUG(1, "C_XmlData::C_XmlField::set_value end");
00098 }
00099
00100 char* C_XmlData::C_XmlField::get_name() {
00101 return (m_name);
00102 }
00103
00104 char* C_XmlData::C_XmlField::get_value() {
00105 return (m_value);
00106 }
00107
00108
00109 C_XmlData::C_XmlData() {
00110 m_name = NULL;
00111 NEW_VAR(m_sub_data, list_t<C_XmlData*>);
00112 NEW_VAR(m_fields, list_t<C_XmlField*>);
00113 }
00114
00115 C_XmlData::C_XmlData(char *P_name) {
00116
00117 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00118 strcpy (m_name, P_name);
00119 NEW_VAR(m_sub_data, list_t<C_XmlData*>);
00120 NEW_VAR(m_fields, list_t<C_XmlField*>);
00121
00122 }
00123
00124 C_XmlData::~C_XmlData() {
00125
00126 if (!m_sub_data->empty()) {
00127 list_t<C_XmlData*>::iterator L_xmldata_it ;
00128 C_XmlData *L_pXmldata ;
00129 for (L_xmldata_it = m_sub_data->begin() ;
00130 L_xmldata_it != m_sub_data->end();
00131 L_xmldata_it++) {
00132 L_pXmldata = *L_xmldata_it ;
00133 DELETE_VAR (L_pXmldata);
00134 }
00135 }
00136 m_sub_data->erase (m_sub_data->begin(), m_sub_data->end());
00137 DELETE_VAR(m_sub_data);
00138
00139 if (!m_fields->empty()) {
00140 list_t<C_XmlField*>::iterator L_field_it ;
00141 C_XmlField *L_pField ;
00142 for (L_field_it = m_fields->begin() ;
00143 L_field_it != m_fields->end();
00144 L_field_it++) {
00145 L_pField = *L_field_it ;
00146 DELETE_VAR (L_pField);
00147 }
00148 }
00149 m_fields->erase (m_fields->begin(), m_fields->end());
00150 DELETE_VAR(m_fields);
00151
00152 FREE_VAR (m_name) ;
00153
00154 }
00155
00156 char* C_XmlData::get_name () {
00157 return (m_name);
00158 }
00159
00160 void C_XmlData::set_name (char *P_name) {
00161 FREE_VAR(m_name) ;
00162 ALLOC_VAR(m_name, char*, sizeof(char)*strlen(P_name)+1) ;
00163 strcpy (m_name, P_name);
00164 }
00165
00166 void C_XmlData::add_sub_data(C_XmlData *P_data) {
00167 if (P_data != NULL) {
00168 m_sub_data -> push_back (P_data) ;
00169 }
00170 }
00171
00172 void C_XmlData::add_field(C_XmlField *P_field) {
00173 if (P_field != NULL) {
00174 m_fields -> push_back (P_field);
00175 }
00176 }
00177
00178 list_t<C_XmlData*>* C_XmlData::get_sub_data () {
00179 return (m_sub_data) ;
00180 }
00181 list_t<C_XmlData::C_XmlField*>* C_XmlData::get_fields() {
00182 return (m_fields) ;
00183 }
00184
00185 char* C_XmlData::find_value(char* P_fieldName) {
00186
00187 char* L_result = NULL ;
00188 T_XmlField_List::iterator L_it ;
00189 T_pC_XmlField L_field ;
00190
00191
00192 for(L_it = m_fields->begin();
00193 L_it != m_fields->end() ;
00194 L_it++) {
00195 L_field = *L_it ;
00196 if (strcmp(L_field->get_name(), P_fieldName)==0) {
00197 L_result = L_field->get_value() ;
00198 break ;
00199 }
00200 }
00201
00202 return (L_result) ;
00203
00204 }
00205
00206 iostream_output& operator<<(iostream_output& P_ostream,
00207 C_XmlData& P_data) {
00208 P_ostream << "XML-DATA name = " << ((P_data.m_name == NULL) ? "no-name" : P_data.m_name) ;
00209 P_ostream << iostream_endl ;
00210 if (P_data.m_fields->empty()) {
00211 P_ostream << "no-fields" << iostream_endl ;
00212 } else {
00213 list_t<C_XmlData::C_XmlField*>::iterator L_field_it ;
00214 C_XmlData::C_XmlField *L_pField ;
00215 for (L_field_it = P_data.m_fields->begin() ;
00216 L_field_it != P_data.m_fields->end();
00217 L_field_it++) {
00218 L_pField = *L_field_it ;
00219 P_ostream << *L_pField << iostream_endl ;
00220 }
00221 }
00222
00223 if (P_data.m_sub_data->empty()) {
00224 P_ostream << "no-sub_data" << iostream_endl ;
00225 } else {
00226 list_t<C_XmlData*>::iterator L_xmldata_it ;
00227 C_XmlData *L_pXmldata ;
00228 for (L_xmldata_it = P_data.m_sub_data->begin() ;
00229 L_xmldata_it != P_data.m_sub_data->end();
00230 L_xmldata_it++) {
00231 L_pXmldata = *L_xmldata_it ;
00232 P_ostream << *L_pXmldata << iostream_endl ;
00233 }
00234 }
00235
00236
00237 return (P_ostream) ;
00238 }
00239
00240 iostream_output& operator<<(iostream_output& P_ostream,
00241 C_XmlData::C_XmlField& P_field) {
00242 P_ostream << "name = "
00243 << ((P_field.m_name == NULL) ? "no-name" : P_field.m_name) ;
00244 P_ostream << " ; value = "
00245 << ((P_field.m_value == NULL) ? "no-value" : P_field.m_value) ;
00246 return (P_ostream) ;
00247 }