34#include <gwenhywfar/misc.h>
35#include <gwenhywfar/debug.h>
42 GWEN_REFPTR_POBJECT *rpo;
58 assert(rpo->refCount);
59 if (--(rpo->refCount)==0) {
64 if (rpo->infoPtr->freeFn)
65 rpo->infoPtr->freeFn(rpo->ptr);
77 assert(rpo->refCount);
137 assert(rpi->refCount);
138 if (--(rpi->refCount)==0) {
150 assert(rpi->refCount);
191 rp->objectPtr->flags=rpi->flags;
214 nrp->objectPtr=rp->objectPtr;
227 if (rp->objectPtr->ptr) {
228 if (rp->objectPtr->infoPtr) {
229 if (rp->objectPtr->infoPtr->dupFn) {
232 p=rp->objectPtr->infoPtr->dupFn(rp->objectPtr->ptr);
249 return rp->objectPtr->ptr;
272 return rp->objectPtr->flags;
283 rp->objectPtr->flags=fl;
295 rp->objectPtr->flags|=fl;
307 rp->objectPtr->flags&=~fl;
#define DBG_VERBOUS(dbg_logger, format, args...)
#define DBG_INFO(dbg_logger, format, args...)
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_RefPtrInfo_DelFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
GWEN_REFPTR * GWEN_RefPtr_new(void *dp, GWEN_REFPTR_INFO *rpi)
GWEN_REFPTR_INFO * GWEN_RefPtrInfo_new(void)
void GWEN_RefPtrInfo_SetFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
void GWEN_RefPtr_DelFlags(GWEN_REFPTR *rp, uint32_t fl)
GWEN_REFPTR * GWEN_RefPtr_copy(const GWEN_REFPTR *rp)
void GWEN_RefPtr_free(GWEN_REFPTR *rp)
GWEN_REFPTR_POBJECT * GWEN_RefPtrObject_new(void *dp, GWEN_REFPTR_INFO *rpi)
void GWEN_RefPtrObject_Attach(GWEN_REFPTR_POBJECT *rpo)
void GWEN_RefPtr_SetFlags(GWEN_REFPTR *rp, uint32_t fl)
void GWEN_RefPtrInfo_SetFreeFn(GWEN_REFPTR_INFO *rpi, GWEN_REFPTR_INFO_FREE_FN f)
void GWEN_RefPtr_AddFlags(GWEN_REFPTR *rp, uint32_t fl)
void * GWEN_RefPtr_GetData(const GWEN_REFPTR *rp)
void GWEN_RefPtrInfo_free(GWEN_REFPTR_INFO *rpi)
GWEN_REFPTR * GWEN_RefPtr_dup(const GWEN_REFPTR *rp)
void GWEN_RefPtrInfo_Attach(GWEN_REFPTR_INFO *rpi)
uint32_t GWEN_RefPtr_GetFlags(const GWEN_REFPTR *rp)
void GWEN_RefPtrInfo_AddFlags(GWEN_REFPTR_INFO *rpi, uint32_t fl)
void GWEN_RefPtr_SetData(GWEN_REFPTR *rp, void *dp, GWEN_REFPTR_INFO *rpi)
uint32_t GWEN_RefPtrInfo_GetFlags(const GWEN_REFPTR_INFO *rpi)
void GWEN_RefPtrObject_free(GWEN_REFPTR_POBJECT *rpo)
void GWEN_RefPtrInfo_SetDupFn(GWEN_REFPTR_INFO *rpi, GWEN_REFPTR_INFO_DUP_FN f)
void *(* GWEN_REFPTR_INFO_DUP_FN)(void *dp)
struct GWEN_REFPTR_INFO GWEN_REFPTR_INFO
#define GWEN_REFPTR_FLAGS_AUTODELETE
void(* GWEN_REFPTR_INFO_FREE_FN)(void *dp)
struct GWEN_REFPTR GWEN_REFPTR