Alexander Steiger / tinyxml
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers utils.h Source File

utils.h

00001 
00002 // a utility function defining a very simple method to indent a line of text
00003 const char * getIndent( unsigned int numIndents )
00004 {
00005     static const char * pINDENT = "                                      + ";
00006     static const unsigned int LENGTH = strlen( pINDENT );
00007 
00008     if ( numIndents > LENGTH ) numIndents = LENGTH;
00009 
00010     return &pINDENT[ LENGTH-numIndents ];
00011 }
00012 
00013 void dump_to_stdout( TiXmlNode * pParent, unsigned int indent = 0 )
00014 {
00015     if ( !pParent ) return;
00016 
00017     TiXmlText *pText;
00018     int t = pParent->Type();
00019     printf( "%s", getIndent( indent));
00020 
00021     switch ( t )
00022     {
00023     case TiXmlNode::TINYXML_DOCUMENT:
00024         printf( "Document" );
00025         break;
00026 
00027     case TiXmlNode::TINYXML_ELEMENT:
00028         printf( "Element \"%s\"", pParent->Value() );
00029         break;
00030 
00031     case TiXmlNode::TINYXML_COMMENT:
00032         printf( "Comment: \"%s\"", pParent->Value());
00033         break;
00034 
00035     case TiXmlNode::TINYXML_UNKNOWN:
00036         printf( "Unknown" );
00037         break;
00038 
00039     case TiXmlNode::TINYXML_TEXT:
00040         pText = pParent->ToText();
00041         printf( "Text: [%s]", pText->Value() );
00042         break;
00043 
00044     case TiXmlNode::TINYXML_DECLARATION:
00045         printf( "Declaration" );
00046         break;
00047     default:
00048         break;
00049     }
00050     printf( "\n" );
00051 
00052     TiXmlNode * pChild;
00053 
00054     for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) 
00055     {
00056         dump_to_stdout( pChild, indent+2 );
00057     }
00058 }