summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/PackedGLEnums.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/PackedGLEnums.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/PackedGLEnums.h111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/PackedGLEnums.h b/src/3rdparty/angle/src/libANGLE/PackedGLEnums.h
deleted file mode 100644
index 70e32910fc..0000000000
--- a/src/3rdparty/angle/src/libANGLE/PackedGLEnums.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2017 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// PackedGLEnums_autogen.h:
-// Declares ANGLE-specific enums classes for GLEnum and functions operating
-// on them.
-
-#ifndef LIBANGLE_PACKEDGLENUMS_H_
-#define LIBANGLE_PACKEDGLENUMS_H_
-
-#include "libANGLE/PackedGLEnums_autogen.h"
-
-#include <array>
-#include <cstddef>
-
-namespace angle
-{
-
-template <typename E>
-class EnumIterator final
-{
- private:
- using UnderlyingType = typename std::underlying_type<E>::type;
-
- public:
- EnumIterator(E value) : mValue(static_cast<UnderlyingType>(value)) {}
- EnumIterator &operator++()
- {
- mValue++;
- return *this;
- }
- bool operator==(const EnumIterator &other) const { return mValue == other.mValue; }
- bool operator!=(const EnumIterator &other) const { return mValue != other.mValue; }
- E operator*() const { return static_cast<E>(mValue); }
-
- private:
- UnderlyingType mValue;
-};
-
-template <typename E>
-struct AllEnums
-{
- EnumIterator<E> begin() const { return {static_cast<E>(0)}; }
- EnumIterator<E> end() const { return {E::InvalidEnum}; }
-};
-
-template <typename E, typename T>
-class PackedEnumMap
-{
- private:
- using UnderlyingType = typename std::underlying_type<E>::type;
- static constexpr size_t kSize = static_cast<UnderlyingType>(E::EnumCount);
- using Storage = std::array<T, kSize>;
-
- Storage mData;
-
- public:
- // types:
- using value_type = T;
- using pointer = T *;
- using const_pointer = const T *;
- using reference = T &;
- using const_reference = const T &;
-
- using size_type = size_t;
- using difference_type = ptrdiff_t;
-
- using iterator = typename Storage::iterator;
- using const_iterator = typename Storage::const_iterator;
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
- // No explicit construct/copy/destroy for aggregate type
- void fill(const T &u) { mData.fill(u); }
- void swap(PackedEnumMap<E, T> &a) noexcept { mData.swap(a.mData); }
-
- // iterators:
- iterator begin() noexcept { return mData.begin(); }
- const_iterator begin() const noexcept { return mData.begin(); }
- iterator end() noexcept { return mData.end(); }
- const_iterator end() const noexcept { return mData.end(); }
-
- reverse_iterator rbegin() noexcept { return mData.rbegin(); }
- const_reverse_iterator rbegin() const noexcept { return mData.rbegin(); }
- reverse_iterator rend() noexcept { return mData.rend(); }
- const_reverse_iterator rend() const noexcept { return mData.rend(); }
-
- // capacity:
- constexpr size_type size() const noexcept { return mData.size(); }
- constexpr size_type max_size() const noexcept { return mData.max_size(); }
- constexpr bool empty() const noexcept { return mData.empty(); }
-
- // element access:
- reference operator[](E n) { return mData[static_cast<UnderlyingType>(n)]; }
- const_reference operator[](E n) const { return mData[static_cast<UnderlyingType>(n)]; }
- const_reference at(E n) const { return mData.at(static_cast<UnderlyingType>(n)); }
- reference at(E n) { return mData.at(static_cast<UnderlyingType>(n)); }
-
- reference front() { return mData.front(); }
- const_reference front() const { return mData.front(); }
- reference back() { return mData.back(); }
- const_reference back() const { return mData.back(); }
-
- T *data() noexcept { return mData.data(); }
- const T *data() const noexcept { return mData.data(); }
-};
-
-} // namespace angle
-
-#endif // LIBANGLE_PACKEDGLENUMS_H_