Merge remote-tracking branch 'origin/master'
This commit is contained in:
74
tinyxml2.cpp
74
tinyxml2.cpp
@@ -422,16 +422,19 @@ void XMLUtil::ToStr( bool v, char* buffer, int bufferSize )
|
||||
TIXML_SNPRINTF( buffer, bufferSize, "%d", v ? 1 : 0 );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
ToStr() of a number is a very tricky topic.
|
||||
https://github.com/leethomason/tinyxml2/issues/106
|
||||
*/
|
||||
void XMLUtil::ToStr( float v, char* buffer, int bufferSize )
|
||||
{
|
||||
TIXML_SNPRINTF( buffer, bufferSize, "%f", v );
|
||||
TIXML_SNPRINTF( buffer, bufferSize, "%.8g", v );
|
||||
}
|
||||
|
||||
|
||||
void XMLUtil::ToStr( double v, char* buffer, int bufferSize )
|
||||
{
|
||||
TIXML_SNPRINTF( buffer, bufferSize, "%f", v );
|
||||
TIXML_SNPRINTF( buffer, bufferSize, "%.17g", v );
|
||||
}
|
||||
|
||||
|
||||
@@ -497,12 +500,7 @@ char* XMLDocument::Identify( char* p, XMLNode** node )
|
||||
}
|
||||
|
||||
// What is this thing?
|
||||
// - Elements start with a letter or underscore, but xml is reserved.
|
||||
// - Comments: <!--
|
||||
// - Declaration: <?
|
||||
// - Everything else is unknown to tinyxml.
|
||||
//
|
||||
|
||||
// These strings define the matching patters:
|
||||
static const char* xmlHeader = { "<?" };
|
||||
static const char* commentHeader = { "<!--" };
|
||||
static const char* dtdHeader = { "<!" };
|
||||
@@ -1262,6 +1260,57 @@ const char* XMLElement::GetText() const
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( const char* inText )
|
||||
{
|
||||
if ( FirstChild() && FirstChild()->ToText() )
|
||||
FirstChild()->SetValue( inText );
|
||||
else {
|
||||
XMLText* theText = GetDocument()->NewText( inText );
|
||||
InsertFirstChild( theText );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( int v )
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
XMLUtil::ToStr( v, buf, BUF_SIZE );
|
||||
SetText( buf );
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( unsigned v )
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
XMLUtil::ToStr( v, buf, BUF_SIZE );
|
||||
SetText( buf );
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( bool v )
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
XMLUtil::ToStr( v, buf, BUF_SIZE );
|
||||
SetText( buf );
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( float v )
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
XMLUtil::ToStr( v, buf, BUF_SIZE );
|
||||
SetText( buf );
|
||||
}
|
||||
|
||||
|
||||
void XMLElement::SetText( double v )
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
XMLUtil::ToStr( v, buf, BUF_SIZE );
|
||||
SetText( buf );
|
||||
}
|
||||
|
||||
|
||||
XMLError XMLElement::QueryIntText( int* ival ) const
|
||||
{
|
||||
if ( FirstChild() && FirstChild()->ToText() ) {
|
||||
@@ -1639,6 +1688,13 @@ XMLError XMLDocument::LoadFile( FILE* fp )
|
||||
{
|
||||
Clear();
|
||||
|
||||
fseek( fp, 0, SEEK_SET );
|
||||
fgetc( fp );
|
||||
if ( ferror( fp ) != 0 ) {
|
||||
SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
|
||||
return _errorID;
|
||||
}
|
||||
|
||||
fseek( fp, 0, SEEK_END );
|
||||
size_t size = ftell( fp );
|
||||
fseek( fp, 0, SEEK_SET );
|
||||
|
||||
Reference in New Issue
Block a user