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-object.hh File Reference
#include "hb.hh"
#include "hb-atomic.hh"
#include "hb-mutex.hh"
#include "hb-vector.hh"
Include dependency graph for hb-object.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hb_lockable_set_t< item_t, lock_t >
 
struct  hb_reference_count_t
 
struct  hb_user_data_array_t
 
struct  hb_user_data_array_t::hb_user_data_item_t
 
struct  hb_object_header_t
 

Macros

#define HB_REFERENCE_COUNT_INERT_VALUE   0
 
#define HB_REFERENCE_COUNT_POISON_VALUE   -0x0000DEAD
 
#define HB_REFERENCE_COUNT_INIT   {HB_ATOMIC_INT_INIT (HB_REFERENCE_COUNT_INERT_VALUE)}
 
#define HB_OBJECT_HEADER_STATIC
 

Functions

template<typename Type >
static void hb_object_trace (const Type *obj, const char *function)
 
template<typename Type >
static Type * hb_object_create ()
 
template<typename Type >
static void hb_object_init (Type *obj)
 
template<typename Type >
static bool hb_object_is_inert (const Type *obj)
 
template<typename Type >
static bool hb_object_is_valid (const Type *obj)
 
template<typename Type >
static bool hb_object_is_immutable (const Type *obj)
 
template<typename Type >
static void hb_object_make_immutable (const Type *obj)
 
template<typename Type >
static Type * hb_object_reference (Type *obj)
 
template<typename Type >
static bool hb_object_destroy (Type *obj)
 
template<typename Type >
static void hb_object_fini (Type *obj)
 
template<typename Type >
static bool hb_object_set_user_data (Type *obj, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace)
 
template<typename Type >
static voidhb_object_get_user_data (Type *obj, hb_user_data_key_t *key)
 

Macro Definition Documentation

◆ HB_OBJECT_HEADER_STATIC

#define HB_OBJECT_HEADER_STATIC
Value:
{ \
HB_REFERENCE_COUNT_INIT, \
HB_ATOMIC_INT_INIT (false), \
HB_ATOMIC_PTR_INIT (nullptr) \
}

Definition at line 203 of file hb-object.hh.

◆ HB_REFERENCE_COUNT_INERT_VALUE

#define HB_REFERENCE_COUNT_INERT_VALUE   0

Definition at line 143 of file hb-object.hh.

◆ HB_REFERENCE_COUNT_INIT

#define HB_REFERENCE_COUNT_INIT   {HB_ATOMIC_INT_INIT (HB_REFERENCE_COUNT_INERT_VALUE)}

Definition at line 145 of file hb-object.hh.

◆ HB_REFERENCE_COUNT_POISON_VALUE

#define HB_REFERENCE_COUNT_POISON_VALUE   -0x0000DEAD

Definition at line 144 of file hb-object.hh.

Function Documentation

◆ hb_object_create()

template<typename Type >
static Type* hb_object_create ( )
inlinestatic

Definition at line 225 of file hb-object.hh.

References calloc(), HB_FUNC, hb_object_init(), hb_object_trace(), and unlikely.

◆ hb_object_destroy()

◆ hb_object_fini()

template<typename Type >
static void hb_object_fini ( Type *  obj)
inlinestatic

◆ hb_object_get_user_data()

◆ hb_object_init()

template<typename Type >
static void hb_object_init ( Type *  obj)
inlinestatic

◆ hb_object_is_immutable()

template<typename Type >
static bool hb_object_is_immutable ( const Type *  obj)
inlinestatic

◆ hb_object_is_inert()

template<typename Type >
static bool hb_object_is_inert ( const Type *  obj)
inlinestatic

◆ hb_object_is_valid()

template<typename Type >
static bool hb_object_is_valid ( const Type *  obj)
inlinestatic

◆ hb_object_make_immutable()

template<typename Type >
static void hb_object_make_immutable ( const Type *  obj)
inlinestatic

◆ hb_object_reference()

◆ hb_object_set_user_data()

◆ hb_object_trace()

template<typename Type >
static void hb_object_trace ( const Type *  obj,
const char *  function 
)
inlinestatic

Definition at line 216 of file hb-object.hh.

References DEBUG_MSG.

Referenced by hb_object_create(), hb_object_destroy(), and hb_object_reference().