0024095: Eliminate compiler warning C4512 in MSVC++ with warning level 4
[occt.git] / src / LDOM / LDOM_XmlWriter.hxx
1 // Created on: 2001-06-28
2 // Created by: Alexander GRIGORIEV
3 // Copyright (c) 2001-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20
21
22 #ifndef LDOM_XmlWriter_HeaderFile
23 #define LDOM_XmlWriter_HeaderFile
24
25 #include <Standard_TypeDef.hxx>
26 #include <stdio.h>
27
28 typedef char LXMLCh;
29
30 class LDOM_Document;
31 class LDOM_Node;
32 class LDOMBasicString;
33
34 class LDOM_XmlWriter
35 {
36  public:
37
38   Standard_EXPORT LDOM_XmlWriter (FILE * aFile, const char * theEncoding= NULL);
39   // Constructor
40
41   Standard_EXPORT ~LDOM_XmlWriter ();
42   // Destructor
43
44   void SetIndentation (const Standard_Integer theIndent) { myIndent=theIndent; }
45   // Set indentation for output (by default 0)
46
47   Standard_EXPORT LDOM_XmlWriter& operator<<    (const LDOM_Document& aDoc);
48
49   Standard_EXPORT LDOM_XmlWriter& operator<<    (const LDOM_Node& toWrite);
50   //  ostream << DOM_Node   
51   //  Stream out a DOM node, and, recursively, all of its children. This
52   //  function is the heart of writing a DOM tree out as XML source. Give it
53   //  a document node and it will do the whole thing.
54
55  private:
56
57   void  WriteAttribute (const LDOM_Node& theAtt);
58
59   LDOM_XmlWriter& operator<< (const LDOMBasicString&);
60   //  Stream out LDOM String
61
62   inline LDOM_XmlWriter& operator<< (const LXMLCh * toWrite);
63   //  Stream out a character string. Doing this requires that we first transcode
64   //  to char * form in the default code page for the system
65
66   inline LDOM_XmlWriter& operator <<    (const LXMLCh aChar);
67
68   LDOM_XmlWriter (const LDOM_XmlWriter& anOther);
69   //    Copy constructor - prohibited
70
71   LDOM_XmlWriter& operator = (const LDOM_XmlWriter& anOther);
72   //    Assignment operator - prohibited
73
74  private:
75
76   FILE                          * myFile;
77   LXMLCh                        * myEncodingName;
78   Standard_Integer              myIndent;
79   Standard_Integer              myCurIndent;
80   char *                        myABuffer;      // for WriteAttribute()
81   Standard_Integer              myABufferLen;   // for WriteAttribute()
82 };
83
84 #endif