CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
TiXmlAttribute Class Reference

#include <tinyxml.h>

Inheritance diagram for TiXmlAttribute:
TiXmlBase

Public Member Functions

double DoubleValue () const
 Return the value of this attribute, converted to a double. More...
 
int IntValue () const
 Return the value of this attribute, converted to an integer. More...
 
const char * Name () const
 Return the name of this attribute. More...
 
const std::string & NameTStr () const
 
const TiXmlAttributeNext () const
 Get the next sibling attribute in the DOM. Returns null at end. More...
 
TiXmlAttributeNext ()
 
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)
 
const TiXmlAttributePrevious () const
 Get the previous sibling attribute in the DOM. Returns null at beginning. More...
 
TiXmlAttributePrevious ()
 
virtual void Print (FILE *cfile, int depth) const
 
void Print (FILE *cfile, int depth, std::string *str) const
 
int QueryDoubleValue (double *_value) const
 QueryDoubleValue examines the value string. See QueryIntValue(). More...
 
int QueryIntValue (int *_value) const
 
void SetDocument (TiXmlDocument *doc)
 
void SetDoubleValue (double _value)
 Set the value from a double. More...
 
void SetIntValue (int _value)
 Set the value from an integer. More...
 
void SetName (const char *_name)
 Set the name of this attribute. More...
 
void SetName (const std::string &_name)
 STL std::string form. More...
 
void SetValue (const char *_value)
 Set the value. More...
 
void SetValue (const std::string &_value)
 STL std::string form. More...
 
 TiXmlAttribute ()
 Construct an empty attribute. More...
 
 TiXmlAttribute (const std::string &_name, const std::string &_value)
 std::string constructor. More...
 
 TiXmlAttribute (const char *_name, const char *_value)
 Construct an attribute with a name and value. More...
 
const char * Value () const
 Return the value of this attribute. More...
 
const std::string & ValueStr () const
 Return the value of this attribute. More...
 
- Public Member Functions inherited from TiXmlBase
int Column () const
 See Row() More...
 
void * GetUserData ()
 Get a pointer to arbitrary user data. More...
 
const void * GetUserData () const
 Get a pointer to arbitrary user data. More...
 
int Row () const
 
void SetUserData (void *user)
 Set a pointer to arbitrary user data. More...
 
 TiXmlBase ()
 
virtual ~TiXmlBase ()
 

Private Member Functions

TiXmlAttributeoperator= (const TiXmlAttribute &base)
 
 TiXmlAttribute (const TiXmlAttribute &)
 

Private Attributes

TiXmlDocumentdocument
 
std::string name
 
TiXmlAttributenext
 
TiXmlAttributeprev
 
std::string value
 

Friends

class TiXmlAttributeSet
 

Additional Inherited Members

- Public Types inherited from TiXmlBase
enum  {
  TIXML_NO_ERROR = 0, TIXML_ERROR, TIXML_ERROR_OPENING_FILE, TIXML_ERROR_OUT_OF_MEMORY,
  TIXML_ERROR_PARSING_ELEMENT, TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, TIXML_ERROR_READING_ELEMENT_VALUE, TIXML_ERROR_READING_ATTRIBUTES,
  TIXML_ERROR_PARSING_EMPTY, TIXML_ERROR_READING_END_TAG, TIXML_ERROR_PARSING_UNKNOWN, TIXML_ERROR_PARSING_COMMENT,
  TIXML_ERROR_PARSING_DECLARATION, TIXML_ERROR_DOCUMENT_EMPTY, TIXML_ERROR_EMBEDDED_NULL, TIXML_ERROR_PARSING_CDATA,
  TIXML_ERROR_DOCUMENT_TOP_ONLY, TIXML_ERROR_STRING_COUNT
}
 
- Static Public Member Functions inherited from TiXmlBase
static void EncodeString (const std::string &str, std::string *out)
 
static bool IsWhiteSpaceCondensed ()
 Return the current white space setting. More...
 
static void SetCondenseWhiteSpace (bool condense)
 
- Static Public Attributes inherited from TiXmlBase
static const int utf8ByteTable [256]
 
