//
//   COMPONENT_NAME: some
//
//   ORIGINS: 27
//
//
//   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
//   All Rights Reserved
//   Licensed Materials - Property of IBM
//   US Government Users Restricted Rights - Use, duplication or
//   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//
//#  @(#) somc/scentry.idl 2.8 9/1/94 19:35:07 [9/21/94 17:47:02]
#ifndef scentry_idl
#define scentry_idl
#include <somobj.idl>
#include "sctypes.h"
interface SOMTEntryC : SOMObject
// A SOM class interface definition is compiled to produce a graph
// structure whose nodes are instances of <SOMTEntry> or its
// sub-classes.  Each entry is derived from some syntactic element of
// the definition source. The attributes defined in <SOMTEntryC>
// refer to this syntactic element in a fairly obvious way.
//
{
  attribute string somtEntryName;
  // The name associated with this entry.  Eg, the name of
  // the data item, the class, the method, the type, etc.
  attribute SOMTTypes somtElementType;
  // Returns the type of this entry.
  // This is not datatype, but entry type (method, class, 
  // passthru, etc.). The value is defined by SOMTTypes.
  readonly attribute string somtElementTypeName;
  // String version of somtElementType.
  readonly attribute string somtEntryComment;
  // Returns the comment associated with this entry, or NULL is this
  // entry has no associated comment.  Comments will have comment
  // delimitors removed, but will retain newline characters as
  // specified in the source file. (use smLookupComment)
  readonly attribute unsigned long somtSourceLineNumber;
  // Returns the line number in the source file where this entry's
  // syntactic form ended.
  readonly attribute TypeCode somtTypeCode;
  // The typecode, if appropriate, or NULL.
  readonly attribute boolean somtIsReference;
  // Whether the entry is just a reference to the real type (TRUE) 
  // rather than a declaration of it (FALSE).
  readonly attribute string somtIDLScopedName;
  // The IDL scoped name of the entry (using double colon as delimiter).
  readonly attribute string somtCScopedName;
  // The C scoped name of the entry (using underscore as delimiter).
  string somtGetModifierValue(in string modifierName);
  // Returns the value of the named modifier if this entry has the
  // named modifier and NULL otherwise. Note: if the modifier is
  // present but does not have a value then a value of <'\1'> is
  // returned.
  boolean somtGetFirstModifier(inout string modifierName, 
                         inout string modifierValue);
  // Returns the first modifier associated with this entry.  1 (true)
  // is returned if the entry has at least one modifier and 0 (false)
  // otherwise.
  boolean somtGetNextModifier(inout string modifierName, 
                        inout string modifierValue);
  // Returns the next modifier (with respect to the last call to
  // <somtGetNextModifier> or <somtGetFirstModifier>)
  // associated with this entry.  1 (true) is returned if the entry
  // had another modifier and 0 (false) otherwise.
  long somtFormatModifier(in string buffer, 
                       in string name, 
                       in string value);
  // Formats the indicated name/value pair into buffer.  Buffer must
  // be big enough to hold all the formatted pair, no checks are made.
  // The number of characters added to buffer are returned (not
  // including the trailing null character).
  // Note: value may be null
  // You will probably never call this method, it is provided so that
  // you can override it to control the format returned in
  // <somtGetModifierList>.
  long somtGetModifierList(in string buffer);
  // The modifiers for this entry are placed in <buffer> in template
  // list form (newline separated).  Buffer must be big enough to
  // hold all the modifiers, no checks are made. The number of
  // modifiers is returned.
  long somtSetSymbolsOnEntry(in SOMTEmitC emitter, 
                          in string prefix);
  // Places a number of symbol/value pairs in <t>.  All the symbols
  // will begin with <prefix>.
  void somtSetEntryStruct(inout Entry es);
  // Sets the entry struct data member.
  // Note, when overridding this method, it is important to call the
  // parent version of the method first and then do your processing.
#ifdef __SOMIDL__
  implementation {
    releaseorder: _get_somtEntryName, _set_somtEntryName, 
                  _get_somtElementType, _set_somtElementType, 
                  _get_somtEntryComment, _get_somtSourceLineNumber, 
                  _get_somtTypeCode, _get_somtIsReference, 
                  somtGetModifierValue, somtGetFirstModifier, 
                  somtGetNextModifier, somtFormatModifier, 
                  somtGetModifierList, somtSetSymbolsOnEntry, 
                  somtSetEntryStruct, _get_somtEntryStruct, 
                  somtShowAssocEntry, _get_somtCScopedName, 
                  _get_somtIDLScopedName, _get_somtElementTypeName;
    //# Class Modifiers
    majorversion = 2;
    minorversion = 1;
    filestem = scentry;
    callstyle = oidl;
    passthru C_h_after =        "#include <sctypes.h>"
  "#include <scemit.h>"
  "#include <sctmplt.h>";
    passthru C_xh_after =        "#include <sctypes.h>"
  "#include <sctmplt.xh>";
    //# Internal Instance Variables
    //# Method Modifiers
    somInit: override;
    somUninit: override;
    somPrintSelf: override;
    somDumpSelfInt: override;
    somDumpSelf: override;
    //# Attribute Modifiers
    somtEntryComment: nodata;
    somtCScopedName: nodata;
    somtIDLScopedName: nodata;
    somtSourceLineNumber: nodata;
    somtTypeCode: nodata;
    somtIsReference: nodata;
    somtEntryStruct: nodata;
    somtElementTypeName: nodata;
  };
#endif /* __SOMIDL__ */
};
#endif  /* scentry_idl */





































































































































