![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVirtualBaseClass.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvUtil/vrvUtil.h> 00016 00017 namespace makVrv 00018 { 00022 class DT_DLL_VRVUTIL DtVirtualBaseClass 00023 { 00024 00025 public: 00026 00028 DtVirtualBaseClass(); 00029 00031 virtual ~DtVirtualBaseClass(); 00032 00033 }; 00034 00037 template <typename T> 00038 class DtInstanceHolder : public DtVirtualBaseClass 00039 { 00040 public: 00041 DtInstanceHolder(T* ptr) : myPointer(ptr) 00042 { 00043 } 00044 00045 virtual ~DtInstanceHolder() 00046 { 00047 delete myPointer; 00048 myPointer = 0; 00049 } 00050 00051 T* get() 00052 { 00053 return myPointer; 00054 } 00055 00056 T* myPointer; 00057 }; 00058 00061 template <typename T> 00062 class DtWeakInstanceHolder : public DtVirtualBaseClass 00063 { 00064 public: 00065 DtWeakInstanceHolder(T* ptr) : myPointer(ptr) 00066 { 00067 } 00068 00069 virtual ~DtWeakInstanceHolder() 00070 { 00071 // do not delete 00072 myPointer = 0; 00073 } 00074 00075 T* get() 00076 { 00077 return myPointer; 00078 } 00079 00080 T* myPointer; 00081 }; 00082 } 00083 00084