// **********************************************************************
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

#ifndef INT_REP_MEMBER_IDL
#define INT_REP_MEMBER_IDL

#pragma prefix "omg.org"

module CORBA
{

typedef string RepositoryId, ScopedName, Identifier;

enum DefinitionKind
{
    dk_none,
    dk_all,
    dk_Attribute,
    dk_Constant,
    dk_Exception,
    dk_Interface,
    dk_Module,
    dk_Operation,
    dk_Typedef,
    dk_Alias,
    dk_Struct,
    dk_Union,
    dk_Enum,
    dk_Primitive,
    dk_String,
    dk_Sequence,
    dk_Array,
    dk_Repository
};

interface IRObject
{
    readonly attribute DefinitionKind def_kind;
    void destroy();
};

interface IDLType : IRObject
{
    readonly attribute TypeCode type;
};

struct StructMember
{
    Identifier name;
    TypeCode type;
    IDLType type_def;
};
typedef sequence<StructMember> StructMemberSeq;

struct UnionMember
{
    Identifier name;
    any label;
    TypeCode type;
    IDLType type_def;
};

typedef sequence<UnionMember> UnionMemberSeq;

typedef sequence<Identifier> EnumMemberSeq;

}; // End module CORBA

#endif
