9 #include <hilti/ast/types/unknown.h> 11 #include <spicy/ast/aliases.h> 12 #include <spicy/ast/engine.h> 13 #include <spicy/ast/types/unit-item.h> 23 UnresolvedField(
const std::optional<ID>&
id,
Type type, Engine e,
const std::vector<Expression>& args,
24 std::optional<Expression> repeat,
const std::vector<Expression>& sinks,
25 std::optional<AttributeSet> attrs = {}, std::optional<Expression> cond = {},
26 std::vector<Hook> hooks = {},
Meta m =
Meta())
28 :
NodeBase(nodes(node::none, std::move(type),
id, std::move(repeat), std::move(attrs), std::move(cond), args,
29 sinks, std::move(hooks)),
33 _args_end(_args_start + static_cast<int>(args.size())),
34 _sinks_start(_args_end),
35 _sinks_end(_sinks_start + static_cast<int>(sinks.size())) {}
37 UnresolvedField(
const std::optional<ID>&
id, Ctor ctor, Engine e,
const std::vector<Expression>& args,
38 std::optional<Expression> repeat,
const std::vector<Expression>& sinks,
39 std::optional<AttributeSet> attrs = {}, std::optional<Expression> cond = {},
40 std::vector<Hook> hooks = {},
Meta m =
Meta())
41 :
NodeBase(nodes(node::none, std::move(ctor),
id, std::move(repeat), std::move(attrs), std::move(cond), args,
42 sinks, std::move(hooks)),
46 _args_end(_args_start + static_cast<int>(args.size())),
47 _sinks_start(_args_end),
48 _sinks_end(_sinks_start + static_cast<int>(sinks.size())) {}
50 UnresolvedField(
const std::optional<ID>&
id, Item item, Engine e,
const std::vector<Expression>& args,
51 std::optional<Expression> repeat,
const std::vector<Expression>& sinks,
52 std::optional<AttributeSet> attrs = {}, std::optional<Expression> cond = {},
53 std::vector<Hook> hooks = {},
Meta m =
Meta())
54 :
NodeBase(nodes(node::none, std::move(item),
id, std::move(repeat), std::move(attrs), std::move(cond), args,
55 sinks, std::move(hooks)),
59 _args_end(_args_start + static_cast<int>(args.size())),
60 _sinks_start(_args_end),
61 _sinks_end(_sinks_start + static_cast<int>(sinks.size())) {}
63 UnresolvedField(std::optional<ID>
id,
ID unresolved_id, Engine e,
const std::vector<Expression>& args,
64 std::optional<Expression> repeat,
const std::vector<Expression>& sinks,
65 std::optional<AttributeSet> attrs = {}, std::optional<Expression> cond = {},
66 std::vector<Hook> hooks = {},
Meta m =
Meta())
67 :
NodeBase(nodes(std::move(unresolved_id), node::none, std::move(
id), std::move(repeat), std::move(attrs),
68 std::move(cond), args, sinks, std::move(hooks)),
72 _args_end(_args_start + static_cast<int>(args.size())),
73 _sinks_start(_args_end),
74 _sinks_end(_sinks_start + static_cast<int>(sinks.size())) {}
76 auto fieldID()
const {
return childs()[2].tryAs<
ID>(); }
77 auto unresolvedID()
const {
return childs()[0].tryAs<
ID>(); }
78 const auto& index()
const {
return _index; }
81 auto ctor()
const {
return childs()[1].tryAs<Ctor>(); }
82 auto item()
const {
return childs()[1].tryAs<Item>(); }
83 auto type()
const {
return childs()[1].tryAs<
Type>(); }
85 auto repeatCount()
const {
return childs()[3].tryAs<Expression>(); }
87 auto condition()
const {
return childs()[5].tryAs<Expression>(); }
88 auto arguments()
const {
return childs<Expression>(_args_start, _args_end); }
89 auto sinks()
const {
return childs<Expression>(_sinks_start, _sinks_end); }
90 auto hooks()
const {
return childs<Hook>(_sinks_end, -1); }
91 Engine engine()
const {
return _engine; }
93 void setIndex(uint64_t index) { _index = index; }
96 return _engine == other._engine && unresolvedID() == other.unresolvedID() && fieldID() == other.fieldID() &&
97 attributes() == other.attributes() && arguments() == other.arguments() && sinks() == other.sinks() &&
98 condition() == other.condition() && hooks() == other.hooks();
102 const Type& itemType()
const {
return hilti::type::auto_; }
103 bool isResolved()
const {
return false; }
104 auto isEqual(
const Item& other)
const {
return node::isEqual(
this, other); }
107 auto properties()
const {
return node::Properties{{
"engine", to_string(_engine)}}; }
111 std::optional<uint64_t> _index;
112 const int _args_start;
114 const int _sinks_start;
115 const int _sinks_end;
NodeBase(Meta meta)
Definition: node.h:365
Definition: unresolved-field.h:21
Definition: attribute.h:145
Definition: unit-item.h:19
const auto & childs() const
Definition: node.h:470