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

/*
 * 
 *    COMPONENT_NAME: somu
 * 
 *    ORIGINS: 27
 * 
 * 
 *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
 *    All Rights Reserved
 *    Licensed Materials - Property of IBM
 *    US Government Users Restricted Rights - Use, duplication or
 *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 * 
 */


#ifndef SOM_SOMMCooperative_h
#define SOM_SOMMCooperative_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 SOMMCooperativeClassData (*resolve_SOMMCooperativeClassData())
#define SOMMCooperativeCClassData (*resolve_SOMMCooperativeCClassData())

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

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef SOMMMetaCooperative
    #define SOMMMetaCooperative SOMObject
#endif /* SOMMMetaCooperative */

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

#define SOMMCooperative_MajorVersion 2
#define SOMMCooperative_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMMCooperativeNewClass c
#define SOMMCooperativeClassData d
#define SOMMCooperativeCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */

/*
 * Include the meta class file
 */
#include <SOMMETA.h>
/*--------------Migration------------*/
#define SOMMCooperative_classObj SOMMCooperativeClassData.classObject
#define _SOMMCooperative SOMMCooperative_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct SOMMCooperativeClassDataStructure {
	SOMClass *classObject;
	somMToken sommRequestFinalClassMethodCall;
	somMToken sommAddCooperativeClassMethod;
	somMToken sommAddCooperativeInstanceMethod;
	somMToken sommRequestFirstCooperativeInstanceMethodCall;
	somMToken sommSatisfyRequests;
	somMToken sommRequestFirstCooperativeClassMethodCall;
}  _SOMMCooperativeClassData;
SOMEXTERN struct SOMMCooperativeClassDataStructure * SOMLINK resolve_SOMMCooperativeClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMMCooperativeCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _SOMMCooperativeCClassData;
SOMEXTERN struct SOMMCooperativeCClassDataStructure * SOMLINK resolve_SOMMCooperativeCClassData(void);

/*
 * New and Renew macros for SOMMCooperative
 */
#define SOMMCooperativeNew() \
   (_somNew(_SOMMCooperative ? _SOMMCooperative : SOMMCooperativeNewClass(SOMMCooperative_MajorVersion, SOMMCooperative_MinorVersion)))
#define SOMMCooperativeRenew(buf) \
   (_somRenew(_SOMMCooperative ? _SOMMCooperative : SOMMCooperativeNewClass(SOMMCooperative_MajorVersion, SOMMCooperative_MinorVersion), buf))

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

/*
 * Override method: somInitMIClass
 */
#define SOMMCooperative_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: somClassReady
 */
#define SOMMCooperative_somClassReady(somSelf) \
	SOMClass_somClassReady(somSelf)

/*
 * New Method: sommAddCooperativeInstanceMethod
 */
typedef somMethodProc**   (SOMLINK * somTD_SOMMCooperative_sommAddCooperativeInstanceMethod)(SOMMCooperative *somSelf,
		somId methodId,
		somMethodProc* methodProc);
#define somMD_SOMMCooperative_sommAddCooperativeInstanceMethod "::SOMMCooperative::sommAddCooperativeInstanceMethod"
#define SOMMCooperative_sommAddCooperativeInstanceMethod(somSelf,methodId,methodProc) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommAddCooperativeInstanceMethod) \
	(somSelf,methodId,methodProc))
#ifndef SOMGD_sommAddCooperativeInstanceMethod
    #if (defined(_sommAddCooperativeInstanceMethod) || defined(__sommAddCooperativeInstanceMethod))
        #undef _sommAddCooperativeInstanceMethod
        #undef __sommAddCooperativeInstanceMethod
        #define SOMGD_sommAddCooperativeInstanceMethod 1
    #else
        #define _sommAddCooperativeInstanceMethod SOMMCooperative_sommAddCooperativeInstanceMethod
    #endif /* _sommAddCooperativeInstanceMethod */
#endif /* SOMGD_sommAddCooperativeInstanceMethod */

/*
 * New Method: sommAddCooperativeClassMethod
 */
typedef somMethodProc**   (SOMLINK * somTD_SOMMCooperative_sommAddCooperativeClassMethod)(SOMMCooperative *somSelf,
		somId methodId,
		somMethodProc* methodProc);
#define somMD_SOMMCooperative_sommAddCooperativeClassMethod "::SOMMCooperative::sommAddCooperativeClassMethod"
#define SOMMCooperative_sommAddCooperativeClassMethod(somSelf,methodId,methodProc) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommAddCooperativeClassMethod) \
	(somSelf,methodId,methodProc))
#ifndef SOMGD_sommAddCooperativeClassMethod
    #if (defined(_sommAddCooperativeClassMethod) || defined(__sommAddCooperativeClassMethod))
        #undef _sommAddCooperativeClassMethod
        #undef __sommAddCooperativeClassMethod
        #define SOMGD_sommAddCooperativeClassMethod 1
    #else
        #define _sommAddCooperativeClassMethod SOMMCooperative_sommAddCooperativeClassMethod
    #endif /* _sommAddCooperativeClassMethod */
