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

/*
 * 
 *  Classes defined in this interface
 * 
 */


#ifndef SOM_ODUndo_h
#define SOM_ODUndo_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 ODUndoClassData (*resolve_ODUndoClassData())
#define ODUndoCClassData (*resolve_ODUndoCClassData())

/*
 * Define the class name as an object type
 */
#ifndef ODUndo
#define ODUndo SOMObject
#endif
#include <ODObject.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 ODUndo
    #define ODUndo SOMObject
#endif /* ODUndo */
#ifndef ODPart
    #define ODPart SOMObject
#endif /* ODPart */

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

#define ODUndo_MajorVersion 0
#define ODUndo_MinorVersion 0

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define ODUndoNewClass c
#define ODUndoClassData d
#define ODUndoCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define ODUndo_classObj ODUndoClassData.classObject
#define _ODUndo ODUndo_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct ODUndoClassDataStructure {
	SOMClass *classObject;
	somMToken InitUndo;
	somMToken AddActionToHistory;
	somMToken Undo;
	somMToken Redo;
	somMToken MarkActionHistory;
	somMToken ClearActionHistory;
	somMToken ClearRedoHistory;
	somMToken PeekUndoHistory;
	somMToken PeekRedoHistory;
}  _ODUndoClassData;
SOMEXTERN struct ODUndoClassDataStructure * SOMLINK resolve_ODUndoClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct ODUndoCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _ODUndoCClassData;
SOMEXTERN struct ODUndoCClassDataStructure * SOMLINK resolve_ODUndoCClassData(void);

/*
 * New and Renew macros for ODUndo
 */
#define ODUndoNew() \
   (_somNew(_ODUndo ? _ODUndo : ODUndoNewClass(ODUndo_MajorVersion, ODUndo_MinorVersion)))
#define ODUndoRenew(buf) \
   (_somRenew(_ODUndo ? _ODUndo : ODUndoNewClass(ODUndo_MajorVersion, ODUndo_MinorVersion), buf))

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

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

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

/*
 * New Method: InitUndo
 */
typedef void   (SOMLINK * somTD_ODUndo_InitUndo)(ODUndo *somSelf, Environment *ev);
#define somMD_ODUndo_InitUndo "::ODUndo::InitUndo"
#define ODUndo_InitUndo(somSelf,ev) \
    (SOM_Resolve(somSelf, ODUndo, InitUndo) \
	(somSelf,ev))
#ifndef SOMGD_InitUndo
    #if (defined(_InitUndo) || defined(__InitUndo))
        #undef _InitUndo
        #undef __InitUndo
        #define SOMGD_InitUndo 1
    #else
        #define _InitUndo ODUndo_InitUndo
    #endif /* _InitUndo */
#endif /* SOMGD_InitUndo */

/*
 * New Method: AddActionToHistory
 */
typedef void   (SOMLINK * somTD_ODUndo_AddActionToHistory)(ODUndo *somSelf, Environment *ev,
		ODPart* whichPart,
		ODActionData actionData,
		ODActionType actionType,
		ODName* undoActionLabel,
		ODName* redoActionLabel);
#define somMD_ODUndo_AddActionToHistory "::ODUndo::AddActionToHistory"
#define ODUndo_AddActionToHistory(somSelf,ev,whichPart,actionData,actionType,undoActionLabel,redoActionLabel) \
    (SOM_Resolve(somSelf, ODUndo, AddActionToHistory) \
	(somSelf,ev,whichPart,actionData,actionType,undoActionLabel,redoActionLabel))
#ifndef SOMGD_AddActionToHistory
    #if (defined(_AddActionToHistory) || defined(__AddActionToHistory))
        #undef _AddActionToHistory
        #undef __AddActionToHistory
        #define SOMGD_AddActionToHistory 1
    #else
        #define _AddActionToHistory ODUndo_AddActionToHistory
    #endif /* _AddActionToHistory */
#endif /* SOMGD_AddActionToHistory */

/*
 * New Method: Undo
 */
