00001 #include "AgentEvalOp.h" 00002 00003 00004 class IfVisited : public Tree::Primitives::Primitive 00005 { 00006 public: 00007 00008 IfVisited() 00009 { 00010 nArguments_ = 3; 00011 name_ = "ifv"; 00012 } 00013 00014 void execute(void* evalOp, Tree::Tree& tree) 00015 { 00016 00017 AgentEvalOp* ant = (AgentEvalOp*) evalOp; 00018 00019 00020 if( ant->checkIfVisited() == 0) 00021 { 00022 getNextArgument(evalOp, tree); 00023 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00024 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00025 } 00026 else if(ant->checkIfVisited() == 1) 00027 { 00028 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00029 getNextArgument(evalOp, tree); 00030 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00031 } 00032 else if(ant->checkIfVisited() == 2) 00033 { 00034 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00035 tree.iNode_ += tree[tree.iNode_ + 1]->size_; 00036 getNextArgument(evalOp, tree); 00037 } 00038 } 00039 00040 ~IfVisited() 00041 { } 00042 };