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 }