OGLplus  (0.59.0) a C++ wrapper for rendering APIs

Classes

struct  eagine::c_api_constant_base
 Common base class for wrapping C-API constant values. More...
 
struct  eagine::no_c_api_constant< T, Tag, IsIndexed >
 Class wrapping a constant with missing or unknown value. More...
 
struct  eagine::static_c_api_constant< ClassList, T, value, Tag, IsIndexed >
 Class wrapping a constant with value known at compile-time. More...
 
struct  eagine::dynamic_c_api_constant< ClassList, T, Tag, IsIndexed >
 Class wrapping a constant with value loaded at run-time. More...
 
class  eagine::bad_result< Info >
 Exception wrapping information about failed C-API function call result. More...
 
class  eagine::api_result< Result, Info, api_result_validity >
 Class wrapping the result of a C-API function call. More...
 
class  eagine::api_result_value< Result, api_result_validity::always >
 Specialization for always-valid result value. More...
 
class  eagine::api_result< Result, Info, api_result_validity::always >
 Specialization of api_result for always-valid result values. More...
 
class  eagine::api_result_value< Result, api_result_validity::maybe >
 Specialization for conditionally-valid result value. More...
 
class  eagine::static_c_api_function< ApiTraits, Tag, Signature, function >
 Wrapper for statically-linked C-API functions. More...
 
class  eagine::dynamic_c_api_function< ApiTraits, Tag, Signature >
 Wrapper for dynamically-linked C-API functions. More...
 
struct  eagine::default_c_api_traits
 Policy class customizing C-API constant value loading and function linking. More...
 
class  eagine::static_c_api_function< ApiTraits, Tag, RV(Params...), function >
 Wrapper for statically-linked C-API functions. More...
 
class  eagine::dynamic_c_api_function< ApiTraits, Tag, RV(Params...)>
 Wrapper for dynamically -linked C-API functions. More...
 
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::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...
 
class  eagine::basic_handle< Tag, Handle, invalid >
 Non-owning wrapper for C-API opaque handle types. More...
 
class  eagine::basic_owned_handle< Tag, Handle, invalid >
 Owning wrapper for C-API opaque handle types. More...
 
class  eagine::basic_handle_container< basic_handle< Tag, Handle, invalid >, Container >
 Basic template for C-API opaque handle containers and ranges. More...
 

Typedefs

template<typename ClassList , typename Constant , typename Tag = nothing_t, bool IsIndexed = false>
using eagine::opt_c_api_constant = typename get_opt_c_api_constant< ClassList, Constant, Tag, IsIndexed >::type
 Template alias used for switching between static and dynamic constants. More...
 
template<typename Result , typename Info >
using eagine::api_opt_result = api_result< Result, Info, api_result_validity::maybe >
 Alias for conditionally-valid result of a C-API function call. More...
 
template<typename Result , typename Info >
using eagine::api_no_result = api_result< Result, Info, api_result_validity::never >
 Alias for always-invalid result of a C-API function call. More...
 
template<typename ApiTraits , typename Tag , typename Signature , c_api_function_ptr< ApiTraits, Tag, Signature > function, bool IsAvailable, bool IsStatic>
using eagine::opt_c_api_function = std::conditional_t< IsAvailable, std::conditional_t< IsStatic, static_c_api_function< ApiTraits, Tag, Signature, function >, dynamic_c_api_function< ApiTraits, Tag, Signature > >, unimplemented_c_api_function< ApiTraits, Tag, Signature > >
 Template alias used for switching between static and dynamic function. More...
 
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...
 
template<typename BasicHandle >
using eagine::basic_handle_span = basic_handle_container< BasicHandle, span< typename BasicHandle::handle_type > >
 Alias for basic handle container based on non-const span. More...
 
template<typename BasicHandle >
using eagine::basic_handle_view = basic_handle_container< BasicHandle, span< const typename BasicHandle::handle_type > >
 Alias for basic handle container based on const span. More...
 
template<typename BasicHandle , std::size_t N>
using eagine::basic_handle_array = basic_handle_container< BasicHandle, std::array< typename BasicHandle::handle_type, N > >
 Alias for basic handle container based on std::array. More...
 
template<typename BasicHandle >
using eagine::basic_handle_vector = basic_handle_container< BasicHandle, std::vector< typename BasicHandle::handle_type > >
 Alias for basic handle container based on std::vector. More...
 

Enumerations

enum  eagine::api_result_validity { eagine::api_result_validity::always, eagine::api_result_validity::maybe, eagine::api_result_validity::never }
 Enumeration of C-API function call result validity. More...
 

Functions

template<typename Result >
static constexpr auto eagine::extract (api_result_value< Result, api_result_validity::maybe > &&result) noexcept -> Result
 Specialization of extract for api_result_value.
 
template<typename Result >
static constexpr auto eagine::extract (api_result_value< Result, api_result_validity::maybe > &result) noexcept -> Result &
 Specialization of extract for api_result_value.
 
template<typename Result >
static constexpr auto eagine::extract (const api_result_value< Result, api_result_validity::maybe > &result) noexcept -> const Result &
 Specialization of extract for api_result_value.
 
template<typename Result , typename Info >
auto eagine::operator>> (api_result< Result, Info, api_result_validity::maybe > result, Result &dest) -> Result &
 Extraction operator for api_result_value. More...
 
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...
 

Detailed Description

Typedef Documentation

◆ api_no_result

template<typename Result , typename Info >
using eagine::api_no_result = typedef api_result<Result, Info, api_result_validity::never>

