diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2012-12-27 11:29:17 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2012-12-27 11:29:17 +0000 |
commit | edf315cd71334d5a7af31f4b882235d03b06f24d (patch) | |
tree | f374da35e77fd595c3cdf009f207852eaa9e23ac /include/llvm/ADT/IntervalMap.h | |
parent | 7ccc2f7a7859a72ce73e6d8dc4242c6dd7984c45 (diff) | |
download | external_llvm-edf315cd71334d5a7af31f4b882235d03b06f24d.zip external_llvm-edf315cd71334d5a7af31f4b882235d03b06f24d.tar.gz external_llvm-edf315cd71334d5a7af31f4b882235d03b06f24d.tar.bz2 |
Provide a common half-open interval map info implementation, and just
re-use that for SlotIndexes. This way other users who want half-open
semantics can share the implementation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171158 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/IntervalMap.h')
-rw-r--r-- | include/llvm/ADT/IntervalMap.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/llvm/ADT/IntervalMap.h b/include/llvm/ADT/IntervalMap.h index da6ee42..c4083ee 100644 --- a/include/llvm/ADT/IntervalMap.h +++ b/include/llvm/ADT/IntervalMap.h @@ -151,6 +151,26 @@ struct IntervalMapInfo { }; +template <typename T> +struct IntervalMapHalfOpenInfo { + + /// startLess - Return true if x is not in [a;b). + static inline bool startLess(const T &x, const T &a) { + return x < a; + } + + /// stopLess - Return true if x is not in [a;b). + static inline bool stopLess(const T &b, const T &x) { + return b <= x; + } + + /// adjacent - Return true when the intervals [x;a) and [b;y) can coalesce. + static inline bool adjacent(const T &a, const T &b) { + return a == b; + } + +}; + /// IntervalMapImpl - Namespace used for IntervalMap implementation details. /// It should be considered private to the implementation. namespace IntervalMapImpl { |