Go to the SVN repository for this file.
1 #ifndef NCBI_AUTOINIT__HPP 2 #define NCBI_AUTOINIT__HPP 64 typedefvoid (*FUserCleanup)(
void* ptr);
68 boolIsInitialized(
void)
const;
72 typedefvoid (*FSelfCleanup)(
void** ptr);
82FUserCleanup user_cleanup = 0)
84m_SelfCleanup(self_cleanup),
85m_UserCleanup(user_cleanup)
89 voidAssertUninitialized(
void)
const;
103m_UserCleanup(m_Ptr);
105m_SelfCleanup(&m_Ptr);
139 return*
static_cast<T*
>(
m_Ptr);
143 template<
classFUserCreate>
144 T&
Get(FUserCreate user_create)
149 return*
static_cast<T*
>(
m_Ptr);
159 void Set(
T*
object);
165 template<
classFUserCreate>
166 void x_Init(FUserCreate user_create);
171 T*
tmp=
static_cast<T*
>(*ptr);
208 return*
static_cast<T*
>(
m_Ptr);
212 template<
classFUserCreate>
213 T&
Get(FUserCreate user_create)
218 return*
static_cast<T*
>(
m_Ptr);
227 void Set(
T*
object);
233 template<
classFUserCreate>
234 void x_Init(FUserCreate user_create);
239 T*
tmp=
static_cast<T*
>(*ptr);
241 tmp->RemoveReference();
265AssertUninitialized();
266 if( m_Ptr )
return;
276 if( m_Ptr )
return;
282 template<
classFUserCreate>
287 if( m_Ptr )
return;
288m_Ptr = user_create();
297AssertUninitialized();
298 if( m_Ptr )
return;
300 object->AddReference();
311 if( m_Ptr )
return;
319 template<
classFUserCreate>
324 if( m_Ptr )
return;
void(* FUserCleanup)(void *ptr)
User cleanup function type.
FUserCleanup m_UserCleanup
CAutoInitPtr_Base(FSelfCleanup self_cleanup, FUserCleanup user_cleanup=0)
Constructor.
DECLARE_CLASS_STATIC_MUTEX(sm_Mutex)
void * m_Ptr
Pointer to the data.
bool IsInitialized(void) const
FSelfCleanup m_SelfCleanup
T & Get(FUserCreate user_create)
Get the existing object or create a new one using the provided FUserCreate object.
static void x_SelfCleanup(void **ptr)
CAutoInitPtr(FUserCleanup user_cleanup=0)
Constructor.
void Set(T *object)
Initialize with an existing object.
T & Get(void)
Create the variable if not created yet, return the reference.
void Set(T *object)
Initialize with an existing object.
T & Get(FUserCreate user_create)
Get the existing object or create a new one using the provided FUserCreate object.
CAutoInitRef(FUserCleanup user_cleanup=0)
Constructor.
T & Get(void)
Create the variable if not created yet, return the reference.
static void x_SelfCleanup(void **ptr)
TObjectType * Release(void)
Release a reference to the object and return a pointer to the object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define NCBI_XNCBI_EXPORT
Multi-threading â mutexes; rw-locks; semaphore.
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.
The NCBI C++/STL use hints.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4