ReactOS  0.4.12-dev-51-ge94618b
tinyxml2::XMLPrinter Class Reference

#include <tinyxml2.h>

Inheritance diagram for tinyxml2::XMLPrinter:
Collaboration diagram for tinyxml2::XMLPrinter:

Public Member Functions

 XMLPrinter (FILE *file=0, bool compact=false, int depth=0)
 
virtual ~XMLPrinter ()
 
void PushHeader (bool writeBOM, bool writeDeclaration)
 
void OpenElement (const char *name, bool compactMode=false)
 
void PushAttribute (const char *name, const char *value)
 If streaming, add an attribute to an open element. More...
 
void PushAttribute (const char *name, int value)
 
void PushAttribute (const char *name, unsigned value)
 
void PushAttribute (const char *name, bool value)
 
void PushAttribute (const char *name, double value)
 
virtual void CloseElement (bool compactMode=false)
 If streaming, close the Element. More...
 
void PushText (const char *text, bool cdata=false)
 Add a text node. More...
 
void PushText (int value)
 Add a text node from an integer. More...
 
void PushText (unsigned value)
 Add a text node from an unsigned. More...
 
void PushText (bool value)
 Add a text node from a bool. More...
 
void PushText (float value)
 Add a text node from a float. More...
 
void PushText (double value)
 Add a text node from a double. More...
 
void PushComment (const char *comment)
 Add a comment. More...
 
void PushDeclaration (const char *value)
 
void PushUnknown (const char *value)
 
virtual bool VisitEnter (const XMLDocument &)
 Visit a document. More...
 
virtual bool VisitExit (const XMLDocument &)
 Visit a document. More...
 
virtual bool VisitEnter (const XMLElement &element, const XMLAttribute *attribute)
 Visit an element. More...
 
virtual bool VisitExit (const XMLElement &element)
 Visit an element. More...
 
virtual bool Visit (const XMLText &text)
 Visit a text node. More...
 
virtual bool Visit (const XMLComment &comment)
 Visit a comment node. More...
 
virtual bool Visit (const XMLDeclaration &declaration)
 Visit a declaration. More...
 
virtual bool Visit (const XMLUnknown &unknown)
 Visit an unknown node. More...
 
const charCStr () const
 
int CStrSize () const
 
void ClearBuffer ()
 
- Public Member Functions inherited from tinyxml2::XMLVisitor
virtual ~XMLVisitor ()
 

Protected Member Functions

virtual bool CompactMode (const XMLElement &)
 
virtual void PrintSpace (int depth)
 
void Print (const char *format,...)
 
void SealElementIfJustOpened ()
 

Protected Attributes

bool _elementJustOpened
 
DynArray< const char *, 10 > _stack
 

Private Types

enum  { ENTITY_RANGE = 64, BUF_SIZE = 200 }
 

Private Member Functions

void PrintString (const char *, bool restrictedEntitySet)
 

Private Attributes

bool _firstElement
 
FILE_fp
 
int _depth
 
int _textDepth
 
bool _processEntities
 
bool _compactMode
 
bool _entityFlag [ENTITY_RANGE]
 
bool _restrictedEntityFlag [ENTITY_RANGE]
 
DynArray< char, 20 > _buffer
 

Detailed Description

Printing functionality. The XMLPrinter gives you more options than the XMLDocument::Print() method.

It can:

  1. Print to memory.
  2. Print to a file you provide.
  3. Print XML without a XMLDocument.

Print to Memory

XMLPrinter printer;
doc.Print( &printer );
SomeFunction( printer.CStr() );

Print to a File

You provide the file pointer.

XMLPrinter printer( fp );
doc.Print( &printer );

Print without a XMLDocument

When loading, an XML parser is very useful. However, sometimes when saving, it just gets in the way. The code is often set up for streaming, and constructing the DOM is just overhead.

The Printer supports the streaming case. The following code prints out a trivially simple XML file without ever creating an XML document.

XMLPrinter printer( fp );
printer.OpenElement( "foo" );
printer.PushAttribute( "foo", "bar" );
printer.CloseElement();

Definition at line 1979 of file tinyxml2.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
ENTITY_RANGE 
BUF_SIZE 

Definition at line 2085 of file tinyxml2.h.

Constructor & Destructor Documentation

◆ XMLPrinter()

