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

55 std::string str() const {

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