typedef void   (SOMLINK * somTD_ODUndo_Undo)(ODUndo *somSelf, Environment *ev);
#define somMD_ODUndo_Undo "::ODUndo::Undo"
#define ODUndo_Undo(somSelf,ev) \
    (SOM_Resolve(somSelf, ODUndo, Undo) \
	(somSelf,ev))
#ifndef SOMGD_Undo
    #if (defined(_Undo) || defined(__Undo))
        #undef _Undo
        #undef __Undo
        #define SOMGD_Undo 1
    #else
        #define _Undo ODUndo_Undo
    #endif /* _Undo */
#endif /* SOMGD_Undo */

/*
 * New Method: Redo
 */
typedef void   (SOMLINK * somTD_ODUndo_Redo)(ODUndo *somSelf, Environment *ev);
#define somMD_ODUndo_Redo "::ODUndo::Redo"
#define ODUndo_Redo(somSelf,ev) \
    (SOM_Resolve(somSelf, ODUndo, Redo) \
	(somSelf,ev))
#ifndef SOMGD_Redo
    #if (defined(_Redo) || defined(__Redo))
        #undef _Redo
        #undef __Redo
        #define SOMGD_Redo 1
    #else
        #define _Redo ODUndo_Redo
    #endif /* _Redo */
#endif /* SOMGD_Redo */

/*
 * New Method: MarkActionHistory
 */
typedef void   (SOMLINK * somTD_ODUndo_MarkActionHistory)(ODUndo *somSelf, Environment *ev);
#define somMD_ODUndo_MarkActionHistory "::ODUndo::MarkActionHistory"
#define ODUndo_MarkActionHistory(somSelf,ev) \
    (SOM_Resolve(somSelf, ODUndo, MarkActionHistory) \
	(somSelf,ev))
#ifndef SOMGD_MarkActionHistory
    #if (defined(_MarkActionHistory) || defined(__MarkActionHistory))
        #undef _MarkActionHistory
        #undef __MarkActionHistory
        #define SOMGD_MarkActionHistory 1
    #else
        #define _MarkActionHistory ODUndo_MarkActionHistory
    #endif /* _MarkActionHistory */
#endif /* SOMGD_MarkActionHistory */

/*
 * New Method: ClearActionHistory
 */
typedef void   (SOMLINK * somTD_ODUndo_ClearActionHistory)(ODUndo *somSelf, Environment *ev,
		ODRespectMarksChoices respectMarks);
#define somMD_ODUndo_ClearActionHistory "::ODUndo::ClearActionHistory"
#define ODUndo_ClearActionHistory(somSelf,ev,respectMarks) \
    (SOM_Resolve(somSelf, ODUndo, ClearActionHistory) \
	(somSelf,ev,respectMarks))
#ifndef SOMGD_ClearActionHistory
    #if (defined(_ClearActionHistory) || defined(__ClearActionHistory))
        #undef _ClearActionHistory
        #undef __ClearActionHistory
        #define SOMGD_ClearActionHistory 1
    #else
        #define _ClearActionHistory ODUndo_ClearActionHistory
    #endif /* _ClearActionHistory */
#endif /* SOMGD_ClearActionHistory */

/*
 * New Method: ClearRedoHistory
 */
typedef void   (SOMLINK * somTD_ODUndo_ClearRedoHistory)(ODUndo *somSelf, Environment *ev);
#define somMD_ODUndo_ClearRedoHistory "::ODUndo::ClearRedoHistory"
#define ODUndo_ClearRedoHistory(somSelf,ev) \
    (SOM_Resolve(somSelf, ODUndo, ClearRedoHistory) \
	(somSelf,ev))
#ifndef SOMGD_ClearRedoHistory
    #if (defined(_ClearRedoHistory) || defined(__ClearRedoHistory))
        #undef _ClearRedoHistory
        #undef __ClearRedoHistory
        #define SOMGD_ClearRedoHistory 1
    #else
        #define _ClearRedoHistory ODUndo_ClearRedoHistory
    #endif /* _ClearRedoHistory */
#endif /* SOMGD_ClearRedoHistory */

/*
 * New Method: PeekUndoHistory
 */
typedef ODBoolean   (SOMLINK * somTD_ODUndo_PeekUndoHistory)(ODUndo *somSelf, Environment *ev,
		ODPart** part,
		ODActionData* actionData,
		ODActionType* actionType,
		ODName* actionLabel);
