ソースを参照

CodeReview Fix: The non-const reference syntax isn't used in the codebase. Should be a pointer.

kezenator 9 年 前
コミット
4f756161d0
2 ファイル変更42 行追加42 行削除
  1. 29 29
      tinyxml2.cpp
  2. 13 13
      tinyxml2.h

+ 29 - 29
tinyxml2.cpp

@@ -189,7 +189,7 @@ void StrPair::SetStr( const char* str, int flags )
 }
 }
 
 
 
 
-char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int& curLineNum )
+char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLineNumPtr )
 {
 {
     TIXMLASSERT( p );
     TIXMLASSERT( p );
     TIXMLASSERT( endTag && *endTag );
     TIXMLASSERT( endTag && *endTag );
@@ -204,7 +204,7 @@ char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int& curLin
             Set( start, p, strFlags );
             Set( start, p, strFlags );
             return p + length;
             return p + length;
         } else if (*p == '\n') {
         } else if (*p == '\n') {
-            ++curLineNum;
+            ++(*curLineNumPtr);
         }
         }
         ++p;
         ++p;
         TIXMLASSERT( p );
         TIXMLASSERT( p );
@@ -239,7 +239,7 @@ void StrPair::CollapseWhitespace()
     TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 );
     TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 );
     // Trim leading space.
     // Trim leading space.
     int unusedLineNum(0);
     int unusedLineNum(0);
