home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWGraphx / PRGrRef.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  2.4 KB  |  100 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                PRGrRef.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef PRGRREF_H
  13. #include "PRGrRef.h"
  14. #endif
  15.  
  16. #ifndef FWPRIDEB_H
  17. #include "FWPriDeb.h"
  18. #endif
  19.  
  20. //========================================================================================
  21. //    RunTime Info
  22. //========================================================================================
  23.  
  24. #ifdef FW_BUILD_MAC
  25. #pragma segment FW_Graphics
  26. #endif
  27.  
  28. FW_DEFINE_AUTO(FW_CPrivGrRefPtrBase)
  29.  
  30. //========================================================================================
  31. //    class FW_CPrivGrRefObj
  32. //========================================================================================
  33.  
  34. //----------------------------------------------------------------------------------------
  35. //    FW_CPrivGrRefObj::FW_CPrivGrRefObj
  36. //----------------------------------------------------------------------------------------
  37.  
  38. FW_CPrivGrRefObj::FW_CPrivGrRefObj() :
  39.     fRefCount(0)
  40. {
  41. }
  42.  
  43. //----------------------------------------------------------------------------------------
  44. //    FW_CPrivGrRefObj::~FW_CPrivGrRefObj
  45. //----------------------------------------------------------------------------------------
  46.  
  47. FW_CPrivGrRefObj::~FW_CPrivGrRefObj()
  48. {
  49.     FW_ASSERT(fRefCount == 0);
  50. }
  51.  
  52. //----------------------------------------------------------------------------------------
  53. //    FW_CPrivGrRefObj::Release
  54. //----------------------------------------------------------------------------------------
  55.  
  56. void FW_CPrivGrRefObj::Release()
  57. {
  58.     if (-- fRefCount == 0)
  59.         delete this;
  60. }
  61.  
  62. //========================================================================================
  63. //    class FW_CPrivGrRefPtrBase
  64. //========================================================================================
  65.  
  66. FW_CPrivGrRefPtrBase::FW_CPrivGrRefPtrBase(FW_CPrivGrRefObj* rep) :
  67.     fRep(rep)
  68. {
  69.     if (fRep != 0)
  70.         fRep->Acquire();
  71.         
  72.     FW_END_CONSTRUCTOR
  73. }
  74.  
  75. FW_CPrivGrRefPtrBase::FW_CPrivGrRefPtrBase() :
  76.     fRep(0)
  77. {
  78.     FW_END_CONSTRUCTOR
  79. }
  80.  
  81. FW_CPrivGrRefPtrBase::~FW_CPrivGrRefPtrBase()
  82. {
  83.     FW_START_DESTRUCTOR
  84.  
  85.     if (fRep != 0)
  86.         fRep->Release();
  87. }
  88.  
  89. void FW_CPrivGrRefPtrBase::SetRep(FW_CPrivGrRefObj* rep)
  90. {
  91.     if (rep != 0)
  92.         rep->Acquire();
  93.         
  94.     if (fRep != 0)
  95.         fRep->Release();
  96.  
  97.     fRep = rep;
  98. }
  99.  
  100.