8 #include <hilti/ast/attribute.h> 9 #include <hilti/ast/declarations/expression.h> 10 #include <hilti/ast/expression.h> 11 #include <hilti/ast/expressions/keyword.h> 12 #include <hilti/ast/function.h> 13 #include <hilti/ast/id.h> 14 #include <hilti/ast/type.h> 15 #include <hilti/ast/types/function.h> 16 #include <hilti/ast/types/integer.h> 17 #include <hilti/ast/types/unknown.h> 19 #include <spicy/ast/aliases.h> 29 Bits(
ID id,
int lower,
int upper,
int field_width, std::optional<AttributeSet> attrs = {},
Meta m =
Meta())
33 hilti::type::auto_, std::move(attrs)),
37 _field_width(field_width) {}
39 const auto& id()
const {
return child<ID>(0); }
40 auto lower()
const {
return _lower; }
41 auto upper()
const {
return _upper; }
42 auto fieldWidth()
const {
return _field_width; }
46 const auto& itemType()
const {
return child<Type>(2); }
50 return node::Properties{
53 {
"field_width", _field_width},
60 bool operator==(
const Bits& other)
const {
61 return id() == other.id() && _lower == other._lower && _upper == other._upper &&
62 _field_width == other._field_width && itemType() == other.itemType() &&
63 attributes() == other.attributes();
82 Bitfield(
int width, std::vector<bitfield::Bits> bits,
const Meta& m =
Meta())
83 : TypeBase(nodes(
type::UnsignedInteger(width, m), hilti::type::auto_, std::move(bits)), m), _width(width) {}
85 : TypeBase({hilti::type::unknown, hilti::type::unknown}, std::move(m)), _wildcard(
true) {}
87 int width()
const {
return _width; }
88 auto bits()
const {
return children<bitfield::Bits>(2, -1); }
90 std::optional<int> bitsIndex(
const ID&
id)
const;
91 const Type& parseType()
const {
return child<Type>(0); }
92 const Type& type()
const {
return child<Type>(1); }
97 bool operator==(
const Bitfield& other)
const {
return width() == other.width() && bits() == other.bits(); }
100 auto isEqual(
const Type& other)
const {
return node::isEqual(
this, other); }
112 bool _wildcard =
false;
auto isEqual(const Type &other) const
Definition: bitfield.h:100
NodeBase(Meta meta)
Definition: node.h:366
auto typeParameters() const
Definition: bitfield.h:104
Definition: bitfield.h:26
auto properties() const
Definition: bitfield.h:49
const Node none
Definition: node.cc:14
Definition: bitfield.h:77
const auto & children() const
Definition: node.h:471
void addChild(Node n)
Definition: node.h:460
static Declaration createDollarDollarDeclaration(Type t)
Definition: keyword.h:63
Definition: attribute.h:145
Definition: optional-ref.h:22
Definition: expression.h:16
auto _isResolved(ResolvedState *rstate) const
Definition: bitfield.h:102
auto isWildcard() const
Definition: bitfield.h:106
auto properties() const
Definition: bitfield.h:108
Definition: node-ref.h:45