// **********************************************************************
//
// 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_URL_h__
#define __OB_URL_h__

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


#include <OB/IOP.h>
#include <OB/URL_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_OB
{

} // End of namespace OBStubImpl_OB

namespace OBStubImpl_OB
{

} // End of namespace OBStubImpl_OB

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

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    URLRegistry() { }
    virtual ~URLRegistry() { }

    typedef URLRegistry_ptr _ptr_type;
    typedef URLRegistry_var _var_type;

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

    static inline URLRegistry_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OB/URLRegistry/SchemeAlreadyExists:1.0
    //
    struct SchemeAlreadyExists : public ::CORBA::UserException
    {
        SchemeAlreadyExists() { }
        SchemeAlreadyExists(const SchemeAlreadyExists&);
        SchemeAlreadyExists& operator=(const SchemeAlreadyExists&);

        static SchemeAlreadyExists* _downcast(::CORBA::Exception*);
        static const SchemeAlreadyExists* _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(SchemeAlreadyExists&, OB::InputStreamImpl*);
    };

    //
    // IDL:ooc.com/OB/URLRegistry/add_scheme:1.0
    //
    virtual void add_scheme(URLScheme_ptr scheme) = 0;

    //
    // IDL:ooc.com/OB/URLRegistry/find_scheme:1.0
    //
    virtual URLScheme_ptr find_scheme(const char* name) = 0;

    //
    // IDL:ooc.com/OB/URLRegistry/parse_url:1.0
    //
    virtual ::CORBA::Object_ptr parse_url(const char* url) = 0;

    //
    // IDL:ooc.com/OB/URLRegistry/destroy:1.0
    //
    virtual void destroy() = 0;
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    URLScheme() { }
    virtual ~URLScheme() { }

    typedef URLScheme_ptr _ptr_type;
    typedef URLScheme_var _var_type;

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

    static inline URLScheme_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OB/URLScheme/name:1.0
    //
    virtual char* name() = 0;

    //
    // IDL:ooc.com/OB/URLScheme/parse_url:1.0
    //
    virtual ::CORBA::Object_ptr parse_url(const char* url) = 0;

    //
    // IDL:ooc.com/OB/URLScheme/destroy:1.0
    //
    virtual void destroy() = 0;
};

//
// IDL:ooc.com/OB/CorbalocURLScheme:1.0
//
class CorbalocURLScheme : virtual public ::OB::URLScheme
{
    CorbalocURLScheme(const CorbalocURLScheme&);
    void operator=(const CorbalocURLScheme&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    CorbalocURLScheme() { }
    virtual ~CorbalocURLScheme() { }

    typedef CorbalocURLScheme_ptr _ptr_type;
    typedef CorbalocURLScheme_var _var_type;

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

    static inline CorbalocURLScheme_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OB/CorbalocURLScheme/ProtocolAlreadyExists:1.0
    //
    struct ProtocolAlreadyExists : public ::CORBA::UserException
    {
        ProtocolAlreadyExists() { }
        ProtocolAlreadyExists(const ProtocolAlreadyExists&);
        ProtocolAlreadyExists& operator=(const ProtocolAlreadyExists&);

        static ProtocolAlreadyExists* _downcast(::CORBA::Exception*);
        static const ProtocolAlreadyExists* _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(ProtocolAlreadyExists&, OB::InputStreamImpl*);
    };

    //
    // IDL:ooc.com/OB/CorbalocURLScheme/add_protocol:1.0
    //
    virtual void add_protocol(CorbalocProtocol_ptr protocol) = 0;

    //
    // IDL:ooc.com/OB/CorbalocURLScheme/find_protocol:1.0
    //
    virtual CorbalocProtocol_ptr find_protocol(const char* name) = 0;
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    CorbalocProtocol() { }
    virtual ~CorbalocProtocol() { }

    typedef CorbalocProtocol_ptr _ptr_type;
    typedef CorbalocProtocol_var _var_type;

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

    static inline CorbalocProtocol_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OB/CorbalocProtocol/name:1.0
    //
    virtual char* name() = 0;

    //
    // IDL:ooc.com/OB/CorbalocProtocol/ObjectKey:1.0
    //
    class OBUnique_ObjectKey { };

    typedef OB::FixSeq< ::CORBA::Octet, OBUnique_ObjectKey > ObjectKey;
    typedef OB::SeqVar< OB::FixSeq< ::CORBA::Octet, OBUnique_ObjectKey > > ObjectKey_var;
    typedef OB::SeqOut< OB::FixSeq< ::CORBA::Octet, OBUnique_ObjectKey > > ObjectKey_out;

    //
    // IDL:ooc.com/OB/CorbalocProtocol/parse_address:1.0
    //
    virtual ::IOP::TaggedProfile* parse_address(const char* addr,
                                                const ObjectKey& key) = 0;

    //
    // IDL:ooc.com/OB/CorbalocProtocol/destroy:1.0
    //
    virtual void destroy() = 0;
};

} // End of namespace OB

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

} // End of namespace OBProxy_OB

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

} // End of namespace OBStubImpl_OB

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

} // End of namespace OBMarshalStubImpl_OB

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

} // End of namespace OBV_OB

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

inline void
release(::OB::URLRegistry_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OB::URLRegistry_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

inline void
release(::OB::URLScheme_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OB::URLScheme_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

inline void
release(::OB::CorbalocURLScheme_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OB::CorbalocURLScheme_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

inline void
release(::OB::CorbalocProtocol_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OB::CorbalocProtocol_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

#endif
