Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 17, 2008, 8:59:48 PM (16 years ago)
Author:
rgrieder
Message:

Merged revisions 1875-2278 of the buildsystem branch to buildsystem2.

Location:
code/branches/buildsystem2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/buildsystem2

  • code/branches/buildsystem2/src/tinyxml/ticpp.cc

    r1625 r2509  
    1 #define TIXML_USE_TICPP
    2 
    31/*
    42http://code.google.com/p/ticpp/
     
    2321*/
    2422
    25 /*
    26 Modifications by the orxonox team:
    27 In function: void Document::Parse( const std::string& xml, bool throwIfParseError, TiXmlEncoding encoding )
    28      change: Added row and column number to the error description.
    29      author: Reto Grieder
    30 */
    31 
    3223#ifdef TIXML_USE_TICPP
    3324
     
    164155
    165156        Attribute* temp = new Attribute( attribute );
    166         m_spawnedWrappers.push_back( temp );
     157        attribute->m_spawnedWrappers.push_back( temp );
    167158
    168159        return temp;
     
    186177
    187178        Attribute* temp = new Attribute( attribute );
    188         m_spawnedWrappers.push_back( temp );
     179        attribute->m_spawnedWrappers.push_back( temp );
    189180
    190181        return temp;
     
    262253        if ( rememberSpawnedWrapper )
    263254        {
    264                 m_spawnedWrappers.push_back( temp );
     255                tiXmlNode->m_spawnedWrappers.push_back( temp );
    265256        }
    266257        return temp;
     
    386377        }
    387378
     379        TiXmlNode* pointer = GetTiXmlPointer()->InsertEndChild( *addThis.GetTiXmlPointer() );
     380        if ( 0 == pointer )
     381        {
     382                TICPPTHROW( "Node can't be inserted" );
     383        }
     384
     385        return NodeFactory( pointer );
     386}
     387
     388Node* Node::LinkEndChild( Node* childNode )
     389{
     390        if ( childNode->Type() == TiXmlNode::DOCUMENT )
     391        {
     392                TICPPTHROW( "Node is a Document and can't be linked" );
     393        }
     394
     395        // Increment reference count when adding to the tree
     396        childNode->m_impRC->IncRef();
     397
     398        if ( 0 == GetTiXmlPointer()->LinkEndChild( childNode->GetTiXmlPointer() ) )
     399        {
     400                TICPPTHROW( "Node can't be linked" );
     401        }
     402
     403        return childNode;
     404}
     405
     406Node* Node::InsertBeforeChild( Node* beforeThis, Node& addThis )
     407{
     408        if ( addThis.Type() == TiXmlNode::DOCUMENT )
     409        {
     410                TICPPTHROW( "Node is a Document and can't be inserted" );
     411        }
     412
    388413        // Increment reference count when adding to the tree
    389414        addThis.m_impRC->IncRef();
    390415
    391         TiXmlNode* pointer = GetTiXmlPointer()->InsertEndChild( *addThis.GetTiXmlPointer() );
     416        TiXmlNode* pointer = GetTiXmlPointer()->InsertBeforeChild( beforeThis->GetTiXmlPointer(), *addThis.GetTiXmlPointer() );
    392417        if ( 0 == pointer )
    393418        {
     
    398423}
    399424
    400 Node* Node::LinkEndChild( Node* childNode )
    401 {
    402         if ( childNode->Type() == TiXmlNode::DOCUMENT )
    403         {
    404                 TICPPTHROW( "Node is a Document and can't be linked" );
    405         }
    406 
    407         // Increment reference count when adding to the tree
    408         childNode->m_impRC->IncRef();
    409 
    410         if ( 0 == GetTiXmlPointer()->LinkEndChild( childNode->GetTiXmlPointer() ) )
    411         {
    412                 TICPPTHROW( "Node can't be linked" );
    413         }
    414 
    415         return childNode;
    416 }
    417 
    418 Node* Node::InsertBeforeChild( Node* beforeThis, Node& addThis )
     425Node* Node::InsertAfterChild( Node* afterThis, Node& addThis )
    419426{
    420427        if ( addThis.Type() == TiXmlNode::DOCUMENT )
     
    426433        addThis.m_impRC->IncRef();
    427434
    428         TiXmlNode* pointer = GetTiXmlPointer()->InsertBeforeChild( beforeThis->GetTiXmlPointer(), *addThis.GetTiXmlPointer() );
    429         if ( 0 == pointer )
    430         {
    431                 TICPPTHROW( "Node can't be inserted" );
    432         }
    433 
    434         return NodeFactory( pointer );
    435 }
    436 
    437 Node* Node::InsertAfterChild( Node* afterThis, Node& addThis )
    438 {
    439         if ( addThis.Type() == TiXmlNode::DOCUMENT )
    440         {
    441                 TICPPTHROW( "Node is a Document and can't be inserted" );
    442         }
    443 
    444         // Increment reference count when adding to the tree
    445         addThis.m_impRC->IncRef();
    446 
    447435        TiXmlNode* pointer = GetTiXmlPointer()->InsertAfterChild( afterThis->GetTiXmlPointer(), *addThis.GetTiXmlPointer() );
    448436        if ( 0 == pointer )
     
    576564
    577565        Element* temp = new Element( sibling );
    578         m_spawnedWrappers.push_back( temp );
     566        sibling->m_spawnedWrappers.push_back( temp );
    579567
    580568        return temp;
     
    616604
    617605        Element* temp = new Element( element );
    618         m_spawnedWrappers.push_back( temp );
     606        element->m_spawnedWrappers.push_back( temp );
    619607
    620608        return temp;
     
    641629        }
    642630        Document* temp = new Document( doc );
    643         m_spawnedWrappers.push_back( temp );
     631        doc->m_spawnedWrappers.push_back( temp );
    644632
    645633        return temp;
     
    659647        }
    660648        Document* temp = new Document( doc );
    661         m_spawnedWrappers.push_back( temp );
     649        doc->m_spawnedWrappers.push_back( temp );
    662650
    663651        return temp;
     
    672660        }
    673661        Element* temp = new Element( doc );
    674         m_spawnedWrappers.push_back( temp );
     662        doc->m_spawnedWrappers.push_back( temp );
    675663
    676664        return temp;
     
    685673        }
    686674        Comment* temp = new Comment( doc );
    687         m_spawnedWrappers.push_back( temp );
     675        doc->m_spawnedWrappers.push_back( temp );
    688676
    689677        return temp;
     
    698686        }
    699687        Text* temp = new Text( doc );
    700         m_spawnedWrappers.push_back( temp );
     688        doc->m_spawnedWrappers.push_back( temp );
    701689
    702690        return temp;
     
    711699        }
    712700        Declaration* temp = new Declaration( doc );
    713         m_spawnedWrappers.push_back( temp );
     701        doc->m_spawnedWrappers.push_back( temp );
    714702
    715703        return temp;
     
    724712        }
    725713        StylesheetReference* temp = new StylesheetReference( doc );
    726         m_spawnedWrappers.push_back( temp );
     714        doc->m_spawnedWrappers.push_back( temp );
    727715
    728716        return temp;
     
    860848        if( throwIfParseError && m_tiXmlPointer->Error() )
    861849        {
    862                 TICPPTHROW( "Error parsing xml: " << m_tiXmlPointer->ErrorDesc()
    863             << " In row " << m_tiXmlPointer->ErrorRow() << ", column " << m_tiXmlPointer->ErrorCol() << ".");
     850                TICPPTHROW( "Error parsing xml." );
    864851        }
    865852}
     
    912899
    913900        Attribute* temp = new Attribute( attribute );
    914         m_spawnedWrappers.push_back( temp );
     901        attribute->m_spawnedWrappers.push_back( temp );
    915902
    916903        return temp;
     
    939926
    940927        Attribute* temp = new Attribute( attribute );
    941         m_spawnedWrappers.push_back( temp );
     928        attribute->m_spawnedWrappers.push_back( temp );
    942929
    943930        return temp;
     
    957944{
    958945        return GetAttributeOrDefault( name, std::string() );
     946}
     947
     948bool Element::HasAttribute( const std::string& name ) const
     949{
     950        ValidatePointer();
     951        return ( 0 != m_tiXmlPointer->Attribute( name.c_str() ) );
     952}
     953
     954void Element::RemoveAttribute( const std::string& name )
     955{
     956        ValidatePointer();
     957        m_tiXmlPointer->RemoveAttribute( name.c_str() );
    959958}
    960959
     
    10861085}
    10871086
     1087void TiCppRC::DeleteSpawnedWrappers()
     1088{
     1089        std::vector< Base* >::reverse_iterator wrapper;
     1090        for ( wrapper = m_spawnedWrappers.rbegin(); wrapper != m_spawnedWrappers.rend(); ++wrapper )
     1091        {
     1092                delete *wrapper;
     1093        }
     1094        m_spawnedWrappers.clear();
     1095}
     1096               
    10881097TiCppRC::~TiCppRC()
    1089 {
     1098{       
     1099        DeleteSpawnedWrappers();
     1100       
    10901101        // Set pointer held by reference counter to NULL
    10911102        this->m_tiRC->Nullify();
Note: See TracChangeset for help on using the changeset viewer.