osgEarth 2.1.1
Public Member Functions | Private Member Functions | Private Attributes | Friends

TiXmlAttribute Class Reference

#include <tinyxml.h>

Inheritance diagram for TiXmlAttribute:
Collaboration diagram for TiXmlAttribute:

List of all members.

Public Member Functions

 TiXmlAttribute ()
 Construct an empty attribute.
 TiXmlAttribute (const char *_name, const char *_value)
 Construct an attribute with a name and value.
const char * Name () const
 Return the name of this attribute.
const char * Value () const
 Return the value of this attribute.
int IntValue () const
 Return the value of this attribute, converted to an integer.
double DoubleValue () const
 Return the value of this attribute, converted to a double.
const TIXML_STRING & NameTStr () const
int QueryIntValue (int *_value) const
int QueryDoubleValue (double *_value) const
 QueryDoubleValue examines the value string. See QueryIntValue().
void SetName (const char *_name)
 Set the name of this attribute.
void SetValue (const char *_value)
 Set the value.
void SetIntValue (int _value)
 Set the value from an integer.
void SetDoubleValue (double _value)
 Set the value from a double.
const TiXmlAttributeNext () const
 Get the next sibling attribute in the DOM. Returns null at end.
TiXmlAttributeNext ()
const TiXmlAttributePrevious () const
 Get the previous sibling attribute in the DOM. Returns null at beginning.
TiXmlAttributePrevious ()
bool operator== (const TiXmlAttribute &rhs) const
bool operator< (const TiXmlAttribute &rhs) const
bool operator> (const TiXmlAttribute &rhs) const
virtual const char * Parse (const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
virtual void Print (FILE *cfile, int depth) const
void Print (FILE *cfile, int depth, TIXML_STRING *str) const
void SetDocument (TiXmlDocument *doc)

Private Member Functions

 TiXmlAttribute (const TiXmlAttribute &)
void operator= (const TiXmlAttribute &base)

Private Attributes

TiXmlDocumentdocument
TIXML_STRING name
TIXML_STRING value
TiXmlAttributeprev
TiXmlAttributenext

Friends

class TiXmlAttributeSet

Detailed Description

An attribute is a name-value pair. Elements have an arbitrary number of attributes, each with a unique name.

Note:
The attributes are not TiXmlNodes, since they are not part of the tinyXML document object model. There are other suggested ways to look at this problem.

Definition at line 779 of file tinyxml.h.


Constructor & Destructor Documentation

TiXmlAttribute::TiXmlAttribute ( ) [inline]

Construct an empty attribute.

Definition at line 785 of file tinyxml.h.

                         : TiXmlBase()
        {
                document = 0;
                prev = next = 0;
        }
TiXmlAttribute::TiXmlAttribute ( const char *  _name,
const char *  _value 
) [inline]

Construct an attribute with a name and value.

Definition at line 803 of file tinyxml.h.

        {
                name = _name;
                value = _value;
                document = 0;
                prev = next = 0;
        }
TiXmlAttribute::TiXmlAttribute ( const TiXmlAttribute ) [private]

Member Function Documentation

double TiXmlAttribute::DoubleValue ( ) const

Return the value of this attribute, converted to a double.

Definition at line 1232 of file tinyxml.cpp.

{
        return atof (value.c_str ());
}
int TiXmlAttribute::IntValue ( ) const

Return the value of this attribute, converted to an integer.

Definition at line 1227 of file tinyxml.cpp.

{
        return atoi (value.c_str ());
}
const char* TiXmlAttribute::Name ( ) const [inline]

Return the name of this attribute.

Definition at line 811 of file tinyxml.h.

Here is the caller graph for this function:

const TIXML_STRING& TiXmlAttribute::NameTStr ( ) const [inline]

Definition at line 820 of file tinyxml.h.

{ return name; }

Here is the caller graph for this function:

const TiXmlAttribute * TiXmlAttribute::Next ( ) const

Get the next sibling attribute in the DOM. Returns null at end.

Definition at line 1125 of file tinyxml.cpp.

{
        // We are using knowledge of the sentinel. The sentinel
        // have a value or name.
        if ( next->value.empty() && next->name.empty() )
                return 0;
        return next;
}

Here is the caller graph for this function:

TiXmlAttribute* TiXmlAttribute::Next ( ) [inline]

Definition at line 850 of file tinyxml.h.

                               {
                return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); 
        }
bool TiXmlAttribute::operator< ( const TiXmlAttribute rhs) const [inline]

Definition at line 861 of file tinyxml.h.

{ return name < rhs.name; }
void TiXmlAttribute::operator= ( const TiXmlAttribute base) [private]
bool TiXmlAttribute::operator== ( const TiXmlAttribute rhs) const [inline]

Definition at line 860 of file tinyxml.h.

{ return rhs.name == name; }
bool TiXmlAttribute::operator> ( const TiXmlAttribute rhs) const [inline]

Definition at line 862 of file tinyxml.h.

{ return name > rhs.name; }
const char * TiXmlAttribute::Parse ( const char *  p,
TiXmlParsingData data,
TiXmlEncoding  encoding 
) [virtual]

Implements TiXmlBase.

Definition at line 1390 of file tinyxmlparser.cpp.

