MADARA  3.4.1
Visitor.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef _MADARA_VISITOR_H_
3 #define _MADARA_VISITOR_H_
4 
5 namespace madara
6 {
7 namespace expression
8 {
9 class LeafNode;
10 class VariableNode;
11 class VariableDecrementNode;
12 class VariableDivideNode;
13 class VariableIncrementNode;
14 class VariableMultiplyNode;
15 class VariableCompareNode;
16 class ListNode;
17 class CompositeArrayReference;
18 class CompositeConstArray;
19 class CompositeNegateNode;
20 class CompositePostdecrementNode;
21 class CompositePostincrementNode;
22 class CompositePredecrementNode;
23 class CompositePreincrementNode;
24 class CompositeNotNode;
25 class CompositeAddNode;
26 class CompositeBothNode;
27 class CompositeSequentialNode;
28 class CompositeSquareRootNode;
29 class CompositeFunctionNode;
30 class CompositeForLoop;
31 class CompositeImpliesNode;
32 class CompositeAssignmentNode;
33 class CompositeAndNode;
34 class CompositeOrNode;
35 class CompositeEqualityNode;
36 class CompositeInequalityNode;
37 class CompositeLessThanEqualNode;
38 class CompositeLessThanNode;
39 class CompositeGreaterThanEqualNode;
40 class CompositeGreaterThanNode;
41 class CompositeSubtractNode;
42 class CompositeDivideNode;
43 class CompositeMultiplyNode;
44 class CompositeModulusNode;
45 class CompositeReturnRightNode;
46 class SystemCallClearVariable;
47 class SystemCallCos;
48 class SystemCallDeleteVariable;
49 class SystemCallEval;
50 class SystemCallExpandEnv;
51 class SystemCallExpandStatement;
52 class SystemCallFragment;
53 class SystemCallGeneric;
54 class SystemCallGetClock;
55 class SystemCallGetTime;
56 class SystemCallGetTimeSeconds;
57 class SystemCallIsinf;
58 class SystemCallLogLevel;
59 class SystemCallPow;
60 class SystemCallPrint;
61 class SystemCallPrintSystemCalls;
62 class SystemCallRandDouble;
63 class SystemCallRandInt;
64 class SystemCallReadFile;
65 class SystemCallSetClock;
66 class SystemCallSetFixed;
67 class SystemCallSetPrecision;
68 class SystemCallSetScientific;
69 class SystemCallSin;
70 class SystemCallSize;
71 class SystemCallSleep;
72 class SystemCallSqrt;
73 class SystemCallTan;
74 class SystemCallToBuffer;
75 class SystemCallToDouble;
76 class SystemCallToDoubles;
77 class SystemCallToHostDirs;
78 class SystemCallToInteger;
79 class SystemCallToIntegers;
80 class SystemCallToString;
81 class SystemCallType;
82 class SystemCallWriteFile;
83 
92 class Visitor
93 {
94 public:
96  virtual void visit(const LeafNode& node) = 0;
97 
99  virtual void visit(const CompositeConstArray& node) = 0;
100 
102  virtual void visit(const CompositeArrayReference& node) = 0;
103 
105  virtual void visit(const VariableNode& node) = 0;
106 
108  virtual void visit(const VariableDecrementNode& node) = 0;
109 
111  virtual void visit(const VariableDivideNode& node) = 0;
112 
114  virtual void visit(const VariableIncrementNode& node) = 0;
115 
117  virtual void visit(const VariableMultiplyNode& node) = 0;
118 
120  virtual void visit(const VariableCompareNode& node) = 0;
121 
123  virtual void visit(const ListNode& node) = 0;
124 
126  virtual void visit(const CompositeNegateNode& node) = 0;
127 
129  virtual void visit(const CompositePostdecrementNode& node) = 0;
130 
132  virtual void visit(const CompositePostincrementNode& node) = 0;
133 
135  virtual void visit(const CompositePredecrementNode& node) = 0;
136 
138  virtual void visit(const CompositePreincrementNode& node) = 0;
139 
141  virtual void visit(const CompositeSquareRootNode& node) = 0;
142 
144  virtual void visit(const CompositeNotNode& node) = 0;
145 
147  virtual void visit(const CompositeAddNode& node) = 0;
148 
150  virtual void visit(const CompositeAssignmentNode& node) = 0;
151 
153  virtual void visit(const CompositeAndNode& node) = 0;
154 
156  virtual void visit(const CompositeOrNode& node) = 0;
157 
159  virtual void visit(const CompositeEqualityNode& node) = 0;
160 
162  virtual void visit(const CompositeInequalityNode& node) = 0;
163 
165  virtual void visit(const CompositeGreaterThanEqualNode& node) = 0;
166 
168  virtual void visit(const CompositeGreaterThanNode& node) = 0;
169 
171  virtual void visit(const CompositeLessThanEqualNode& node) = 0;
172 
174  virtual void visit(const CompositeLessThanNode& node) = 0;
175 
177  virtual void visit(const CompositeSubtractNode& node) = 0;
178 
180  virtual void visit(const CompositeDivideNode& node) = 0;
181 
183  virtual void visit(const CompositeMultiplyNode& node) = 0;
184 
186  virtual void visit(const CompositeModulusNode& node) = 0;
187 
189  virtual void visit(const CompositeBothNode& node) = 0;
190 
192  virtual void visit(const CompositeReturnRightNode& node) = 0;
193 
195  virtual void visit(const CompositeSequentialNode& node) = 0;
196 
198  virtual void visit(const CompositeFunctionNode& node) = 0;
199 
201  virtual void visit(const CompositeForLoop& node) = 0;
202 
204  virtual void visit(const CompositeImpliesNode& node) = 0;
205 
207  virtual void visit(const SystemCallClearVariable& node) = 0;
208 
210  virtual void visit(const SystemCallCos& node) = 0;
211 
213  virtual void visit(const SystemCallDeleteVariable& node) = 0;
214 
216  virtual void visit(const SystemCallEval& node) = 0;
217 
219  virtual void visit(const SystemCallExpandEnv& node) = 0;
220 
222  virtual void visit(const SystemCallExpandStatement& node) = 0;
223 
225  virtual void visit(const SystemCallFragment& node) = 0;
226 
228  virtual void visit(const SystemCallGeneric& node) = 0;
229 
231  virtual void visit(const SystemCallGetClock& node) = 0;
232 
234  virtual void visit(const SystemCallGetTime& node) = 0;
235 
237  virtual void visit(const SystemCallGetTimeSeconds& node) = 0;
238 
240  virtual void visit(const SystemCallIsinf& node) = 0;
241 
243  virtual void visit(const SystemCallLogLevel& node) = 0;
244 
246  virtual void visit(const SystemCallPow& node) = 0;
247 
249  virtual void visit(const SystemCallPrint& node) = 0;
250 
252  virtual void visit(const SystemCallPrintSystemCalls& node) = 0;
253 
255  virtual void visit(const SystemCallRandDouble& node) = 0;
256 
258  virtual void visit(const SystemCallRandInt& node) = 0;
259 
261  virtual void visit(const SystemCallReadFile& node) = 0;
262 
264  virtual void visit(const SystemCallSetClock& node) = 0;
265 
267  virtual void visit(const SystemCallSin& node) = 0;
268 
270  virtual void visit(const SystemCallSize& node) = 0;
271 
273  virtual void visit(const SystemCallSleep& node) = 0;
274 
276  virtual void visit(const SystemCallSqrt& node) = 0;
277 
279  virtual void visit(const SystemCallTan& node) = 0;
280 
282  virtual void visit(const SystemCallToBuffer& node) = 0;
283 
285  virtual void visit(const SystemCallToDouble& node) = 0;
286 
288  virtual void visit(const SystemCallToDoubles& node) = 0;
289 
291  virtual void visit(const SystemCallToHostDirs& node) = 0;
292 
294  virtual void visit(const SystemCallToInteger& node) = 0;
295 
297  virtual void visit(const SystemCallToIntegers& node) = 0;
298 
300  virtual void visit(const SystemCallToString& node) = 0;
301 
303  virtual void visit(const SystemCallType& node) = 0;
304 
306  virtual void visit(const SystemCallWriteFile& node) = 0;
307 
309  virtual void visit(const SystemCallSetFixed& node) = 0;
310 
312  virtual void visit(const SystemCallSetPrecision& node) = 0;
313 
315  virtual void visit(const SystemCallSetScientific& node) = 0;
316 
318  virtual ~Visitor(void) = 0;
319 };
320 }
321 }
322 
323 #endif /* _MADARA_VISITOR_H_ */
A composite node that encompasses addition of two expressions.
A composite node that performs a logical and.
Defines a terminal node of that references the current value stored in a variable.
A composite node that allows for variable assignment.
A composite node that evaluates both left and right expressions regardless of their evaluations.
A composite node that contains an array of values.
A composite node that divides a left expression by a right one.
A composite node that compares left and right expressions for equality.
A composite node that iterates until a condition is met.
A composite node that calls a function.
A composite node that compares left and right expressions for greater than or equal to.
A composite node that compares left and right children for greater than.
A composite node that performs an implication (inference rule)
A composite node that compares left and right children for inequality.
A composite node that compares left and right children for less than or equal to.
A composite node that compares left and right children for less than.
A composite node that divides a left expression by a right expression and returns the remainder of th...
A composite node that multiplies a left expression by a right expression.
A composite node that integrally negates a right expression.
A composite node that logically nots a right expression.
A composite node that performs a logical or.
A composite node that decrements a left expression.
A composite node that increments a right expression.
A composite node that decrements a right expression.
A composite node that increments a right expression.
A composite node that evaluates both left and right expressions regardless of their evaluations.
A composite node that evaluates both left and right expressions regardless of their evaluations.
A composite node that takes the square root of a term.
A composite node that encompasses subtraction of a right expression from a left expression.
Defines a node that contains a madara::knowledge::KnowledgeRecord::Integer value.
Definition: LeafNode.h:25
Defines a terminal node that contains a list.
Definition: ListNode.h:28
Returns the cosine of a term in radians.
Definition: SystemCallCos.h:24
Evaluates a knowledge::KnowledgeRecord and returns the evaluation result.
Returns the expansion of a statement with environment vars.
Returns a fragment of the knowledge record.
General purpose system call KaRL node.
Returns the system clock or a variable clock.
Returns the current time in seconds since epoch.
Returns the time in nanoseconds since epoch.
Returns the type of a specified knowledge record.
Sets or returns the current MADARA logging level.
Calculates a base term taken to a power.
Definition: SystemCallPow.h:24
Prints a Knowledge Record.
Reads a file from an user-provided file name.
Sets the system clock or a variable clock.
Sets the output format to use std::fixed.
Sets the double precision for converting doubles to a string and for printing.
Sets the output format to use std::scientific.
Returns the sin of a term in radians.
Definition: SystemCallSin.h:24
Returns the size of a specified knowledge record.
Sleeps for a certain amount of time.
Returns the square root of a term.
Returns the tangent of a term in radians.
Definition: SystemCallTan.h:24
Converts an argument into an unsigned char buffer.
Converts an argument to a double.
Converts an argument to an array of doubles.
Ensures the directory delimiters are appropriate for the host operating system (e....
Converts an argument to an integer.
Converts an argument to an array of integers.
Converts an argument to a string.
Returns the type of a specified knowledge record.
Writes a knowledge record to an user-specified file name.
Defines a terminal node of that references the current value stored in a variable.
Composite node that subtracts a variable by some right hand side.
Composite node that divides a variable by some right hand side.
Defines a terminal node of that references the current value stored in a variable.
Composite node that multiplies a variable by some right hand side.
Defines a terminal node of that references the current value stored in a variable.
Definition: VariableNode.h:29
Abstract base class for all visitors to all classes that derive from ComponentNode.
Definition: Visitor.h:93
virtual void visit(const CompositeEqualityNode &node)=0
Visit a CompositeEqualityNode.
virtual void visit(const CompositeOrNode &node)=0
Visit a CompositeOrNode.
virtual void visit(const CompositeImpliesNode &node)=0
Visit a CompositeImpliesNode.
virtual void visit(const SystemCallSetPrecision &node)=0
Visit a SystemCallSetPrecision.
virtual void visit(const SystemCallPrintSystemCalls &node)=0
Visit a SystemCallPrintSystemCalls.
virtual void visit(const CompositeForLoop &node)=0
Visit a CompositeFunctionNode.
virtual void visit(const SystemCallToString &node)=0
Visit a SystemCallToString.
virtual void visit(const CompositeNegateNode &node)=0
Visit a CompositeNegateNode.
virtual void visit(const SystemCallGeneric &node)=0
Visit a SystemCallGetClock.
virtual void visit(const CompositePredecrementNode &node)=0
Visit a CompositePredecrementNode.
virtual void visit(const SystemCallEval &node)=0
Visit a SystemCallEval.
virtual void visit(const CompositePostdecrementNode &node)=0
Visit a CompositePostdecrementNode.
virtual void visit(const SystemCallRandDouble &node)=0
Visit a SystemCallRandDouble.
virtual void visit(const ListNode &node)=0
Visit a ListNode.
virtual void visit(const SystemCallToDouble &node)=0
Visit a SystemCallToDouble.
virtual void visit(const CompositePostincrementNode &node)=0
Visit a CompositePostincrementNode.
virtual void visit(const CompositeMultiplyNode &node)=0
Visit a CompositeMultiplyNode.
virtual void visit(const CompositeModulusNode &node)=0
Visit a CompositeModulusNode.
virtual void visit(const VariableIncrementNode &node)=0
Visit a VariableIncrementNode.
virtual void visit(const SystemCallSin &node)=0
Visit a SystemCallSin.
virtual void visit(const CompositeGreaterThanEqualNode &node)=0
Visit a CompositeLessThanEqualNode.
virtual void visit(const CompositeLessThanNode &node)=0
Visit a CompositeLessThanNode.
virtual void visit(const CompositeLessThanEqualNode &node)=0
Visit a CompositeLessThanEqualNode.
virtual void visit(const CompositeAddNode &node)=0
Visit a CompositeAddNode.
virtual void visit(const SystemCallReadFile &node)=0
Visit a SystemCallReadFile.
virtual void visit(const SystemCallIsinf &node)=0
Visit a SystemCallIsinf.
virtual void visit(const SystemCallDeleteVariable &node)=0
Visit a SystemCallDeleteVariable.
virtual void visit(const SystemCallWriteFile &node)=0
Visit a SystemCallWriteFile.
virtual void visit(const SystemCallGetTime &node)=0
Visit a SystemCallGetTime.
virtual void visit(const SystemCallSleep &node)=0
Visit a SystemCallSleep.
virtual void visit(const SystemCallFragment &node)=0
Visit a SystemCallExpandStatement.
virtual void visit(const CompositeBothNode &node)=0
Visit a CompositeBothNode.
virtual void visit(const VariableNode &node)=0
Visit a VariableNode.
virtual void visit(const CompositeSquareRootNode &node)=0
Visit a CompositeSquareRootNode.
virtual void visit(const SystemCallClearVariable &node)=0
Visit a SystemCallClearVariable.
virtual void visit(const SystemCallGetTimeSeconds &node)=0
Visit a SystemCallGetTimeSeconds.
virtual void visit(const VariableCompareNode &node)=0
Visit a VariableCompareNode.
virtual void visit(const SystemCallSetScientific &node)=0
Visit a SystemCallSetScientific.
virtual void visit(const SystemCallSetFixed &node)=0
Visit a SystemCallSetFixed.
virtual void visit(const SystemCallSetClock &node)=0
Visit a SystemCallSetClock.
virtual void visit(const VariableDecrementNode &node)=0
Visit a VariableDecrementNode.
virtual void visit(const SystemCallToBuffer &node)=0
Visit a SystemCallToBuffer.
virtual void visit(const CompositeConstArray &node)=0
Visit an array reference.
virtual void visit(const SystemCallToDoubles &node)=0
Visit a SystemCallToDoubles.
virtual void visit(const SystemCallRandInt &node)=0
Visit a SystemCallRandInt.
virtual void visit(const CompositeDivideNode &node)=0
Visit a CompositeDivideNode.
virtual void visit(const CompositeFunctionNode &node)=0
Visit a CompositeFunctionNode.
virtual void visit(const CompositeInequalityNode &node)=0
Visit a CompositeInequalityNode.
virtual void visit(const VariableMultiplyNode &node)=0
Visit a VariableMultiplyNode.
virtual void visit(const SystemCallToIntegers &node)=0
Visit a SystemCallToIntegers.
virtual void visit(const CompositePreincrementNode &node)=0
Visit a CompositePreIncrementNode.
virtual void visit(const SystemCallPrint &node)=0
Visit a SystemCallReadFile.
virtual void visit(const SystemCallGetClock &node)=0
Visit a SystemCallGetClock.
virtual void visit(const VariableDivideNode &node)=0
Visit a VariableDivideNode.
virtual void visit(const SystemCallLogLevel &node)=0
Visit a SystemCallLogLevel.
virtual void visit(const SystemCallSqrt &node)=0
Visit a SystemCallSqrt.
virtual void visit(const SystemCallToHostDirs &node)=0
Visit a SystemCallToHostDirs.
virtual void visit(const CompositeAssignmentNode &node)=0
Visit a CompositeAssignmentNode.
virtual void visit(const CompositeReturnRightNode &node)=0
Visit a CompositeReturnRightNode.
virtual void visit(const CompositeSubtractNode &node)=0
Visit a CompositeSubtractNode.
virtual void visit(const CompositeAndNode &node)=0
Visit a CompositeAndNode.
virtual void visit(const SystemCallToInteger &node)=0
Visit a SystemCallToInteger.
virtual void visit(const SystemCallCos &node)=0
Visit a SystemCallCos.
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
virtual void visit(const CompositeArrayReference &node)=0
Visit an array reference.
virtual ~Visitor(void)=0
No-op destructor to hold things together.
Definition: Visitor.cpp:7
virtual void visit(const CompositeNotNode &node)=0
Visit a CompositeNotNode.
virtual void visit(const CompositeGreaterThanNode &node)=0
Visit a CompositeLessThanNode.
virtual void visit(const SystemCallExpandStatement &node)=0
Visit a SystemCallExpandStatement.
virtual void visit(const SystemCallTan &node)=0
Visit a SystemCallTan.
virtual void visit(const SystemCallExpandEnv &node)=0
Visit a SystemCallExpandEnv.
virtual void visit(const SystemCallPow &node)=0
Visit a SystemCallPow.
virtual void visit(const SystemCallType &node)=0
Visit a SystemCallType.
virtual void visit(const SystemCallSize &node)=0
Visit a SystemCallSize.
virtual void visit(const CompositeSequentialNode &node)=0
Visit a CompositeSequentialNode.
Copyright(c) 2020 Galois.