19#ifndef PYSTON_ATTRIBUTESET_H
20#define PYSTON_ATTRIBUTESET_H
24#include <boost/python/object.hpp>
66 auto& attr_set = boost::get<AttributeSet>(arguments[
m_pos]);
67 auto value_iter = attr_set.find(
m_name);
68 if (value_iter == attr_set.end()) {
71 return boost::get<T>(value_iter->second);
108 if (m_attrs.count(name) == 0)
110 return boost::apply_visitor(AttrGetterFactory(
m_pos, name), m_attrs.at(name));
117 struct AttrGetterFactory :
public boost::static_visitor<boost::python::object> {
123 template <
typename Content>
126 return boost::python::object(node);
std::string repr() const override
T eval(const Context &, const Arguments &arguments) const override
AttrGetter(const unsigned pos, const std::string &name)
void visit(Visitor &visitor) const override
Placeholder(const unsigned pos, const AttributeSet &attrs)
boost::python::object get(const std::string &name) const
virtual void enter(const NodeBase *)=0
virtual void exit(const NodeBase *)=0
AttrGetterFactory(unsigned pos, const std::string &name)
boost::python::object operator()(Content) const