w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

hb-meta.hh File Reference
#include "hb.hh"
Include dependency graph for hb-meta.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hb_empty_t
 
struct  _hb_void_t< Ts >
 
struct  _hb_head_t< Head, Ts >
 
struct  hb_integral_constant< T, v >
 
struct  hb_enable_if< B, T >
 
struct  hb_enable_if< true, T >
 
struct  hb_is_same< T, T2 >
 
struct  hb_is_same< T, T >
 
struct  hb_priority< Pri >
 
struct  hb_priority< 0 >
 
struct  hb_type_identity_t< T >
 
struct  hb_match_const< T >
 
struct  hb_match_const< const T >
 
struct  hb_match_reference< T >
 
struct  hb_match_reference< T & >
 
struct  hb_match_reference< T && >
 
struct  hb_match_pointer< T >
 
struct  hb_match_pointer< T * >
 
struct  _hb_conditional< B, T, F >
 
struct  _hb_conditional< false, T, F >
 
struct  hb_is_convertible< From, To >
 
struct  hb_reference_wrapper< T >
 
struct  hb_reference_wrapper< T & >
 
struct  hb_int_min< char >
 
struct  hb_int_min< signed char >
 
struct  hb_int_min< unsigned char >
 
struct  hb_int_min< signed short >
 
struct  hb_int_min< unsigned short >
 
struct  hb_int_min< signed int >
 
struct  hb_int_min< unsigned int >
 
struct  hb_int_min< signed long >
 
struct  hb_int_min< unsigned long >
 
struct  hb_int_min< signed long long >
 
struct  hb_int_min< unsigned long long >
 
struct  hb_int_max< char >
 
struct  hb_int_max< signed char >
 
struct  hb_int_max< unsigned char >
 
struct  hb_int_max< signed short >
 
struct  hb_int_max< unsigned short >
 
struct  hb_int_max< signed int >
 
struct  hb_int_max< unsigned int >
 
struct  hb_int_max< signed long >
 
struct  hb_int_max< unsigned long >
 
struct  hb_int_max< signed long long >
 
struct  hb_int_max< unsigned long long >
 
struct  _hb_is_destructible< T, typename >
 
struct  _hb_is_destructible< T, hb_void_t< decltype((hb_declval< T >()).~T())> >
 
struct  _hb_is_constructible< T, typename, Ts >
 
struct  _hb_is_constructible< T, hb_void_t< decltype(T((hb_declval< Ts >())...))>, Ts... >
 
struct  _hb_is_assignable< T, U, typename >
 
struct  _hb_is_assignable< T, U, hb_void_t< decltype((hb_declval< T >())=(hb_declval< U >()))> >
 
union  hb_trivial< T >
 
struct  _hb_unwrap_type< T, typename >
 
struct  _hb_unwrap_type< T, hb_void_t< typename T::type > >
 

Macros

#define hb_enable_if(Cond)   typename hb_enable_if<(Cond)>::type* = nullptr
 
#define hb_requires(Cond)   hb_enable_if((Cond))
 
#define hb_is_same(T, T2)   hb_is_same<T, T2>::value
 
#define HB_RETURN(Ret, E)   -> hb_head_t<Ret, decltype ((E))> { return (E); }
 
#define HB_AUTO_RETURN(E)   -> decltype ((E)) { return (E); }
 
#define HB_VOID_RETURN(E)   -> hb_void_t<decltype ((E))> { (E); }
 
#define hb_prioritize   hb_priority<16> ()
 
#define HB_FUNCOBJ(x)   static_const x HB_UNUSED
 
#define hb_declval(T)   (hb_declval<T> ())
 
#define hb_is_const(T)   hb_match_const<T>::value
 
#define hb_is_reference(T)   hb_match_reference<T>::value
 
#define hb_is_pointer(T)   hb_match_pointer<T>::value
 
#define hb_is_convertible(From, To)   hb_is_convertible<From, To>::value
 
#define hb_is_base_of(Base, Derived)   hb_is_base_of<Base, Derived>::value
 
#define hb_is_cr_convertible(From, To)   hb_is_cr_convertible<From, To>::value
 
