Commit 8c2ddf1d authored by jan.koester's avatar jan.koester
Browse files

fixed type error

parent a87776d2
Loading
Loading
Loading
Loading
+61 −51
Original line number Diff line number Diff line
@@ -304,12 +304,12 @@ void libhtmlpp::HtmlString::_buildtreenode(libhtmlpp::DocElements *firstel,libht

        for (DocElements* curcel=termel->nextel; curcel; curcel=curcel->nextel) {

            if (curcel->element && curcel->element->_Type==HtmlEl && !curcel->terminator &&
            if (curcel->element && curcel->element->getType()==HtmlEl && !curcel->terminator &&
                *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) {
                ++i;
            }

            if (curcel->element && curcel->element->_Type==HtmlEl && curcel->terminator &&
            if (curcel->element && curcel->element->getType()==HtmlEl && curcel->terminator &&
                *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) {
                if(i==0){
                    return curcel;
@@ -633,10 +633,6 @@ void libhtmlpp::HtmlEncode(const char* input, HtmlString* output){


libhtmlpp::HtmlElement::HtmlElement(const char *tagname) : Element(){
    _childElement=nullptr;
    _firstAttr=nullptr;
    _lastAttr=nullptr;
    _Type=HtmlEl;
    std::copy(tagname,tagname+strlen(tagname),std::insert_iterator<std::vector<char>>(_TagName,_TagName.begin()) );
}

@@ -644,7 +640,6 @@ libhtmlpp::HtmlElement::HtmlElement() : Element() {
    _childElement=nullptr;
    _firstAttr=nullptr;
    _lastAttr=nullptr;
    _Type=HtmlEl;
}

libhtmlpp::HtmlElement::HtmlElement(const libhtmlpp::HtmlElement& hel) : HtmlElement(){
@@ -656,10 +651,6 @@ libhtmlpp::HtmlElement::HtmlElement(const libhtmlpp::HtmlElement* hel) : HtmlEle
}

libhtmlpp::HtmlElement::~HtmlElement(){
    if(_prevElement)
        _prevElement->_nextElement=_nextElement;
    if(_nextElement)
        _nextElement->_prevElement=_prevElement;
    _nextElement=nullptr;
    _prevElement=nullptr;

@@ -671,20 +662,27 @@ libhtmlpp::HtmlElement::~HtmlElement(){
        cura=next;
    }

    Element *cur=_childElement;
    Element *cur=_firstElement;

    _firstAttr=nullptr;
    _lastAttr=nullptr;
    _childElement=nullptr;

    std::stack<Element*> childs;
    std::stack<Element*> delelm;

DELETEELEMENT:
    while(cur){
        Element *next=cur->nextElement();
        Element *next=cur->_nextElement;
        cur->_firstElement=nullptr;
        cur->_nextElement=nullptr;
        cur->_prevElement=nullptr;
        if(cur->_Type==HtmlEl && ((HtmlElement*)cur)->_childElement){
        if(cur->getType()==HtmlEl && ((HtmlElement*)cur)->_childElement){
            childs.push(((HtmlElement*)cur)->_childElement);
            delelm.push(((HtmlElement*)cur)->_childElement);
            ((HtmlElement*)cur)->_childElement=nullptr;
        }
        if(cur!=this)
            delelm.push(cur);
        cur=next;
    }
    if(!childs.empty()){
@@ -693,14 +691,15 @@ libhtmlpp::HtmlElement::~HtmlElement(){
        goto DELETEELEMENT;
    }

    while(!delelm.empty()){
    if(delelm.empty())
        return;

    Element *itm=delelm.top();
        if(itm!=this)
    while(itm){
        itm=delelm.top();
        delete itm;
        delelm.pop();
    }

    _childElement=nullptr;
}

void libhtmlpp::HtmlElement::setTagname(const char* name){
@@ -728,6 +727,10 @@ void libhtmlpp::HtmlElement::insertChild(libhtmlpp::Element* el){
        case CommentEl:
            _childElement=new CommentElement;
            break;
        default:
            HTMLException ex;
            ex[HTMLException::Critical] << "insertChild: Unknown html element found !";
            throw ex;
    }
    _copy(_childElement,el);
}
@@ -749,6 +752,10 @@ void libhtmlpp::HtmlElement::appendChild(libhtmlpp::Element* el){
                break;
            case CommentEl:
                curel=new CommentElement;
            default:
                HTMLException ex;
                ex[HTMLException::Critical] << "appendChild: Unknown html element found: "<< el->getType() << " !";
                throw ex;
        }
        if(prev){
            prev->_nextElement=curel;
@@ -813,7 +820,7 @@ namespace libhtmlpp {

NEWEL:
        if(src->getType()==libhtmlpp::HtmlEl && dest->getType()==libhtmlpp::HtmlEl){
            ((libhtmlpp::HtmlElement*)dest)->setTagname(((libhtmlpp::HtmlElement*)src)->getTagname());
            ((libhtmlpp::HtmlElement*)dest)->_TagName=(((libhtmlpp::HtmlElement*)src)->_TagName);
            for(libhtmlpp::HtmlElement::Attributes *cattr=((libhtmlpp::HtmlElement*)src)->_firstAttr; cattr; cattr=cattr->_nextAttr){
                if(!cattr->_Value.empty())
                    ((libhtmlpp::HtmlElement*)dest)->setAttribute(cattr->_Key.data(),cattr->_Key.size(),cattr->_Value.data(),cattr->_Value.size());
@@ -821,8 +828,8 @@ NEWEL:
                    ((libhtmlpp::HtmlElement*)dest)->setAttribute(cattr->_Key.data(),cattr->_Key.size(),nullptr,0);
            }

            if(((libhtmlpp::HtmlElement*)src)->_childElement){
                switch(((libhtmlpp::HtmlElement*)src)->_childElement->getType()){
            if(dest->getType()==HtmlEl && ((libhtmlpp::HtmlElement*)src)->_childElement){
                switch(src->getType()){
                    case HtmlEl:
                        ((libhtmlpp::HtmlElement*)dest)->_childElement= new HtmlElement;
                        break;
@@ -834,7 +841,7 @@ NEWEL:
                        break;
                    default:
                        HTMLException ex;
                        ex[HTMLException::Critical] << "Unknown html element found !";
                        ex[HTMLException::Critical] << "_copy: Unknown html element found !";
                        throw ex;
                }
                cpyel childel;
@@ -969,27 +976,23 @@ libhtmlpp::Element *libhtmlpp::Element::prevElement() const{
    return _prevElement;
}

int libhtmlpp::Element::getType() const{
    return _Type;
}

libhtmlpp::Element::Element(){
    _prevElement=nullptr;
    _nextElement=nullptr;
    _firstElement=nullptr;
    _Type=-1;
}

libhtmlpp::Element::Element(const libhtmlpp::Element& el){
    _prevElement=nullptr;
    _nextElement=nullptr;
    _firstElement=nullptr;
    _Type=-1;
libhtmlpp::Element::Element(const libhtmlpp::Element& el) : Element() {
    _copy(this,&el);
}

libhtmlpp::Element::~Element(){

     Element *curel=_firstElement;
    _firstElement=nullptr;
    _prevElement=nullptr;
    _nextElement=nullptr;

     while(curel){
        Element *next=curel->_nextElement;
        curel->_firstElement=nullptr;
@@ -999,17 +1002,12 @@ libhtmlpp::Element::~Element(){
            delete curel;
        curel=next;
    }
    _firstElement=nullptr;
    _prevElement=nullptr;
    _nextElement=nullptr;
};

libhtmlpp::TextElement::TextElement() : Element(){
    _Type=TextEl;
}

libhtmlpp::TextElement::TextElement(const TextElement &texel) : Element(){
    _Type=TextEl;
    _copy(this,&texel);
}

@@ -1037,12 +1035,15 @@ const char * libhtmlpp::TextElement::getText(){
    return _CStr.data();
}

int libhtmlpp::TextElement::getType() const{
    return ElementType::TextEl;
}


libhtmlpp::CommentElement::CommentElement() : Element(){
    _Type=CommentEl;
}

libhtmlpp::CommentElement::CommentElement(const CommentElement &comel) : Element(){
    _Type=CommentEl;
    _copy(this,&comel);
}

@@ -1070,6 +1071,10 @@ const char * libhtmlpp::CommentElement::getComment(){
    return _CStr.data();
}

int libhtmlpp::CommentElement::getType() const{
    return ElementType::CommentEl;
}


libhtmlpp::HtmlPage::HtmlPage(){

@@ -1191,7 +1196,7 @@ void libhtmlpp::print(Element* el, HtmlString &output,bool formated) {
    };

PRINTNEXTEL:
    switch(el->_Type){
    switch(el->getType()){
        case HtmlEl:{
            printag(el,output);

@@ -1394,6 +1399,11 @@ libhtmlpp::HtmlElement::Attributes::Attributes() {
libhtmlpp::HtmlElement::Attributes::~Attributes() {
}

int libhtmlpp::HtmlElement::getType() const{
    return ElementType::HtmlEl;
}


libhtmlpp::HtmlTable::HtmlTable(){
    _firstRow=nullptr;
    _lastRow=nullptr;
+6 −2
Original line number Diff line number Diff line
@@ -62,12 +62,11 @@ namespace libhtmlpp {
        Element*       nextElement() const;
        Element*       prevElement() const;

        int            getType() const;
        virtual int    getType() const=0;
    protected:
        Element*      _prevElement;
        Element*      _nextElement;
        Element*      _firstElement;
        int           _Type;

        friend class HtmlElement;
        friend class TextElement;
@@ -107,6 +106,9 @@ namespace libhtmlpp {

        HtmlElement *getElementbyID(const char *id) const;
        HtmlElement *getElementbyTag(const char *tag) const;

        int    getType() const;

    protected:

        Element*    _childElement;
@@ -147,6 +149,7 @@ namespace libhtmlpp {
        const char *getText();
        void        setText(const char *txt);

        int         getType() const;
    protected:
        std::vector<char> _Text;
        std::vector<char> _CStr;
@@ -167,6 +170,7 @@ namespace libhtmlpp {
        const char *getComment();
        void        setComment(const char *txt);

        int         getType() const;
    protected:
        std::vector<char> _Comment;
        std::vector<char> _CStr;