tinyxml2::XMLPrinter::XMLPrinter ( FILE file = 0,
bool  compact = false,
int  depth = 0 
)

Construct the printer. If the FILE* is specified, this will print to the FILE. Else it will print to memory, and the result is available in CStr(). If 'compact' is set to true, then output is created with only required whitespace and newlines.

Definition at line 2105 of file tinyxml2.cpp.

2105  :
2106  _elementJustOpened( false ),
2107  _firstElement( true ),
2108  _fp( file ),
2109  _depth( depth ),
2110  _textDepth( -1 ),
2111  _processEntities( true ),
2112  _compactMode( compact )
2113 {
2114  for( int i=0; i<ENTITY_RANGE; ++i ) {
2115  _entityFlag[i] = false;
2116  _restrictedEntityFlag[i] = false;
2117  }
2118  for( int i=0; i<NUM_ENTITIES; ++i ) {
2119  const char entityValue = entities[i].value;
2120  TIXMLASSERT( 0 <= entityValue && entityValue < ENTITY_RANGE );
2121  _entityFlag[ (unsigned char)entityValue ] = true;
2122  }
2123  _restrictedEntityFlag[(unsigned char)'&'] = true;
2124  _restrictedEntityFlag[(unsigned char)'<'] = true;
2125  _restrictedEntityFlag[(unsigned char)'>'] = true; // not required, but consistency is nice
2126  _buffer.Push( 0 );
2127 }
void Push(T t)
Definition: tinyxml2.h:203
static const Entity entities[NUM_ENTITIES]
Definition: tinyxml2.cpp:129
GLenum GLclampf GLint i
Definition: glfuncs.h:14
unsigned char
Definition: typeof.h:27
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2092
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
static const int NUM_ENTITIES
Definition: tinyxml2.cpp:128
#define TIXMLASSERT(x)
Definition: tinyxml2.h:88
bool _restrictedEntityFlag[ENTITY_RANGE]
Definition: tinyxml2.h:2090
bool _entityFlag[ENTITY_RANGE]
Definition: tinyxml2.h:2089

◆ ~XMLPrinter()

virtual tinyxml2::XMLPrinter::~XMLPrinter ( )
inlinevirtual

Definition at line 1989 of file tinyxml2.h.

1989 {}

Member Function Documentation

◆ ClearBuffer()

void tinyxml2::XMLPrinter::ClearBuffer ( )
inline

If in print to memory mode, reset the buffer to the beginning.

Definition at line 2057 of file tinyxml2.h.

2057  {
2058  _buffer.Clear();
2059  _buffer.Push(0);
2060  }
void Push(T t)
Definition: tinyxml2.h:203
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2092

◆ CloseElement()

void tinyxml2::XMLPrinter::CloseElement ( bool  compactMode = false)
virtual

If streaming, close the Element.

Definition at line 2282 of file tinyxml2.cpp.

Referenced by VisitExit().

2283 {
2284  --_depth;
2285  const char* name = _stack.Pop();
2286 
2287  if ( _elementJustOpened ) {
2288  Print( "/>" );
2289  }
2290  else {
2291  if ( _textDepth < 0 && !compactMode) {
2292  Print( "\n" );
2293  PrintSpace( _depth );
2294  }
2295  Print( "</%s>", name );
2296  }
2297 
2298  if ( _textDepth == _depth ) {
2299  _textDepth = -1;
2300  }
2301  if ( _depth == 0 && !compactMode) {
2302  Print( "\n" );
2303  }
2304  _elementJustOpened = false;
2305 }
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
DynArray< const char *, 10 > _stack
Definition: tinyxml2.h:2073
virtual void PrintSpace(int depth)
Definition: tinyxml2.cpp:2152
Definition: name.c:36

◆ CompactMode()

virtual bool tinyxml2::XMLPrinter::CompactMode ( const XMLElement )
inlineprotectedvirtual

Definition at line 2063 of file tinyxml2.h.

Referenced by VisitEnter(), and VisitExit().

2063 { return _compactMode; }

◆ CStr()

const char* tinyxml2::XMLPrinter::CStr ( ) const
inline

If in print to memory mode, return a pointer to the XML file in memory.

Definition at line 2042 of file tinyxml2.h.

2042  {
2043  return _buffer.Mem();
2044  }
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2092
const T * Mem() const
Definition: tinyxml2.h:257

