
/*
 * This file was generated by the SOM Compiler.
 * FileName: page.ih.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emitih.dll: 2.77.1.179
 */

/*
 *   This class is adapted from the book
 *     Class Construction in C and C++, Object Oriented Fundamentals
 *     by Roger Sessions, Copyright (c) 1992 Prentice Hall.
 *   Reprinted with permission.
 */


/*
 * The SOM_STRICT_IDL macro means that we can ignore stars
 * in our declarations of objects.
 */
#define SOM_STRICT_IDL 1


#ifndef SOM_page_ih
#define SOM_page_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_page_h
#include "page.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef struct {
	long height;
	long width;
	long ncolumns;
	long currentCol;
	long pageNumber;
	textLine header;
	textLine footer;
	columnBlock columns;
	TPWord pageWord;
} __somC_page_ProtectedPrivateData;
typedef __somC_page_ProtectedPrivateData pageData, *pageDataPtr;

/*
 * -- GetData macro
 */
typedef pageDataPtr SOMLINK somTP_page_DataThunk(void*);
typedef somTP_page_DataThunk *somTD_page_DataThunk;

#define pageGetData(somSelf) \
   (((somTD_page_DataThunk)(pageCClassData.instanceDataToken))(somSelf))
#define _height somThis->height
#define _width somThis->width
#define _ncolumns somThis->ncolumns
#define _currentCol somThis->currentCol
#define _pageNumber somThis->pageNumber
#define _header somThis->header
#define _footer somThis->footer
#define _columns somThis->columns
#define _pageWord somThis->pageWord

/*
 * -- Primary Implementation File Support
 */
#if (defined(page_Class_Source) || defined(SOM_Module_page_Source))

#ifndef pageMethodDebug
   #define pageMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* pageMethodDebug */

static void SOMLINK __somC_page_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct pageClassDataStructure SOMDLLEXPORT SOMDLINK pageClassData = {0};
struct pageCClassDataStructure SOMDLLEXPORT SOMDLINK pageCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_page0[] = {"page"}; /* class name */
static char __somC_Strings_page1[] = {"pgPrint"}; /* method name */
static char __somC_Strings_page2[] = {"pgSetHeight"}; /* method name */
static char __somC_Strings_page3[] = {"pgSetWidth"}; /* method name */
static char __somC_Strings_page4[] = {"pgSetNumberOfColumns"}; /* method name */
static char __somC_Strings_page5[] = {"pgSetPageNumber"}; /* method name */
static char __somC_Strings_page6[] = {"pgGetColumnBlock"}; /* method name */
static char __somC_Strings_page7[] = {"pgGetHeaderBlock"}; /* method name */
static char __somC_Strings_page8[] = {"pgGetFooterBlock"}; /* method name */
static char __somC_Strings_page9[] = {"SOMObject"}; /* parent name */
static char __somC_Strings_page10[] = {"somInit"}; /* overridden method name */
static char __somC_Strings_page11[] = {"somUninit"}; /* overridden method name */
static char __somC_Strings_page12[] = {"somDumpSelfInt"}; /* overridden method name */
static char * __somC_page_regIdsArray[] = {
	__somC_Strings_page0,
#ifndef __somC_page_regIds_pgPrint
#define __somC_page_regIds_pgPrint 1
#endif
	__somC_Strings_page1,
#ifndef __somC_page_regIds_pgSetHeight
#define __somC_page_regIds_pgSetHeight 2
#endif
	__somC_Strings_page2,
#ifndef __somC_page_regIds_pgSetWidth
#define __somC_page_regIds_pgSetWidth 3
#endif
	__somC_Strings_page3,
#ifndef __somC_page_regIds_pgSetNumberOfColumns
#define __somC_page_regIds_pgSetNumberOfColumns 4
#endif
	__somC_Strings_page4,
#ifndef __somC_page_regIds_pgSetPageNumber
#define __somC_page_regIds_pgSetPageNumber 5
#endif
	__somC_Strings_page5,
#ifndef __somC_page_regIds_pgGetColumnBlock
#define __somC_page_regIds_pgGetColumnBlock 6
#endif
	__somC_Strings_page6,
#ifndef __somC_page_regIds_pgGetHeaderBlock
#define __somC_page_regIds_pgGetHeaderBlock 7
#endif
	__somC_Strings_page7,
#ifndef __somC_page_regIds_pgGetFooterBlock
#define __somC_page_regIds_pgGetFooterBlock 8
#endif
	__somC_Strings_page8,
	__somC_Strings_page9,
#ifndef __somC_page_regIds_somInit
#define __somC_page_regIds_somInit 10
#endif
	__somC_Strings_page10,
#ifndef __somC_page_regIds_somUninit
#define __somC_page_regIds_somUninit 11
#endif
	__somC_Strings_page11,
#ifndef __somC_page_regIds_somDumpSelfInt
#define __somC_page_regIds_somDumpSelfInt 12
#endif
	__somC_Strings_page12
};


