40 #define HB_NULL_POOL_SIZE 384
52 template <
typename T,
typename>
57 (sizeof (T) > T::null_size ? sizeof (T) : T::null_size)> {};
60 #define hb_null_size(T) hb_null_size<T>::value
67 template <
typename T,
typename>
73 #define hb_static_size(T) hb_static_size<T>::value
75 template <
typename T,
typename>
81 #define hb_min_size(T) hb_min_size<T>::value
92 template <
typename Type>
100 template <
typename QType>
106 #define Null(Type) NullHelper<Type>::get_null ()
109 #define DECLARE_NULL_NAMESPACE_BYTES(Namespace, Type) \
111 extern HB_INTERNAL const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::null_size]; \
113 struct Null<Namespace::Type> { \
114 static Namespace::Type const & get_null () { \
115 return *reinterpret_cast<const Namespace::Type *> (_hb_Null_##Namespace##_##Type); \
118 namespace Namespace { \
119 static_assert (true, "")
120 #define DEFINE_NULL_NAMESPACE_BYTES(Namespace, Type) \
121 const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::null_size]
124 #define DECLARE_NULL_INSTANCE(Type) \
125 extern HB_INTERNAL const Type _hb_Null_##Type; \
127 struct Null<Type> { \
128 static Type const & get_null () { \
129 return _hb_Null_##Type; \
132 static_assert (true, "")
133 #define DEFINE_NULL_INSTANCE(Type) \
134 const Type _hb_Null_##Type
146 template <
typename Type>
153 template <
typename QType>
159 #define Crap(Type) CrapHelper<Type>::get_crap ()
161 template <
typename Type>
165 template <
typename Type>
169 #define CrapOrNull(Type) CrapOrNullHelper<Type>::get ()
176 template <
typename P>
187 template <
typename C>
operator const C * ()
const {
return get (); }
188 operator const char * ()
const {
return (
const char *)
get (); }
auto it unsigned count const
HB_INTERNAL uint64_t const _hb_NullPool[(HB_NULL_POOL_SIZE+sizeof(uint64_t) - 1)/sizeof(uint64_t)]
HB_INTERNAL uint64_t _hb_CrapPool[(HB_NULL_POOL_SIZE+sizeof(uint64_t) - 1)/sizeof(uint64_t)]
#define HB_NULL_POOL_SIZE
GLsizei const GLfloat * v
[13]
hb_remove_const< hb_remove_reference< QType > > Type
static const Type & get()
static const Type & get_null()
hb_remove_const< hb_remove_reference< QType > > Type
static Type const & get_null()
hb_nonnull_ptr_t(T *v_=nullptr)