-    _start = XMLUtil::SkipWhiteSpace( _start, unusedLineNum );
+    _start = XMLUtil::SkipWhiteSpace( _start, &unusedLineNum );
 
 
     if ( *_start ) {
     if ( *_start ) {
         const char* p = _start;	// the read pointer
         const char* p = _start;	// the read pointer
@@ -247,7 +247,7 @@ void StrPair::CollapseWhitespace()
 
 
         while( *p ) {
         while( *p ) {
             if ( XMLUtil::IsWhiteSpace( *p )) {
             if ( XMLUtil::IsWhiteSpace( *p )) {
-                p = XMLUtil::SkipWhiteSpace( p, unusedLineNum );
+                p = XMLUtil::SkipWhiteSpace( p, &unusedLineNum );
                 if ( *p == 0 ) {
                 if ( *p == 0 ) {
                     break;    // don't write to q; this trims the trailing space.
                     break;    // don't write to q; this trims the trailing space.
                 }
                 }
@@ -641,7 +641,7 @@ char* XMLDocument::Identify( char* p, XMLNode** node )
     TIXMLASSERT( p );
     TIXMLASSERT( p );
     char* const start = p;
     char* const start = p;
     int const startLine = _parseCurLineNum;
     int const startLine = _parseCurLineNum;
-    p = XMLUtil::SkipWhiteSpace( p, _parseCurLineNum );
+    p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
     if( !*p ) {
     if( !*p ) {
         *node = 0;
         *node = 0;
         TIXMLASSERT( p );
         TIXMLASSERT( p );
@@ -954,7 +954,7 @@ const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const
 }
 }
 
 
 
 
-char* XMLNode::ParseDeep( char* p, StrPair* parentEnd, int& curLineNum )
+char* XMLNode::ParseDeep( char* p, StrPair* parentEnd, int* curLineNumPtr )
 {
 {
     // This is a recursive method, but thinking about it "at the current level"
     // This is a recursive method, but thinking about it "at the current level"
     // it is a pretty simple flat list:
     // it is a pretty simple flat list:
@@ -985,7 +985,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEnd, int& curLineNum )
         int nodeLineNum = node->_parseLineNum;
         int nodeLineNum = node->_parseLineNum;
 
 
         StrPair endTag;
         StrPair endTag;
-        p = node->ParseDeep( p, &endTag, curLineNum );
+        p = node->ParseDeep( p, &endTag, curLineNumPtr );
         if ( !p ) {
         if ( !p ) {
             DeleteNode( node );
             DeleteNode( node );
             if ( !_document->Error() ) {
             if ( !_document->Error() ) {
@@ -1091,11 +1091,11 @@ const XMLElement* XMLNode::ToElementWithName( const char* name ) const
 }
 }
 
 
 // --------- XMLText ---------- //
 // --------- XMLText ---------- //
-char* XMLText::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLText::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
 {
 {
     const char* start = p;
     const char* start = p;
     if ( this->CData() ) {
     if ( this->CData() ) {
-        p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+        p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
         if ( !p ) {
         if ( !p ) {
             _document->SetError( XML_ERROR_PARSING_CDATA, start, 0, _parseLineNum );
             _document->SetError( XML_ERROR_PARSING_CDATA, start, 0, _parseLineNum );
         }
         }
@@ -1107,7 +1107,7 @@ char* XMLText::ParseDeep( char* p, StrPair*, int& curLineNum )
             flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING;
             flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING;
         }
         }
 
 
-        p = _value.ParseText( p, "<", flags, curLineNum );
+        p = _value.ParseText( p, "<", flags, curLineNumPtr );
         if ( p && *p ) {
         if ( p && *p ) {
             return p-1;
             return p-1;
         }
         }
@@ -1156,11 +1156,11 @@ XMLComment::~XMLComment()
 }
 }
 
 
 
 
-char* XMLComment::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLComment::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
 {
 {
     // Comment parses as text.
     // Comment parses as text.
     const char* start = p;
     const char* start = p;
-    p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNum );
+    p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNumPtr );
     if ( p == 0 ) {
     if ( p == 0 ) {
         _document->SetError( XML_ERROR_PARSING_COMMENT, start, 0, _parseLineNum );
         _document->SetError( XML_ERROR_PARSING_COMMENT, start, 0, _parseLineNum );
     }
     }
@@ -1206,11 +1206,11 @@ XMLDeclaration::~XMLDeclaration()
 }
 }
 
 
 
 
-char* XMLDeclaration::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLDeclaration::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
 {
 {
     // Declaration parses as text.
     // Declaration parses as text.
     const char* start = p;
     const char* start = p;
-    p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+    p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
     if ( p == 0 ) {
     if ( p == 0 ) {
         _document->SetError( XML_ERROR_PARSING_DECLARATION, start, 0, _parseLineNum );
         _document->SetError( XML_ERROR_PARSING_DECLARATION, start, 0, _parseLineNum );
     }
     }
@@ -1255,12 +1255,12 @@ XMLUnknown::~XMLUnknown()
 }
 }
 
 
 
 
-char* XMLUnknown::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLUnknown::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
 {
 {
     // Unknown parses as text.
     // Unknown parses as text.
     const char* start = p;
     const char* start = p;
 
 
-    p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+    p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
     if ( !p ) {
     if ( !p ) {
         _document->SetError( XML_ERROR_PARSING_UNKNOWN, start, 0, _parseLineNum );
         _document->SetError( XML_ERROR_PARSING_UNKNOWN, start, 0, _parseLineNum );
     }
     }
@@ -1304,7 +1304,7 @@ const char* XMLAttribute::Value() const
     return _value.GetStr();
     return _value.GetStr();
 }
 }
 
 
-char* XMLAttribute::ParseDeep( char* p, bool processEntities, int& curLineNum )
+char* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr )
 {
 {
     // Parse using the name rules: bug fix, was using ParseText before
     // Parse using the name rules: bug fix, was using ParseText before
     p = _name.ParseName( p );
     p = _name.ParseName( p );
@@ -1313,13 +1313,13 @@ char* XMLAttribute::ParseDeep( char* p, bool processEntities, int& curLineNum )
     }
     }
 
 
     // Skip white space before =
     // Skip white space before =
-    p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
     if ( *p != '=' ) {
     if ( *p != '=' ) {
         return 0;
         return 0;
     }
     }
 
 
     ++p;	// move up to opening quote
     ++p;	// move up to opening quote
-    p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
     if ( *p != '\"' && *p != '\'' ) {
     if ( *p != '\"' && *p != '\'' ) {
         return 0;
         return 0;
     }
     }
@@ -1327,7 +1327,7 @@ char* XMLAttribute::ParseDeep( char* p, bool processEntities, int& curLineNum )
     char endTag[2] = { *p, 0 };
     char endTag[2] = { *p, 0 };
     ++p;	// move past opening quote
     ++p;	// move past opening quote
 
 
-    p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNum );
+    p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr );
     return p;
     return p;
 }
 }
 
 
@@ -1761,14 +1761,14 @@ void XMLElement::DeleteAttribute( const char* name )
 }
 }
 
 
 
 
