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 / OpenDoc Development / Debugging Support / OpenDoc™ Source Code / Storage / PfTLItr.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-28  |  4.4 KB  |  156 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        PfTLItr.cpp
  3.  
  4.     Contains:    Implementation of class ODPlatformTypeListIterator.
  5.  
  6.     Owned by:    Craig Carper
  7.  
  8.     Copyright:    © 1994, 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <2>     5/24/96    jpa        1246074: SOM_CATCH --> SOM_TRY..SOM_ENDTRY
  13.  
  14.     To Do:
  15.     In Progress:
  16.         
  17. */
  18.  
  19. #define VARIABLE_MACROS
  20.  
  21. #define ODPlatformTypeListIterator_Class_Source
  22. #include <PfTLItr.xih>
  23.  
  24. #ifndef SOM_ODPlatformTypeList_xh
  25. #include <PfTypLs.xh>
  26. #endif
  27.  
  28. #ifndef SOM_ODObject_xh
  29. #include <ODObject.xh>
  30. #endif
  31.  
  32. #ifndef _ORDCOLL_
  33. #include <OrdColl.h>
  34. #endif
  35.  
  36. #ifndef _EXCEPT_
  37. #include <Except.h>
  38. #endif
  39.  
  40. #pragma segment ODPlatformTypeList
  41.  
  42. //==============================================================================
  43. // Class ODPlatformTypeListIterator
  44. //==============================================================================
  45.  
  46. //------------------------------------------------------------------------------
  47. // ODPlatformTypeListIterator: somUninit
  48. //------------------------------------------------------------------------------
  49.  
  50. SOM_Scope void  SOMLINK ODPlatformTypeListIteratorsomUninit(ODPlatformTypeListIterator *somSelf)
  51. {
  52.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  53.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","somUninit");
  54.  
  55.     delete _fIterator;
  56.  
  57.     parent_somUninit(somSelf);
  58. }
  59.  
  60. //------------------------------------------------------------------------------
  61. // ODPlatformTypeListIterator: InitPlatformTypeListIterator
  62. //------------------------------------------------------------------------------
  63.  
  64. SOM_Scope void  SOMLINK ODPlatformTypeListIteratorInitPlatformTypeListIterator(ODPlatformTypeListIterator *somSelf, Environment *ev,
  65.         ODPlatformTypeList* typeList)
  66. {
  67.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  68.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","ODPlatformTypeListIteratorInitPlatformTypeListIterator");
  69.  
  70.     SOM_TRY
  71.  
  72.     /* Moved from somInit. SOM itself sets fields to zero
  73.     _fPlatformTypeList = kODNULL;
  74.     _fIterator = kODNULL;
  75.     _fFirstCalled = kODFalse;
  76.     */
  77.     somSelf->InitObject(ev);
  78.     
  79.     _fPlatformTypeList = typeList;
  80.     OrderedCollection* ordColl = _fPlatformTypeList->GetImplementation(ev);
  81.     _fIterator = ordColl->CreateIterator();
  82.  
  83.     THROW_IF_NULL(_fIterator);
  84.  
  85.     SOM_CATCH_ALL
  86.     SOM_ENDTRY
  87. }
  88.  
  89. //------------------------------------------------------------------------------
  90. // ODPlatformTypeListIterator: IsNotComplete
  91. //------------------------------------------------------------------------------
  92.  
  93. SOM_Scope ODBoolean  SOMLINK ODPlatformTypeListIteratorIsNotComplete(ODPlatformTypeListIterator *somSelf, Environment *ev)
  94. {
  95.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  96.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","IsNotComplete");
  97.  
  98.     ODBoolean isNotComplete = kODFalse;
  99.  
  100.     SOM_TRY
  101.  
  102.         if ( !_fFirstCalled )
  103.             THROW(kODErrIteratorNotInitialized);
  104.     
  105.         isNotComplete = _fIterator->IsNotComplete();
  106.  
  107.     SOM_CATCH_ALL
  108.     SOM_ENDTRY
  109.  
  110.     return isNotComplete;
  111. }
  112.  
  113. //------------------------------------------------------------------------------
  114. // ODPlatformTypeListIterator: First
  115. //------------------------------------------------------------------------------
  116.  
  117. SOM_Scope ODPlatformType  SOMLINK ODPlatformTypeListIteratorFirst(ODPlatformTypeListIterator *somSelf, Environment *ev)
  118. {
  119.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  120.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","First");
  121.  
  122.     ODPlatformType platformType = (ODPlatformType) 0;
  123.     
  124.     SOM_TRY
  125.  
  126.         _fFirstCalled = kODTrue;
  127.         platformType = (ODPlatformType) _fIterator->First();
  128.  
  129.     SOM_CATCH_ALL
  130.     SOM_ENDTRY
  131.  
  132.     return platformType;
  133. }
  134.  
  135. //------------------------------------------------------------------------------
  136. // ODPlatformTypeListIterator: Next
  137. //------------------------------------------------------------------------------
  138.  
  139. SOM_Scope ODPlatformType  SOMLINK ODPlatformTypeListIteratorNext(ODPlatformTypeListIterator *somSelf, Environment *ev)
  140. {
  141.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  142.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","Next");
  143.  
  144.     ODPlatformType platformType = (ODPlatformType) 0;
  145.     
  146.     SOM_TRY
  147.  
  148.         _fFirstCalled = kODTrue;
  149.         platformType = (ODPlatformType) _fIterator->Next();
  150.  
  151.     SOM_CATCH_ALL
  152.     SOM_ENDTRY
  153.  
  154.     return platformType;
  155. }
  156.