#endif /* SOMGD_sommAddCooperativeClassMethod */

/*
 * New Method: sommRequestFirstCooperativeInstanceMethodCall
 */
typedef void   (SOMLINK * somTD_SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall)(SOMMCooperative *somSelf,
		somId methodId,
		somMethodProc* coopProc,
		somMethodProc*** chainProcAddrAddr);
#define somMD_SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall "::SOMMCooperative::sommRequestFirstCooperativeInstanceMethodCall"
#define SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall(somSelf,methodId,coopProc,chainProcAddrAddr) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommRequestFirstCooperativeInstanceMethodCall) \
	(somSelf,methodId,coopProc,chainProcAddrAddr))
#ifndef SOMGD_sommRequestFirstCooperativeInstanceMethodCall
    #if (defined(_sommRequestFirstCooperativeInstanceMethodCall) || defined(__sommRequestFirstCooperativeInstanceMethodCall))
        #undef _sommRequestFirstCooperativeInstanceMethodCall
        #undef __sommRequestFirstCooperativeInstanceMethodCall
        #define SOMGD_sommRequestFirstCooperativeInstanceMethodCall 1
    #else
        #define _sommRequestFirstCooperativeInstanceMethodCall SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall
    #endif /* _sommRequestFirstCooperativeInstanceMethodCall */
#endif /* SOMGD_sommRequestFirstCooperativeInstanceMethodCall */

/*
 * New Method: sommRequestFirstCooperativeClassMethodCall
 */
typedef void   (SOMLINK * somTD_SOMMCooperative_sommRequestFirstCooperativeClassMethodCall)(SOMMCooperative *somSelf,
		somId methodId,
		somMethodProc* coopProc,
		somMethodProc*** chainProcAddrAddr);
#define somMD_SOMMCooperative_sommRequestFirstCooperativeClassMethodCall "::SOMMCooperative::sommRequestFirstCooperativeClassMethodCall"
#define SOMMCooperative_sommRequestFirstCooperativeClassMethodCall(somSelf,methodId,coopProc,chainProcAddrAddr) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommRequestFirstCooperativeClassMethodCall) \
	(somSelf,methodId,coopProc,chainProcAddrAddr))
#ifndef SOMGD_sommRequestFirstCooperativeClassMethodCall
    #if (defined(_sommRequestFirstCooperativeClassMethodCall) || defined(__sommRequestFirstCooperativeClassMethodCall))
        #undef _sommRequestFirstCooperativeClassMethodCall
        #undef __sommRequestFirstCooperativeClassMethodCall
        #define SOMGD_sommRequestFirstCooperativeClassMethodCall 1
    #else
        #define _sommRequestFirstCooperativeClassMethodCall SOMMCooperative_sommRequestFirstCooperativeClassMethodCall
    #endif /* _sommRequestFirstCooperativeClassMethodCall */
#endif /* SOMGD_sommRequestFirstCooperativeClassMethodCall */

/*
 * New Method: sommRequestFinalClassMethodCall
 */
typedef void   (SOMLINK * somTD_SOMMCooperative_sommRequestFinalClassMethodCall)(SOMMCooperative *somSelf,
		somId methodId,
		somMethodProc* methodProc);
#define somMD_SOMMCooperative_sommRequestFinalClassMethodCall "::SOMMCooperative::sommRequestFinalClassMethodCall"
#define SOMMCooperative_sommRequestFinalClassMethodCall(somSelf,methodId,methodProc) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommRequestFinalClassMethodCall) \
	(somSelf,methodId,methodProc))
#ifndef SOMGD_sommRequestFinalClassMethodCall
    #if (defined(_sommRequestFinalClassMethodCall) || defined(__sommRequestFinalClassMethodCall))
        #undef _sommRequestFinalClassMethodCall
        #undef __sommRequestFinalClassMethodCall
        #define SOMGD_sommRequestFinalClassMethodCall 1
    #else
        #define _sommRequestFinalClassMethodCall SOMMCooperative_sommRequestFinalClassMethodCall
    #endif /* _sommRequestFinalClassMethodCall */
#endif /* SOMGD_sommRequestFinalClassMethodCall */

/*
 * New Method: sommSatisfyRequests
 */
typedef boolean   (SOMLINK * somTD_SOMMCooperative_sommSatisfyRequests)(SOMMCooperative *somSelf);
#define somMD_SOMMCooperative_sommSatisfyRequests "::SOMMCooperative::sommSatisfyRequests"
#define SOMMCooperative_sommSatisfyRequests(somSelf) \
    (SOM_Resolve(somSelf, SOMMCooperative, sommSatisfyRequests) \
	(somSelf))
#ifndef SOMGD_sommSatisfyRequests
    #if (defined(_sommSatisfyRequests) || defined(__sommSatisfyRequests))
        #undef _sommSatisfyRequests
        #undef __sommSatisfyRequests
        #define SOMGD_sommSatisfyRequests 1
    #else
        #define _sommSatisfyRequests SOMMCooperative_sommSatisfyRequests
    #endif /* _sommSatisfyRequests */
#endif /* SOMGD_sommSatisfyRequests */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMMCooperative__get_somDataAlignment SOMClass__get_somDataAlignment
#define SOMMCooperative__get_somInstanceDataOffsets SOMClass__get_somInstanceDataOffsets
#define SOMMCooperative__get_somDirectInitClasses SOMClass__get_somDirectInitClasses
#define SOMMCooperative__set_somDirectInitClasses SOMClass__set_somDirectInitClasses
#define SOMMCooperative_somNew SOMClass_somNew
#define SOMMCooperative_somNewNoInit SOMClass_somNewNoInit
#define SOMMCooperative_somRenew SOMClass_somRenew
#define SOMMCooperative_somRenewNoInit SOMClass_somRenewNoInit
#define SOMMCooperative_somRenewNoZero SOMClass_somRenewNoZero
#define SOMMCooperative_somRenewNoInitNoZero SOMClass_somRenewNoInitNoZero
#define SOMMCooperative_somAllocate SOMClass_somAllocate
#define SOMMCooperative_somDeallocate SOMClass_somDeallocate
#define SOMMCooperative__get_somClassAllocate SOMClass__get_somClassAllocate
#define SOMMCooperative__get_somClassDeallocate SOMClass__get_somClassDeallocate
#define SOMMCooperative_somGetInstanceInitMask SOMClass_somGetInstanceInitMask
#define SOMMCooperative_somGetInstanceDestructionMask SOMClass_somGetInstanceDestructionMask
#define SOMMCooperative_somGetInstanceAssignmentMask SOMClass_somGetInstanceAssignmentMask
#define SOMMCooperative_somInitClass SOMClass_somInitClass
#define SOMMCooperative_somAddStaticMethod SOMClass_somAddStaticMethod
#define SOMMCooperative_somAddDynamicMethod SOMClass_somAddDynamicMethod
#define SOMMCooperative_somOverrideSMethod SOMClass_somOverrideSMethod
#define SOMMCooperative_somGetApplyStub SOMClass_somGetApplyStub
#define SOMMCooperative_somGetClassData SOMClass_somGetClassData
#define SOMMCooperative_somSetClassData SOMClass_somSetClassData
#define SOMMCooperative_somGetClassMtab SOMClass_somGetClassMtab
#define SOMMCooperative_somGetInstanceOffset SOMClass_somGetInstanceOffset
#define SOMMCooperative_somGetInstancePartSize SOMClass_somGetInstancePartSize
#define SOMMCooperative_somGetInstanceSize SOMClass_somGetInstanceSize
#define SOMMCooperative_somGetInstanceToken SOMClass_somGetInstanceToken
#define SOMMCooperative_somGetMemberToken SOMClass_somGetMemberToken
#define SOMMCooperative_somGetMethodData SOMClass_somGetMethodData
#define SOMMCooperative_somGetRdStub SOMClass_somGetRdStub
#define SOMMCooperative_somGetMethodDescriptor SOMClass_somGetMethodDescriptor
#define SOMMCooperative_somGetMethodIndex SOMClass_somGetMethodIndex
#define SOMMCooperative_somGetMethodToken SOMClass_somGetMethodToken
#define SOMMCooperative_somGetName SOMClass_somGetName
#define SOMMCooperative_somGetNthMethodData SOMClass_somGetNthMethodData
#define SOMMCooperative_somGetNthMethodInfo SOMClass_somGetNthMethodInfo
#define SOMMCooperative_somGetNumMethods SOMClass_somGetNumMethods
#define SOMMCooperative_somGetNumStaticMethods SOMClass_somGetNumStaticMethods
#define SOMMCooperative_somGetParent SOMClass_somGetParent
#define SOMMCooperative_somGetParents SOMClass_somGetParents
#define SOMMCooperative_somGetPClsMtab SOMClass_somGetPClsMtab
#define SOMMCooperative_somGetPClsMtabs SOMClass_somGetPClsMtabs
#define SOMMCooperative_somGetVersionNumbers SOMClass_somGetVersionNumbers
#define SOMMCooperative_somSetMethodDescriptor SOMClass_somSetMethodDescriptor
#define SOMMCooperative_somFindMethod SOMClass_somFindMethod
#define SOMMCooperative_somFindMethodOk SOMClass_somFindMethodOk
#define SOMMCooperative_somFindSMethod SOMClass_somFindSMethod
#define SOMMCooperative_somFindSMethodOk SOMClass_somFindSMethodOk
#define SOMMCooperative_somLookupMethod SOMClass_somLookupMethod
#define SOMMCooperative_somCheckVersion SOMClass_somCheckVersion
#define SOMMCooperative_somDescendedFrom SOMClass_somDescendedFrom
#define SOMMCooperative_somSupportsMethod SOMClass_somSupportsMethod
#define SOMMCooperative_somDefinedMethod SOMClass_somDefinedMethod
#define SOMMCooperative_somOverrideMtab SOMClass_somOverrideMtab
#define SOMMCooperative_somDestruct SOMObject_somDestruct
#define SOMMCooperative_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMMCooperative_somDefaultAssign SOMObject_somDefaultAssign
#define SOMMCooperative_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMMCooperative_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMMCooperative_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMMCooperative_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMMCooperative_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMMCooperative_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMMCooperative_somInit SOMObject_somInit
#define SOMMCooperative_somFree SOMObject_somFree
#define SOMMCooperative_somUninit SOMObject_somUninit
#define SOMMCooperative_somGetClass SOMObject_somGetClass
#define SOMMCooperative_somGetClassName SOMObject_somGetClassName
#define SOMMCooperative_somGetSize SOMObject_somGetSize
#define SOMMCooperative_somIsA SOMObject_somIsA
#define SOMMCooperative_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMMCooperative_somRespondsTo SOMObject_somRespondsTo
#define SOMMCooperative_somDispatch SOMObject_somDispatch
#define SOMMCooperative_somClassDispatch SOMObject_somClassDispatch
#define SOMMCooperative_somCastObj SOMObject_somCastObj
#define SOMMCooperative_somResetObj SOMObject_somResetObj
#define SOMMCooperative_somDispatchV SOMObject_somDispatchV
#define SOMMCooperative_somDispatchL SOMObject_somDispatchL
#define SOMMCooperative_somDispatchA SOMObject_somDispatchA
#define SOMMCooperative_somDispatchD SOMObject_somDispatchD
#define SOMMCooperative_somPrintSelf SOMObject_somPrintSelf
#define SOMMCooperative_somDumpSelf SOMObject_somDumpSelf
#define SOMMCooperative_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMMCooperative_h */

