diff -r 5b0aeef8ba2a -r 5608ac657362 project_files/frontlib/util/refcounter.h --- a/project_files/frontlib/util/refcounter.h Thu Jun 21 21:32:12 2012 +0200 +++ b/project_files/frontlib/util/refcounter.h Mon Jun 25 00:42:07 2012 +0200 @@ -11,41 +11,20 @@ #ifndef REFCOUNTER_H_ #define REFCOUNTER_H_ -#include "logging.h" #include -static inline void flib_retain(int *referenceCountPtr, const char *objName) { - if(!referenceCountPtr || !objName) { - flib_log_e("null parameter to flib_retain"); - } else { - if((*referenceCountPtr) >= 0) { - (*referenceCountPtr)++; - flib_log_d("retaining %s, now %i references", objName, (*referenceCountPtr)); - } - if((*referenceCountPtr) < 0) { - flib_log_e("Memory leak: Reference count overflow in %s object!", objName); - } - } -} - /** - * Returns true if the struct should be freed. + * Pass a pointer to the counter variable to be incremented, and the name of the + * object for logging purposes. On overflow an error will be logged and the + * counter will get "stuck" so neither retain nor release will modify it anymore. */ -static inline bool flib_release(int *referenceCountPtr, const char *objName) { - bool result = false; - if(!referenceCountPtr) { - flib_log_e("null parameter to flib_release"); - } else if((*referenceCountPtr) > 0) { - if(--(*referenceCountPtr) == 0) { - flib_log_d("releasing and destroying %s", objName); - result = true; - } else { - flib_log_d("releasing %s, now %i references", objName, (*referenceCountPtr)); - } - } else if((*referenceCountPtr) == 0) { - flib_log_e("Attempt to release a %s with zero references!", objName); - } - return result; -} +void flib_retain(int *referenceCountPtr, const char *objName); + +/** + * Pass a pointer to the counter variable to be decremented and the name + * of the object for logging purposes. + * Returns true if the object should be freed. + */ +bool flib_release(int *referenceCountPtr, const char *objName); #endif /* REFCOUNTER_H_ */