home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 2.5 KB | 78 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWTDstry.h
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef FWTDSTRY_H
- #define FWTDSTRY_H
-
- #ifndef FWDEBUG_H
- #include "FWDebug.h"
- #endif
-
- //========================================================================================
- // class FW_TPrivDestroyer : generic template for destroying singletons
- //========================================================================================
-
- template<class tDoomed>
- class FW_TPrivDestroyer
- {
- public:
- FW_TPrivDestroyer(tDoomed* doomed = 0);
- ~FW_TPrivDestroyer();
-
- void SetDoomed(tDoomed* doomed) { fDoomed = doomed; }
-
- private:
- // prevent copying to avoid double deletion
- FW_TPrivDestroyer(const FW_TPrivDestroyer<tDoomed>& other);
- FW_TPrivDestroyer<tDoomed>& operator=(const FW_TPrivDestroyer<tDoomed>& other);
-
- private:
- tDoomed* fDoomed;
- };
-
- //----------------------------------------------------------------------------------------
- // FW_TPrivDestroyer::FW_TPrivDestroyer
- //----------------------------------------------------------------------------------------
- template<class tDoomed>
- FW_TPrivDestroyer<tDoomed>::FW_TPrivDestroyer(tDoomed* doomed) :
- fDoomed(doomed)
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_TPrivDestroyer::FW_TPrivDestroyer
- //----------------------------------------------------------------------------------------
- template<class tDoomed>
- FW_TPrivDestroyer<tDoomed>::FW_TPrivDestroyer(const FW_TPrivDestroyer<tDoomed>& )
- {
- // Illegal call to FW_TPrivDestroyer copy constructor!
- FW_DEBUGGER();
- }
-
- //----------------------------------------------------------------------------------------
- // FW_TPrivDestroyer::~FW_TPrivDestroyer
- //----------------------------------------------------------------------------------------
- template<class tDoomed>
- FW_TPrivDestroyer<tDoomed>::~FW_TPrivDestroyer()
- {
- delete fDoomed;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_TPrivDestroyer::operator=
- //----------------------------------------------------------------------------------------
- template<class tDoomed>
- FW_TPrivDestroyer<tDoomed>& FW_TPrivDestroyer<tDoomed>::operator=(const FW_TPrivDestroyer<tDoomed>&)
- {
- // Illegal call to FW_TPrivDestroyer assignment operator!
- FW_DEBUGGER();
- return *this;
- }
-
- #endif