test cases. Working out attribute interface.
diff --git a/tinyxml2.h b/tinyxml2.h
index 67e6d2d..0d5a591 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -564,10 +564,12 @@
private:
enum { BUF_SIZE = 200 };
+
XMLAttribute( XMLElement* element ) : next( 0 ) {}
virtual ~XMLAttribute() {}
XMLAttribute( const XMLAttribute& ); // not supported
void operator=( const XMLAttribute& ); // not supported
+ void SetName( const char* name );
char* ParseDeep( char* p );
@@ -592,6 +594,12 @@
const char* Attribute( const char* name ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return 0; return a->Value(); }
+ int IntAttribute( const char* name ) const { int i=0; QueryIntAttribute( name, &i ); return i; }
+ unsigned UnsignedAttribute( const char* name ) const{ unsigned i=0; QueryUnsignedAttribute( name, &i ); return i; }
+ bool BoolAttribute( const char* name ) const { bool b=false; QueryBoolAttribute( name, &b ); return b; }
+ double DoubleAttribute( const char* name ) const { double d=0; QueryDoubleAttribute( name, &d ); return d; }
+ float FloatAttribute( const char* name ) const { float f=0; QueryFloatAttribute( name, &f ); return f; }
+
int QueryIntAttribute( const char* name, int* value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryIntAttribute( value ); }
int QueryUnsignedAttribute( const char* name, unsigned int* value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryUnsignedAttribute( value ); }
int QueryBoolAttribute( const char* name, bool* value ) const { const XMLAttribute* a = FindAttribute( name ); if ( !a ) return NO_ATTRIBUTE; return a->QueryBoolAttribute( value ); }
@@ -623,11 +631,11 @@
XMLAttribute* FindAttribute( const char* name );
XMLAttribute* FindOrCreateAttribute( const char* name );
+ void LinkAttribute( XMLAttribute* attrib );
char* ParseAttributes( char* p, bool *closedElement );
bool closing;
XMLAttribute* rootAttribute;
- XMLAttribute* lastAttribute; // fixme: remove
};