#define hb_is_integral(T)   hb_is_integral<T>::value
 
#define hb_is_floating_point(T)   hb_is_floating_point<T>::value
 
#define hb_is_arithmetic(T)   hb_is_arithmetic<T>::value
 
#define hb_is_signed(T)   hb_is_signed<T>::value
 
#define hb_is_unsigned(T)   hb_is_unsigned<T>::value
 
#define hb_int_min(T)   hb_int_min<T>::value
 
#define hb_int_max(T)   hb_int_max<T>::value
 
#define hb_is_destructible(T)   hb_is_destructible<T>::value
 
#define hb_is_constructible(...)   hb_is_constructible<__VA_ARGS__>::value
 
#define hb_is_default_constructible(T)   hb_is_default_constructible<T>::value
 
#define hb_is_copy_constructible(T)   hb_is_copy_constructible<T>::value
 
#define hb_is_move_constructible(T)   hb_is_move_constructible<T>::value
 
#define hb_is_assignable(T, U)   hb_is_assignable<T, U>::value
 
#define hb_is_copy_assignable(T)   hb_is_copy_assignable<T>::value
 
#define hb_is_move_assignable(T)   hb_is_move_assignable<T>::value
 
#define hb_is_trivially_destructible(T)   hb_is_trivially_destructible<T>::value
 
#define hb_is_trivially_default_constructible(T)   hb_is_trivially_default_constructible<T>::value
 
#define hb_is_trivially_copy_constructible(T)   hb_is_trivially_copy_constructible<T>::value
 
#define hb_is_trivially_move_constructible(T)   hb_is_trivially_move_constructible<T>::value
 
#define hb_is_trivially_copy_assignable(T)   hb_is_trivially_copy_assignable<T>::value
 
#define hb_is_trivially_move_assignable(T)   hb_is_trivially_move_assignable<T>::value
 
#define hb_is_trivially_copyable(T)   hb_is_trivially_copyable<T>::value
 
#define hb_is_trivial(T)   hb_is_trivial<T>::value
 
#define hb_unwrap_type(T)   typename hb_unwrap_type<T>::type
 

Typedefs

template<typename... Ts>
using hb_void_t = typename _hb_void_t< Ts... >::type
 
template<typename... Ts>
using hb_head_t = typename _hb_head_t< Ts... >::type
 
template<bool b>
using hb_bool_constant = hb_integral_constant< bool, b >
 
using hb_true_type = hb_bool_constant< true >
 
using hb_false_type = hb_bool_constant< false >
 
template<typename T >
using hb_type_identity = typename hb_type_identity_t< T >::type
 
template<typename T >
using hb_remove_const = typename hb_match_const< T >::type
 
template<typename T >
using hb_add_const = const T
 
template<typename T >
using hb_remove_reference = typename hb_match_reference< T >::type
 
template<typename T >
using hb_add_lvalue_reference = decltype(_hb_try_add_lvalue_reference< T >(hb_priority< 16 >()))
 
template<typename T >
using hb_add_rvalue_reference = decltype(_hb_try_add_rvalue_reference< T >(hb_priority< 16 >()))
 
template<typename T >
using hb_remove_pointer = typename hb_match_pointer< T >::type
 
template<typename T >
using hb_add_pointer = decltype(_hb_try_add_pointer< T >(hb_priority< 16 >()))
 
template<typename T >
using hb_decay = hb_remove_const< hb_remove_reference< T > >
 
template<bool B, class T , class F >
using hb_conditional = typename _hb_conditional< B, T, F >::type
 
template<typename Base , typename Derived >
using hb_is_base_of = hb_is_convertible< hb_decay< Derived > *, hb_decay< Base > * >
 
template<typename From , typename To >
using hb_is_cr_convertible = hb_bool_constant< hb_is_same< hb_decay< From >, hb_decay< To > >::value &&(!hb_match_const< From >::value||hb_match_const< To >::value) &&(!hb_match_reference< To >::value||hb_match_const< To >::value||hb_match_reference< To >::value) >
 
