| 23 | /** A Value that's an array. */ |
| 24 | class Array : public Value { |
| 25 | struct impl { |
| 26 | const Value* _first; |
| 27 | uint32_t _count; |
| 28 | uint8_t _width; |
| 29 | |
| 30 | impl(const Value*) noexcept; |
| 31 | const Value* second() const noexcept FLPURE {return offsetby(_first, _width);} |
| 32 | const Value* firstValue() const noexcept FLPURE; |
| 33 | const Value* deref(const Value*) const noexcept FLPURE; |
| 34 | const Value* operator[] (unsigned index) const noexcept FLPURE; |
| 35 | size_t indexOf(const Value *v) const noexcept FLPURE; |
| 36 | void offset(uint32_t n); |
| 37 | bool isMutableArray() const noexcept FLPURE {return _width > 4;} |
| 38 | }; |
| 39 | |
| 40 | public: |
| 41 | |