home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / WPSDEM.ZIP / CMBSTDNT / GRADUATE.IH < prev    next >
Text File  |  1992-08-21  |  8KB  |  277 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: .\GRADUATE.ih.
  5.  * Generated using:
  6.  *     SOM Precompiler spc: 1.22
  7.  *     SOM Emitter emitih: 1.59
  8.  */
  9.  
  10. #ifndef GRADUATE_ih
  11. #define GRADUATE_ih
  12.  
  13.  
  14. #include "GRADUATE.h"
  15.  
  16. /*
  17.  * Set the scope of methods functions
  18.  */
  19. #ifndef SOM_Scope
  20. #define SOM_Scope static
  21. #endif
  22.  
  23. #ifndef SOM_CurrentClass
  24. #define SOM_CurrentClass GraduateStudentCClassData.parentMtab
  25. #endif
  26.  
  27. #define GraduateStudent_MaxNoMethods 1
  28.  
  29. /*
  30.  * Instance data
  31.  */
  32. typedef struct {
  33.     char thesis[128];
  34.     char degree[16];
  35. } GraduateStudentData;
  36.  
  37. /*
  38.  * Instance variable access macros
  39.  */
  40. #define _thesis (somThis->thesis)
  41. #define _degree (somThis->degree)
  42.  
  43. /*
  44.  * Getdata macro
  45.  */
  46. #define GraduateStudentGetData(somSelf) \
  47.     ((GraduateStudentData *) \
  48.         SOM_DataResolve(somSelf, GraduateStudentCClassData.instanceDataToken))
  49.  
  50. /*
  51.  * Trace/Debug macro
  52.  */
  53. #ifndef GraduateStudentMethodDebug
  54. #define GraduateStudentMethodDebug(c,m) SOMMethodDebug(c,m)
  55. #endif
  56.  
  57. /*
  58.  * Begin stuff that only goes in the primary file
  59.  */
  60. #ifdef GraduateStudent_Class_Source
  61.  
  62. /*
  63.  * Current class macros for Instance and Meta classes.
  64.  */
  65. #undef SOMMeta
  66. #define SOMMeta M_GraduateStudentCClassData.parentMtab
  67. #undef SOMInstance
  68. #define SOMInstance GraduateStudentCClassData.parentMtab
  69.  
  70. #ifndef M_GraduateStudent_Class_Source
  71. #define M_GraduateStudent_Class_Source
  72. #endif    /* M_GraduateStudent_Class_Source */
  73.  
  74. /*
  75.  * Generate the Apply Stubs.
  76.  */
  77. #pragma linkage(somAP_setUpGraduateStudent, system)
  78. static void   SOMLINK somAP_setUpGraduateStudent(GraduateStudent *somSelf,
  79.         somId __id,
  80.         somId __desc,
  81.         va_list __ap)
  82. {
  83.     char *id = va_arg(__ap, char*);
  84.     char *name = va_arg(__ap, char*);
  85.     char *thesis = va_arg(__ap, char*);
  86.     char *degree = va_arg(__ap, char*);
  87.     __ap; __id; __desc;           /* Referenced to prevent warning msg */
  88.  
  89.     GraduateStudent_setUpGraduateStudent(somSelf,id,name,thesis,degree);
  90. }
  91.  
  92.  
  93. /*
  94.  * Overridden method: printStudentInfo
  95.  */
  96. #pragma linkage(printStudentInfo, system)
  97. SOM_Scope void   SOMLINK printStudentInfo(GraduateStudent *somSelf);
  98. #ifndef parent_printStudentInfo
  99. static char *somMN_printStudentInfo = "printStudentInfo";
  100. static somId somId_printStudentInfo = &somMN_printStudentInfo;
  101. #define parent_printStudentInfo(somSelf) \
  102.     ((SOM_ParentResolveE(Student, SOM_CurrentClass, printStudentInfo)) \
  103.      (somSelf))
  104. #endif
  105. #define GraduateStudentParent_printStudentInfo parent_printStudentInfo
  106.  
  107. /*
  108.  * Overridden method: getStudentType
  109.  */
  110. #pragma linkage(getStudentType, system)
  111. SOM_Scope char *  SOMLINK getStudentType(GraduateStudent *somSelf);
  112. #ifndef parent_getStudentType
  113. static char *somMN_getStudentType = "getStudentType";
  114. static somId somId_getStudentType = &somMN_getStudentType;
  115. #define parent_getStudentType(somSelf) \
  116.     ((SOM_ParentResolveE(Student, SOM_CurrentClass, getStudentType)) \
  117.      (somSelf))
  118. #endif
  119. #define GraduateStudentParent_getStudentType parent_getStudentType
  120.  
  121. /*
  122.  * Temporary class data structure used only in class creation
  123.  */
  124. static somClassDataStructure GraduateStudenttempClassData;
  125.  
  126. /*
  127.  * Initialize the class data structure
  128.  */
  129. struct GraduateStudentClassDataStructure GraduateStudentClassData = {(SOMAny *) NULL};
  130.  
  131. /*
  132.  * Define the C class data structure
  133.  */
  134. struct GraduateStudentCClassDataStructure GraduateStudentCClassData = {(somMethodTab *) NULL};
  135.  
  136. /*
  137.  * New Method: setUpGraduateStudent
  138.  */
  139. #pragma linkage(setUpGraduateStudent, system)
  140. SOM_Scope void   SOMLINK setUpGraduateStudent(GraduateStudent *somSelf,
  141.         char *id,
  142.         char *name,
  143.         char *thesis,
  144.         char *degree);
  145. static char *somMN_setUpGraduateStudent = "setUpGraduateStudent";
  146. static somId somId_setUpGraduateStudent = &somMN_setUpGraduateStudent;
  147. static char *somDS_setUpGraduateStudent = somMD_GraduateStudent_setUpGraduateStudent;
  148. static somId somDI_setUpGraduateStudent = &somDS_setUpGraduateStudent;
  149. #pragma linkage(somRD_setUpGraduateStudent, system)
  150. static void   SOMLINK somRD_setUpGraduateStudent(GraduateStudent *somSelf,
  151.         char *id,
  152.         char *name,
  153.         char *thesis,
  154.         char *degree)
  155. {
  156.     va_somDispatchV(somSelf, somId_setUpGraduateStudent,
  157.         _somGetMethodDescriptor(SOM_GetClass(somSelf),somId_setUpGraduateStudent),id,name,thesis,degree);
  158. }
  159.  
  160. /*
  161.  * Routines to create the class object
  162.  */
  163.  
  164. /*
  165.  * Declare the Static Methods table.
  166.  */
  167. static somStaticMethod_t GraduateStudentSM[] = {
  168.     {    &GraduateStudentClassData.setUpGraduateStudent,
  169.          &somId_setUpGraduateStudent,
  170.          &somDI_setUpGraduateStudent,
  171.          (somMethodProc *) setUpGraduateStudent,
  172.          (somMethodProc *) somRD_setUpGraduateStudent,
  173.          (somMethodProc *) somAP_setUpGraduateStudent    },
  174. };
  175.  
  176.  
  177. /*
  178.  * Declare the Override Methods table.
  179.  */
  180. static somOverrideMethod_t GraduateStudentOM[] = {
  181.     {    &somId_printStudentInfo,
  182.          (somMethodProc *) printStudentInfo    },
  183.     {    &somId_getStudentType,
  184.          (somMethodProc *) getStudentType    },
  185. };
  186.  
  187. static void GraduateStudentsomInitializeClass ()
  188. {
  189.     int i;
  190.     somStaticMethod_t *smp;
  191.     somOverrideMethod_t *omp;
  192.  
  193. /*
  194.  * Add the Static Methods.
  195.  */
  196.     for (smp = GraduateStudentSM, i = 0; i < 1; smp++, i++)
  197.         *(smp->classData) =
  198.             _somAddStaticMethod (GraduateStudenttempClassData.classObject,
  199.                 *(smp->methodId), *(smp->methodDescriptor),
  200.                 smp->method, smp->redispatchStub,
  201.                 smp->applyStub);
  202.  
  203.  
  204. /*
  205.  * Override methods.
  206.  */
  207.     for (omp = GraduateStudentOM, i = 0; i < 2; omp++, i++)
  208.         _somOverrideSMethod (GraduateStudenttempClassData.classObject,
  209.             *(omp->methodId), omp->method);
  210.  
  211. }
  212.  
  213. #pragma linkage(GraduateStudentsomCreateClass, system)
  214. static void SOMLINK GraduateStudentsomCreateClass(SOMClass *pClsObj,
  215.                            SOMClass *mClsObj)
  216. {
  217.     GraduateStudenttempClassData.classObject = _somNew (mClsObj);
  218.     _somInitClass (GraduateStudenttempClassData.classObject,
  219.         "GraduateStudent",
  220.         pClsObj,
  221.         sizeof(GraduateStudentData),
  222.         GraduateStudent_MaxNoMethods,
  223.         GraduateStudent_MajorVersion,
  224.         GraduateStudent_MinorVersion);
  225.     GraduateStudentCClassData.instanceDataToken = 
  226.     _somGetInstanceToken(GraduateStudenttempClassData.classObject);
  227.     GraduateStudentsomInitializeClass();
  228.     GraduateStudentCClassData.parentMtab =
  229.     _somGetPClsMtab(GraduateStudenttempClassData.classObject);
  230.     _somSetClassData(GraduateStudenttempClassData.classObject, (somClassDataStructure *)&GraduateStudentClassData);
  231.     _somClassReady(GraduateStudenttempClassData.classObject);
  232.     /* make newly created class object visible */
  233.     GraduateStudentClassData.classObject = GraduateStudenttempClassData.classObject;
  234. }
  235.  
  236. GraduateStudent * SOMLINK GraduateStudentNewClass (integer4 scemajorVersion,
  237.         integer4 sceminorVersion)
  238. {
  239.     SOMClass *pClsObj;
  240.     SOMClass *mClsObj;
  241.  
  242.     /* Check the version numbers */
  243.     if (((scemajorVersion != 0) && 
  244.          (scemajorVersion != GraduateStudent_MajorVersion)) ||
  245.         ((sceminorVersion != 0) && 
  246.          (sceminorVersion > GraduateStudent_MinorVersion))) {
  247.     somPrintf("GraduateStudentNewClass: Error, bad version numbers.\n");
  248.     SOM_Error(SOMERROR_BadVersion);
  249.     }
  250.     /* Don't do anything if class object is already created. */
  251.     if (GraduateStudentClassData.classObject != (SOMAny *) NULL)
  252.     return(GraduateStudentClassData.classObject);
  253.  
  254.     /* Make sure the environment is initialized. */
  255.     if (SOMClassMgrObject == (SOMAny *) NULL) somEnvironmentNew();
  256.     if (SOMClassMgrObject == (SOMAny *) NULL)
  257.     SOM_Error(SOMERROR_CouldNotStartup);
  258.  
  259.     /* Get the parent class object. */
  260.     StudentNewClass(1,1);    /* static reference */
  261.     pClsObj = _somFindClass(SOMClassMgrObject,
  262.         SOM_IdFromString("Student"), 1, 1);
  263.     if (pClsObj == (SOMClass *) NULL)
  264.     SOM_Error(SOMERROR_NoParentClass);
  265.  
  266.     /* Use parent's metaclass */ 
  267.     mClsObj = SOM_GetClass(pClsObj);
  268.  
  269.     somConstructClass(GraduateStudentsomCreateClass, pClsObj, mClsObj,
  270.              &GraduateStudenttempClassData);
  271.     return (GraduateStudentClassData.classObject);
  272. }
  273.  
  274. #endif                   /* GraduateStudent_Class_Source */
  275.  
  276. #endif       /* GRADUATE_ih */
  277.