#ifndef SOM_SOMMCooperativeSistered_h
#define SOM_SOMMCooperativeSistered_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 SOMMCooperativeSisteredClassData (*resolve_SOMMCooperativeSisteredClassData())
#define SOMMCooperativeSisteredCClassData (*resolve_SOMMCooperativeSisteredCClassData())

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

/*
 * Start of user-defined types:
 */

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

#define SOMMCooperativeSistered_MajorVersion 2
#define SOMMCooperativeSistered_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMMCooperativeSisteredNewClass c
#define SOMMCooperativeSisteredClassData d
#define SOMMCooperativeSisteredCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define SOMMCooperativeSistered_classObj SOMMCooperativeSisteredClassData.classObject
#define _SOMMCooperativeSistered SOMMCooperativeSistered_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct SOMMCooperativeSisteredClassDataStructure {
	SOMClass *classObject;
	somMToken _get_somSisterClass;
}  _SOMMCooperativeSisteredClassData;
SOMEXTERN struct SOMMCooperativeSisteredClassDataStructure * SOMLINK resolve_SOMMCooperativeSisteredClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMMCooperativeSisteredCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _SOMMCooperativeSisteredCClassData;
SOMEXTERN struct SOMMCooperativeSisteredCClassDataStructure * SOMLINK resolve_SOMMCooperativeSisteredCClassData(void);

/*
 * New and Renew macros for SOMMCooperativeSistered
 */
#define SOMMCooperativeSisteredNew() \
   (_somNew(_SOMMCooperativeSistered ? _SOMMCooperativeSistered : SOMMCooperativeSisteredNewClass(SOMMCooperativeSistered_MajorVersion, SOMMCooperativeSistered_MinorVersion)))
#define SOMMCooperativeSisteredRenew(buf) \
   (_somRenew(_SOMMCooperativeSistered ? _SOMMCooperativeSistered : SOMMCooperativeSisteredNewClass(SOMMCooperativeSistered_MajorVersion, SOMMCooperativeSistered_MinorVersion), buf))

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

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

/*
 * New Method: _get_somSisterClass
 */
typedef SOMClass*   (SOMLINK * somTD_SOMMCooperativeSistered__get_somSisterClass)(SOMMCooperativeSistered *somSelf);
#define somMD_SOMMCooperativeSistered__get_somSisterClass "::SOMMCooperativeSistered::somSisterClass"
#define SOMMCooperativeSistered__get_somSisterClass(somSelf) \
    (SOM_Resolve(somSelf, SOMMCooperativeSistered, _get_somSisterClass) \
	(somSelf))
#ifndef SOMGD_get_somSisterClass
    #if (defined(_get_somSisterClass) || defined(__get_somSisterClass))
        #undef _get_somSisterClass
        #undef __get_somSisterClass
        #define SOMGD_get_somSisterClass 1
    #else
        #define __get_somSisterClass SOMMCooperativeSistered__get_somSisterClass
    #endif /* __get_somSisterClass */
