// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 2003
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 4.1.3

#ifndef __OB_OBORB_h__
#define __OB_OBORB_h__

#ifndef OB_IMPORT
#   ifdef OB_DLL
#      define OB_IMPORT __declspec(dllimport)
#   else
#      define OB_IMPORT /**/
#   endif
#endif


#include <OB/Policy.h>
#include <OB/OBPolicies.h>
#include <OB/Messaging.h>
#include <OB/IFR1.h>
#include <OB/ServiceInfo.h>
#include <OB/Native.h>
#include <OB/OBORB_fwd.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

namespace OBStubImpl_CORBA
{

} // End of namespace OBStubImpl_CORBA

namespace OBStubImpl_OB
{

} // End of namespace OBStubImpl_OB

namespace OBStubImpl_OBCORBA
{

} // End of namespace OBStubImpl_OBCORBA

namespace OBStubImpl_CORBA
{

} // End of namespace OBStubImpl_CORBA

namespace OBStubImpl_OB
{

} // End of namespace OBStubImpl_OB

namespace OBStubImpl_OBCORBA
{

} // End of namespace OBStubImpl_OBCORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace CORBA
{

//
// IDL:omg.org/CORBA/ORB:2.3
//
class ORB : virtual public ::CORBA::Object
{
    ORB(const ORB&);
    void operator=(const ORB&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ORB() { }
    virtual ~ORB() { }

    typedef ORB_ptr _ptr_type;
    typedef ORB_var _var_type;

    static inline ORB_ptr
    _duplicate(ORB_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline ORB_ptr
    _nil()
    {
        return 0;
    }

    static ORB_ptr _narrow(::CORBA::Object_ptr);

    static ORB_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:omg.org/CORBA/ORB/ObjectId:1.0
    //
    typedef char* ObjectId;
    typedef ::CORBA::String_var ObjectId_var;
    typedef ::CORBA::String_out ObjectId_out;

    //
    // IDL:omg.org/CORBA/ORB/ObjectIdList:1.0
    //
    class OBUnique_ObjectIdList { };

    typedef OB::StrSeq< OBUnique_ObjectIdList > ObjectIdList;
    typedef OB::SeqVar< OB::StrSeq< OBUnique_ObjectIdList > > ObjectIdList_var;
    typedef OB::SeqOut< OB::StrSeq< OBUnique_ObjectIdList > > ObjectIdList_out;

    //
    // IDL:omg.org/CORBA/ORB/InvalidName:1.0
    //
    struct InvalidName : public ::CORBA::UserException
    {
        InvalidName() { }
        InvalidName(const InvalidName&);
        InvalidName& operator=(const InvalidName&);

        static InvalidName* _downcast(::CORBA::Exception*);
        static const InvalidName* _downcast(const ::CORBA::Exception*);
        virtual const char* _name() const;
        virtual void _raise() const { throw *this; }
        virtual const char* _rep_id() const;
        virtual char* _to_string() const;

        virtual ::CORBA::Exception* _OB_clone() const;
        virtual void _OB_insertInAny(::CORBA::Any&);

        static void _OB_unmarshal(InvalidName&, OB::InputStreamImpl*);
    };

    //
    // IDL:omg.org/CORBA/ORB/object_to_string:1.0
    //
    virtual char* object_to_string(::CORBA::Object_ptr obj) = 0;

    //
    // IDL:omg.org/CORBA/ORB/string_to_object:1.0
    //
    virtual ::CORBA::Object_ptr string_to_object(const char* str) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_list:1.0
    //
    virtual void create_list(::CORBA::Long count,
                             NVList_out new_list) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_operation_list:1.0
    //
    virtual void create_operation_list(OperationDef_ptr oper,
                                       NVList_out new_list) = 0;

    //
    // IDL:omg.org/CORBA/ORB/get_default_context:1.0
    //
    virtual void get_default_context(Context_out ctx) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_named_value:1.0
    //
    virtual void create_named_value(NamedValue_out nmval) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_exception_list:1.0
    //
    virtual void create_exception_list(ExceptionList_out exclist) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_context_list:1.0
    //
    virtual void create_context_list(ContextList_out ctxtlist) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_environment:1.0
    //
    virtual void create_environment(Environment_out new_env) = 0;

    //
    // IDL:omg.org/CORBA/ORB/RequestSeq:1.0
    //
    class OBUnique_RequestSeq { };

    typedef OB::ObjSeq< Request, OBUnique_RequestSeq > RequestSeq;
    typedef OB::SeqVar< OB::ObjSeq< Request, OBUnique_RequestSeq > > RequestSeq_var;
    typedef OB::SeqOut< OB::ObjSeq< Request, OBUnique_RequestSeq > > RequestSeq_out;

    //
    // IDL:omg.org/CORBA/ORB/send_multiple_requests_oneway:1.0
    //
    virtual void send_multiple_requests_oneway(const RequestSeq& req) = 0;

    //
    // IDL:omg.org/CORBA/ORB/send_multiple_requests_deferred:1.0
    //
    virtual void send_multiple_requests_deferred(const RequestSeq& req) = 0;

    //
    // IDL:omg.org/CORBA/ORB/poll_next_response:1.0
    //
    virtual ::CORBA::Boolean poll_next_response() = 0;

    //
    // IDL:omg.org/CORBA/ORB/get_next_response:1.0
    //
    virtual void get_next_response(Request_out req) = 0;

    //
    // IDL:omg.org/CORBA/ORB/get_service_information:1.0
    //
    virtual ::CORBA::Boolean get_service_information(ServiceType service_type,
                                                     ServiceInformation_out service_information) = 0;

    //
    // IDL:omg.org/CORBA/ORB/list_initial_services:1.0
    //
    virtual ObjectIdList* list_initial_services() = 0;

    //
    // IDL:omg.org/CORBA/ORB/resolve_initial_references:1.0
    //
    virtual ::CORBA::Object_ptr resolve_initial_references(const char* identifier) = 0;

    //
    // IDL:omg.org/CORBA/ORB/register_initial_reference:1.0
    //
    virtual void register_initial_reference(const char* id,
                                            ::CORBA::Object_ptr obj) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_struct_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_struct_tc(const char* id,
                                                   const char* name,
                                                   const StructMemberSeq& members) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_union_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_union_tc(const char* id,
                                                  const char* name,
                                                  ::CORBA::TypeCode_ptr discriminator_type,
                                                  const UnionMemberSeq& members) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_enum_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_enum_tc(const char* id,
                                                 const char* name,
                                                 const EnumMemberSeq& members) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_alias_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_alias_tc(const char* id,
                                                  const char* name,
                                                  ::CORBA::TypeCode_ptr original_type) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_exception_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_exception_tc(const char* id,
                                                      const char* name,
                                                      const StructMemberSeq& members) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_interface_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_interface_tc(const char* id,
                                                      const char* name) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_string_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_string_tc(::CORBA::ULong bound) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_wstring_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_wstring_tc(::CORBA::ULong bound) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_fixed_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_fixed_tc(::CORBA::UShort digits,
                                                  ::CORBA::Short scale) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_sequence_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_sequence_tc(::CORBA::ULong bound,
                                                     ::CORBA::TypeCode_ptr element_type) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_array_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_array_tc(::CORBA::ULong length,
                                                  ::CORBA::TypeCode_ptr element_type) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_value_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_value_tc(const char* id,
                                                  const char* name,
                                                  ValueModifier type_modifier,
                                                  ::CORBA::TypeCode_ptr concrete_base,
                                                  const ValueMemberSeq& members) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_value_box_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_value_box_tc(const char* id,
                                                      const char* name,
                                                      ::CORBA::TypeCode_ptr boxed_type) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_native_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_native_tc(const char* id,
                                                   const char* name) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_recursive_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_recursive_tc(const char* id) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_abstract_interface_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_abstract_interface_tc(const char* id,
                                                               const char* name) = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_local_interface_tc:1.0
    //
    virtual ::CORBA::TypeCode_ptr create_local_interface_tc(const char* id,
                                                            const char* name) = 0;

    //
    // IDL:omg.org/CORBA/ORB/work_pending:1.0
    //
    virtual ::CORBA::Boolean work_pending() = 0;

    //
    // IDL:omg.org/CORBA/ORB/perform_work:1.0
    //
    virtual void perform_work() = 0;

    //
    // IDL:omg.org/CORBA/ORB/run:1.0
    //
    virtual void run() = 0;

    //
    // IDL:omg.org/CORBA/ORB/shutdown:1.0
    //
    virtual void shutdown(::CORBA::Boolean wait_for_completion) = 0;

    //
    // IDL:omg.org/CORBA/ORB/destroy:1.0
    //
    virtual void destroy() = 0;

    //
    // IDL:omg.org/CORBA/ORB/create_policy:1.0
    //
    virtual Policy_ptr create_policy(PolicyType type,
                                     const ::CORBA::Any& val) = 0;

    //
    // IDL:omg.org/CORBA/ORB/register_value_factory:1.0
    //
    virtual ValueFactory register_value_factory(const char* id,
                                                ValueFactory fact) = 0;

    //
    // IDL:omg.org/CORBA/ORB/unregister_value_factory:1.0
    //
    virtual void unregister_value_factory(const char* id) = 0;

    //
    // IDL:omg.org/CORBA/ORB/lookup_value_factory:1.0
    //
    virtual ValueFactory lookup_value_factory(const char* id) = 0;
};

} // End of namespace CORBA

//
// IDL:ooc.com/OB:1.0
//
namespace OB
{

//
// IDL:ooc.com/OB/PropertySet:1.0
//
typedef OBNative_OB::PropertySet PropertySet;

} // End of namespace OB

//
// IDL:ooc.com/OBCORBA:1.0
//
namespace OBCORBA
{

//
// IDL:ooc.com/OBCORBA/ORB:1.0
//
class ORB : virtual public ::CORBA::ORB
{
    ORB(const ORB&);
    void operator=(const ORB&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ORB() { }
    virtual ~ORB() { }

    typedef ORB_ptr _ptr_type;
    typedef ORB_var _var_type;

    static inline ORB_ptr
    _duplicate(ORB_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline ORB_ptr
    _nil()
    {
        return 0;
    }

    static ORB_ptr _narrow(::CORBA::Object_ptr);

    static ORB_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OBCORBA/ORB/properties:1.0
    //
    virtual ::OB::PropertySet properties() = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/logger:1.0
    //
    virtual ::OB::Logger_ptr logger() = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/reactor:1.0
    //
    virtual ::OB::Reactor_ptr reactor() = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/set_unknown_exception_strategy:1.0
    //
    virtual ::OB::UnknownExceptionStrategy_ptr set_unknown_exception_strategy(::OB::UnknownExceptionStrategy_ptr strategy) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_connection_reuse_policy:1.0
    //
    virtual ::OB::ConnectionReusePolicy_ptr create_connection_reuse_policy(::CORBA::Boolean value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_protocol_policy:1.0
    //
    virtual ::OB::ProtocolPolicy_ptr create_protocol_policy(const ::OCI::PluginIdSeq& value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_retry_policy:1.0
    //
    virtual ::OB::RetryPolicy_ptr create_retry_policy(::CORBA::Short mode,
                                                      ::CORBA::ULong interval,
                                                      ::CORBA::ULong max,
                                                      ::CORBA::Boolean remote) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_timeout_policy:1.0
    //
    virtual ::OB::TimeoutPolicy_ptr create_timeout_policy(::CORBA::ULong value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_location_transparency_policy:1.0
    //
    virtual ::OB::LocationTransparencyPolicy_ptr create_location_transparency_policy(::CORBA::Short value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_sync_scope_policy:1.0
    //
    virtual ::Messaging::SyncScopePolicy_ptr create_sync_scope_policy(::Messaging::SyncScope value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_interceptor_policy:1.0
    //
    virtual ::OB::InterceptorPolicy_ptr create_interceptor_policy(::CORBA::Boolean value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_connection_timeout_policy:1.0
    //
    virtual ::OB::ConnectTimeoutPolicy_ptr create_connection_timeout_policy(::CORBA::ULong value) = 0;

    //
    // IDL:ooc.com/OBCORBA/ORB/create_request_timeout_policy:1.0
    //
    virtual ::OB::RequestTimeoutPolicy_ptr create_request_timeout_policy(::CORBA::ULong value) = 0;
};

} // End of namespace OBCORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace OBProxy_CORBA
{

} // End of namespace OBProxy_CORBA

//
// IDL:ooc.com/OB:1.0
//
namespace OBProxy_OB
{

} // End of namespace OBProxy_OB

//
// IDL:ooc.com/OBCORBA:1.0
//
namespace OBProxy_OBCORBA
{

} // End of namespace OBProxy_OBCORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace OBStubImpl_CORBA
{

} // End of namespace OBStubImpl_CORBA

//
// IDL:ooc.com/OB:1.0
//
namespace OBStubImpl_OB
{

} // End of namespace OBStubImpl_OB

//
// IDL:ooc.com/OBCORBA:1.0
//
namespace OBStubImpl_OBCORBA
{

} // End of namespace OBStubImpl_OBCORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace OBMarshalStubImpl_CORBA
{

} // End of namespace OBMarshalStubImpl_CORBA

//
// IDL:ooc.com/OB:1.0
//
namespace OBMarshalStubImpl_OB
{

} // End of namespace OBMarshalStubImpl_OB

//
// IDL:ooc.com/OBCORBA:1.0
//
namespace OBMarshalStubImpl_OBCORBA
{

} // End of namespace OBMarshalStubImpl_OBCORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace OBV_CORBA
{

} // End of namespace OBV_CORBA

//
// IDL:ooc.com/OB:1.0
//
namespace OBV_OB
{

} // End of namespace OBV_OB

//
// IDL:ooc.com/OBCORBA:1.0
//
namespace OBV_OBCORBA
{

} // End of namespace OBV_OBCORBA

//
// IDL:omg.org/CORBA/ORB:2.3
//
namespace CORBA
{

inline void
release(::CORBA::ORB_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::ORB_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OBCORBA/ORB:1.0
//
namespace CORBA
{

inline void
release(::OBCORBA::ORB_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBCORBA::ORB_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

#endif
