//
//   COMPONENT_NAME: some
//
//   ORIGINS: 27
//
//
//    25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1994,1996 
//   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/scunion.idl 2.8 5/9/96 15:31:34 [12/22/96 21:12:14]


#ifndef scunion_idl
#define scunion_idl

#include <scentry.idl>

interface SOMTDataEntryC;

interface SOMTUnionEntryC : SOMTEntryC
{
  struct somtLabelList {
    string label;
    somtLabelList *nextLabel;
  };
  // Linked list of case labels.

  struct somtCaseEntry {
    somtLabelList *caseLabels;  // The labels for this case.
    SOMTEntryC memberType;       // The type of the member.
    SOMTDataEntryC memberDeclarator; // The declarator for the member.
  };
  // A case for the union.

  readonly attribute SOMTEntryC somtSwitchType;
  // The switch type of the union.

  somtCaseEntry *somtGetFirstCaseEntry();
  // The first case for the union.

  somtCaseEntry *somtGetNextCaseEntry();
  // The next case for the union, relative to the previous
  // call to this method or to somtGetFirstCaseEntry.

#ifdef __SOMIDL__
  implementation {
    releaseorder: _get_somtSwitchType, somtGetFirstCaseEntry, somtGetNextCaseEntry;
  
    //# Class Modifiers
    majorversion = 2;
    minorversion = 1;
    filestem = scunion;
#ifdef _WIN32
    dllname = "some.dll";
#endif
    callstyle = oidl;
  
    //# Method Modifiers
    somDumpSelfInt: override;
    somtSetSymbolsOnEntry: override;
  
    //# Attribute Modifiers
    somtSwitchType: nodata;

    /* passthru C_h_before = "#include <scentry.h>"; */


  };
#endif /* __SOMIDL__ */
};


#endif  /* scunion*/