template<typename T >
using hb_is_integral = hb_bool_constant< hb_is_same< hb_decay< T >, char >::value||hb_is_same< hb_decay< T >, signed char >::value||hb_is_same< hb_decay< T >, unsigned char >::value||hb_is_same< hb_decay< T >, signed int >::value||hb_is_same< hb_decay< T >, unsigned int >::value||hb_is_same< hb_decay< T >, signed short >::value||hb_is_same< hb_decay< T >, unsigned short >::value||hb_is_same< hb_decay< T >, signed long >::value||hb_is_same< hb_decay< T >, unsigned long >::value||hb_is_same< hb_decay< T >, signed long long >::value||hb_is_same< hb_decay< T >, unsigned long long >::value||false >
 
template<typename T >
using hb_is_floating_point = hb_bool_constant< hb_is_same< hb_decay< T >, float >::value||hb_is_same< hb_decay< T >, double >::value||hb_is_same< hb_decay< T >, long double >::value||false >
 
template<typename T >
using hb_is_arithmetic = hb_bool_constant< hb_is_integral< T >::value||hb_is_floating_point< T >::value||false >
 
template<typename T >
using hb_is_signed = hb_conditional< hb_is_arithmetic< T >::value, hb_bool_constant<(T) -1<(T) 0 >, hb_false_type >
 
template<typename T >
using hb_is_unsigned = hb_conditional< hb_is_arithmetic< T >::value, hb_bool_constant<(T) 0<(T) -1 >, hb_false_type >
 
template<typename T >
using hb_is_destructible = _hb_is_destructible< T, void >
 
template<typename T , typename ... Ts>
using hb_is_constructible = _hb_is_constructible< T, void, Ts... >
 
template<typename T >
using hb_is_default_constructible = hb_is_constructible< T >
 
template<typename T >
using hb_is_copy_constructible = hb_is_constructible< T, hb_add_lvalue_reference< hb_add_const< T > >>
 
template<typename T >
using hb_is_move_constructible = hb_is_constructible< T, hb_add_rvalue_reference< hb_add_const< T > >>
 
template<typename T , typename U >
using hb_is_assignable = _hb_is_assignable< T, U, void >
 
template<typename T >
using hb_is_copy_assignable = hb_is_assignable< hb_add_lvalue_reference< T >, hb_add_lvalue_reference< hb_add_const< T > >>
 
template<typename T >
using hb_is_move_assignable = hb_is_assignable< hb_add_lvalue_reference< T >, hb_add_rvalue_reference< T > >
 
template<typename T >
using hb_is_trivially_destructible = hb_is_destructible< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_default_constructible = hb_is_default_constructible< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_copy_constructible = hb_is_copy_constructible< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_move_constructible = hb_is_move_constructible< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_copy_assignable = hb_is_copy_assignable< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_move_assignable = hb_is_move_assignable< hb_trivial< T > >
 
template<typename T >
using hb_is_trivially_copyable = hb_bool_constant< hb_is_trivially_destructible< T >::value &&(!hb_is_move_assignable< T >::value||hb_is_trivially_move_assignable< T >::value) &&(!hb_is_move_constructible< T >::value||hb_is_trivially_move_constructible< T >::value) &&(!hb_is_copy_assignable< T >::value||hb_is_trivially_copy_assignable< T >::value) &&(!hb_is_copy_constructible< T >::value||hb_is_trivially_copy_constructible< T >::value) &&true >
 
template<typename T >
using hb_is_trivial = hb_bool_constant< hb_is_trivially_copyable< T >::value &&hb_is_trivially_default_constructible< T >::value >
 
template<typename T >
using hb_unwrap_type = _hb_unwrap_type< T, void >
 

Functions

template<typename T >
static T (hb_declval< >())
 
template<typename T >
auto _hb_try_add_lvalue_reference (hb_priority< 1 >) -> hb_type_identity< T & >
 
template<typename T >
auto _hb_try_add_lvalue_reference (hb_priority< 0 >) -> hb_type_identity< T >
 
template<typename T >
auto _hb_try_add_rvalue_reference (hb_priority< 1 >) -> hb_type_identity< T && >
 
