00001 #include "ECF_base.h" 00002 #include "TermMaxGenOp.h" 00003 00004 00005 void TermMaxGenOp::registerParameters(StateP state) 00006 { 00007 int *maxgen = new int(0); 00008 state->getRegistry()->registerEntry("term.maxgen", (voidP) maxgen, ECF::UINT, 00009 "max number of generations (default: none)"); 00010 } 00011 00012 00013 bool TermMaxGenOp::initialize(StateP state) 00014 { 00015 voidP sptr = state->getRegistry()->getEntry("term.maxgen"); 00016 nGenerations_ = *((uint*) sptr.get()); 00017 00018 if(state->getRegistry()->isModified("term.maxgen")) 00019 return true; 00020 00021 return false; 00022 } 00023 00024 00025 bool TermMaxGenOp::operate(StateP state) 00026 { 00027 if(state->getGenerationNo() >= nGenerations_) { 00028 state->setTerminateCond(); 00029 ECF_LOG(state, 1, "Termination: max generation reached (" + uint2str(nGenerations_) + ")"); 00030 } 00031 00032 return true; 00033 }