00001
00002
00003
00004 class Atribut : public Tree::Primitives::Primitive
00005 {
00006 public:
00007
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
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
00047 EvalOp* eval = (EvalOp*) state_->getContext()->environment;
00048
00049
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
00068
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
00093 operacija = 0;
00094 name_ += " = ";
00095
00096
00097 vrijednosti.clear();
00098 vrijednosti.push_back("no");
00099 vrijednosti.push_back("yes");
00100
00101
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
00117
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
00142 operacija = 1;
00143 name_ += " < ";
00144
00145
00146
00147
00148
00149
00150
00151 uint v = state->getRandomizer()->getRandomInteger(10);
00152 name_ += uint2str(v);
00153 vrijednost = v;
00154
00155 return true;
00156 }
00157 };