home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / som30tk.zip / som30os2.zip / include / scclass.idl < prev    next >
Text File  |  1996-12-24  |  11KB  |  309 lines

  1. //#  @(#) somc/scclass.idl 2.12 5/9/96 15:30:59 [12/24/96 07:39:42]
  2. //
  3. //   COMPONENT_NAME: some
  4. //
  5. //   ORIGINS: 27
  6. //
  7. //
  8. //    25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1994,1996 
  9. //   All Rights Reserved
  10. //   Licensed Materials - Property of IBM
  11. //   US Government Users Restricted Rights - Use, duplication or
  12. //   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  13. //
  14.  
  15.  
  16. #ifndef scclass_idl
  17. #define scclass_idl
  18.  
  19. #include <scentry.idl>
  20. interface SOMTPassthruEntryC;
  21. interface SOMTBaseClassEntryC;
  22. interface SOMTMetaClassEntryC;
  23. interface SOMTCommonEntryC;
  24. interface SOMTMethodEntryC;
  25. interface SOMTDataEntryC;
  26. interface SOMTAttributeEntryC;
  27. interface SOMTStructEntryC;
  28. interface SOMTTypedefEntryC;
  29. interface SOMTUnionEntryC;
  30. interface SOMTEnumEntryC;
  31. interface SOMTConstEntryC;
  32. interface SOMTSequenceEntryC;
  33.  
  34. interface SOMTClassEntryC : SOMTEntryC
  35.  
  36. // This entry is the anchor for all information about a class
  37. // definition. The part it inherits from <SOMTEntryC> concerns
  38. // the actual class statement in the interface definition.  The new
  39. // methods and attributes provided by the class concern the class
  40. // definition as a whole.
  41. // A number of the possible statements in a class definition are
  42. // optional, when they are missing from the class definition then
  43. // methods that would return an entry for this kind of statement, will
  44. // return NULL.
  45.  
  46. {
  47.   readonly attribute string somtSourceFileName;
  48.   
  49.   // Returns the name of file containing the definition of this class.
  50.  
  51.   readonly attribute SOMTMetaClassEntryC somtMetaClassEntry;
  52.   
  53.   // Returns the entry for the meta class statement in class
  54.   // definition or NULL if there is no meta class statement.
  55.   // Note: the SOM architecture requires that all classes have a meta
  56.   // class, however <SOMClass> is its own metaclass. Thus, any attempt
  57.   // to walk up the metaclass chain must terminate when it finds a
  58.   // class that is its own meta class, otherwise an infinite loop is
  59.   // possible.
  60.  
  61.   readonly attribute SOMTModuleEntryC somtClassModule;
  62.   // The module that contains this class, or NULL if there is not one.
  63.  
  64.   readonly attribute long somtNewMethodCount;
  65.   
  66.   // Returns the number of new methods introduced in this class
  67.   // definition.
  68.  
  69.   readonly attribute boolean somtLocalInclude;
  70.   
  71.   // Returns true if the header files associated with this class
  72.   // definition should be included using local search, eg, "name.h"
  73.   // instead of <name.h>
  74.  
  75.   readonly attribute long somtPrivateMethodCount;
  76.   
  77.   // Returns number of new private methods in class.
  78.  
  79.   readonly attribute long somtStaticMethodCount;
  80.   
  81.   // Returns number of new static methods in class.
  82.  
  83.   readonly attribute long somtOverrideMethodCount;
  84.   
  85.   // Returns number of new override methods in class.
  86.  
  87.   readonly attribute long somtProcMethodCount;
  88.   
  89.   // Returns number of procedure methods for class.
  90.  
  91.   readonly attribute long somtVAMethodCount;
  92.   
  93.   // Returns number of VarArg methods for class.
  94.  
  95.   readonly attribute long somtBaseCount;
  96.   
  97.   // Returns number of base classes for class.
  98.  
  99.   readonly attribute long somtExternalDataCount;
  100.   
  101.   // Returns number of external (public or private) data members for class.
  102.  
  103.   readonly attribute long somtPublicDataCount;
  104.   
  105.   // Returns number of public data members for class.
  106.  
  107.   readonly attribute long somtPrivateDataCount;
  108.   
  109.   // Returns number of private data members for class.
  110.  
  111.   readonly attribute SOMTClassEntryC somtMetaclassFor;
  112.  
  113.   // If this is a metaclass, the class for which it is a metaclass, else NULL.
  114.  
  115.   readonly attribute boolean somtForwardRef;
  116.  
  117.   // Whether this is a forward reference or not.
  118.  
  119.   SOMTBaseClassEntryC somtGetFirstBaseClass();
  120.   
  121.   // Returns the entry for the "left most" direct base class form for
  122.   // this class, if it has one and NULL otherwise.  Note: <SOMObject>
  123.   // does not have any base classes and therefore will terminate an
  124.   // attempt to walk up the base class chain.
  125.  
  126.   SOMTBaseClassEntryC somtGetNextBaseClass();
  127.   
  128.   // Returns the entry for the next direct base class form of this
  129.   // class, if it has one and NULL otherwise.  The direct base classes
  130.   // of a derived class are ordered from "left to right".
  131.  
  132.   string somtGetFirstReleaseName();
  133.   
  134.   // Returns the first name in the release order statement for this
  135.   // entry if it has one and NULL otherwise.
  136.  
  137.   string somtGetNextReleaseName();
  138.   
  139.   // Returns the next name in the release order statement for this
  140.   // entry if it has one and NULL otherwise.
  141.  
  142.   long somtGetReleaseNameList(in string buffer);
  143.   
  144.   // Puts all the release names in <buffer> in template output form,
  145.   // buffer must be large enough, no tests are made.  The number of
  146.   // release names is returned.
  147.  
  148.   SOMTPassthruEntryC somtGetFirstPassthru();
  149.   
  150.   // Returns the first passthru entry for this class definition if it
  151.   // has one and NULL otherwise.
  152.  
  153.   SOMTPassthruEntryC somtGetNextPassthru();
  154.   
  155.   // Returns the next passthru entry for this class definition if it
  156.   // has one and NULL otherwise.  The passthru entry will be returned
  157.   // in an order based on the appearence of passthru statements in the
  158.   // class definition.
  159.  
  160.   SOMTDataEntryC somtGetFirstData();
  161.   
  162.   // Returns the first data entry for this class definition if it has
  163.   // one and NULL otherwise.
  164.  
  165.   SOMTDataEntryC somtGetNextData();
  166.   
  167.   // Returns the next data entry for this class definition if it has
  168.   // one and NULL otherwise.  The data entries will be returned in an
  169.   // order based on the appearence data member declarations in the
  170.   // class definition.
  171.  
  172.   SOMTDataEntryC somtGetFirstStaticData();
  173.   
  174.   // Returns the first static data entry for this class definition if it has
  175.   // one and NULL otherwise. Static data is handled specialy in SOM so a
  176.   // different accessor method is provided.
  177.  
  178.   SOMTDataEntryC somtGetNextStaticData();
  179.   
  180.   // Returns the next static data entry for this class definition if it has
  181.   // one and NULL otherwise.  The data entries will be returned in an
  182.   // order based on the release order
  183.  
  184.   SOMTMethodEntryC somtGetFirstMethod();
  185.   
  186.   // Returns the first method entry for this class definition if it
  187.   // has one and NULL otherwise.  Method entries may be for new or
  188.   // overridden methods.
  189.  
  190.   SOMTMethodEntryC somtGetNextMethod();
  191.   
  192.   // Returns the next method entry for this class definition if it has
  193.   // one and NULL otherwise.  The method entries will be returned in an
  194.   // order based on the appearence method declarations in the
  195.   // class definition.  Method entries may be for new or overridden methods.
  196.  
  197.   SOMTMethodEntryC somtGetFirstInheritedMethod();
  198.   
  199.   // Returns the first inherited and not overridden method entry for
  200.   // this class definition if it has one and NULL otherwise.
  201.  
  202.   SOMTMethodEntryC somtGetNextInheritedMethod();
  203.   
  204.   // Returns the next inherited and not overridden method entry for
  205.   // this class definition if it has one and NULL otherwise.  The
  206.   // method entries will be returned in an unspecified, but constant
  207.   // order.
  208.  
  209.   SOMTAttributeEntryC somtGetFirstAttribute();
  210.   SOMTAttributeEntryC somtGetNextAttribute();
  211.   SOMTStructEntryC somtGetFirstStruct ();
  212.   SOMTStructEntryC somtGetNextStruct ();
  213.   SOMTTypedefEntryC somtGetFirstTypedef ();
  214.   SOMTTypedefEntryC somtGetNextTypedef ();
  215.   SOMTUnionEntryC somtGetFirstUnion ();
  216.   SOMTUnionEntryC somtGetNextUnion ();
  217.   SOMTEnumEntryC somtGetFirstEnum ();
  218.   SOMTEnumEntryC somtGetNextEnum ();
  219.   SOMTConstEntryC somtGetFirstConstant ();
  220.   SOMTConstEntryC somtGetNextConstant ();
  221.   SOMTSequenceEntryC somtGetFirstSequence ();
  222.   SOMTSequenceEntryC somtGetNextSequence ();
  223.   SOMTEntryC somtGetFirstPubdef ();
  224.   SOMTEntryC somtGetNextPubdef ();
  225.  
  226.   boolean somtFilterNew(in SOMTMethodEntryC entry);
  227.   
  228.   // Returns 1 if entry is new in the class.
  229.  
  230.   boolean somtFilterOverridden(in SOMTMethodEntryC entry);
  231.   
  232.   // Returns 1 if entry is an overriding method of the class.
  233.  
  234.   boolean somtFilterPrivOrPub(in SOMTCommonEntryC entry);
  235.   
  236.   // Returns TRUE if entry is Private or Public.
  237.  
  238. #ifdef __SOMIDL__
  239.   implementation {
  240.     releaseorder: _get_somtSourceFileName, _get_somtMetaClassEntry, 
  241.                   _get_somtNewMethodCount, _get_somtLocalInclude, 
  242.                   _get_somtPrivateMethodCount, _get_somtStaticMethodCount, 
  243.                   _get_somtOverrideMethodCount, _get_somtProcMethodCount, 
  244.                   _get_somtVAMethodCount, _get_somtBaseCount, 
  245.                   _get_somtExternalDataCount, _get_somtPublicDataCount, 
  246.                   _get_somtPrivateDataCount, somtGetFirstBaseClass, 
  247.                   somtGetNextBaseClass, somtGetFirstReleaseName, 
  248.                   somtGetNextReleaseName, somtGetReleaseNameList, 
  249.                   somtGetFirstPassthru, somtGetNextPassthru, 
  250.                   somtGetFirstData, somtGetNextData, 
  251.                   somtGetFirstMethod, somtGetNextMethod, 
  252.                   somtGetFirstInheritedMethod, somtGetNextInheritedMethod, 
  253.                   somtFilterNew, somtFilterOverridden, 
  254.                   somtFilterPrivOrPub, _get_somtMetaclassFor, 
  255.                   _get_somtForwardRef, somtGetFirstAttribute, 
  256.                   somtGetNextAttribute, somtGetFirstStruct, 
  257.                   somtGetNextStruct, somtGetFirstTypedef, 
  258.                   somtGetNextTypedef, somtGetFirstUnion, 
  259.                   somtGetNextUnion, somtGetFirstEnum, 
  260.                   somtGetNextEnum, somtGetFirstConstant, 
  261.                   somtGetNextConstant, somtGetFirstSequence, 
  262.                   somtGetNextSequence, _get_somtClassModule,
  263.           somtGetFirstPubdef, somtGetNextPubdef,
  264.           somtGetFirstStaticData, somtGetNextStaticData;
  265.  
  266.  
  267.     //# Class Modifiers
  268.     filestem = scclass;
  269. #ifdef _WIN32
  270.     dllname = "some.dll";
  271. #endif
  272.     callstyle = oidl;
  273.     majorversion = 2;
  274.     minorversion = 1;
  275.   
  276.   
  277.     //# Method Modifiers
  278.     somDumpSelfInt: override;
  279.     somtSetSymbolsOnEntry: override;
  280.     somtSetEntryStruct: override;
  281.     _get_somtCScopedName: override;
  282.     _get_somtIDLScopedName: override;
  283.   
  284.     //# Attribute Modifiers
  285.     somtSourceFileName: nodata;
  286.     somtMetaClassEntry: nodata;
  287.     somtNewMethodCount: nodata;
  288.     somtLocalInclude: nodata;
  289.     somtPrivateMethodCount: nodata;
  290.     somtStaticMethodCount: nodata;
  291.     somtOverrideMethodCount: nodata;
  292.     somtProcMethodCount: nodata;
  293.     somtVAMethodCount: nodata;
  294.     somtVAMethodCount: nodata;
  295.     somtBaseCount: nodata;
  296.     somtPublicDataCount: nodata;
  297.     somtPrivateDataCount: nodata;
  298.     somtExternalDataCount: nodata;
  299.     somtMetaclassFor: nodata;
  300.     somtForwardRef: nodata;
  301.     somtClassModule: nodata;
  302.   
  303.   };
  304. #endif /* __SOMIDL__ */
  305. };
  306.  
  307.  
  308. #endif  /* scclass_idl */
  309.