//#====START_GENERATED_PROLOG======================================
//#
//#
//#   COMPONENT_NAME: odutils
//#
//#   CLASSES: none
//#
//#   ORIGINS: 81,82,27
//#
//#
//#   (C) COPYRIGHT International Business Machines Corp. 1995,1996
//#   All Rights Reserved
//#   Licensed Materials - Property of IBM
//#   US Government Users Restricted Rights - Use, duplication or
//#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//#   	
//#   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//#   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//#   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//#   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//#   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//#   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//#   OR PERFORMANCE OF THIS SOFTWARE.
//#
//#====END_GENERATED_PROLOG========================================
//#
// @(#) 1.2 nt/src/utils/tpllitr.idl, odutils, od96nt, odnt9712d 11/1/96 19:08:11 [ 3/21/97 17:37:36 ]
//
//   Copyright  1988, 1989 Apple Computer, Inc. All rights reserved.

/*
 * DESCRIPTION: An iterator for somf_TPrimitiveLinkedList that will iterate over
 *              all of the objects in a primitive linked list.
 *
 *
 */

#ifndef TPLLItr_idl
#define TPLLItr_idl

#include <somobj.idl>

interface somf_TPrimitiveLinkedList;
interface somf_MLinkable;

interface somf_TPrimitiveLinkedListIterator : SOMObject
{
  somf_TPrimitiveLinkedListIterator somfTPrimitiveLinkedListIteratorInit(in somf_TPrimitiveLinkedList list);

  // Initialize somf_TPrimitiveLinkedListIterator using somf_TPrimitiveLinkedList list.
  //#   TPrimitiveLinkedListIterator(TPrimitiveLinkedList* list);

  somf_MLinkable somfFirst();

  // Reset the iterator and return the first element of the list.
  //#   MLinkable* First();

  somf_MLinkable somfNext();

  // Retrieve the next object in the list and return it.
  //#   MLinkable* Next();

  somf_MLinkable somfLast();

  // Retrieve the last object in the list and return it.
  //#   MLinkable* Last();

  somf_MLinkable somfPrevious();

  // Retrieve the previous object in the list and return it.
  //#   MLinkable* Previous();



#ifdef __SOMIDL__
  implementation {

    releaseorder: somfFirst,somfNext,somfLast,somfPrevious,
		  somfTPrimitiveLinkedListIteratorInit;

    //# Class Modifiers
    majorversion = 2;
    minorversion = 1;
    filestem = tpllitr;
    dllname = "somuc.dll";


    passthru C_xh_after =  ""
"#include <mlink.xh>"
"#include <tpll.xh>";

    passthru C_h_after =  ""
"#include <mlink.h>"
"#include <tpll.h>";

    //# Internal Instance Variables
    somf_TPrimitiveLinkedList fList;
    somf_MLinkable fCurrent;
    somf_MLinkable fSentinel;

    //# Method Modifiers
    somUninit: override;
    somfTPrimitiveLinkedListIteratorInit: nooverride;

    //# Data Modifiers

  };
#endif /* __SOMIDL__ */
};

#endif  /* TPLLItr_idl */
