home *** CD-ROM | disk | FTP | other *** search
- /*
- File: DgItmIt.cpp
-
- Contains: Implementation of ODDragItemIterator
-
- Owned by: Vincent Lo
-
- Copyright: © 1994 - 1996 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <3> 7/11/96 DH 1365986 1.1GM: Crash when drag fails and
- another drag is attempted. Fixed many stale
- object references.
- <2> 5/13/96 DH 1305572 - 1.1MRD:[Cyberdog]Dragging
- multiple items *really* slow.
- 1314704 - 1.0.x: Enourmous performance hit
- when dragging numb erous items over
- windows.
- Now uses API for getting storage unit of
- Drag Items so that processing of those
- items happens during that method call.
- <5> 8/3/95 RR #1257260: Collapse B classes. Remove
- somInit methods. Don't call IsInitialized
- or SubclassResponsibility
- <4> 5/26/95 VL 1251403: Multithreading naming support.
- <3> 5/25/95 jpa List.h --> LinkList.h [1253324]
- <2> 7/21/94 VL Added implementation.
-
- To Do:
- */
-
- #define ODDragItemIterator_Class_Source
- #define VARIABLE_MACROS
- #include <DgItmIt.xih>
-
- #ifndef _DRAGPRIV_
- #include <DragPriv.h>
- #endif
-
- #ifndef _LINKLIST_
- #include <LinkList.h>
- #endif
-
- #include "DgItmItB.cpp" // Platform-independent methods, if any
-
- SOM_Scope void SOMLINK ODDragItemIteratorInitDragItemIterator(ODDragItemIterator *somSelf, Environment *ev,
- LinkedListIterator* dragItemListIter)
- {
- ODDragItemIteratorData *somThis = ODDragItemIteratorGetData(somSelf);
- ODDragItemIteratorMethodDebug("ODDragItemIterator","ODDragItemIteratorInitDragItemIterator");
-
- _fDragItemListIter = dragItemListIter;
- }
-
- SOM_Scope void SOMLINK ODDragItemIteratorsomUninit(ODDragItemIterator *somSelf)
- {
- ODDragItemIteratorData *somThis = ODDragItemIteratorGetData(somSelf);
- ODDragItemIteratorMethodDebug("ODDragItemIterator","ODDragItemIteratorsomUninit");
-
- if( _fDragItemListIter != kODNULL )
- {
- delete _fDragItemListIter;
- _fDragItemListIter = kODNULL;
- }
-
- ODDragItemIterator_parent_ODObject_somUninit(somSelf);
- }
-
- SOM_Scope ODStorageUnit* SOMLINK ODDragItemIteratorFirst(ODDragItemIterator *somSelf, Environment *ev)
- {
- ODDragItemIteratorData *somThis = ODDragItemIteratorGetData(somSelf);
- ODDragItemIteratorMethodDebug("ODDragItemIterator","ODDragItemIteratorFirst");
-
- ODDragLink* theLink = kODNULL; ODVolatile( theLink );
- ODStorageUnit* returnSU = kODNULL; ODVolatile( returnSU );
-
- SOM_TRY
- ODDragLink* theLink = (ODDragLink*) _fDragItemListIter->First();
- returnSU = (theLink ? (ODStorageUnit*) theLink->fItem->GetStorageUnit(ev) : (ODStorageUnit*) kODNULL);
- SOM_CATCH_ALL
- SOM_ENDTRY
-
- return returnSU;
- }
-
- SOM_Scope ODStorageUnit* SOMLINK ODDragItemIteratorNext(ODDragItemIterator *somSelf, Environment *ev)
- {
- ODDragItemIteratorData *somThis = ODDragItemIteratorGetData(somSelf);
- ODDragItemIteratorMethodDebug("ODDragItemIterator","ODDragItemIteratorNext");
-
- ODDragLink* theLink = kODNULL; ODVolatile( theLink );
- ODStorageUnit* returnSU = kODNULL; ODVolatile( returnSU );
-
- SOM_TRY
- ODDragLink *theLink = (ODDragLink*)_fDragItemListIter->Next();
- returnSU = (theLink ? (ODStorageUnit*) theLink->fItem->GetStorageUnit(ev) : (ODStorageUnit*) kODNULL);
- SOM_CATCH_ALL
- SOM_ENDTRY
-
- return returnSU;
- }
-
- SOM_Scope ODBoolean SOMLINK ODDragItemIteratorIsNotComplete(ODDragItemIterator *somSelf, Environment *ev)
- {
- ODDragItemIteratorData *somThis = ODDragItemIteratorGetData(somSelf);
- ODDragItemIteratorMethodDebug("ODDragItemIterator","ODDragItemIteratorIsNotComplete");
-
- return (_fDragItemListIter->IsNotComplete());
- }
-