◆ CStrSize()

int tinyxml2::XMLPrinter::CStrSize ( ) const
inline

If in print to memory mode, return the size of the XML file in memory. (Note the size returned includes the terminating null.)

Definition at line 2050 of file tinyxml2.h.

2050  {
2051  return _buffer.Size();
2052  }
int Size() const
Definition: tinyxml2.h:247
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2092

◆ OpenElement()

void tinyxml2::XMLPrinter::OpenElement ( const char name,
bool  compactMode = false 
)

If streaming, start writing an element. The element must be closed with CloseElement()

Definition at line 2222 of file tinyxml2.cpp.

Referenced by VisitEnter().

2223 {
2225  _stack.Push( name );
2226 
2227  if ( _textDepth < 0 && !_firstElement && !compactMode ) {
2228  Print( "\n" );
2229  }
2230  if ( !compactMode ) {
2231  PrintSpace( _depth );
2232  }
2233 
2234  Print( "<%s", name );
2235  _elementJustOpened = true;
2236  _firstElement = false;
2237  ++_depth;
2238 }
void SealElementIfJustOpened()
Definition: tinyxml2.cpp:2308
void Push(T t)
Definition: tinyxml2.h:203
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
DynArray< const char *, 10 > _stack
Definition: tinyxml2.h:2073
virtual void PrintSpace(int depth)
Definition: tinyxml2.cpp:2152
Definition: name.c:36

◆ Print()

void tinyxml2::XMLPrinter::Print ( const char format,
  ... 
)
protected

Definition at line 2130 of file tinyxml2.cpp.

Referenced by CloseElement(), OpenElement(), PrintSpace(), PrintString(), PushAttribute(), PushComment(), PushDeclaration(), PushHeader(), PushText(), PushUnknown(), and SealElementIfJustOpened().

2131 {
2132  va_list va;
2133  va_start( va, format );
2134 
2135  if ( _fp ) {
2136  vfprintf( _fp, format, va );
2137  }
2138  else {
2139  const int len = TIXML_VSCPRINTF( format, va );
2140  // Close out and re-start the va-args
2141  va_end( va );
2142  TIXMLASSERT( len >= 0 );
2143  va_start( va, format );
2144  TIXMLASSERT( _buffer.Size() > 0 && _buffer[_buffer.Size() - 1] == 0 );
2145  char* p = _buffer.PushArr( len ) - 1; // back up over the null terminator.
2146  TIXML_VSNPRINTF( p, len+1, format, va );
2147  }
2148  va_end( va );
2149 }
T * PushArr(int count)
Definition: tinyxml2.h:209
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
int Size() const
Definition: tinyxml2.h:247
#define va_end(ap)
Definition: acmsvcex.h:90
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2092
char * va_list
Definition: acmsvcex.h:78
#define TIXML_VSNPRINTF
Definition: tinyxml2.cpp:93
static int TIXML_VSCPRINTF(const char *format, va_list va)
Definition: tinyxml2.cpp:94
GLenum GLsizei len
Definition: glext.h:6722
#define TIXMLASSERT(x)
Definition: tinyxml2.h:88
#define va_start(ap, A)
Definition: acmsvcex.h:91
GLfloat GLfloat p
Definition: glext.h:8902
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)

◆ PrintSpace()

void tinyxml2::XMLPrinter::PrintSpace ( int  depth)
protectedvirtual

Prints out the space before an element. You may override to change the space and tabs used. A PrintSpace() override should call Print().

Definition at line 2152 of file tinyxml2.cpp.

Referenced by CloseElement(), OpenElement(), PushComment(), PushDeclaration(), and PushUnknown().

2153 {
2154  for( int i=0; i<depth; ++i ) {
2155  Print( " " );
2156  }
2157 }
GLenum GLclampf GLint i
Definition: glfuncs.h:14
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546

◆ PrintString()

void tinyxml2::XMLPrinter::PrintString ( const char p,
bool  restrictedEntitySet 
)
private

Definition at line 2160 of file tinyxml2.cpp.

Referenced by PushAttribute(), and PushText().

