_actions[*effect] = *action;
}
}
- cout << "Number of actions: " << _actions.size() << endl;
+ cerr << "Number of actions: " << _actions.size() << endl;
makePlan(_finish);
}
Planner::~Planner(){
- for (hash_map<string,Node*>::iterator node = _addedNodes.begin(); node != _addedNodes.end(); ++node){
- cerr << "Deleting node " << node->second->action().name() << endl;
- delete node->second;
+ for (vector<Node*>::iterator node = _addedNodes.begin(); node != _addedNodes.end(); ++node){
+ cerr << "Deleting node " << (*node)->action().name() << endl;
+ delete *node;
}
}
}else{
for (Preconditions::const_iterator precond = preconds.begin(); precond != preconds.end(); ++precond){
cerr << "Looking for: '" << precond->first << "'" << endl;
- hash_map<string,Node*>::iterator addedNode = _addedNodes.find(precond->first);
- if(addedNode != _addedNodes.end()){
+ hash_map<string,Node*>::iterator addedNode = _addedEffects.find(precond->first);
+ if(addedNode != _addedEffects.end()){
cerr << "Using already added node" << endl;
addedNode->second->addChild(node);
}else {
cerr << "Adding node for action: " << node->action().name() << endl;
const Literals& effects = node->action().effects(0);
cerr << "Number of effects: " << effects.size() << endl;
+ _addedNodes.push_back(node);
for (Literals::const_iterator effect = effects.begin(); effect != effects.end(); ++effect){
- cout << "Adding node for effect: " << *effect << endl;
- _addedNodes[*effect] = node;
+ cerr << "Adding node for effect: " << *effect << endl;
+ _addedEffects[*effect] = node;
}
}