CFx SDK Documentation  2020SP3
TrVisStaticSharedPtr.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 // GLES2 device static shared pointer
24 
25 #ifndef ODTRVISSTATICSHAREDPTR
26 #define ODTRVISSTATICSHAREDPTR
27 
28 #include "TD_PackPush.h"
29 
30 #include "SharedPtr.h"
31 
35 template <class T>
36 class OdStaticSharedPtr : public OdSharedPtr<T>
37 {
38  protected:
40  protected:
41  T **accessObjPtr() { return reinterpret_cast<T**>(this); }
42  int **accessRefPtr() { return reinterpret_cast<int**>(this) + 1; }
43  public:
45  : OdSharedPtr<T>(), m_realRefs(2)
46  {
47  *accessObjPtr() = pRef;
49  }
51  {
52  **this = *other;
53  return *this;
54  }
55  private:
56  T* detach() { return NULL; }
57  OdStaticSharedPtr(const OdStaticSharedPtr &other) {}
58 };
59 
63 template <class T>
65 {
66  protected:
68  public:
71  {
72  }
75  {
76  m_realObj = *other;
77  }
78 };
79 
80 #include "TD_PackPop.h"
81 
82 #endif // ODTRVISSTATICSHAREDPTR
NULL
#define NULL
Definition: GsProperties.h:177
OdStaticSharedPtr
Definition: TrVisStaticSharedPtr.h:37
OdStaticDefSharedPtr::OdStaticDefSharedPtr
OdStaticDefSharedPtr()
Definition: TrVisStaticSharedPtr.h:69
OdStaticSharedPtr::accessObjPtr
T ** accessObjPtr()
Definition: TrVisStaticSharedPtr.h:41
OdSharedPtr
Definition: SharedPtr.h:49
OdStaticDefSharedPtr::OdStaticDefSharedPtr
OdStaticDefSharedPtr(const OdStaticDefSharedPtr &other)
Definition: TrVisStaticSharedPtr.h:73
OdStaticSharedPtr::operator=
OdStaticSharedPtr & operator=(const OdStaticSharedPtr &other)
Definition: TrVisStaticSharedPtr.h:50
TD_PackPop.h
OdStaticSharedPtr::OdStaticSharedPtr
OdStaticSharedPtr(T *pRef)
Definition: TrVisStaticSharedPtr.h:44
SharedPtr.h
OdStaticDefSharedPtr
Definition: TrVisStaticSharedPtr.h:65
OdStaticDefSharedPtr::m_realObj
T m_realObj
Definition: TrVisStaticSharedPtr.h:67
TD_PackPush.h
OdStaticSharedPtr::m_realRefs
int m_realRefs
Definition: TrVisStaticSharedPtr.h:39
OdStaticSharedPtr::accessRefPtr
int ** accessRefPtr()
Definition: TrVisStaticSharedPtr.h:42