#include "assert.hpp"
#include "identifier_t.hpp"
#include "iterator.hpp"
#include "mp_list.hpp"
#include "nothing.hpp"
#include "type_identity.hpp"
#include "wrapping_container.hpp"
#include <tuple>
#include <type_traits>
Go to the source code of this file.
Classes | |
struct | eagine::enum_value< T, ClassList, Tag > |
Class holding the value of a (typically C-API) symbolic constant. More... | |
struct | eagine::enum_value< T, mp_list< Classes... >, Tag > |
Class holding the value of a symbolic constant or enumerator. More... | |
struct | eagine::opt_enum_value< T, ClassList, Tag > |
Class holding optional value of a (typically C-API) symbolic constant. More... | |
struct | eagine::opt_enum_value< T, mp_list< Classes... >, Tag > |
Class holding optional value of a symbolic constant or enumerator. More... | |
struct | eagine::no_enum_value< T, Tag > |
Class representing undefined value of a (typically C-API) symbolic constant. More... | |
struct | eagine::any_enum_value< LibId > |
Type erasure for instantiations of enum_value from a specified library. More... | |
struct | eagine::enum_class< Self, T, LibId, Id > |
Enum class for constants or enumerators (typically from a C-API). More... | |
struct | eagine::is_enum_class< T > |
Implementation of is_enum_class trait. More... | |
struct | eagine::is_enum_class_value< Class, Value > |
Implementation of is_enum_class_value trait. More... | |
struct | eagine::any_enum_class< LibId > |
Type erasure for instantiations of enum_class from a specified library. More... | |
struct | eagine::any_enum_value< LibId > |
Type erasure for instantiations of enum_value from a specified library. More... | |
class | eagine::enum_class_container< EnumClass, Container > |
Template for containers of enum_class. More... | |
Namespaces | |
eagine | |
Common code is placed in this namespace. | |
Typedefs | |
template<typename EnumClass > | |
using | eagine::enum_class_span = enum_class_container< EnumClass, span< typename EnumClass::value_type > > |
Alias for non-const span of multiple enum_class values. More... | |
template<typename EnumClass > | |
using | eagine::enum_class_view = enum_class_container< EnumClass, span< const typename EnumClass::value_type > > |
Alias for const span of multiple enum_class values. More... | |
template<typename EnumClass , std::size_t N> | |
using | eagine::enum_class_array = enum_class_container< EnumClass, std::array< typename EnumClass::value_type, N > > |
Alias for array of multiple enum_class values. More... | |
Functions | |
template<identifier_t LibId> | |
static constexpr auto | eagine::same_enum_class (any_enum_class< LibId > a, any_enum_class< LibId > b) noexcept |
Tests if two instances of any_enum_class belong to the same enum class. More... | |
Variables | |
template<typename T > | |
constexpr bool | eagine::is_enum_class_v |
Trait indicating if type T is an enum_class. More... | |
template<typename C , typename V > | |
constexpr auto | eagine::is_enum_class_value_v |
Trait indicating if type T is an enum_value, opt_enum_value or no_enum_value. More... | |
Copyright Matus Chochlik. Distributed under the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt