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 / FWODMisc / FWAcquir.cpp next >
Encoding:
Text File  |  1996-09-17  |  12.6 KB  |  419 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWAcquir.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 FWACQUIR_H
  13. #include "FWAcquir.h"
  14. #endif
  15.  
  16. #ifndef FWMEMMGR_H
  17. #include "FWMemMgr.h"
  18. #endif
  19.  
  20. #ifndef FWPRIDEB_H
  21. #include "FWPriDeb.h"
  22. #endif
  23.  
  24. #ifndef FWSOMENV_H
  25. #include "FWSOMEnv.h"
  26. #endif
  27.  
  28. #ifndef SOM_ODStorageUnitView_xh
  29. #include <SUView.xh>
  30. #endif
  31.  
  32. #ifndef SOM_ODStorageUnitCursor_xh
  33. #include <SUCursor.xh>
  34. #endif
  35.  
  36. #ifndef SOM_ODRefCntObject_xh
  37. #include <RefCtObj.xh>
  38. #endif
  39.  
  40. #ifndef SOM_ODWindow_xh
  41. #include "Window.xh"
  42. #endif
  43.  
  44. #ifndef SOM_ODPart_xh
  45. #include "Part.xh"
  46. #endif
  47.  
  48. #ifndef SOM_ODFrame_xh
  49. #include "Frame.xh"
  50. #endif
  51.  
  52. #ifndef SOM_ODShape_xh
  53. #include <Shape.xh>
  54. #endif
  55.  
  56. #ifndef SOM_ODTransform_xh
  57. #include <Trnsform.xh>
  58. #endif
  59.  
  60. #ifndef SOM_ODStorageUnit_xh
  61. #include <StorageU.xh>
  62. #endif
  63.  
  64. #ifndef SOM_ODStorageUnitView_xh
  65. #include <SUView.xh>
  66. #endif
  67.  
  68. #ifndef SOM_ODStorageUnitCursor_xh
  69. #include <SUCursor.xh>
  70. #endif
  71.  
  72. #ifndef SOM_ODMenuBar_xh
  73. #include <MenuBar.xh>
  74. #endif
  75.  
  76. #ifndef SOM_ODDraft_xh
  77. #include <Draft.xh>
  78. #endif
  79.  
  80. #ifndef SOM_ODContainer_xh
  81. #include <ODCtr.xh>
  82. #endif
  83.  
  84. #ifndef SOM_ODDocument_xh
  85. #include <Document.xh>
  86. #endif
  87.  
  88. //========================================================================================
  89. //    Runtime Informations
  90. //========================================================================================
  91.  
  92. #ifdef FW_BUILD_MAC    
  93. #pragma segment fwodmisc
  94. #endif
  95.  
  96. //========================================================================================
  97. //    class FW_CAcquiredODRefCntObject
  98. //========================================================================================
  99.  
  100. FW_DEFINE_AUTO(FW_CAcquiredODRefCntObject)
  101.  
  102. //----------------------------------------------------------------------------------------
  103. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  104. //----------------------------------------------------------------------------------------
  105.  
  106. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject() :
  107.     fODObject(NULL)
  108. {
  109.     FW_END_CONSTRUCTOR
  110. }
  111.  
  112. //----------------------------------------------------------------------------------------
  113. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  114. //----------------------------------------------------------------------------------------
  115.  
  116. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(ODRefCntObject* refCntObject) :
  117.     fODObject(refCntObject)
  118. {
  119.     FW_END_CONSTRUCTOR
  120. }
  121.  
  122. //----------------------------------------------------------------------------------------
  123. // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
  124. //----------------------------------------------------------------------------------------
  125.  
  126. FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(const FW_CAcquiredODRefCntObject& other) :
  127.     fODObject(other.fODObject)
  128. {
  129.     FW_SOMEnvironment ev;
  130.     fODObject->Acquire(ev);
  131.     FW_END_CONSTRUCTOR
  132. }
  133.  
  134. //----------------------------------------------------------------------------------------
  135. // FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject
  136. //----------------------------------------------------------------------------------------
  137.  
  138. FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject()
  139. {
  140.     FW_START_DESTRUCTOR
  141.     
  142.     if (fODObject)
  143.     {
  144.         FW_SOMEnvironment ev;
  145.         fODObject->Release(ev);
  146.     }
  147. }
  148.  
  149. //----------------------------------------------------------------------------------------
  150. // FW_CAcquiredODRefCntObject::AcquireAndAssign
  151. //----------------------------------------------------------------------------------------
  152.  
  153. FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::AcquireAndAssign(ODRefCntObject* newObject)
  154. {
  155.     if (fODObject != newObject)
  156.     {
  157.         FW_SOMEnvironment ev;
  158.         
  159.         if (fODObject != NULL)
  160.             fODObject->Release(ev);
  161.         
  162.         if (newObject != NULL)
  163.             newObject->Acquire(ev);
  164.     }
  165.     
  166.     fODObject = newObject;
  167.     
  168.     return this;
  169. }
  170.  
  171. //----------------------------------------------------------------------------------------
  172. // FW_CAcquiredODRefCntObject::Assign
  173. //----------------------------------------------------------------------------------------
  174.  
  175. FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::Assign(ODRefCntObject* newObject)
  176. {
  177.     if (fODObject != NULL && fODObject != newObject)
  178.     {
  179.         FW_SOMEnvironment ev;
  180.         fODObject->Release(ev);
  181.     }
  182.     
  183.     fODObject = newObject;
  184.     
  185.     return this;
  186. }
  187.  
  188. //----------------------------------------------------------------------------------------
  189. // FW_CAcquiredODRefCntObject::PrivOrphan
  190. //----------------------------------------------------------------------------------------
  191.  
  192. ODRefCntObject*    FW_CAcquiredODRefCntObject::PrivOrphan()
  193. {
  194.     ODRefCntObject*    object = fODObject;
  195.     fODObject = NULL;
  196.     return object;
  197. }
  198.  
  199. //========================================================================================
  200. //    class FW_CAcquireODStorageUnitView
  201. //========================================================================================
  202.  
  203. FW_DEFINE_AUTO(FW_CAcquireODStorageUnitView)
  204.  
  205. //----------------------------------------------------------------------------------------
  206. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  207. //----------------------------------------------------------------------------------------
  208.  
  209. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su, 
  210.                                                             ODPropertyName propertyName, 
  211.                                                             ODPositionCode propertyPosCode, 
  212.                                                             ODValueType valueType, 
  213.                                                             ODValueIndex valueIndex, 
  214.                                                             ODPositionCode valuePosCode) :
  215.     fSUView(NULL)
  216. {
  217.     su->Focus(ev, propertyName, propertyPosCode, valueType, valueIndex, valuePosCode);
  218.     fSUView = su->CreateView(ev);
  219.     FW_END_CONSTRUCTOR
  220. }
  221.  
  222. //----------------------------------------------------------------------------------------
  223. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  224. //----------------------------------------------------------------------------------------
  225.  
  226. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su) :
  227.     fSUView(NULL)
  228. {
  229.     fSUView = su->CreateView(ev);
  230.     FW_END_CONSTRUCTOR
  231. }
  232.  
  233. //----------------------------------------------------------------------------------------
  234. // FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView
  235. //----------------------------------------------------------------------------------------
  236.  
  237. FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView()
  238. {
  239.     FW_START_DESTRUCTOR
  240.     delete fSUView;
  241. }
  242.  
  243. //========================================================================================
  244. //    class FW_CAcquireODPropertyName
  245. //========================================================================================
  246.  
  247. FW_DEFINE_AUTO(FW_CAcquireODPropertyName)
  248.  
  249. //----------------------------------------------------------------------------------------
  250. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  251. //----------------------------------------------------------------------------------------
  252.  
  253. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su)
  254. {
  255.     fODISOStr = su->GetProperty(ev);
  256.     FW_END_CONSTRUCTOR
  257. }
  258.  
  259. //----------------------------------------------------------------------------------------
  260. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  261. //----------------------------------------------------------------------------------------
  262.  
  263. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView)
  264. {
  265.     fODISOStr = suView->GetProperty(ev);
  266.     FW_END_CONSTRUCTOR
  267. }
  268.  
  269. //----------------------------------------------------------------------------------------
  270. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  271. //----------------------------------------------------------------------------------------
  272.  
  273. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor)
  274. {
  275.     suCursor->GetProperty(ev, &fODISOStr);
  276.     FW_END_CONSTRUCTOR
  277. }
  278.  
  279. //----------------------------------------------------------------------------------------
  280. // FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName
  281. //----------------------------------------------------------------------------------------
  282.  
  283. FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName()
  284. {
  285.     FW_START_DESTRUCTOR
  286. }
  287.  
  288. //========================================================================================
  289. //    class FW_CAcquireODISOStr
  290. //========================================================================================
  291.  
  292. FW_DEFINE_AUTO(FW_CAcquireODISOStr)
  293.  
  294. //----------------------------------------------------------------------------------------
  295. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  296. //----------------------------------------------------------------------------------------
  297.  
  298. FW_CAcquireODISOStr::FW_CAcquireODISOStr() :
  299.     fODISOStr(NULL)
  300. {
  301.     FW_END_CONSTRUCTOR
  302. }
  303.  
  304. //----------------------------------------------------------------------------------------
  305. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  306. //----------------------------------------------------------------------------------------
  307.  
  308. FW_CAcquireODISOStr::FW_CAcquireODISOStr(ODISOStr odISOStr) :
  309.     fODISOStr(odISOStr)
  310. {
  311.     FW_END_CONSTRUCTOR
  312. }
  313.  
  314. //----------------------------------------------------------------------------------------
  315. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  316. //----------------------------------------------------------------------------------------
  317.  
  318. FW_CAcquireODISOStr::FW_CAcquireODISOStr(const FW_CAcquireODISOStr& other) :
  319.     fODISOStr(NULL)
  320. {
  321.     if (other.fODISOStr != NULL)
  322.         fODISOStr = FW_PrimitiveStringDuplicate(other.fODISOStr);
  323.  
  324.     FW_END_CONSTRUCTOR    
  325. }
  326.  
  327. //----------------------------------------------------------------------------------------
  328. // FW_CAcquireODISOStr::~FW_CAcquireODISOStr
  329. //----------------------------------------------------------------------------------------
  330.  
  331. FW_CAcquireODISOStr::~FW_CAcquireODISOStr()
  332. {
  333.     FW_START_DESTRUCTOR
  334.     
  335.     PrivDeleteODISOStr();
  336. }
  337.  
  338. //----------------------------------------------------------------------------------------
  339. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  340. //----------------------------------------------------------------------------------------
  341.  
  342. FW_CAcquireODISOStr& FW_CAcquireODISOStr::operator=(ODISOStr odISOStr)
  343. {
  344.     if (odISOStr != fODISOStr)
  345.     {
  346.         PrivDeleteODISOStr();
  347.         fODISOStr = odISOStr;
  348.     }
  349.     
  350.     return *this;
  351. }
  352.  
  353. //----------------------------------------------------------------------------------------
  354. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  355. //----------------------------------------------------------------------------------------
  356.  
  357. FW_CAcquireODISOStr& FW_CAcquireODISOStr::operator=(const FW_CAcquireODISOStr& other)
  358. {
  359.     if (&other != this)
  360.     {
  361.         PrivDeleteODISOStr();
  362.         if (other.fODISOStr != NULL)
  363.             fODISOStr = FW_PrimitiveStringDuplicate(other.fODISOStr);
  364.     }
  365.     
  366.     return *this;
  367. }
  368.  
  369. //----------------------------------------------------------------------------------------
  370. // FW_CAcquireODISOStr::FW_CAcquireODISOStr
  371. //----------------------------------------------------------------------------------------
  372.  
  373. void FW_CAcquireODISOStr::PrivDeleteODISOStr()
  374. {
  375.     if (fODISOStr)
  376.     {
  377.         FW_CMemoryManager::FreeBlock(fODISOStr);
  378.         fODISOStr = NULL;
  379.     }
  380. }
  381.  
  382. //========================================================================================
  383. //    FW_CopyAndRelease
  384. //========================================================================================
  385.  
  386. //########################################################################################
  387. // SCpp Hack
  388. // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
  389. // Replace overloaded functions with normal functions with different names.
  390. // Use inline overloaded functions which turn around and call the renamed
  391. // functions so client code isn't affected.
  392. //########################################################################################
  393.  
  394. //----------------------------------------------------------------------------------------
  395. // ODShape
  396. //----------------------------------------------------------------------------------------
  397.  
  398. ODShape* FW_PrivCopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy)
  399. {
  400.     FW_ASSERT(shapeToCopy != NULL);
  401.     FW_ASSERT(shapeToCopy->GetRefCount(ev) >= 1);
  402.     
  403.     FW_CAcquiredODShape aqShapeToCopy(shapeToCopy); 
  404.     return aqShapeToCopy->Copy(ev);
  405. }
  406.  
  407. //----------------------------------------------------------------------------------------
  408. // ODTransform
  409. //----------------------------------------------------------------------------------------
  410.  
  411. ODTransform* FW_PrivCopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy)
  412. {
  413.     FW_ASSERT(transformToCopy != NULL);
  414.     FW_ASSERT(transformToCopy->GetRefCount(ev) >= 1);
  415.     
  416.     FW_CAcquiredODTransform aqTransformToCopy(transformToCopy); 
  417.     return transformToCopy->Copy(ev);
  418. }
  419.