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

/*
 *    COMPONENT_NAME: somu
 * 
 *    ORIGINS: 27
 * 
 *    IBM CONFIDENTIAL -- (IBM Confidential Restricted when
 *    combined with the aggregated modules for this product)
 *    OBJECT CODE ONLY SOURCE MATERIALS
 * 
 *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
 *    All Rights Reserved
 *    Licensed Materials - Property of IBM
 *    The source code for this program is not published or otherwise divested
 *    of its trade secrets, irrespective of what has been deposited with the
 *    U.S. Copyright Office.
 */


#ifndef SOM_SOMMBeforeAfterDispatcher_h
#define SOM_SOMMBeforeAfterDispatcher_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 SOMMBeforeAfterDispatcherClassData (*resolve_SOMMBeforeAfterDispatcherClassData())
#define SOMMBeforeAfterDispatcherCClassData (*resolve_SOMMBeforeAfterDispatcherCClassData())

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

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
typedef
_IDL_SEQUENCE_somToken SOMMBeforeAfterDispatcher_methodProcSequence;

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_methodProcSequence
    #ifdef methodProcSequence
        #undef methodProcSequence
        #define SOMTGD_methodProcSequence 1
    #else
        #define methodProcSequence SOMMBeforeAfterDispatcher_methodProcSequence
    #endif /* methodProcSequence */
#endif /* SOMTGD_methodProcSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

#define SOMMBeforeAfterDispatcher_MajorVersion 2
#define SOMMBeforeAfterDispatcher_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMMBeforeAfterDispatcherNewClass c
#define SOMMBeforeAfterDispatcherClassData d
#define SOMMBeforeAfterDispatcherCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define SOMMBeforeAfterDispatcher_classObj SOMMBeforeAfterDispatcherClassData.classObject
#define _SOMMBeforeAfterDispatcher SOMMBeforeAfterDispatcher_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct SOMMBeforeAfterDispatcherClassDataStructure {
	SOMClass *classObject;
	somMToken sommBeforeMethodDispatch;
	somMToken sommAfterMethodDispatch;
	somMToken sommBAMethodCount;
	somMToken sommSetBAMethodSeq;
}  _SOMMBeforeAfterDispatcherClassData;
SOMEXTERN struct SOMMBeforeAfterDispatcherClassDataStructure * SOMLINK resolve_SOMMBeforeAfterDispatcherClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMMBeforeAfterDispatcherCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _SOMMBeforeAfterDispatcherCClassData;
SOMEXTERN struct SOMMBeforeAfterDispatcherCClassDataStructure * SOMLINK resolve_SOMMBeforeAfterDispatcherCClassData(void);

/*
 * New and Renew macros for SOMMBeforeAfterDispatcher
 */
#define SOMMBeforeAfterDispatcherNew() \
   (_somNew(_SOMMBeforeAfterDispatcher ? _SOMMBeforeAfterDispatcher : SOMMBeforeAfterDispatcherNewClass(SOMMBeforeAfterDispatcher_MajorVersion, SOMMBeforeAfterDispatcher_MinorVersion)))
#define SOMMBeforeAfterDispatcherRenew(buf) \
   (_somRenew(_SOMMBeforeAfterDispatcher ? _SOMMBeforeAfterDispatcher : SOMMBeforeAfterDispatcherNewClass(SOMMBeforeAfterDispatcher_MajorVersion, SOMMBeforeAfterDispatcher_MinorVersion), buf))

/*
 * Override method: somDefaultInit
 */
#define SOMMBeforeAfterDispatcher_somDefaultInit(somSelf,ctrl) \
	SOMObject_somDefaultInit(somSelf,ctrl)

/*
 * Override method: somInitMIClass
 */
#define SOMMBeforeAfterDispatcher_somInitMIClass(somSelf,inherit_vars,className,parentClasses,dataSize,dataAlignment,maxStaticMethods,majorVersion,minorVersion) \
	SOMClass_somInitMIClass(somSelf,inherit_vars,className,parentClasses,dataSize,dataAlignment,maxStaticMethods,majorVersion,minorVersion)

/*
 * Override method: somOverrideSMethod
 */
#define SOMMBeforeAfterDispatcher_somOverrideSMethod(somSelf,methodId,method) \
	SOMClass_somOverrideSMethod(somSelf,methodId,method)

/*
 * Override method: somDestruct
 */
#define SOMMBeforeAfterDispatcher_somDestruct(somSelf,doFree,ctrl) \
	SOMObject_somDestruct(somSelf,doFree,ctrl)

/*
 * Override method: somClassReady
 */
#define SOMMBeforeAfterDispatcher_somClassReady(somSelf) \
	SOMClass_somClassReady(somSelf)

/*
 * New Method: sommBAMethodCount
 */
typedef long   (SOMLINK * somTD_SOMMBeforeAfterDispatcher_sommBAMethodCount)(SOMMBeforeAfterDispatcher *somSelf,
		boolean before);
