
/*
 * This file was generated by the SOM Compiler.
 * FileName: \odwin\h\ODSESSN.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.3
 *     SOM Emitter emith.dll: 2.41
 */

/*
 * 
 *  Theory of Operation
 * 
 * 
 *   This class represents the "system" calls in OpenDoc. A global function
 *   provides initialization of the OpenDoc environment and returns a reference
 *   to the one ODSession object. The member functions of the class
 *   include accessors for some of the other unique classes in OpenDoc as well
 *   as a few other system functions.
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODSession_h
#define SOM_ODSession_h


#include <som.h>

/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))



/*
 * Define class data structures as resolution macros
 */
#define ODSessionClassData (*resolve_ODSessionClassData())
#define ODSessionCClassData (*resolve_ODSessionCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODSession
#define ODSession SOMObject
#endif
#include <ODSessnB.h>

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef ODObject
    #define ODObject SOMObject
#endif /* ODObject */
#ifndef ODExtension
    #define ODExtension SOMObject
#endif /* ODExtension */
#ifndef ODBaseSession
    #define ODBaseSession SOMObject
#endif /* ODBaseSession */
#ifndef ODWindowState
    #define ODWindowState SOMObject
#endif /* ODWindowState */
#ifndef ODDispatcher
    #define ODDispatcher SOMObject
#endif /* ODDispatcher */
#ifndef ODArbitrator
    #define ODArbitrator SOMObject
#endif /* ODArbitrator */
#ifndef ODStorageSystem
    #define ODStorageSystem SOMObject
#endif /* ODStorageSystem */
#ifndef ODClipboard
    #define ODClipboard SOMObject
#endif /* ODClipboard */
#ifndef ODDragAndDrop
    #define ODDragAndDrop SOMObject
#endif /* ODDragAndDrop */
#ifndef ODLinkManager
    #define ODLinkManager SOMObject
#endif /* ODLinkManager */
#ifndef ODNameSpaceManager
    #define ODNameSpaceManager SOMObject
#endif /* ODNameSpaceManager */
#ifndef ODMessageInterface
    #define ODMessageInterface SOMObject
#endif /* ODMessageInterface */
#ifndef ODNameResolver
    #define ODNameResolver SOMObject
#endif /* ODNameResolver */
#ifndef ODTranslation
    #define ODTranslation SOMObject
#endif /* ODTranslation */
#ifndef ODUndo
    #define ODUndo SOMObject
#endif /* ODUndo */
#ifndef ODSemanticInterface
    #define ODSemanticInterface SOMObject
#endif /* ODSemanticInterface */
#ifndef ODPersistentObject
    #define ODPersistentObject SOMObject
#endif /* ODPersistentObject */
#ifndef ODBinding
    #define ODBinding SOMObject
#endif /* ODBinding */
#ifndef ODInfo
    #define ODInfo SOMObject
#endif /* ODInfo */
#ifndef ODToolSpaceManager
    #define ODToolSpaceManager SOMObject
#endif /* ODToolSpaceManager */
#ifndef ODSession
    #define ODSession SOMObject
#endif /* ODSession */

/*
 * End of user-defined types.
 */

#define ODSession_MajorVersion 0
#define ODSession_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODSessionNewClass c
#define ODSessionClassData d
#define ODSessionCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODSession_classObj ODSessionClassData.classObject
#define _ODSession ODSession_classObj

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOMClass * SOMLINK ODSessionNewClass(integer4 somntmajorVersion,
		integer4 somntminorVersion);

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODSessionClassDataStructure {
	SOMClass *classObject;
	somMToken UniqueChangeID;
	somMToken GetUserName;
	somMToken InitSession;
}  _ODSessionClassData;
SOMEXTERN struct ODSessionClassDataStructure * SOMLINK resolve_ODSessionClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODSessionCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODSessionCClassData;
SOMEXTERN struct ODSessionCClassDataStructure * SOMLINK resolve_ODSessionCClassData(void);

/*
 * New and Renew macros for ODSession
 */
#define ODSessionNew() \
   (_somNew(_ODSession ? _ODSession : ODSessionNewClass(ODSession_MajorVersion, ODSession_MinorVersion)))
#define ODSessionRenew(buf) \
   (_somRenew(_ODSession ? _ODSession : ODSessionNewClass(ODSession_MajorVersion, ODSession_MinorVersion), buf))

/*
 * Override method: somInit
 */
#define ODSession_somInit(somSelf) \
	SOMObject_somInit(somSelf)

/*
 * Override method: somUninit
 */
#define ODSession_somUninit(somSelf) \
	SOMObject_somUninit(somSelf)

/*
 * Override method: Purge
 */
#define ODSession_Purge(somSelf,ev,size) \
	ODObject_Purge(somSelf,ev,size)

/*
 * New Method: InitSession
 */
typedef void   (SOMLINK * somTD_ODSession_InitSession)(ODSession *somSelf, Environment *ev);
#define somMD_ODSession_InitSession "::ODSession::InitSession"
#define ODSession_InitSession(somSelf,ev) \
    (SOM_Resolve(somSelf, ODSession, InitSession) \
	(somSelf,ev))
#ifndef SOMGD_InitSession
    #if (defined(_InitSession) || defined(__InitSession))
        #undef _InitSession
        #undef __InitSession
        #define SOMGD_InitSession 1
    #else
        #define _InitSession ODSession_InitSession
    #endif /* _InitSession */
#endif /* SOMGD_InitSession */

/*
 * New Method: GetUserName
 */
typedef ODIText*   (SOMLINK * somTD_ODSession_GetUserName)(ODSession *somSelf, Environment *ev);
#define somMD_ODSession_GetUserName "::ODSession::GetUserName"
#define ODSession_GetUserName(somSelf,ev) \
    (SOM_Resolve(somSelf, ODSession, GetUserName) \
	(somSelf,ev))
#ifndef SOMGD_GetUserName
    #if (defined(_GetUserName) || defined(__GetUserName))
        #undef _GetUserName
        #undef __GetUserName
        #define SOMGD_GetUserName 1
    #else
        #define _GetUserName ODSession_GetUserName
    #endif /* _GetUserName */
#endif /* SOMGD_GetUserName */

/*
 * New Method: UniqueChangeID
 */
typedef ODChangeID   (SOMLINK * somTD_ODSession_UniqueChangeID)(ODSession *somSelf, Environment *ev);
#define somMD_ODSession_UniqueChangeID "::ODSession::UniqueChangeID"
#define ODSession_UniqueChangeID(somSelf,ev) \
    (SOM_Resolve(somSelf, ODSession, UniqueChangeID) \
	(somSelf,ev))
#ifndef SOMGD_UniqueChangeID
    #if (defined(_UniqueChangeID) || defined(__UniqueChangeID))
        #undef _UniqueChangeID
        #undef __UniqueChangeID
        #define SOMGD_UniqueChangeID 1
    #else
        #define _UniqueChangeID ODSession_UniqueChangeID
    #endif /* _UniqueChangeID */
