]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/xml/xmlelement.h
netradiant: strip 16-bit png to 8-bit, fix #153
[xonotic/netradiant.git] / libs / xml / xmlelement.h
index 2e354e32cdde3aaaee193e2f3cfe68da447cde47..5bedf5545336edc388c514183b38f73c56ee8aff 100644 (file)
@@ -1,25 +1,25 @@
 /*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+   Copyright (C) 2001-2006, William Joseph.
+   All Rights Reserved.
 
-This file is part of GtkRadiant.
+   This file is part of GtkRadiant.
 
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   GtkRadiant is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   GtkRadiant is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+   You should have received a copy of the GNU General Public License
+   along with GtkRadiant; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 
-#if !defined(INCLUDED_XML_XMLELEMENT_H)
+#if !defined( INCLUDED_XML_XMLELEMENT_H )
 #define INCLUDED_XML_XMLELEMENT_H
 
 #include "xml/ixml.h"
@@ -27,83 +27,73 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include <map>
 
+///\brief All string pointers passed to an instance of this class are not
+/// copied and must stay valid for the lifetime of the instance.
 class StaticElement : public XMLElement
 {
-  struct strless
-  {
-    bool operator()(const char* s1, const char* s2) const
-    {
-      return strcmp(s1, s2) < 0;
-    }
-  };
-
-  typedef std::map<const char*, const char*, strless> attrs_t;
+typedef std::map<const char*, const char*, RawStringLess> attrs_t;
 public:
-  StaticElement(const char* name)
-    : m_name(name)
-  {
-  }
-  void insertAttribute(const char* name, const char* value)
-  {
-    m_attrs.insert(attrs_t::value_type(name, value));
-  }
-  const char* name() const
-  {
-    return m_name;
-  }
-  const char* attribute(const char* name) const
-  {
-    attrs_t::const_iterator i = m_attrs.find(name);
-    if(i != m_attrs.end())
-      return i->second;
-    else
-      return "";
-  }
-  void forEachAttribute(XMLAttrVisitor& visitor) const
-  {
-    for(attrs_t::const_iterator i = m_attrs.begin(); i != m_attrs.end(); ++i)
-    {
-      visitor.visit(i->first, i->second);
-    }
-  }
+StaticElement( const char* name )
+       : m_name( name ){
+}
+void insertAttribute( const char* name, const char* value ){
+       m_attrs.insert( attrs_t::value_type( name, value ) );
+}
+const char* name() const {
+       return m_name;
+}
+const char* attribute( const char* name ) const {
+       attrs_t::const_iterator i = m_attrs.find( name );
+       if ( i != m_attrs.end() ) {
+               return i->second;
+       }
+       else{
+               return "";
+       }
+}
+void forEachAttribute( XMLAttrVisitor& visitor ) const {
+       for ( attrs_t::const_iterator i = m_attrs.begin(); i != m_attrs.end(); ++i )
+       {
+               visitor.visit( i->first, i->second );
+       }
+}
 private:
-  const char* m_name;
-  attrs_t m_attrs;
+const char* m_name;
+attrs_t m_attrs;
 };
 
+///\brief All string pointers passed to an instance of this class are copied.
 class DynamicElement : public XMLElement
 {
-  typedef std::map<CopiedString, CopiedString> attrs_t;
+typedef std::map<CopiedString, CopiedString> attrs_t;
 public:
-  DynamicElement(const char* name)
-    : m_name(name)
-  {}
-  void insertAttribute(const char* name, const char* value)
-  {
-    m_attrs.insert(attrs_t::value_type(name, value));
-  }
-  const char* name() const
-  {
-    return m_name.c_str();
-  }
-  const char* attribute(const char* name) const
-  {
-    attrs_t::const_iterator i = m_attrs.find(name);
-    if(i != m_attrs.end())
-      return i->second.c_str();
-    else
-      return "";
-  }
-  void forEachAttribute(XMLAttrVisitor& visitor) const
-  {
-    for(attrs_t::const_iterator i = m_attrs.begin(); i != m_attrs.end(); ++i)
-    {
-      visitor.visit(i->first.c_str(), i->second.c_str());
-    }
-  }
+DynamicElement( const char* name )
+       : m_name( name ){
+}
+void insertAttribute( const char* name, const char* value ){
+       m_attrs.insert( attrs_t::value_type( name, value ) );
+}
+const char* name() const {
+       return m_name.c_str();
+}
+const char* attribute( const char* name ) const {
+       attrs_t::const_iterator i = m_attrs.find( name );
+       if ( i != m_attrs.end() ) {
+               return i->second.c_str();
+       }
+       else{
+               return "";
+       }
+}
+void forEachAttribute( XMLAttrVisitor& visitor ) const {
+       for ( attrs_t::const_iterator i = m_attrs.begin(); i != m_attrs.end(); ++i )
+       {
+               visitor.visit( i->first.c_str(), i->second.c_str() );
+       }
+}
 private:
-  CopiedString m_name;
-  attrs_t m_attrs;
+CopiedString m_name;
+attrs_t m_attrs;
 };
 
 #endif