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); }