home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / scclass.idl < prev    next >
Encoding:
Text File  |  1996-02-21  |  10.4 KB  |  300 lines

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