- Static Protected Member Functions inherited from TiXmlBase
static void ConvertUTF32ToUTF8 (unsigned long input, char *output, int *length)
 
static const char * GetChar (const char *p, char *_value, int *length, TiXmlEncoding encoding)
 
static const char * GetEntity (const char *in, char *value, int *length, TiXmlEncoding encoding)
 
static int IsAlpha (unsigned char anyByte, TiXmlEncoding encoding)
 
static int IsAlphaNum (unsigned char anyByte, TiXmlEncoding encoding)
 
static bool IsWhiteSpace (char c)
 
static bool IsWhiteSpace (int c)
 
static const char * ReadName (const char *p, std::string *name, TiXmlEncoding encoding)
 
static const char * ReadText (const char *in, std::string *text, bool ignoreWhiteSpace, const char *endTag, bool ignoreCase, TiXmlEncoding encoding)
 
static const char * SkipWhiteSpace (const char *, TiXmlEncoding encoding)
 
static bool StreamTo (std::istream *in, int character, std::string *tag)
 
static bool StreamWhiteSpace (std::istream *in, std::string *tag)
 
static bool StringEqual (const char *p, const char *endTag, bool ignoreCase, TiXmlEncoding encoding)
 
static int ToLower (int v, TiXmlEncoding encoding)
 
- Protected Attributes inherited from TiXmlBase
TiXmlCursor location
 
void * userData
 Field containing a generic user pointer. More...
 
- Static Protected Attributes inherited from TiXmlBase
static const char * errorString [TIXML_ERROR_STRING_COUNT]
 

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 783 of file tinyxml.h.

Constructor & Destructor Documentation

TiXmlAttribute::TiXmlAttribute ( )
inline

Construct an empty attribute.

Definition at line 789 of file tinyxml.h.

References document, next, and prev.

789  : TiXmlBase()
790  {
791  document = 0;
792  prev = next = 0;
793  }
TiXmlDocument * document
Definition: tinyxml.h:887
TiXmlAttribute * prev
Definition: tinyxml.h:890
TiXmlAttribute * next
Definition: tinyxml.h:891
TiXmlBase()
Definition: tinyxml.h:205
TiXmlAttribute::TiXmlAttribute ( const std::string &  _name,
const std::string &  _value 
)
inline

std::string constructor.

Definition at line 797 of file tinyxml.h.

798  {
799  name = _name;
800  value = _value;
801  document = 0;
802  prev = next = 0;
803  }
TiXmlDocument * document
Definition: tinyxml.h:887
TiXmlAttribute * prev
Definition: tinyxml.h:890
TiXmlAttribute * next
Definition: tinyxml.h:891
std::string value
Definition: tinyxml.h:889
std::string name
Definition: tinyxml.h:888
TiXmlAttribute::TiXmlAttribute ( const char *  _name,
const char *  _value 
)
inline

Construct an attribute with a name and value.

Definition at line 807 of file tinyxml.h.

References document, name, next, prev, and value.

808  {
809  name = _name;
810  value = _value;
811  document = 0;
812  prev = next = 0;
813  }
TiXmlDocument * document
Definition: tinyxml.h:887
TiXmlAttribute * prev
Definition: tinyxml.h:890
TiXmlAttribute * next
Definition: tinyxml.h:891
std::string value
Definition: tinyxml.h:889
std::string name
Definition: tinyxml.h:888
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 1297 of file tinyxml.cc.

References value.

1298 {
1299  return atof (value.c_str ());
1300 }
std::string value
Definition: tinyxml.h:889
int TiXmlAttribute::IntValue ( ) const

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

Definition at line 1292 of file tinyxml.cc.

References value.

1293 {
1294  return atoi (value.c_str ());
1295 }
std::string value
Definition: tinyxml.h:889
const char* TiXmlAttribute::Name ( ) const
inline

Return the name of this attribute.

Definition at line 815 of file tinyxml.h.

References name.

Referenced by TiXmlAttributeSet::Add(), TiXmlElement::CopyTo(), and TiXmlElement::Parse().

