2 #ifndef _MADARA_NO_KARL_
39 if (nodes_.size() > 0)
41 bool arg_can_change =
false;
42 result = nodes_[0]->prune(arg_can_change);
44 if (!arg_can_change &&
dynamic_cast<LeafNode*
>(nodes_[0]) == 0)
47 nodes_[0] =
new LeafNode(*(this->logger_), result);
62 if (nodes_.size() > 0)
65 "madara::expression::SystemCallToBuffer: "
66 "System call to_buffer is converting an argument to an "
67 "unmanaged buffer\n");
70 unsigned char* buffer =
71 nodes_[0]->evaluate(settings).to_unmanaged_buffer(size);
78 "madara::expression::SystemCallToBuffer: "
80 "System call to_buffer requires an argument\n");
83 "madara::expression::SystemCallToBuffer: "
84 "KARL RUNTIME ERROR: "
85 "System call to_buffer requires an argument\n");
#define madara_logger_ptr_log(loggering, level,...)
Fast version of the madara::logger::log method for Logger pointers.
madara::knowledge::KnowledgeRecord KnowlegeRecord
madara::knowledge::KnowledgeRecord KnowledgeRecord
An exception for unrecoverable KaRL compilation issues.
Defines a node that contains a madara::knowledge::KnowledgeRecord::Integer value.
Interface for a MADARA system call.
SystemCallToBuffer(madara::knowledge::ThreadSafeContext &context, const ComponentNodes &nodes)
Constructor.
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
virtual ~SystemCallToBuffer(void)
Destructor.
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the value of the node.
Abstract base class for all visitors to all classes that derive from ComponentNode.
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
This class encapsulates an entry in a KnowledgeBase.
void set_file(const unsigned char *new_value, size_t size)
sets the value to an unknown file type
Settings for applying knowledge updates.
This class stores variables and their values for use by any entity needing state information in a thr...
std::deque< ComponentNode * > ComponentNodes
a vector of Component Nodes