// File: orb.idl
// From CORBA 2.3

#ifndef _ORB_IDL_
#define _ORB_IDL_

// 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 "#include <orb.idl>".
#pragma prefix "omg.org"

module CORBA 
{

    // 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

    interface Current;                   // Chapter  4, CORBA_Current.idl

    interface DomainManager;             // Chapter  4, CORBA_DomainManager.idl

    interface Policy;                    // Chapter  4, CORBA_Policy.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 AliasDef;

    interface ArrayDef;

    interface AttributeDef;

    interface ConstantDef;

    interface Contained;

    interface Container;

    interface EnumDef;

    interface ExceptionDef;

    interface FixedDef;

    interface IDLType;

    interface InterfaceDef;

    interface AbstractInterfaceDef; // CORBA 2.4

    interface LocalInterfaceDef; // CORBA 2.4

    interface IRObject;

    interface ModuleDef;

    interface NativeDef;

    interface OperationDef;

    interface PrimitiveDef;

    interface Repository;

    interface SequenceDef;

    interface StringDef;

    interface StructDef;
    // Removed. Already defined.
    //    interface TypeCode;

    interface TypedefDef;

    interface UnionDef;

    interface ValueDef;

    interface ValueBoxDef;

    interface ValueMemberDef;

    interface WstringDef;
};

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

#include <CORBA_ORB.idl>

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

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

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

#endif // _ORB_IDL_