const std::string& TiXmlAttribute::NameTStr ( ) const
inline

Definition at line 824 of file tinyxml.h.

References name.

Referenced by TiXmlElement::Parse().

824 { return name; }
std::string name
Definition: tinyxml.h:888
const TiXmlAttribute * TiXmlAttribute::Next ( ) const

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

Definition at line 1184 of file tinyxml.cc.

References name, next, and value.

Referenced by TiXmlElement::CopyTo(), TiXmlElement::Print(), and TiXmlPrinter::VisitEnter().

1185 {
1186  // We are using knowledge of the sentinel. The sentinel
1187  // have a value or name.
1188  if ( next->value.empty() && next->name.empty() )
1189  return 0;
1190  return next;
1191 }
TiXmlAttribute * next
Definition: tinyxml.h:891
std::string value
Definition: tinyxml.h:889
std::string name
Definition: tinyxml.h:888
TiXmlAttribute* TiXmlAttribute::Next ( )
inline

Definition at line 854 of file tinyxml.h.

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

Definition at line 865 of file tinyxml.h.

References name.

865 { return name < rhs.name; }
std::string name
Definition: tinyxml.h:888
TiXmlAttribute& TiXmlAttribute::operator= ( const TiXmlAttribute base)
private
bool TiXmlAttribute::operator== ( const TiXmlAttribute rhs) const
inline

Definition at line 864 of file tinyxml.h.

References name.

864 { return rhs.name == name; }
std::string name
Definition: tinyxml.h:888
bool TiXmlAttribute::operator> ( const TiXmlAttribute rhs) const
inline

Definition at line 866 of file tinyxml.h.

References name.

866 { return name > rhs.name; }
std::string name
Definition: tinyxml.h:888
const char * TiXmlAttribute::Parse ( const char *  p,
TiXmlParsingData data,
TiXmlEncoding  encoding 
)
virtual

Implements TiXmlBase.

Definition at line 1399 of file tinyxmlparser.cc.

References TiXmlParsingData::Cursor(), document, end, TiXmlBase::IsWhiteSpace(), TiXmlBase::location, name, AlCaHLTBitMon_ParallelJobs::p, TiXmlBase::ReadName(), TiXmlBase::ReadText(), TiXmlDocument::SetError(), TiXmlBase::SkipWhiteSpace(), TiXmlParsingData::Stamp(), TiXmlBase::TIXML_ERROR_READING_ATTRIBUTES, and value.

Referenced by TiXmlElement::Parse(), and TiXmlDeclaration::Parse().