#define somMD_SOMMBeforeAfterDispatcher_sommBAMethodCount "::SOMMBeforeAfterDispatcher::sommBAMethodCount"
#define SOMMBeforeAfterDispatcher_sommBAMethodCount(somSelf,before) \
    (SOM_Resolve(somSelf, SOMMBeforeAfterDispatcher, sommBAMethodCount) \
	(somSelf,before))
#ifndef SOMGD_sommBAMethodCount
    #if (defined(_sommBAMethodCount) || defined(__sommBAMethodCount))
        #undef _sommBAMethodCount
        #undef __sommBAMethodCount
        #define SOMGD_sommBAMethodCount 1
    #else
        #define _sommBAMethodCount SOMMBeforeAfterDispatcher_sommBAMethodCount
    #endif /* _sommBAMethodCount */
#endif /* SOMGD_sommBAMethodCount */

/*
 * New Method: sommSetBAMethodSeq
 */
typedef void   (SOMLINK * somTD_SOMMBeforeAfterDispatcher_sommSetBAMethodSeq)(SOMMBeforeAfterDispatcher *somSelf,
		boolean before,
		SOMMBeforeAfterDispatcher_methodProcSequence* baseq);
#define somMD_SOMMBeforeAfterDispatcher_sommSetBAMethodSeq "::SOMMBeforeAfterDispatcher::sommSetBAMethodSeq"
#define SOMMBeforeAfterDispatcher_sommSetBAMethodSeq(somSelf,before,baseq) \
    (SOM_Resolve(somSelf, SOMMBeforeAfterDispatcher, sommSetBAMethodSeq) \
	(somSelf,before,baseq))
#ifndef SOMGD_sommSetBAMethodSeq
    #if (defined(_sommSetBAMethodSeq) || defined(__sommSetBAMethodSeq))
        #undef _sommSetBAMethodSeq
        #undef __sommSetBAMethodSeq
        #define SOMGD_sommSetBAMethodSeq 1
    #else
        #define _sommSetBAMethodSeq SOMMBeforeAfterDispatcher_sommSetBAMethodSeq
    #endif /* _sommSetBAMethodSeq */