#define somMD_ODUndo_PeekUndoHistory "::ODUndo::PeekUndoHistory"
#define ODUndo_PeekUndoHistory(somSelf,ev,part,actionData,actionType,actionLabel) \
    (SOM_Resolve(somSelf, ODUndo, PeekUndoHistory) \
	(somSelf,ev,part,actionData,actionType,actionLabel))
#ifndef SOMGD_PeekUndoHistory
    #if (defined(_PeekUndoHistory) || defined(__PeekUndoHistory))
        #undef _PeekUndoHistory
        #undef __PeekUndoHistory
        #define SOMGD_PeekUndoHistory 1
    #else
        #define _PeekUndoHistory ODUndo_PeekUndoHistory
    #endif /* _PeekUndoHistory */
#endif /* SOMGD_PeekUndoHistory */

/*
 * New Method: PeekRedoHistory
 */
typedef ODBoolean   (SOMLINK * somTD_ODUndo_PeekRedoHistory)(ODUndo *somSelf, Environment *ev,
		ODPart** part,
		ODActionData* actionData,
		ODActionType* actionType,
		ODName* actionLabel);
#define somMD_ODUndo_PeekRedoHistory "::ODUndo::PeekRedoHistory"
#define ODUndo_PeekRedoHistory(somSelf,ev,part,actionData,actionType,actionLabel) \
    (SOM_Resolve(somSelf, ODUndo, PeekRedoHistory) \
	(somSelf,ev,part,actionData,actionType,actionLabel))
#ifndef SOMGD_PeekRedoHistory
    #if (defined(_PeekRedoHistory) || defined(__PeekRedoHistory))
        #undef _PeekRedoHistory
        #undef __PeekRedoHistory
        #define SOMGD_PeekRedoHistory 1
    #else
        #define _PeekRedoHistory ODUndo_PeekRedoHistory
    #endif /* _PeekRedoHistory */
#endif /* SOMGD_PeekRedoHistory */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define ODUndo_InitObject ODObject_InitObject
#define ODUndo_IsInitialized ODObject_IsInitialized
#define ODUndo_HasExtension ODObject_HasExtension
#define ODUndo_GetExtension ODObject_GetExtension
#define ODUndo_ReleaseExtension ODObject_ReleaseExtension
#define ODUndo_IsEqualTo ODObject_IsEqualTo
#define ODUndo_SubClassResponsibility ODObject_SubClassResponsibility
#define ODUndo_somDefaultInit SOMObject_somDefaultInit
#define ODUndo_somDestruct SOMObject_somDestruct
#define ODUndo_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define ODUndo_somDefaultAssign SOMObject_somDefaultAssign
#define ODUndo_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define ODUndo_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define ODUndo_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define ODUndo_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define ODUndo_somDefaultVAssign SOMObject_somDefaultVAssign
#define ODUndo_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define ODUndo_somFree SOMObject_somFree
#define ODUndo_somGetClass SOMObject_somGetClass
#define ODUndo_somGetClassName SOMObject_somGetClassName
#define ODUndo_somGetSize SOMObject_somGetSize
#define ODUndo_somIsA SOMObject_somIsA
#define ODUndo_somIsInstanceOf SOMObject_somIsInstanceOf
#define ODUndo_somRespondsTo SOMObject_somRespondsTo
#define ODUndo_somDispatch SOMObject_somDispatch
#define ODUndo_somClassDispatch SOMObject_somClassDispatch
#define ODUndo_somCastObj SOMObject_somCastObj
#define ODUndo_somResetObj SOMObject_somResetObj
#define ODUndo_somDispatchV SOMObject_somDispatchV
#define ODUndo_somDispatchL SOMObject_somDispatchL
#define ODUndo_somDispatchA SOMObject_somDispatchA
#define ODUndo_somDispatchD SOMObject_somDispatchD
#define ODUndo_somPrintSelf SOMObject_somPrintSelf
#define ODUndo_somDumpSelf SOMObject_somDumpSelf
#define ODUndo_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_ODUndo_h */