1400 {
1401  p = SkipWhiteSpace( p, encoding );
1402  if ( !p || !*p ) return 0;
1403 
1404 // int tabsize = 4;
1405 // if ( document )
1406 // tabsize = document->TabSize();
1407 
1408  if ( data )
1409  {
1410  data->Stamp( p, encoding );
1411  location = data->Cursor();
1412  }
1413  // Read the name, the '=' and the value.
1414  const char* pErr = p;
1415  p = ReadName( p, &name, encoding );
1416  if ( !p || !*p )
1417  {
1418  if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
1419  return 0;
1420  }
1421  p = SkipWhiteSpace( p, encoding );
1422  if ( !p || !*p || *p != '=' )
1423  {
1424  if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
1425  return 0;
1426  }
1427 
1428  ++p; // skip '='
1429  p = SkipWhiteSpace( p, encoding );
1430  if ( !p || !*p )
1431  {
1432  if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
1433  return 0;
1434  }
1435 
1436  const char* end;
1437  const char SINGLE_QUOTE = '\'';
1438  const char DOUBLE_QUOTE = '\"';
1439 
1440  if ( *p == SINGLE_QUOTE )
1441  {
1442  ++p;
1443  end = "\'"; // single quote in string
1444  p = ReadText( p, &value, false, end, false, encoding );
1445  }
1446  else if ( *p == DOUBLE_QUOTE )
1447  {
1448  ++p;
1449  end = "\""; // double quote in string
1450  p = ReadText( p, &value, false, end, false, encoding );
1451  }
1452  else
1453  {
1454  // All attribute values should be in single or double quotes.
1455  // But this is such a common error that the parser will try
1456  // its best, even without them.
1457  value = "";
1458  while ( p && *p // existence
1459  && !IsWhiteSpace( *p ) && *p != '\n' && *p != '\r' // whitespace
1460  && *p != '/' && *p != '>' ) // tag end
1461  {
1462  if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) {
1463  // [ 1451649 ] Attribute values with trailing quotes not handled correctly
1464  // We did not have an opening quote but seem to have a
1465  // closing one. Give up and throw an error.
1466  if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
1467  return 0;
1468  }
1469  value += *p;
1470  ++p;
1471  }
1472  }
1473  return p;
1474 }
TiXmlDocument * document
Definition: tinyxml.h:887
const TiXmlCursor & Cursor()
static bool IsWhiteSpace(char c)
Definition: tinyxml.h:294
TiXmlCursor location
Definition: tinyxml.h:377
static const char * ReadName(const char *p, std::string *name, TiXmlEncoding encoding)
#define end
Definition: vmac.h:38
static const char * SkipWhiteSpace(const char *, TiXmlEncoding encoding)
std::string value
Definition: tinyxml.h:889
void SetError(int err, const char *errorLocation, TiXmlParsingData *prevData, TiXmlEncoding encoding)
void Stamp(const char *now, TiXmlEncoding encoding)
std::string name
Definition: tinyxml.h:888
static const char * ReadText(const char *in, std::string *text, bool ignoreWhiteSpace, const char *endTag, bool ignoreCase, TiXmlEncoding encoding)
const TiXmlAttribute * TiXmlAttribute::Previous ( ) const

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

Definition at line 1204 of file tinyxml.cc.

References name, prev, and value.

1205 {
1206  // We are using knowledge of the sentinel. The sentinel
1207  // have a value or name.
1208  if ( prev->value.empty() && prev->name.empty() )
1209  return 0;
1210  return prev;
1211 }
TiXmlAttribute * prev
Definition: tinyxml.h:890
std::string value
Definition: tinyxml.h:889
std::string name
Definition: tinyxml.h:888
TiXmlAttribute* TiXmlAttribute::Previous ( )
inline

Definition at line 860 of file tinyxml.h.

860  {
861  return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() );
862  }
virtual void TiXmlAttribute::Print ( FILE *  cfile,
int  depth 
) const
inlinevirtual

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 874 of file tinyxml.h.

874  {
875  Print( cfile, depth, 0 );
876  }
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.h:874
void TiXmlAttribute::Print ( FILE *  cfile,
int  depth,
std::string *  str 
) const

Definition at line 1224 of file tinyxml.cc.

References TiXmlBase::EncodeString(), n, name, TIXML_STRING, v, and value.

1225 {
1226  TIXML_STRING n, v;
1227 
1228  EncodeString( name, &n );
1229  EncodeString( value, &v );
1230 
1231  if (value.find ('\"') == TIXML_STRING::npos) {
1232  if ( cfile ) {
1233  fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() );
1234  }
1235  if ( str ) {
1236  (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\"";
1237  }
1238  }
1239  else {
1240  if ( cfile ) {
1241  fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() );
1242  }
1243  if ( str ) {
1244  (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'";
1245  }
1246  }
1247 }
static void EncodeString(const std::string &str, std::string *out)
Definition: tinyxml.cc:59
std::string value
Definition: tinyxml.h:889
std::string name
Definition: tinyxml.h:888
mathSSE::Vec4< T > v
#define TIXML_STRING
Definition: tinyxml.h:57
int TiXmlAttribute::QueryDoubleValue ( double *  _value) const

QueryDoubleValue examines the value string. See QueryIntValue().

Definition at line 1260 of file tinyxml.cc.

References TIXML_SUCCESS, TIXML_WRONG_TYPE, and value.

Referenced by TiXmlElement::QueryDoubleAttribute().

