LLVM: include/llvm/Support/InterleavedRange.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef LLVM_SUPPORT_INTERLEAVED_RANGE_H
21#define LLVM_SUPPORT_INTERLEAVED_RANGE_H
22
26
27namespace llvm {
28
29
30
31
32
33
35 const Range &TheRange;
39
40public:
43 : TheRange(R), Separator(Separator), Prefix(Prefix), Suffix(Suffix) {}
44
45 template
47 if (!Interleaved.Prefix.empty())
48 OS << Interleaved.Prefix;
49 llvm::interleave(Interleaved.TheRange, OS, Interleaved.Separator);
50 if (!Interleaved.Suffix.empty())
51 OS << Interleaved.Suffix;
52 return OS;
53 }
54
56 std::string Result;
58 Stream << *this;
60 return Result;
61 }
62
63 operator std::string() const { return str(); }
64};
65
66
67
68
69
70
71
72
73
74
75template
79 return {R, Separator, Prefix, Suffix};
80}
81
82
83
84
85
86
87
88
89
90
91template
94 return {R, Separator, "[", "]"};
95}
96
97}
98
99#endif
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
Format object class for interleaved ranges.
Definition InterleavedRange.h:34
InterleavedRange(const Range &R, StringRef Separator, StringRef Prefix, StringRef Suffix)
Definition InterleavedRange.h:41
friend OStream & operator<<(OStream &OS, const InterleavedRange &Interleaved)
Definition InterleavedRange.h:46
std::string str() const
Definition InterleavedRange.h:55
StringRef - Represent a constant reference to a string, i.e.
constexpr bool empty() const
empty - Check if the string is empty.
A raw_ostream that writes to an std::string.
This is an optimization pass for GlobalISel generic memory operations.
void interleave(ForwardIterator begin, ForwardIterator end, UnaryFunctor each_fn, NullaryFunctor between_fn)
An STL-style algorithm similar to std::for_each that applies a second functor between every pair of e...
InterleavedRange< Range > interleaved(const Range &R, StringRef Separator=", ", StringRef Prefix="", StringRef Suffix="")
Output range R as a sequence of interleaved elements.
Definition InterleavedRange.h:76
InterleavedRange< Range > interleaved_array(const Range &R, StringRef Separator=", ")
Output range R as an array of interleaved elements.
Definition InterleavedRange.h:92