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

Last change on this file since 4358 was 4358, checked in by cameron, 5 years ago

Clean up various minor issues that generate compiler warnings.

File size: 1.3 KB
Line 
1#ifndef PE_NEXT_H
2#define PE_NEXT_H
3
4#include <pablo/pabloAST.h>
5#include <pablo/ps_assign.h>
6#include <array>
7
8namespace pablo {
9
10class Assign;
11
12class Next : public Statement {
13    friend class PabloBlock;
14public:
15    static inline bool classof(const PabloAST * e) {
16        return e->getClassTypeId() == ClassTypeId::Next;
17    }
18    static inline bool classof(const void *) {
19        return false;
20    }
21    virtual PabloAST * getOperand(const unsigned index) const {
22        assert (index < 2);
23        return mExprs[index];
24    }
25    virtual unsigned getNumOperands() const {
26        return 2;
27    }
28    virtual void setOperand(const unsigned index, PabloAST * value) {
29        assert (index < 2);
30        assert (index == 0 || isa<Assign>(value));
31        mExprs[index] = value;
32    }
33    inline const Assign * getInitial() const {
34        return cast<const Assign>(mExprs[0]);
35    }
36    inline const String * getName() const {
37        return getInitial()->getName();
38    }
39    inline PabloAST * getExpr() const {
40        return mExprs[1];
41    }
42protected:
43    Next(PabloAST * initial, PabloAST * expr, StatementList * parent)
44    : Statement(ClassTypeId::Next, parent)
45    , mExprs({{cast<Assign>(initial), expr}})
46    {
47
48    }
49private:
50    std::array<PabloAST*, 2>  mExprs;
51};
52
53}
54
55
56#endif // PE_NEXT_H
Note: See TracBrowser for help on using the repository browser.