#endif /* SOMGD_sommSetBAMethodSeq */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMMBeforeAfterDispatcher__get_somDataAlignment SOMClass__get_somDataAlignment
#define SOMMBeforeAfterDispatcher__get_somInstanceDataOffsets SOMClass__get_somInstanceDataOffsets
#define SOMMBeforeAfterDispatcher__get_somDirectInitClasses SOMClass__get_somDirectInitClasses
#define SOMMBeforeAfterDispatcher__set_somDirectInitClasses SOMClass__set_somDirectInitClasses
#define SOMMBeforeAfterDispatcher_somNew SOMClass_somNew
#define SOMMBeforeAfterDispatcher_somNewNoInit SOMClass_somNewNoInit
#define SOMMBeforeAfterDispatcher_somRenew SOMClass_somRenew
#define SOMMBeforeAfterDispatcher_somRenewNoInit SOMClass_somRenewNoInit
#define SOMMBeforeAfterDispatcher_somRenewNoZero SOMClass_somRenewNoZero
#define SOMMBeforeAfterDispatcher_somRenewNoInitNoZero SOMClass_somRenewNoInitNoZero
#define SOMMBeforeAfterDispatcher_somAllocate SOMClass_somAllocate
#define SOMMBeforeAfterDispatcher_somDeallocate SOMClass_somDeallocate
#define SOMMBeforeAfterDispatcher__get_somClassAllocate SOMClass__get_somClassAllocate
#define SOMMBeforeAfterDispatcher__get_somClassDeallocate SOMClass__get_somClassDeallocate
#define SOMMBeforeAfterDispatcher_somGetInstanceInitMask SOMClass_somGetInstanceInitMask
#define SOMMBeforeAfterDispatcher_somGetInstanceDestructionMask SOMClass_somGetInstanceDestructionMask
#define SOMMBeforeAfterDispatcher_somGetInstanceAssignmentMask SOMClass_somGetInstanceAssignmentMask
#define SOMMBeforeAfterDispatcher_somInitClass SOMClass_somInitClass
#define SOMMBeforeAfterDispatcher_somAddStaticMethod SOMClass_somAddStaticMethod
#define SOMMBeforeAfterDispatcher_somAddDynamicMethod SOMClass_somAddDynamicMethod
#define SOMMBeforeAfterDispatcher_somGetApplyStub SOMClass_somGetApplyStub
#define SOMMBeforeAfterDispatcher_somGetClassData SOMClass_somGetClassData
#define SOMMBeforeAfterDispatcher_somSetClassData SOMClass_somSetClassData
#define SOMMBeforeAfterDispatcher_somGetClassMtab SOMClass_somGetClassMtab
#define SOMMBeforeAfterDispatcher_somGetInstanceOffset SOMClass_somGetInstanceOffset
#define SOMMBeforeAfterDispatcher_somGetInstancePartSize SOMClass_somGetInstancePartSize
#define SOMMBeforeAfterDispatcher_somGetInstanceSize SOMClass_somGetInstanceSize
#define SOMMBeforeAfterDispatcher_somGetInstanceToken SOMClass_somGetInstanceToken
#define SOMMBeforeAfterDispatcher_somGetMemberToken SOMClass_somGetMemberToken
#define SOMMBeforeAfterDispatcher_somGetMethodData SOMClass_somGetMethodData
#define SOMMBeforeAfterDispatcher_somGetRdStub SOMClass_somGetRdStub
#define SOMMBeforeAfterDispatcher_somGetMethodDescriptor SOMClass_somGetMethodDescriptor
#define SOMMBeforeAfterDispatcher_somGetMethodIndex SOMClass_somGetMethodIndex
#define SOMMBeforeAfterDispatcher_somGetMethodToken SOMClass_somGetMethodToken
#define SOMMBeforeAfterDispatcher_somGetName SOMClass_somGetName
#define SOMMBeforeAfterDispatcher_somGetNthMethodData SOMClass_somGetNthMethodData
#define SOMMBeforeAfterDispatcher_somGetNthMethodInfo SOMClass_somGetNthMethodInfo
#define SOMMBeforeAfterDispatcher_somGetNumMethods SOMClass_somGetNumMethods
#define SOMMBeforeAfterDispatcher_somGetNumStaticMethods SOMClass_somGetNumStaticMethods
#define SOMMBeforeAfterDispatcher_somGetParent SOMClass_somGetParent
#define SOMMBeforeAfterDispatcher_somGetParents SOMClass_somGetParents
#define SOMMBeforeAfterDispatcher_somGetPClsMtab SOMClass_somGetPClsMtab
#define SOMMBeforeAfterDispatcher_somGetPClsMtabs SOMClass_somGetPClsMtabs
#define SOMMBeforeAfterDispatcher_somGetVersionNumbers SOMClass_somGetVersionNumbers
#define SOMMBeforeAfterDispatcher_somSetMethodDescriptor SOMClass_somSetMethodDescriptor
#define SOMMBeforeAfterDispatcher_somFindMethod SOMClass_somFindMethod
#define SOMMBeforeAfterDispatcher_somFindMethodOk SOMClass_somFindMethodOk
#define SOMMBeforeAfterDispatcher_somFindSMethod SOMClass_somFindSMethod
#define SOMMBeforeAfterDispatcher_somFindSMethodOk SOMClass_somFindSMethodOk
#define SOMMBeforeAfterDispatcher_somLookupMethod SOMClass_somLookupMethod
#define SOMMBeforeAfterDispatcher_somCheckVersion SOMClass_somCheckVersion
#define SOMMBeforeAfterDispatcher_somDescendedFrom SOMClass_somDescendedFrom
#define SOMMBeforeAfterDispatcher_somSupportsMethod SOMClass_somSupportsMethod
#define SOMMBeforeAfterDispatcher_somDefinedMethod SOMClass_somDefinedMethod
#define SOMMBeforeAfterDispatcher_somOverrideMtab SOMClass_somOverrideMtab
#define SOMMBeforeAfterDispatcher_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMMBeforeAfterDispatcher_somDefaultAssign SOMObject_somDefaultAssign
#define SOMMBeforeAfterDispatcher_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMMBeforeAfterDispatcher_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMMBeforeAfterDispatcher_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMMBeforeAfterDispatcher_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMMBeforeAfterDispatcher_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMMBeforeAfterDispatcher_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMMBeforeAfterDispatcher_somInit SOMObject_somInit
#define SOMMBeforeAfterDispatcher_somFree SOMObject_somFree
#define SOMMBeforeAfterDispatcher_somUninit SOMObject_somUninit
#define SOMMBeforeAfterDispatcher_somGetClass SOMObject_somGetClass
#define SOMMBeforeAfterDispatcher_somGetClassName SOMObject_somGetClassName
#define SOMMBeforeAfterDispatcher_somGetSize SOMObject_somGetSize
#define SOMMBeforeAfterDispatcher_somIsA SOMObject_somIsA
#define SOMMBeforeAfterDispatcher_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMMBeforeAfterDispatcher_somRespondsTo SOMObject_somRespondsTo
#define SOMMBeforeAfterDispatcher_somDispatch SOMObject_somDispatch
#define SOMMBeforeAfterDispatcher_somClassDispatch SOMObject_somClassDispatch
#define SOMMBeforeAfterDispatcher_somCastObj SOMObject_somCastObj
#define SOMMBeforeAfterDispatcher_somResetObj SOMObject_somResetObj
#define SOMMBeforeAfterDispatcher_somDispatchV SOMObject_somDispatchV
#define SOMMBeforeAfterDispatcher_somDispatchL SOMObject_somDispatchL
#define SOMMBeforeAfterDispatcher_somDispatchA SOMObject_somDispatchA
#define SOMMBeforeAfterDispatcher_somDispatchD SOMObject_somDispatchD
#define SOMMBeforeAfterDispatcher_somPrintSelf SOMObject_somPrintSelf
#define SOMMBeforeAfterDispatcher_somDumpSelf SOMObject_somDumpSelf
#define SOMMBeforeAfterDispatcher_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMMBeforeAfterDispatcher_h */
