1*11c03c6dSDamjan Jovanovic /************************************************************** 2*11c03c6dSDamjan Jovanovic * 3*11c03c6dSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*11c03c6dSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*11c03c6dSDamjan Jovanovic * distributed with this work for additional information 6*11c03c6dSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*11c03c6dSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*11c03c6dSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*11c03c6dSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*11c03c6dSDamjan Jovanovic * 11*11c03c6dSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*11c03c6dSDamjan Jovanovic * 13*11c03c6dSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*11c03c6dSDamjan Jovanovic * software distributed under the License is distributed on an 15*11c03c6dSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*11c03c6dSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*11c03c6dSDamjan Jovanovic * specific language governing permissions and limitations 18*11c03c6dSDamjan Jovanovic * under the License. 19*11c03c6dSDamjan Jovanovic * 20*11c03c6dSDamjan Jovanovic *************************************************************/ 21*11c03c6dSDamjan Jovanovic 22*11c03c6dSDamjan Jovanovic 23*11c03c6dSDamjan Jovanovic 24*11c03c6dSDamjan Jovanovic #ifndef CSI_XML_XMLITEM_HXX 25*11c03c6dSDamjan Jovanovic #define CSI_XML_XMLITEM_HXX 26*11c03c6dSDamjan Jovanovic 27*11c03c6dSDamjan Jovanovic // USED SERVICES 28*11c03c6dSDamjan Jovanovic // BASE CLASSES 29*11c03c6dSDamjan Jovanovic // COMPONENTS 30*11c03c6dSDamjan Jovanovic #include <cosv/tpl/swelist.hxx> 31*11c03c6dSDamjan Jovanovic #include <cosv/tpl/dyn.hxx> 32*11c03c6dSDamjan Jovanovic // PARAMETERS 33*11c03c6dSDamjan Jovanovic 34*11c03c6dSDamjan Jovanovic namespace csv 35*11c03c6dSDamjan Jovanovic { 36*11c03c6dSDamjan Jovanovic class bostream; 37*11c03c6dSDamjan Jovanovic } 38*11c03c6dSDamjan Jovanovic 39*11c03c6dSDamjan Jovanovic 40*11c03c6dSDamjan Jovanovic namespace csi 41*11c03c6dSDamjan Jovanovic { 42*11c03c6dSDamjan Jovanovic namespace xml 43*11c03c6dSDamjan Jovanovic { 44*11c03c6dSDamjan Jovanovic 45*11c03c6dSDamjan Jovanovic 46*11c03c6dSDamjan Jovanovic /* Basics: 47*11c03c6dSDamjan Jovanovic Item, Attribute, Element, TextContext 48*11c03c6dSDamjan Jovanovic */ 49*11c03c6dSDamjan Jovanovic 50*11c03c6dSDamjan Jovanovic class Item 51*11c03c6dSDamjan Jovanovic { 52*11c03c6dSDamjan Jovanovic public: 53*11c03c6dSDamjan Jovanovic virtual ~Item() {} 54*11c03c6dSDamjan Jovanovic void WriteOut( 55*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const; 56*11c03c6dSDamjan Jovanovic private: 57*11c03c6dSDamjan Jovanovic virtual void do_WriteOut( 58*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const = 0; 59*11c03c6dSDamjan Jovanovic }; 60*11c03c6dSDamjan Jovanovic 61*11c03c6dSDamjan Jovanovic typedef csv::SweList_dyn< Item > ItemList; 62*11c03c6dSDamjan Jovanovic 63*11c03c6dSDamjan Jovanovic class Attribute 64*11c03c6dSDamjan Jovanovic { 65*11c03c6dSDamjan Jovanovic public: 66*11c03c6dSDamjan Jovanovic virtual ~Attribute() {} 67*11c03c6dSDamjan Jovanovic 68*11c03c6dSDamjan Jovanovic void WriteOut( 69*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const; 70*11c03c6dSDamjan Jovanovic 71*11c03c6dSDamjan Jovanovic const ::csv::String& Name() const; 72*11c03c6dSDamjan Jovanovic const ::csv::String& Value() const; 73*11c03c6dSDamjan Jovanovic 74*11c03c6dSDamjan Jovanovic private: 75*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 76*11c03c6dSDamjan Jovanovic inq_Name() const = 0; 77*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 78*11c03c6dSDamjan Jovanovic inq_Value() const = 0; 79*11c03c6dSDamjan Jovanovic }; 80*11c03c6dSDamjan Jovanovic 81*11c03c6dSDamjan Jovanovic typedef csv::SweList_dyn< Attribute > AttrList; 82*11c03c6dSDamjan Jovanovic 83*11c03c6dSDamjan Jovanovic 84*11c03c6dSDamjan Jovanovic class Element : public Item 85*11c03c6dSDamjan Jovanovic { 86*11c03c6dSDamjan Jovanovic public: 87*11c03c6dSDamjan Jovanovic Element & operator<<( /// For multiple content items. 88*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 89*11c03c6dSDamjan Jovanovic Element & operator<<( /// For multiple content items. 90*11c03c6dSDamjan Jovanovic const ::csv::String& let_drText ); 91*11c03c6dSDamjan Jovanovic Element & operator<<( /// For multiple content items. 92*11c03c6dSDamjan Jovanovic const char * let_dpText ); 93*11c03c6dSDamjan Jovanovic Element & operator<<( 94*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ); 95*11c03c6dSDamjan Jovanovic 96*11c03c6dSDamjan Jovanovic Element & operator>>( /// For multiple content items. @return the child Element. 97*11c03c6dSDamjan Jovanovic DYN Element & let_drElement ); 98*11c03c6dSDamjan Jovanovic 99*11c03c6dSDamjan Jovanovic 100*11c03c6dSDamjan Jovanovic Item * SetContent( /// For only one content item. 101*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); /// Replaces previous content. May be 0, then all content is deleted. 102*11c03c6dSDamjan Jovanovic private: 103*11c03c6dSDamjan Jovanovic // Interface Item: 104*11c03c6dSDamjan Jovanovic virtual void do_WriteOut( 105*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const; 106*11c03c6dSDamjan Jovanovic // Local 107*11c03c6dSDamjan Jovanovic virtual void op_streamout( 108*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ) = 0; 109*11c03c6dSDamjan Jovanovic virtual void op_streamout( 110*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ) = 0; 111*11c03c6dSDamjan Jovanovic 112*11c03c6dSDamjan Jovanovic virtual void do_SetContent( 113*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ) = 0; 114*11c03c6dSDamjan Jovanovic // Helpers 115*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 116*11c03c6dSDamjan Jovanovic inq_TagName() const = 0; 117*11c03c6dSDamjan Jovanovic virtual const Item * 118*11c03c6dSDamjan Jovanovic inq_Content() const = 0; 119*11c03c6dSDamjan Jovanovic virtual const AttrList * 120*11c03c6dSDamjan Jovanovic inq_Attrs() const = 0; 121*11c03c6dSDamjan Jovanovic 122*11c03c6dSDamjan Jovanovic virtual bool FinishEmptyTag_XmlStyle() const; /// Defaulted to: true 123*11c03c6dSDamjan Jovanovic 124*11c03c6dSDamjan Jovanovic virtual bool LineBreakAfterBeginTag() const; /// Defaulted to: false 125*11c03c6dSDamjan Jovanovic virtual bool LineBreakAfterEndTag() const; /// Defaulted to: true, if LineBreakAfterBeginTag() 126*11c03c6dSDamjan Jovanovic }; 127*11c03c6dSDamjan Jovanovic 128*11c03c6dSDamjan Jovanovic class TextContent : public Item 129*11c03c6dSDamjan Jovanovic { 130*11c03c6dSDamjan Jovanovic }; 131*11c03c6dSDamjan Jovanovic 132*11c03c6dSDamjan Jovanovic 133*11c03c6dSDamjan Jovanovic /* Implementation simplifiers: 134*11c03c6dSDamjan Jovanovic EmptyElement, PureElement, SglTag 135*11c03c6dSDamjan Jovanovic */ 136*11c03c6dSDamjan Jovanovic 137*11c03c6dSDamjan Jovanovic class EmptyElement : public Element 138*11c03c6dSDamjan Jovanovic { 139*11c03c6dSDamjan Jovanovic private: 140*11c03c6dSDamjan Jovanovic // Interface Element: 141*11c03c6dSDamjan Jovanovic virtual void op_streamout( /// does nothing 142*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 143*11c03c6dSDamjan Jovanovic virtual void op_streamout( 144*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ); 145*11c03c6dSDamjan Jovanovic virtual void do_SetContent( /// does nothing 146*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 147*11c03c6dSDamjan Jovanovic virtual const Item * 148*11c03c6dSDamjan Jovanovic inq_Content() const; /// @return 0 149*11c03c6dSDamjan Jovanovic virtual const AttrList * 150*11c03c6dSDamjan Jovanovic inq_Attrs() const; 151*11c03c6dSDamjan Jovanovic 152*11c03c6dSDamjan Jovanovic // Local 153*11c03c6dSDamjan Jovanovic virtual AttrList & inq_RefAttrs() = 0; 154*11c03c6dSDamjan Jovanovic }; 155*11c03c6dSDamjan Jovanovic 156*11c03c6dSDamjan Jovanovic class PureElement : public Element 157*11c03c6dSDamjan Jovanovic { 158*11c03c6dSDamjan Jovanovic private: 159*11c03c6dSDamjan Jovanovic // Interface Element: 160*11c03c6dSDamjan Jovanovic virtual void op_streamout( 161*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 162*11c03c6dSDamjan Jovanovic virtual void op_streamout( /// does nothing 163*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ); 164*11c03c6dSDamjan Jovanovic virtual void do_SetContent( 165*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 166*11c03c6dSDamjan Jovanovic virtual const Item * 167*11c03c6dSDamjan Jovanovic inq_Content() const; 168*11c03c6dSDamjan Jovanovic virtual const AttrList * 169*11c03c6dSDamjan Jovanovic inq_Attrs() const; /// @return 0 170*11c03c6dSDamjan Jovanovic // Local 171*11c03c6dSDamjan Jovanovic virtual Dyn< Item > & 172*11c03c6dSDamjan Jovanovic inq_RefContent() = 0; 173*11c03c6dSDamjan Jovanovic }; 174*11c03c6dSDamjan Jovanovic 175*11c03c6dSDamjan Jovanovic class SglTag : public Element 176*11c03c6dSDamjan Jovanovic { 177*11c03c6dSDamjan Jovanovic private: 178*11c03c6dSDamjan Jovanovic // Interface Element: 179*11c03c6dSDamjan Jovanovic virtual void op_streamout( /// does nothing 180*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 181*11c03c6dSDamjan Jovanovic virtual void op_streamout( /// does nothing 182*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ); 183*11c03c6dSDamjan Jovanovic virtual void do_SetContent( /// does nothing 184*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 185*11c03c6dSDamjan Jovanovic virtual const Item * 186*11c03c6dSDamjan Jovanovic inq_Content() const; /// @return 0 187*11c03c6dSDamjan Jovanovic virtual const AttrList * 188*11c03c6dSDamjan Jovanovic inq_Attrs() const; /// @return 0 189*11c03c6dSDamjan Jovanovic }; 190*11c03c6dSDamjan Jovanovic 191*11c03c6dSDamjan Jovanovic 192*11c03c6dSDamjan Jovanovic 193*11c03c6dSDamjan Jovanovic /* Standard Element implementations, if there are not any 194*11c03c6dSDamjan Jovanovic specialized ones. 195*11c03c6dSDamjan Jovanovic */ 196*11c03c6dSDamjan Jovanovic 197*11c03c6dSDamjan Jovanovic class AnElement : public Element 198*11c03c6dSDamjan Jovanovic { 199*11c03c6dSDamjan Jovanovic public: 200*11c03c6dSDamjan Jovanovic AnElement( 201*11c03c6dSDamjan Jovanovic const ::csv::String& i_sTagName ); 202*11c03c6dSDamjan Jovanovic AnElement( 203*11c03c6dSDamjan Jovanovic const char * i_sTagName ); 204*11c03c6dSDamjan Jovanovic ~AnElement(); 205*11c03c6dSDamjan Jovanovic private: 206*11c03c6dSDamjan Jovanovic // Interface Element 207*11c03c6dSDamjan Jovanovic virtual void op_streamout( 208*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 209*11c03c6dSDamjan Jovanovic virtual void op_streamout( 210*11c03c6dSDamjan Jovanovic DYN Attribute * let_dpAttr ); 211*11c03c6dSDamjan Jovanovic virtual void do_SetContent( 212*11c03c6dSDamjan Jovanovic DYN Item * let_dpItem ); 213*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 214*11c03c6dSDamjan Jovanovic inq_TagName() const; 215*11c03c6dSDamjan Jovanovic virtual const Item * 216*11c03c6dSDamjan Jovanovic inq_Content() const; 217*11c03c6dSDamjan Jovanovic virtual const AttrList * 218*11c03c6dSDamjan Jovanovic inq_Attrs() const; 219*11c03c6dSDamjan Jovanovic // DATA 220*11c03c6dSDamjan Jovanovic ::csv::String sTagName; 221*11c03c6dSDamjan Jovanovic Dyn< Item > pContent; 222*11c03c6dSDamjan Jovanovic AttrList aAttrs; 223*11c03c6dSDamjan Jovanovic }; 224*11c03c6dSDamjan Jovanovic 225*11c03c6dSDamjan Jovanovic 226*11c03c6dSDamjan Jovanovic class AnEmptyElement : public EmptyElement 227*11c03c6dSDamjan Jovanovic { 228*11c03c6dSDamjan Jovanovic public: 229*11c03c6dSDamjan Jovanovic AnEmptyElement( 230*11c03c6dSDamjan Jovanovic const ::csv::String & i_sTagName ); 231*11c03c6dSDamjan Jovanovic AnEmptyElement( 232*11c03c6dSDamjan Jovanovic const char * i_sTagName ); 233*11c03c6dSDamjan Jovanovic ~AnEmptyElement(); 234*11c03c6dSDamjan Jovanovic private: 235*11c03c6dSDamjan Jovanovic // Interface Element: 236*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 237*11c03c6dSDamjan Jovanovic inq_TagName() const; 238*11c03c6dSDamjan Jovanovic // Interface EmptyElement: 239*11c03c6dSDamjan Jovanovic virtual AttrList & inq_RefAttrs(); 240*11c03c6dSDamjan Jovanovic 241*11c03c6dSDamjan Jovanovic // DATA 242*11c03c6dSDamjan Jovanovic ::csv::String sTagName; 243*11c03c6dSDamjan Jovanovic AttrList aAttrs; 244*11c03c6dSDamjan Jovanovic }; 245*11c03c6dSDamjan Jovanovic 246*11c03c6dSDamjan Jovanovic class APureElement : public PureElement 247*11c03c6dSDamjan Jovanovic { 248*11c03c6dSDamjan Jovanovic public: 249*11c03c6dSDamjan Jovanovic APureElement( 250*11c03c6dSDamjan Jovanovic const ::csv::String & i_sTagName ); 251*11c03c6dSDamjan Jovanovic APureElement( 252*11c03c6dSDamjan Jovanovic const char * i_sTagName ); 253*11c03c6dSDamjan Jovanovic ~APureElement(); 254*11c03c6dSDamjan Jovanovic private: 255*11c03c6dSDamjan Jovanovic // Interface Element: 256*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 257*11c03c6dSDamjan Jovanovic inq_TagName() const; 258*11c03c6dSDamjan Jovanovic // Interface PureElement: 259*11c03c6dSDamjan Jovanovic virtual Dyn< Item > & 260*11c03c6dSDamjan Jovanovic inq_RefContent(); 261*11c03c6dSDamjan Jovanovic // DATA 262*11c03c6dSDamjan Jovanovic ::csv::String sTagName; 263*11c03c6dSDamjan Jovanovic Dyn< Item > pContent; 264*11c03c6dSDamjan Jovanovic }; 265*11c03c6dSDamjan Jovanovic 266*11c03c6dSDamjan Jovanovic class ASglTag : public SglTag 267*11c03c6dSDamjan Jovanovic { 268*11c03c6dSDamjan Jovanovic public: 269*11c03c6dSDamjan Jovanovic ASglTag( 270*11c03c6dSDamjan Jovanovic const ::csv::String & i_sTagName ); 271*11c03c6dSDamjan Jovanovic ASglTag( 272*11c03c6dSDamjan Jovanovic const char * i_sTagName ); 273*11c03c6dSDamjan Jovanovic ~ASglTag(); 274*11c03c6dSDamjan Jovanovic private: 275*11c03c6dSDamjan Jovanovic // Interface Element: 276*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 277*11c03c6dSDamjan Jovanovic inq_TagName() const; 278*11c03c6dSDamjan Jovanovic // DATA 279*11c03c6dSDamjan Jovanovic ::csv::String sTagName; 280*11c03c6dSDamjan Jovanovic }; 281*11c03c6dSDamjan Jovanovic 282*11c03c6dSDamjan Jovanovic 283*11c03c6dSDamjan Jovanovic /* Standard Attribute implementation 284*11c03c6dSDamjan Jovanovic */ 285*11c03c6dSDamjan Jovanovic class AnAttribute : public Attribute 286*11c03c6dSDamjan Jovanovic { 287*11c03c6dSDamjan Jovanovic public: 288*11c03c6dSDamjan Jovanovic AnAttribute( 289*11c03c6dSDamjan Jovanovic const ::csv::String & i_sName, 290*11c03c6dSDamjan Jovanovic const ::csv::String & i_sValue ); 291*11c03c6dSDamjan Jovanovic AnAttribute( 292*11c03c6dSDamjan Jovanovic const char * i_sName, 293*11c03c6dSDamjan Jovanovic const char * i_sValue ); 294*11c03c6dSDamjan Jovanovic ~AnAttribute(); 295*11c03c6dSDamjan Jovanovic private: 296*11c03c6dSDamjan Jovanovic // Interface Attribute: 297*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 298*11c03c6dSDamjan Jovanovic inq_Name() const; 299*11c03c6dSDamjan Jovanovic virtual const ::csv::String & 300*11c03c6dSDamjan Jovanovic inq_Value() const; 301*11c03c6dSDamjan Jovanovic // DATA 302*11c03c6dSDamjan Jovanovic ::csv::String sName; 303*11c03c6dSDamjan Jovanovic ::csv::String sValue; 304*11c03c6dSDamjan Jovanovic }; 305*11c03c6dSDamjan Jovanovic 306*11c03c6dSDamjan Jovanovic 307*11c03c6dSDamjan Jovanovic 308*11c03c6dSDamjan Jovanovic /* Implementations of TextContent: 309*11c03c6dSDamjan Jovanovic 310*11c03c6dSDamjan Jovanovic Text ( reserved characters will be replaced and appear unchanged ) 311*11c03c6dSDamjan Jovanovic XmlCode ( reserved characters stay and are interpreted 312*11c03c6dSDamjan Jovanovic by the XML-viewer ) 313*11c03c6dSDamjan Jovanovic */ 314*11c03c6dSDamjan Jovanovic class Text : public TextContent 315*11c03c6dSDamjan Jovanovic { 316*11c03c6dSDamjan Jovanovic public: 317*11c03c6dSDamjan Jovanovic Text( 318*11c03c6dSDamjan Jovanovic const ::csv::String & i_sText ); 319*11c03c6dSDamjan Jovanovic Text( 320*11c03c6dSDamjan Jovanovic const char * i_sText ); 321*11c03c6dSDamjan Jovanovic ~Text(); 322*11c03c6dSDamjan Jovanovic private: 323*11c03c6dSDamjan Jovanovic virtual void do_WriteOut( 324*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const; 325*11c03c6dSDamjan Jovanovic // DATA 326*11c03c6dSDamjan Jovanovic ::csv::String sText; 327*11c03c6dSDamjan Jovanovic }; 328*11c03c6dSDamjan Jovanovic 329*11c03c6dSDamjan Jovanovic 330*11c03c6dSDamjan Jovanovic class XmlCode : public TextContent 331*11c03c6dSDamjan Jovanovic { 332*11c03c6dSDamjan Jovanovic public: 333*11c03c6dSDamjan Jovanovic XmlCode( 334*11c03c6dSDamjan Jovanovic const ::csv::String & i_sText ); 335*11c03c6dSDamjan Jovanovic XmlCode( 336*11c03c6dSDamjan Jovanovic const char * i_sText ); 337*11c03c6dSDamjan Jovanovic ~XmlCode(); 338*11c03c6dSDamjan Jovanovic private: 339*11c03c6dSDamjan Jovanovic virtual void do_WriteOut( 340*11c03c6dSDamjan Jovanovic csv::bostream & io_aFile ) const; 341*11c03c6dSDamjan Jovanovic // DATA 342*11c03c6dSDamjan Jovanovic ::csv::String sText; 343*11c03c6dSDamjan Jovanovic }; 344*11c03c6dSDamjan Jovanovic 345*11c03c6dSDamjan Jovanovic 346*11c03c6dSDamjan Jovanovic 347*11c03c6dSDamjan Jovanovic // IMPLEMENTATION 348*11c03c6dSDamjan Jovanovic 349*11c03c6dSDamjan Jovanovic inline void 350*11c03c6dSDamjan Jovanovic Item::WriteOut( csv::bostream & io_aFile ) const 351*11c03c6dSDamjan Jovanovic { do_WriteOut(io_aFile); } 352*11c03c6dSDamjan Jovanovic 353*11c03c6dSDamjan Jovanovic inline const ::csv::String & 354*11c03c6dSDamjan Jovanovic Attribute::Name() const 355*11c03c6dSDamjan Jovanovic { return inq_Name(); } 356*11c03c6dSDamjan Jovanovic inline const ::csv::String & 357*11c03c6dSDamjan Jovanovic Attribute::Value() const 358*11c03c6dSDamjan Jovanovic { return inq_Value(); } 359*11c03c6dSDamjan Jovanovic 360*11c03c6dSDamjan Jovanovic inline Element & 361*11c03c6dSDamjan Jovanovic Element::operator<<( DYN Item * let_dpItem ) 362*11c03c6dSDamjan Jovanovic { op_streamout(let_dpItem); return *this; } 363*11c03c6dSDamjan Jovanovic inline Element & 364*11c03c6dSDamjan Jovanovic Element::operator<<( const ::csv::String & let_drText ) 365*11c03c6dSDamjan Jovanovic { op_streamout( new Text(let_drText) ); return *this; } 366*11c03c6dSDamjan Jovanovic inline Element & 367*11c03c6dSDamjan Jovanovic Element::operator<<( const char * let_drText ) 368*11c03c6dSDamjan Jovanovic { op_streamout( new Text(let_drText) ); return *this; } 369*11c03c6dSDamjan Jovanovic inline Element & 370*11c03c6dSDamjan Jovanovic Element::operator<<( DYN Attribute * let_dpAttr ) 371*11c03c6dSDamjan Jovanovic { op_streamout(let_dpAttr); return *this; } 372*11c03c6dSDamjan Jovanovic inline Element & 373*11c03c6dSDamjan Jovanovic Element::operator>>( DYN Element & let_drElement ) 374*11c03c6dSDamjan Jovanovic { op_streamout(&let_drElement); return let_drElement; } 375*11c03c6dSDamjan Jovanovic inline Item * 376*11c03c6dSDamjan Jovanovic Element::SetContent( DYN Item * let_dpItem ) 377*11c03c6dSDamjan Jovanovic { do_SetContent(let_dpItem); return let_dpItem; } 378*11c03c6dSDamjan Jovanovic 379*11c03c6dSDamjan Jovanovic 380*11c03c6dSDamjan Jovanovic } // namespace xml 381*11c03c6dSDamjan Jovanovic } // namespace csi 382*11c03c6dSDamjan Jovanovic 383*11c03c6dSDamjan Jovanovic #endif 384