home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / opendc12.zip / od124os2.exe / od12osr1.exe / src / FacetItr.cpp < prev    next >
C/C++ Source or Header  |  1997-03-21  |  7KB  |  220 lines

  1. /* @(#)Z 1.7 com/src/layout/FacetItr.cpp, odlayout, od96os2, odos29712d 97/03/21 17:18:26 (96/07/15 18:32:09) */
  2. //====START_GENERATED_PROLOG======================================
  3. //
  4. //
  5. //   COMPONENT_NAME: odlayout
  6. //
  7. //   CLASSES: none
  8. //
  9. //   ORIGINS: 82,27
  10. //
  11. //
  12. //   (C) COPYRIGHT International Business Machines Corp. 1995,1996
  13. //   All Rights Reserved
  14. //   Licensed Materials - Property of IBM
  15. //   US Government Users Restricted Rights - Use, duplication or
  16. //   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  17. //       
  18. //   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  19. //   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  20. //   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  21. //   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  22. //   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  23. //   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  24. //   OR PERFORMANCE OF THIS SOFTWARE.
  25. //
  26. //====END_GENERATED_PROLOG========================================
  27. //
  28. /*  IBM Change History (most recent first):                         */
  29. /*   20470 03/19/96 tmw/SA Apple DR4 and common Windows/OS2         */
  30. /********************************************************************/
  31. /*
  32.    File:       FacetM.cpp
  33.  
  34.    Contains:   Implementation of class ODFacetIterator
  35.  
  36.    Owned by:   Joshua Susser
  37.  
  38.    Copyright:  ⌐ 1993 - 1995 by Apple Computer, Inc., all rights reserved.
  39.  
  40.    Change History (most recent first):
  41.  
  42.         <5>      8/3/95    RR      #1257260: Collapse B classes. Remove
  43.                                    somInit methods. Don't call IsInitialized
  44.                                    or SubclassResponsibility
  45.         <4>     5/26/95    RR      #1251403: Multithreading naming support
  46.         <3>     5/25/95    jpa     List.h --> LinkList.h [1253324]
  47.         <2>      5/2/95    JBS     1244569 Layout iterators need SOM exception
  48.                                    handling; 1243361 FrameFacetIterator should
  49.                                    throw kODErrIteratorNotInitialized
  50.         <1>     6/29/94    JBS     first checked in
  51.         <0>     6/29/94    SV      SOMverted
  52.  
  53.    In Progress:
  54.  
  55. */
  56.  
  57. #define ODFacetIterator_Class_Source
  58.  
  59. #ifndef SOM_ODFacetIterator_xih
  60. #define VARIABLE_MACROS
  61. #include <FacetItr.xih>
  62. #endif
  63.  
  64. #ifndef SOM_ODFacet_xh
  65. #include <Facet.xh>
  66. #endif
  67.  
  68. #ifndef _FACETNOD_
  69. #include "FacetNod.h"
  70. #endif
  71.  
  72. #ifndef _LINKLIST_
  73. #include "LinkList.h"
  74. #endif
  75.  
  76. #ifndef _NODE_
  77. #include "Node.h"
  78. #endif
  79.  
  80. #ifndef _EXCEPT_
  81. #include "Except.h"
  82. #endif
  83.  
  84. #ifndef _ODUTILS_
  85. #include <ODUtils.h>
  86. #endif
  87.  
  88. #ifndef _ODTYPES_
  89. #include <ODTypes.h>
  90. #endif
  91.  
  92. #ifndef _ODMEMORY_
  93. #include "ODMemory.h"
  94. #endif
  95.  
  96. #ifdef _PLATFORM_MACINTOSH_
  97. #pragma segment ODFacet
  98. #endif
  99.  
  100. #ifdef _FACET_DEBUG_
  101. #include <qprintf.h>
  102. #endif
  103.  
  104. SOM_Scope void  SOMLINK ODFacetIteratorsomUninit(ODFacetIterator *somSelf)
  105. {
  106.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  107.     ODFacetIteratorMethodDebug("ODFacetIterator","somUninit");
  108.  
  109. #ifdef _FACET_DEBUG_
  110.     qprintf("Executing ODFacetIterator::somUninit()\n");
  111. #endif
  112.  
  113.    delete _fNodeTraverser;
  114.     ODFacetIterator_parents_somUninit(somSelf);
  115. }
  116.  
  117. SOM_Scope void  SOMLINK ODFacetIteratorInitFacetIterator(ODFacetIterator *somSelf, Environment *ev,
  118.        ODFacet* facet,
  119.        ODTraversalType traversalType,
  120.        ODSiblingOrder siblingOrder)
  121. {
  122.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  123.     ODFacetIteratorMethodDebug("ODFacetIterator","ODFacetIteratorInitFacetIterator");
  124.  
  125. #ifdef _FACET_DEBUG_
  126.     qprintf("Executing ODFacetIterator::InitFacetIterator()\n");
  127. #endif
  128.    SOM_TRY
  129.  
  130.        /* Moved from somInit. SOM itself sets fields to zero
  131.        _fFacet = kODNULL;
  132.        _fNodeTraverser = kODNULL;
  133.        */
  134.        somSelf->InitObject(ev);
  135.  
  136.        _fFacet = facet;
  137.        _fTraversalType = traversalType;
  138.        _fSiblingOrder = siblingOrder;
  139.    SOM_CATCH_ALL
  140.    SOM_ENDTRY
  141. }
  142.  
  143. SOM_Scope ODFacet*  SOMLINK ODFacetIteratorFirst(ODFacetIterator *somSelf, Environment *ev)
  144. {
  145.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  146.     ODFacetIteratorMethodDebug("ODFacetIterator","First");
  147.  
  148. #ifdef _FACET_DEBUG_
  149.     qprintf("Executing ODFacetIterator::First()\n");
  150. #endif
  151.  
  152.    SOM_TRY
  153.        if (!_fNodeTraverser)
  154.        {
  155.            _fNodeTraverser = new NodeTraverser(_fFacet->GetNode(ev),
  156.                                                _fTraversalType, _fSiblingOrder);
  157.            THROW_IF_NULL(_fNodeTraverser);
  158.        }
  159.  
  160.        FacetNode* node = (FacetNode*) _fNodeTraverser->First();
  161.        return node ? node->GetFacet() : (ODFacet*)kODNULL;
  162.    SOM_CATCH_ALL
  163.    SOM_ENDTRY
  164.    return kODNULL;
  165. }
  166.  
  167. SOM_Scope ODFacet*  SOMLINK ODFacetIteratorNext(ODFacetIterator *somSelf, Environment *ev)
  168. {
  169.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  170.     ODFacetIteratorMethodDebug("ODFacetIterator","Next");
  171.  
  172. #ifdef _FACET_DEBUG_
  173.     qprintf("Executing ODFacetIterator::Next()\n");
  174. #endif
  175.    SOM_TRY
  176.        if ( !_fNodeTraverser )
  177.            THROW(kODErrIteratorNotInitialized);
  178.  
  179.        FacetNode* node = (FacetNode*) _fNodeTraverser->Next();
  180.        return node ? node->GetFacet() : (ODFacet*)kODNULL;
  181.    SOM_CATCH_ALL
  182.    SOM_ENDTRY
  183.    return kODNULL;
  184. }
  185.  
  186. SOM_Scope void  SOMLINK ODFacetIteratorSkipChildren(ODFacetIterator *somSelf, Environment *ev)
  187. {
  188.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  189.     ODFacetIteratorMethodDebug("ODFacetIterator","SkipChildren");
  190.  
  191. #ifdef _FACET_DEBUG_
  192.     qprintf("Executing ODFacetIterator::SkipChildren()\n");
  193. #endif
  194.    SOM_TRY
  195.        if ( !_fNodeTraverser )
  196.            THROW(kODErrIteratorNotInitialized);
  197.  
  198.        _fNodeTraverser->SkipChildren();
  199.    SOM_CATCH_ALL
  200.    SOM_ENDTRY
  201. }
  202.  
  203. SOM_Scope ODBoolean  SOMLINK ODFacetIteratorIsNotComplete(ODFacetIterator *somSelf, Environment *ev)
  204. {
  205.     ODFacetIteratorData *somThis = ODFacetIteratorGetData(somSelf);
  206.     ODFacetIteratorMethodDebug("ODFacetIterator","IsNotComplete");
  207.  
  208. #ifdef _FACET_DEBUG_
  209.     qprintf("Executing ODFacetIterator::IsNotComplete()\n");
  210. #endif
  211.    SOM_TRY
  212.        if ( !_fNodeTraverser )
  213.            THROW(kODErrIteratorNotInitialized);
  214.  
  215.        return _fNodeTraverser->IsNotComplete();
  216.    SOM_CATCH_ALL
  217.    SOM_ENDTRY
  218.    return kODNULL;
  219. }
  220.