Commit 02b5ed0c authored by jan.koester's avatar jan.koester
Browse files

optimize perf

parent 1c8044ce
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -774,22 +774,12 @@ libhtmlpp::HtmlElement & libhtmlpp::HtmlElement::operator=(const libhtmlpp::Html
}

void libhtmlpp::HtmlElement::remove(libhtmlpp::Element* el){
    Element *cur=_firstElement;
    Element *cur=this;

    std::stack<Element*> parents;

DELETEELEMENT:
    while(cur){
        if(cur->_firstElement==el)
            cur->_firstElement=el->_nextElement;

        if(cur->getType()==HtmlEl){
            if(((HtmlElement*)cur)->_childElement){
                parents.push(cur);
                cur=((HtmlElement*)cur)->_childElement;
            }
        }

        if(cur==el){
            if(cur->_prevElement)
                cur->_prevElement->_nextElement=cur->_nextElement;
@@ -798,8 +788,17 @@ DELETEELEMENT:
            cur->_nextElement=nullptr;
            cur->_prevElement=nullptr;
            cur->_firstElement=nullptr;
            delete cur;
            return;
            delete cur;;
        }

        if(cur->_firstElement==el)
            cur->_firstElement=el->_nextElement;

        if(cur->getType()==HtmlEl){
            if(((HtmlElement*)cur)->_childElement){
                parents.push(cur);
                cur=((HtmlElement*)cur)->_childElement;
            }
        }

        Element *next=cur->_nextElement;
@@ -1031,14 +1030,11 @@ libhtmlpp::Element::~Element(){
};

void libhtmlpp::Element::remove(libhtmlpp::Element* el){
     Element *curel=_firstElement;
     Element *curel=this;

     while(curel){
         Element *next=curel->_nextElement;

        if(_firstElement==el)
            curel->_firstElement=_firstElement->_nextElement;

         if(curel==el){
                curel->_firstElement=nullptr;

@@ -1051,6 +1047,10 @@ void libhtmlpp::Element::remove(libhtmlpp::Element* el){
                curel->_nextElement=nullptr;
                delete curel;
         }

        if(_firstElement==el)
            curel->_firstElement=_firstElement->_nextElement;

        curel=next;
    }
}