home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 12.6 KB | 419 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWAcquir.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWOS.hpp"
-
- #ifndef FWACQUIR_H
- #include "FWAcquir.h"
- #endif
-
- #ifndef FWMEMMGR_H
- #include "FWMemMgr.h"
- #endif
-
- #ifndef FWPRIDEB_H
- #include "FWPriDeb.h"
- #endif
-
- #ifndef FWSOMENV_H
- #include "FWSOMEnv.h"
- #endif
-
- #ifndef SOM_ODStorageUnitView_xh
- #include <SUView.xh>
- #endif
-
- #ifndef SOM_ODStorageUnitCursor_xh
- #include <SUCursor.xh>
- #endif
-
- #ifndef SOM_ODRefCntObject_xh
- #include <RefCtObj.xh>
- #endif
-
- #ifndef SOM_ODWindow_xh
- #include "Window.xh"
- #endif
-
- #ifndef SOM_ODPart_xh
- #include "Part.xh"
- #endif
-
- #ifndef SOM_ODFrame_xh
- #include "Frame.xh"
- #endif
-
- #ifndef SOM_ODShape_xh
- #include <Shape.xh>
- #endif
-
- #ifndef SOM_ODTransform_xh
- #include <Trnsform.xh>
- #endif
-
- #ifndef SOM_ODStorageUnit_xh
- #include <StorageU.xh>
- #endif
-
- #ifndef SOM_ODStorageUnitView_xh
- #include <SUView.xh>
- #endif
-
- #ifndef SOM_ODStorageUnitCursor_xh
- #include <SUCursor.xh>
- #endif
-
- #ifndef SOM_ODMenuBar_xh
- #include <MenuBar.xh>
- #endif
-
- #ifndef SOM_ODDraft_xh
- #include <Draft.xh>
- #endif
-
- #ifndef SOM_ODContainer_xh
- #include <ODCtr.xh>
- #endif
-
- #ifndef SOM_ODDocument_xh
- #include <Document.xh>
- #endif
-
- //========================================================================================
- // Runtime Informations
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment fwodmisc
- #endif
-
- //========================================================================================
- // class FW_CAcquiredODRefCntObject
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CAcquiredODRefCntObject)
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject() :
- fODObject(NULL)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(ODRefCntObject* refCntObject) :
- fODObject(refCntObject)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject::FW_CAcquiredODRefCntObject(const FW_CAcquiredODRefCntObject& other) :
- fODObject(other.fODObject)
- {
- FW_SOMEnvironment ev;
- fODObject->Acquire(ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject::~FW_CAcquiredODRefCntObject()
- {
- FW_START_DESTRUCTOR
-
- if (fODObject)
- {
- FW_SOMEnvironment ev;
- fODObject->Release(ev);
- }
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::AcquireAndAssign
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::AcquireAndAssign(ODRefCntObject* newObject)
- {
- if (fODObject != newObject)
- {
- FW_SOMEnvironment ev;
-
- if (fODObject != NULL)
- fODObject->Release(ev);
-
- if (newObject != NULL)
- newObject->Acquire(ev);
- }
-
- fODObject = newObject;
-
- return this;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::Assign
- //----------------------------------------------------------------------------------------
-
- FW_CAcquiredODRefCntObject* FW_CAcquiredODRefCntObject::Assign(ODRefCntObject* newObject)
- {
- if (fODObject != NULL && fODObject != newObject)
- {
- FW_SOMEnvironment ev;
- fODObject->Release(ev);
- }
-
- fODObject = newObject;
-
- return this;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquiredODRefCntObject::PrivOrphan
- //----------------------------------------------------------------------------------------
-
- ODRefCntObject* FW_CAcquiredODRefCntObject::PrivOrphan()
- {
- ODRefCntObject* object = fODObject;
- fODObject = NULL;
- return object;
- }
-
- //========================================================================================
- // class FW_CAcquireODStorageUnitView
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CAcquireODStorageUnitView)
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su,
- ODPropertyName propertyName,
- ODPositionCode propertyPosCode,
- ODValueType valueType,
- ODValueIndex valueIndex,
- ODPositionCode valuePosCode) :
- fSUView(NULL)
- {
- su->Focus(ev, propertyName, propertyPosCode, valueType, valueIndex, valuePosCode);
- fSUView = su->CreateView(ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su) :
- fSUView(NULL)
- {
- fSUView = su->CreateView(ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView()
- {
- FW_START_DESTRUCTOR
- delete fSUView;
- }
-
- //========================================================================================
- // class FW_CAcquireODPropertyName
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CAcquireODPropertyName)
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su)
- {
- fODISOStr = su->GetProperty(ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView)
- {
- fODISOStr = suView->GetProperty(ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor)
- {
- suCursor->GetProperty(ev, &fODISOStr);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName()
- {
- FW_START_DESTRUCTOR
- }
-
- //========================================================================================
- // class FW_CAcquireODISOStr
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CAcquireODISOStr)
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr::FW_CAcquireODISOStr() :
- fODISOStr(NULL)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr::FW_CAcquireODISOStr(ODISOStr odISOStr) :
- fODISOStr(odISOStr)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr::FW_CAcquireODISOStr(const FW_CAcquireODISOStr& other) :
- fODISOStr(NULL)
- {
- if (other.fODISOStr != NULL)
- fODISOStr = FW_PrimitiveStringDuplicate(other.fODISOStr);
-
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::~FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr::~FW_CAcquireODISOStr()
- {
- FW_START_DESTRUCTOR
-
- PrivDeleteODISOStr();
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr& FW_CAcquireODISOStr::operator=(ODISOStr odISOStr)
- {
- if (odISOStr != fODISOStr)
- {
- PrivDeleteODISOStr();
- fODISOStr = odISOStr;
- }
-
- return *this;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- FW_CAcquireODISOStr& FW_CAcquireODISOStr::operator=(const FW_CAcquireODISOStr& other)
- {
- if (&other != this)
- {
- PrivDeleteODISOStr();
- if (other.fODISOStr != NULL)
- fODISOStr = FW_PrimitiveStringDuplicate(other.fODISOStr);
- }
-
- return *this;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CAcquireODISOStr::FW_CAcquireODISOStr
- //----------------------------------------------------------------------------------------
-
- void FW_CAcquireODISOStr::PrivDeleteODISOStr()
- {
- if (fODISOStr)
- {
- FW_CMemoryManager::FreeBlock(fODISOStr);
- fODISOStr = NULL;
- }
- }
-
- //========================================================================================
- // FW_CopyAndRelease
- //========================================================================================
-
- //########################################################################################
- // SCpp Hack
- // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
- // Replace overloaded functions with normal functions with different names.
- // Use inline overloaded functions which turn around and call the renamed
- // functions so client code isn't affected.
- //########################################################################################
-
- //----------------------------------------------------------------------------------------
- // ODShape
- //----------------------------------------------------------------------------------------
-
- ODShape* FW_PrivCopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy)
- {
- FW_ASSERT(shapeToCopy != NULL);
- FW_ASSERT(shapeToCopy->GetRefCount(ev) >= 1);
-
- FW_CAcquiredODShape aqShapeToCopy(shapeToCopy);
- return aqShapeToCopy->Copy(ev);
- }
-
- //----------------------------------------------------------------------------------------
- // ODTransform
- //----------------------------------------------------------------------------------------
-
- ODTransform* FW_PrivCopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy)
- {
- FW_ASSERT(transformToCopy != NULL);
- FW_ASSERT(transformToCopy->GetRefCount(ev) >= 1);
-
- FW_CAcquiredODTransform aqTransformToCopy(transformToCopy);
- return transformToCopy->Copy(ev);
- }
-