// corbaidl.idl
//
// This file contains the subset of the interface repository
// definitions that is required to build the ORB.

#ifndef _omniorb_corbaidl_idl_
#define _omniorb_corbaidl_idl_

#pragma prefix "omg.org"

//////////////////////////////////////////////////////////////////////
module CORBA {
//////////////////////////////////////////////////////////////////////

  interface IDLType;

  typedef string Identifier;
  typedef string RepositoryId;
  typedef string VersionSpec;


  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;


  typedef short Visibility;
  const Visibility PRIVATE_MEMBER = 0;
  const Visibility PUBLIC_MEMBER  = 1;

  struct ValueMember {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    TypeCode type;
    IDLType type_def;
    Visibility access;
  };

  typedef sequence <ValueMember> ValueMemberSeq;


  // Sequences of basic types. From CORBA 2.6 section 5.5.2.
  
  typedef sequence<any>                AnySeq;
  typedef sequence<boolean>            BooleanSeq;
  typedef sequence<char>               CharSeq;
  typedef sequence<wchar>              WCharSeq;
  typedef sequence<octet>              OctetSeq;
  typedef sequence<short>              ShortSeq;
  typedef sequence<unsigned short>     UShortSeq;
  typedef sequence<long>               LongSeq;
  typedef sequence<unsigned long>      ULongSeq;
#ifdef HAS_LongLong
  typedef sequence<long long>          LongLongSeq;
  typedef sequence<unsigned long long> ULongLongSeq;
#endif
  typedef sequence<float>              FloatSeq;
  typedef sequence<double>             DoubleSeq;
#ifdef HAS_LongDouble
  typedef sequence<long double>        LongDoubleSeq;
#endif
  typedef sequence<string>             StringSeq;
  typedef sequence<wstring>            WStringSeq;


//////////////////////////////////////////////////////////////////////
};
//////////////////////////////////////////////////////////////////////


#endif // _omniorb_corbaidl_idl_
