LLVM: include/llvm/ADT/EnumeratedArray.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_ADT_ENUMERATEDARRAY_H

16#define LLVM_ADT_ENUMERATEDARRAY_H

17

19#include

20#include

21

22namespace llvm {

23

24template <typename ValueType, typename Enumeration,

25 Enumeration LargestEnum = Enumeration::Last, typename IndexType = int,

26 IndexType Size = 1 + static_cast<IndexType>(LargestEnum)>

28 static_assert(Size > 0);

29 using ArrayTy = std::array<ValueType, Size>;

30 ArrayTy Underlying;

31

32public:

33 using iterator = typename ArrayTy::iterator;

37

43

50

52 auto IX = static_cast<IndexType>(Index);

53 assert(IX >= 0 && IX < Size && "Index is out of bounds.");

54 return Underlying[IX];

55 }

60 IndexType size() const { return Size; }

61 bool empty() const { return size() == 0; }

62

67

72};

73

74}

75

76#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

bool empty() const

Definition EnumeratedArray.h:61

EnumeratedArray(std::initializer_list< ValueType > Init)

Definition EnumeratedArray.h:46

typename ArrayTy::const_iterator const_iterator

Definition EnumeratedArray.h:34

const_iterator begin() const

Definition EnumeratedArray.h:64

const ValueType * const_pointer

Definition EnumeratedArray.h:42

const_reverse_iterator rbegin() const

Definition EnumeratedArray.h:69

const ValueType & const_reference

Definition EnumeratedArray.h:40

ValueType value_type

Definition EnumeratedArray.h:38

typename ArrayTy::const_reverse_iterator const_reverse_iterator

Definition EnumeratedArray.h:36

EnumeratedArray()=default

EnumeratedArray(ValueType V)

Definition EnumeratedArray.h:45

const ValueType & operator[](Enumeration Index) const

Definition EnumeratedArray.h:51

const_iterator end() const

Definition EnumeratedArray.h:66

ValueType & operator[](Enumeration Index)

Definition EnumeratedArray.h:56

reverse_iterator rend()

Definition EnumeratedArray.h:70

iterator begin()

Definition EnumeratedArray.h:63

ValueType * pointer

Definition EnumeratedArray.h:41

typename ArrayTy::iterator iterator

Definition EnumeratedArray.h:33

const_reverse_iterator rend() const

Definition EnumeratedArray.h:71

ValueType & reference

Definition EnumeratedArray.h:39

IndexType size() const

Definition EnumeratedArray.h:60

iterator end()

Definition EnumeratedArray.h:65

reverse_iterator rbegin()

Definition EnumeratedArray.h:68

typename ArrayTy::reverse_iterator reverse_iterator

Definition EnumeratedArray.h:35

reverse_iterator rbegin()

This is an optimization pass for GlobalISel generic memory operations.

auto size(R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)

Get the size of a range.

OutputIt copy(R &&Range, OutputIt Out)

PointerUnion< const Value *, const PseudoSourceValue * > ValueType