#ifndef SOMClass_API
#define SOMClass_API
/*
 * -- The Class API
 */
#ifndef SOM_IMPORTEXPORT_som_somcls
#ifdef SOM_DLL_som
	/* export semantics */
	#if defined(SOM_DEFFILE_som)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_som))\
	|| !defined(SOM_Module_somcls_Source)
	#define SOM_IMPORTEXPORT_som_somcls
	#else
	#define SOM_IMPORTEXPORT_som_somcls SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_som_somcls SOMDLLIMPORT
#endif
#endif

/*
 * Start of bindings for IDL types
 */

class SOMClass;
class SOMObject;
#ifndef _IDL_SEQUENCE_somToken_defined
#define _IDL_SEQUENCE_somToken_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    somToken *_buffer;
} _IDL_SEQUENCE_somToken;
#endif /* _IDL_SEQUENCE_somToken_defined */ 
typedef
_IDL_SEQUENCE_somToken SOMClass_somTokenSequence;
/*
 *  a (generic) sequence of somTokens
 */

#ifndef _IDL_SEQUENCE_SOMClass_defined
#define _IDL_SEQUENCE_SOMClass_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    SOMClass **_buffer;
} _IDL_SEQUENCE_SOMClass;
#endif /* _IDL_SEQUENCE_SOMClass_defined */ 
typedef
_IDL_SEQUENCE_SOMClass SOMClass_SOMClassSequence;
/*
 *  a sequence of classes
 */

typedef
struct SOMClass_somOffsetInfo {
SOMClass* cls;
long  offset;
} SOMClass_somOffsetInfo;
/*
 *  a structure to describe a class-related offset
 */

struct SOMClass_somOffsetInfo;
#ifndef _IDL_SEQUENCE_SOMClass_somOffsetInfo_defined
#define _IDL_SEQUENCE_SOMClass_somOffsetInfo_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    struct SOMClass_somOffsetInfo *_buffer;
} _IDL_SEQUENCE_SOMClass_somOffsetInfo;
#endif /* _IDL_SEQUENCE_SOMClass_somOffsetInfo_defined */ 
typedef
_IDL_SEQUENCE_SOMClass_somOffsetInfo SOMClass_somOffsets;
/*
 *  a sequence of class-related offsets
 */

#ifndef _IDL_SEQUENCE_somId_defined
#define _IDL_SEQUENCE_somId_defined
typedef struct {
    unsigned long _maximum;
    unsigned long _length;
    somId *_buffer;
} _IDL_SEQUENCE_somId;
#endif /* _IDL_SEQUENCE_somId_defined */ 
typedef
_IDL_SEQUENCE_somId SOMClass_somIdSequence;
/*
 *  a sequence of somIds
 */


#ifndef SOM_DONT_USE_SHORT_NAMES

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_somTokenSequence
    #ifdef somTokenSequence
        #undef somTokenSequence
        #define SOMTGD_somTokenSequence 1
    #else
        #define somTokenSequence SOMClass_somTokenSequence
    #endif /* somTokenSequence */
#endif /* SOMTGD_somTokenSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_SOMClassSequence
    #ifdef SOMClassSequence
        #undef SOMClassSequence
        #define SOMTGD_SOMClassSequence 1
    #else
        #define SOMClassSequence SOMClass_SOMClassSequence
    #endif /* SOMClassSequence */
#endif /* SOMTGD_SOMClassSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#ifndef SOMTGD_somOffsetInfo
    #ifdef somOffsetInfo
        #undef somOffsetInfo
        #define SOMTGD_somOffsetInfo 1
    #else
        #define somOffsetInfo SOMClass_somOffsetInfo
    #endif /* somOffsetInfo */
