14 #ifndef LLVM_CLANG_SERIALIZATION_CONTINUOUSRANGEMAP_H
15 #define LLVM_CLANG_SERIALIZATION_CONTINUOUSRANGEMAP_H
18 #include "llvm/ADT/STLExtras.h"
19 #include "llvm/ADT/SmallVector.h"
36 template <
typename Int,
typename V,
unsigned InitialCapacity>
57 bool operator ()(Int L, Int R)
const {
61 return L.first < R.first;
67 if (!Rep.empty() && Rep.back() == Val)
70 assert((Rep.empty() || Rep.back().first < Val.first) &&
71 "Must insert keys in order.");
77 if (I != Rep.end() && I->first == Val.first) {
78 I->second = Val.second;
85 using iterator =
typename Representation::iterator;
120 llvm::sort(Self.Rep,
Compare());
123 Self.Rep.begin(), Self.Rep.end(),
127 assert((A == B || A.first != B.first) &&
128 "ContinuousRangeMap::Builder given non-unique keys");
135 Self.Rep.push_back(Val);
144 #endif // LLVM_CLANG_SERIALIZATION_CONTINUOUSRANGEMAP_H