Changeset 150 for cpp/frams/genetics/geno.h
- Timestamp:
- 03/01/14 22:05:02 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified cpp/frams/genetics/geno.h ¶
r145 r150 15 15 class GenoValidator 16 16 { 17 18 virtual int testGenoValidity(Geno& g)=0;/// -1=no information 0=invalid 1=valid17 public: 18 virtual int testGenoValidity(Geno& g) = 0;/// -1=no information 0=invalid 1=valid 19 19 }; 20 20 21 /// basic GenoValidator that works by building a Model from any Geno (by converting to f0)22 /// validation fails when the model can't be built or the genotype can't be converted23 class ModelGenoValidator : public GenoValidator21 /// Basic GenoValidator that works by building a Model from any Geno (by converting to f0). 22 /// Validation fails when the model can't be built or the genotype can't be converted. 23 class ModelGenoValidator : public GenoValidator 24 24 { 25 25 public: … … 28 28 29 29 /// basic information about a single genotype. 30 class Geno : public DestrBase30 class Geno : public DestrBase 31 31 { 32 friend class Simulator;//needs to access validators directly33 SString gen;34 SString name;35 char format;36 SString txt;37 int isvalid; ///< <0 -> unknown >=0 -> value for "isValid"32 friend class Simulator;//needs to access validators directly 33 SString gen; 34 SString name; 35 char format; 36 SString txt; 37 int isvalid; ///< <0 -> unknown >=0 -> value for "isValid" 38 38 39 Geno *f0gen;39 Geno *f0gen; 40 40 41 int mapinshift; /// #of characters in the initial comment42 int mapoutshift; /// #of characters in the output comment43 int multiline;41 int mapinshift; /// number of characters in the initial comment 42 int mapoutshift; /// number of characters in the output comment 43 int multiline; 44 44 45 void init(const SString& genstring,char genformat,const SString& genname,const SString& comment);46 void validate(void);45 void init(const SString& genstring, char genformat, const SString& genname, const SString& comment); 46 void validate(void); 47 47 48 void freeF0();48 void freeF0(); 49 49 50 bool isInvalid() {return isvalid==0;}50 bool isInvalid() { return isvalid == 0; } 51 51 52 friend class Model;53 friend class GenoConvManager;54 52 friend class Model; 53 friend class GenoConvManager; 54 55 55 public: 56 /// create a genotype object from primitives57 /// @param genstring pure genotype, without any comments58 /// @param genformat genotype format59 /// @param comment information about genotype (for genetic operators and "history")60 Geno(const char *genstring=0,char genformat=-1,const char *genname=0,const char *comment=0);56 /// create a genotype object from primitives 57 /// @param genstring pure genotype, without any comments 58 /// @param genformat genotype format 59 /// @param comment information about genotype (for genetic operators and "history") 60 Geno(const char *genstring = 0, char genformat = -1, const char *genname = 0, const char *comment = 0); 61 61 62 /// create a genotype object from primitives63 /// @param genstring pure genotype, wihtout any comments64 /// @param genformat genotype format65 /// @param name genotype name, new name will generated if needed66 /// @param comment information about genotype (for genetic operators and "history")67 Geno(const SString& genstring,char genformat,const SString& genname,const SString& comment);62 /// create a genotype object from primitives 63 /// @param genstring pure genotype, wihtout any comments 64 /// @param genformat genotype format 65 /// @param name genotype name, new name will generated if needed 66 /// @param comment information about genotype (for genetic operators and "history") 67 Geno(const SString& genstring, char genformat, const SString& genname, const SString& comment); 68 68 69 /// create object from full string, containing optional format and comment information70 Geno(const SString & fullstring);69 /// create object from full string, containing optional format and comment information 70 Geno(const SString & fullstring); 71 71 72 /// clone73 Geno(const Geno& src);72 /// clone 73 Geno(const Geno& src); 74 74 75 void operator=(const Geno& src);75 void operator=(const Geno& src); 76 76 77 ~Geno();77 ~Geno(); 78 78 79 void setValid(int v) {isvalid=v;}80 int getValid() {return isvalid;}79 void setValid(int v) { isvalid = v; } 80 int getValid() { return isvalid; } 81 81 82 /// return string representation, with format comment at the beginning83 SString toString(void) const;84 SString shortString(void) const;82 /// return string representation, with format comment at the beginning 83 SString toString(void) const; 84 SString shortString(void) const; 85 85 86 void setString(const SString& genewithcomments);86 void setString(const SString& genewithcomments); 87 87 88 /** @param newformat=-1 -> don't change */89 void setGene(const SString& g, char newformat=-1);90 SString getGene(void) const;88 /** @param newformat=-1 -> don't change */ 89 void setGene(const SString& g, char newformat = -1); 90 SString getGene(void) const; 91 91 92 SString getName(void) const;93 void setName(const SString&);94 char getFormat(void) const;92 SString getName(void) const; 93 void setName(const SString&); 94 char getFormat(void) const; 95 95 96 SString getComment(void) const;97 void setComment(const SString&);96 SString getComment(void) const; 97 void setComment(const SString&); 98 98 99 /// invalid genotype cannot be used to build a creature100 bool isValid(void);99 /// invalid genotype cannot be used to build a creature 100 bool isValid(void); 101 101 102 /// make converted version of the genotype. 103 Geno getConverted(char otherformat,MultiMap *m=0); 102 /// make converted version of the genotype. 103 /// @param converter_missing optional output parameter (ignored when NULL). Receives true if the conversion fails because of the lack of appropriate converter(s) (the returned Geno is always invalid in this case). Receives false if the genotype was converted by a converter or a converter chain (the returned Geno can be valid or invalid, depending on the converter's decision). 104 Geno getConverted(char otherformat, MultiMap *m = 0, bool *converter_missing = NULL); 104 105 105 /// @return -1 = before first char in the string106 /// @return -2 = after last char in the string107 int mapGenToString(int genpos) const;108 /// @return -1 = before first char in the genotype109 /// @return -2 = after last char in the genotype110 int mapStringToGen(int stringpos) const;106 /// @return -1 = before first char in the string 107 /// @return -2 = after last char in the string 108 int mapGenToString(int genpos) const; 109 /// @return -1 = before first char in the genotype 110 /// @return -2 = after last char in the genotype 111 int mapStringToGen(int stringpos) const; 111 112 112 int operator==(const Geno &g) {return (format==g.format)&&(gen==g.gen);}113 int operator==(const Geno &g) { return (format == g.format) && (gen == g.gen); } 113 114 114 void* owner;115 void* owner; 115 116 116 // managing global Geno-related objects (used for validation and conversion)117 static void addValidator(GenoValidator* gv) {validators+=gv;}118 static void removeValidator(GenoValidator* gv) {validators-=gv;}119 static void useConverters(GenoConvManager& gcm) {converters=&gcm;}120 static GenoConvManager &getConverters() {return *converters;}121 122 static GenoConvManager *converters;123 static SListTempl<GenoValidator*> validators;117 // managing global Geno-related objects (used for validation and conversion) 118 static void addValidator(GenoValidator* gv) { validators += gv; } 119 static void removeValidator(GenoValidator* gv) { validators -= gv; } 120 static void useConverters(GenoConvManager& gcm) { converters = &gcm; } 121 static GenoConvManager &getConverters() { return *converters; } 122 protected: 123 static GenoConvManager *converters; 124 static SListTempl<GenoValidator*> validators; 124 125 }; 125 126
Note: See TracChangeset
for help on using the changeset viewer.