#endif /* SOMTGD_somOffsetInfo */
#ifndef SOMTGD__IDL_SEQUENCE_somOffsetInfo
    #ifdef _IDL_SEQUENCE_somOffsetInfo
        #undef _IDL_SEQUENCE_somOffsetInfo
        #define SOMTGD__IDL_SEQUENCE_somOffsetInfo 1
    #else
        #define _IDL_SEQUENCE_somOffsetInfo _IDL_SEQUENCE_SOMClass_somOffsetInfo
    #endif /* _IDL_SEQUENCE_somOffsetInfo */
#endif /* SOMTGD__IDL_SEQUENCE_somOffsetInfo */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_somOffsets
    #ifdef somOffsets
        #undef somOffsets
        #define SOMTGD_somOffsets 1
    #else
        #define somOffsets SOMClass_somOffsets
    #endif /* somOffsets */
#endif /* SOMTGD_somOffsets */
#endif /* SOM_DONT_USE_SHORT_NAMES */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_somIdSequence
    #ifdef somIdSequence
        #undef somIdSequence
        #define SOMTGD_somIdSequence 1
    #else
        #define somIdSequence SOMClass_somIdSequence
    #endif /* somIdSequence */
#endif /* SOMTGD_somIdSequence */
#endif /* SOM_DONT_USE_SHORT_NAMES */
#endif /* SOM_DONT_USE_SHORT_NAMES */

/*
 * End of bindings for IDL types.
 */

/*
 * A function to create the SOMClass class object...
 */
SOMEXTERN SOM_IMPORTEXPORT_som_somcls SOMClass * SOMLINK SOMClassNewClass(
		integer4 majorVersion,
		integer4 minorVersion);


/*
 * The API 2 ClassData Structures...
 */
