home *** CD-ROM | disk | FTP | other *** search
- /*
- File: TempObj.cpp
-
- Contains: Template utilities for exception-safe temporary object references
-
- Owned by: Jens Alfke
-
- Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
-
- */
-
-
- #ifndef _TEMPOBJ_
- #include "TempObj.h"
- #endif
-
- #ifndef SOM_ODRefCntObject_xh
- #include <RefCtObj.xh>
- #endif
-
- #ifndef SOM_ODExtension_xh
- #include <Extensn.xh>
- #endif
-
- #ifndef SOM_ODSettingsExtension_xh
- #include <Settings.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_ODPart_xh
- #include "Part.xh"
- #endif
-
- #ifndef SOM_ODDraft_xh
- #include <Draft.xh>
- #endif
-
- #ifndef SOM_ODDocument_xh
- #include <Document.xh>
- #endif
-
-
- #ifndef SOM_ODDocument_xh
- #include <Document.xh>
- #endif
-
- #ifndef SOM_ODLink_xh
- #include <Link.xh>
- #endif
-
- #ifndef SOM_ODLinkSource_xh
- #include <LinkSrc.xh>
- #endif
-
- #ifndef SOM_ODContainer_xh
- #include <ODCtr.xh>
- #endif
-
- #ifndef SOM_ODSession_xh
- #include <ODSessn.xh>
- #endif
-
- #ifndef SOM_ODMenuBar_xh
- #include <MenuBar.xh>
- #endif
-
- #ifndef SOM_ODStorageUnitView_xh
- #include <SUView.xh>
- #endif
-
- #ifndef _ODDEBUG_
- #include "ODDebug.h"
- #endif
-
- #ifndef __APPLEEVENTS__
- #include <AppleEvents.h>
- #endif
-
- #ifndef _BARRAY_
- #include <BArray.h>
- #endif
-
- #ifndef _ITEXT_
- #include "IText.h"
- #endif
-
- #ifndef _ODMEMORY_
- #include "ODMemory.h"
- #endif
-
- #ifndef _PLFMFILE_
- #include "PlfmFile.h"
- #endif
-
-
- #ifndef _USE_TEMPLATES_
-
- #ifdef __MWERKS__
- #pragma push
- #pragma once off
- #endif
-
- // Define the non-inline methods of the various template classes:
-
- #define _TMPL_IMPL_
-
- #define _T_ ODObject
- #define _C_ TempODObject
- #include "TempObj.th"
- #define _T_ ODSession
- #define _C_ TempODSession
- #include "TempObj.th"
- #define _T_ ODTypeList
- #define _C_ TempODTypeList
- #include "TempObj.th"
- #define _T_ ODStorageUnitView
- #define _C_ TempODStorageUnitView
- #include "TempObj.th"
-
- #define _T_ ODRefCntObject
- #define _C_ TempODRefCntObject
- #include "TempRef.th"
- #define _T_ ODWindow
- #define _C_ TempODWindow
- #include "TempRef.th"
- #define _T_ ODFrame
- #define _C_ TempODFrame
- #include "TempRef.th"
- #define _T_ ODPart
- #define _C_ TempODPart
- #include "TempRef.th"
- #define _T_ ODShape
- #define _C_ TempODShape
- #include "TempRef.th"
- #define _T_ ODTransform
- #define _C_ TempODTransform
- #include "TempRef.th"
- #define _T_ ODStorageUnit
- #define _C_ TempODStorageUnit
- #include "TempRef.th"
-
- #define _T_ ODDraft
- #define _C_ TempODDraft
- #include "TempRef.th"
- #define _T_ ODDocument
- #define _C_ TempODDocument
- #include "TempRef.th"
- #define _T_ ODContainer
- #define _C_ TempODContainer
- #include "TempRef.th"
- #define _T_ ODLink
- #define _C_ TempODLink
- #include "TempRef.th"
- #define _T_ ODLinkSource
- #define _C_ TempODLinkSource
- #include "TempRef.th"
- #define _T_ ODMenuBar
- #define _C_ TempODMenuBar
- #include "TempRef.th"
-
- /* #define _T_ ODExtension
- #define _C_ TempODExtension
- #include "TempRef.th"
- #define _T_ ODSettingsExtension
- #define _C_ TempODSettingsExtension
- #include "TempRef.th"
- */
-
- #undef _TMPL_IMPL_
-
- #ifdef __MWERKS__
- #pragma pop
- #endif
-
- #endif /*_USE_TEMPLATES_*/
-
- TempODPtr::TempODPtr( ) : fBlock(kODNULL)
- {
- }
-
- TempODPtr::TempODPtr( void *block ) : fBlock(block)
- {
- }
-
- TempODPtr::~TempODPtr( )
- {
- delete fBlock;
- fBlock = kODNULL;
- }
-
- BaseTempObj::BaseTempObj( )
- {
- fObj = kODNULL;
- }
-
- BaseTempObj::~BaseTempObj( )
- {
- delete fObj;
- fObj = kODNULL;
- }
-
- BaseTempRef::BaseTempRef( )
- {
- fObj = kODNULL;
- }
-
- void
- BaseTempRef::Release( )
- {
- if( fObj ) {
- ASSERT_IS_A(fObj,ODRefCntObject);
- fObj->Release(somGetGlobalEnvironment());
- fObj = kODNULL;
- }
- }
-
- BaseTempRef::~BaseTempRef( )
- {
- if( fObj ) {
- ASSERT_IS_A(fObj,ODRefCntObject);
- fObj->Release(somGetGlobalEnvironment());
- fObj = kODNULL;
- }
- }
-
- //===========================================================================
- // Temp strings.
- //===========================================================================
-
- TempODString::TempODString( char* s ) : fStr(s)
- {
- }
-
- TempODString::~TempODString( )
- {
- char* s = fStr;
- fStr = kODNULL;
- delete s;
- }
-
- //===========================================================================
- // Temp handles.
- //===========================================================================
-
-
- TempODHandle::TempODHandle( ODHandle h ) : fHandle(h)
- {
- }
-
- TempODHandle::~TempODHandle( )
- {
- ODHandle h = fHandle;
- fHandle = kODNULL;
- if ( h )
- ODDisposeHandle( h );
- }
-
- TempODHandleLock::TempODHandleLock( ODHandle h ) : fHandle(h)
- {
- if ( h )
- ODLockHandle( h );
- }
-
- TempODHandleLock::~TempODHandleLock( )
- {
- ODHandle h = fHandle;
- fHandle = (ODHandle) kODNULL;
- if ( h )
- ODUnlockHandle( h );
- }
-
- //===========================================================================
- // Temp platform files.
- //===========================================================================
-
-
- TempPlatformFile::TempPlatformFile( PlatformFile* f ) : fFile(f)
- {
- }
-
- TempPlatformFile::~TempPlatformFile( )
- {
- PlatformFile* f = fFile;
- fFile = kODNULL;
- if ( f )
- delete f;
- }
-
- //===========================================================================
- // Temp ODPasteAsResult.
- //===========================================================================
-
-
- TempODPasteAsResult::TempODPasteAsResult( ODPasteAsResult* r ) : fResult(r)
- {
- }
-
- TempODPasteAsResult::~TempODPasteAsResult( )
- {
- ODPasteAsResult* r = fResult;
- fResult = kODNULL;
- if ( r )
- {
- if ( r->selectedKind )
- {
- delete r->selectedKind;
- r->selectedKind = kODNULL;
- }
- if ( r->translateKind )
- {
- delete r->translateKind;
- r->translateKind = kODNULL;
- }
- if ( r->editor )
- {
- delete r->editor;
- r->editor = kODNULL;
- }
- }
- }
-
- //===========================================================================
- // Temp AEDescs.
- //===========================================================================
-
-
- TempAEDesc::TempAEDesc( AEDesc* d ) : fDesc(d)
- {
- }
-
- TempAEDesc::~TempAEDesc( )
- {
- AEDesc* d = fDesc;
- fDesc = kODNULL;
- if ( d )
- AEDisposeDesc(d);
- }
-
- //===========================================================================
- // Temp ODIText.
- //===========================================================================
-
- TempODIText::TempODIText( ODIText* t ) : fText(t)
- {
- }
-
- TempODIText::~TempODIText( )
- {
- ODIText* t = fText;
- fText = kODNULL;
- if ( t )
- DisposeIText(t);
- }
-
- //===========================================================================
- // Temp byte arrays.
- //===========================================================================
-
-
- TempODByteArray::TempODByteArray( ODByteArray* ba ) : fBA(ba)
- {
- }
-
- TempODByteArray::~TempODByteArray( )
- {
- ODByteArray* ba = fBA;
- fBA = kODNULL;
- if ( ba )
- {
- if ( ba->_buffer )
- ODDisposePtr(ba->_buffer);
- ODDisposePtr(ba);
- }
- }
-
- TempODByteArrayStruct::TempODByteArrayStruct( )
- {
- fBA._buffer = kODNULL;
- }
-
- TempODByteArrayStruct::TempODByteArrayStruct( ODByteArray ba ) : fBA(ba)
- {
- }
-
- TempODByteArrayStruct::~TempODByteArrayStruct( )
- {
- ODDisposePtr(fBA._buffer);
- }
-