#ifdef __PRIVATE__
//#
//#	File:		OSAIntf.idl
//#
//#	Contains:	Class definition for ODOSAObject
//#
//#	Written by:	Donald Olson
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <1>	 8/12/94	DO		first checked in
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _INFO_
#define _INFO_

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

//==============================================================================
// Theory of Operation
//==============================================================================

/*
*/

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

interface  ODOSAObject;

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

interface ODSession;
interface ODPart;

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

#ifdef __PRIVATE__
#endif

//==============================================================================
// ODOSAObject
//==============================================================================

interface ODOSAObject :  ODObject
{    
	void	InitODOSAObject(			in ODPart	part);
	
	void  	OpenScriptingConnection(	in 	ODScriptingSubType		scriptingSubType, 
											out ODScriptingConnection 	theScriptingConnection);
	
	void  	CloseScriptingConnection(	in 	ODScriptingConnection theScriptingConnection);
	
	void 	SetDefaultTarget(	in 	ODScriptingConnection 	theScriptingConnection, 
								out ODDesc 					object);
	
	void 	Compile(	in 		ODScriptingConnection 	theScriptingConnection, 
						in 		ODDesc 					sourceData, 
						in 		ODSLong 				modeFlags, 
						inout 	ODOSAID					previousAndResultingScriptID);
	
	void 	Execute(	in 	ODScriptingConnection 	theScriptingConnection, 
						in 	ODOSAID					compiledScriptID, 
						in 	ODOSAID					contextID, 
						in 	ODSLong 				modeFlags, 
						out ODOSAID					resultingScriptValueID);
	
	void 	LoadExecute(	in 	ODScriptingConnection 	theScriptingConnection, 
							in 	ODDesc 					scriptData, 
							in 	ODOSAID					contextID, 
							in 	ODSLong 				modeFlags, 
							out ODOSAID					resultingScriptValueID);
	
	void 	CompileExecute(	in 	ODScriptingConnection 	theScriptingConnection, 
							in 	ODDesc 					sourceData, 
							in	ODOSAID					contextID, 
							in	ODSLong 				modeFlags, 
							out	ODOSAID					resultingScriptValueID);
	
	void 	DoScript(	in	ODScriptingConnection 	theScriptingConnection, 
						in	ODDesc 					sourceData, 
						in	ODOSAID 				contextID, 
						in	ODDescType 				desiredType, 
						in	ODSLong 				modeFlags, 
						out	ODDesc 					resultingText);

	void 	ExecuteEvent(	in	ODScriptingConnection 	theScriptingConnection, 
							in	ODAppleEvent 			theAppleEvent, 
							in	ODOSAID 				contextID, 
							in	ODSLong 				modeFlags, 
							out	ODOSAID 				resultingScriptValueID);
	
	void 	DoEvent(	in		ODScriptingConnection 	theScriptingConnection, 
						in		ODAppleEvent 			theAppleEvent, 
						in		ODOSAID 				contextID, 
						in		ODSLong 				modeFlags, 
						inout	ODAppleEvent 			reply);
    

#ifdef __SOMIDL__
  implementation
  {
  	functionprefix = ODOSAObject;

    somInit : override;
    somUninit : override;
    releaseorder:
		InitODOSAObject,
		OpenScriptingConnection,
		CloseScriptingConnection,
		SetDefaultTarget,
		Compile,
		Execute,
		LoadExecute,
		CompileExecute,
		DoScript,
		ExecuteEvent,
		DoEvent;
    
		
    #ifdef __PRIVATE__
      ODSession  fSession;
    #endif
    
  };
#endif
};

#endif

