00001 #if !defined(__MCGLOBAL_H_)
00002 #define __MCGLOBAL_H_
00003
00004 #ident "@(#)$Id: MCGlobal.h,v 1.4 2004/11/08 07:56:22 mike Exp $"
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 namespace mcllib
00026 {
00033 template<typename T> class MCSingleton
00034 {
00035 public:
00037 MCSingleton()
00038 {
00039 if (m_pInstance == 0) {
00040 m_pInstance = new T;
00041 }
00042
00043 }
00045 inline T* operator->()
00046 {
00047 return(m_pInstance);
00048 }
00050 inline T& operator*()
00051 {
00052 return(*m_pInstance);
00053 }
00054
00056 static T* m_pInstance;
00057 };
00058
00062 template<typename T>
00063 void MCSingletonMaker(T* )
00064 {
00065 MCSingleton<T> t;
00066 (void)t.m_pInstance;
00067 }
00068
00069 };
00070
00071 #endif