-char* XMLElement::ParseAttributes( char* p, int& curLineNum )
+char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr )
 {
 {
     const char* start = p;
     const char* start = p;
     XMLAttribute* prevAttribute = 0;
     XMLAttribute* prevAttribute = 0;
 
 
     // Read the attributes.
     // Read the attributes.
     while( p ) {
     while( p ) {
-        p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+        p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
         if ( !(*p) ) {
         if ( !(*p) ) {
             _document->SetError( XML_ERROR_PARSING_ELEMENT, start, Name(), _parseLineNum );
             _document->SetError( XML_ERROR_PARSING_ELEMENT, start, Name(), _parseLineNum );
             return 0;
             return 0;
@@ -1782,7 +1782,7 @@ char* XMLElement::ParseAttributes( char* p, int& curLineNum )
 
 
             int attrLineNum = attrib->_parseLineNum;
             int attrLineNum = attrib->_parseLineNum;
 
 
-            p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNum );
+            p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr );
             if ( !p || Attribute( attrib->Name() ) ) {
             if ( !p || Attribute( attrib->Name() ) ) {
                 DeleteAttribute( attrib );
                 DeleteAttribute( attrib );
                 _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, start, p, attrLineNum );
                 _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, start, p, attrLineNum );
@@ -1842,10 +1842,10 @@ XMLAttribute* XMLElement::CreateAttribute()
 //	<ele></ele>
 //	<ele></ele>
 //	<ele>foo<b>bar</b></ele>
 //	<ele>foo<b>bar</b></ele>
 //
 //
-char* XMLElement::ParseDeep( char* p, StrPair* strPair, int& curLineNum )
+char* XMLElement::ParseDeep( char* p, StrPair* strPair, int* curLineNumPtr )
 {
 {
     // Read the element name.
     // Read the element name.
-    p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+    p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
 
 
     // The closing element is the </element> form. It is
     // The closing element is the </element> form. It is
     // parsed just like a regular element then deleted from
     // parsed just like a regular element then deleted from
@@ -1860,12 +1860,12 @@ char* XMLElement::ParseDeep( char* p, StrPair* strPair, int& curLineNum )
         return 0;
         return 0;
     }
     }
 
 
-    p = ParseAttributes( p, curLineNum );
+    p = ParseAttributes( p, curLineNumPtr );
     if ( !p || !*p || _closingType ) {
     if ( !p || !*p || _closingType ) {
         return p;
         return p;
     }
     }
 
 
-    p = XMLNode::ParseDeep( p, strPair, curLineNum );
+    p = XMLNode::ParseDeep( p, strPair, curLineNumPtr );
     return p;
     return p;
 }
 }
 
 
@@ -2289,13 +2289,13 @@ void XMLDocument::Parse()
     _parseCurLineNum = 1;
     _parseCurLineNum = 1;
     _parseLineNum = 1;
     _parseLineNum = 1;
     char* p = _charBuffer;
     char* p = _charBuffer;
-    p = XMLUtil::SkipWhiteSpace( p, _parseCurLineNum );
+    p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
     p = const_cast<char*>( XMLUtil::ReadBOM( p, &_writeBOM ) );
     p = const_cast<char*>( XMLUtil::ReadBOM( p, &_writeBOM ) );
     if ( !*p ) {
     if ( !*p ) {
         SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0, 0 );
         SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0, 0 );
         return;
         return;
     }
     }
-    ParseDeep(p, 0, _parseCurLineNum );
+    ParseDeep(p, 0, &_parseCurLineNum );
 }
 }
 
 
 XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
 XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :

+ 13 - 13
tinyxml2.h

@@ -160,7 +160,7 @@ public:
 
 
     void SetStr( const char* str, int flags=0 );
     void SetStr( const char* str, int flags=0 );
 
 
-    char* ParseText( char* in, const char* endTag, int strFlags, int& curLineNum );
+    char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );
     char* ParseName( char* in );
     char* ParseName( char* in );
 
 
     void TransferTo( StrPair* other );
     void TransferTo( StrPair* other );
@@ -530,19 +530,19 @@ enum XMLError {
 class XMLUtil
 class XMLUtil
 {
 {
 public:
 public:
-    static const char* SkipWhiteSpace( const char* p, int& curLineNum )	{
+    static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr )	{
         TIXMLASSERT( p );
         TIXMLASSERT( p );
         while( IsWhiteSpace(*p) ) {
         while( IsWhiteSpace(*p) ) {
             if (*p == '\n') {
             if (*p == '\n') {
-                ++curLineNum;
+                ++(*curLineNumPtr);
             }
             }
             ++p;
             ++p;
         }
         }
         TIXMLASSERT( p );
         TIXMLASSERT( p );
         return p;
         return p;
     }
     }
-    static char* SkipWhiteSpace( char* p, int& curLineNum )				{
-        return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNum ) );
+    static char* SkipWhiteSpace( char* p, int* curLineNumPtr )				{
+        return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
     }
     }
 
 
     // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
     // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