2161 {
2162  // Look for runs of bytes between entities to print.
2163  const char* q = p;
2164 
2165  if ( _processEntities ) {
2166  const bool* flag = restricted ? _restrictedEntityFlag : _entityFlag;
2167  while ( *q ) {
2168  TIXMLASSERT( p <= q );
2169  // Remember, char is sometimes signed. (How many times has that bitten me?)
2170  if ( *q > 0 && *q < ENTITY_RANGE ) {
2171  // Check for entities. If one is found, flush
2172  // the stream up until the entity, write the
2173  // entity, and keep looking.
2174  if ( flag[(unsigned char)(*q)] ) {
2175  while ( p < q ) {
2176  const size_t delta = q - p;
2177  // %.*s accepts type int as "precision"
2178  const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
2179  Print( "%.*s", toPrint, p );
2180  p += toPrint;
2181  }
2182  bool entityPatternPrinted = false;
2183  for( int i=0; i<NUM_ENTITIES; ++i ) {
2184  if ( entities[i].value == *q ) {
2185  Print( "&%s;", entities[i].pattern );
2186  entityPatternPrinted = true;
2187  break;
2188  }
2189  }
2190  if ( !entityPatternPrinted ) {
2191  // TIXMLASSERT( entityPatternPrinted ) causes gcc -Wunused-but-set-variable in release
2192  TIXMLASSERT( false );
2193  }
2194  ++p;
2195  }
2196  }
2197  ++q;
2198  TIXMLASSERT( p <= q );
2199  }
2200  }
2201  // Flush the remaining string. This will be the entire
2202  // string if an entity wasn't found.
2203  TIXMLASSERT( p <= q );
2204  if ( !_processEntities || ( p < q ) ) {
2205  Print( "%s", p );
2206  }
2207 }
Definition: get.c:139
#define INT_MAX
Definition: limits.h:40
static const Entity entities[NUM_ENTITIES]
Definition: tinyxml2.cpp:129
GLenum GLclampf GLint i
Definition: glfuncs.h:14
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean flag
Definition: glfuncs.h:72
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
static const int NUM_ENTITIES
Definition: tinyxml2.cpp:128
#define TIXMLASSERT(x)
Definition: tinyxml2.h:88
bool _restrictedEntityFlag[ENTITY_RANGE]
Definition: tinyxml2.h:2090
GLfloat GLfloat p
Definition: glext.h:8902
bool _entityFlag[ENTITY_RANGE]
Definition: tinyxml2.h:2089
GLubyte * pattern
Definition: glext.h:7787

◆ PushAttribute() [1/5]

void tinyxml2::XMLPrinter::PushAttribute ( const char name,
const char value 
)

If streaming, add an attribute to an open element.

Definition at line 2241 of file tinyxml2.cpp.

Referenced by PushAttribute(), and VisitEnter().

2242 {
2244  Print( " %s=\"", name );
2245  PrintString( value, false );
2246  Print( "\"" );
2247 }
Definition: get.c:139
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
#define TIXMLASSERT(x)
Definition: tinyxml2.h:88
void PrintString(const char *, bool restrictedEntitySet)
Definition: tinyxml2.cpp:2160
Definition: name.c:36

◆ PushAttribute() [2/5]

void tinyxml2::XMLPrinter::PushAttribute ( const char name,
int  value 
)

Definition at line 2250 of file tinyxml2.cpp.

2251 {
2252  char buf[BUF_SIZE];
2253  XMLUtil::ToStr( v, buf, BUF_SIZE );
2254  PushAttribute( name, buf );
2255 }
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
Definition: tinyxml2.cpp:2241
const GLdouble * v
Definition: gl.h:2040
Definition: name.c:36

◆ PushAttribute() [3/5]

void tinyxml2::XMLPrinter::PushAttribute ( const char name,
unsigned  value 
)

Definition at line 2258 of file tinyxml2.cpp.

2259 {
2260  char buf[BUF_SIZE];
2261  XMLUtil::ToStr( v, buf, BUF_SIZE );
2262  PushAttribute( name, buf );
2263 }
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
Definition: tinyxml2.cpp:2241
const GLdouble * v
Definition: gl.h:2040
Definition: name.c:36

◆ PushAttribute() [4/5]

void tinyxml2::XMLPrinter::PushAttribute ( const char name,
bool  value 
)

Definition at line 2266 of file tinyxml2.cpp.

