|
|
@ -140,9 +140,7 @@ struct hb_lockable_set_t |
|
|
|
* Reference-count. |
|
|
|
* Reference-count. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#define HB_REFERENCE_COUNT_INERT_VALUE 0 |
|
|
|
#define HB_REFERENCE_COUNT_INIT {HB_ATOMIC_INT_INIT (0)} |
|
|
|
#define HB_REFERENCE_COUNT_POISON_VALUE -0x0000DEAD |
|
|
|
|
|
|
|
#define HB_REFERENCE_COUNT_INIT {HB_ATOMIC_INT_INIT (HB_REFERENCE_COUNT_INERT_VALUE)} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct hb_reference_count_t |
|
|
|
struct hb_reference_count_t |
|
|
|
{ |
|
|
|
{ |
|
|
@ -152,9 +150,9 @@ struct hb_reference_count_t |
|
|
|
int get_relaxed () const { return ref_count.get_relaxed (); } |
|
|
|
int get_relaxed () const { return ref_count.get_relaxed (); } |
|
|
|
int inc () const { return ref_count.inc (); } |
|
|
|
int inc () const { return ref_count.inc (); } |
|
|
|
int dec () const { return ref_count.dec (); } |
|
|
|
int dec () const { return ref_count.dec (); } |
|
|
|
void fini () { ref_count.set_relaxed (HB_REFERENCE_COUNT_POISON_VALUE); } |
|
|
|
void fini () { ref_count.set_relaxed (-0x0000DEAD); } |
|
|
|
|
|
|
|
|
|
|
|
bool is_inert () const { return ref_count.get_relaxed () == HB_REFERENCE_COUNT_INERT_VALUE; } |
|
|
|
bool is_inert () const { return !ref_count.get_relaxed (); } |
|
|
|
bool is_valid () const { return ref_count.get_relaxed () > 0; } |
|
|
|
bool is_valid () const { return ref_count.get_relaxed () > 0; } |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|