Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXmlWriter.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cXmlWriter_H
7 #define _INC_cXmlWriter_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cXmlVisitor.h"
14 
15 namespace GrayLib
16 {
18  {
21  protected:
24 
25  // Current state.
26  int m_iDepth;
28 
29  public:
31 
32  protected:
33  void WriteIndent()
34  {
35  for (int i = 0; i < m_iDepth; ++i)
36  m_pOutput->WriteString(m_sIndent);
37  }
39  {
40  m_pOutput->WriteString(m_sLineBreak);
41  }
42 
43  public:
44  cXmlWriter(cStreamOutput* pOutput);
45  ~cXmlWriter();
46 
47  void put_Indent(const char* pszIndent)
48  {
51  m_sIndent = pszIndent ? pszIndent : "";
52  }
53  const char* get_Indent() const
54  {
56  return m_sIndent.c_str();
57  }
58 
59  void put_LineBreak(const char* pszLineBreak)
60  {
64  m_sLineBreak = pszLineBreak ? pszLineBreak : "";
65  }
66  const char* get_LineBreak() const
67  {
69  return m_sLineBreak.c_str();
70  }
71 
73  {
76  m_sIndent = "";
77  m_sLineBreak = "";
78  }
79 
80  void WriteNull()
81  {
82  // terminate a string with '\0'.
83  m_pOutput->WriteX("\0",1);
84  }
85 
86  void WriteLine(const char* pszData);
87  void WriteComment(const char* pszComment);
88  void WriteElementBegin(const char* pszName, const cXmlAttributeSet* pAttr = nullptr, bool bClose = false, bool bLineBreak = true);
89  void WriteElementData(const char* pszData, bool bCData = false);
90  void WriteElementEnd(const char* pszName);
91  void WriteElement1(const char* pszName, const char* pszData);
92  };
93 
95  {
111 
112  public:
114 
115  public:
116  cXmlWriterV();
117  ~cXmlWriterV();
118 
119  const char* get_CPtr() const
120  {
122  return (const char*) m_Q.get_ReadPtr();
123  }
124  size_t get_Size() const
125  {
127  return m_Q.GetLength();
128  }
129 
130  virtual bool VisitEnter(const cXmlDocument& doc) override;
131  virtual bool VisitExit(const cXmlDocument& doc) override;
132 
133  virtual bool VisitEnter(const cXmlElement& element) override;
134  virtual bool VisitExit(const cXmlElement& element) override;
135 
136  virtual bool Visit(const cXmlDeclaration& declaration) override;
137  virtual bool Visit(const cXmlText& text) override;
138  virtual bool Visit(const cXmlComment& comment) override;
139  virtual bool Visit(const cXmlUnknown& unknown) override;
140  };
141 };
142 
143 #endif // _INC_cXmlWriter_H
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: cXmlDocument.h:238
Definition: cXmlDocument.h:353
Definition: cXmlDocument.h:635
Definition: cXmlDocument.h:549
Definition: cXmlDocument.h:279
Definition: cXmlDocument.h:441
Definition: cXmlWriter.h:95
cStreamQueue m_Q
Definition: cXmlWriter.h:113
const char * get_CPtr() const
Definition: cXmlWriter.h:119
size_t get_Size() const
Definition: cXmlWriter.h:124
Definition: cXmlWriter.h:18
const char * get_LineBreak() const
Definition: cXmlWriter.h:66
int m_iDepth
Indent depth of writer.
Definition: cXmlWriter.h:26
void WriteIndent()
Definition: cXmlWriter.h:33
const char * get_Indent() const
Definition: cXmlWriter.h:53
cStreamOutput * m_pOutput
Hold output we are building.
Definition: cXmlWriter.h:30
void SetStreamPrinting()
Definition: cXmlWriter.h:72
void WriteNull()
Definition: cXmlWriter.h:80
cXmlString m_sLineBreak
STR_NL.
Definition: cXmlWriter.h:23
void put_Indent(const char *pszIndent)
Definition: cXmlWriter.h:47
void WriteLineBreak()
Definition: cXmlWriter.h:38
void put_LineBreak(const char *pszLineBreak)
Definition: cXmlWriter.h:59
bool m_bElementOnOneLine
All on the same line. "<X>sdfsdf</X>".
Definition: cXmlWriter.h:27
cXmlString m_sIndent
Tab = 4 spaces.
Definition: cXmlWriter.h:22
Definition: cIniMap.h:56
const TYPE * get_ReadPtr() const
Definition: cQueue.h:312
Definition: cStream.h:126
virtual HRESULT WriteString(const char *pszStr)
Definition: cStream.h:212
virtual HRESULT WriteX(const void *pData, size_t nDataSize)
Definition: cStream.h:141
Definition: cStreamQueue.h:19
virtual STREAM_POS_t GetLength() const override
Definition: cStreamQueue.h:69
const _TYPE_CH * c_str() const
Definition: cString.h:563
Definition: cMesh.h:22
Definition: cXmlVisitor.h:22