TypeHierarchy::TypeHierarchy(const analysis * a) : leafNodes() { if(!a || !a->the_domain) { ParseFailure pf; throw(pf); }; if(!a->the_domain->types) return; for(pddl_type_list::const_iterator i = a->the_domain->types->begin(); i != a->the_domain->types->end();++i) { if((*i)->type) { add(PTypeRef(*i),PTypeRef((*i)->type)); addDown(PTypeRef((*i)->type),PTypeRef(*i)); } else { if((*i)->either_types) { for(pddl_type_list::const_iterator j = (*i)->either_types->begin(); j != (*i)->either_types->end();++j) { add(PTypeRef(*i),PTypeRef(*j)); addDown(PTypeRef(*j),PTypeRef(*i)); }; } else { PTypeRef pt(*i); Graph::iterator j = graph.find(&pt); if(j == graph.end()) { TypeRef * c = pt.clone(); graph[c] = set<const TypeRef*>(); downGraph[c] = set<const TypeRef*>(); }; }; }; }; };
void Model::deserialize( XMLloader& loader, istream& file ) { ModelDef::deserialize( loader, ModelDef( Vector2f(), 0, Vector2f(1,1), 0, 255, 255, 255, 255 ) ); if (childDown != nullptr) { delete childDown; childDown = nullptr; } if (childUp != nullptr) { delete childUp; childUp = nullptr; } if (sibling != nullptr) { delete sibling; sibling = nullptr; } setTexture( loader.load( "ts", (size_t)0 ) ); setColor( sf::Color( clR, clG, clB, clA ) ); loader.nextLine(file); while( loader.str() != "\\" ) { bool b = loader.load( "ud", 0 ); Model *m = new Model(); if( b == 0 ) addUp( m ); else addDown( m ); m->deserialize( loader, file ); loader.nextLine(file); } }