13 #ifndef LTI_REFERENCE_COUNTED_OBJECT_H 14 #define LTI_REFERENCE_COUNTED_OBJECT_H 45 #define LTI_REFERENCE_COUNTED_BOILERPLATE_BASE(classname) \ 46 LT_DISALLOW_COPY_CONSTRUCTOR(classname); \ 49 virtual ~classname(void) 51 #define LTI_REFERENCE_COUNTED_BOILERPLATE(classname) \ 52 LTI_REFERENCE_COUNTED_BOILERPLATE_BASE(classname); \ 54 static classname *create(void) 60 virtual void retain(
void)
const;
63 virtual void release(
void)
const;
75 template<
typename TYPE>
inline TYPE *
84 template<
typename TYPE>
inline void 99 template<
typename TYPE>
111 RC(
void) : m_object(TYPE::create()) {}
134 m_object =
object.m_object;
146 operator TYPE *&(void) {
return m_object; }
147 operator const TYPE *&(void)
const {
return m_object; }
155 template<
typename TYPE>
inline RC<TYPE> &
168 #endif // LTI_REFERENCE_COUNTED_OBJECT_H const TYPE & operator*(void) const
RC & operator=(const RC &object)
This file contains a number of enums, typedefs, etc, that are used throughout the MrSID SDK...
TYPE * LTI_RETAIN(TYPE *object)
Helper functions that test if the object is NULL before calling retian() and release().
#define LTI_REFERENCE_COUNTED_BOILERPLATE_BASE(classname)
Macros for defining boilerplate parts of derived LTIReferenceCountedObject classes.
RC(TYPE *object)
manage an existing object
~RC(void)
releases the object when RC<> goes out of scope
RC<> is a wrapper class around LTIReferenceCountedObject that gives the wrapped object block scoping...
TYPE & operator*(void)
make the wrapper look like a pointer to TYPE
RC(void)
create an object on the heap
LTIReferenceCountedObject is a base class for implementing reference counting.
#define LT_BEGIN_NAMESPACE(theNameSpace)
compiler does not support namespaces
const TYPE * operator->(void) const
TYPE * operator->(void)
make the wrapper look like a pointer to TYPE
RC & operator=(TYPE *object)
signed int lt_int32
signed 32-bit integer
#define LT_END_NAMESPACE(theNameSpace)
compiler does not support namespaces
void LTI_RELEASE(TYPE *&object)
Call release() on non-NULL objects and NULL out the pointer.