{
        p = SkipWhiteSpace( p, encoding );
        if ( !p || !*p ) return 0;

        if ( data )
        {
                data->Stamp( p, encoding );
                location = data->Cursor();
        }
        // Read the name, the '=' and the value.
        const char* pErr = p;
        p = ReadName( p, &name, encoding );
        if ( !p || !*p )
        {
                if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
                return 0;
        }
        p = SkipWhiteSpace( p, encoding );
        if ( !p || !*p || *p != '=' )
        {
                if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
                return 0;
        }

        ++p;    // skip '='
        p = SkipWhiteSpace( p, encoding );
        if ( !p || !*p )
        {
                if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
                return 0;
        }
        
        const char* end;
        const char SINGLE_QUOTE = '\'';
        const char DOUBLE_QUOTE = '\"';

        if ( *p == SINGLE_QUOTE )
        {
                ++p;
                end = "\'";             // single quote in string
                p = ReadText( p, &value, false, end, false, encoding );
        }
        else if ( *p == DOUBLE_QUOTE )
        {
                ++p;
                end = "\"";             // double quote in string
                p = ReadText( p, &value, false, end, false, encoding );
        }
        else
        {
                // All attribute values should be in single or double quotes.
                // But this is such a common error that the parser will try
                // its best, even without them.
                value = "";
                while (    p && *p                                                                                      // existence
                                && !IsWhiteSpace( *p )                                                          // whitespace
                                && *p != '/' && *p != '>' )                                                     // tag end
                {
                        if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) {
                                // [ 1451649 ] Attribute values with trailing quotes not handled correctly
                                // We did not have an opening quote but seem to have a 
                                // closing one. Give up and throw an error.
                                if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
                                return 0;
                        }
                        value += *p;
                        ++p;
                }
        }
        return p;
}

Here is the call graph for this function:

Here is the caller graph for this function:

TiXmlAttribute* TiXmlAttribute::Previous ( ) [inline]

Definition at line 856 of file tinyxml.h.

                                   {
                return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); 
        }
const TiXmlAttribute * TiXmlAttribute::Previous ( ) const

Get the previous sibling attribute in the DOM. Returns null at beginning.

Definition at line 1145 of file tinyxml.cpp.

{
        // We are using knowledge of the sentinel. The sentinel
        // have a value or name.
        if ( prev->value.empty() && prev->name.empty() )
                return 0;
        return prev;
}
void TiXmlAttribute::Print ( FILE *  cfile,
int  depth,
TIXML_STRING *  str 
) const

Definition at line 1165 of file tinyxml.cpp.

{
        TIXML_STRING n, v;

        EncodeString( name, &n );
        EncodeString( value, &v );

        if (value.find ('\"') == TIXML_STRING::npos) {
                if ( cfile ) {
                fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() );
                }
                if ( str ) {
                        (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\"";
                }
        }
        else {
                if ( cfile ) {
                fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() );
                }
                if ( str ) {
                        (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'";
                }
        }
}

Here is the call graph for this function:

virtual void TiXmlAttribute::Print ( FILE *  cfile,
int  depth 
) const [inline, virtual]

All TinyXml classes can print themselves to a filestream or the string class (TiXmlString in non-STL mode, std::string in STL mode.) Either or both cfile and str can be null.

This is a formatted print, and will insert tabs and newlines.

(For an unformatted stream, use the << operator.)

Implements TiXmlBase.

Definition at line 870 of file tinyxml.h.

                                                           {
                Print( cfile, depth, 0 );
        }

Here is the caller graph for this function:

int TiXmlAttribute::QueryDoubleValue ( double *  _value) const

QueryDoubleValue examines the value string. See QueryIntValue().

Definition at line 1198 of file tinyxml.cpp.

{
        if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 )
                return TIXML_SUCCESS;
        return TIXML_WRONG_TYPE;
}

Here is the caller graph for this function:

int TiXmlAttribute::QueryIntValue ( int *  _value) const

QueryIntValue examines the value string. It is an alternative to the IntValue() method with richer error checking. If the value is an integer, it is stored in 'value' and the call returns TIXML_SUCCESS. If it is not an integer, it returns TIXML_WRONG_TYPE.

A specialized but useful call. Note that for success it returns 0, which is the opposite of almost all other TinyXml calls.

Definition at line 1191 of file tinyxml.cpp.

{
        if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 )
                return TIXML_SUCCESS;
        return TIXML_WRONG_TYPE;
}

Here is the caller graph for this function:

void TiXmlAttribute::SetDocument ( TiXmlDocument doc) [inline]

Definition at line 877 of file tinyxml.h.

{ document = doc; }

Here is the caller graph for this function:

void TiXmlAttribute::SetDoubleValue ( double  _value)

Set the value from a double.

Definition at line 1216 of file tinyxml.cpp.

{
        char buf [256];
        #if defined(TIXML_SNPRINTF)             
                TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value);
        #else
                sprintf (buf, "%g", _value);
        #endif
        SetValue (buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TiXmlAttribute::SetIntValue ( int  _value)

Set the value from an integer.

Definition at line 1205 of file tinyxml.cpp.

{
        char buf [64];
        #if defined(TIXML_SNPRINTF)             
                TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value);
        #else
                sprintf (buf, "%d", _value);
        #endif
        SetValue (buf);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TiXmlAttribute::SetName ( const char *  _name) [inline]

Set the name of this attribute.

Definition at line 835 of file tinyxml.h.

Here is the caller graph for this function:

void TiXmlAttribute::SetValue ( const char *  _value) [inline]

Set the value.

Definition at line 836 of file tinyxml.h.

Here is the caller graph for this function:

const char* TiXmlAttribute::Value ( ) const [inline]

Return the value of this attribute.

Definition at line 812 of file tinyxml.h.

Here is the caller graph for this function:


Friends And Related Function Documentation

friend class TiXmlAttributeSet [friend]

Definition at line 781 of file tinyxml.h.


Member Data Documentation

Definition at line 883 of file tinyxml.h.

TIXML_STRING TiXmlAttribute::name [private]

Definition at line 884 of file tinyxml.h.

Definition at line 887 of file tinyxml.h.

Definition at line 886 of file tinyxml.h.

TIXML_STRING TiXmlAttribute::value [private]

Definition at line 885 of file tinyxml.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines