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
void LTI_RELEASE(TYPE *&object)
Call release() on non-NULL objects and NULL out the pointer.
~RC(void)
releases the object when RC<> goes out of scope
RC(TYPE *object)
manage an existing object
LTIReferenceCountedObject is a base class for implementing reference counting.
RC(void)
create an object on the heap
const TYPE & operator*(void) const
TYPE * LTI_RETAIN(TYPE *object)
Helper functions that test if the object is NULL before calling retian() and release().
#define LT_BEGIN_NAMESPACE(theNameSpace)
compiler does not support namespaces
TYPE & operator*(void)
make the wrapper look like a pointer to TYPE
#define LTI_REFERENCE_COUNTED_BOILERPLATE_BASE(classname)
Macros for defining boilerplate parts of derived LTIReferenceCountedObject classes.
signed int lt_int32
signed 32-bit integer
This file contains a number of enums, typedefs, etc, that are used throughout the MrSID SDK...
TYPE * operator->(void)
make the wrapper look like a pointer to TYPE
RC<> is a wrapper class around LTIReferenceCountedObject that gives the wrapped object block scoping...
RC & operator=(const RC &object)
#define LT_END_NAMESPACE(theNameSpace)
compiler does not support namespaces
RC & operator=(TYPE *object)