@@ -895,7 +895,7 @@ protected:
     XMLNode( XMLDocument* );
     XMLNode( XMLDocument* );
     virtual ~XMLNode();
     virtual ~XMLNode();
 
 
-    virtual char* ParseDeep( char*, StrPair*, int& );
+    virtual char* ParseDeep( char*, StrPair*, int* );
 
 
     XMLDocument*	_document;
     XMLDocument*	_document;
     XMLNode*		_parent;
     XMLNode*		_parent;
@@ -963,7 +963,7 @@ protected:
     XMLText( XMLDocument* doc )	: XMLNode( doc ), _isCData( false )	{}
     XMLText( XMLDocument* doc )	: XMLNode( doc ), _isCData( false )	{}
     virtual ~XMLText()												{}
     virtual ~XMLText()												{}
 
 
-    char* ParseDeep( char*, StrPair* endTag, int& curLineNum );
+    char* ParseDeep( char*, StrPair* endTag, int* curLineNumPtr );
 
 
 private:
 private:
     bool _isCData;
     bool _isCData;
@@ -994,7 +994,7 @@ protected:
     XMLComment( XMLDocument* doc );
     XMLComment( XMLDocument* doc );
     virtual ~XMLComment();
     virtual ~XMLComment();
 
 
-    char* ParseDeep( char*, StrPair* endTag, int& curLineNum);
+    char* ParseDeep( char*, StrPair* endTag, int* curLineNumPtr);
 
 
 private:
 private:
     XMLComment( const XMLComment& );	// not supported
     XMLComment( const XMLComment& );	// not supported
@@ -1033,7 +1033,7 @@ protected:
     XMLDeclaration( XMLDocument* doc );
     XMLDeclaration( XMLDocument* doc );
     virtual ~XMLDeclaration();
     virtual ~XMLDeclaration();
 
 
-    char* ParseDeep( char*, StrPair* endTag, int& curLineNum );
+    char* ParseDeep( char*, StrPair* endTag, int* curLineNumPtr );
 
 
 private:
 private:
     XMLDeclaration( const XMLDeclaration& );	// not supported
     XMLDeclaration( const XMLDeclaration& );	// not supported
@@ -1068,7 +1068,7 @@ protected:
     XMLUnknown( XMLDocument* doc );
     XMLUnknown( XMLDocument* doc );
     virtual ~XMLUnknown();
     virtual ~XMLUnknown();
 
 
-    char* ParseDeep( char*, StrPair* endTag, int& curLineNum );
+    char* ParseDeep( char*, StrPair* endTag, int* curLineNumPtr );
 
 
 private:
 private:
     XMLUnknown( const XMLUnknown& );	// not supported
     XMLUnknown( const XMLUnknown& );	// not supported
@@ -1183,7 +1183,7 @@ private:
     void operator=( const XMLAttribute& );	// not supported
     void operator=( const XMLAttribute& );	// not supported
     void SetName( const char* name );
     void SetName( const char* name );
 
 
-    char* ParseDeep( char* p, bool processEntities, int& curLineNum );
+    char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );
 
 
     mutable StrPair _name;
     mutable StrPair _name;
     mutable StrPair _value;
     mutable StrPair _value;
@@ -1559,7 +1559,7 @@ public:
     virtual bool ShallowEqual( const XMLNode* compare ) const;
     virtual bool ShallowEqual( const XMLNode* compare ) const;
 
 
 protected:
 protected:
-    char* ParseDeep( char* p, StrPair* endTag, int& curLineNum );
+    char* ParseDeep( char* p, StrPair* endTag, int* curLineNumPtr );
 
 
 private:
 private:
     XMLElement( XMLDocument* doc );
     XMLElement( XMLDocument* doc );
@@ -1572,7 +1572,7 @@ private:
     }
     }
     XMLAttribute* FindOrCreateAttribute( const char* name );
     XMLAttribute* FindOrCreateAttribute( const char* name );
     //void LinkAttribute( XMLAttribute* attrib );
     //void LinkAttribute( XMLAttribute* attrib );
-    char* ParseAttributes( char* p, int& curLineNum );
+    char* ParseAttributes( char* p, int* curLineNumPtr );
     static void DeleteAttribute( XMLAttribute* attribute );
     static void DeleteAttribute( XMLAttribute* attribute );
     XMLAttribute* CreateAttribute();
     XMLAttribute* CreateAttribute();