Example #1
0
GPTreeADFPoint* GPTreeADFPoint::xmlLoad(const GPTreeNode* node, const GPFunctionDataBase* base)
{
    GPASSERT(NULL!=node);
    GPTreeADFPoint* res = NULL;
    if (node->name() == GPStrings::GPTreeADF_FUNCTION)
    {
        res = new GPTreeADFPoint(base->vQueryFunction(node->attr()), -1);
        for (auto c : node->getChildren())
        {
            if (c->name() == GPStrings::GPTreeADF_STATUS)
            {
                std::vector<istream*> streams;
                for (auto cc : c->getChildren())
                {
                    std::istringstream* is = new std::istringstream(cc->attr());
                    streams.push_back(is);
                }
                res->initStatus(streams);
                for (auto is : streams)
                {
                    delete is;
                }
            }
            else if (c->name() == GPStrings::GPTreeADF_CHILDREN)
            {
                for (auto cc : c->getChildren())
                {
                    res->addPoint(xmlLoad(cc.get(), base));
                }
            }
        }
    }
    else if (node->name() == GPStrings::GPTreeADF_INPUTS)
    {
        int inputpos = -1;
        std::istringstream is(node->attr());
        is >> inputpos;
        res = new GPTreeADFPoint(NULL, inputpos);
    }