Commit 73629440 authored by jan.koester's avatar jan.koester
Browse files

new api multithreaded comp

parent 27b966b4
Loading
Loading
Loading
Loading
+19 −27
Original line number Diff line number Diff line
@@ -79,7 +79,6 @@ namespace libhtmlpp {
libhtmlpp::HtmlString::HtmlString(){
    _HTable=nullptr;
    _HTableSize=0;
    _RootNode=nullptr;
}

libhtmlpp::HtmlString::HtmlString(const char* str) : HtmlString(){
@@ -97,7 +96,6 @@ libhtmlpp::HtmlString::~HtmlString(){
        }
    }
    delete[]   _HTable;
    delete     _RootNode;
}

libhtmlpp::HtmlString::HtmlString(const libhtmlpp::HtmlString& str) : HtmlString() {
@@ -137,11 +135,9 @@ void libhtmlpp::HtmlString::clear(){
        }
    }
    delete[]   _HTable;
    delete     _RootNode;

    _HTable=nullptr;
    _HTableSize=0;
    _RootNode=nullptr;
    _Data.clear();
}

@@ -239,14 +235,11 @@ const char * libhtmlpp::HtmlString::c_str(){
    return _CStr.data();
}

libhtmlpp::HtmlElement* libhtmlpp::HtmlString::parse() {
void libhtmlpp::HtmlString::parse(HtmlElement &dest) {
    HTMLException excp;
    _parseTree();
    long pos = 0;
    if(_RootNode)
        delete _RootNode;
    _RootNode = (HtmlElement*)_buildTree(pos);
    return _RootNode;
    dest=(HtmlElement*)_buildTree(pos);
}

bool libhtmlpp::HtmlString::validate(std::string *err){
@@ -1054,12 +1047,13 @@ const char * libhtmlpp::CommentElement::getComment(){


libhtmlpp::HtmlPage::HtmlPage(){

}

libhtmlpp::HtmlPage::~HtmlPage(){
}

libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadFile(const char* path){
void libhtmlpp::HtmlPage::loadFile(libhtmlpp::HtmlElement &html,const char* path){
    std::string data;
    char tmp[HTML_BLOCKSIZE];
    std::ifstream fs;
@@ -1076,33 +1070,29 @@ libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadFile(const char* path){
    }
    fs.close();
    _CheckHeader(data);
    libhtmlpp::HtmlElement *el=loadString(data);
    return el;
}

libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadString(const std::string &src){
    _Page=src.c_str();
    return _Page.parse();
    loadString(html,data);
}

libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadString(const char *src){
    _Page=src;
    return _Page.parse();
void libhtmlpp::HtmlPage::loadString(libhtmlpp::HtmlElement &html,const std::string &src){
    HtmlString buf=src.c_str();
    buf.parse(html);
}

libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadString(const HtmlString &node){
    return _Page.parse();
void libhtmlpp::HtmlPage::loadString(libhtmlpp::HtmlElement &html,const char *src){
    HtmlString buf=src;
    buf.parse(html);
}

libhtmlpp::HtmlElement *libhtmlpp::HtmlPage::loadString(const HtmlString *node){
    return _Page.parse();
void libhtmlpp::HtmlPage::loadString(libhtmlpp::HtmlElement &html,const HtmlString &node){
    HtmlString buf=node;
    buf.parse(html);
}

void libhtmlpp::HtmlPage::saveFile(const char* path){
void libhtmlpp::HtmlPage::saveFile(libhtmlpp::HtmlElement &html,const char* path){
    HtmlString data;
    std::ofstream fs;

    print(_Page.parse(),data);
    print(&html,data);

    try{
        fs.open(path);
@@ -1438,10 +1428,12 @@ void libhtmlpp::HtmlTable::insert(libhtmlpp::HtmlElement* element){

        for(Column *ccol=crow->_firstColumn; ccol; ccol=ccol->_nextColumn ){
            HtmlString buf;
            HtmlElement element;
            buf << "<td>";
            buf << ccol->Data.c_str();
            buf << "</td>";
            hrow.appendChild(buf.parse());
            buf.parse(element);
            hrow.appendChild(&element);
        }

        element->appendChild(&hrow);
+7 −9
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ namespace libhtmlpp {
        void               clear();
        bool               empty();
        const char *       c_str();
        HtmlElement*       parse();
        void               parse(HtmlElement &dest);
        bool               validate(std::string *err);
    private:
        void               _parseTree();
@@ -225,7 +225,6 @@ namespace libhtmlpp {
        std::vector<char>  _CStr;
        long**             _HTable;
        size_t             _HTableSize;
        HtmlElement*       _RootNode;
        friend void HtmlEncode(const char *input,HtmlString *output);
    };

@@ -236,15 +235,14 @@ namespace libhtmlpp {
    public:
        HtmlPage();
        ~HtmlPage();
        HtmlElement *loadFile(const char* path);
        void         saveFile(const char* path);
        HtmlElement *loadString(const std::string &src);
        HtmlElement *loadString(const char *src);
        HtmlElement *loadString(const HtmlString &node);
        HtmlElement *loadString(const HtmlString *node);
        void         loadFile(libhtmlpp::HtmlElement &html,const char* path);
        void         saveFile(libhtmlpp::HtmlElement &html,const char* path);
        void         loadString(libhtmlpp::HtmlElement &html,const std::string &src);
        void         loadString(libhtmlpp::HtmlElement &html,const char *src);
        void         loadString(libhtmlpp::HtmlElement &html,const HtmlString &node);
        void         loadString(libhtmlpp::HtmlElement &html,const HtmlString *node);
    private:
        void         _CheckHeader(const HtmlString& page);
        HtmlString   _Page;
    };

    class HtmlTable {
+5 −3
Original line number Diff line number Diff line
@@ -61,15 +61,17 @@ private:
int main(int arc,char *argv[]){
    libhtmlpp::HtmlPage page;
    try{
        libhtmlpp::Element *index=page.loadFile(argv[1]);
        libhtmlpp::HtmlElement index;

        HtmlCopy cpy(index);
        page.loadFile(index,argv[1]);

        HtmlCopy cpy(&index);


        libhtmlpp::HtmlString html;

        std::cout << "Orginal html:" << std::endl;
        libhtmlpp::print(index,html);
        libhtmlpp::print(&index,html);
        std::cout << html.c_str() << std::endl;

        std::cout << "Modified html:" << std::endl;
+3 −2
Original line number Diff line number Diff line
@@ -37,9 +37,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
int main(int arc,char *argv[]){
    libhtmlpp::HtmlPage page;
    try{
        libhtmlpp::Element *index=page.loadFile(argv[1]);
        libhtmlpp::HtmlElement index;
        page.loadFile(index,argv[1]);
        libhtmlpp::HtmlString html;
        libhtmlpp::print(index,html);
        libhtmlpp::print(&index,html);
        std::cout << html.c_str() << std::endl;
        std::cout << Green << "Test Passed!" << NOCOLOR << std::endl;
    }catch(libhtmlpp::HTMLException &exp){