template<typename T >
auto _hb_try_add_rvalue_reference (hb_priority< 0 >) -> hb_type_identity< T >
 
template<typename T >
auto _hb_try_add_pointer (hb_priority< 1 >) -> hb_type_identity< hb_remove_reference< T > * >
 
template<typename T >
static constexpr hb_remove_reference< T > && hb_move (T &&t)
 
template<typename T >
static constexpr T && hb_forward (hb_remove_reference< T > &t)
 
template<typename T >
static constexpr T && hb_forward (hb_remove_reference< T > &&t)
 

Variables

struct {
hb_addressof
 
struct {
hb_deref
 
struct {
hb_ref
 

Macro Definition Documentation

◆ HB_AUTO_RETURN

#define HB_AUTO_RETURN (   E)    -> decltype ((E)) { return (E); }

Definition at line 68 of file hb-meta.hh.

◆ hb_declval

#define hb_declval (   T)    (hb_declval<T> ())

Definition at line 98 of file hb-meta.hh.

◆ hb_enable_if

#define hb_enable_if (   Cond)    typename hb_enable_if<(Cond)>::type* = nullptr

Definition at line 57 of file hb-meta.hh.

◆ HB_FUNCOBJ

#define HB_FUNCOBJ (   x)    static_const x HB_UNUSED

Definition at line 75 of file hb-meta.hh.

◆ hb_int_max

#define hb_int_max (   T)    hb_int_max<T>::value

Definition at line 292 of file hb-meta.hh.

◆ hb_int_min

#define hb_int_min (   T)    hb_int_min<T>::value

Definition at line 279 of file hb-meta.hh.

◆ hb_is_arithmetic

Definition at line 253 of file hb-meta.hh.

◆ hb_is_assignable

#define hb_is_assignable (   T,
  U 
)    hb_is_assignable<T, U>::value

Definition at line 330 of file hb-meta.hh.

◆ hb_is_base_of

#define hb_is_base_of (   Base,
  Derived 
)    hb_is_base_of<Base, Derived>::value

Definition at line 161 of file hb-meta.hh.

◆ hb_is_const

#define hb_is_const (   T)    hb_match_const<T>::value

Definition at line 104 of file hb-meta.hh.

◆ hb_is_constructible

#define hb_is_constructible (   ...)    hb_is_constructible<__VA_ARGS__>::value

Definition at line 310 of file hb-meta.hh.

◆ hb_is_convertible

#define hb_is_convertible (   From,
  To 
)    hb_is_convertible<From, To>::value

Definition at line 157 of file hb-meta.hh.

◆ hb_is_copy_assignable

Definition at line 335 of file hb-meta.hh.

◆ hb_is_copy_constructible

Definition at line 318 of file hb-meta.hh.

◆ hb_is_cr_convertible

#define hb_is_cr_convertible (   From,
  To 
)    hb_is_cr_convertible<From, To>::value

Definition at line 169 of file hb-meta.hh.

◆ hb_is_default_constructible

◆ hb_is_destructible

Definition at line 302 of file hb-meta.hh.

◆ hb_is_floating_point

Definition at line 246 of file hb-meta.hh.

◆ hb_is_integral

Definition at line 238 of file hb-meta.hh.

◆ hb_is_move_assignable

Definition at line 340 of file hb-meta.hh.

◆ hb_is_move_constructible

Definition at line 322 of file hb-meta.hh.

◆ hb_is_pointer

#define hb_is_pointer (   T)    hb_match_pointer<T>::value

Definition at line 122 of file hb-meta.hh.

◆ hb_is_reference

#define hb_is_reference (   T)    hb_match_reference<T>::value

Definition at line 115 of file hb-meta.hh.

◆ hb_is_same

#define hb_is_same (   T,
  T2 
)    hb_is_same<T, T2>::value

Definition at line 63 of file hb-meta.hh.

◆ hb_is_signed

Definition at line 260 of file hb-meta.hh.

◆ hb_is_trivial

Definition at line 396 of file hb-meta.hh.

◆ hb_is_trivially_copy_assignable

