Direct-BT v3.3.0-1-gc2d430c
Direct-BT - Direct Bluetooth Programming.
Classes | Namespaces | Macros | Enumerations | Functions | Variables
type_traits_queries.hpp File Reference
#include <cstring>
#include <string>
#include <cstdint>
#include <type_traits>
Include dependency graph for type_traits_queries.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  jau::has_member_of_pointer< C, typename >
 Checker for member of pointer '->' operator with convertible pointer return, no arguments. More...
 
struct  jau::has_member_of_pointer< C, typename std::enable_if< std::is_pointer< decltype(std::declval< C >().operator->())>::value >::type >
 
struct  jau::is_container_memmove_compliant< class, class >
 template< class T > is_container_memmove_compliant<T>::value compile-time Type Trait, determining whether the given template class claims to be container memmove compliant, see @Ref darray_memmove. More...
 
struct  jau::is_container_memmove_compliant< T, std::void_t< typename T::container_memmove_compliant > >
 template< class T > is_container_memmove_compliant<T>::value compile-time Type Trait, determining whether the given template class claims to be container memmove compliant, see @Ref darray_memmove. More...
 
struct  jau::is_enforcing_secmem< class, class >
 template< class T > is_enforcing_secmem<T>::value compile-time Type Trait, determining whether the given template class enforces secmem, see @Ref darray_secmem. More...
 
struct  jau::is_enforcing_secmem< T, std::void_t< typename T::enforce_secmem > >
 template< class T > is_enforcing_secmem<T>::value compile-time Type Trait, determining whether the given template class enforces secmem, see @Ref darray_secmem. More...
 
struct  jau::type_cue< T >
 Helper, allowing simple access to compile time typename and Type traits information, see jau::type_name_cue to setup typename's string representation. More...
 
struct  jau::type_name_cue< T >
 Helper, allowing simple access and provision of a typename string representation at compile time, see jau::type_cue for usage. More...
 

Namespaces

namespace  jau
 __pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.
 

Macros

#define JAU_TYPENAME_CUE(A)   template<> struct jau::type_name_cue<A> { static const char * name() { return #A; } };
 
#define JAU_TYPENAME_CUE_ALL(A)   JAU_TYPENAME_CUE(A) JAU_TYPENAME_CUE(A*) JAU_TYPENAME_CUE(const A*) JAU_TYPENAME_CUE(A&) JAU_TYPENAME_CUE(const A&)
 
#define METHOD_CHECKER(checker, name, ret, args)
 Checker for member function with convertible return type and accepting given arguments. More...
 
#define METHOD_CHECKER_ANY(name, fn, args)
 Checker for member function accepting given arguments. More...
 
#define METHOD_CHECKER_STRICT_RET(name, fn, ret, args)
 Checker for member function with exact retutn type and accepting given arguments. More...
 
#define MTYPE_CHECKER(checker, name)
 Checker for member with given name and convertible type. More...
 
#define MTYPE_CHECKER_ANY(checker, name)
 Checker for member with given name and any type. More...
 
#define MTYPE_CHECKER_STRICT(checker, name)
 Checker for member with given name and exact type. More...
 

Enumerations

enum class  jau::TypeTraitGroup : uint8_t {
  jau::TypeTraitGroup::NONE = 0b00000000 , jau::TypeTraitGroup::PRIMARY_TYPE_CAT = 0b00000001 , jau::TypeTraitGroup::TYPE_PROPERTIES = 0b00000010 , jau::TypeTraitGroup::COMPOSITE_TYPE_CAT = 0b00000100 ,
  jau::TypeTraitGroup::SUPPORTED_OPERATIONS = 0b00001000 , jau::TypeTraitGroup::ALL = 0b11111111
}
 Enumerating the different groups of type traits. More...
 

Functions

constexpr bool jau::isTypeTraitBitSet (const TypeTraitGroup mask, const TypeTraitGroup bit) noexcept
 
constexpr uint8_t jau::number (const TypeTraitGroup rhs) noexcept
 
constexpr bool jau::operator!= (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
constexpr TypeTraitGroup jau::operator& (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
constexpr bool jau::operator== (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
constexpr TypeTraitGroup jau::operator^ (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
constexpr TypeTraitGroup jau::operator| (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 

Variables

template<typename _Tp >
constexpr bool jau::has_member_of_pointer_v = has_member_of_pointer<_Tp>::value
 
template<typename _Tp >
constexpr bool jau::has_to_string_v = has_to_string<_Tp>::value
 
template<typename _Tp >
constexpr bool jau::has_toString_v = has_toString<_Tp>::value
 
template<typename T >
constexpr bool jau::is_container_memmove_compliant_v = is_container_memmove_compliant<T>::value
 
template<typename T >
constexpr bool jau::is_enforcing_secmem_v = is_enforcing_secmem<T>::value