home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 2.1 KB | 96 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: PRGrRef.h
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef PRGRREF_H
- #define PRGRREF_H
-
- //========================================================================================
- // class FW_CPrivGrRefObj
- //========================================================================================
-
- class FW_CPrivGrRefObj
- {
- public:
- FW_CPrivGrRefObj();
- virtual ~FW_CPrivGrRefObj();
-
- void Acquire()
- { ++ fRefCount; }
- void Release();
- long GetRefCount()
- { return fRefCount; }
-
- private:
- long fRefCount;
- };
-
- //========================================================================================
- // class FW_CPrivGrRefPtrBase
- //========================================================================================
-
- class FW_CPrivGrRefPtrBase
- {
- public:
- FW_DECLARE_AUTO(FW_CPrivGrRefPtrBase)
- ~FW_CPrivGrRefPtrBase();
-
- protected:
- FW_CPrivGrRefPtrBase();
-
- FW_CPrivGrRefPtrBase(FW_CPrivGrRefObj* rep);
-
- void SetRep(FW_CPrivGrRefObj* rep);
-
- FW_CPrivGrRefObj* fRep;
- };
-
- //========================================================================================
- // class FW_CPrivGrRefPtr
- //========================================================================================
-
- template <class T>
- class FW_CPrivGrRefPtr : private FW_CPrivGrRefPtrBase
- {
- public:
-
- FW_CPrivGrRefPtr()
- { }
-
- FW_CPrivGrRefPtr(T* rep) :
- FW_CPrivGrRefPtrBase(rep)
- { }
-
- FW_CPrivGrRefPtr(const FW_CPrivGrRefPtr<T>& other) :
- FW_CPrivGrRefPtrBase(other.fRep)
- { }
-
- FW_Boolean IsSameRepAs(const FW_CPrivGrRefPtr<T>& other) const
- { return fRep == other.fRep; }
-
- void operator=(const FW_CPrivGrRefPtr<T>& other)
- { SetRep(other.fRep); }
-
- void operator=(T* rep)
- { SetRep(rep); }
-
- T* operator->()
- { return (T*) fRep; }
-
- const T* operator->() const
- { return (const T*) fRep; }
-
- operator T*()
- { return (T*) fRep; }
-
- operator const T*() const
- { return (const T*) fRep; }
- };
-
- #endif // PRGRREF_H
-