diff -Naur mingw-cross-env-orig/src/tinyxml.mk mingw-cross-env/src/tinyxml.mk --- mingw-cross-env-orig/src/tinyxml.mk 1970-01-01 01:00:00.000000000 +0100 +++ mingw-cross-env/src/tinyxml.mk 2010-07-24 13:27:48.000000000 +0200 @@ -0,0 +1,39 @@ +# This file is part of mingw-cross-env. +# See doc/index.html for further information. + +# tinyxml +PKG := tinyxml +$(PKG)_IGNORE := +$(PKG)_VERSION := 2_6_1 +$(PKG)_CHECKSUM := 2ff9c177a6c0bef10cbd27700b71826801c12987 +$(PKG)_SUBDIR := tinyxml +$(PKG)_FILE := tinyxml_$($(PKG)_VERSION).tar.gz +$(PKG)_WEBSITE := http://sourceforge.net/projects/tinyxml/ +$(PKG)_URL := http://$(SOURCEFORGE_MIRROR)/project/tinyxml/tinyxml/$(subst _,.,$($(PKG)_VERSION))/$($(PKG)_FILE) +$(PKG)_DEPS := gcc + +define $(PKG)_UPDATE + $(call SOURCEFORGE_FILES,http://sourceforge.net/projects/tinyxml/files/tinyxml/) | \ + $(SED) -n 's,.*tinyxml_\([0-9][^>]*\)\.tar.*,\1,p' | \ + tail -1 +endef + +define $(PKG)_BUILD + cd '$(1)' && \ + $(TARGET)-g++ -c -O3 -Wall -Wno-unknown-pragmas -Wno-format -D TIXML_USE_STL -o tinyxml.o tinyxml.cpp && \ + $(TARGET)-g++ -c -O3 -Wall -Wno-unknown-pragmas -Wno-format -D TIXML_USE_STL -o tinyxmlparser.o tinyxmlparser.cpp && \ + $(TARGET)-g++ -c -O3 -Wall -Wno-unknown-pragmas -Wno-format -D TIXML_USE_STL -o tinyxmlerror.o tinyxmlerror.cpp && \ + $(TARGET)-g++ -c -O3 -Wall -Wno-unknown-pragmas -Wno-format -D TIXML_USE_STL -o tinystr.o tinystr.cpp && \ + $(TARGET)-g++ -c -O3 -Wall -Wno-unknown-pragmas -Wno-format -D TIXML_USE_STL -o tinyxmlerror.o tinyxmlerror.cpp && \ + $(TARGET)-ar cr libtinyxml.a tinystr.o tinyxmlerror.o tinyxml.o tinyxmlparser.o + $(TARGET)-ranlib '$(1)/libtinyxml.a' + $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib' + $(INSTALL) -m644 '$(1)/libtinyxml.a' '$(PREFIX)/$(TARGET)/lib/libtinyxml.a' + $(INSTALL) -d '$(PREFIX)/$(TARGET)/include' + $(INSTALL) -m644 '$(1)/tinyxml.h' '$(1)/tinystr.h' '$(PREFIX)/$(TARGET)/include/' + + '$(TARGET)-g++' \ + -W -Wall -D TIXML_USE_STL -Werror -ansi -pedantic \ + '$(2).cpp' -o '$(PREFIX)/$(TARGET)/bin/test-tinyxml.exe' \ + -I'$(PREFIX)/$(TARGET)/include/' -ltinyxml +endef diff -Naur mingw-cross-env-orig/src/tinyxml-test.cpp mingw-cross-env/src/tinyxml-test.cpp --- mingw-cross-env-orig/src/tinyxml-test.cpp 1970-01-01 01:00:00.000000000 +0100 +++ mingw-cross-env/src/tinyxml-test.cpp 2010-07-24 13:33:26.000000000 +0200 @@ -0,0 +1,128 @@ +/* This file is part of mingw-cross-env. */ +/* See doc/index.html for further information. */ + +#include +#include + +using namespace std; + +// ---------------------------------------------------------------------- +// STDOUT dump and indenting utility functions +// ---------------------------------------------------------------------- +const unsigned int NUM_INDENTS_PER_SPACE=2; + +const char * getIndent( unsigned int numIndents ) +{ + static const char * pINDENT=" + "; + static const unsigned int LENGTH=strlen( pINDENT ); + unsigned int n=numIndents*NUM_INDENTS_PER_SPACE; + if ( n > LENGTH ) n = LENGTH; + + return &pINDENT[ LENGTH-n ]; +} + +// same as getIndent but no "+" at the end +const char * getIndentAlt( unsigned int numIndents ) +{ + static const char * pINDENT=" "; + static const unsigned int LENGTH=strlen( pINDENT ); + unsigned int n=numIndents*NUM_INDENTS_PER_SPACE; + if ( n > LENGTH ) n = LENGTH; + + return &pINDENT[ LENGTH-n ]; +} + +int dump_attribs_to_stdout(TiXmlElement* pElement, unsigned int indent) +{ + if ( !pElement ) return 0; + + TiXmlAttribute* pAttrib=pElement->FirstAttribute(); + int i=0; + int ival; + double dval; + const char* pIndent=getIndent(indent); + printf("\n"); + while (pAttrib) + { + printf( "%s%s: value=[%s]", pIndent, pAttrib->Name(), pAttrib->Value()); + + if (pAttrib->QueryIntValue(&ival)==TIXML_SUCCESS) printf( " int=%d", ival); + if (pAttrib->QueryDoubleValue(&dval)==TIXML_SUCCESS) printf( " d=%1.1f", dval); + printf( "\n" ); + i++; + pAttrib=pAttrib->Next(); + } + return i; +} + +void dump_to_stdout(TiXmlNode* pParent, unsigned int indent = 0) +{ + if (!pParent) + return; + + TiXmlNode* pChild; + TiXmlText* pText; + int t = pParent->Type(); + printf("%s", getIndent(indent)); + int num; + + switch (t) { + case TiXmlNode::TINYXML_DOCUMENT: + printf("Document"); + break; + + case TiXmlNode::TINYXML_ELEMENT: + printf("Element [%s]", pParent->Value()); + num=dump_attribs_to_stdout(pParent->ToElement(), indent+1); + switch(num) { + case 0: printf(" (No attributes)"); break; + case 1: printf("%s1 attribute", getIndentAlt(indent)); break; + default: printf("%s%d attributes", getIndentAlt(indent), num); break; + } + break; + + case TiXmlNode::TINYXML_COMMENT: + printf("Comment: [%s]", pParent->Value()); + break; + + case TiXmlNode::TINYXML_UNKNOWN: + printf("Unknown" ); + break; + + case TiXmlNode::TINYXML_TEXT: + pText = pParent->ToText(); + printf("Text: [%s]", pText->Value() ); + break; + + case TiXmlNode::TINYXML_DECLARATION: + printf("Declaration" ); + break; + default: + break; + } + printf("\n"); + for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) + { + dump_to_stdout( pChild, indent+1 ); + } +} +//============================================================================= +int main(int argc, char *argv[]) +{ + if (argc <= 1) { + cout << "Usage: tinyxml-test " << endl; + exit(1); + } + + string fpn(argv[1]); + TiXmlDocument doc(fpn); + if (!doc.LoadFile()) { + cerr << "failed to load " << fpn << endl; + exit(1); + } + + dump_to_stdout(&doc); + + return 0; +} +//=============================================================================