bool ossimQuadTreeWarp::recursiveSave(ossimQuadTreeWarpNode* node, ossimKeywordlist& kwl, const char* prefix)const { if(!node) return false; if(!node->saveState(kwl, prefix)) { return false; } if(node->isLeaf()) { return true; } else { for(ossim_uint32 i = 0; i < node->theChildren.size(); ++ i) { ossimString newPrefix = ossimString(prefix) + ossimString::toString(i) + "."; if(!recursiveSave(node->theChildren[i], kwl, newPrefix.c_str())) { return false; } } } return true; }
void recursiveSave(Node& root, std::ostream& file){ for(Node::iterator i=root.begin(); i!=root.end(); i++){ file<<(*i)->data()<<std::endl;//write the current node as an entry to the previous recursiveSave(**i, file);//save this nodes entrys file<<"@"<<std::endl;//end node } }
bool ossimQuadTreeWarp::saveState(ossimKeywordlist& kwl, const char* prefix)const { for(ossim_uint32 i = 0; i < theVertexList.size(); ++i) { ossimString newPrefix = ossimString(prefix)+ "v" + ossimString::toString(i) +"."; theVertexList[i]->saveState(kwl, newPrefix.c_str()); } recursiveSave(theTree, kwl, prefix); return ossim2dTo2dTransform::saveState(kwl, prefix); }
bool save(Node& root, std::string filename){ std::ofstream fout(filename.c_str()); if(!fout)return false;//if it already failed recursiveSave(root, fout);//goto function above return fout;//return the status }