#ifdef __PRIVATE__
//#
//#	File:		ODSessnB.idl
//#
//#	Contains:	Interfaces to ODBaseSession object. 
//#
//#	Owned by:	Nick Pilch
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <7>	 10/7/94	CC		1191489 - Moved UniqueChangeID() to
//#									ODSession.
//#		 <6>	 9/14/94	jpa		Removed reference to obsolete ODMemoryHeap
//#									class [1186692].
//#		 <5>	  9/8/94	NP		Changed some comments to SOM comments.
//#		 <4>	 8/19/94	NP		1181622: Ownership fix.
//#		 <3>	 8/13/94	NP		1180819-Added support for private
//#									ScritingObject.
//#		 <2>	 8/12/94	NP		1180762-Moved stuff between B and non_B
//#									file. Added setters. changed getusername.
//#									Removed GetSemtInterface.
//#		 <1>	 6/23/94	CG		first checked in
//#		 <2>	 6/14/94	CG		Removed fBinding and fNameSpaceManager.
//#		 <1>	  6/8/94	CG		first checked in
//#		 <5>	  6/7/94	RR		Privatize change history
//#		 <7>	 5/12/94	RR		First Checked in	
//#
//#	To Do:
//#	In Progress:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _ODSESSNB_
#define _ODSESSNB_

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

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

interface   ODBaseSession;

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

interface   ODWindowState;
interface   ODDispatcher;
interface   ODArbitrator;
interface   ODStorageSystem;
interface   ODClipboard;
interface   ODDragAndDrop;
interface   ODLinkManager;
interface   ODNameSpaceManager;
interface   ODMessageInterface;
interface   ODNameResolver;
interface   ODTranslation;
interface   ODUndo;
interface   ODSemanticInterface;
interface   ODPersistentObject;
interface	ODBinding;
interface	ODInfo;
interface	ODToolSpaceManager;

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

#ifdef __PRIVATE__
typedef somToken TokenTable;
typedef somToken ScriptingObject;
#endif

//==============================================================================
// ODBaseSession
//==============================================================================

interface ODBaseSession :  ODObject
{
  //#---------------------------------
  //# Global Getters/Setters

   ODArbitrator GetArbitrator();
   void SetArbitrator(in ODArbitrator arbitrator);
    
   ODBinding GetBinding();
   void SetBinding(in ODBinding binding);

   ODDispatcher GetDispatcher();
   void SetDispatcher(in ODDispatcher dispatcher);

   ODClipboard GetClipboard();
   void SetClipboard(in ODClipboard clipboard);

   ODDragAndDrop GetDragAndDrop();
   void SetDragAndDrop(in ODDragAndDrop dragAndDrop);
   
   ODInfo GetInfo();
   void	SetInfo(in ODInfo info);

   ODLinkManager GetLinkManager();
   void SetLinkManager(in ODLinkManager linkManager);

   ODMessageInterface GetMessageInterface();
   void SetMessageInterface(in ODMessageInterface messageInterface);

   ODNameResolver GetNameResolver();
   void SetNameResolver(in ODNameResolver nameResolver);

   ODNameSpaceManager GetNameSpaceManager();
   void SetNameSpaceManager(in ODNameSpaceManager nameSpaceManager);

   ODStorageSystem GetStorageSystem();
   void SetStorageSystem(in ODStorageSystem storageSystem);

   ODTranslation GetTranslation();
   void SetTranslation(in ODTranslation translation);

   ODUndo GetUndo();
   void SetUndo(in ODUndo undo);
   
   ODWindowState GetWindowState();
   void SetWindowState(in ODWindowState windowState);

  //#---------------------------------
  //# Semantic Events

   ODSemanticInterface GetShellSemtInterface();
   void SetShellSemtInterface(in ODSemanticInterface shellSemanticInterface);

  //#---------------------------------
  //# Types and Token

   ODTypeToken Tokenize(in ODType type);
    
   void RemoveEntry( inout ODType type);
    
   ODBoolean GetType(in ODTypeToken token,
   					 out ODType type);
    
#ifdef __PRIVATE__
   void  InitBaseSession();
   TokenTable*  GetTokenTable();
   void  SetTokenTable(in TokenTable* table);
   ScriptingObject* GetScriptingObject();
#endif

   ODToolSpaceManager GetToolSpaceManager();

#ifdef __SOMIDL__
  implementation
  {
  	functionprefix = ODBaseSession;
    override:
		somInit,
		somUninit,
        Purge;
	
    releaseorder:
        GetArbitrator,
		GetBinding,
        GetClipboard,
        GetDispatcher,
        GetDragAndDrop,
		GetInfo,
        GetLinkManager,
		GetMessageInterface,
		GetNameResolver,
		GetNameSpaceManager,
		GetStorageSystem,
        GetTranslation,
        GetUndo,
        GetWindowState,
        SetArbitrator,
		SetBinding,
        SetClipboard,
        SetDispatcher,
        SetDragAndDrop,
		SetInfo,
        SetLinkManager,
		SetMessageInterface,
		SetNameResolver,
		SetNameSpaceManager,
		SetStorageSystem,
        SetTranslation,
        SetUndo,
        SetWindowState,
        GetShellSemtInterface,
        SetShellSemtInterface,
        Tokenize,
        RemoveEntry,
        GetType,
	#ifdef __PRIVATE__
        InitBaseSession,
        GetTokenTable,
        SetTokenTable,
        GetScriptingObject,
	#else
		reserved1,
		reserved2,
		reserved3,
		reserved4,
	#endif
		GetToolSpaceManager;

    #ifdef __PRIVATE__
      ODArbitrator       	fArbitrator;
      ODBinding        		fBinding;
      ODClipboard       	fClipboard;
      ODDispatcher			fDispatcher;
      ODDragAndDrop       	fDragAndDrop;
	  ODInfo				fInfo;
      ODLinkManager       	fLinkManager;
      ODMessageInterface   	fMessageInterface;
      ODNameResolver     	fNameResolver;
      ODNameSpaceManager    fNameSpaceManager;
	  ODStorageSystem		fStorage;
      ODTranslation       	fTranslation;
      ODUndo         		fUndo;
      ODSemanticInterface   fShellSemtInterface;
      ODWindowState       	fWindowState;

      ScriptingObject*		fScriptingObject;
      
	  TokenTable*	      	fTokenTable;
	  
	  ODToolSpaceManager	fToolSpaceManager;

	  passthru C_xh = "
	  	""
	  	"class TokenTable;"
	  	"class ScriptingObject;"
		"";
    #endif
  };
#endif
};


#endif // _BASESESS_
