source: icGREP/icgrep-devel/icgrep/re/re_memoizer.hpp

Last change on this file was 5814, checked in by cameron, 7 months ago

Parsing of byte CCs

File size: 573 bytes
Line 
1#ifndef RE_MEMOIZER_H
2#define RE_MEMOIZER_H
3
4#include <re/re_name.h>
5#include <set>
6
7namespace re {
8
9struct MemoizerComparator {
10    bool operator() (const RE * lh, const RE * rh) const;
11};
12
13struct Memoizer : public std::set<RE *, MemoizerComparator> {
14
15    RE * memoize(RE * const re) {
16        return *(insert(re).first);
17    }
18
19    Name * memoize(Name * const name) {
20        return llvm::cast<Name>(memoize(llvm::cast<RE>(name)));
21    }
22
23    CC * memoize(CC * const cc) {
24        return llvm::cast<CC>(memoize(llvm::cast<RE>(cc)));
25    }
26};
27
28}
29
30#endif // RE_MEMOIZER_H
Note: See TracBrowser for help on using the repository browser.