Reuse "is element with name" check
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 7df8443..e82482e 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -897,11 +897,9 @@
const XMLElement* XMLNode::FirstChildElement( const char* name ) const
{
for( const XMLNode* node = _firstChild; node; node = node->_next ) {
- const XMLElement* element = node->ToElement();
+ const XMLElement* element = node->ToElementWithName( name );
if ( element ) {
- if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) {
- return element;
- }
+ return element;
}
}
return 0;
@@ -911,11 +909,9 @@
const XMLElement* XMLNode::LastChildElement( const char* name ) const
{
for( const XMLNode* node = _lastChild; node; node = node->_prev ) {
- const XMLElement* element = node->ToElement();
+ const XMLElement* element = node->ToElementWithName( name );
if ( element ) {
- if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) {
- return element;
- }
+ return element;
}
}
return 0;
@@ -925,9 +921,8 @@
const XMLElement* XMLNode::NextSiblingElement( const char* name ) const
{
for( const XMLNode* node = _next; node; node = node->_next ) {
- const XMLElement* element = node->ToElement();
- if ( element
- && (!name || XMLUtil::StringEqual( name, element->Name() ))) {
+ const XMLElement* element = node->ToElementWithName( name );
+ if ( element ) {
return element;
}
}
@@ -938,9 +933,8 @@
const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const
{
for( const XMLNode* node = _prev; node; node = node->_prev ) {
- const XMLElement* element = node->ToElement();
- if ( element
- && (!name || XMLUtil::StringEqual( name, element->Name() ))) {
+ const XMLElement* element = node->ToElementWithName( name );
+ if ( element ) {
return element;
}
}
@@ -1056,6 +1050,21 @@
insertThis->_memPool->SetTracked();
}
+const XMLElement* XMLNode::ToElementWithName( const char* name ) const
+{
+ const XMLElement* element = this->ToElement();
+ if ( element == 0 ) {
+ return 0;
+ }
+ if ( name == 0 ) {
+ return element;
+ }
+ if ( XMLUtil::StringEqual( element->Name(), name ) ) {
+ return element;
+ }
+ return 0;
+}
+
// --------- XMLText ---------- //
char* XMLText::ParseDeep( char* p, StrPair* )
{