home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v5.zip / TOOLKT21 / SC / SOMCLS.SC next >
Text File  |  1993-05-03  |  13KB  |  315 lines

  1.  
  2. # This file was generated by the SOM Compiler.
  3. # FileName: somcls.sc.
  4. # Generated using:
  5. #     SOM Precompiler spc: 1.22
  6. #     SOM Emitter emitcsc: 1.10
  7.  
  8. --  SOMClass: System Object Model base metaclass
  9. --  Copyright (c) International Business Machines Corporation
  10. --                1991, 1992
  11.  
  12. #include <somobj.sc>
  13.  
  14. class: SOMClass, 
  15.     external stem = sommc, function prefix = somc_, major version = 1, 
  16.     minor version = 1, file stem = somcls;
  17.  
  18.     --  This is the SOM metaclass.  That is, the instances of this class
  19.     --  are class objects.  When the SOM environment is created one
  20.     --  instance of this class with the external name
  21.     --  <SOMClassClassData.classObject> is created. This class object is
  22.     --  unique in that it is its own class object.  That is,
  23.     --  _SOMClass == _somGetClass(SOMClassClassData.classObject).
  24.     --  SOMClass can be subclassed just like any SOM class. The subclasses
  25.     --  of SOMClass are new metaclasses and can generate class objects with
  26.     --  different implementations than those produced by _SOMClass.
  27.  
  28.  
  29. parent class: SOMObject;
  30.  
  31.  
  32. release order:
  33.     somNew, somRenew, somInitClass, 
  34.     somClassReady, somGetName, somGetParent, 
  35.     somDescendedFrom, somCheckVersion, somFindMethod, 
  36.     somFindMethodOk, somSupportsMethod, somGetNumMethods, 
  37.     somGetInstanceSize, somGetInstanceOffset, somGetInstancePartSize, 
  38.     somGetMethodIndex, somGetNumStaticMethods, somGetPClsMtab, 
  39.     somGetClassMtab, somAddStaticMethod, somOverrideSMethod, 
  40.     somAddDynamicMethod, somGetMethodOffset, somGetApplyStub, 
  41.     somFindSMethod, somFindSMethodOk, somGetMethodDescriptor, 
  42.     somGetNthMethodInfo, somSetClassData, somGetClassData, 
  43.     somNewNoInit, somRenewNoInit, somGetInstanceToken, 
  44.     somGetMemberToken, somSetMethodDescriptor, somGetMethodData;
  45.  
  46. methods:
  47. group: InitTerm;
  48.  
  49.     --  Initialization / Termination / Class construction group
  50.  
  51.     somMToken    somAddStaticMethod(INOUT somId methodId,
  52.         INOUT somId methodDescriptor,
  53.         IN somMethodProc *method,
  54.         IN somMethodProc *redispatchStub,
  55.         IN somMethodProc *applyStub);
  56.  
  57.     --  Adds/overrides the indicated method, returns the value that
  58.     --  should be used to set the method slot in the class data structure
  59.     --  for this method name.
  60.     -- 
  61.     --  <methodDescriptor> is a somId for a string describing the calling
  62.     --  sequence to this method as described in <somcGetNthMethodInfo>
  63.     --  defined in the SOMObject class definition.
  64.     -- 
  65.     --  <method> is the actual method procedure for this method
  66.     -- 
  67.     --  <redispatchStub> is a procedure with the same calling sequence as
  68.     --  <method> that re-dispatches the method to one of this class's
  69.     --  dispatch functions.
  70.     -- 
  71.     --  <applyStub> is a procedure that takes a standard variable argument
  72.     --  list data structure applies it to its target object by calling
  73.     --  <method> with arguments derived from the data structure.  Its
  74.     --  calling sequence is the same as the calling sequence of the
  75.     --  dispatch methods defined in SOMObject.  This stub is used in the
  76.     --  support of the dispatch methods used in some classes.  In classes
  77.     --  where the dispatch functions do not need such a function this
  78.     --  parameter may be null.
  79.  
  80.     void    somClassReady();
  81.  
  82.     --  This method is invoked when all of the static initialization for
  83.     --  the class has been finished.  The default implementation simply
  84.     --  registers the newly constructed class with the SOMClassMgr.
  85.     --  Metaclasses may override this method to augment the class construction
  86.     --  sequence in any way that they wish.
  87.  
  88.     void    somInitClass(IN zString className,
  89.         IN SOMObject *parentClass,
  90.         IN integer4 instanceSize,
  91.         IN int maxStaticMethods,
  92.         IN integer4 majorVersion,
  93.         IN integer4 minorVersion);
  94.  
  95.     --  Initializes <self>.
  96.     --  <parentClass> is the parent (or parent class) of this class, it may
  97.     --  be NULL in which case it defaults to SOMObject (actually
  98.     --  SOMObjectClassData.classObject the class object for SOMObject).
  99.     --  If a parent class is specifed then it must have already been created
  100.     --  as a pointer to its class object is required.
  101.     -- 
  102.     --  <instanceSize> should be just the space needed for this class, it
  103.     --  is not necessary to consider the parent class's (if any) space
  104.     --  requirements.
  105.     -- 
  106.     --  <maxStaticMethods> should be just the static methods defined by
  107.     --  this class, it is not necessary to consider the parent class's
  108.     --  methods (if any), even if they are overriden in this class.
  109.     -- 
  110.     --  <majorVersion> indicates the major version number for this
  111.     --  implementation of the class definition, and <minorVersion>
  112.     --  indicates the minor version number.
  113.  
  114.     void    somOverrideSMethod(INOUT somId methodId,
  115.         IN somMethodProc *method);
  116.  
  117.     --  This method can be used instead of <somAddStaticMethod> or
  118.     --  <somAddDynamicMethod> when it is known that the class' parent
  119.     --  class already supports this method.  This call does not require the
  120.     --  method descriptor and stub methods that the others do.
  121.  
  122. group: Factory;
  123.  
  124.     --  Instance creation / Constructor group
  125.  
  126.     SOMObject *   somNew();
  127.  
  128.     --  Make an instance of this class.  When applied to _SOMClass, or any
  129.     --  other metaclass object, this will produce a new class object;
  130.     --  when applied to a regular class object, this will produce an
  131.     --  instance of that class.  The somInit method of the newly created
  132.     --  object is then invoked automatically.
  133.  
  134.     SOMObject *   somNewNoInit();
  135.  
  136.     --  Equivalent to somNew except that somInit is not automatically invoked.
  137.  
  138.     SOMObject *   somRenew(IN void *obj);
  139.  
  140.     --  Make an instance of this class, but use the space pointed to by
  141.     --  <obj> rather than allocating new space for the object.  Note: no
  142.     --  test is made to insure that <obj> points to enough space.  <obj>
  143.     --  is returned, but it is now a pointer to a valid, initialized,
  144.     --  object (the somInit method of the "renewed" object is invoked
  145.     --  automatically).
  146.  
  147.     SOMObject *   somRenewNoInit(IN void *obj);
  148.  
  149.     --  Equivalent to somRenew except that somInit is not automatically invoked.
  150.  
  151. group: Access;
  152.  
  153.     somMethodProc *   somGetApplyStub(INOUT somId methodId);
  154.  
  155.     --  Returns the apply stub associated with the specified method. NULL
  156.     --  is returned if the method is not supported by this class.  An apply
  157.     --  stub is a procedure that is called with a fixed calling sequence,
  158.     --  namely (SOMObject *self, somId methodId, somId descriptor, ap_list
  159.     --  ap) where <ap> is a varargs data structure that contains the actual
  160.     --  argument list to be passed to the method.  The apply stub fowards
  161.     --  the call to its associated method and then returns any result
  162.     --  produced by the method.
  163.  
  164.     somClassDataStructure *   somGetClassData();
  165.  
  166.     --  Returns a pointer to the static <className>ClassData structure.
  167.  
  168.     somMethodTab *   somGetClassMtab();
  169.  
  170.     --  Returns a pointer to the method table of this class.
  171.  
  172.     somDToken    somGetInstanceToken();
  173.  
  174.     --  Returns a token that identifies the introduced portion of this class
  175.     --  within itself or any derived class.  This token can be subsequently
  176.     --  passed to the run-time somDataResolve function to locate the instance
  177.     --  data introduced by this class.
  178.  
  179.     somDToken    somGetMemberToken(integer4 memberOffset,
  180.         somDToken instanceToken);
  181.  
  182.     --  Returns a token that represents the data member at offset
  183.     --  "memberOffset" within the introduced portion of the class identified
  184.     --  by instanceToken.  The instance token must have been obtained from a
  185.     --  previous invocation of somGetInstanceToken.  The returned member
  186.     --  token can be subsequently passed to the run-time somDataResolve
  187.     --  function to locate the data member.
  188.  
  189.     integer4    somGetInstanceOffset();
  190.  
  191.     --  Returns the offset in the body part of this [class] object for the
  192.     --  instance data introduced by this class, as the distance in bytes along
  193.     --  the class' "left-hand" derivation path.
  194.  
  195.     integer4    somGetInstancePartSize();
  196.  
  197.     --  Returns the size in bytes of the instance data introduced by this
  198.     --  class.  This does not include the instance data space required for
  199.     --  this class' ancestor or descendent classes.
  200.  
  201.     integer4    somGetInstanceSize();
  202.  
  203.     --  Returns the total size of an instance of <self>.
  204.     --  All instances of <self> have the same size.
  205.  
  206.     somId    somGetMethodDescriptor(IN somId methodId);
  207.  
  208.     --  Returns the method descriptor for the indicated method.  If
  209.     --  this object does not support the indicated method then NULL is
  210.     --  returned.
  211.  
  212.     zString    somGetName();
  213.  
  214.     --  Returns this object's class name as a NULL terminated string.
  215.  
  216.     int    somGetNumMethods();
  217.  
  218.     --  Returns the number of methods currently supported by this class,
  219.     --  including inherited methods (both static and dynamic).
  220.  
  221.     int    somGetNumStaticMethods();
  222.  
  223.     --  Returns the number of static methods that this class has.  This is
  224.     --  used by a child class in initializing its method table.
  225.  
  226.     SOMClass *   somGetParent();
  227.  
  228.     --  Returns the parent class of self (along its "left-hand" derivation
  229.     --  path), if one exists and NULL otherwise.
  230.  
  231.     somMethodTab *   somGetPClsMtab();
  232.  
  233.     --  Returns a pointer to the method table of this class's parent class
  234.     --  (along its "left-hand" derivation path).  If this class is a root
  235.     --  class (SOMObject), NULL is returned.
  236.  
  237.     void    somSetClassData(IN somClassDataStructure *cds);
  238.  
  239.     --  Sets the class' pointer to the static <className>ClassData structure.
  240.  
  241. group: Testing;
  242.  
  243.     int    somCheckVersion(IN integer4 majorVersion,
  244.         IN integer4 minorVersion);
  245.  
  246.     --  Returns 1 (true) if the implementation of this class is
  247.     --  compatible with the specified major and minor version number and
  248.     --  false (0) otherwise.  An implementation is compatible with the
  249.     --  specified version numbers if it has the same major version number
  250.     --  and a minor version number that is equal to or greater than
  251.     --  <minorVersion>.  The major, minor version number pair (0,0) is
  252.     --  considered to match any version.  This method is usually called
  253.     --  immediately after creating the class object to verify that a
  254.     --  dynamically loaded class definition is compatible with a using
  255.     --  application.
  256.  
  257.     int    somDescendedFrom(IN SOMClass *aClassObj);
  258.  
  259.     --  Returns 1 (true) if <self> is a descendent class of <aClassObj> and
  260.     --  0 (false) otherwise.  Note: a class object is considered to be
  261.     --  descended itself for the purposes of this method.
  262.  
  263.     int    somSupportsMethod(INOUT somId mId);
  264.  
  265.     --  Returns 1 (true) if the indicated method is supported by this
  266.     --  class and 0 (false) otherwise.
  267.  
  268. group: Dynamic;
  269.  
  270.     int    somFindMethod(INOUT somId methodId,
  271.         OUT somMethodProc **m);
  272.  
  273.     --  Finds the method procedure associated with <methodId> for this
  274.     --  class and sets <m> to it.  1 (true) is returned when the
  275.     --  method procedure is directly callable and 0 (false) is returned
  276.     --  when the method procedure is a dispatch function.
  277.     -- 
  278.     --  If the class does not support the specified method then
  279.     --  <m> is set to NULL and the return value is meaningless.
  280.     -- 
  281.     --  Returning a dispatch function does not guarantee that a
  282.     --  class supports the specified method; the dispatch may fail.
  283.  
  284.     int    somFindMethodOk(INOUT somId methodId,
  285.         OUT somMethodProc **m);
  286.  
  287.     --  Just like <somFindMethod> except that if the method is not
  288.     --  supported then an error is raised and execution is halted.
  289.  
  290.     somMethodProc *   somFindSMethod(INOUT somId methodId);
  291.  
  292.     --  Finds the indicated method, which must be a static method defined
  293.     --  for this class, and returns a pointer to its method procedure.
  294.     -- 
  295.     --  If the method is not defined (as a static method or at all) for
  296.     --  this class then a NULL pointer is returned.
  297.  
  298.     somMethodProc *   somFindSMethodOk(INOUT somId methodId);
  299.  
  300.     --  Just like <somFindSMethod> except that an error is raised if the
  301.     --  method is not defined for this class.
  302.  
  303.     override somInit;
  304.  
  305.     -- From SOMObject
  306.  
  307.     override somUninit;
  308.  
  309.     -- From SOMObject
  310.  
  311.     override somDumpSelfInt;
  312.  
  313.     -- From SOMObject
  314.  
  315.