#ifdef __PRIVATE__
//#
//#	File:		MssgIntB.idl
//#
//#	Contains:	Class definition for ODBaseMessageInterface
//#
//#	Owned by:	Nick Pilch
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <9>	 1/27/95	NP		1213948: Add forward decls to new classes.
//#		 <8>	 1/27/95	NP		1213948: Fix parameter signatures to match
//#									old semantics.
//#		 <7>	 1/25/95	eeh		1214626: API change: remove CreateOSAObject
//#		 <6>	 1/22/95	NP		CreateOSAObject API change.
//#		 <5>	  9/9/94	jpa		Renamed result param to avoid d14 emitter
//#									bug.
//#		 <4>	 8/19/94	NP		1181622: Ownership fix.
//#		 <3>	 8/13/94	NP		1180819-Added CreateOSAObject.
//#		 <2>	 6/28/94	NP		Class prefix.
//#		 <1>	 6/24/94	NP		first checked in
//#		 <2>	 6/23/94	NP		Starting to fix.
//#		 <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 _MSSGINTB_
#define _MSSGINTB_

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

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

interface  ODBaseMessageInterface;

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

interface  ODPart;
interface  ODShape;
interface  ODSession;
interface  ODNameResolver;
interface  ODOSAObject;
interface  ODDesc;
interface  ODOSLToken;
interface  ODAppleEvent;
interface  ODAddressDesc;
interface  ODObjectSpec;

//=====================================================================================
// Implementation Types
//=====================================================================================

typedef somToken ODParamData;

//==============================================================================
// ODMessageInterface
//==============================================================================

interface ODBaseMessageInterface :  ODObject
{
#ifdef __PRIVATE__ 

  void InitBaseMessageInterface(in ODSession session);

#endif

   void CreatePartAddrDesc(out		ODAddressDesc	theAddressDesc,
							in		ODPart			part);
    
   void CreatePartObjSpec(out	ODObjectSpec	theObjSpec,
							in  ODPart			thePart);
    
   ODSShort      CreateEvent(in 		ODEventClass	theAEEventClass,
								in		ODEventID		theAEEventID,
								in		ODAddressDesc	target,
								in		ODSLong			transactionID,
								out		ODAppleEvent	theResult);

   void        Send(in		ODPart			part,
					in		ODAppleEvent	theAppleEvent,
					in		ODAppleEvent	reply,
					in		ODSendMode		sendMode,
					in		ODSendPriority	sendPriority,
					in		ODULong			timeOutInTicks);

   ODBoolean  ProcessSemanticEvent(in ODParamData* theEvent);

#ifdef __SOMIDL__
	implementation
	{
  		functionprefix = ODBaseMessageInterface;

		override:
			somInit,
			somUninit,
			Purge;
		releaseorder:
			InitBaseMessageInterface,
			CreateEvent,
			CreatePartAddrDesc,
			CreatePartObjSpec,
			Send,
			ProcessSemanticEvent;
    #ifdef __PRIVATE__
	passthru	C_xh	=	"
	""
	"#include <ODOSAtyp.h>"
	"struct ODParamData;"
	"";
	passthru	C_xih	=	"
	""
	"#include	\"ODOSATyp.h\""
	"";
	#endif //# __PRIVATE__
	
	};
#endif
};

#endif //# _MSSGINTB_