/*
 * Overridden method: somInit
 */
SOM_Scope void  SOMLINK somInit(page somSelf);
/* pcalls for somInit/somUninit are turned off */
#define page_parent_SOMObject_somInit(__somSelf) 
#ifndef parent_SOMObject_somInit
   #define parent_SOMObject_somInit(__somSelf) 
#endif
#ifndef parent_somInit
   #define parent_somInit(__somSelf) 
#endif
#define page_parents_somInit(__somSelf) 

/*
 * Overridden method: somUninit
 */
SOM_Scope void  SOMLINK somUninit(page somSelf);
/* pcalls for somInit/somUninit are turned off */
#define page_parent_SOMObject_somUninit(__somSelf) 
#ifndef parent_SOMObject_somUninit
   #define parent_SOMObject_somUninit(__somSelf) 
#endif
#ifndef parent_somUninit
   #define parent_somUninit(__somSelf) 
#endif
#define page_parents_somUninit(__somSelf) 

/*
 * Overridden method: somDumpSelfInt
 */
SOM_Scope void  SOMLINK somDumpSelfInt(page somSelf,
		long level);
static somMethodProc* page_parent_SOMObject_somDumpSelfInt_resolved;
#define page_parent_SOMObject_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    page_parent_SOMObject_somDumpSelfInt_resolved)(somSelf,level))
#ifndef SOMGD_pmc_SOMObject_somDumpSelfInt
  #ifdef parent_SOMObject_somDumpSelfInt
     #define SOMGD_pmc_SOMObject_somDumpSelfInt 1
     #undef parent_SOMObject_somDumpSelfInt
  #else
     #define parent_SOMObject_somDumpSelfInt page_parent_SOMObject_somDumpSelfInt
  #endif /* parent_SOMObject_somDumpSelfInt */
#endif /* SOMGD_pmc_SOMObject_somDumpSelfInt */
#ifndef SOMGD_pmc_parent_somDumpSelfInt
  #ifdef parent_somDumpSelfInt
    #define SOMGD_pmc_parent_somDumpSelfInt
    #undef parent_somDumpSelfInt
  #else
#define parent_somDumpSelfInt page_parent_SOMObject_somDumpSelfInt
  #endif
#endif
#define page_parents_somDumpSelfInt(somSelf,level) (\
   page_parent_SOMObject_somDumpSelfInt(somSelf,level))
#define SOMPCALLpage_somDumpSelfInt
static somMethodProc* page_pcall_somDumpSelfInt_resolved;
#define page_pcall_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    page_pcall_somDumpSelfInt_resolved)(somSelf,level))
static void  SOMLINK page_pcallResolve_somDumpSelfInt(page somSelf,
		long level)
{
   ((somTD_SOMObject_somDumpSelfInt) 
      somPCallResolve(somSelf, _page, _SOMMTOKEN_SOMObject(somDumpSelfInt)))(somSelf,level);
}


/*
 * New Method: pgPrint
 */
SOM_Scope void  SOMLINK pgPrint(page somSelf,
		FILE* output);
#ifndef somId_pgPrint
#define somId_pgPrint ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgPrint]))
#endif
#define SOM_MPR_MINFO_pgPrint {0, 8, 0}
static somMethodInfo pgPrintMethodInfo = {0, 8, 0};
#define pgPrint_somMethodInfoValue &pgPrintMethodInfo
#define pgPrint_somApplyStubValue 0
#define pgPrint_somHasMPlan 0