Alias for always-invalid result of a C-API function call.

Such result may be returned from wrappers of C-API functions that are not available in the current build. For example API extension functions.

◆ api_opt_result

template<typename Result , typename Info >
using eagine::api_opt_result = typedef api_result<Result, Info, api_result_validity::maybe>

Alias for conditionally-valid result of a C-API function call.

Such result may be returned from wrappers of C-API functions that have not been successfully dynamically-loaded in the current process.

◆ basic_handle_array

template<typename BasicHandle , std::size_t N>
using eagine::basic_handle_array = typedef basic_handle_container< BasicHandle, std::array<typename BasicHandle::handle_type, N> >

Alias for basic handle container based on std::array.

See also
basic_handle_span
basic_handle_view
basic_handle_vector

◆ basic_handle_span

template<typename BasicHandle >
using eagine::basic_handle_span = typedef basic_handle_container<BasicHandle, span<typename BasicHandle::handle_type> >

Alias for basic handle container based on non-const span.

See also
basic_handle_view
basic_handle_array
basic_handle_vector

◆ basic_handle_vector

template<typename BasicHandle >
using eagine::basic_handle_vector = typedef basic_handle_container< BasicHandle, std::vector<typename BasicHandle::handle_type> >

Alias for basic handle container based on std::vector.

See also
basic_handle_span
basic_handle_view
basic_handle_array

◆ basic_handle_view

template<typename BasicHandle >
using eagine::basic_handle_view = typedef basic_handle_container< BasicHandle, span<const typename BasicHandle::handle_type> >

Alias for basic handle container based on const span.

See also
basic_handle_span
basic_handle_array
basic_handle_vector

◆ enum_class_array

template<typename EnumClass , std::size_t N>
using eagine::enum_class_array = typedef enum_class_container<EnumClass, std::array<typename EnumClass::value_type, N> >

Alias for array of multiple enum_class values.

See also
enum_class_span
enum_class_view

◆ enum_class_span

template<typename EnumClass >
using eagine::enum_class_span = typedef enum_class_container<EnumClass, span<typename EnumClass::value_type> >

Alias for non-const span of multiple enum_class values.

See also
enum_class_view
enum_class_array

◆ enum_class_view

template<typename EnumClass >
using eagine::enum_class_view = typedef enum_class_container<EnumClass, span<const typename EnumClass::value_type> >

Alias for const span of multiple enum_class values.

See also
enum_class_span
enum_class_array

◆ opt_c_api_constant

template<typename ClassList , typename Constant , typename Tag = nothing_t, bool IsIndexed = false>
using eagine::opt_c_api_constant = typedef typename get_opt_c_api_constant<ClassList, Constant, Tag, IsIndexed>::type

Template alias used for switching between static and dynamic constants.

Template Parameters
ClassLista list of enum_class types into which the constant can be converted.
Constantintegral constant specifying the value or a placeholder.
Taga tag type that can be used in custiomization of some operations on the constant.
IsIndexedindicates if the constant is indexed, which enables additional operations on the constants.
See also
no_c_api_constant
static_c_api_constant
dynamic_c_api_constant
enum_class
enum_value
mp_list

C-API constants can be either known at compile time or loaded dynamically by using some API function(s).

◆ opt_c_api_function

template<typename ApiTraits , typename Tag , typename Signature , c_api_function_ptr< ApiTraits, Tag, Signature > function, bool IsAvailable, bool IsStatic>
using eagine::opt_c_api_function = typedef std::conditional_t< IsAvailable, std::conditional_t< IsStatic, static_c_api_function<ApiTraits, Tag, Signature, function>, dynamic_c_api_function<ApiTraits, Tag, Signature> >, unimplemented_c_api_function<ApiTraits, Tag, Signature> >

Template alias used for switching between static and dynamic function.

Template Parameters
ApiTraitsa policy class that customizes the linking of functions.
Taga tag type that can be used in custiomization of some operations on the function.
Signaturethe wrapped C-API function signature.
See also
static_c_api_function
dynamic_c_api_function
mp_list

C-API constants can be either known at compile time or loaded dynamically by using some API function(s).

Examples
eagine/c_api_wrap.cpp.

Enumeration Type Documentation

◆ api_result_validity

Enumeration of C-API function call result validity.

See also
api_result
Enumerator
always 

Result is always valid.

maybe 

Result is conditionally valid.

never 

Result is never valid.

Function Documentation

◆ operator>>()

template<typename Result , typename Info >
auto eagine::operator>> ( api_result< Result, Info, api_result_validity::maybe result,
Result &  dest 
) -> Result&
inline

Extraction operator for api_result_value.

Exceptions
bad_result<Info>Extracts the value from an api_result, if the value is valid, throws otherwise.

◆ same_enum_class()

template<identifier_t LibId>
static constexpr auto eagine::same_enum_class ( any_enum_class< LibId >  a,
any_enum_class< LibId >  b 
)
staticconstexprnoexcept

Tests if two instances of any_enum_class belong to the same enum class.

See also
any_enum_class

Variable Documentation

◆ is_enum_class_v

template<typename T >
constexpr bool eagine::is_enum_class_v
constexpr

Trait indicating if type T is an enum_class.

See also
is_enum_class_value_t
enum_class

◆ is_enum_class_value_v

template<typename C , typename V >
constexpr auto eagine::is_enum_class_value_v
constexpr

Trait indicating if type T is an enum_value, opt_enum_value or no_enum_value.

See also
is_enum_class_t
enum_value
opt_enum_value
no_enum_value

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).