◆ hb_is_trivially_copy_constructible

◆ hb_is_trivially_copyable

Definition at line 389 of file hb-meta.hh.

◆ hb_is_trivially_default_constructible

◆ hb_is_trivially_destructible

◆ hb_is_trivially_move_assignable

◆ hb_is_trivially_move_constructible

◆ hb_is_unsigned

Definition at line 265 of file hb-meta.hh.

◆ hb_prioritize

#define hb_prioritize   hb_priority<16> ()

Definition at line 73 of file hb-meta.hh.

◆ hb_requires

#define hb_requires (   Cond)    hb_enable_if((Cond))

Definition at line 59 of file hb-meta.hh.

◆ HB_RETURN

#define HB_RETURN (   Ret,
  E 
)    -> hb_head_t<Ret, decltype ((E))> { return (E); }

Definition at line 67 of file hb-meta.hh.

◆ hb_unwrap_type

Definition at line 408 of file hb-meta.hh.

◆ HB_VOID_RETURN

#define HB_VOID_RETURN (   E)    -> hb_void_t<decltype ((E))> { (E); }

Definition at line 69 of file hb-meta.hh.

Typedef Documentation

◆ hb_add_const

template<typename T >
using hb_add_const = const T

Definition at line 103 of file hb-meta.hh.

◆ hb_add_lvalue_reference

template<typename T >
using hb_add_lvalue_reference = decltype (_hb_try_add_lvalue_reference<T> ( hb_priority<16> () ))

Definition at line 111 of file hb-meta.hh.

◆ hb_add_pointer

template<typename T >
using hb_add_pointer = decltype (_hb_try_add_pointer<T> ( hb_priority<16> () ))

Definition at line 121 of file hb-meta.hh.

◆ hb_add_rvalue_reference

template<typename T >
using hb_add_rvalue_reference = decltype (_hb_try_add_rvalue_reference<T> ( hb_priority<16> () ))

Definition at line 114 of file hb-meta.hh.

◆ hb_bool_constant

Definition at line 48 of file hb-meta.hh.

◆ hb_conditional

template<bool B, class T , class F >
using hb_conditional = typename _hb_conditional<B, T, F>::type

Definition at line 134 of file hb-meta.hh.

◆ hb_decay

Definition at line 126 of file hb-meta.hh.

◆ hb_false_type

Definition at line 50 of file hb-meta.hh.

◆ hb_head_t

template<typename... Ts>
using hb_head_t = typename _hb_head_t<Ts...>::type

Definition at line 45 of file hb-meta.hh.

◆ hb_is_arithmetic

Definition at line 248 of file hb-meta.hh.

◆ hb_is_assignable

Definition at line 329 of file hb-meta.hh.

◆ hb_is_base_of

template<typename Base , typename Derived >
using hb_is_base_of = hb_is_convertible<hb_decay<Derived> *, hb_decay<Base> *>

Definition at line 160 of file hb-meta.hh.

◆ hb_is_constructible

template<typename T , typename ... Ts>
using hb_is_constructible = _hb_is_constructible<T, void, Ts...>

Definition at line 309 of file hb-meta.hh.

◆ hb_is_copy_assignable

◆ hb_is_copy_constructible

◆ hb_is_cr_convertible

template<typename From , typename To >
using hb_is_cr_convertible = hb_bool_constant< hb_is_same< hb_decay<From> , hb_decay<To> >::value && (!hb_match_const< From >::value || hb_match_const< To >::value) && (!hb_match_reference< To >::value || hb_match_const< To >::value || hb_match_reference< To >::value) >

Definition at line 164 of file hb-meta.hh.

◆ hb_is_default_constructible

Definition at line 313 of file hb-meta.hh.

◆ hb_is_destructible

Definition at line 301 of file hb-meta.hh.

◆ hb_is_floating_point

template<typename T >
using hb_is_floating_point = hb_bool_constant< hb_is_same< hb_decay<T> , float >::value || hb_is_same< hb_decay<T> , double >::value || hb_is_same< hb_decay<T> , long double >::value || false >

Definition at line 240 of file hb-meta.hh.