/*
 * New Method: pgSetHeight
 */
SOM_Scope void  SOMLINK pgSetHeight(page somSelf,
		long newHeight);
/*
 *  Set the height of a page in characters.
 */
#ifndef somId_pgSetHeight
#define somId_pgSetHeight ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgSetHeight]))
#endif
#define SOM_MPR_MINFO_pgSetHeight {0, 8, 0}
static somMpRowMethodInfo page_pgSetHeight_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_pgSetHeight};
#ifndef DEFINEDpage_pgSetHeight_mp
#define DEFINEDpage_pgSetHeight_mp
/*[ ::page::pgSetHeight page_pgSetHeight_mp ]*/
/* Contract specification:
[CALLTYPE_OIDL (1)][VERSION 0]
ARG 0[in]: Long
*/
static struct { void * rows; unsigned char csr[4]; } page_pgSetHeight_mp={&page_pgSetHeight_mp_minfoRow, {
0x81, 0x01, 0x43},
};
#endif
#define pgSetHeight_somMethodInfoValue 0
#define pgSetHeight_somApplyStubValue &page_pgSetHeight_mp.csr
#define pgSetHeight_somHasMPlan 8

/*
 * New Method: pgSetWidth
 */
SOM_Scope void  SOMLINK pgSetWidth(page somSelf,
		long newWidth);
/*
 *  Set the width of a page in characters.
 */
#ifndef somId_pgSetWidth
#define somId_pgSetWidth ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgSetWidth]))
#endif
#define SOM_MPR_MINFO_pgSetWidth {0, 8, 0}
static somMpRowMethodInfo page_pgSetWidth_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_pgSetWidth};
#ifndef DEFINEDpage_pgSetWidth_mp
#define DEFINEDpage_pgSetWidth_mp
/*[ ::page::pgSetWidth page_pgSetWidth_mp ]*/
/* Contract specification:
[CALLTYPE_OIDL (1)][VERSION 0]
ARG 0[in]: Long
*/
static struct { void * rows; unsigned char csr[4]; } page_pgSetWidth_mp={&page_pgSetWidth_mp_minfoRow, {
0x81, 0x01, 0x43},
};
#endif
#define pgSetWidth_somMethodInfoValue 0
#define pgSetWidth_somApplyStubValue &page_pgSetWidth_mp.csr
#define pgSetWidth_somHasMPlan 8

/*
 * New Method: pgSetNumberOfColumns
 */
SOM_Scope void  SOMLINK pgSetNumberOfColumns(page somSelf,
		long ncolumns);
/*
 *  Set the number of columns in a page.
 */
#ifndef somId_pgSetNumberOfColumns
#define somId_pgSetNumberOfColumns ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgSetNumberOfColumns]))
#endif
#define SOM_MPR_MINFO_pgSetNumberOfColumns {0, 8, 0}
static somMpRowMethodInfo page_pgSetNumberOfColumns_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_pgSetNumberOfColumns};
#ifndef DEFINEDpage_pgSetNumberOfColumns_mp
#define DEFINEDpage_pgSetNumberOfColumns_mp
/*[ ::page::pgSetNumberOfColumns page_pgSetNumberOfColumns_mp ]*/
/* Contract specification:
[CALLTYPE_OIDL (1)][VERSION 0]
ARG 0[in]: Long
*/
static struct { void * rows; unsigned char csr[4]; } page_pgSetNumberOfColumns_mp={&page_pgSetNumberOfColumns_mp_minfoRow, {
0x81, 0x01, 0x43},
};
#endif
#define pgSetNumberOfColumns_somMethodInfoValue 0
#define pgSetNumberOfColumns_somApplyStubValue &page_pgSetNumberOfColumns_mp.csr
#define pgSetNumberOfColumns_somHasMPlan 8

/*
 * New Method: pgSetPageNumber
 */
SOM_Scope void  SOMLINK pgSetPageNumber(page somSelf,
		TPWord newPageWord);
/*
 *  Tell the page about a special word to be used to
 *  store page numbers.
 */
