Main Page   Class Hierarchy   Compound List   File List   Compound Members  

C_XmlData.cpp

00001 /*
00002  *  This program is free software; you can redistribute it and/or modify
00003  *  it under the terms of the GNU General Public License as published by
00004  *  the Free Software Foundation; either version 2 of the License, or
00005  *  (at your option) any later version.
00006  *
00007  *  This program is distributed in the hope that it will be useful,
00008  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00009  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00010  *  GNU General Public License for more details.
00011  *
00012  *  You should have received a copy of the GNU General Public License
00013  *  along with this program; if not, write to the Free Software
00014  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00015  *
00016  * (c)Copyright 2006 Hewlett-Packard Development Company, LP.
00017  *
00018  */
00019 
00020 #include "C_XmlData.hpp"
00021 #include "Utils.hpp"
00022 
00023 #include <cstring>
00024 
00025 #include "GeneratorTrace.hpp"
00026 
00027 // class _C_XmlEntity_Basic related methods
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 }

Generated on Wed Mar 7 14:44:59 2007 for Seagull by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002