summaryrefslogtreecommitdiff
path: root/libopie/xmltree.cc
authorsimon <simon>2002-03-20 21:08:03 (UTC)
committer simon <simon>2002-03-20 21:08:03 (UTC)
commit60b86269c6087dfb6674de6dc01d71a9a6d6d180 (patch) (side-by-side diff)
treee53c76de63500dfe52b90c3da6c354b507cb4ba0 /libopie/xmltree.cc
parent79d96ab3393af185b0f0d705e1b7ae74ee801241 (diff)
downloadopie-60b86269c6087dfb6674de6dc01d71a9a6d6d180.zip
opie-60b86269c6087dfb6674de6dc01d71a9a6d6d180.tar.gz
opie-60b86269c6087dfb6674de6dc01d71a9a6d6d180.tar.bz2
- speed up for attribute() and setAttribute()
- indentation fixlet (let's stay consistent :)
Diffstat (limited to 'libopie/xmltree.cc') (more/less context) (show whitespace changes)
-rw-r--r--libopie/xmltree.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/libopie/xmltree.cc b/libopie/xmltree.cc
index 3d03cc6..408e3c6 100644
--- a/libopie/xmltree.cc
+++ b/libopie/xmltree.cc
@@ -68,60 +68,62 @@ void XMLElement::insertAfter( XMLElement *newChild, XMLElement *refChild )
{
appendChild( newChild );
return;
}
assert( refChild );
assert( refChild->m_parent );
assert( refChild->m_parent == this );
if ( newChild->m_parent && newChild != refChild )
newChild->m_parent->removeChild( newChild );
newChild->m_parent = this;
XMLElement *next = refChild->m_next;
refChild->m_next = newChild;
newChild->m_prev = refChild;
newChild->m_next = next;
if ( next )
next->m_prev = newChild;
}
+
QString XMLElement::attribute(const QString &attr )const
{
- if ( !m_attributes.contains( attr ) )
- return QString::null;
AttributeMap::ConstIterator it = m_attributes.find( attr );
+ if ( it == m_attributes.end() )
+ return QString::null;
return it.data();
}
+
void XMLElement::setAttribute(const QString &attr, const QString &value )
{
- m_attributes.remove( attr );
- m_attributes.insert( attr, value );
+ m_attributes.replace( attr, value );
}
+
void XMLElement::insertBefore( XMLElement *newChild, XMLElement *refChild )
{
assert( refChild );
assert( refChild->m_parent );
assert( refChild->m_parent == this );
assert( newChild != refChild );
if ( newChild->m_parent && newChild != refChild )
newChild->m_parent->removeChild( newChild );
newChild->m_parent = this;
XMLElement *prev = refChild->m_prev;
refChild->m_prev = newChild;
newChild->m_prev = prev;
newChild->m_next = refChild;
if ( prev )
prev->m_next = newChild;
if ( refChild == m_first )
m_first = newChild;
@@ -294,25 +296,26 @@ XMLElement *XMLElement::clone() const
res->appendChild( e->clone() );
return res;
}
XMLElement *XMLElement::load( const QString &fileName )
{
QFile f( fileName );
if ( !f.open( IO_ReadOnly ) )
return 0;
QTextStream stream( &f );
stream.setEncoding( QTextStream::UnicodeUTF8 );
QXmlInputSource src( stream );
QXmlSimpleReader reader;
Handler handler;
reader.setFeature( "http://trolltech.com/xml/features/report-whitespace-only-CharData", false );
reader.setContentHandler( &handler );
reader.parse( src );
return handler.root();;
}
-
+/* vim: et sw=4
+ */