#ifndef somId_pgSetPageNumber
#define somId_pgSetPageNumber ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgSetPageNumber]))
#endif
#define SOM_MPR_MINFO_pgSetPageNumber {0, 8, 0}
static somMpRowMethodInfo page_pgSetPageNumber_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_pgSetPageNumber};
#ifndef DEFINEDpage_pgSetPageNumber_mp
#define DEFINEDpage_pgSetPageNumber_mp
/*[ ::page::pgSetPageNumber page_pgSetPageNumber_mp ]*/
/* Contract specification:
[CALLTYPE_OIDL (1)][VERSION 0]
ARG 0[in]: ObjREF
*/
static struct { void * rows; unsigned char csr[4]; } page_pgSetPageNumber_mp={&page_pgSetPageNumber_mp_minfoRow, {
0x81, 0x01, 0x56},
};
#endif
#define pgSetPageNumber_somMethodInfoValue 0
#define pgSetPageNumber_somApplyStubValue &page_pgSetPageNumber_mp.csr
#define pgSetPageNumber_somHasMPlan 8

/*
 * New Method: pgGetColumnBlock
 */
SOM_Scope columnBlock  SOMLINK pgGetColumnBlock(page somSelf);
/*
 *  Get the columnBlock being used by this page.
 */
#ifndef somId_pgGetColumnBlock
#define somId_pgGetColumnBlock ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgGetColumnBlock]))
#endif
/* Contract specification:
[CALLTYPE_OIDL (1)][RESULT][VERSION 0]
RESULT[out]: ObjREF
*/
#define pgGetColumnBlock_somMethodInfoValue 0
#define pgGetColumnBlock_somApplyStubValue 0x960105
#define pgGetColumnBlock_somHasMPlan 24

/*
 * New Method: pgGetHeaderBlock
 */
SOM_Scope textLine  SOMLINK pgGetHeaderBlock(page somSelf);
/*
 *  Get the textLine representing the page header.
 */
#ifndef somId_pgGetHeaderBlock
#define somId_pgGetHeaderBlock ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgGetHeaderBlock]))
#endif
/* Contract specification:
[CALLTYPE_OIDL (1)][RESULT][VERSION 0]
RESULT[out]: ObjREF
*/
#define pgGetHeaderBlock_somMethodInfoValue 0
#define pgGetHeaderBlock_somApplyStubValue 0x960105
#define pgGetHeaderBlock_somHasMPlan 24

/*
 * New Method: pgGetFooterBlock
 */
SOM_Scope textLine  SOMLINK pgGetFooterBlock(page somSelf);
/*
 *  Get the textLine representing the page footer.
 */
#ifndef somId_pgGetFooterBlock
#define somId_pgGetFooterBlock ((somId)&(__somC_page_regIdsArray[__somC_page_regIds_pgGetFooterBlock]))
#endif
/* Contract specification:
[CALLTYPE_OIDL (1)][RESULT][VERSION 0]
RESULT[out]: ObjREF
*/
#define pgGetFooterBlock_somMethodInfoValue 0
#define pgGetFooterBlock_somApplyStubValue 0x960105
#define pgGetFooterBlock_somHasMPlan 24

/*
 * Functions for attributes.
 */

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_page_parentArray[] = {
	NULL,
};
void * __somC_page_parentMtabs[1];