1261 {
1262  try {
1263  *dval = boost::lexical_cast<double>(value);
1264  } catch(boost::bad_lexical_cast const&) {
1265  return TIXML_WRONG_TYPE;
1266  }
1267  return TIXML_SUCCESS;
1268 }
std::string value
Definition: tinyxml.h:889
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 1250 of file tinyxml.cc.

References TIXML_SUCCESS, TIXML_WRONG_TYPE, and value.

Referenced by TiXmlElement::QueryIntAttribute().

1251 {
1252  try {
1253  *ival = boost::lexical_cast<int>(value);
1254  } catch(boost::bad_lexical_cast const&) {
1255  return TIXML_WRONG_TYPE;
1256  }
1257  return TIXML_SUCCESS;
1258 }
std::string value
Definition: tinyxml.h:889
void TiXmlAttribute::SetDocument ( TiXmlDocument doc)
inline

Definition at line 881 of file tinyxml.h.

References asciidump::doc, and document.

Referenced by TiXmlElement::Parse().

881 { document = doc; }
TiXmlDocument * document
Definition: tinyxml.h:887
tuple doc
Definition: asciidump.py:381
void TiXmlAttribute::SetDoubleValue ( double  _value)

Set the value from a double.

Definition at line 1281 of file tinyxml.cc.

References SetValue().

1282 {
1283  char buf [256];
1284  #if defined(TIXML_SNPRINTF)
1285  TIXML_SNPRINTF( buf, sizeof(buf), "%f", _value);
1286  #else
1287  snprintf (buf, sizeof(buf), "%f", _value);
1288  #endif
1289  SetValue (buf);
1290 }
void SetValue(const char *_value)
Set the value.
Definition: tinyxml.h:840
void TiXmlAttribute::SetIntValue ( int  _value)

Set the value from an integer.

Definition at line 1270 of file tinyxml.cc.

References SetValue().

1271 {
1272  char buf [64];
1273  #if defined(TIXML_SNPRINTF)
1274  TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value);
1275  #else
1276  snprintf (buf, sizeof(buf), "%d", _value);
1277  #endif
1278  SetValue (buf);
1279 }
void SetValue(const char *_value)
Set the value.
Definition: tinyxml.h:840
void TiXmlAttribute::SetName ( const char *  _name)
inline

Set the name of this attribute.

Definition at line 839 of file tinyxml.h.

References name.

void TiXmlAttribute::SetName ( const std::string &  _name)
inline

STL std::string form.

Definition at line 847 of file tinyxml.h.

847 { name = _name; }
std::string name
Definition: tinyxml.h:888
void TiXmlAttribute::SetValue ( const char *  _value)
inline

Set the value.

Definition at line 840 of file tinyxml.h.

References value.

Referenced by TiXmlElement::Parse(), TiXmlElement::SetAttribute(), SetDoubleValue(), and SetIntValue().

void TiXmlAttribute::SetValue ( const std::string &  _value)
inline

STL std::string form.

Definition at line 849 of file tinyxml.h.

References value.

849 { value = _value; }
std::string value
Definition: tinyxml.h:889
const char* TiXmlAttribute::Value ( ) const
inline

Return the value of this attribute.

Definition at line 816 of file tinyxml.h.

References value.

Referenced by TiXmlElement::Attribute(), TiXmlElement::CopyTo(), TiXmlElement::Parse(), and TiXmlDeclaration::Parse().

const std::string& TiXmlAttribute::ValueStr ( ) const
inline

Return the value of this attribute.

Definition at line 818 of file tinyxml.h.

References value.

Referenced by TiXmlElement::Attribute(), and TiXmlElement::QueryValueAttribute().

Friends And Related Function Documentation

friend class TiXmlAttributeSet
friend

Definition at line 785 of file tinyxml.h.

Member Data Documentation

TiXmlDocument* TiXmlAttribute::document
private

Definition at line 887 of file tinyxml.h.

Referenced by Parse(), SetDocument(), and TiXmlAttribute().

std::string TiXmlAttribute::name
private
TiXmlAttribute* TiXmlAttribute::next
private
TiXmlAttribute* TiXmlAttribute::prev
private
std::string TiXmlAttribute::value
private