27#if !defined(OdRxObjectImpl_INCLUDED_)
28#define OdRxObjectImpl_INCLUDED_
53template<
class T,
class TInterface = T>
93 if (!(--m_nRefCounter))
102 long numRefs()
const {
return m_nRefCounter; }
113#if (defined(_MSC_VER) && (_MSC_VER > 1700)) || (defined(__cplusplus) && (__cplusplus > 199711L))
131template<
class T,
class TInterface = T>
132class OdRxObjectImpl2 :
public T
142 OdRxObjectImpl2& operator = (
const OdRxObjectImpl2&);
152 template<
typename... Args>
153 OdRxObjectImpl2(Args&&... args)
154 : T(std::forward<Args>(args)...)
174 if (!(--m_nRefCounter))
183 long numRefs()
const {
return m_nRefCounter; }
188 template<
typename... Args>
200#define RXIMPL_CONSTR(ClassName) OdRxObjectImpl<ClassName>::createObject()
205#define ABSTRACTIMPL_CONSTR(CLASS) OdRxObjectImpl<CLASS##Impl>::createObject()
207template<
class T,
class TImpl>
211#ifdef ODA_NEED_TEMP_USING
229#define OD_IDCAT(ID, Postf) ID##Postf
231#define RXIMPLOBJCONSTRUCT(ClassName) OdRxObjectImpl<OdObjectWithImpl<ClassName, OD_IDCAT(ClassName,Impl)> >::createObject()
233#define IMPLOBJCONSTRUCT(ClassName) OdObjectWithImpl<ClassName, OD_IDCAT(ClassName,Impl)>::createObject()
#define ODRX_HEAP_OPERATORS()
static OdSmartPtr< T > createObject()
static OdSmartPtr< TInterface > createObject()