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

/*
 *  @(#)75	1.3  src/somk/somobj.idl, somk.so, som2.1.1 6/20/95 11:22:52
 * 
 *    COMPONENT_NAME: somk
 * 
 *    ORIGINS: 27
 * 
 * 
 *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 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 the class name as an object type
 */
#ifndef SOMObject
#define SOMObject SOMObject
#endif

/*
 * Start of bindings for IDL 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 bindings for IDL types.
 */

#define SOMObject_MajorVersion 1
#define SOMObject_MinorVersion 4

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define SOMObjectNewClass somobc
#pragma linkage(somobc, system)
#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 somtmajorVersion,
		integer4 somtminorVersion);
#pragma linkage(SOMObjectNewClass, system)

/*
 * 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 somoPrivate1;
	somMToken somoPrivate2;
	somMToken somoPrivate3;
	somMToken somoPrivate4;
	somMToken somDispatch;
	somMToken somClassDispatch;
	somMToken somCastObj;
	somMToken somResetObj;
	somMToken somDefaultInit;
	somMToken somDestruct;
	somMToken somoPrivate5;
	somMToken somPrivate6;
	somMToken somDefaultCopyInit;
	somMToken somDefaultConstCopyInit;
	somMToken somDefaultAssign;
	somMToken somDefaultConstAssign;
	somMToken somDefaultVAssign;
	somMToken somDefaultConstVAssign;
} SOMDLINK SOMObjectClassData;

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct SOMObjectCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
	somMethodProc *somDispatch;
	somMethodProc *somClassDispatch;
} SOMDLINK SOMObjectCClassData;

/*
 * 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 somTP_SOMObject_somDefaultInit(SOMObject *somSelf, 
		somInitCtrl* ctrl);
#pragma linkage(somTP_SOMObject_somDefaultInit, system)
typedef somTP_SOMObject_somDefaultInit *somTD_SOMObject_somDefaultInit;
#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 somTP_SOMObject_somDestruct(SOMObject *somSelf, 
		octet doFree, 
		somDestructCtrl* ctrl);
#pragma linkage(somTP_SOMObject_somDestruct, system)
typedef somTP_SOMObject_somDestruct *somTD_SOMObject_somDestruct;
#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 somTP_SOMObject_somDefaultCopyInit(SOMObject *somSelf, 
		somInitCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultCopyInit, system)
typedef somTP_SOMObject_somDefaultCopyInit *somTD_SOMObject_somDefaultCopyInit;
#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 somTP_SOMObject_somDefaultAssign(SOMObject *somSelf, 
		somAssignCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultAssign, system)
typedef somTP_SOMObject_somDefaultAssign *somTD_SOMObject_somDefaultAssign;
#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 somTP_SOMObject_somDefaultConstCopyInit(SOMObject *somSelf, 
		somInitCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultConstCopyInit, system)
typedef somTP_SOMObject_somDefaultConstCopyInit *somTD_SOMObject_somDefaultConstCopyInit;
#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 somTP_SOMObject_somDefaultVCopyInit(SOMObject *somSelf, 
		somInitCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultVCopyInit, system)
typedef somTP_SOMObject_somDefaultVCopyInit *somTD_SOMObject_somDefaultVCopyInit;
#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 somTP_SOMObject_somDefaultConstVCopyInit(SOMObject *somSelf, 
		somInitCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultConstVCopyInit, system)
typedef somTP_SOMObject_somDefaultConstVCopyInit *somTD_SOMObject_somDefaultConstVCopyInit;
#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 somTP_SOMObject_somDefaultConstAssign(SOMObject *somSelf, 
		somAssignCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultConstAssign, system)
typedef somTP_SOMObject_somDefaultConstAssign *somTD_SOMObject_somDefaultConstAssign;
#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 somTP_SOMObject_somDefaultVAssign(SOMObject *somSelf, 
		somAssignCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultVAssign, system)
typedef somTP_SOMObject_somDefaultVAssign *somTD_SOMObject_somDefaultVAssign;
#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 somTP_SOMObject_somDefaultConstVAssign(SOMObject *somSelf, 
		somAssignCtrl* ctrl, 
		SOMObject* fromObj);
#pragma linkage(somTP_SOMObject_somDefaultConstVAssign, system)
typedef somTP_SOMObject_somDefaultConstVAssign *somTD_SOMObject_somDefaultConstVAssign;
#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 somTP_SOMObject_somInit(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somInit, system)
typedef somTP_SOMObject_somInit *somTD_SOMObject_somInit;
#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 somTP_SOMObject_somFree(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somFree, system)
typedef somTP_SOMObject_somFree *somTD_SOMObject_somFree;
#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 somTP_SOMObject_somUninit(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somUninit, system)
typedef somTP_SOMObject_somUninit *somTD_SOMObject_somUninit;
#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 somTP_SOMObject_somGetClass(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somGetClass, system)
typedef somTP_SOMObject_somGetClass *somTD_SOMObject_somGetClass;
#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 somTP_SOMObject_somGetClassName(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somGetClassName, system)
typedef somTP_SOMObject_somGetClassName *somTD_SOMObject_somGetClassName;
#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 somTP_SOMObject_somGetSize(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somGetSize, system)
typedef somTP_SOMObject_somGetSize *somTD_SOMObject_somGetSize;
#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 somTP_SOMObject_somIsA(SOMObject *somSelf, 
		SOMClass* aClassObj);
#pragma linkage(somTP_SOMObject_somIsA, system)
typedef somTP_SOMObject_somIsA *somTD_SOMObject_somIsA;
#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 somTP_SOMObject_somIsInstanceOf(SOMObject *somSelf, 
		SOMClass* aClassObj);
#pragma linkage(somTP_SOMObject_somIsInstanceOf, system)
typedef somTP_SOMObject_somIsInstanceOf *somTD_SOMObject_somIsInstanceOf;
#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 somTP_SOMObject_somRespondsTo(SOMObject *somSelf, 
		somId mId);
#pragma linkage(somTP_SOMObject_somRespondsTo, system)
typedef somTP_SOMObject_somRespondsTo *somTD_SOMObject_somRespondsTo;
#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 somTP_SOMObject_somDispatch(SOMObject *somSelf, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
#pragma linkage(somTP_SOMObject_somDispatch, system)
typedef somTP_SOMObject_somDispatch *somTD_SOMObject_somDispatch;
#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 somTP_SOMObject_somClassDispatch(SOMObject *somSelf, 
		SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
#pragma linkage(somTP_SOMObject_somClassDispatch, system)
typedef somTP_SOMObject_somClassDispatch *somTD_SOMObject_somClassDispatch;
#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 somTP_SOMObject_somCastObj(SOMObject *somSelf, 
		SOMClass* cls);
#pragma linkage(somTP_SOMObject_somCastObj, system)
typedef somTP_SOMObject_somCastObj *somTD_SOMObject_somCastObj;
#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 somTP_SOMObject_somResetObj(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somResetObj, system)
typedef somTP_SOMObject_somResetObj *somTD_SOMObject_somResetObj;
#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: somPrintSelf
 */
typedef SOMObject*   SOMLINK somTP_SOMObject_somPrintSelf(SOMObject *somSelf);
#pragma linkage(somTP_SOMObject_somPrintSelf, system)
typedef somTP_SOMObject_somPrintSelf *somTD_SOMObject_somPrintSelf;
#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 somTP_SOMObject_somDumpSelf(SOMObject *somSelf, 
		long level);
#pragma linkage(somTP_SOMObject_somDumpSelf, system)
typedef somTP_SOMObject_somDumpSelf *somTD_SOMObject_somDumpSelf;
#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 somTP_SOMObject_somDumpSelfInt(SOMObject *somSelf, 
		long level);
#pragma linkage(somTP_SOMObject_somDumpSelfInt, system)
typedef somTP_SOMObject_somDumpSelfInt *somTD_SOMObject_somDumpSelfInt;
#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 */
