#ifdef __PRIVATE__
//#
//#	File:		TypeList.idl
//#
//#	Contains:	Definition of ODTypeList
//#
//#	Written by:	Craig Carper
//#
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <4>	 6/23/94	CC		Added private GetImplementation() method;
//#									added functionprefix; removed
//#									InitTypeListInHeap() method.
//#		 <3>	 6/14/94	CC		Changed ODHeap to ODMemoryHeap.
//#		 <2>	 6/10/94	VL		Fixed problem with header.
//#		 <1>	  6/8/94	VL		first checked in
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _TYPELIST_
#define _TYPELIST_

#ifndef _ODOBJECT_
#include "ODObject.idl"
#endif

//=====================================================================================
// Classes defined in this interface
//=====================================================================================
interface  ODTypeList;

//=====================================================================================
// Classes used by this interface
//=====================================================================================
#ifdef __PRIVATE__
typedef somToken OrderedCollection;
#endif
interface ODTypeListIterator;

//=====================================================================================
// Class ODTypeList
//=====================================================================================

interface ODTypeList : ODObject
{
	void InitTypeList(in ODTypeList typeList);
		
	void AddLast(in ODType type);
	
	void Remove(in ODType type);
	
	ODBoolean Contains(in ODType type);
	
	ODULong Count();
	
	ODTypeListIterator CreateTypeListIterator();

#ifdef __PRIVATE__
	OrderedCollection* GetImplementation();
#endif

#ifdef __SOMIDL__
	implementation
	{
		functionprefix = ODTypeList;
		override:
			somInit,
			somUninit;
		releaseorder:
			InitTypeList,
			AddLast,
			Remove,
			Contains,
			Count,
			CreateTypeListIterator,
		#ifdef __PRIVATE__
			GetImplementation;
		#else
			reserved1;
		#endif

		#ifdef __PRIVATE__
			passthru C_xih = "class OrderedCollection;";
			passthru C_xh = "class OrderedCollection;";
			OrderedCollection*	fList;
		#endif
	
	};
#endif
};

#endif  // _TYPELIST_