SOMEXTERN struct SOMClassClassDataStructure {
	SOMClass *classObject;
	somMToken somNew;
	somMToken somRenew;
	somMToken somcPrivate1;
	somMToken somClassReady;
	somMToken somGetName;
	somMToken somcPrivate2;
	somMToken somDescendedFrom;
	somMToken somCheckVersion;
	somMToken somFindMethod;
	somMToken somFindMethodOk;
	somMToken somSupportsMethod;
	somMToken somGetNumMethods;
	somMToken somGetInstanceSize;
	somMToken somcPrivate3;
	somMToken somGetInstancePartSize;
	somMToken somGetMethodIndex;
	somMToken somGetNumStaticMethods;
	somMToken somGetPClsMtab;
	somMToken somGetClassMtab;
	somMToken somAddStaticMethod;
	somMToken somOverrideSMethod;
	somMToken somAddDynamicMethod;
	somMToken somcUnused1;
	somMToken somGetApplyStub;
	somMToken somFindSMethod;
	somMToken somFindSMethodOk;
	somMToken somGetMethodDescriptor;
	somMToken somGetNthMethodInfo;
	somMToken somSetClassData;
	somMToken somGetClassData;
	somMToken somNewNoInit;
	somMToken somRenewNoInit;
	somMToken somGetInstanceToken;
	somMToken somGetMemberToken;
	somMToken somcUnused2;
	somMToken somGetMethodData;
	somMToken somOverrideMtab;
	somMToken somGetMethodToken;
	somMToken somGetParents;
	somMToken somUnused3;
	somMToken somInitMIClass;
	somMToken somGetVersionNumbers;
	somMToken somLookupMethod;
	somMToken _get_somInstanceDataOffsets;
	somMToken somRenewNoZero;
	somMToken somRenewNoInitNoZero;
	somMToken somAllocate;
	somMToken somDeallocate;
	somMToken somGetRdStub;
	somMToken somGetNthMethodData;
	somMToken somcPrivate8;
	somMToken somcPrivate9;
	somMToken _get_somDirectInitClasses;
	somMToken somcPrivate10;
	somMToken somcPrivate11;
	somMToken somcPrivate12;
	somMToken somcPrivate13;
	somMToken somcPrivate14;
	somMToken somMethodImplOwner;
	somMToken somcPrivate15;
	somMToken somcPrivate16;
	somMToken somDefinedMethod;
	somMToken somcPrivate17;
	somMToken somcPrivate18;
	somMToken somcPrivate19;
	somMethodProc *somClassOfNewClassWithParents;
	somMToken somcPrivate20;
	somMToken somcUnused5;
	somMToken somcUnused6;
	somMToken somcUnused7;
	somMToken _get_somDataAlignment;
	somMToken somcPrivate21;
	somMToken somcUnused8;
	somMToken somcPrivate22;
	somMToken somcUnused9;
	somMToken somcUnused10;
	somMToken somGetMarshalPlan;
	somMToken somcUnused11;
	somMToken somPrivate23;
	somMToken somJoin;
	somMToken somEndow;
} SOMDLINK SOM_IMPORTEXPORT_som_somcls SOMClassClassData;
SOMEXTERN struct SOMClassCClassDataStructure {
	som3ClassDetailsPtr    parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK SOM_IMPORTEXPORT_som_somcls SOMClassCClassData;


/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_SOMClass (SOMClassClassData.classObject)
#ifndef SOMGD_SOMClass
    #if (defined(_SOMClass) || defined(__SOMClass))
        #undef _SOMClass
        #undef __SOMClass
        #define SOMGD_SOMClass 1
    #else
        #define _SOMClass _SOMCLASS_SOMClass
    #endif /* _SOMClass */
#endif /* SOMGD_SOMClass */
#define SOMClass_classObj _SOMCLASS_SOMClass
#define _SOMMTOKEN_SOMClass(method) ((somMToken)SOMClassClassData.method)

/*
 * -- Typedefs for SOMClass Method Procedures
 */
SOMEXTERN {
typedef SOMObject*   SOMLINK somTP_SOMClass_somNew(SOMClass *somSelf);
typedef somTP_SOMClass_somNew *somTD_SOMClass_somNew;
typedef SOMObject*   SOMLINK somTP_SOMClass_somNewNoInit(SOMClass *somSelf);
typedef somTP_SOMClass_somNewNoInit *somTD_SOMClass_somNewNoInit;
typedef SOMObject*   SOMLINK somTP_SOMClass_somRenew(SOMClass *somSelf, 
		void* obj);
typedef somTP_SOMClass_somRenew *somTD_SOMClass_somRenew;
typedef SOMObject*   SOMLINK somTP_SOMClass_somRenewNoInit(SOMClass *somSelf, 
		void* obj);
typedef somTP_SOMClass_somRenewNoInit *somTD_SOMClass_somRenewNoInit;
typedef SOMObject*   SOMLINK somTP_SOMClass_somRenewNoZero(SOMClass *somSelf, 
		void* obj);
typedef somTP_SOMClass_somRenewNoZero *somTD_SOMClass_somRenewNoZero;
typedef SOMObject*   SOMLINK somTP_SOMClass_somRenewNoInitNoZero(SOMClass *somSelf, 
		void* obj);
typedef somTP_SOMClass_somRenewNoInitNoZero *somTD_SOMClass_somRenewNoInitNoZero;
typedef somToken   SOMLINK somTP_SOMClass_somAllocate(SOMClass *somSelf, 
		long size);
typedef somTP_SOMClass_somAllocate *somTD_SOMClass_somAllocate;
typedef void   SOMLINK somTP_SOMClass_somDeallocate(SOMClass *somSelf, 
		somToken memptr);
typedef somTP_SOMClass_somDeallocate *somTD_SOMClass_somDeallocate;
typedef SOMClass*   SOMLINK somTP_SOMClass_somJoin(SOMClass *somSelf, 
		SOMClass* secondParent, 
		string nameOfNewClass);
typedef somTP_SOMClass_somJoin *somTD_SOMClass_somJoin;
typedef SOMClass*   SOMLINK somTP_SOMClass_somEndow(SOMClass *somSelf, 
		SOMClass* parent, 
		string nameOfNewClass);
typedef somTP_SOMClass_somEndow *somTD_SOMClass_somEndow;
typedef SOMClass*   SOMLINK somTP_SOMClass_somClassOfNewClassWithParents(string newClassName, 
		SOMClass_SOMClassSequence* parents, 
		SOMClass* explicitMeta);
typedef somTP_SOMClass_somClassOfNewClassWithParents *somTD_SOMClass_somClassOfNewClassWithParents;
typedef void   SOMLINK somTP_SOMClass_somInitMIClass(SOMClass *somSelf, 
		unsigned long inherit_vars, 
		string className, 
		SOMClass_SOMClassSequence* parentClasses, 
		long dataSize, 
		long dataAlignment, 
		long maxNDMethods, 
		long majorVersion, 
		long minorVersion);
typedef somTP_SOMClass_somInitMIClass *somTD_SOMClass_somInitMIClass;
typedef somMToken   SOMLINK somTP_SOMClass_somAddStaticMethod(SOMClass *somSelf, 
		somId methodId, 
		somId methodDescriptor, 
		somMethodPtr method, 
		somMethodPtr redispatchStub, 
		somMethodPtr applyStub);
typedef somTP_SOMClass_somAddStaticMethod *somTD_SOMClass_somAddStaticMethod;
typedef void   SOMLINK somTP_SOMClass_somOverrideSMethod(SOMClass *somSelf, 
		somId methodId, 
		somMethodPtr method);
typedef somTP_SOMClass_somOverrideSMethod *somTD_SOMClass_somOverrideSMethod;
typedef void   SOMLINK somTP_SOMClass_somClassReady(SOMClass *somSelf);
typedef somTP_SOMClass_somClassReady *somTD_SOMClass_somClassReady;
typedef void   SOMLINK somTP_SOMClass_somAddDynamicMethod(SOMClass *somSelf, 
		somId methodId, 
		somId methodDescriptor, 
		somMethodPtr methodImpl, 
		somMethodPtr applyStub);
typedef somTP_SOMClass_somAddDynamicMethod *somTD_SOMClass_somAddDynamicMethod;
typedef string   SOMLINK somTP_SOMClass_somGetName(SOMClass *somSelf);
typedef somTP_SOMClass_somGetName *somTD_SOMClass_somGetName;
typedef void   SOMLINK somTP_SOMClass_somGetVersionNumbers(SOMClass *somSelf, 
		long* majorVersion, 
		long* minorVersion);
typedef somTP_SOMClass_somGetVersionNumbers *somTD_SOMClass_somGetVersionNumbers;
typedef long   SOMLINK somTP_SOMClass_somGetNumMethods(SOMClass *somSelf);
typedef somTP_SOMClass_somGetNumMethods *somTD_SOMClass_somGetNumMethods;
typedef long   SOMLINK somTP_SOMClass_somGetNumStaticMethods(SOMClass *somSelf);
typedef somTP_SOMClass_somGetNumStaticMethods *somTD_SOMClass_somGetNumStaticMethods;
typedef SOMClass_SOMClassSequence   SOMLINK somTP_SOMClass_somGetParents(SOMClass *somSelf);
typedef somTP_SOMClass_somGetParents *somTD_SOMClass_somGetParents;
typedef long   SOMLINK somTP_SOMClass_somGetInstanceSize(SOMClass *somSelf);
typedef somTP_SOMClass_somGetInstanceSize *somTD_SOMClass_somGetInstanceSize;
typedef long   SOMLINK somTP_SOMClass_somGetInstancePartSize(SOMClass *somSelf);
typedef somTP_SOMClass_somGetInstancePartSize *somTD_SOMClass_somGetInstancePartSize;
typedef somDToken   SOMLINK somTP_SOMClass_somGetInstanceToken(SOMClass *somSelf);
typedef somTP_SOMClass_somGetInstanceToken *somTD_SOMClass_somGetInstanceToken;
typedef somDToken   SOMLINK somTP_SOMClass_somGetMemberToken(SOMClass *somSelf, 
		long memberOffset, 
		somDToken instanceToken);
typedef somTP_SOMClass_somGetMemberToken *somTD_SOMClass_somGetMemberToken;
typedef somMethodTab*   SOMLINK somTP_SOMClass_somGetClassMtab(SOMClass *somSelf);
typedef somTP_SOMClass_somGetClassMtab *somTD_SOMClass_somGetClassMtab;
typedef somClassDataStructurePtr   SOMLINK somTP_SOMClass_somGetClassData(SOMClass *somSelf);
typedef somTP_SOMClass_somGetClassData *somTD_SOMClass_somGetClassData;
typedef void   SOMLINK somTP_SOMClass_somSetClassData(SOMClass *somSelf, 
		somClassDataStructurePtr cds);
typedef somTP_SOMClass_somSetClassData *somTD_SOMClass_somSetClassData;
typedef long   SOMLINK somTP_SOMClass__get_somDataAlignment(SOMClass *somSelf);
typedef somTP_SOMClass__get_somDataAlignment *somTD_SOMClass__get_somDataAlignment;
typedef SOMClass_somOffsets   SOMLINK somTP_SOMClass__get_somInstanceDataOffsets(SOMClass *somSelf);
typedef somTP_SOMClass__get_somInstanceDataOffsets *somTD_SOMClass__get_somInstanceDataOffsets;
typedef SOMClass_SOMClassSequence   SOMLINK somTP_SOMClass__get_somDirectInitClasses(SOMClass *somSelf);
typedef somTP_SOMClass__get_somDirectInitClasses *somTD_SOMClass__get_somDirectInitClasses;
typedef somId   SOMLINK somTP_SOMClass_somGetMethodDescriptor(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somGetMethodDescriptor *somTD_SOMClass_somGetMethodDescriptor;
typedef long   SOMLINK somTP_SOMClass_somGetMethodIndex(SOMClass *somSelf, 
		somId id);
typedef somTP_SOMClass_somGetMethodIndex *somTD_SOMClass_somGetMethodIndex;
typedef somMToken   SOMLINK somTP_SOMClass_somGetMethodToken(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somGetMethodToken *somTD_SOMClass_somGetMethodToken;
typedef somId   SOMLINK somTP_SOMClass_somGetNthMethodInfo(SOMClass *somSelf, 
		long n, 
		somId* descriptor);
typedef somTP_SOMClass_somGetNthMethodInfo *somTD_SOMClass_somGetNthMethodInfo;
typedef somToken   SOMLINK somTP_SOMClass_somGetMarshalPlan(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somGetMarshalPlan *somTD_SOMClass_somGetMarshalPlan;
typedef boolean   SOMLINK somTP_SOMClass_somGetMethodData(SOMClass *somSelf, 
		somId methodId, 
		somMethodData* md);
typedef somTP_SOMClass_somGetMethodData *somTD_SOMClass_somGetMethodData;
typedef boolean   SOMLINK somTP_SOMClass_somGetNthMethodData(SOMClass *somSelf, 
		long n, 
		somMethodData* md);
typedef somTP_SOMClass_somGetNthMethodData *somTD_SOMClass_somGetNthMethodData;
typedef boolean   SOMLINK somTP_SOMClass_somFindMethod(SOMClass *somSelf, 
		somId methodId, 
		somMethodPtr* m);
typedef somTP_SOMClass_somFindMethod *somTD_SOMClass_somFindMethod;
typedef boolean   SOMLINK somTP_SOMClass_somFindMethodOk(SOMClass *somSelf, 
		somId methodId, 
		somMethodPtr* m);
typedef somTP_SOMClass_somFindMethodOk *somTD_SOMClass_somFindMethodOk;
typedef somMethodPtr   SOMLINK somTP_SOMClass_somFindSMethod(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somFindSMethod *somTD_SOMClass_somFindSMethod;
typedef somMethodPtr   SOMLINK somTP_SOMClass_somFindSMethodOk(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somFindSMethodOk *somTD_SOMClass_somFindSMethodOk;
typedef somMethodPtr   SOMLINK somTP_SOMClass_somLookupMethod(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somLookupMethod *somTD_SOMClass_somLookupMethod;
typedef somMethodPtr   SOMLINK somTP_SOMClass_somGetApplyStub(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somGetApplyStub *somTD_SOMClass_somGetApplyStub;
typedef somMethodTabs   SOMLINK somTP_SOMClass_somGetPClsMtab(SOMClass *somSelf);
typedef somTP_SOMClass_somGetPClsMtab *somTD_SOMClass_somGetPClsMtab;
typedef boolean   SOMLINK somTP_SOMClass_somCheckVersion(SOMClass *somSelf, 
		long majorVersion, 
		long minorVersion);
typedef somTP_SOMClass_somCheckVersion *somTD_SOMClass_somCheckVersion;
typedef boolean   SOMLINK somTP_SOMClass_somDescendedFrom(SOMClass *somSelf, 
		SOMClass* aClassObj);
typedef somTP_SOMClass_somDescendedFrom *somTD_SOMClass_somDescendedFrom;
typedef boolean   SOMLINK somTP_SOMClass_somSupportsMethod(SOMClass *somSelf, 
		somId mId);
typedef somTP_SOMClass_somSupportsMethod *somTD_SOMClass_somSupportsMethod;
typedef somMethodPtr   SOMLINK somTP_SOMClass_somDefinedMethod(SOMClass *somSelf, 
		somMToken method);
typedef somTP_SOMClass_somDefinedMethod *somTD_SOMClass_somDefinedMethod;
typedef SOMClass*   SOMLINK somTP_SOMClass_somMethodImplOwner(SOMClass *somSelf, 
		somMethodData* md);
typedef somTP_SOMClass_somMethodImplOwner *somTD_SOMClass_somMethodImplOwner;
typedef somMethodProc*   SOMLINK somTP_SOMClass_somGetRdStub(SOMClass *somSelf, 
		somId methodId);
typedef somTP_SOMClass_somGetRdStub *somTD_SOMClass_somGetRdStub;
typedef void   SOMLINK somTP_SOMClass_somOverrideMtab(SOMClass *somSelf);
typedef somTP_SOMClass_somOverrideMtab *somTD_SOMClass_somOverrideMtab;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef void   SOMLINK somTP_SOMClass_somDefaultInit(SOMClass *somSelf, 
		som3InitCtrl* ctrl);
typedef somTP_SOMClass_somDefaultInit *somTD_SOMClass_somDefaultInit;
typedef void   SOMLINK somTP_SOMClass_somDestruct(SOMClass *somSelf, 
		octet doFree, 
		som3DestructCtrl* ctrl);
typedef somTP_SOMClass_somDestruct *somTD_SOMClass_somDestruct;
typedef void   SOMLINK somTP_SOMClass_somDefaultCopyInit(SOMClass *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultCopyInit *somTD_SOMClass_somDefaultCopyInit;
typedef SOMClass*   SOMLINK somTP_SOMClass_somDefaultAssign(SOMClass *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultAssign *somTD_SOMClass_somDefaultAssign;
typedef void   SOMLINK somTP_SOMClass_somDefaultConstCopyInit(SOMClass *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultConstCopyInit *somTD_SOMClass_somDefaultConstCopyInit;
typedef void   SOMLINK somTP_SOMClass_somDefaultVCopyInit(SOMClass *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultVCopyInit *somTD_SOMClass_somDefaultVCopyInit;
typedef void   SOMLINK somTP_SOMClass_somDefaultConstVCopyInit(SOMClass *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultConstVCopyInit *somTD_SOMClass_somDefaultConstVCopyInit;
typedef SOMClass*   SOMLINK somTP_SOMClass_somDefaultConstAssign(SOMClass *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultConstAssign *somTD_SOMClass_somDefaultConstAssign;
typedef SOMClass*   SOMLINK somTP_SOMClass_somDefaultVAssign(SOMClass *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultVAssign *somTD_SOMClass_somDefaultVAssign;
typedef SOMClass*   SOMLINK somTP_SOMClass_somDefaultConstVAssign(SOMClass *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMClass_somDefaultConstVAssign *somTD_SOMClass_somDefaultConstVAssign;
typedef void   SOMLINK somTP_SOMClass_somInit(SOMClass *somSelf);
typedef somTP_SOMClass_somInit *somTD_SOMClass_somInit;
typedef void   SOMLINK somTP_SOMClass_somUninit(SOMClass *somSelf);
typedef somTP_SOMClass_somUninit *somTD_SOMClass_somUninit;
typedef void   SOMLINK somTP_SOMClass_somFree(SOMClass *somSelf);
typedef somTP_SOMClass_somFree *somTD_SOMClass_somFree;
typedef SOMClass*   SOMLINK somTP_SOMClass_somGetClass(SOMClass *somSelf);
typedef somTP_SOMClass_somGetClass *somTD_SOMClass_somGetClass;
typedef string   SOMLINK somTP_SOMClass_somGetClassName(SOMClass *somSelf);
typedef somTP_SOMClass_somGetClassName *somTD_SOMClass_somGetClassName;
typedef long   SOMLINK somTP_SOMClass_somGetSize(SOMClass *somSelf);
typedef somTP_SOMClass_somGetSize *somTD_SOMClass_somGetSize;
typedef boolean   SOMLINK somTP_SOMClass_somIsA(SOMClass *somSelf, 
		SOMClass* aClassObj);
typedef somTP_SOMClass_somIsA *somTD_SOMClass_somIsA;
typedef boolean   SOMLINK somTP_SOMClass_somIsInstanceOf(SOMClass *somSelf, 
		SOMClass* aClassObj);
typedef somTP_SOMClass_somIsInstanceOf *somTD_SOMClass_somIsInstanceOf;
typedef boolean   SOMLINK somTP_SOMClass_somRespondsTo(SOMClass *somSelf, 
		somId mId);
typedef somTP_SOMClass_somRespondsTo *somTD_SOMClass_somRespondsTo;
typedef boolean   SOMLINK somTP_SOMClass_somDispatch(SOMClass *somSelf, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_SOMClass_somDispatch *somTD_SOMClass_somDispatch;
typedef boolean   SOMLINK somTP_SOMClass_somClassDispatch(SOMClass *somSelf, 
		SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_SOMClass_somClassDispatch *somTD_SOMClass_somClassDispatch;
typedef boolean   SOMLINK somTP_SOMClass_somCastObj(SOMClass *somSelf, 
		SOMClass* castedCls);
typedef somTP_SOMClass_somCastObj *somTD_SOMClass_somCastObj;
typedef boolean   SOMLINK somTP_SOMClass_somResetObj(SOMClass *somSelf);
typedef somTP_SOMClass_somResetObj *somTD_SOMClass_somResetObj;
typedef SOMClass*   SOMLINK somTP_SOMClass_somPrintSelf(SOMClass *somSelf);
typedef somTP_SOMClass_somPrintSelf *somTD_SOMClass_somPrintSelf;
typedef void   SOMLINK somTP_SOMClass_somDumpSelf(SOMClass *somSelf, 
		long level);
typedef somTP_SOMClass_somDumpSelf *somTD_SOMClass_somDumpSelf;
typedef void   SOMLINK somTP_SOMClass_somDumpSelfInt(SOMClass *somSelf, 
		long level);
typedef somTP_SOMClass_somDumpSelfInt *somTD_SOMClass_somDumpSelfInt;
}

#endif /* SOMClass_API */
