source: icGREP/icgrep-devel/icgrep/re/re_diff.h @ 4319

Last change on this file since 4319 was 4319, checked in by cameron, 4 years ago

Optimize makeDiff, makeIntersect if both args are CCs

File size: 884 bytes
Line 
1#ifndef RE_DIFF_H
2#define RE_DIFF_H
3
4#include <re/re_re.h>
5#include <re/re_cc.h>
6
7namespace re {
8
9class Diff : public RE {
10public:
11    static inline bool classof(const RE * re) {
12        return re->getClassTypeId() == ClassTypeId::Diff;
13    }
14    static inline bool classof(const void *) {
15        return false;
16    }
17    RE * getLH() const {
18        return mLh;
19    }
20    void setLH(RE * lh) {
21        mLh = lh;
22    }
23    RE * getRH() const {
24        return mRh;
25    }
26    void setRH(RE * rh) {
27        mRh = rh;
28    }
29protected:
30    friend RE * makeDiff(RE*, RE*);
31    void* operator new (std::size_t size) noexcept {
32        return mAllocator.allocate(size);
33    }
34    Diff(RE * lh, RE * rh)
35    : RE(ClassTypeId::Diff)
36    , mLh(lh)
37    , mRh(rh)
38    {
39
40    }
41    virtual ~Diff() {}
42private:
43    RE * mLh;
44    RE * mRh;
45};
46
47RE * makeDiff(RE * lh, RE * rh);
48}
49
50#endif // RE_DIFF_H
Note: See TracBrowser for help on using the repository browser.