home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 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-04-22  |  5.0 KB  |  166 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.          <5>      8/3/95    RR        #1257260: Collapse B classes. Remove
  13.                                     somInit methods. Don't call IsInitialized
  14.                                     or SubclassResponsibility
  15.          <4>     7/20/95    CC        1254451: IsNotComplete fails if First or
  16.                                     Next has not yet been called.
  17.          <3>     5/26/95    VL        1251403: Multithreading naming support.
  18.          <2>     4/11/95    CC        1236452: InitODPlatformTypeListIterator:
  19.                                     Added SOM_CATCH and throw if underlying
  20.                                     interator can't be created.
  21.                                     Changed parent method calls from verbose to
  22.                                     simple form (parent_method).
  23.          <1>     6/23/94    CC        first checked in
  24.          <0>     6/23/94    SV        SOMverted
  25.          <2>      4/7/94    JA        Added missing #include (1147588)
  26.          <1>      4/4/94    CC        first checked in
  27.          <0>      4/5/94    CC        Code extracted from TranslaM.cpp (1153046)
  28.  
  29.     To Do:
  30. */
  31.  
  32. #define VARIABLE_MACROS
  33.  
  34. #define ODPlatformTypeListIterator_Class_Source
  35. #include <PfTLItr.xih>
  36.  
  37. #ifndef SOM_ODPlatformTypeList_xh
  38. #include <PfTypLs.xh>
  39. #endif
  40.  
  41. #ifndef SOM_ODObject_xh
  42. #include <ODObject.xh>
  43. #endif
  44.  
  45. #ifndef _ORDCOLL_
  46. #include <OrdColl.h>
  47. #endif
  48.  
  49. #ifndef _EXCEPT_
  50. #include <Except.h>
  51. #endif
  52.  
  53. #pragma segment ODPlatformTypeList
  54.  
  55. //==============================================================================
  56. // Class ODPlatformTypeListIterator
  57. //==============================================================================
  58.  
  59. //------------------------------------------------------------------------------
  60. // ODPlatformTypeListIterator: somUninit
  61. //------------------------------------------------------------------------------
  62.  
  63. SOM_Scope void  SOMLINK ODPlatformTypeListIteratorsomUninit(ODPlatformTypeListIterator *somSelf)
  64. {
  65.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  66.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","somUninit");
  67.  
  68.     delete _fIterator;
  69.  
  70.     parent_somUninit(somSelf);
  71. }
  72.  
  73. //------------------------------------------------------------------------------
  74. // ODPlatformTypeListIterator: InitPlatformTypeListIterator
  75. //------------------------------------------------------------------------------
  76.  
  77. SOM_Scope void  SOMLINK ODPlatformTypeListIteratorInitPlatformTypeListIterator(ODPlatformTypeListIterator *somSelf, Environment *ev,
  78.         ODPlatformTypeList* typeList)
  79. {
  80.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  81.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","ODPlatformTypeListIteratorInitPlatformTypeListIterator");
  82.  
  83.     SOM_CATCH return;
  84.  
  85.     /* Moved from somInit. SOM itself sets fields to zero
  86.     _fPlatformTypeList = kODNULL;
  87.     _fIterator = kODNULL;
  88.     _fFirstCalled = kODFalse;
  89.     */
  90.     somSelf->InitObject(ev);
  91.     
  92.     _fPlatformTypeList = typeList;
  93.     OrderedCollection* ordColl = _fPlatformTypeList->GetImplementation(ev);
  94.     _fIterator = ordColl->CreateIterator();
  95.  
  96.     THROW_IF_NULL(_fIterator);
  97. }
  98.  
  99. //------------------------------------------------------------------------------
  100. // ODPlatformTypeListIterator: IsNotComplete
  101. //------------------------------------------------------------------------------
  102.  
  103. SOM_Scope ODBoolean  SOMLINK ODPlatformTypeListIteratorIsNotComplete(ODPlatformTypeListIterator *somSelf, Environment *ev)
  104. {
  105.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  106.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","IsNotComplete");
  107.  
  108.     ODBoolean isNotComplete = kODFalse;
  109.  
  110.     SOM_TRY
  111.  
  112.         if ( !_fFirstCalled )
  113.             THROW(kODErrIteratorNotInitialized);
  114.     
  115.         isNotComplete = _fIterator->IsNotComplete();
  116.  
  117.     SOM_CATCH_ALL
  118.     SOM_ENDTRY
  119.  
  120.     return isNotComplete;
  121. }
  122.  
  123. //------------------------------------------------------------------------------
  124. // ODPlatformTypeListIterator: First
  125. //------------------------------------------------------------------------------
  126.  
  127. SOM_Scope ODPlatformType  SOMLINK ODPlatformTypeListIteratorFirst(ODPlatformTypeListIterator *somSelf, Environment *ev)
  128. {
  129.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  130.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","First");
  131.  
  132.     ODPlatformType platformType = (ODPlatformType) 0;
  133.     
  134.     SOM_TRY
  135.  
  136.         _fFirstCalled = kODTrue;
  137.         platformType = (ODPlatformType) _fIterator->First();
  138.  
  139.     SOM_CATCH_ALL
  140.     SOM_ENDTRY
  141.  
  142.     return platformType;
  143. }
  144.  
  145. //------------------------------------------------------------------------------
  146. // ODPlatformTypeListIterator: Next
  147. //------------------------------------------------------------------------------
  148.  
  149. SOM_Scope ODPlatformType  SOMLINK ODPlatformTypeListIteratorNext(ODPlatformTypeListIterator *somSelf, Environment *ev)
  150. {
  151.     ODPlatformTypeListIteratorData *somThis = ODPlatformTypeListIteratorGetData(somSelf);
  152.     ODPlatformTypeListIteratorMethodDebug("ODPlatformTypeListIterator","Next");
  153.  
  154.     ODPlatformType platformType = (ODPlatformType) 0;
  155.     
  156.     SOM_TRY
  157.  
  158.         _fFirstCalled = kODTrue;
  159.         platformType = (ODPlatformType) _fIterator->Next();
  160.  
  161.     SOM_CATCH_ALL
  162.     SOM_ENDTRY
  163.  
  164.     return platformType;
  165. }
  166.