• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/examples/landscape/atributi.h

00001 
00002 
00003 // osnovni razred za sve atribute
00004 class Atribut : public Tree::Primitives::Primitive
00005 {
00006 public:
00007     // dvije funkcije koje reguliraju ponasanje unutar razreda Tree
00008     Tree::PrimitiveP copyWithNode(Tree::PrimitiveP primitive)
00009     {
00010         return (Tree::PrimitiveP) new Atribut(*this);
00011     }
00012     Tree::PrimitiveP assignToNode(Tree::PrimitiveP primitive)
00013     {
00014         Atribut *a = new Atribut(*this);
00015         a->initialize(state_);
00016 
00017         return (Tree::PrimitiveP) a;
00018     }
00019 
00020 
00021 // podaci
00022     int operacija;
00023     int vrijednost;
00024     std::vector<std::string> vrijednosti;
00025 
00026     Atribut()
00027     {
00028         nArguments_ = 2;
00029         name_ = "atr";
00030     }
00031 
00036     bool initialize(StateP state)
00037     {
00038         state_ = state;
00039         name_ = "atr=";
00040 
00041         return true;
00042     }
00043 
00044     void execute(void *result, Tree::Tree& tree)
00045     {
00046         // get pointer to simulator from the context
00047         EvalOp* eval = (EvalOp*) state_->getContext()->environment;
00048 
00049         // provjeri istinitost
00050         if(eval->isAtr(this)) {
00051             this->getNextArgument(result, tree);
00052             this->skipNextArgument(tree);
00053         }
00054         else {
00055             this->skipNextArgument(tree);
00056             this->getNextArgument(result, tree);
00057         }
00058     }
00059 
00060 };
00061 
00062 
00063 
00064 class Unimodal : public Atribut
00065 {
00066 public:
00067     // dvije funkcije koje reguliraju ponasanje unutar razreda Tree
00068     // mmoraju biti unutar svakog razreda atributa, samo treba promijeniti ime razreda!
00069     Tree::PrimitiveP copyWithNode(Tree::PrimitiveP primitive)
00070     {
00071         return (Tree::PrimitiveP) new Unimodal(*this);
00072     }
00073     Tree::PrimitiveP assignToNode(Tree::PrimitiveP primitive)
00074     {
00075         Unimodal *a = new Unimodal(*this);
00076         a->initialize(state_);
00077 
00078         return (Tree::PrimitiveP) a;
00079     }
00080 
00081     Unimodal()
00082     {
00083         nArguments_ = 2;
00084         name_ = "unimodal";
00085     }
00086 
00087     bool initialize(StateP state)
00088     {
00089         state_ = state;
00090         name_ = "unimodal";
00091 
00092         // slucajna operacija
00093         operacija = 0;
00094         name_ += " = ";
00095 
00096         // inicijalizacija svih mogucih vrijednosti svih atributa:
00097         vrijednosti.clear();
00098         vrijednosti.push_back("no");
00099         vrijednosti.push_back("yes");
00100 
00101         // slucajna vrijednost (ili vise razlicitih)
00102         int v = state->getRandomizer()->getRandomInteger((int) vrijednosti.size());
00103         name_ += vrijednosti[v];
00104         vrijednost = v;
00105 
00106         return true;
00107     }
00108 };
00109 
00110 
00111 
00112 
00113 class Distance : public Atribut
00114 {
00115 public:
00116     // dvije funkcije koje reguliraju ponasanje unutar razreda Tree
00117     // mmoraju biti unutar svakog razreda atributa, samo treba promijeniti ime razreda!
00118     Tree::PrimitiveP copyWithNode(Tree::PrimitiveP primitive)
00119     {
00120         return (Tree::PrimitiveP) new Distance(*this);
00121     }
00122     Tree::PrimitiveP assignToNode(Tree::PrimitiveP primitive)
00123     {
00124         Distance *a = new Distance(*this);
00125         a->initialize(state_);
00126 
00127         return (Tree::PrimitiveP) a;
00128     }
00129 
00130     Distance()
00131     {
00132         nArguments_ = 2;
00133         name_ = "distance";
00134     }
00135 
00136     bool initialize(StateP state)
00137     {
00138         state_ = state;
00139         name_ = "distance";
00140 
00141         // slucajna operacija
00142         operacija = 1;
00143         name_ += " < ";
00144 
00145         // inicijalizacija svih mogucih vrijednosti svih atributa:
00146 //      vrijednosti.clear();
00147 //      vrijednosti.push_back("no");
00148 //      vrijednosti.push_back("yes");
00149 
00150         // slucajna vrijednost (ili vise razlicitih)
00151         uint v = state->getRandomizer()->getRandomInteger(10);
00152         name_ += uint2str(v);
00153         vrijednost = v;
00154 
00155         return true;
00156     }
00157 };

Generated on Thu Jul 10 2014 14:13:41 for ECF by  doxygen 1.7.1