use pointers like this: a[4] works :-)
[ozulis.git] / src / ast / sizeof-visitor.cc
bloba5b4e16d3a2a57aae1b5e9183078e18d6d53aae2
1 #include <ast/sizeof-visitor.hh>
3 namespace ast
5 SizeofVisitor::SizeofVisitor()
6 : super_t(),
7 size_(0)
11 SizeofVisitor::~SizeofVisitor()
15 #define CONST_SIZE_TYPE(Type_, Size) \
16 void \
17 SizeofVisitor::visit(const Type_##Type & /*node*/) \
18 { \
19 size_ += Size; \
22 CONST_SIZE_TYPE(Pointer, pointerSize())
23 CONST_SIZE_TYPE(Reference, pointerSize())
24 CONST_SIZE_TYPE(Void, 1)
25 CONST_SIZE_TYPE(Bool, 1)
26 CONST_SIZE_TYPE(Float, 4)
27 CONST_SIZE_TYPE(Double, 8)
29 void
30 SizeofVisitor::visit(const IntegerType & node)
32 size_ += (node.size >> 3) + !!(node.size & 0x7);