source: icGREP/icgrep-devel/icgrep/pablo/pe_sel.h @ 4200

Last change on this file since 4200 was 4200, checked in by nmedfort, 5 years ago

Replaced dynamic_cast with llvm::dyn_cast in pablo code; implemented make functions for pablo constructors. Disabled RTTI.

File size: 1.2 KB
Line 
1/*
2 *  Copyright (c) 2014 International Characters.
3 *  This software is licensed to the public under the Open Software License 3.0.
4 *  icgrep is a trademark of International Characters.
5 */
6
7#ifndef PE_SEL_H
8#define PE_SEL_H
9
10#include "pe_pabloe.h"
11
12namespace pablo {
13
14class Sel : public PabloE {
15    friend PabloE * make_sel(PabloE *, PabloE *, PabloE *);
16public:
17    static inline bool classof(const PabloE * e) {
18        return e->getClassTypeId() == ClassTypeId::Sel;
19    }
20    static inline bool classof(const void *) {
21        return false;
22    }
23    virtual ~Sel() {
24        delete mIf_expr;
25        delete mT_expr;
26        delete mF_expr;
27    }
28
29    inline PabloE * getIf_expr() const {
30        return mIf_expr;
31    }
32
33    inline PabloE * getT_expr() const {
34        return mT_expr;
35    }
36
37    inline PabloE * getF_expr() const {
38        return mF_expr;
39    }
40protected:
41    Sel(PabloE* if_expr, PabloE* t_expr, PabloE* f_expr)
42    : PabloE(ClassTypeId::Sel)
43    , mIf_expr(if_expr)
44    , mT_expr(t_expr)
45    , mF_expr(f_expr)
46    {
47
48    }
49private:
50    PabloE * const mIf_expr;
51    PabloE * const mT_expr;
52    PabloE * const mF_expr;
53};
54
55PabloE * make_sel(PabloE * if_expr, PabloE * t_expr, PabloE * f_expr);
56
57}
58
59#endif // PE_SEL_H
60
Note: See TracBrowser for help on using the repository browser.