#endif /* SOMGD_get_somSisterClass */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMMCooperativeSistered_sommAddCooperativeInstanceMethod SOMMCooperative_sommAddCooperativeInstanceMethod
#define SOMMCooperativeSistered_sommAddCooperativeClassMethod SOMMCooperative_sommAddCooperativeClassMethod
#define SOMMCooperativeSistered_sommRequestFirstCooperativeInstanceMethodCall SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall
#define SOMMCooperativeSistered_sommRequestFirstCooperativeClassMethodCall SOMMCooperative_sommRequestFirstCooperativeClassMethodCall
#define SOMMCooperativeSistered_sommRequestFinalClassMethodCall SOMMCooperative_sommRequestFinalClassMethodCall
#define SOMMCooperativeSistered_sommSatisfyRequests SOMMCooperative_sommSatisfyRequests
#define SOMMCooperativeSistered__get_somDataAlignment SOMClass__get_somDataAlignment
#define SOMMCooperativeSistered__get_somInstanceDataOffsets SOMClass__get_somInstanceDataOffsets
#define SOMMCooperativeSistered__get_somDirectInitClasses SOMClass__get_somDirectInitClasses
#define SOMMCooperativeSistered__set_somDirectInitClasses SOMClass__set_somDirectInitClasses
#define SOMMCooperativeSistered_somNew SOMClass_somNew
#define SOMMCooperativeSistered_somNewNoInit SOMClass_somNewNoInit
#define SOMMCooperativeSistered_somRenew SOMClass_somRenew
#define SOMMCooperativeSistered_somRenewNoInit SOMClass_somRenewNoInit
#define SOMMCooperativeSistered_somRenewNoZero SOMClass_somRenewNoZero
#define SOMMCooperativeSistered_somRenewNoInitNoZero SOMClass_somRenewNoInitNoZero
#define SOMMCooperativeSistered_somAllocate SOMClass_somAllocate
#define SOMMCooperativeSistered_somDeallocate SOMClass_somDeallocate
#define SOMMCooperativeSistered__get_somClassAllocate SOMClass__get_somClassAllocate
#define SOMMCooperativeSistered__get_somClassDeallocate SOMClass__get_somClassDeallocate
#define SOMMCooperativeSistered_somGetInstanceInitMask SOMClass_somGetInstanceInitMask
#define SOMMCooperativeSistered_somGetInstanceDestructionMask SOMClass_somGetInstanceDestructionMask
#define SOMMCooperativeSistered_somGetInstanceAssignmentMask SOMClass_somGetInstanceAssignmentMask
#define SOMMCooperativeSistered_somInitClass SOMClass_somInitClass
#define SOMMCooperativeSistered_somAddStaticMethod SOMClass_somAddStaticMethod
#define SOMMCooperativeSistered_somAddDynamicMethod SOMClass_somAddDynamicMethod
#define SOMMCooperativeSistered_somOverrideSMethod SOMClass_somOverrideSMethod
#define SOMMCooperativeSistered_somClassReady SOMClass_somClassReady
#define SOMMCooperativeSistered_somGetApplyStub SOMClass_somGetApplyStub
#define SOMMCooperativeSistered_somGetClassData SOMClass_somGetClassData
#define SOMMCooperativeSistered_somSetClassData SOMClass_somSetClassData
#define SOMMCooperativeSistered_somGetClassMtab SOMClass_somGetClassMtab
#define SOMMCooperativeSistered_somGetInstanceOffset SOMClass_somGetInstanceOffset
#define SOMMCooperativeSistered_somGetInstancePartSize SOMClass_somGetInstancePartSize
#define SOMMCooperativeSistered_somGetInstanceSize SOMClass_somGetInstanceSize
#define SOMMCooperativeSistered_somGetInstanceToken SOMClass_somGetInstanceToken
#define SOMMCooperativeSistered_somGetMemberToken SOMClass_somGetMemberToken
#define SOMMCooperativeSistered_somGetMethodData SOMClass_somGetMethodData
#define SOMMCooperativeSistered_somGetRdStub SOMClass_somGetRdStub
#define SOMMCooperativeSistered_somGetMethodDescriptor SOMClass_somGetMethodDescriptor
#define SOMMCooperativeSistered_somGetMethodIndex SOMClass_somGetMethodIndex
#define SOMMCooperativeSistered_somGetMethodToken SOMClass_somGetMethodToken
#define SOMMCooperativeSistered_somGetName SOMClass_somGetName
#define SOMMCooperativeSistered_somGetNthMethodData SOMClass_somGetNthMethodData
#define SOMMCooperativeSistered_somGetNthMethodInfo SOMClass_somGetNthMethodInfo
#define SOMMCooperativeSistered_somGetNumMethods SOMClass_somGetNumMethods
#define SOMMCooperativeSistered_somGetNumStaticMethods SOMClass_somGetNumStaticMethods
#define SOMMCooperativeSistered_somGetParent SOMClass_somGetParent
#define SOMMCooperativeSistered_somGetParents SOMClass_somGetParents
#define SOMMCooperativeSistered_somGetPClsMtab SOMClass_somGetPClsMtab
#define SOMMCooperativeSistered_somGetPClsMtabs SOMClass_somGetPClsMtabs
#define SOMMCooperativeSistered_somGetVersionNumbers SOMClass_somGetVersionNumbers
#define SOMMCooperativeSistered_somSetMethodDescriptor SOMClass_somSetMethodDescriptor
#define SOMMCooperativeSistered_somFindMethod SOMClass_somFindMethod
#define SOMMCooperativeSistered_somFindMethodOk SOMClass_somFindMethodOk
#define SOMMCooperativeSistered_somFindSMethod SOMClass_somFindSMethod
#define SOMMCooperativeSistered_somFindSMethodOk SOMClass_somFindSMethodOk
#define SOMMCooperativeSistered_somLookupMethod SOMClass_somLookupMethod
#define SOMMCooperativeSistered_somCheckVersion SOMClass_somCheckVersion
#define SOMMCooperativeSistered_somDescendedFrom SOMClass_somDescendedFrom
#define SOMMCooperativeSistered_somSupportsMethod SOMClass_somSupportsMethod
#define SOMMCooperativeSistered_somDefinedMethod SOMClass_somDefinedMethod
#define SOMMCooperativeSistered_somOverrideMtab SOMClass_somOverrideMtab
#define SOMMCooperativeSistered_somDestruct SOMObject_somDestruct
#define SOMMCooperativeSistered_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMMCooperativeSistered_somDefaultAssign SOMObject_somDefaultAssign
#define SOMMCooperativeSistered_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMMCooperativeSistered_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMMCooperativeSistered_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMMCooperativeSistered_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMMCooperativeSistered_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMMCooperativeSistered_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMMCooperativeSistered_somInit SOMObject_somInit
#define SOMMCooperativeSistered_somFree SOMObject_somFree
#define SOMMCooperativeSistered_somUninit SOMObject_somUninit
#define SOMMCooperativeSistered_somGetClass SOMObject_somGetClass
#define SOMMCooperativeSistered_somGetClassName SOMObject_somGetClassName
#define SOMMCooperativeSistered_somGetSize SOMObject_somGetSize
#define SOMMCooperativeSistered_somIsA SOMObject_somIsA
#define SOMMCooperativeSistered_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMMCooperativeSistered_somRespondsTo SOMObject_somRespondsTo
#define SOMMCooperativeSistered_somDispatch SOMObject_somDispatch
#define SOMMCooperativeSistered_somClassDispatch SOMObject_somClassDispatch
#define SOMMCooperativeSistered_somCastObj SOMObject_somCastObj
#define SOMMCooperativeSistered_somResetObj SOMObject_somResetObj
#define SOMMCooperativeSistered_somDispatchV SOMObject_somDispatchV
#define SOMMCooperativeSistered_somDispatchL SOMObject_somDispatchL
#define SOMMCooperativeSistered_somDispatchA SOMObject_somDispatchA
#define SOMMCooperativeSistered_somDispatchD SOMObject_somDispatchD
#define SOMMCooperativeSistered_somPrintSelf SOMObject_somPrintSelf
#define SOMMCooperativeSistered_somDumpSelf SOMObject_somDumpSelf
#define SOMMCooperativeSistered_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMMCooperativeSistered_h */

#ifndef SOM_SOMMCooperativeRedispatched_h
#define SOM_SOMMCooperativeRedispatched_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 SOMMCooperativeRedispatchedClassData (*resolve_SOMMCooperativeRedispatchedClassData())
#define SOMMCooperativeRedispatchedCClassData (*resolve_SOMMCooperativeRedispatchedCClassData())

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

/*
 * Start of user-defined types:
 */

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

#define SOMMCooperativeRedispatched_MajorVersion 2
#define SOMMCooperativeRedispatched_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMMCooperativeRedispatchedNewClass c
#define SOMMCooperativeRedispatchedClassData d
#define SOMMCooperativeRedispatchedCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define SOMMCooperativeRedispatched_classObj SOMMCooperativeRedispatchedClassData.classObject
#define _SOMMCooperativeRedispatched SOMMCooperativeRedispatched_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct SOMMCooperativeRedispatchedClassDataStructure {
	SOMClass *classObject;
}  _SOMMCooperativeRedispatchedClassData;
SOMEXTERN struct SOMMCooperativeRedispatchedClassDataStructure * SOMLINK resolve_SOMMCooperativeRedispatchedClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMMCooperativeRedispatchedCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
}  _SOMMCooperativeRedispatchedCClassData;
SOMEXTERN struct SOMMCooperativeRedispatchedCClassDataStructure * SOMLINK resolve_SOMMCooperativeRedispatchedCClassData(void);

/*
 * New and Renew macros for SOMMCooperativeRedispatched
 */
#define SOMMCooperativeRedispatchedNew() \
   (_somNew(_SOMMCooperativeRedispatched ? _SOMMCooperativeRedispatched : SOMMCooperativeRedispatchedNewClass(SOMMCooperativeRedispatched_MajorVersion, SOMMCooperativeRedispatched_MinorVersion)))
