7 #ifndef OBJECT_H__GLYMPSE__
8 #define OBJECT_H__GLYMPSE__
15 template<
class T >
class Common;
30 template<
class T >
class O
41 template<
class U >
friend class O;
42 template<
class V >
friend class Common;
59 public:
O(
const O<T>& rO)
64 public:
template<
class T2 >
O(
const O<T2>& rO)
65 : _object(dynamic_cast<T*>(rO._object))
74 public: O<T>& operator=(T* address)
80 public: O<T>& operator=(
const O<T>& rO)
90 public:
template<
class T2 > O<T>& operator=(
const O<T2>& rO)
93 _object =
dynamic_cast<T*
>(rO._object);
115 public:
template<
class T2>
bool operator==(
const O<T2> &rO)
117 return _object == rO._object;
119 public:
template<
class T2>
bool operator==(
const O<T2> &rO)
const
121 return _object == rO._object;
123 public:
template<
class T2>
bool operator!=(
const O<T2> &rO)
125 return _object != rO._object;
127 public:
template<
class T2>
bool operator!=(
const O<T2> &rO)
const
129 return _object != rO._object;
131 public:
template<
class T2>
bool operator<(const O<T2> &rO)
133 return _object < rO._object;
135 public:
template<
class T2>
bool operator<(const O<T2> &rO)
const
137 return _object < rO._object;
146 public:
bool operator==(T* address)
148 return (_object == address);
150 public:
bool operator==(T* address)
const
152 return (_object == address);
154 public:
bool operator!=(T* address)
156 return (_object != address);
158 public:
bool operator!=(T* address)
const
160 return (_object != address);
172 T* operator->()
const
184 private:
inline void retain()
195 private:
inline void release()
209 template<
class T >
inline bool operator==(
void* lhs,
const O<T>& rhs)
211 return ( lhs == rhs.operator->() );
218 template<
class T >
inline bool operator!=(
void* lhs,
const O<T>& rhs)
220 return ( lhs != rhs.operator->() );
259 #endif // !OBJECT_H__GLYMPSE__