// File: orb.idl
// From CORBA 3.0
#ifndef _ORB_IDL_
#define _ORB_IDL_

#ifdef _PRE_3_0_COMPILER_
#pragma prefix "omg.org"
#endif

#ifdef _PRE_3_0_COMPILER_
#ifdef _NO_LOCAL_
#define local
#endif
#endif

// This module brings together many files defining the CORBA module
//   (It really ought to be called CORBA.idl, but that's history.)
// This file includes only the "real" interfaces that are included
//   in the "orb.idl" interface supplied by every ORB and that can be
//   brought into an IDL compilation by "import ::CORBA"
//   or in pre-3.0 IDL compilers by the include directive
//   "#include <orb.idl>".

module CORBA {

#ifndef _PRE_3_0_COMPILER_
    typeprefix CORBA "omg.org";
#endif

// The following forward references list *all* the interfaces and valuetypes
//   defined in the CORBA module. This serves two purposes: documentation
//   and compilability. Documentation is nice: since some of the interfaces
//   must be declared as forward references, it is more consistent to
//   declare them all.
//
//   As far as compilability, it might be possible to avoid having to declare
//   many of the forward reference by rearranging the order of the interface
//   declarations, but there's no reason to do bother doing that. After all,
//   that's the reason for the design of forward references. Doing a forward
//   reference allows the definition order to be relatively logical.In
//   particular, it allows the "include"s to be done in chapter order
//   (almost), the only exception being the InterfaceRepository (Chapter 10).
//   It contains some data definitions needed by Chapter 4 interfaces.
//   The other reason not to try to rearrange the order is that it's hard.

// Forward references, alphabetically
    interface ConstructionPolicy;        // Chapter  4, CORBA_DomainManager.idl
    local interface Current;             // Chapter  4, CORBA_Current.idl
    interface DomainManager;             // Chapter  4, CORBA_DomainManager.idl
    interface Policy;                    // Chapter  4, CORBA_Policy.idl
    local interface PollableSet;         // Chapter  7, CORBA_Pollable.idl
    abstract valuetype CustomMarshal;    // Chapter  5, CORBA_valuetype.idl
    abstract valuetype DataInputStream;  // Chapter  5, CORBA_Stream.idl
    abstract valuetype DataOutputStream; // Chapter  5, CORBA_Stream.idl

// Forward references to Chapter 10, CORBA_InterfaceRepository.idl
    interface AbstractInterfaceDef;
    interface AliasDef;
    interface ArrayDef;
    interface AttributeDef;
    interface ConstantDef;
    interface Contained;
    interface Container;
    interface EnumDef;
    interface ExceptionDef;
    interface ExtInterfaceDef;
    interface ExtValueDef;
    interface ExtAbstractInterfaceDef;
    interface ExtLocalInterfaceDef;
    interface FixedDef;
    interface IDLType;
    interface InterfaceDef;
    interface IRObject;
    interface LocalInterfaceDef;
    interface ModuleDef;
    interface NativeDef;
    interface OperationDef;
    interface PrimitiveDef;
    interface Repository;
    interface SequenceDef;
    interface StringDef;
    interface StructDef;
    interface TypeCode;
    interface TypedefDef;
    interface UnionDef;
    interface ValueDef;
    interface ValueBoxDef;
    interface ValueMemberDef;
    interface WstringDef;

    typedef string Identifier;

// Chapter 3: IDL Syntax and Semantics
#include <CORBA_StandardExceptions.idl>

// Chapter 4: ORB Interface
#include <CORBA_Current.idl>
#include <CORBA_Policy.idl>
#include <CORBA_DomainManager.idl>

// Chapter 7: Pollable
#include <CORBA_Pollable.idl>

// Chapter 10: The Interface Repository
#include <CORBA_InterfaceRepository.idl>

// more Chapter 4: ORB Interface
// CORBA_TypeCode.idl depends on CORBA_InterfaceRepository.idl
#include <CORBA_TypeCode.idl>

// Chapter 5: Value Type Semantics
#include <CORBA_CustomMarshal.idl>
#include <CORBA_Stream.idl>

};

#endif // _ORB_IDL_