22#include <boost/any.hpp>
23#include <boost/variant.hpp>
82using Attribute = boost::variant<bool, int64_t, double>;
88using Value = boost::variant<bool, int64_t, double, AttributeSet>;
131 template <
typename... Args>
137 template <
typename... Args>
144 return eval(context, arguments);
147 template <
typename A0,
typename... AN>
const std::type_index m_type_index
virtual void visit(Visitor &) const =0
virtual std::string repr() const =0
const std::type_index & type() const
NodeBase(const std::type_index &type_index)
virtual ~NodeBase()=default
virtual T eval(const Context &, const Arguments &) const =0
T eval_helper(const Context &context, Arguments &arguments, A0 v0, AN... an) const
T eval_helper(const Context &context, Arguments &arguments) const
T eval(Args... args) const
T eval(const Context &context, Args... args) const
virtual void enter(const NodeBase *)=0
virtual void exit(const NodeBase *)=0
boost::variant< bool, int64_t, double, AttributeSet > Value
boost::variant< bool, int64_t, double > Attribute