00001 #include "NLstl_utils.h" 00002 00003 #include "GLBaseMutator.h" 00004 #include "GLBaseOrganism.h" 00005 #include "GLInitialiserMutator.h" 00006 00016 GLInitialiserMutator::GLInitialiserMutator(GLBaseOrganism *initialOrganism, 00017 GLBaseMutator* mutator, 00018 bool returnInitial) 00019 { 00020 nlutils::assertPointer(initialOrganism, 00021 "initialOrganism from " 00022 "GLInitialiserMutator::GLInitialiserMutator"); 00023 nlutils::assertPointer(mutator, 00024 "mutator from " 00025 "GLInitialiserMutator::GLInitialiserMutator"); 00026 m_initial_organism = initialOrganism->makeClone(); 00027 m_mutator = mutator->copy(); 00028 m_return_initial = returnInitial; 00029 }//constructor 00030 00035 GLInitialiserMutator::~GLInitialiserMutator() 00036 { 00037 if (m_initial_organism != NULL) delete m_initial_organism; 00038 if (m_mutator != NULL) delete m_mutator; 00039 }//destructor 00040 00045 GLBaseOrganism* GLInitialiserMutator::initialiseOrganism() 00046 { 00047 if (m_return_initial) 00048 { 00049 m_return_initial = false; 00050 return m_initial_organism->makeClone(); 00051 } 00052 GLBaseOrganism *organism = m_initial_organism->makeClone(); 00053 m_mutator->mutateOrganism(organism); 00054 return organism; 00055 } 00056 00061 void GLInitialiserMutator::resetInitial() 00062 { 00063 m_return_initial = true; 00064 }