Beispiel #1
0
CompoundPropStore::CompoundPropStore(int c,vector<pair<pddl_type *,vector<const pddl_type *> > > & tps,TMap & t,extended_pred_symbol * e,Associater * a) : 
		PropStore(), stores(c)
{
	int arity = tps.size();
	vector<pddl_type *> tps1;
	for(int i = 0;i < c;++i)
	{
		tps1.clear();
		TypeExtractor tex(tps,i);
		while(!(tex == TypeExtractor(arity)))
		{
			pddl_type * tt = *tex;
//			cout << "Got " << tt->getName() << "\n";
			tps1.push_back(tt);
			++tex;
		};
//		if(e->getName()=="can-carry")
//		{
//			t.write(cout);
//		};
		
		SimplePropStore * s = t.get(tps1.begin(),tps1.end());
		if(!s)
		{	
//			cout << "About to find\n";
			extended_pred_symbol * f = a->find(e,tps1.begin(),tps1.end());
			if(!f->getParent())
			{
				e->getParent()->add(f);
			};
//			cout << "Ready to record ";
//			f->writeName(cout);
//			cout << "\n";
			s = new SimplePropStore(f);
//			TypeExtractor te(tps,i);
//			cout << "building for ";
//			while(!(te == TypeExtractor(arity)))
//			{
//				cout << (*te)->getName() << " ";
//				++te;
//			};
//			cout << "\n";
			
			t.insert(tps1.begin(),tps1.end(),s);
		};
		stores[i] = s;
		records.insert(tps1.begin(),tps1.end(),s);
	};
};