00001 #include "EvalOp.h" 00002 00003 00007 class IfBetter : public Tree::Primitives::Primitive 00008 { 00009 public: 00010 IfBetter() 00011 { 00012 nArguments_ = 2; 00013 name_ = "ifb"; 00014 } 00015 00016 void execute(void* result, Tree::Tree& tree) 00017 { 00018 // get pointer to network from the context 00019 Network* net = (Network*) state_->getContext()->environment; 00020 00021 // query the network: is the new error better? 00022 if(net->ifBetter()) { 00023 // if yes, execute the first subtree 00024 getNextArgument(result, tree); 00025 // and skip the second one 00026 skipNextArgument(tree); 00027 } else { 00028 // otherwise... 00029 skipNextArgument(tree); 00030 getNextArgument(result, tree); 00031 } 00032 } 00033 00034 ~IfBetter() 00035 { } 00036 };