• Main Page
  • Classes
  • Files
  • File List

D:/Radagast_D/Projekt/ECF_trunk/ECF/tree/PrimitiveSet.h

00001 #ifndef PrimitiveSet_h
00002 #define PrimitiveSet_h
00003 #include <vector>
00004 #include "Primitive.h"
00005 
00006 
00007 namespace Tree
00008 {
00009 
00013 class PrimitiveSet
00014 {
00015     friend class Tree;
00016 public:
00017     PrimitiveSet();
00018     virtual ~PrimitiveSet();
00019 
00020     bool initialize(StateP state);
00021 
00022     void addFunction(PrimitiveP functionPrimitive);
00023     bool addFunction(std::string name);
00024     void addTerminal(PrimitiveP terminalPrimitive);
00025 
00026     PrimitiveP getRandomTerminal();
00027     PrimitiveP getRandomFunction();
00028     PrimitiveP getRandomPrimitive();
00029     
00030     PrimitiveP getTerminalByName(std::string name);
00031     PrimitiveP getFunctionByName(std::string name);
00032     PrimitiveP getPrimitiveByName(std::string name);
00033     
00034     uint getFunctionSetSize();
00035     uint getTerminalSetSize();
00036     uint getPrimitivesSize();
00037 
00038 protected:
00039     StateP state_;
00040 
00041     std::map <std::string, PrimitiveP> mPrimitives_;    
00042     std::map <std::string, Primitives::terminal_type> mTypeNames_;
00043 
00044     std::vector<PrimitiveP> terminalSet_;   
00045     std::vector<PrimitiveP> functionSet_;   
00046     std::vector<PrimitiveP> primitives_;    
00047 };
00048 typedef boost::shared_ptr<PrimitiveSet> PrimitiveSetP;
00049 
00050 typedef std::map <std::string, PrimitiveP>::iterator prim_iter;
00051 typedef std::map <std::string, Primitives::terminal_type>::iterator type_iter;
00052 
00053 }
00054 #endif

Generated on Wed Sep 1 2010 14:31:21 for ECF by  doxygen 1.7.1