34 #include <gwenhywfar/misc.h>
35 #include <gwenhywfar/debug.h>
41 GWEN_REFPTR_POBJECT *rpo;
56 assert(rpo->refCount);
57 if (--(rpo->refCount)==0) {
62 if (rpo->infoPtr->freeFn)
63 rpo->infoPtr->freeFn(rpo->ptr);
74 assert(rpo->refCount);
128 assert(rpi->refCount);
129 if (--(rpi->refCount)==0) {
140 assert(rpi->refCount);
178 rp->objectPtr->flags=rpi->flags;
199 nrp->objectPtr=rp->objectPtr;
211 if (rp->objectPtr->ptr) {
212 if (rp->objectPtr->infoPtr) {
213 if (rp->objectPtr->infoPtr->dupFn) {
216 p=rp->objectPtr->infoPtr->dupFn(rp->objectPtr->ptr);
232 return rp->objectPtr->ptr;
253 return rp->objectPtr->flags;
263 rp->objectPtr->flags=fl;
274 rp->objectPtr->flags|=fl;
285 rp->objectPtr->flags&=~fl;
void GWEN_RefPtrObject_free(GWEN_REFPTR_POBJECT *rpo)
void GWEN_RefPtr_SetData(GWEN_REFPTR *rp, void *dp, GWEN_REFPTR_INFO *rpi)
void GWEN_RefPtrInfo_DelFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
void GWEN_RefPtrInfo_free(GWEN_REFPTR_INFO *rpi)
#define GWEN_FREE_OBJECT(varname)
#define DBG_VERBOUS(dbg_logger, format, args...)
void GWEN_RefPtrInfo_Attach(GWEN_REFPTR_INFO *rpi)
void(* GWEN_REFPTR_INFO_FREE_FN)(void *dp)
void GWEN_RefPtrInfo_SetFreeFn(GWEN_REFPTR_INFO *rpi, GWEN_REFPTR_INFO_FREE_FN f)
struct GWEN_REFPTR GWEN_REFPTR
GWEN_REFPTR * GWEN_RefPtr_new(void *dp, GWEN_REFPTR_INFO *rpi)
void GWEN_RefPtr_DelFlags(GWEN_REFPTR *rp, uint32_t fl)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_RefPtr_free(GWEN_REFPTR *rp)
void GWEN_RefPtrInfo_SetDupFn(GWEN_REFPTR_INFO *rpi, GWEN_REFPTR_INFO_DUP_FN f)
struct GWEN_REFPTR_INFO GWEN_REFPTR_INFO
void GWEN_RefPtrObject_Attach(GWEN_REFPTR_POBJECT *rpo)
void GWEN_RefPtr_AddFlags(GWEN_REFPTR *rp, uint32_t fl)
GWEN_REFPTR * GWEN_RefPtr_dup(const GWEN_REFPTR *rp)
GWEN_REFPTR * GWEN_RefPtr_copy(const GWEN_REFPTR *rp)
void GWEN_RefPtrInfo_AddFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
#define DBG_INFO(dbg_logger, format, args...)
void * GWEN_RefPtr_GetData(const GWEN_REFPTR *rp)
#define GWEN_REFPTR_FLAGS_AUTODELETE
void GWEN_RefPtrInfo_SetFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
void GWEN_RefPtr_SetFlags(GWEN_REFPTR *rp, uint32_t fl)
uint32_t GWEN_RefPtr_GetFlags(const GWEN_REFPTR *rp)
GWEN_REFPTR_INFO * GWEN_RefPtrInfo_new(void)
void *(* GWEN_REFPTR_INFO_DUP_FN)(void *dp)
GWEN_REFPTR_POBJECT * GWEN_RefPtrObject_new(void *dp, GWEN_REFPTR_INFO *rpi)
uint32_t GWEN_RefPtrInfo_GetFlags(const GWEN_REFPTR_INFO *rpi)