source: icGREP/icgrep-devel/icgrep/pablo/pe_next.h @ 4272

Last change on this file since 4272 was 4272, checked in by nmedfort, 4 years ago

Implemented slab allocator based on the original Parabix StringPool?; intergrated it with RE and Pablo AST nodes.

File size: 1001 bytes
Line 
1#ifndef PE_NEXT_H
2#define PE_NEXT_H
3
4#include <pablo/pabloAST.h>
5#include <pablo/ps_assign.h>
6
7namespace pablo {
8
9class Assign;
10
11class Next : public PabloAST {
12    friend class PabloBlock;
13public:
14    static inline bool classof(const PabloAST * e) {
15        return e->getClassTypeId() == ClassTypeId::Next;
16    }
17    static inline bool classof(const void *) {
18        return false;
19    }
20    inline const Assign * getInitial() const {
21        return mInitial;
22    }
23    inline const String * getName() const {
24        return mInitial->getName();
25    }
26    inline PabloAST * getExpr() const {
27        return mExpr;
28    }
29protected:
30    void* operator new (std::size_t size) noexcept {
31        return mAllocator.allocate(size);
32    }
33    Next(const PabloAST * initial, PabloAST * expr)
34    : PabloAST(ClassTypeId::Next)
35    , mInitial(cast<Assign>(initial))
36    , mExpr(expr)
37    {
38
39    }
40private:
41    const Assign * const      mInitial;
42    PabloAST * const          mExpr;
43};
44
45}
46
47
48#endif // PE_NEXT_H
Note: See TracBrowser for help on using the repository browser.