#ifdef __PRIVATE__
//#
//#	File:		SemtIntB.idl
//#
//#	Contains:	Class definition for ODSemanticInterface
//#
//#	Owned by:	Nick Pilch
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		<10>	 1/27/95	NP		1213948: Add forward decls to new classes.
//#		 <9>	 1/27/95	NP		1213948: Fix parameter signatures to match
//#									old semantics.
//#		 <8>	 1/25/95	eeh		1214626: API change: remove SetTerminology
//#									and GetTerminology
//#		 <7>	  1/9/95	NP		1194880: SemtIntf name changes.
//#		 <6>	  9/9/94	NP		1184043: API Changes.
//#		 <5>	  9/9/94	jpa		Renamed result param to avoid d14 emitter
//#									bug.
//#		 <4>	 8/13/94	NP		1180819-Added ForwardEvent,
//#									Get/SetTerminologies.
//#		 <3>	  7/8/94	NP		Fixed CallCoercionHandler, added
//#									CallTokenInquiryProc.
//#		 <2>	 6/29/94	NP		Added two methods.
//#		 <1>	 6/24/94	NP		first checked in
//#		 <1>	  6/8/94	RR		first checked in
//#		 <1>	  6/8/94	RR		first checked in
//#		 <1>	  6/8/94	RR		first checked in
//#		 <1>	  6/8/94	RR		first checked in
//#		 <3>	  6/7/94	RR		Privatise change log
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _SEMTINTB_
#define _SEMTINTB_

#ifndef _EXTENSN_
#include "Extensn.idl"
#endif

//==============================================================================
// Classes defined in this interface
//==============================================================================

interface   ODSemanticInterface;

//==============================================================================
// Classes used by this interface
//==============================================================================

interface   ODMessageInterface;
interface   ODSession;
interface   ODPart;
interface 	ODDesc;
interface 	ODAppleEvent;
interface 	ODOSLToken;

//==============================================================================
// ODSemanticInterface
//==============================================================================

interface ODSemanticInterface : ODExtension
{
	void InitSemanticInterface(in ODPart base, in ODSession session);

	void	CallEventHandler(in			ODPart			thePart,
								in		ODAppleEvent	theODAppleEvent,
								in		ODAppleEvent	reply);

	void	CallCoercionHandler(in		ODPart		thePart,
								in		ODDesc		theODDesc,
								in		ODDescType	toType,
								in		ODDesc		theResult);

	void	CallPredispatchProc(in		ODPart			thePart,
								in		ODAppleEvent	theODAppleEvent,
								in		ODAppleEvent	reply);

	void	CallObjectAccessor(in		ODPart		thePart,
								in		ODDescType	desiredClass,
								in		ODOSLToken	container,
								in		ODDescType	containerClass,
								in		ODDescType	form,
								in		ODDesc		selectionData,
								in		ODOSLToken	value);

	void	CallCompareProc(in	ODPart				thePart,
										in	ODDescType		oper,
										in	ODOSLToken		obj1,
										in	ODOSLToken		obj2,
										out	ODBoolean		result);

	void	CallCountProc(in	ODPart			thePart,
									in	ODDescType			desiredType,
									in	ODDescType			containerClass,
									in	ODOSLToken			container,
									out	ODSLong				result);

	void	CallDisposeTokenProc(in	ODPart			thePart,
											in ODOSLToken	unneededToken);

	void	CallGetErrDescProc(in	ODPart		thePart,
											out	ODDesc	errDesc);

	void	CallGetMarkTokenProc(in	ODPart				thePart,
											in	ODOSLToken		dContainerToken,
											in	ODDescType		containerClass,
											out	ODOSLToken		result);

	void	CallMarkProc(in	ODPart				thePart,
									in		ODOSLToken		dToken,
									in		ODOSLToken		markToken,
									in		ODSLong			index);

	void	CallAdjustMarksProc(in	ODPart				thePart,
											in		ODSLong			newStart,
											in		ODSLong			newStop,
											in		ODOSLToken		markToken);

	ODSShort	GetOSLSupportFlags();
	void		SetOSLSupportFlags(in ODSShort flags);

	ODPart	CallTokenInquiryProc(in		ODOSLToken	value);

	void	UsingPredispatchProc(in	ODBoolean	usingNotUsing);

//	void	ForwardEvent(in		ODBoolean		forwardDontForward,
//							in	ODEventClass	eventClass,
//							in	ODEventID		eventID);

#ifdef __SOMIDL__
	implementation
	{
  		functionprefix = ODSemanticInterface;

		override:
			somInit,
			somUninit;
		releaseorder:
			InitSemanticInterface,
			CallEventHandler,
			CallCoercionHandler,
			CallObjectAccessor,
			CallCompareProc,
			CallCountProc,
			CallDisposeTokenProc,
			CallGetErrDescProc,
			CallGetMarkTokenProc,
			CallMarkProc,
			CallAdjustMarksProc,
			GetOSLSupportFlags,
			SetOSLSupportFlags,
			CallPredispatchProc,
			UsingPredispatchProc,
			CallTokenInquiryProc;

		#ifdef	__PRIVATE__
		ODSShort			fFlags;
		ODMessageInterface	fMessageInterface;
		#endif
	};
#endif
};


#endif //# _SEMTINTB_
