1*8a106958SDamjan Jovanovic /************************************************************** 2*8a106958SDamjan Jovanovic * 3*8a106958SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*8a106958SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*8a106958SDamjan Jovanovic * distributed with this work for additional information 6*8a106958SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*8a106958SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*8a106958SDamjan Jovanovic * "License"); you may not use this file except in compliance 9*8a106958SDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*8a106958SDamjan Jovanovic * 11*8a106958SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*8a106958SDamjan Jovanovic * 13*8a106958SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*8a106958SDamjan Jovanovic * software distributed under the License is distributed on an 15*8a106958SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*8a106958SDamjan Jovanovic * KIND, either express or implied. See the License for the 17*8a106958SDamjan Jovanovic * specific language governing permissions and limitations 18*8a106958SDamjan Jovanovic * under the License. 19*8a106958SDamjan Jovanovic * 20*8a106958SDamjan Jovanovic *************************************************************/ 21*8a106958SDamjan Jovanovic 22*8a106958SDamjan Jovanovic 23*8a106958SDamjan Jovanovic 24*8a106958SDamjan Jovanovic #include <precomp.h> 25*8a106958SDamjan Jovanovic #include <udm/xml/xmlitem.hxx> 26*8a106958SDamjan Jovanovic 27*8a106958SDamjan Jovanovic // NOT FULLY DECLARED SERVICES 28*8a106958SDamjan Jovanovic #include <cosv/file.hxx> 29*8a106958SDamjan Jovanovic 30*8a106958SDamjan Jovanovic 31*8a106958SDamjan Jovanovic namespace csi 32*8a106958SDamjan Jovanovic { 33*8a106958SDamjan Jovanovic namespace xml 34*8a106958SDamjan Jovanovic { 35*8a106958SDamjan Jovanovic 36*8a106958SDamjan Jovanovic char cReplacable[256] = 37*8a106958SDamjan Jovanovic { 38*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 49 39*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41*8a106958SDamjan Jovanovic 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, // ", & 42*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43*8a106958SDamjan Jovanovic 44*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 99 45*8a106958SDamjan Jovanovic 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, // <, > 46*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49*8a106958SDamjan Jovanovic 50*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 100 - 149 51*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55*8a106958SDamjan Jovanovic 56*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61*8a106958SDamjan Jovanovic 62*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67*8a106958SDamjan Jovanovic 68*8a106958SDamjan Jovanovic 0, 0, 0, 0, 0, 1 // 69*8a106958SDamjan Jovanovic }; 70*8a106958SDamjan Jovanovic 71*8a106958SDamjan Jovanovic 72*8a106958SDamjan Jovanovic class MultiItem : public Item 73*8a106958SDamjan Jovanovic { 74*8a106958SDamjan Jovanovic public: 75*8a106958SDamjan Jovanovic MultiItem(); 76*8a106958SDamjan Jovanovic ~MultiItem(); 77*8a106958SDamjan Jovanovic 78*8a106958SDamjan Jovanovic void Add( 79*8a106958SDamjan Jovanovic DYN Item * let_dpDatum ) 80*8a106958SDamjan Jovanovic { csv_assert( let_dpDatum != 0 ); 81*8a106958SDamjan Jovanovic aItems.push_back(let_dpDatum); } 82*8a106958SDamjan Jovanovic void Erase() { aItems.erase_all(); } 83*8a106958SDamjan Jovanovic 84*8a106958SDamjan Jovanovic private: 85*8a106958SDamjan Jovanovic virtual void do_WriteOut( 86*8a106958SDamjan Jovanovic csv::bostream & io_aFile ) const; 87*8a106958SDamjan Jovanovic // DATA 88*8a106958SDamjan Jovanovic ItemList aItems; 89*8a106958SDamjan Jovanovic }; 90*8a106958SDamjan Jovanovic 91*8a106958SDamjan Jovanovic 92*8a106958SDamjan Jovanovic void StreamOut( 93*8a106958SDamjan Jovanovic Dyn< Item > & o_rContent, 94*8a106958SDamjan Jovanovic DYN Item * let_dpItem ); 95*8a106958SDamjan Jovanovic inline void 96*8a106958SDamjan Jovanovic StreamOut( AttrList & o_rAttrs, 97*8a106958SDamjan Jovanovic DYN Attribute * let_dpAttr ) 98*8a106958SDamjan Jovanovic { 99*8a106958SDamjan Jovanovic csv_assert( let_dpAttr != 0 ); 100*8a106958SDamjan Jovanovic o_rAttrs.push_back( let_dpAttr ); 101*8a106958SDamjan Jovanovic } 102*8a106958SDamjan Jovanovic 103*8a106958SDamjan Jovanovic 104*8a106958SDamjan Jovanovic inline void 105*8a106958SDamjan Jovanovic Impl_SetContent( Dyn< Item > & o_rContent, 106*8a106958SDamjan Jovanovic DYN Item * let_dpItem ) 107*8a106958SDamjan Jovanovic { 108*8a106958SDamjan Jovanovic o_rContent = let_dpItem; 109*8a106958SDamjan Jovanovic } 110*8a106958SDamjan Jovanovic 111*8a106958SDamjan Jovanovic 112*8a106958SDamjan Jovanovic //********************* Attribute ****************************// 113*8a106958SDamjan Jovanovic 114*8a106958SDamjan Jovanovic const String attrValueBegin("=\""); 115*8a106958SDamjan Jovanovic const String attrValueEnd("\""); 116*8a106958SDamjan Jovanovic 117*8a106958SDamjan Jovanovic void 118*8a106958SDamjan Jovanovic Attribute::WriteOut( csv::bostream & io_aFile ) const 119*8a106958SDamjan Jovanovic { 120*8a106958SDamjan Jovanovic io_aFile.write( Name() ); 121*8a106958SDamjan Jovanovic if ( Value().length() > 0 ) 122*8a106958SDamjan Jovanovic { 123*8a106958SDamjan Jovanovic io_aFile.write( attrValueBegin ); 124*8a106958SDamjan Jovanovic io_aFile.write( Value() ); 125*8a106958SDamjan Jovanovic io_aFile.write( attrValueEnd ); 126*8a106958SDamjan Jovanovic } 127*8a106958SDamjan Jovanovic } 128*8a106958SDamjan Jovanovic 129*8a106958SDamjan Jovanovic 130*8a106958SDamjan Jovanovic 131*8a106958SDamjan Jovanovic //************************ Element ****************************// 132*8a106958SDamjan Jovanovic 133*8a106958SDamjan Jovanovic const String newline("\n"); 134*8a106958SDamjan Jovanovic const String space(" "); 135*8a106958SDamjan Jovanovic const String beginTagBegin("<"); 136*8a106958SDamjan Jovanovic const String endTagBegin("</"); 137*8a106958SDamjan Jovanovic const String tagEnd(">"); 138*8a106958SDamjan Jovanovic const String emptyTagEnd("/>"); 139*8a106958SDamjan Jovanovic 140*8a106958SDamjan Jovanovic void 141*8a106958SDamjan Jovanovic Element::do_WriteOut( csv::bostream & io_aFile ) const 142*8a106958SDamjan Jovanovic { 143*8a106958SDamjan Jovanovic io_aFile.write( beginTagBegin ); 144*8a106958SDamjan Jovanovic io_aFile.write( inq_TagName() ); 145*8a106958SDamjan Jovanovic 146*8a106958SDamjan Jovanovic const AttrList * pAttrs = inq_Attrs(); 147*8a106958SDamjan Jovanovic if ( pAttrs != 0 ) 148*8a106958SDamjan Jovanovic { 149*8a106958SDamjan Jovanovic for ( AttrList::iterator it = pAttrs->begin(); 150*8a106958SDamjan Jovanovic it != pAttrs->end(); 151*8a106958SDamjan Jovanovic ++it ) 152*8a106958SDamjan Jovanovic { 153*8a106958SDamjan Jovanovic 154*8a106958SDamjan Jovanovic io_aFile.write( space ); 155*8a106958SDamjan Jovanovic (*it)->WriteOut( io_aFile ); 156*8a106958SDamjan Jovanovic } 157*8a106958SDamjan Jovanovic } 158*8a106958SDamjan Jovanovic 159*8a106958SDamjan Jovanovic const Item * pContent = inq_Content(); 160*8a106958SDamjan Jovanovic if ( pContent != 0 ) 161*8a106958SDamjan Jovanovic io_aFile.write( tagEnd ); 162*8a106958SDamjan Jovanovic else 163*8a106958SDamjan Jovanovic { 164*8a106958SDamjan Jovanovic if (FinishEmptyTag_XmlStyle()) 165*8a106958SDamjan Jovanovic io_aFile.write( emptyTagEnd ); 166*8a106958SDamjan Jovanovic else 167*8a106958SDamjan Jovanovic { 168*8a106958SDamjan Jovanovic io_aFile.write( tagEnd ); 169*8a106958SDamjan Jovanovic io_aFile.write( endTagBegin ); 170*8a106958SDamjan Jovanovic io_aFile.write( inq_TagName() ); 171*8a106958SDamjan Jovanovic io_aFile.write( tagEnd ); 172*8a106958SDamjan Jovanovic } 173*8a106958SDamjan Jovanovic } 174*8a106958SDamjan Jovanovic if ( LineBreakAfterBeginTag() ) 175*8a106958SDamjan Jovanovic io_aFile.write( newline ); 176*8a106958SDamjan Jovanovic if ( pContent == 0 ) 177*8a106958SDamjan Jovanovic return; 178*8a106958SDamjan Jovanovic 179*8a106958SDamjan Jovanovic pContent->WriteOut( io_aFile ); 180*8a106958SDamjan Jovanovic io_aFile.write( endTagBegin ); 181*8a106958SDamjan Jovanovic io_aFile.write( inq_TagName() ); 182*8a106958SDamjan Jovanovic io_aFile.write( tagEnd ); 183*8a106958SDamjan Jovanovic if ( LineBreakAfterEndTag() ) 184*8a106958SDamjan Jovanovic io_aFile.write( newline ); 185*8a106958SDamjan Jovanovic } 186*8a106958SDamjan Jovanovic 187*8a106958SDamjan Jovanovic bool 188*8a106958SDamjan Jovanovic Element::FinishEmptyTag_XmlStyle() const 189*8a106958SDamjan Jovanovic { 190*8a106958SDamjan Jovanovic return true; 191*8a106958SDamjan Jovanovic } 192*8a106958SDamjan Jovanovic 193*8a106958SDamjan Jovanovic bool 194*8a106958SDamjan Jovanovic Element::LineBreakAfterBeginTag() const 195*8a106958SDamjan Jovanovic { 196*8a106958SDamjan Jovanovic return false; 197*8a106958SDamjan Jovanovic } 198*8a106958SDamjan Jovanovic 199*8a106958SDamjan Jovanovic bool 200*8a106958SDamjan Jovanovic Element::LineBreakAfterEndTag() const 201*8a106958SDamjan Jovanovic { 202*8a106958SDamjan Jovanovic return LineBreakAfterBeginTag(); 203*8a106958SDamjan Jovanovic } 204*8a106958SDamjan Jovanovic 205*8a106958SDamjan Jovanovic 206*8a106958SDamjan Jovanovic //************************ EmptyElement ****************************// 207*8a106958SDamjan Jovanovic 208*8a106958SDamjan Jovanovic void 209*8a106958SDamjan Jovanovic EmptyElement::op_streamout( DYN Item * ) 210*8a106958SDamjan Jovanovic { 211*8a106958SDamjan Jovanovic // Does nothing. 212*8a106958SDamjan Jovanovic } 213*8a106958SDamjan Jovanovic 214*8a106958SDamjan Jovanovic void 215*8a106958SDamjan Jovanovic EmptyElement::op_streamout( DYN Attribute * let_dpAttr ) 216*8a106958SDamjan Jovanovic { 217*8a106958SDamjan Jovanovic StreamOut( inq_RefAttrs(), let_dpAttr ); 218*8a106958SDamjan Jovanovic } 219*8a106958SDamjan Jovanovic 220*8a106958SDamjan Jovanovic void 221*8a106958SDamjan Jovanovic EmptyElement::do_SetContent( DYN Item * ) 222*8a106958SDamjan Jovanovic { 223*8a106958SDamjan Jovanovic // Does nothing. 224*8a106958SDamjan Jovanovic } 225*8a106958SDamjan Jovanovic 226*8a106958SDamjan Jovanovic const Item * 227*8a106958SDamjan Jovanovic EmptyElement::inq_Content() const 228*8a106958SDamjan Jovanovic { 229*8a106958SDamjan Jovanovic return 0; 230*8a106958SDamjan Jovanovic } 231*8a106958SDamjan Jovanovic 232*8a106958SDamjan Jovanovic const AttrList * 233*8a106958SDamjan Jovanovic EmptyElement::inq_Attrs() const 234*8a106958SDamjan Jovanovic { 235*8a106958SDamjan Jovanovic return & const_cast< EmptyElement* >(this)->inq_RefAttrs(); 236*8a106958SDamjan Jovanovic } 237*8a106958SDamjan Jovanovic 238*8a106958SDamjan Jovanovic 239*8a106958SDamjan Jovanovic //************************ PureElement ****************************// 240*8a106958SDamjan Jovanovic 241*8a106958SDamjan Jovanovic void 242*8a106958SDamjan Jovanovic PureElement::op_streamout( DYN Item * let_dpItem ) 243*8a106958SDamjan Jovanovic { 244*8a106958SDamjan Jovanovic StreamOut( inq_RefContent(), let_dpItem ); 245*8a106958SDamjan Jovanovic } 246*8a106958SDamjan Jovanovic 247*8a106958SDamjan Jovanovic void 248*8a106958SDamjan Jovanovic PureElement::op_streamout( DYN Attribute * ) 249*8a106958SDamjan Jovanovic { 250*8a106958SDamjan Jovanovic // Does nothing. 251*8a106958SDamjan Jovanovic } 252*8a106958SDamjan Jovanovic 253*8a106958SDamjan Jovanovic void 254*8a106958SDamjan Jovanovic PureElement::do_SetContent( DYN Item * let_dpItem ) 255*8a106958SDamjan Jovanovic { 256*8a106958SDamjan Jovanovic Impl_SetContent( inq_RefContent(), let_dpItem ); 257*8a106958SDamjan Jovanovic } 258*8a106958SDamjan Jovanovic 259*8a106958SDamjan Jovanovic const Item * 260*8a106958SDamjan Jovanovic PureElement::inq_Content() const 261*8a106958SDamjan Jovanovic { 262*8a106958SDamjan Jovanovic return const_cast< PureElement* >(this)->inq_RefContent().Ptr(); 263*8a106958SDamjan Jovanovic } 264*8a106958SDamjan Jovanovic 265*8a106958SDamjan Jovanovic const AttrList * 266*8a106958SDamjan Jovanovic PureElement::inq_Attrs() const 267*8a106958SDamjan Jovanovic { 268*8a106958SDamjan Jovanovic return 0; 269*8a106958SDamjan Jovanovic } 270*8a106958SDamjan Jovanovic 271*8a106958SDamjan Jovanovic 272*8a106958SDamjan Jovanovic //*************************** SglTag **************************// 273*8a106958SDamjan Jovanovic 274*8a106958SDamjan Jovanovic void 275*8a106958SDamjan Jovanovic SglTag::op_streamout( DYN Item * ) 276*8a106958SDamjan Jovanovic { 277*8a106958SDamjan Jovanovic // Does nothing. 278*8a106958SDamjan Jovanovic } 279*8a106958SDamjan Jovanovic 280*8a106958SDamjan Jovanovic void 281*8a106958SDamjan Jovanovic SglTag::op_streamout( DYN Attribute * ) 282*8a106958SDamjan Jovanovic { 283*8a106958SDamjan Jovanovic // Does nothing. 284*8a106958SDamjan Jovanovic } 285*8a106958SDamjan Jovanovic 286*8a106958SDamjan Jovanovic void 287*8a106958SDamjan Jovanovic SglTag::do_SetContent( DYN Item *) 288*8a106958SDamjan Jovanovic { 289*8a106958SDamjan Jovanovic // Does nothing. 290*8a106958SDamjan Jovanovic } 291*8a106958SDamjan Jovanovic 292*8a106958SDamjan Jovanovic const Item * 293*8a106958SDamjan Jovanovic SglTag::inq_Content() const 294*8a106958SDamjan Jovanovic { 295*8a106958SDamjan Jovanovic return 0; 296*8a106958SDamjan Jovanovic } 297*8a106958SDamjan Jovanovic 298*8a106958SDamjan Jovanovic const AttrList * 299*8a106958SDamjan Jovanovic SglTag::inq_Attrs() const 300*8a106958SDamjan Jovanovic { 301*8a106958SDamjan Jovanovic return 0; 302*8a106958SDamjan Jovanovic } 303*8a106958SDamjan Jovanovic 304*8a106958SDamjan Jovanovic 305*8a106958SDamjan Jovanovic //*************************** AnElement **************************// 306*8a106958SDamjan Jovanovic 307*8a106958SDamjan Jovanovic AnElement::AnElement( const String & i_sTagName ) 308*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 309*8a106958SDamjan Jovanovic // pContent, 310*8a106958SDamjan Jovanovic // aAttrs 311*8a106958SDamjan Jovanovic { 312*8a106958SDamjan Jovanovic } 313*8a106958SDamjan Jovanovic 314*8a106958SDamjan Jovanovic AnElement::AnElement( const char * i_sTagName ) 315*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 316*8a106958SDamjan Jovanovic // pContent, 317*8a106958SDamjan Jovanovic // aAttrs 318*8a106958SDamjan Jovanovic { 319*8a106958SDamjan Jovanovic } 320*8a106958SDamjan Jovanovic 321*8a106958SDamjan Jovanovic AnElement::~AnElement() 322*8a106958SDamjan Jovanovic { 323*8a106958SDamjan Jovanovic } 324*8a106958SDamjan Jovanovic 325*8a106958SDamjan Jovanovic void 326*8a106958SDamjan Jovanovic AnElement::op_streamout( DYN Item * let_dpItem ) 327*8a106958SDamjan Jovanovic { 328*8a106958SDamjan Jovanovic StreamOut( pContent, let_dpItem ); 329*8a106958SDamjan Jovanovic } 330*8a106958SDamjan Jovanovic 331*8a106958SDamjan Jovanovic void 332*8a106958SDamjan Jovanovic AnElement::op_streamout( DYN Attribute * let_dpAttr ) 333*8a106958SDamjan Jovanovic { 334*8a106958SDamjan Jovanovic StreamOut( aAttrs, let_dpAttr ); 335*8a106958SDamjan Jovanovic } 336*8a106958SDamjan Jovanovic 337*8a106958SDamjan Jovanovic void 338*8a106958SDamjan Jovanovic AnElement::do_SetContent( DYN Item * let_dpItem ) 339*8a106958SDamjan Jovanovic { 340*8a106958SDamjan Jovanovic Impl_SetContent( pContent, let_dpItem ); 341*8a106958SDamjan Jovanovic } 342*8a106958SDamjan Jovanovic 343*8a106958SDamjan Jovanovic const String & 344*8a106958SDamjan Jovanovic AnElement::inq_TagName() const 345*8a106958SDamjan Jovanovic { 346*8a106958SDamjan Jovanovic return sTagName; 347*8a106958SDamjan Jovanovic } 348*8a106958SDamjan Jovanovic 349*8a106958SDamjan Jovanovic const Item * 350*8a106958SDamjan Jovanovic AnElement::inq_Content() const 351*8a106958SDamjan Jovanovic { 352*8a106958SDamjan Jovanovic return pContent.Ptr(); 353*8a106958SDamjan Jovanovic } 354*8a106958SDamjan Jovanovic 355*8a106958SDamjan Jovanovic const AttrList * 356*8a106958SDamjan Jovanovic AnElement::inq_Attrs() const 357*8a106958SDamjan Jovanovic { 358*8a106958SDamjan Jovanovic return &aAttrs; 359*8a106958SDamjan Jovanovic } 360*8a106958SDamjan Jovanovic 361*8a106958SDamjan Jovanovic 362*8a106958SDamjan Jovanovic //*************************** AnEmptyElement **************************// 363*8a106958SDamjan Jovanovic 364*8a106958SDamjan Jovanovic AnEmptyElement::AnEmptyElement( const String & i_sTagName ) 365*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 366*8a106958SDamjan Jovanovic // aAttrs 367*8a106958SDamjan Jovanovic { 368*8a106958SDamjan Jovanovic } 369*8a106958SDamjan Jovanovic 370*8a106958SDamjan Jovanovic AnEmptyElement::AnEmptyElement( const char * i_sTagName ) 371*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 372*8a106958SDamjan Jovanovic // aAttrs 373*8a106958SDamjan Jovanovic { 374*8a106958SDamjan Jovanovic } 375*8a106958SDamjan Jovanovic 376*8a106958SDamjan Jovanovic AnEmptyElement::~AnEmptyElement() 377*8a106958SDamjan Jovanovic { 378*8a106958SDamjan Jovanovic 379*8a106958SDamjan Jovanovic } 380*8a106958SDamjan Jovanovic 381*8a106958SDamjan Jovanovic const String & 382*8a106958SDamjan Jovanovic AnEmptyElement::inq_TagName() const 383*8a106958SDamjan Jovanovic { 384*8a106958SDamjan Jovanovic return sTagName; 385*8a106958SDamjan Jovanovic } 386*8a106958SDamjan Jovanovic 387*8a106958SDamjan Jovanovic AttrList & 388*8a106958SDamjan Jovanovic AnEmptyElement::inq_RefAttrs() 389*8a106958SDamjan Jovanovic { 390*8a106958SDamjan Jovanovic return aAttrs; 391*8a106958SDamjan Jovanovic } 392*8a106958SDamjan Jovanovic 393*8a106958SDamjan Jovanovic 394*8a106958SDamjan Jovanovic //*************************** APureElement **************************// 395*8a106958SDamjan Jovanovic 396*8a106958SDamjan Jovanovic APureElement::APureElement( const String & i_sTagName ) 397*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 398*8a106958SDamjan Jovanovic // pContent 399*8a106958SDamjan Jovanovic { 400*8a106958SDamjan Jovanovic } 401*8a106958SDamjan Jovanovic 402*8a106958SDamjan Jovanovic APureElement::APureElement( const char * i_sTagName ) 403*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 404*8a106958SDamjan Jovanovic // pContent 405*8a106958SDamjan Jovanovic { 406*8a106958SDamjan Jovanovic } 407*8a106958SDamjan Jovanovic 408*8a106958SDamjan Jovanovic APureElement::~APureElement() 409*8a106958SDamjan Jovanovic { 410*8a106958SDamjan Jovanovic } 411*8a106958SDamjan Jovanovic 412*8a106958SDamjan Jovanovic const String & 413*8a106958SDamjan Jovanovic APureElement::inq_TagName() const 414*8a106958SDamjan Jovanovic { 415*8a106958SDamjan Jovanovic return sTagName; 416*8a106958SDamjan Jovanovic } 417*8a106958SDamjan Jovanovic 418*8a106958SDamjan Jovanovic Dyn< Item > & 419*8a106958SDamjan Jovanovic APureElement::inq_RefContent() 420*8a106958SDamjan Jovanovic { 421*8a106958SDamjan Jovanovic return pContent; 422*8a106958SDamjan Jovanovic } 423*8a106958SDamjan Jovanovic 424*8a106958SDamjan Jovanovic 425*8a106958SDamjan Jovanovic 426*8a106958SDamjan Jovanovic //*************************** ASglTag **************************// 427*8a106958SDamjan Jovanovic 428*8a106958SDamjan Jovanovic ASglTag::ASglTag( const String & i_sTagName ) 429*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 430*8a106958SDamjan Jovanovic { 431*8a106958SDamjan Jovanovic } 432*8a106958SDamjan Jovanovic 433*8a106958SDamjan Jovanovic ASglTag::ASglTag( const char * i_sTagName ) 434*8a106958SDamjan Jovanovic : sTagName( i_sTagName ) 435*8a106958SDamjan Jovanovic { 436*8a106958SDamjan Jovanovic } 437*8a106958SDamjan Jovanovic 438*8a106958SDamjan Jovanovic ASglTag::~ASglTag() 439*8a106958SDamjan Jovanovic { 440*8a106958SDamjan Jovanovic } 441*8a106958SDamjan Jovanovic 442*8a106958SDamjan Jovanovic const String & 443*8a106958SDamjan Jovanovic ASglTag::inq_TagName() const 444*8a106958SDamjan Jovanovic { 445*8a106958SDamjan Jovanovic return sTagName; 446*8a106958SDamjan Jovanovic } 447*8a106958SDamjan Jovanovic 448*8a106958SDamjan Jovanovic 449*8a106958SDamjan Jovanovic //*************************** AnAttribute **************************// 450*8a106958SDamjan Jovanovic AnAttribute::AnAttribute( const String & i_sName, 451*8a106958SDamjan Jovanovic const String & i_sValue ) 452*8a106958SDamjan Jovanovic : sName(i_sName), 453*8a106958SDamjan Jovanovic sValue(i_sValue) 454*8a106958SDamjan Jovanovic { 455*8a106958SDamjan Jovanovic } 456*8a106958SDamjan Jovanovic 457*8a106958SDamjan Jovanovic AnAttribute::AnAttribute( const char * i_sName, 458*8a106958SDamjan Jovanovic const char * i_sValue ) 459*8a106958SDamjan Jovanovic : sName(i_sName), 460*8a106958SDamjan Jovanovic sValue(i_sValue) 461*8a106958SDamjan Jovanovic { 462*8a106958SDamjan Jovanovic } 463*8a106958SDamjan Jovanovic 464*8a106958SDamjan Jovanovic AnAttribute::~AnAttribute() 465*8a106958SDamjan Jovanovic { 466*8a106958SDamjan Jovanovic } 467*8a106958SDamjan Jovanovic 468*8a106958SDamjan Jovanovic const String & 469*8a106958SDamjan Jovanovic AnAttribute::inq_Name() const 470*8a106958SDamjan Jovanovic { 471*8a106958SDamjan Jovanovic return sName; 472*8a106958SDamjan Jovanovic } 473*8a106958SDamjan Jovanovic 474*8a106958SDamjan Jovanovic const String & 475*8a106958SDamjan Jovanovic AnAttribute::inq_Value() const 476*8a106958SDamjan Jovanovic { 477*8a106958SDamjan Jovanovic return sValue; 478*8a106958SDamjan Jovanovic } 479*8a106958SDamjan Jovanovic 480*8a106958SDamjan Jovanovic 481*8a106958SDamjan Jovanovic 482*8a106958SDamjan Jovanovic //*************************** Text **************************// 483*8a106958SDamjan Jovanovic 484*8a106958SDamjan Jovanovic Text::Text( const String & i_sText ) 485*8a106958SDamjan Jovanovic : sText(i_sText) 486*8a106958SDamjan Jovanovic { 487*8a106958SDamjan Jovanovic } 488*8a106958SDamjan Jovanovic 489*8a106958SDamjan Jovanovic Text::Text( const char * i_sText ) 490*8a106958SDamjan Jovanovic : sText(i_sText) 491*8a106958SDamjan Jovanovic { 492*8a106958SDamjan Jovanovic } 493*8a106958SDamjan Jovanovic 494*8a106958SDamjan Jovanovic Text::~Text() 495*8a106958SDamjan Jovanovic { 496*8a106958SDamjan Jovanovic } 497*8a106958SDamjan Jovanovic 498*8a106958SDamjan Jovanovic void 499*8a106958SDamjan Jovanovic Text::do_WriteOut( csv::bostream & io_aFile ) const 500*8a106958SDamjan Jovanovic { 501*8a106958SDamjan Jovanovic const unsigned char * 502*8a106958SDamjan Jovanovic pStart = reinterpret_cast< const unsigned char* >(sText.c_str()); 503*8a106958SDamjan Jovanovic const unsigned char * 504*8a106958SDamjan Jovanovic pOut = pStart; 505*8a106958SDamjan Jovanovic 506*8a106958SDamjan Jovanovic for ( ; *pOut != '\0'; ++pOut ) 507*8a106958SDamjan Jovanovic { 508*8a106958SDamjan Jovanovic if ( cReplacable[*pOut] ) 509*8a106958SDamjan Jovanovic { 510*8a106958SDamjan Jovanovic if ( pOut != pStart ) 511*8a106958SDamjan Jovanovic { 512*8a106958SDamjan Jovanovic io_aFile.write( pStart, pOut-pStart ); 513*8a106958SDamjan Jovanovic } 514*8a106958SDamjan Jovanovic 515*8a106958SDamjan Jovanovic switch (*pOut) 516*8a106958SDamjan Jovanovic { 517*8a106958SDamjan Jovanovic case '<': io_aFile.write("<"); break; 518*8a106958SDamjan Jovanovic case '>': io_aFile.write(">"); break; 519*8a106958SDamjan Jovanovic case '"': io_aFile.write("""); break; 520*8a106958SDamjan Jovanovic case '&': io_aFile.write("&"); break; 521*8a106958SDamjan Jovanovic case 255: io_aFile.write(" "); break; 522*8a106958SDamjan Jovanovic } 523*8a106958SDamjan Jovanovic 524*8a106958SDamjan Jovanovic pStart = pOut+1; 525*8a106958SDamjan Jovanovic } // endif (cReplacable[*pOut]) 526*8a106958SDamjan Jovanovic } // end for 527*8a106958SDamjan Jovanovic 528*8a106958SDamjan Jovanovic if ( pOut != pStart ) 529*8a106958SDamjan Jovanovic { 530*8a106958SDamjan Jovanovic io_aFile.write( pStart, pOut-pStart ); 531*8a106958SDamjan Jovanovic } 532*8a106958SDamjan Jovanovic } 533*8a106958SDamjan Jovanovic 534*8a106958SDamjan Jovanovic 535*8a106958SDamjan Jovanovic //*************************** XmlCode **************************// 536*8a106958SDamjan Jovanovic 537*8a106958SDamjan Jovanovic XmlCode::XmlCode( const String & i_sText ) 538*8a106958SDamjan Jovanovic : sText(i_sText) 539*8a106958SDamjan Jovanovic { 540*8a106958SDamjan Jovanovic } 541*8a106958SDamjan Jovanovic 542*8a106958SDamjan Jovanovic XmlCode::XmlCode( const char * i_sText ) 543*8a106958SDamjan Jovanovic : sText(i_sText) 544*8a106958SDamjan Jovanovic { 545*8a106958SDamjan Jovanovic } 546*8a106958SDamjan Jovanovic 547*8a106958SDamjan Jovanovic XmlCode::~XmlCode() 548*8a106958SDamjan Jovanovic { 549*8a106958SDamjan Jovanovic } 550*8a106958SDamjan Jovanovic 551*8a106958SDamjan Jovanovic void 552*8a106958SDamjan Jovanovic XmlCode::do_WriteOut( csv::bostream & io_aFile ) const 553*8a106958SDamjan Jovanovic { 554*8a106958SDamjan Jovanovic io_aFile.write(sText); 555*8a106958SDamjan Jovanovic } 556*8a106958SDamjan Jovanovic 557*8a106958SDamjan Jovanovic 558*8a106958SDamjan Jovanovic //*************************** MultiItem **************************// 559*8a106958SDamjan Jovanovic 560*8a106958SDamjan Jovanovic MultiItem::MultiItem() 561*8a106958SDamjan Jovanovic { 562*8a106958SDamjan Jovanovic } 563*8a106958SDamjan Jovanovic 564*8a106958SDamjan Jovanovic MultiItem::~MultiItem() 565*8a106958SDamjan Jovanovic { 566*8a106958SDamjan Jovanovic } 567*8a106958SDamjan Jovanovic 568*8a106958SDamjan Jovanovic void 569*8a106958SDamjan Jovanovic MultiItem::do_WriteOut( csv::bostream & io_aFile ) const 570*8a106958SDamjan Jovanovic { 571*8a106958SDamjan Jovanovic ItemList::iterator itEnd = aItems.end(); 572*8a106958SDamjan Jovanovic 573*8a106958SDamjan Jovanovic for ( ItemList::iterator it = aItems.begin(); 574*8a106958SDamjan Jovanovic it != itEnd; 575*8a106958SDamjan Jovanovic ++it ) 576*8a106958SDamjan Jovanovic { 577*8a106958SDamjan Jovanovic (*it)->WriteOut( io_aFile ); 578*8a106958SDamjan Jovanovic } 579*8a106958SDamjan Jovanovic 580*8a106958SDamjan Jovanovic } 581*8a106958SDamjan Jovanovic 582*8a106958SDamjan Jovanovic 583*8a106958SDamjan Jovanovic 584*8a106958SDamjan Jovanovic //*************************** Helpers **************************// 585*8a106958SDamjan Jovanovic 586*8a106958SDamjan Jovanovic void 587*8a106958SDamjan Jovanovic StreamOut( Dyn< Item > & o_rContent, 588*8a106958SDamjan Jovanovic DYN Item * let_dpItem ) 589*8a106958SDamjan Jovanovic { 590*8a106958SDamjan Jovanovic MultiItem * pContent = 0; 591*8a106958SDamjan Jovanovic if ( bool(o_rContent) ) 592*8a106958SDamjan Jovanovic { 593*8a106958SDamjan Jovanovic pContent = static_cast< MultiItem* >( o_rContent.MutablePtr() ); 594*8a106958SDamjan Jovanovic csv_assert( dynamic_cast< MultiItem* >( o_rContent.MutablePtr() ) != 0 ); 595*8a106958SDamjan Jovanovic } 596*8a106958SDamjan Jovanovic else 597*8a106958SDamjan Jovanovic { 598*8a106958SDamjan Jovanovic pContent = new MultiItem; 599*8a106958SDamjan Jovanovic o_rContent = pContent; 600*8a106958SDamjan Jovanovic } 601*8a106958SDamjan Jovanovic 602*8a106958SDamjan Jovanovic csv_assert( let_dpItem != 0 ); 603*8a106958SDamjan Jovanovic pContent->Add( let_dpItem ); 604*8a106958SDamjan Jovanovic } 605*8a106958SDamjan Jovanovic 606*8a106958SDamjan Jovanovic 607*8a106958SDamjan Jovanovic 608*8a106958SDamjan Jovanovic 609*8a106958SDamjan Jovanovic } // namespace xml 610*8a106958SDamjan Jovanovic } // namespace csi 611