#endif /* SOMGD_UniqueChangeID */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODSession_GetArbitrator ODBaseSession_GetArbitrator
#define ODSession_SetArbitrator ODBaseSession_SetArbitrator
#define ODSession_GetBinding ODBaseSession_GetBinding
#define ODSession_SetBinding ODBaseSession_SetBinding
#define ODSession_GetDispatcher ODBaseSession_GetDispatcher
#define ODSession_SetDispatcher ODBaseSession_SetDispatcher
#define ODSession_GetClipboard ODBaseSession_GetClipboard
#define ODSession_SetClipboard ODBaseSession_SetClipboard
#define ODSession_GetDragAndDrop ODBaseSession_GetDragAndDrop
#define ODSession_SetDragAndDrop ODBaseSession_SetDragAndDrop
#define ODSession_GetInfo ODBaseSession_GetInfo
#define ODSession_SetInfo ODBaseSession_SetInfo
#define ODSession_GetLinkManager ODBaseSession_GetLinkManager
#define ODSession_SetLinkManager ODBaseSession_SetLinkManager
#define ODSession_GetMessageInterface ODBaseSession_GetMessageInterface
#define ODSession_SetMessageInterface ODBaseSession_SetMessageInterface
#define ODSession_GetNameResolver ODBaseSession_GetNameResolver
#define ODSession_SetNameResolver ODBaseSession_SetNameResolver
#define ODSession_GetNameSpaceManager ODBaseSession_GetNameSpaceManager
#define ODSession_SetNameSpaceManager ODBaseSession_SetNameSpaceManager
#define ODSession_GetStorageSystem ODBaseSession_GetStorageSystem
#define ODSession_SetStorageSystem ODBaseSession_SetStorageSystem
#define ODSession_GetTranslation ODBaseSession_GetTranslation
#define ODSession_SetTranslation ODBaseSession_SetTranslation
#define ODSession_GetUndo ODBaseSession_GetUndo
#define ODSession_SetUndo ODBaseSession_SetUndo
#define ODSession_GetWindowState ODBaseSession_GetWindowState
#define ODSession_SetWindowState ODBaseSession_SetWindowState
#define ODSession_GetShellSemtInterface ODBaseSession_GetShellSemtInterface
#define ODSession_SetShellSemtInterface ODBaseSession_SetShellSemtInterface
#define ODSession_Tokenize ODBaseSession_Tokenize
#define ODSession_RemoveEntry ODBaseSession_RemoveEntry
#define ODSession_GetType ODBaseSession_GetType
#define ODSession_InitBaseSession ODBaseSession_InitBaseSession
#define ODSession_GetTokenTable ODBaseSession_GetTokenTable
#define ODSession_SetTokenTable ODBaseSession_SetTokenTable
#define ODSession_GetScriptingObject ODBaseSession_GetScriptingObject
#define ODSession_GetToolSpaceManager ODBaseSession_GetToolSpaceManager
#define ODSession_InitObject ODObject_InitObject
#define ODSession_IsInitialized ODObject_IsInitialized
#define ODSession_HasExtension ODObject_HasExtension
#define ODSession_GetExtension ODObject_GetExtension
#define ODSession_ReleaseExtension ODObject_ReleaseExtension
#define ODSession_IsEqualTo ODObject_IsEqualTo
#define ODSession_SubClassResponsibility ODObject_SubClassResponsibility
#define ODSession_somDefaultInit SOMObject_somDefaultInit
#define ODSession_somDestruct SOMObject_somDestruct
#define ODSession_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODSession_somDefaultAssign SOMObject_somDefaultAssign
#define ODSession_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODSession_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODSession_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODSession_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODSession_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODSession_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODSession_somFree SOMObject_somFree
#define ODSession_somGetClass SOMObject_somGetClass
#define ODSession_somGetClassName SOMObject_somGetClassName
#define ODSession_somGetSize SOMObject_somGetSize
#define ODSession_somIsA SOMObject_somIsA
#define ODSession_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODSession_somRespondsTo SOMObject_somRespondsTo
#define ODSession_somDispatch SOMObject_somDispatch
#define ODSession_somClassDispatch SOMObject_somClassDispatch
#define ODSession_somCastObj SOMObject_somCastObj
#define ODSession_somResetObj SOMObject_somResetObj
#define ODSession_somDispatchV SOMObject_somDispatchV
#define ODSession_somDispatchL SOMObject_somDispatchL
#define ODSession_somDispatchA SOMObject_somDispatchA
#define ODSession_somDispatchD SOMObject_somDispatchD
#define ODSession_somPrintSelf SOMObject_somPrintSelf
#define ODSession_somDumpSelf SOMObject_somDumpSelf
#define ODSession_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODSession_h */
