Nemo  2.4.0
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
indfactory.h
Go to the documentation of this file.
1 
28 #ifndef FACTORY_H
29 #define FACTORY_H
30 
31 #include <map>
32 #include <deque>
33 #include "individual.h"
34 #include "types.h"
35 #include "ttrait.h"
36 
42 class IndFactory {
43 protected:
45  std::map< trait_t, TraitPrototype* > _protoTraits;
47  std::map< trait_t, int > _TraitsIndex;
48 
51 
53  std::deque<Individual*> RecyclingPOOL;
54 
55 public:
56 
57  IndFactory ( ) { };
58  virtual ~IndFactory ( );
59 
61  void recycle(Individual* ind)
62  { if(ind == NULL) error("IndFactory::recycle:ind is NULL!!\n"); else RecyclingPOOL.push_back(ind); }
63 
66  { for(unsigned int i=0; i < RecyclingPOOL.size(); ++i) delete RecyclingPOOL[i]; RecyclingPOOL.clear(); }
67 
72  void makePrototype (map< trait_t,TraitPrototype* > TTlist);
73 
75  void clearPrototype ( );
76 
79 
85 
96  Individual* makeNewIndividual (Individual* newind, Individual* mother, Individual* father, sex_t sex, unsigned short homepatch);
97 
107  Individual* decorateNewIndividual (Individual* newind, Individual* mother, Individual* father, sex_t sex, unsigned short homepatch);
108 
119  Individual* makeNewIndividual (Individual* mother, Individual* father, sex_t sex, unsigned short homepatch);
120 
128  Individual* makeOffsprg (Individual* mother, Individual* father, sex_t sex, unsigned short homepatch);
129 
132 
137 
139  std::map< trait_t,TraitPrototype* >& getTraitPrototypes ( ) {return _protoTraits;}
140 
143  int getTraitIndex (trait_t type);
144 
145 };
146 
147 #endif
148 
Factory of Individual, stores the individual prototype and the trait prototypes, manages the individu...
Definition: indfactory.h:42
Individual * makeNewIndividual(Individual *newind, Individual *mother, Individual *father, sex_t sex, unsigned short homepatch)
Creates an individual from existing pointer with new ID.
Definition: indfactory.cc:151
void recycle(Individual *ind)
Put an individual in the recycling pool.
Definition: indfactory.h:61
virtual ~IndFactory()
Definition: indfactory.cc:35
std::deque< Individual * > RecyclingPOOL
Garbage collector for unused Individual's.
Definition: indfactory.h:53
Individual * makeOffsprg(Individual *mother, Individual *father, sex_t sex, unsigned short homepatch)
Completely creates an individual with inheritance and mutations on all traits.
Definition: indfactory.cc:233
Individual * decorateNewIndividual(Individual *newind, Individual *mother, Individual *father, sex_t sex, unsigned short homepatch)
Sets the internals of a new individual with pointers to parents, sex and home ID set.
Definition: indfactory.cc:179
std::map< trait_t, int > _TraitsIndex
Table containing the index of each trait.
Definition: indfactory.h:47
Individual * getNewIndividual()
Creates a blank individual which has to be "decorated" later.
Definition: indfactory.h:84
void makePrototype(map< trait_t, TraitPrototype * > TTlist)
Creates the individuals prototype from the selected trait prototypes.
Definition: indfactory.cc:49
std::map< trait_t, TraitPrototype * > _protoTraits
Map of the trait prototypes.
Definition: indfactory.h:45
void purgeRecyclingPOOL()
Empty the recycling pool.
Definition: indfactory.h:65
int getTraitIndex(trait_t type)
Gives the index of trait with type.
Definition: indfactory.cc:127
void clearPrototype()
Reset the trait prototypes, mostly done to unregister the genetic maps.
Definition: indfactory.cc:102
std::map< trait_t, TraitPrototype * > & getTraitPrototypes()
Accessor to the list of TraitPrototype's.
Definition: indfactory.h:139
IndFactory()
Definition: indfactory.h:57
Individual * getPrototypeClone()
Return an uninitialized copy of the individual prototype.
Definition: indfactory.h:78
Individual * getIndividualProtoype()
Individual prototype accessor.
Definition: indfactory.h:131
TraitPrototype * getTraitPrototype(trait_t type)
Accessor to a TraitPrototype.
Definition: indfactory.cc:139
Individual _protoIndividual
The individuals prototype used to create any new individual in a simulation.
Definition: indfactory.h:50
This class contains traits along with other individual information (sex, pedigree,...
Definition: individual.h:48
Individual * clone()
Cloning procedure, clones all the traits present in the individual.
Definition: individual.cc:149
TTrait setter.
Definition: ttrait.h:130
int error(const char *str,...)
Definition: output.cc:78
Nemo2.
Nemo2.
std::string trait_t
Trait types.
Definition: types.h:62
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:35
@ MAL
Definition: types.h:36

Generated for Nemo v2.4.0 by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR