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

/*
 * 
 *    COMPONENT_NAME: somk
 * 
 *    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.
 * 
 *   SOMObject: System Object Model root class
 */


#ifndef SOM_SOMObject_h
#define SOM_SOMObject_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 SOMObjectClassData (*resolve_SOMObjectClassData())
#define SOMObjectCClassData (*resolve_SOMObjectCClassData())

/*
 * Define the class name as an object type
 */
#ifndef SOMObject
#define SOMObject SOMObject
#endif

/*
 * Start of user-defined types:
 */
#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef _IDL_SEQUENCE_SOMObject_defined
#define _IDL_SEQUENCE_SOMObject_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    SOMObject **_buffer;
} _IDL_SEQUENCE_SOMObject;
#endif /* _IDL_SEQUENCE_SOMObject_defined */ 
typedef
_IDL_SEQUENCE_SOMObject SOMObject_SOMObjectSequence;

/*
 *  a sequence of booleans.
 */
#ifndef _IDL_SEQUENCE_octet_defined
#define _IDL_SEQUENCE_octet_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    octet *_buffer;
} _IDL_SEQUENCE_octet;
#endif /* _IDL_SEQUENCE_octet_defined */ 
typedef
_IDL_SEQUENCE_octet SOMObject_BooleanSequence;

/*
 *  a structure to describe an object-related offset, and
 *  a sequence of class-related offsets
 */
typedef
struct SOMObject_somObjectOffset {
SOMObject* obj;
long  offset;
} SOMObject_somObjectOffset;
struct SOMObject_somObjectOffset;
#ifndef _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
#define _IDL_SEQUENCE_SOMObject_somObjectOffset_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    struct SOMObject_somObjectOffset *_buffer;
} _IDL_SEQUENCE_SOMObject_somObjectOffset;
#endif /* _IDL_SEQUENCE_SOMObject_somObjectOffset_defined */ 
typedef
_IDL_SEQUENCE_SOMObject_somObjectOffset SOMObject_somObjectOffsets;

#ifndef SOM_DONT_USE_SHORT_NAMES

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_SOMObjectSequence
    #ifdef SOMObjectSequence
        #undef SOMObjectSequence
        #define SOMTGD_SOMObjectSequence 1
    #else
        #define SOMObjectSequence SOMObject_SOMObjectSequence
    #endif /* SOMObjectSequence */
#endif /* SOMTGD_SOMObjectSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_BooleanSequence
    #ifdef BooleanSequence
        #undef BooleanSequence
        #define SOMTGD_BooleanSequence 1
    #else
        #define BooleanSequence SOMObject_BooleanSequence
    #endif /* BooleanSequence */
#endif /* SOMTGD_BooleanSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#ifndef SOMTGD_somObjectOffset
    #ifdef somObjectOffset
        #undef somObjectOffset
        #define SOMTGD_somObjectOffset 1
    #else
        #define somObjectOffset SOMObject_somObjectOffset
    #endif /* somObjectOffset */
#endif /* SOMTGD_somObjectOffset */
#ifndef SOMTGD__IDL_SEQUENCE_somObjectOffset
    #ifdef _IDL_SEQUENCE_somObjectOffset
        #undef _IDL_SEQUENCE_somObjectOffset
        #define SOMTGD__IDL_SEQUENCE_somObjectOffset 1
    #else
        #define _IDL_SEQUENCE_somObjectOffset _IDL_SEQUENCE_SOMObject_somObjectOffset
    #endif /* _IDL_SEQUENCE_somObjectOffset */
#endif /* SOMTGD__IDL_SEQUENCE_somObjectOffset */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_somObjectOffsets
    #ifdef somObjectOffsets
        #undef somObjectOffsets
        #define SOMTGD_somObjectOffsets 1
    #else
        #define somObjectOffsets SOMObject_somObjectOffsets
    #endif /* somObjectOffsets */
#endif /* SOMTGD_somObjectOffsets */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

#define SOMObject_MajorVersion 1
#define SOMObject_MinorVersion 4

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMObjectNewClass somobc
#define SOMObjectClassData somobd
#define SOMObjectCClassData somobx
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define SOMObject_classObj SOMObjectClassData.classObject
#define _SOMObject SOMObject_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct SOMObjectClassDataStructure {
	SOMClass *classObject;
	somMToken somInit;
	somMToken somUninit;
	somMToken somFree;
	somMToken somDefaultVCopyInit;
	somMToken somGetClassName;
	somMToken somGetClass;
	somMToken somIsA;
	somMToken somRespondsTo;
	somMToken somIsInstanceOf;
	somMToken somGetSize;
	somMToken somDumpSelf;
	somMToken somDumpSelfInt;
	somMToken somPrintSelf;
	somMToken somDefaultConstVCopyInit;
	somMToken somDispatchV;
	somMToken somDispatchL;
	somMToken somDispatchA;
	somMToken somDispatchD;
	somMToken somDispatch;
	somMToken somClassDispatch;
	somMToken somCastObj;
	somMToken somResetObj;
	somMToken somDefaultInit;
	somMToken somDestruct;
	somMToken somPrivate1;
	somMToken somPrivate2;
	somMToken somDefaultCopyInit;
	somMToken somDefaultConstCopyInit;
	somMToken somDefaultAssign;
	somMToken somDefaultConstAssign;
	somMToken somDefaultVAssign;
	somMToken somDefaultConstVAssign;
}  _SOMObjectClassData;
SOMEXTERN struct SOMObjectClassDataStructure * SOMLINK resolve_SOMObjectClassData(void);

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMObjectCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
	somMethodProc *somDispatchV;
	somMethodProc *somDispatchL;
	somMethodProc *somDispatchA;
	somMethodProc *somDispatchD;
	somMethodProc *somDispatch;
	somMethodProc *somClassDispatch;
}  _SOMObjectCClassData;
SOMEXTERN struct SOMObjectCClassDataStructure * SOMLINK resolve_SOMObjectCClassData(void);

/*
 * New and Renew macros for SOMObject
 */
#define SOMObjectNew() \
   (_somNew(_SOMObject ? _SOMObject : SOMObjectNewClass(SOMObject_MajorVersion, SOMObject_MinorVersion)))
#define SOMObjectRenew(buf) \
   (_somRenew(_SOMObject ? _SOMObject : SOMObjectNewClass(SOMObject_MajorVersion, SOMObject_MinorVersion), buf))

/*
 * Initializer macros for SOMObject
 */
static SOMObject* __somtmp_SOMObject = 0;
#define SOMObjectNew_somDefaultInit()\
   (__somtmp_SOMObject = _somNewNoInit(_SOMObject ? _SOMObject : SOMObjectNewClass(SOMObject_MajorVersion, SOMObject_MinorVersion)),\
    SOMObject_somDefaultInit(__somtmp_SOMObject,0),\
    __somtmp_SOMObject)

/*
 * New Method: somDefaultInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somDefaultInit)(SOMObject *somSelf,
		somInitCtrl* ctrl);
#define somMD_SOMObject_somDefaultInit "::SOMObject::somDefaultInit"
#define SOMObject_somDefaultInit(somSelf,ctrl) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultInit) \
	(somSelf,ctrl))
#ifndef SOMGD_somDefaultInit
    #if (defined(_somDefaultInit) || defined(__somDefaultInit))
        #undef _somDefaultInit
        #undef __somDefaultInit
        #define SOMGD_somDefaultInit 1
    #else
        #define _somDefaultInit SOMObject_somDefaultInit
    #endif /* _somDefaultInit */
#endif /* SOMGD_somDefaultInit */

/*
 * New Method: somDestruct
 */
typedef void   (SOMLINK * somTD_SOMObject_somDestruct)(SOMObject *somSelf,
		octet doFree,
		somDestructCtrl* ctrl);
#define somMD_SOMObject_somDestruct "::SOMObject::somDestruct"
#define SOMObject_somDestruct(somSelf,doFree,ctrl) \
    (SOM_Resolve(somSelf, SOMObject, somDestruct) \
	(somSelf,doFree,ctrl))
#ifndef SOMGD_somDestruct
    #if (defined(_somDestruct) || defined(__somDestruct))
        #undef _somDestruct
        #undef __somDestruct
        #define SOMGD_somDestruct 1
    #else
        #define _somDestruct SOMObject_somDestruct
    #endif /* _somDestruct */
#endif /* SOMGD_somDestruct */

/*
 * New Method: somDefaultCopyInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somDefaultCopyInit)(SOMObject *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultCopyInit "::SOMObject::somDefaultCopyInit"
#define SOMObject_somDefaultCopyInit(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultCopyInit) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultCopyInit
    #if (defined(_somDefaultCopyInit) || defined(__somDefaultCopyInit))
        #undef _somDefaultCopyInit
        #undef __somDefaultCopyInit
        #define SOMGD_somDefaultCopyInit 1
    #else
        #define _somDefaultCopyInit SOMObject_somDefaultCopyInit
    #endif /* _somDefaultCopyInit */
#endif /* SOMGD_somDefaultCopyInit */

/*
 * New Method: somDefaultAssign
 */
typedef SOMObject*   (SOMLINK * somTD_SOMObject_somDefaultAssign)(SOMObject *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultAssign "::SOMObject::somDefaultAssign"
#define SOMObject_somDefaultAssign(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultAssign) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultAssign
    #if (defined(_somDefaultAssign) || defined(__somDefaultAssign))
        #undef _somDefaultAssign
        #undef __somDefaultAssign
        #define SOMGD_somDefaultAssign 1
    #else
        #define _somDefaultAssign SOMObject_somDefaultAssign
    #endif /* _somDefaultAssign */
#endif /* SOMGD_somDefaultAssign */

/*
 * New Method: somDefaultConstCopyInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somDefaultConstCopyInit)(SOMObject *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultConstCopyInit "::SOMObject::somDefaultConstCopyInit"
#define SOMObject_somDefaultConstCopyInit(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultConstCopyInit) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultConstCopyInit
    #if (defined(_somDefaultConstCopyInit) || defined(__somDefaultConstCopyInit))
        #undef _somDefaultConstCopyInit
        #undef __somDefaultConstCopyInit
        #define SOMGD_somDefaultConstCopyInit 1
    #else
        #define _somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
    #endif /* _somDefaultConstCopyInit */
#endif /* SOMGD_somDefaultConstCopyInit */

/*
 * New Method: somDefaultVCopyInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somDefaultVCopyInit)(SOMObject *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultVCopyInit "::SOMObject::somDefaultVCopyInit"
#define SOMObject_somDefaultVCopyInit(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultVCopyInit) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultVCopyInit
    #if (defined(_somDefaultVCopyInit) || defined(__somDefaultVCopyInit))
        #undef _somDefaultVCopyInit
        #undef __somDefaultVCopyInit
        #define SOMGD_somDefaultVCopyInit 1
    #else
        #define _somDefaultVCopyInit SOMObject_somDefaultVCopyInit
    #endif /* _somDefaultVCopyInit */
#endif /* SOMGD_somDefaultVCopyInit */

/*
 * New Method: somDefaultConstVCopyInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somDefaultConstVCopyInit)(SOMObject *somSelf,
		somInitCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultConstVCopyInit "::SOMObject::somDefaultConstVCopyInit"
#define SOMObject_somDefaultConstVCopyInit(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultConstVCopyInit) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultConstVCopyInit
    #if (defined(_somDefaultConstVCopyInit) || defined(__somDefaultConstVCopyInit))
        #undef _somDefaultConstVCopyInit
        #undef __somDefaultConstVCopyInit
        #define SOMGD_somDefaultConstVCopyInit 1
    #else
        #define _somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
    #endif /* _somDefaultConstVCopyInit */
#endif /* SOMGD_somDefaultConstVCopyInit */

/*
 * New Method: somDefaultConstAssign
 */
typedef SOMObject*   (SOMLINK * somTD_SOMObject_somDefaultConstAssign)(SOMObject *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultConstAssign "::SOMObject::somDefaultConstAssign"
#define SOMObject_somDefaultConstAssign(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultConstAssign) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultConstAssign
    #if (defined(_somDefaultConstAssign) || defined(__somDefaultConstAssign))
        #undef _somDefaultConstAssign
        #undef __somDefaultConstAssign
        #define SOMGD_somDefaultConstAssign 1
    #else
        #define _somDefaultConstAssign SOMObject_somDefaultConstAssign
    #endif /* _somDefaultConstAssign */
#endif /* SOMGD_somDefaultConstAssign */

/*
 * New Method: somDefaultVAssign
 */
typedef SOMObject*   (SOMLINK * somTD_SOMObject_somDefaultVAssign)(SOMObject *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultVAssign "::SOMObject::somDefaultVAssign"
#define SOMObject_somDefaultVAssign(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultVAssign) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultVAssign
    #if (defined(_somDefaultVAssign) || defined(__somDefaultVAssign))
        #undef _somDefaultVAssign
        #undef __somDefaultVAssign
        #define SOMGD_somDefaultVAssign 1
    #else
        #define _somDefaultVAssign SOMObject_somDefaultVAssign
    #endif /* _somDefaultVAssign */
#endif /* SOMGD_somDefaultVAssign */

/*
 * New Method: somDefaultConstVAssign
 */
typedef SOMObject*   (SOMLINK * somTD_SOMObject_somDefaultConstVAssign)(SOMObject *somSelf,
		somAssignCtrl* ctrl,
		SOMObject* fromObj);
#define somMD_SOMObject_somDefaultConstVAssign "::SOMObject::somDefaultConstVAssign"
#define SOMObject_somDefaultConstVAssign(somSelf,ctrl,fromObj) \
    (SOM_Resolve(somSelf, SOMObject, somDefaultConstVAssign) \
	(somSelf,ctrl,fromObj))
#ifndef SOMGD_somDefaultConstVAssign
    #if (defined(_somDefaultConstVAssign) || defined(__somDefaultConstVAssign))
        #undef _somDefaultConstVAssign
        #undef __somDefaultConstVAssign
        #define SOMGD_somDefaultConstVAssign 1
    #else
        #define _somDefaultConstVAssign SOMObject_somDefaultConstVAssign
    #endif /* _somDefaultConstVAssign */
#endif /* SOMGD_somDefaultConstVAssign */

/*
 * New Method: somInit
 */
typedef void   (SOMLINK * somTD_SOMObject_somInit)(SOMObject *somSelf);
#define somMD_SOMObject_somInit "::SOMObject::somInit"
#define SOMObject_somInit(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somInit) \
	(somSelf))
#ifndef SOMGD_somInit
    #if (defined(_somInit) || defined(__somInit))
        #undef _somInit
        #undef __somInit
        #define SOMGD_somInit 1
    #else
        #define _somInit SOMObject_somInit
    #endif /* _somInit */
#endif /* SOMGD_somInit */

/*
 * New Method: somFree
 */
typedef void   (SOMLINK * somTD_SOMObject_somFree)(SOMObject *somSelf);
#define somMD_SOMObject_somFree "::SOMObject::somFree"
#define SOMObject_somFree(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somFree) \
	(somSelf))
#ifndef SOMGD_somFree
    #if (defined(_somFree) || defined(__somFree))
        #undef _somFree
        #undef __somFree
        #define SOMGD_somFree 1
    #else
        #define _somFree SOMObject_somFree
    #endif /* _somFree */
#endif /* SOMGD_somFree */

/*
 * New Method: somUninit
 */
typedef void   (SOMLINK * somTD_SOMObject_somUninit)(SOMObject *somSelf);
#define somMD_SOMObject_somUninit "::SOMObject::somUninit"
#define SOMObject_somUninit(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somUninit) \
	(somSelf))
#ifndef SOMGD_somUninit
    #if (defined(_somUninit) || defined(__somUninit))
        #undef _somUninit
        #undef __somUninit
        #define SOMGD_somUninit 1
    #else
        #define _somUninit SOMObject_somUninit
    #endif /* _somUninit */
#endif /* SOMGD_somUninit */

/*
 * New Method: somGetClass
 */
typedef SOMClass*   (SOMLINK * somTD_SOMObject_somGetClass)(SOMObject *somSelf);
#define somMD_SOMObject_somGetClass "::SOMObject::somGetClass"
#define SOMObject_somGetClass(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somGetClass) \
	(somSelf))
#ifndef SOMGD_somGetClass
    #if (defined(_somGetClass) || defined(__somGetClass))
        #undef _somGetClass
        #undef __somGetClass
        #define SOMGD_somGetClass 1
    #else
        #define _somGetClass SOMObject_somGetClass
    #endif /* _somGetClass */
#endif /* SOMGD_somGetClass */

/*
 * New Method: somGetClassName
 */
typedef string   (SOMLINK * somTD_SOMObject_somGetClassName)(SOMObject *somSelf);
#define somMD_SOMObject_somGetClassName "::SOMObject::somGetClassName"
#define SOMObject_somGetClassName(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somGetClassName) \
	(somSelf))
#ifndef SOMGD_somGetClassName
    #if (defined(_somGetClassName) || defined(__somGetClassName))
        #undef _somGetClassName
        #undef __somGetClassName
        #define SOMGD_somGetClassName 1
    #else
        #define _somGetClassName SOMObject_somGetClassName
    #endif /* _somGetClassName */
#endif /* SOMGD_somGetClassName */

/*
 * New Method: somGetSize
 */
typedef long   (SOMLINK * somTD_SOMObject_somGetSize)(SOMObject *somSelf);
#define somMD_SOMObject_somGetSize "::SOMObject::somGetSize"
#define SOMObject_somGetSize(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somGetSize) \
	(somSelf))
#ifndef SOMGD_somGetSize
    #if (defined(_somGetSize) || defined(__somGetSize))
        #undef _somGetSize
        #undef __somGetSize
        #define SOMGD_somGetSize 1
    #else
        #define _somGetSize SOMObject_somGetSize
    #endif /* _somGetSize */
#endif /* SOMGD_somGetSize */

/*
 * New Method: somIsA
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somIsA)(SOMObject *somSelf,
		SOMClass* aClassObj);
#define somMD_SOMObject_somIsA "::SOMObject::somIsA"
#define SOMObject_somIsA(somSelf,aClassObj) \
    (SOM_Resolve(somSelf, SOMObject, somIsA) \
	(somSelf,aClassObj))
#ifndef SOMGD_somIsA
    #if (defined(_somIsA) || defined(__somIsA))
        #undef _somIsA
        #undef __somIsA
        #define SOMGD_somIsA 1
    #else
        #define _somIsA SOMObject_somIsA
    #endif /* _somIsA */
#endif /* SOMGD_somIsA */

/*
 * New Method: somIsInstanceOf
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somIsInstanceOf)(SOMObject *somSelf,
		SOMClass* aClassObj);
#define somMD_SOMObject_somIsInstanceOf "::SOMObject::somIsInstanceOf"
#define SOMObject_somIsInstanceOf(somSelf,aClassObj) \
    (SOM_Resolve(somSelf, SOMObject, somIsInstanceOf) \
	(somSelf,aClassObj))
#ifndef SOMGD_somIsInstanceOf
    #if (defined(_somIsInstanceOf) || defined(__somIsInstanceOf))
        #undef _somIsInstanceOf
        #undef __somIsInstanceOf
        #define SOMGD_somIsInstanceOf 1
    #else
        #define _somIsInstanceOf SOMObject_somIsInstanceOf
    #endif /* _somIsInstanceOf */
#endif /* SOMGD_somIsInstanceOf */

/*
 * New Method: somRespondsTo
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somRespondsTo)(SOMObject *somSelf,
		somId mId);
#define somMD_SOMObject_somRespondsTo "::SOMObject::somRespondsTo"
#define SOMObject_somRespondsTo(somSelf,mId) \
    (SOM_Resolve(somSelf, SOMObject, somRespondsTo) \
	(somSelf,mId))
#ifndef SOMGD_somRespondsTo
    #if (defined(_somRespondsTo) || defined(__somRespondsTo))
        #undef _somRespondsTo
        #undef __somRespondsTo
        #define SOMGD_somRespondsTo 1
    #else
        #define _somRespondsTo SOMObject_somRespondsTo
    #endif /* _somRespondsTo */
#endif /* SOMGD_somRespondsTo */

/*
 * New Method: somDispatch
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somDispatch)(SOMObject *somSelf,
		somToken* retValue,
		somId methodId,
		va_list ap);
#define somMD_SOMObject_somDispatch "::SOMObject::somDispatch"
#define SOMObject_somDispatch(somSelf,retValue,methodId,ap) \
    (SOM_Resolve(somSelf, SOMObject, somDispatch) \
	(somSelf,retValue,methodId,ap))
#ifndef SOMGD_va_somDispatch
   #ifdef va_somDispatch
      #undef va_somDispatch
      #define SOMGD_va_somDispatch 1
   #else
      #define va_somDispatch va_SOMObject_somDispatch
   #endif /* va_somDispatch */
#endif /* SOMGD_va_somDispatch */
#ifndef SOMGD_somDispatch
    #if (defined(_somDispatch) || defined(__somDispatch))
        #undef _somDispatch
        #undef __somDispatch
        #define SOMGD_somDispatch 1
    #else
        #define _somDispatch va_SOMObject_somDispatch
    #endif /* _somDispatch */
#endif /* SOMGD_somDispatch */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
boolean  SOMLINK va_SOMObject_somDispatch(SOMObject *somSelf,
		somToken* retValue,
		somId methodId,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    boolean result;
    va_list ap;
    va_start(ap, methodId);
    result = SOMObject_somDispatch(somSelf,retValue,methodId,ap);
    va_end(ap);
    return (result);
}    
#else
    ;
#endif

/*
 * New Method: somClassDispatch
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somClassDispatch)(SOMObject *somSelf,
		SOMClass* clsObj,
		somToken* retValue,
		somId methodId,
		va_list ap);
#define somMD_SOMObject_somClassDispatch "::SOMObject::somClassDispatch"
#define SOMObject_somClassDispatch(somSelf,clsObj,retValue,methodId,ap) \
    (SOM_Resolve(somSelf, SOMObject, somClassDispatch) \
	(somSelf,clsObj,retValue,methodId,ap))
#ifndef SOMGD_va_somClassDispatch
   #ifdef va_somClassDispatch
      #undef va_somClassDispatch
      #define SOMGD_va_somClassDispatch 1
   #else
      #define va_somClassDispatch va_SOMObject_somClassDispatch
   #endif /* va_somClassDispatch */
#endif /* SOMGD_va_somClassDispatch */
#ifndef SOMGD_somClassDispatch
    #if (defined(_somClassDispatch) || defined(__somClassDispatch))
        #undef _somClassDispatch
        #undef __somClassDispatch
        #define SOMGD_somClassDispatch 1
    #else
        #define _somClassDispatch va_SOMObject_somClassDispatch
    #endif /* _somClassDispatch */
#endif /* SOMGD_somClassDispatch */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
boolean  SOMLINK va_SOMObject_somClassDispatch(SOMObject *somSelf,
		SOMClass* clsObj,
		somToken* retValue,
		somId methodId,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    boolean result;
    va_list ap;
    va_start(ap, methodId);
    result = SOMObject_somClassDispatch(somSelf,clsObj,retValue,methodId,ap);
    va_end(ap);
    return (result);
}    
#else
    ;
#endif

/*
 * New Method: somCastObj
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somCastObj)(SOMObject *somSelf,
		SOMClass* cls);
#define somMD_SOMObject_somCastObj "::SOMObject::somCastObj"
#define SOMObject_somCastObj(somSelf,cls) \
    (SOM_Resolve(somSelf, SOMObject, somCastObj) \
	(somSelf,cls))
#ifndef SOMGD_somCastObj
    #if (defined(_somCastObj) || defined(__somCastObj))
        #undef _somCastObj
        #undef __somCastObj
        #define SOMGD_somCastObj 1
    #else
        #define _somCastObj SOMObject_somCastObj
    #endif /* _somCastObj */
#endif /* SOMGD_somCastObj */

/*
 * New Method: somResetObj
 */
typedef boolean   (SOMLINK * somTD_SOMObject_somResetObj)(SOMObject *somSelf);
#define somMD_SOMObject_somResetObj "::SOMObject::somResetObj"
#define SOMObject_somResetObj(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somResetObj) \
	(somSelf))
#ifndef SOMGD_somResetObj
    #if (defined(_somResetObj) || defined(__somResetObj))
        #undef _somResetObj
        #undef __somResetObj
        #define SOMGD_somResetObj 1
    #else
        #define _somResetObj SOMObject_somResetObj
    #endif /* _somResetObj */
#endif /* SOMGD_somResetObj */

/*
 * New Method: somDispatchV
 */
typedef void   (SOMLINK * somTD_SOMObject_somDispatchV)(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		va_list ap);
#define somMD_SOMObject_somDispatchV "::SOMObject::somDispatchV"
#define SOMObject_somDispatchV(somSelf,methodId,descriptor,ap) \
    (SOM_Resolve(somSelf, SOMObject, somDispatchV) \
	(somSelf,methodId,descriptor,ap))
#ifndef SOMGD_va_somDispatchV
   #ifdef va_somDispatchV
      #undef va_somDispatchV
      #define SOMGD_va_somDispatchV 1
   #else
      #define va_somDispatchV va_SOMObject_somDispatchV
   #endif /* va_somDispatchV */
#endif /* SOMGD_va_somDispatchV */
#ifndef SOMGD_somDispatchV
    #if (defined(_somDispatchV) || defined(__somDispatchV))
        #undef _somDispatchV
        #undef __somDispatchV
        #define SOMGD_somDispatchV 1
    #else
        #define _somDispatchV va_SOMObject_somDispatchV
    #endif /* _somDispatchV */
#endif /* SOMGD_somDispatchV */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
void  SOMLINK va_SOMObject_somDispatchV(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    va_list ap;
    va_start(ap, descriptor);
    SOMObject_somDispatchV(somSelf,methodId,descriptor,ap);
    va_end(ap);
}    
#else
    ;
#endif

/*
 * New Method: somDispatchL
 */
typedef long   (SOMLINK * somTD_SOMObject_somDispatchL)(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		va_list ap);
#define somMD_SOMObject_somDispatchL "::SOMObject::somDispatchL"
#define SOMObject_somDispatchL(somSelf,methodId,descriptor,ap) \
    (SOM_Resolve(somSelf, SOMObject, somDispatchL) \
	(somSelf,methodId,descriptor,ap))
#ifndef SOMGD_va_somDispatchL
   #ifdef va_somDispatchL
      #undef va_somDispatchL
      #define SOMGD_va_somDispatchL 1
   #else
      #define va_somDispatchL va_SOMObject_somDispatchL
   #endif /* va_somDispatchL */
#endif /* SOMGD_va_somDispatchL */
#ifndef SOMGD_somDispatchL
    #if (defined(_somDispatchL) || defined(__somDispatchL))
        #undef _somDispatchL
        #undef __somDispatchL
        #define SOMGD_somDispatchL 1
    #else
        #define _somDispatchL va_SOMObject_somDispatchL
    #endif /* _somDispatchL */
#endif /* SOMGD_somDispatchL */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
long  SOMLINK va_SOMObject_somDispatchL(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    long result;
    va_list ap;
    va_start(ap, descriptor);
    result = SOMObject_somDispatchL(somSelf,methodId,descriptor,ap);
    va_end(ap);
    return (result);
}    
#else
    ;
#endif

/*
 * New Method: somDispatchA
 */
typedef void*   (SOMLINK * somTD_SOMObject_somDispatchA)(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		va_list ap);
#define somMD_SOMObject_somDispatchA "::SOMObject::somDispatchA"
#define SOMObject_somDispatchA(somSelf,methodId,descriptor,ap) \
    (SOM_Resolve(somSelf, SOMObject, somDispatchA) \
	(somSelf,methodId,descriptor,ap))
#ifndef SOMGD_va_somDispatchA
   #ifdef va_somDispatchA
      #undef va_somDispatchA
      #define SOMGD_va_somDispatchA 1
   #else
      #define va_somDispatchA va_SOMObject_somDispatchA
   #endif /* va_somDispatchA */
#endif /* SOMGD_va_somDispatchA */
#ifndef SOMGD_somDispatchA
    #if (defined(_somDispatchA) || defined(__somDispatchA))
        #undef _somDispatchA
        #undef __somDispatchA
        #define SOMGD_somDispatchA 1
    #else
        #define _somDispatchA va_SOMObject_somDispatchA
    #endif /* _somDispatchA */
#endif /* SOMGD_somDispatchA */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
void*  SOMLINK va_SOMObject_somDispatchA(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    void* result;
    va_list ap;
    va_start(ap, descriptor);
    result = SOMObject_somDispatchA(somSelf,methodId,descriptor,ap);
    va_end(ap);
    return (result);
}    
#else
    ;
#endif

/*
 * New Method: somDispatchD
 */
typedef double   (SOMLINK * somTD_SOMObject_somDispatchD)(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		va_list ap);
#define somMD_SOMObject_somDispatchD "::SOMObject::somDispatchD"
#define SOMObject_somDispatchD(somSelf,methodId,descriptor,ap) \
    (SOM_Resolve(somSelf, SOMObject, somDispatchD) \
	(somSelf,methodId,descriptor,ap))
#ifndef SOMGD_va_somDispatchD
   #ifdef va_somDispatchD
      #undef va_somDispatchD
      #define SOMGD_va_somDispatchD 1
   #else
      #define va_somDispatchD va_SOMObject_somDispatchD
   #endif /* va_somDispatchD */
#endif /* SOMGD_va_somDispatchD */
#ifndef SOMGD_somDispatchD
    #if (defined(_somDispatchD) || defined(__somDispatchD))
        #undef _somDispatchD
        #undef __somDispatchD
        #define SOMGD_somDispatchD 1
    #else
        #define _somDispatchD va_SOMObject_somDispatchD
    #endif /* _somDispatchD */
#endif /* SOMGD_somDispatchD */
#ifdef SOMObject_VA_EXTERN
    SOMEXTERN
#else
    static
#endif
double  SOMLINK va_SOMObject_somDispatchD(SOMObject *somSelf,
		somId methodId,
		somId descriptor,
		...)
#if (defined(SOMObject_VA_STUBS)||!defined(SOMObject_VA_EXTERN))
{
    double result;
    va_list ap;
    va_start(ap, descriptor);
    result = SOMObject_somDispatchD(somSelf,methodId,descriptor,ap);
    va_end(ap);
    return (result);
}    
#else
    ;
#endif

/*
 * New Method: somPrintSelf
 */
typedef SOMObject*   (SOMLINK * somTD_SOMObject_somPrintSelf)(SOMObject *somSelf);
#define somMD_SOMObject_somPrintSelf "::SOMObject::somPrintSelf"
#define SOMObject_somPrintSelf(somSelf) \
    (SOM_Resolve(somSelf, SOMObject, somPrintSelf) \
	(somSelf))
#ifndef SOMGD_somPrintSelf
    #if (defined(_somPrintSelf) || defined(__somPrintSelf))
        #undef _somPrintSelf
        #undef __somPrintSelf
        #define SOMGD_somPrintSelf 1
    #else
        #define _somPrintSelf SOMObject_somPrintSelf
    #endif /* _somPrintSelf */
#endif /* SOMGD_somPrintSelf */

/*
 * New Method: somDumpSelf
 */
typedef void   (SOMLINK * somTD_SOMObject_somDumpSelf)(SOMObject *somSelf,
		long level);
#define somMD_SOMObject_somDumpSelf "::SOMObject::somDumpSelf"
#define SOMObject_somDumpSelf(somSelf,level) \
    (SOM_Resolve(somSelf, SOMObject, somDumpSelf) \
	(somSelf,level))
#ifndef SOMGD_somDumpSelf
    #if (defined(_somDumpSelf) || defined(__somDumpSelf))
        #undef _somDumpSelf
        #undef __somDumpSelf
        #define SOMGD_somDumpSelf 1
    #else
        #define _somDumpSelf SOMObject_somDumpSelf
    #endif /* _somDumpSelf */
#endif /* SOMGD_somDumpSelf */

/*
 * New Method: somDumpSelfInt
 */
typedef void   (SOMLINK * somTD_SOMObject_somDumpSelfInt)(SOMObject *somSelf,
		long level);
#define somMD_SOMObject_somDumpSelfInt "::SOMObject::somDumpSelfInt"
#define SOMObject_somDumpSelfInt(somSelf,level) \
    (SOM_Resolve(somSelf, SOMObject, somDumpSelfInt) \
	(somSelf,level))
#ifndef SOMGD_somDumpSelfInt
    #if (defined(_somDumpSelfInt) || defined(__somDumpSelfInt))
        #undef _somDumpSelfInt
        #undef __somDumpSelfInt
        #define SOMGD_somDumpSelfInt 1
    #else
        #define _somDumpSelfInt SOMObject_somDumpSelfInt
    #endif /* _somDumpSelfInt */
#endif /* SOMGD_somDumpSelfInt */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMObject_h */