somMethodDefn __somC_page_newNDMethodsArray[] = {
	{  (0 | pgPrint_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgPrint, 
	   0, (somMethodPtr)pgPrint_somApplyStubValue, 
	   (somMethodInfo *) pgPrint_somMethodInfoValue, &pageClassData.pgPrint, 0, 1 },
	{  (0 | pgSetHeight_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgSetHeight, 
	   0, (somMethodPtr)pgSetHeight_somApplyStubValue, 
	   (somMethodInfo *) pgSetHeight_somMethodInfoValue, &pageClassData.pgSetHeight, 0, 1 },
	{  (0 | pgSetWidth_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgSetWidth, 
	   0, (somMethodPtr)pgSetWidth_somApplyStubValue, 
	   (somMethodInfo *) pgSetWidth_somMethodInfoValue, &pageClassData.pgSetWidth, 0, 1 },
	{  (0 | pgSetNumberOfColumns_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgSetNumberOfColumns, 
	   0, (somMethodPtr)pgSetNumberOfColumns_somApplyStubValue, 
	   (somMethodInfo *) pgSetNumberOfColumns_somMethodInfoValue, &pageClassData.pgSetNumberOfColumns, 0, 1 },
	{  (0 | pgSetPageNumber_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgSetPageNumber, 
	   0, (somMethodPtr)pgSetPageNumber_somApplyStubValue, 
	   (somMethodInfo *) pgSetPageNumber_somMethodInfoValue, &pageClassData.pgSetPageNumber, 0, 1 },
	{  (0 | pgGetColumnBlock_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgGetColumnBlock, 
	   0, (somMethodPtr)pgGetColumnBlock_somApplyStubValue, 
	   (somMethodInfo *) pgGetColumnBlock_somMethodInfoValue, &pageClassData.pgGetColumnBlock, 0, 1 },
	{  (0 | pgGetHeaderBlock_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgGetHeaderBlock, 
	   0, (somMethodPtr)pgGetHeaderBlock_somApplyStubValue, 
	   (somMethodInfo *) pgGetHeaderBlock_somMethodInfoValue, &pageClassData.pgGetHeaderBlock, 0, 1 },
	{  (0 | pgGetFooterBlock_somHasMPlan), 0, (somMToken)0, (somMethodPtr)pgGetFooterBlock, 
	   0, (somMethodPtr)pgGetFooterBlock_somApplyStubValue, 
	   (somMethodInfo *) pgGetFooterBlock_somMethodInfoValue, &pageClassData.pgGetFooterBlock, 0, 1 }
};

static somOverrideMethod_t2 __somC_page_overridesArray[] = {
{ &(__somC_page_regIdsArray[__somC_page_regIds_somInit]), 
#ifdef SOMPCALLpage_somInit
   (somMethodPtr*)&page_pcall_somInit_resolved, 
   (somMethodPtr)page_pcallResolve_somInit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)somInit },
{ &(__somC_page_regIdsArray[__somC_page_regIds_somUninit]), 
#ifdef SOMPCALLpage_somUninit
   (somMethodPtr*)&page_pcall_somUninit_resolved, 
   (somMethodPtr)page_pcallResolve_somUninit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)somUninit },
{ &(__somC_page_regIdsArray[__somC_page_regIds_somDumpSelfInt]), 
#ifdef SOMPCALLpage_somDumpSelfInt
   (somMethodPtr*)&page_pcall_somDumpSelfInt_resolved, 
   (somMethodPtr)page_pcallResolve_somDumpSelfInt, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)somDumpSelfInt }
};

static somClassVars1 __somC_page_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	sizeof(pageData),	/* dataSize */
	4,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct pageClassDataStructure __somC_page_resolvedMTokens;

static void * __somC_page_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_page_ClassInfo; /* C forward reference */

SOM_CIB page_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_page_classVars1,
	&__somC_page_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	page_MajorVersion,
	page_MinorVersion,
	0x40004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	0,	/* classMeta */
	(somMethodPtr) __somC_page_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) somInit,	/* legacyInit */
	(somMethodPtr) somUninit,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	13,	/* numRegIds */
	__somC_page_regIdsArray,	/* regIds */
	(sizeof(struct pageClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&pageClassData,
	(somCClassDataStructurePtr)&pageCClassData,
	&__somC_page_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_page_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_page_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	8,	/* maxNDMethods */
	__somC_page_newNDMethodsArray,	/* newNDMethods */
	3,	/* numOverrides */
	__somC_page_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_page_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_page_parentMtabs,	/* parentMtabs */
	&page_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_page_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_page_ClassInfo = {
	0,	/* classObject */
	&__somC_page_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_page_classInit)
#pragma alloc_text (SEG0002, pageNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_page_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   page_parent_SOMObject_somDumpSelfInt_resolved = 
	somParentNumResolve(pageCClassData.parentMtab, 1, _SOMMTOKEN_SOMObject(somDumpSelfInt)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK pageNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_page && _somCheckVersion(_SOMCLASS_page,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_page;
__somC_page_parentArray[0] = (SOMClass *)&_SOMCLASS_SOMObject;
   /* require parents */
   if (!_SOMCLASS_SOMObject) SOMObjectNewClass(SOMObject_MajorVersion,SOMObject_MinorVersion);
   /* return new class */
   return somBuildClass2( &page_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_page_ih */
