7 #include <hilti/ast/attribute.h> 9 #include <spicy/ast/aliases.h> 10 #include <spicy/ast/types/unit-item.h> 11 #include <spicy/ast/types/unit.h> 18 Property(
ID id, std::optional<AttributeSet> attrs = {},
bool inherited =
false,
Meta m =
Meta())
19 :
NodeBase(nodes(std::move(
id), node::none, std::move(attrs)), std::move(m)), _inherited(inherited) {}
21 Property(
ID id, Expression expr, std::optional<AttributeSet> attrs = {},
bool inherited =
false,
Meta m =
Meta())
22 :
NodeBase(nodes(std::move(
id), std::move(expr), std::move(attrs)), std::move(m)), _inherited(inherited) {}
24 const auto& id()
const {
return child<ID>(0); }
25 auto expression()
const {
return childs()[1].tryReferenceAs<Expression>(); }
27 bool interited()
const {
return _inherited; }
29 bool operator==(
const Property& other)
const {
30 return id() == other.id() && expression() == other.expression() && attributes() == other.attributes();
35 auto isEqual(
const Item& other)
const {
return node::isEqual(
this, other); }
38 auto properties()
const {
return node::Properties{{
"inherited", _inherited}}; }
NodeBase(Meta meta)
Definition: node.h:325
auto & childs() const
Definition: node.h:445
Definition: property.h:16
Definition: attribute.h:159
Definition: unit-item.h:19
Definition: unit-item.h:39