1#include "PrimitiveSetAP.h"
2#include "../tree/Tree.h"
3#include "../tree/Primitive.h"
9 PrimitiveSetAP::PrimitiveSetAP()
13 PrimitiveSetAP::~PrimitiveSetAP()
17 bool PrimitiveSetAP::initialize(StateP state)
22 PrimitiveP prim = (PrimitiveP)(
new Primitives::Add);
24 prim = (PrimitiveP)(
new Primitives::Sub);
26 prim = (PrimitiveP)(
new Primitives::Mul);
28 prim = (PrimitiveP)(
new Primitives::Div);
30 prim = (PrimitiveP)(
new Primitives::Sin);
32 prim = (PrimitiveP)(
new Primitives::Cos);
34 prim = (PrimitiveP)(
new Primitives::Pos);
36 prim = (PrimitiveP)(
new Primitives::Neg);
38 prim = (PrimitiveP)(
new Primitives::Max);
40 prim = (PrimitiveP)(
new Primitives::Min);
45 primIter->second->initialize(state);
48 mTypeNames_.insert(std::pair<std::string, Primitives::terminal_type>(
"DOUBLE", Primitives::Double));
49 mTypeNames_.insert(std::pair<std::string, Primitives::terminal_type>(
"INT", Primitives::Int));
50 mTypeNames_.insert(std::pair<std::string, Primitives::terminal_type>(
"BOOL", Primitives::Bool));
51 mTypeNames_.insert(std::pair<std::string, Primitives::terminal_type>(
"CHAR", Primitives::Char));
52 mTypeNames_.insert(std::pair<std::string, Primitives::terminal_type>(
"STRING", Primitives::String));
100 PrimitiveP PrimitiveSetAP::getTerminalByIndex(uint index) {
104 PrimitiveP PrimitiveSetAP::getGFSOneByIndex(uint index) {
108 PrimitiveP PrimitiveSetAP::getGFSTwoByIndex(uint index) {
112 PrimitiveP PrimitiveSetAP::getPrimitiveByIndex(uint index) {
127 int argNum = iter->second->getNumberOfArguments();
133 else if (argNum == 1) {
137 else if (argNum == 2) {
155 mTerminalSet_[terminalPrimitive->getName()] = terminalPrimitive;
162 uint PrimitiveSetAP::getFunctionSetSize()
164 return getGFSOneSetSize() + getGFSTwoSetSize();
167 uint PrimitiveSetAP::getGFSOneSetSize()
172 uint PrimitiveSetAP::getGFSTwoSetSize()
std::vector< PrimitiveP > GFSOneSet_
vector of active (actual used) functions
PrimitiveP getTerminalByName(std::string name)
Access terminal by name (active terminals only).
std::map< std::string, PrimitiveP > mAllPrimitives_
map of all registered primitive functions
std::vector< PrimitiveP > primitives_
vector of active (actual used) primitives
void addTerminal(PrimitiveP terminalPrimitive)
Add a terminal primitive to the set of active primitives.
std::vector< PrimitiveP > GFSTwoSet_
vector of active (actual used) functions
uint getTerminalSetSize()
Get the number of active terminals.
bool addFunction(std::string name)
Add a function primitive to the set of active primitives - if found by name in collection of all prim...
PrimitiveP getPrimitiveByName(std::string name)
Access primitive by name (active functions or terminals only).
PrimitiveP getGFSTwoByName(std::string name)
Access function by name (active functions only).
std::map< std::string, PrimitiveP > mPrimitiveSet_
map of active (actual used) primitives
uint getPrimitivesSize()
Get the number of active primitives (functions and terminals).
std::vector< PrimitiveP > terminalSet_
vector of active (actual used) terminals
std::map< std::string, PrimitiveP > mGFSTwoSet_
map of active (actual used) functions
std::map< std::string, PrimitiveP > mTerminalSet_
map of active (actual used) terminals
PrimitiveP getGFSOneByName(std::string name)
Access function by name (active functions only).
std::map< std::string, PrimitiveP > mGFSOneSet_
map of active (actual used) functions