◆ hb_is_integral

template<typename T >
using hb_is_integral = hb_bool_constant< hb_is_same< hb_decay<T> , char >::value || hb_is_same< hb_decay<T> , signed char >::value || hb_is_same< hb_decay<T> , unsigned char >::value || hb_is_same< hb_decay<T> , signed int >::value || hb_is_same< hb_decay<T> , unsigned int >::value || hb_is_same< hb_decay<T> , signed short >::value || hb_is_same< hb_decay<T> , unsigned short >::value || hb_is_same< hb_decay<T> , signed long >::value || hb_is_same< hb_decay<T> , unsigned long >::value || hb_is_same< hb_decay<T> , signed long long >::value || hb_is_same< hb_decay<T> , unsigned long long >::value || false >

Definition at line 224 of file hb-meta.hh.

◆ hb_is_move_assignable

◆ hb_is_move_constructible

◆ hb_is_signed

Definition at line 257 of file hb-meta.hh.

◆ hb_is_trivial

◆ hb_is_trivially_copy_assignable

Definition at line 373 of file hb-meta.hh.

◆ hb_is_trivially_copy_constructible

◆ hb_is_trivially_copyable

◆ hb_is_trivially_default_constructible

◆ hb_is_trivially_destructible

Definition at line 347 of file hb-meta.hh.

◆ hb_is_trivially_move_assignable

Definition at line 377 of file hb-meta.hh.

◆ hb_is_trivially_move_constructible

◆ hb_is_unsigned

Definition at line 262 of file hb-meta.hh.

◆ hb_remove_const

Definition at line 102 of file hb-meta.hh.

◆ hb_remove_pointer

Definition at line 118 of file hb-meta.hh.

◆ hb_remove_reference

Definition at line 108 of file hb-meta.hh.

◆ hb_true_type

Definition at line 49 of file hb-meta.hh.

◆ hb_type_identity

Definition at line 79 of file hb-meta.hh.

◆ hb_unwrap_type

Definition at line 407 of file hb-meta.hh.

◆ hb_void_t

template<typename... Ts>
using hb_void_t = typename _hb_void_t<Ts...>::type

Definition at line 42 of file hb-meta.hh.

Function Documentation

◆ _hb_try_add_lvalue_reference() [1/2]

template<typename T >
auto _hb_try_add_lvalue_reference ( hb_priority< 0 >  ) -> hb_type_identity< T >

◆ _hb_try_add_lvalue_reference() [2/2]

template<typename T >
auto _hb_try_add_lvalue_reference ( hb_priority< 1 >  ) -> hb_type_identity< T & >

◆ _hb_try_add_pointer()

template<typename T >
auto _hb_try_add_pointer ( hb_priority< 1 >  ) -> hb_type_identity< hb_remove_reference< T > * >

◆ _hb_try_add_rvalue_reference() [1/2]

template<typename T >
auto _hb_try_add_rvalue_reference ( hb_priority< 0 >  ) -> hb_type_identity< T >

◆ _hb_try_add_rvalue_reference() [2/2]

template<typename T >
auto _hb_try_add_rvalue_reference ( hb_priority< 1 >  ) -> hb_type_identity< T && >

◆ hb_forward() [1/2]

template<typename T >
static constexpr T&& hb_forward ( hb_remove_reference< T > &&  t)
staticconstexpr

Definition at line 179 of file hb-meta.hh.

References t, and T().

◆ hb_forward() [2/2]

template<typename T >
static constexpr T&& hb_forward ( hb_remove_reference< T > &  t)
staticconstexpr

Definition at line 177 of file hb-meta.hh.

References t, and T().

◆ hb_move()

template<typename T >
static constexpr hb_remove_reference<T>&& hb_move ( T &&  t)
staticconstexpr

Definition at line 174 of file hb-meta.hh.

References t.

◆ T()

template<typename T >
static T ( hb_declval< >  ())
inlinestatic

Referenced by hb_forward().

Variable Documentation

◆ 

hb_addressof { ... } struct

◆ 

hb_deref { ... } struct

◆ 

hb_ref { ... } struct