mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-29 17:38:16 +03:00
Update TinyXML2 to 9.0.0
This updates TinyXML2 to the major release tagged on June 6, 2021.
This commit is contained in:
111
third_party/tinyxml2/tinyxml2.cpp
vendored
111
third_party/tinyxml2/tinyxml2.cpp
vendored
@@ -103,7 +103,7 @@ distribution.
|
||||
#if defined(_WIN64)
|
||||
#define TIXML_FSEEK _fseeki64
|
||||
#define TIXML_FTELL _ftelli64
|
||||
#elif defined(__APPLE__) || (__FreeBSD__) || (__OpenBSD__)
|
||||
#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__ANDROID__)
|
||||
#define TIXML_FSEEK fseeko
|
||||
#define TIXML_FTELL ftello
|
||||
#elif defined(__unix__) && defined(__x86_64__)
|
||||
@@ -234,13 +234,13 @@ char* StrPair::ParseName( char* p )
|
||||
if ( !p || !(*p) ) {
|
||||
return 0;
|
||||
}
|
||||
if ( !XMLUtil::IsNameStartChar( *p ) ) {
|
||||
if ( !XMLUtil::IsNameStartChar( (unsigned char) *p ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* const start = p;
|
||||
++p;
|
||||
while ( *p && XMLUtil::IsNameChar( *p ) ) {
|
||||
while ( *p && XMLUtil::IsNameChar( (unsigned char) *p ) ) {
|
||||
++p;
|
||||
}
|
||||
|
||||
@@ -608,17 +608,26 @@ void XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize )
|
||||
TIXML_SNPRINTF(buffer, bufferSize, "%llu", (long long)v);
|
||||
}
|
||||
|
||||
bool XMLUtil::ToInt( const char* str, int* value )
|
||||
bool XMLUtil::ToInt(const char* str, int* value)
|
||||
{
|
||||
if ( TIXML_SSCANF( str, "%d", value ) == 1 ) {
|
||||
return true;
|
||||
if (IsPrefixHex(str)) {
|
||||
unsigned v;
|
||||
if (TIXML_SSCANF(str, "%x", &v) == 1) {
|
||||
*value = static_cast<int>(v);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (TIXML_SSCANF(str, "%d", value) == 1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool XMLUtil::ToUnsigned( const char* str, unsigned *value )
|
||||
bool XMLUtil::ToUnsigned(const char* str, unsigned* value)
|
||||
{
|
||||
if ( TIXML_SSCANF( str, "%u", value ) == 1 ) {
|
||||
if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%u", value) == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -670,18 +679,27 @@ bool XMLUtil::ToDouble( const char* str, double* value )
|
||||
|
||||
bool XMLUtil::ToInt64(const char* str, int64_t* value)
|
||||
{
|
||||
long long v = 0; // horrible syntax trick to make the compiler happy about %lld
|
||||
if (TIXML_SSCANF(str, "%lld", &v) == 1) {
|
||||
*value = static_cast<int64_t>(v);
|
||||
return true;
|
||||
}
|
||||
if (IsPrefixHex(str)) {
|
||||
unsigned long long v = 0; // horrible syntax trick to make the compiler happy about %llx
|
||||
if (TIXML_SSCANF(str, "%llx", &v) == 1) {
|
||||
*value = static_cast<int64_t>(v);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
long long v = 0; // horrible syntax trick to make the compiler happy about %lld
|
||||
if (TIXML_SSCANF(str, "%lld", &v) == 1) {
|
||||
*value = static_cast<int64_t>(v);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool XMLUtil::ToUnsigned64(const char* str, uint64_t* value) {
|
||||
unsigned long long v = 0; // horrible syntax trick to make the compiler happy about %llu
|
||||
if(TIXML_SSCANF(str, "%llu", &v) == 1) {
|
||||
if(TIXML_SSCANF(str, IsPrefixHex(str) ? "%llx" : "%llu", &v) == 1) {
|
||||
*value = (uint64_t)v;
|
||||
return true;
|
||||
}
|
||||
@@ -1637,8 +1655,18 @@ float XMLElement::FloatAttribute(const char* name, float defaultValue) const
|
||||
|
||||
const char* XMLElement::GetText() const
|
||||
{
|
||||
if ( FirstChild() && FirstChild()->ToText() ) {
|
||||
return FirstChild()->Value();
|
||||
/* skip comment node */
|
||||
const XMLNode* node = FirstChild();
|
||||
while (node) {
|
||||
if (node->ToComment()) {
|
||||
node = node->NextSibling();
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( node && node->ToText() ) {
|
||||
return node->Value();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1909,7 +1937,7 @@ char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr )
|
||||
}
|
||||
|
||||
// attribute.
|
||||
if (XMLUtil::IsNameStartChar( *p ) ) {
|
||||
if (XMLUtil::IsNameStartChar( (unsigned char) *p ) ) {
|
||||
XMLAttribute* attrib = CreateAttribute();
|
||||
TIXMLASSERT( attrib );
|
||||
attrib->_parseLineNum = _document->_parseCurLineNum;
|
||||
@@ -2427,6 +2455,13 @@ void XMLDocument::Print( XMLPrinter* streamer ) const
|
||||
}
|
||||
|
||||
|
||||
void XMLDocument::ClearError() {
|
||||
_errorID = XML_SUCCESS;
|
||||
_errorLineNum = 0;
|
||||
_errorStr.Reset();
|
||||
}
|
||||
|
||||
|
||||
void XMLDocument::SetError( XMLError error, int lineNum, const char* format, ... )
|
||||
{
|
||||
TIXMLASSERT( error >= 0 && error < XML_ERROR_COUNT );
|
||||
@@ -2659,22 +2694,33 @@ void XMLPrinter::PushHeader( bool writeBOM, bool writeDec )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void XMLPrinter::OpenElement( const char* name, bool compactMode )
|
||||
void XMLPrinter::PrepareForNewNode( bool compactMode )
|
||||
{
|
||||
SealElementIfJustOpened();
|
||||
_stack.Push( name );
|
||||
|
||||
if ( _textDepth < 0 && !_firstElement && !compactMode ) {
|
||||
if ( compactMode ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( _firstElement ) {
|
||||
PrintSpace (_depth);
|
||||
} else if ( _textDepth < 0) {
|
||||
Putc( '\n' );
|
||||
PrintSpace( _depth );
|
||||
}
|
||||
|
||||
_firstElement = false;
|
||||
}
|
||||
|
||||
void XMLPrinter::OpenElement( const char* name, bool compactMode )
|
||||
{
|
||||
PrepareForNewNode( compactMode );
|
||||
_stack.Push( name );
|
||||
|
||||
Write ( "<" );
|
||||
Write ( name );
|
||||
|
||||
_elementJustOpened = true;
|
||||
_firstElement = false;
|
||||
++_depth;
|
||||
}
|
||||
|
||||
@@ -2850,12 +2896,7 @@ void XMLPrinter::PushText( double value )
|
||||
|
||||
void XMLPrinter::PushComment( const char* comment )
|
||||
{
|
||||
SealElementIfJustOpened();
|
||||
if ( _textDepth < 0 && !_firstElement && !_compactMode) {
|
||||
Putc( '\n' );
|
||||
PrintSpace( _depth );
|
||||
}
|
||||
_firstElement = false;
|
||||
PrepareForNewNode( _compactMode );
|
||||
|
||||
Write( "<!--" );
|
||||
Write( comment );
|
||||
@@ -2865,12 +2906,7 @@ void XMLPrinter::PushComment( const char* comment )
|
||||
|
||||
void XMLPrinter::PushDeclaration( const char* value )
|
||||
{
|
||||
SealElementIfJustOpened();
|
||||
if ( _textDepth < 0 && !_firstElement && !_compactMode) {
|
||||
Putc( '\n' );
|
||||
PrintSpace( _depth );
|
||||
}
|
||||
_firstElement = false;
|
||||
PrepareForNewNode( _compactMode );
|
||||
|
||||
Write( "<?" );
|
||||
Write( value );
|
||||
@@ -2880,12 +2916,7 @@ void XMLPrinter::PushDeclaration( const char* value )
|
||||
|
||||
void XMLPrinter::PushUnknown( const char* value )
|
||||
{
|
||||
SealElementIfJustOpened();
|
||||
if ( _textDepth < 0 && !_firstElement && !_compactMode) {
|
||||
Putc( '\n' );
|
||||
PrintSpace( _depth );
|
||||
}
|
||||
_firstElement = false;
|
||||
PrepareForNewNode( _compactMode );
|
||||
|
||||
Write( "<!" );
|
||||
Write( value );
|
||||
|
||||
Reference in New Issue
Block a user