15#ifndef _RBT_FILTEREXPRESSION_H_
16#define _RBT_FILTEREXPRESSION_H_
18#include "rxdock/Error.h"
19#include "rxdock/FilterExpressionVisitor.h"
20#include "rxdock/TokenIter.h"
21#include "rxdock/geneticprogram/GPTypes.h"
25#include <nlohmann/json.hpp>
27using json = nlohmann::json;
31class FilterExpressionVisitor;
35 static const std::string _CT;
36 virtual void Print() = 0;
38 virtual int GetNOps() = 0;
48 ReturnType GetValue() {
return value; }
49 void SetValue(ReturnType v) { value = v; }
65typedef std::vector<FilterExpressionPtr> FilterExpressionList;
67typedef FilterExpressionList::iterator FilterExpressionListIter;
68typedef FilterExpressionList::const_iterator FilterExpressionListConstIter;
75 void Print() { std::cout <<
"v" << vble.GetName() <<
" "; }
76 int GetNOps() {
return 0; }
77 const Vble &GetVble()
const {
return vble; }
79 throw Error(_WHERE_,
"Vble Expressions don't have operands");
95 virtual int GetNOps() {
return 1; }
100 throw Error(_WHERE_,
"Log Expressions only have 1 operand");
116 virtual int GetNOps() {
return 1; }
121 throw Error(_WHERE_,
"Exp Expressions only have 1 operand");
138 virtual int GetNOps() {
return 2; }
145 throw Error(_WHERE_,
"Add Expressions only have 2 operands");
162 virtual int GetNOps() {
return 2; }
169 throw Error(_WHERE_,
"Sub Expressions only have 2 operands");
186 virtual int GetNOps() {
return 2; }
193 throw Error(_WHERE_,
"Mul Expressions only have 2 operands");
210 virtual int GetNOps() {
return 2; }
217 throw Error(_WHERE_,
"Div Expressions only have 2 operands");
234 virtual int GetNOps() {
return 2; }
241 throw Error(_WHERE_,
"And Expressions only have 2 operands");
259 virtual int GetNOps() {
return 3; }
268 throw Error(_WHERE_,
"Add Expressions only have 3 operands");
Definition FilterExpression.h:128
Definition FilterExpression.h:224
Definition FilterExpression.h:200
Definition FilterExpression.h:107
Definition FilterExpressionVisitor.h:34
Definition FilterExpression.h:33
Definition FilterExpression.h:248
Definition FilterExpression.h:86
Definition FilterExpression.h:176
Definition FilterExpression.h:152
Definition FilterExpression.h:70
Definition SmartPointer.h:48