#define SOMMCooperativeRedispatchedRenew(buf) \
   (_somRenew(_SOMMCooperativeRedispatched ? _SOMMCooperativeRedispatched : SOMMCooperativeRedispatchedNewClass(SOMMCooperativeRedispatched_MajorVersion, SOMMCooperativeRedispatched_MinorVersion), buf))

/*
 * Override method: somInitMIClass
 */
#define SOMMCooperativeRedispatched_somInitMIClass(somSelf,inherit_vars,className,parentClasses,dataSize,dataAlignment,maxStaticMethods,majorVersion,minorVersion) \
	SOMClass_somInitMIClass(somSelf,inherit_vars,className,parentClasses,dataSize,dataAlignment,maxStaticMethods,majorVersion,minorVersion)
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMMCooperativeRedispatched__get_somSisterClass SOMMCooperativeSistered__get_somSisterClass
#define SOMMCooperativeRedispatched_sommAddCooperativeInstanceMethod SOMMCooperative_sommAddCooperativeInstanceMethod
#define SOMMCooperativeRedispatched_sommAddCooperativeClassMethod SOMMCooperative_sommAddCooperativeClassMethod
#define SOMMCooperativeRedispatched_sommRequestFirstCooperativeInstanceMethodCall SOMMCooperative_sommRequestFirstCooperativeInstanceMethodCall
#define SOMMCooperativeRedispatched_sommRequestFirstCooperativeClassMethodCall SOMMCooperative_sommRequestFirstCooperativeClassMethodCall
#define SOMMCooperativeRedispatched_sommRequestFinalClassMethodCall SOMMCooperative_sommRequestFinalClassMethodCall
#define SOMMCooperativeRedispatched_sommSatisfyRequests SOMMCooperative_sommSatisfyRequests
#define SOMMCooperativeRedispatched__get_somDataAlignment SOMClass__get_somDataAlignment
#define SOMMCooperativeRedispatched__get_somInstanceDataOffsets SOMClass__get_somInstanceDataOffsets
#define SOMMCooperativeRedispatched__get_somDirectInitClasses SOMClass__get_somDirectInitClasses
#define SOMMCooperativeRedispatched__set_somDirectInitClasses SOMClass__set_somDirectInitClasses
#define SOMMCooperativeRedispatched_somNew SOMClass_somNew
#define SOMMCooperativeRedispatched_somNewNoInit SOMClass_somNewNoInit
#define SOMMCooperativeRedispatched_somRenew SOMClass_somRenew
#define SOMMCooperativeRedispatched_somRenewNoInit SOMClass_somRenewNoInit
#define SOMMCooperativeRedispatched_somRenewNoZero SOMClass_somRenewNoZero
#define SOMMCooperativeRedispatched_somRenewNoInitNoZero SOMClass_somRenewNoInitNoZero
#define SOMMCooperativeRedispatched_somAllocate SOMClass_somAllocate
#define SOMMCooperativeRedispatched_somDeallocate SOMClass_somDeallocate
#define SOMMCooperativeRedispatched__get_somClassAllocate SOMClass__get_somClassAllocate
#define SOMMCooperativeRedispatched__get_somClassDeallocate SOMClass__get_somClassDeallocate
#define SOMMCooperativeRedispatched_somGetInstanceInitMask SOMClass_somGetInstanceInitMask
#define SOMMCooperativeRedispatched_somGetInstanceDestructionMask SOMClass_somGetInstanceDestructionMask
#define SOMMCooperativeRedispatched_somGetInstanceAssignmentMask SOMClass_somGetInstanceAssignmentMask
#define SOMMCooperativeRedispatched_somInitClass SOMClass_somInitClass
#define SOMMCooperativeRedispatched_somAddStaticMethod SOMClass_somAddStaticMethod
#define SOMMCooperativeRedispatched_somAddDynamicMethod SOMClass_somAddDynamicMethod
#define SOMMCooperativeRedispatched_somOverrideSMethod SOMClass_somOverrideSMethod
#define SOMMCooperativeRedispatched_somClassReady SOMClass_somClassReady
#define SOMMCooperativeRedispatched_somGetApplyStub SOMClass_somGetApplyStub
#define SOMMCooperativeRedispatched_somGetClassData SOMClass_somGetClassData
#define SOMMCooperativeRedispatched_somSetClassData SOMClass_somSetClassData
#define SOMMCooperativeRedispatched_somGetClassMtab SOMClass_somGetClassMtab
#define SOMMCooperativeRedispatched_somGetInstanceOffset SOMClass_somGetInstanceOffset
#define SOMMCooperativeRedispatched_somGetInstancePartSize SOMClass_somGetInstancePartSize
#define SOMMCooperativeRedispatched_somGetInstanceSize SOMClass_somGetInstanceSize
#define SOMMCooperativeRedispatched_somGetInstanceToken SOMClass_somGetInstanceToken
#define SOMMCooperativeRedispatched_somGetMemberToken SOMClass_somGetMemberToken
#define SOMMCooperativeRedispatched_somGetMethodData SOMClass_somGetMethodData
#define SOMMCooperativeRedispatched_somGetRdStub SOMClass_somGetRdStub
#define SOMMCooperativeRedispatched_somGetMethodDescriptor SOMClass_somGetMethodDescriptor
#define SOMMCooperativeRedispatched_somGetMethodIndex SOMClass_somGetMethodIndex
#define SOMMCooperativeRedispatched_somGetMethodToken SOMClass_somGetMethodToken
#define SOMMCooperativeRedispatched_somGetName SOMClass_somGetName
#define SOMMCooperativeRedispatched_somGetNthMethodData SOMClass_somGetNthMethodData
#define SOMMCooperativeRedispatched_somGetNthMethodInfo SOMClass_somGetNthMethodInfo
#define SOMMCooperativeRedispatched_somGetNumMethods SOMClass_somGetNumMethods
#define SOMMCooperativeRedispatched_somGetNumStaticMethods SOMClass_somGetNumStaticMethods
#define SOMMCooperativeRedispatched_somGetParent SOMClass_somGetParent
#define SOMMCooperativeRedispatched_somGetParents SOMClass_somGetParents
#define SOMMCooperativeRedispatched_somGetPClsMtab SOMClass_somGetPClsMtab
#define SOMMCooperativeRedispatched_somGetPClsMtabs SOMClass_somGetPClsMtabs
#define SOMMCooperativeRedispatched_somGetVersionNumbers SOMClass_somGetVersionNumbers
#define SOMMCooperativeRedispatched_somSetMethodDescriptor SOMClass_somSetMethodDescriptor
#define SOMMCooperativeRedispatched_somFindMethod SOMClass_somFindMethod
#define SOMMCooperativeRedispatched_somFindMethodOk SOMClass_somFindMethodOk
#define SOMMCooperativeRedispatched_somFindSMethod SOMClass_somFindSMethod
#define SOMMCooperativeRedispatched_somFindSMethodOk SOMClass_somFindSMethodOk
#define SOMMCooperativeRedispatched_somLookupMethod SOMClass_somLookupMethod
#define SOMMCooperativeRedispatched_somCheckVersion SOMClass_somCheckVersion
#define SOMMCooperativeRedispatched_somDescendedFrom SOMClass_somDescendedFrom
#define SOMMCooperativeRedispatched_somSupportsMethod SOMClass_somSupportsMethod
#define SOMMCooperativeRedispatched_somDefinedMethod SOMClass_somDefinedMethod
#define SOMMCooperativeRedispatched_somOverrideMtab SOMClass_somOverrideMtab
#define SOMMCooperativeRedispatched_somDefaultInit SOMObject_somDefaultInit
#define SOMMCooperativeRedispatched_somDestruct SOMObject_somDestruct
#define SOMMCooperativeRedispatched_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMMCooperativeRedispatched_somDefaultAssign SOMObject_somDefaultAssign
#define SOMMCooperativeRedispatched_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMMCooperativeRedispatched_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMMCooperativeRedispatched_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMMCooperativeRedispatched_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMMCooperativeRedispatched_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMMCooperativeRedispatched_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMMCooperativeRedispatched_somInit SOMObject_somInit
#define SOMMCooperativeRedispatched_somFree SOMObject_somFree
#define SOMMCooperativeRedispatched_somUninit SOMObject_somUninit
#define SOMMCooperativeRedispatched_somGetClass SOMObject_somGetClass
#define SOMMCooperativeRedispatched_somGetClassName SOMObject_somGetClassName
#define SOMMCooperativeRedispatched_somGetSize SOMObject_somGetSize
#define SOMMCooperativeRedispatched_somIsA SOMObject_somIsA
#define SOMMCooperativeRedispatched_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMMCooperativeRedispatched_somRespondsTo SOMObject_somRespondsTo
#define SOMMCooperativeRedispatched_somDispatch SOMObject_somDispatch
#define SOMMCooperativeRedispatched_somClassDispatch SOMObject_somClassDispatch
#define SOMMCooperativeRedispatched_somCastObj SOMObject_somCastObj
#define SOMMCooperativeRedispatched_somResetObj SOMObject_somResetObj
#define SOMMCooperativeRedispatched_somDispatchV SOMObject_somDispatchV
#define SOMMCooperativeRedispatched_somDispatchL SOMObject_somDispatchL
#define SOMMCooperativeRedispatched_somDispatchA SOMObject_somDispatchA
#define SOMMCooperativeRedispatched_somDispatchD SOMObject_somDispatchD
#define SOMMCooperativeRedispatched_somPrintSelf SOMObject_somPrintSelf
#define SOMMCooperativeRedispatched_somDumpSelf SOMObject_somDumpSelf
#define SOMMCooperativeRedispatched_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMMCooperativeRedispatched_h */