2267 {
2268  char buf[BUF_SIZE];
2269  XMLUtil::ToStr( v, buf, BUF_SIZE );
2270  PushAttribute( name, buf );
2271 }
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
Definition: tinyxml2.cpp:2241
const GLdouble * v
Definition: gl.h:2040
Definition: name.c:36

◆ PushAttribute() [5/5]

void tinyxml2::XMLPrinter::PushAttribute ( const char name,
double  value 
)

Definition at line 2274 of file tinyxml2.cpp.

2275 {
2276  char buf[BUF_SIZE];
2277  XMLUtil::ToStr( v, buf, BUF_SIZE );
2278  PushAttribute( name, buf );
2279 }
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
Definition: tinyxml2.cpp:2241
const GLdouble * v
Definition: gl.h:2040
Definition: name.c:36

◆ PushComment()

void tinyxml2::XMLPrinter::PushComment ( const char comment)

Add a comment.

Definition at line 2371 of file tinyxml2.cpp.

Referenced by Visit().

2372 {
2374  if ( _textDepth < 0 && !_firstElement && !_compactMode) {
2375  Print( "\n" );
2376  PrintSpace( _depth );
2377  }
2378  _firstElement = false;
2379  Print( "<!--%s-->", comment );
2380 }
void SealElementIfJustOpened()
Definition: tinyxml2.cpp:2308
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
Definition: id3.c:18
virtual void PrintSpace(int depth)
Definition: tinyxml2.cpp:2152

◆ PushDeclaration()

void tinyxml2::XMLPrinter::PushDeclaration ( const char value)

Definition at line 2383 of file tinyxml2.cpp.

Referenced by PushHeader(), and Visit().

2384 {
2386  if ( _textDepth < 0 && !_firstElement && !_compactMode) {
2387  Print( "\n" );
2388  PrintSpace( _depth );
2389  }
2390  _firstElement = false;
2391  Print( "<?%s?>", value );
2392 }
Definition: get.c:139
void SealElementIfJustOpened()
Definition: tinyxml2.cpp:2308
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
virtual void PrintSpace(int depth)
Definition: tinyxml2.cpp:2152

◆ PushHeader()

void tinyxml2::XMLPrinter::PushHeader ( bool  writeBOM,
bool  writeDeclaration 
)

If streaming, write the BOM and declaration.

Definition at line 2210 of file tinyxml2.cpp.

Referenced by VisitEnter().

2211 {
2212  if ( writeBOM ) {
2213  static const unsigned char bom[] = { TIXML_UTF_LEAD_0, TIXML_UTF_LEAD_1, TIXML_UTF_LEAD_2, 0 };
2214  Print( "%s", bom );
2215  }
2216  if ( writeDec ) {
2217  PushDeclaration( "xml version=\"1.0\"" );
2218  }
2219 }
static const unsigned char TIXML_UTF_LEAD_0
Definition: tinyxml2.cpp:115
void PushDeclaration(const char *value)
Definition: tinyxml2.cpp:2383
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
static const unsigned char TIXML_UTF_LEAD_2
Definition: tinyxml2.cpp:117
static const unsigned char TIXML_UTF_LEAD_1
Definition: tinyxml2.cpp:116

◆ PushText() [1/6]

void tinyxml2::XMLPrinter::PushText ( const char text,
bool  cdata = false 
)

Add a text node.

Definition at line 2318 of file tinyxml2.cpp.

Referenced by PushText(), and Visit().

2319 {
2320  _textDepth = _depth-1;
2321 
2323  if ( cdata ) {
2324  Print( "<![CDATA[%s]]>", text );
2325  }
2326  else {
2327  PrintString( text, true );
2328  }
2329 }
void SealElementIfJustOpened()
Definition: tinyxml2.cpp:2308
const WCHAR * text
Definition: package.c:1827
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
void PrintString(const char *, bool restrictedEntitySet)
Definition: tinyxml2.cpp:2160

◆ PushText() [2/6]

void tinyxml2::XMLPrinter::PushText ( int  value)

Add a text node from an integer.

Definition at line 2331 of file tinyxml2.cpp.

2332 {
2333  char buf[BUF_SIZE];
2334  XMLUtil::ToStr( value, buf, BUF_SIZE );
2335  PushText( buf, false );
2336 }
Definition: get.c:139
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ PushText() [3/6]

void tinyxml2::XMLPrinter::PushText ( unsigned  value)

Add a text node from an unsigned.

Definition at line 2339 of file tinyxml2.cpp.

2340 {
2341  char buf[BUF_SIZE];
2342  XMLUtil::ToStr( value, buf, BUF_SIZE );
2343  PushText( buf, false );
2344 }
Definition: get.c:139
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ PushText() [4/6]

void tinyxml2::XMLPrinter::PushText ( bool  value)

Add a text node from a bool.

Definition at line 2347 of file tinyxml2.cpp.

2348 {
2349  char buf[BUF_SIZE];
2350  XMLUtil::ToStr( value, buf, BUF_SIZE );
2351  PushText( buf, false );
2352 }
Definition: get.c:139
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ PushText() [5/6]

void tinyxml2::XMLPrinter::PushText ( float  value)

Add a text node from a float.

Definition at line 2355 of file tinyxml2.cpp.

2356 {
2357  char buf[BUF_SIZE];
2358  XMLUtil::ToStr( value, buf, BUF_SIZE );
2359  PushText( buf, false );
2360 }
Definition: get.c:139
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ PushText() [6/6]

void tinyxml2::XMLPrinter::PushText ( double  value)

Add a text node from a double.

Definition at line 2363 of file tinyxml2.cpp.

2364 {
2365  char buf[BUF_SIZE];
2366  XMLUtil::ToStr( value, buf, BUF_SIZE );
2367  PushText( buf, false );
2368 }
Definition: get.c:139
static void ToStr(int v, char *buffer, int bufferSize)
Definition: tinyxml2.cpp:526
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ PushUnknown()

void tinyxml2::XMLPrinter::PushUnknown ( const char value)

Definition at line 2395 of file tinyxml2.cpp.

Referenced by Visit().

2396 {
2398  if ( _textDepth < 0 && !_firstElement && !_compactMode) {
2399  Print( "\n" );
2400  PrintSpace( _depth );
2401  }
2402  _firstElement = false;
2403  Print( "<!%s>", value );
2404 }
Definition: get.c:139
void SealElementIfJustOpened()
Definition: tinyxml2.cpp:2308
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130
virtual void PrintSpace(int depth)
Definition: tinyxml2.cpp:2152

◆ SealElementIfJustOpened()

void tinyxml2::XMLPrinter::SealElementIfJustOpened ( )
protected

Definition at line 2308 of file tinyxml2.cpp.

Referenced by OpenElement(), PushComment(), PushDeclaration(), PushText(), and PushUnknown().

2309 {
2310  if ( !_elementJustOpened ) {
2311  return;
2312  }
2313  _elementJustOpened = false;
2314  Print( ">" );
2315 }
void Print(const char *format,...)
Definition: tinyxml2.cpp:2130

◆ Visit() [1/4]

bool tinyxml2::XMLPrinter::Visit ( const XMLText )
virtual

Visit a text node.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2440 of file tinyxml2.cpp.

2441 {
2442  PushText( text.Value(), text.CData() );
2443  return true;
2444 }
const WCHAR * text
Definition: package.c:1827
void PushText(const char *text, bool cdata=false)
Add a text node.
Definition: tinyxml2.cpp:2318

◆ Visit() [2/4]

bool tinyxml2::XMLPrinter::Visit ( const XMLComment )
virtual

Visit a comment node.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2447 of file tinyxml2.cpp.

2448 {
2449  PushComment( comment.Value() );
2450  return true;
2451 }
void PushComment(const char *comment)
Add a comment.
Definition: tinyxml2.cpp:2371
Definition: id3.c:18

◆ Visit() [3/4]

bool tinyxml2::XMLPrinter::Visit ( const XMLDeclaration )
virtual

Visit a declaration.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2453 of file tinyxml2.cpp.

2454 {
2455  PushDeclaration( declaration.Value() );
2456  return true;
2457 }
void PushDeclaration(const char *value)
Definition: tinyxml2.cpp:2383

◆ Visit() [4/4]

bool tinyxml2::XMLPrinter::Visit ( const XMLUnknown )
virtual

Visit an unknown node.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2460 of file tinyxml2.cpp.

2461 {
2462  PushUnknown( unknown.Value() );
2463  return true;
2464 }
Definition: id3.c:18
void PushUnknown(const char *value)
Definition: tinyxml2.cpp:2395

◆ VisitEnter() [1/2]

bool tinyxml2::XMLPrinter::VisitEnter ( const XMLDocument )
virtual

Visit a document.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2407 of file tinyxml2.cpp.

2408 {
2409  _processEntities = doc.ProcessEntities();
2410  if ( doc.HasBOM() ) {
2411  PushHeader( true, false );
2412  }
2413  return true;
2414 }
void PushHeader(bool writeBOM, bool writeDeclaration)
Definition: tinyxml2.cpp:2210

◆ VisitEnter() [2/2]

bool tinyxml2::XMLPrinter::VisitEnter ( const XMLElement ,
const XMLAttribute  
)
virtual

Visit an element.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2417 of file tinyxml2.cpp.

2418 {
2419  const XMLElement* parentElem = 0;
2420  if ( element.Parent() ) {
2421  parentElem = element.Parent()->ToElement();
2422  }
2423  const bool compactMode = parentElem ? CompactMode( *parentElem ) : _compactMode;
2424  OpenElement( element.Name(), compactMode );
2425  while ( attribute ) {
2426  PushAttribute( attribute->Name(), attribute->Value() );
2427  attribute = attribute->Next();
2428  }
2429  return true;
2430 }
void OpenElement(const char *name, bool compactMode=false)
Definition: tinyxml2.cpp:2222
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
Definition: tinyxml2.cpp:2241
virtual bool CompactMode(const XMLElement &)
Definition: tinyxml2.h:2063

◆ VisitExit() [1/2]

virtual bool tinyxml2::XMLPrinter::VisitExit ( const XMLDocument )
inlinevirtual

Visit a document.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2026 of file tinyxml2.h.

2026  {
2027  return true;
2028  }

◆ VisitExit() [2/2]

bool tinyxml2::XMLPrinter::VisitExit ( const XMLElement )
virtual

Visit an element.

Reimplemented from tinyxml2::XMLVisitor.

Definition at line 2433 of file tinyxml2.cpp.

2434 {
2436  return true;
2437 }
virtual void CloseElement(bool compactMode=false)
If streaming, close the Element.
Definition: tinyxml2.cpp:2282
virtual bool CompactMode(const XMLElement &)
Definition: tinyxml2.h:2063

Member Data Documentation

◆ _buffer

DynArray< char, 20 > tinyxml2::XMLPrinter::_buffer
private

Definition at line 2092 of file tinyxml2.h.

Referenced by Print(), and XMLPrinter().

◆ _compactMode

bool tinyxml2::XMLPrinter::_compactMode
private

Definition at line 2083 of file tinyxml2.h.

Referenced by PushComment(), PushDeclaration(), PushUnknown(), and VisitEnter().

◆ _depth

int tinyxml2::XMLPrinter::_depth
private

◆ _elementJustOpened

bool tinyxml2::XMLPrinter::_elementJustOpened
protected

Definition at line 2072 of file tinyxml2.h.

Referenced by CloseElement(), OpenElement(), PushAttribute(), and SealElementIfJustOpened().

◆ _entityFlag

bool tinyxml2::XMLPrinter::_entityFlag[ENTITY_RANGE]
private

Definition at line 2089 of file tinyxml2.h.

Referenced by PrintString(), and XMLPrinter().

◆ _firstElement

bool tinyxml2::XMLPrinter::_firstElement
private

Definition at line 2078 of file tinyxml2.h.

Referenced by OpenElement(), PushComment(), PushDeclaration(), and PushUnknown().

◆ _fp

FILE* tinyxml2::XMLPrinter::_fp
private

Definition at line 2079 of file tinyxml2.h.

Referenced by Print().

◆ _processEntities

bool tinyxml2::XMLPrinter::_processEntities
private

Definition at line 2082 of file tinyxml2.h.

Referenced by PrintString(), and VisitEnter().

◆ _restrictedEntityFlag

bool tinyxml2::XMLPrinter::_restrictedEntityFlag[ENTITY_RANGE]
private

Definition at line 2090 of file tinyxml2.h.

Referenced by PrintString(), and XMLPrinter().

◆ _stack

DynArray< const char*, 10 > tinyxml2::XMLPrinter::_stack
protected

Definition at line 2073 of file tinyxml2.h.

Referenced by CloseElement(), and OpenElement().

◆ _textDepth

int tinyxml2::XMLPrinter::_textDepth
private

The documentation for this class was generated from the following files: