// **********************************************************************
//
// 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_OADProcessEndpoint_h__
#define __OB_OADProcessEndpoint_h__

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


#include <OB/IMRTypes.h>
#include <OB/OADProcessEndpoint_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_OAD
{

class ProcessEndpointManager;
typedef ProcessEndpointManager* ProcessEndpointManager_ptr;

class ProcessEndpoint;
typedef ProcessEndpoint* ProcessEndpoint_ptr;

} // End of namespace OBStubImpl_OAD

void OBDuplicate(OBStubImpl_OAD::ProcessEndpointManager_ptr);
void OBRelease(OBStubImpl_OAD::ProcessEndpointManager_ptr);

void OBDuplicate(OBStubImpl_OAD::ProcessEndpoint_ptr);
void OBRelease(OBStubImpl_OAD::ProcessEndpoint_ptr);

namespace OBStubImpl_OAD
{

typedef OB::ObjVar< ProcessEndpointManager > ProcessEndpointManager_var;

typedef OB::ObjVar< ProcessEndpoint > ProcessEndpoint_var;

} // End of namespace OBStubImpl_OAD

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

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

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

OB_IMPORT extern OB::TypeCodeConst _tc_AlreadyLinked;

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ProcessEndpointManager() { }
    virtual ~ProcessEndpointManager() { }

    typedef ProcessEndpointManager_ptr _ptr_type;
    typedef ProcessEndpointManager_var _var_type;

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

    static inline ProcessEndpointManager_ptr
    _nil()
    {
        return 0;
    }

    static ProcessEndpointManager_ptr _narrow(::CORBA::Object_ptr);
    static ProcessEndpointManager_ptr _unchecked_narrow(::CORBA::Object_ptr);

    static ProcessEndpointManager_ptr _narrow(::CORBA::AbstractBase_ptr);
    static ProcessEndpointManager_ptr _unchecked_narrow(::CORBA::AbstractBase_ptr);

    static const char** _OB_staticIds();

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    virtual void establish_link(const char* server,
                                const char* id,
                                ::IMR::ProcessID pid,
                                ProcessEndpoint_ptr endpoint) = 0;
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ProcessEndpoint() { }
    virtual ~ProcessEndpoint() { }

    typedef ProcessEndpoint_ptr _ptr_type;
    typedef ProcessEndpoint_var _var_type;

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

    static inline ProcessEndpoint_ptr
    _nil()
    {
        return 0;
    }

    static ProcessEndpoint_ptr _narrow(::CORBA::Object_ptr);
    static ProcessEndpoint_ptr _unchecked_narrow(::CORBA::Object_ptr);

    static ProcessEndpoint_ptr _narrow(::CORBA::AbstractBase_ptr);
    static ProcessEndpoint_ptr _unchecked_narrow(::CORBA::AbstractBase_ptr);

    static const char** _OB_staticIds();

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    virtual void reestablish_link(ProcessEndpointManager_ptr endpoint) = 0;

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    virtual void stop() = 0;
};

} // End of namespace OAD

//
// IDL:ooc.com/OAD:1.0
//
namespace OBProxy_OAD
{

//
// IDL:ooc.com/OAD/ProcessEndpointManager:1.0
//
class ProcessEndpointManager : virtual public ::OAD::ProcessEndpointManager,
                               virtual public OBCORBA::Object
{
    ProcessEndpointManager(const ProcessEndpointManager&);
    void operator=(const ProcessEndpointManager&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ProcessEndpointManager() { }
    virtual ~ProcessEndpointManager() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    void establish_link(const char* server,
                        const char* id,
                        ::IMR::ProcessID pid,
                        ::OAD::ProcessEndpoint_ptr endpoint);
};

//
// IDL:ooc.com/OAD/ProcessEndpoint:1.0
//
class ProcessEndpoint : virtual public ::OAD::ProcessEndpoint,
                        virtual public OBCORBA::Object
{
    ProcessEndpoint(const ProcessEndpoint&);
    void operator=(const ProcessEndpoint&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ProcessEndpoint() { }
    virtual ~ProcessEndpoint() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    void reestablish_link(::OAD::ProcessEndpointManager_ptr endpoint);

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    void stop();
};

} // End of namespace OBProxy_OAD

//
// IDL:ooc.com/OAD:1.0
//
namespace OBStubImpl_OAD
{

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

protected:

    ProcessEndpointManager() { }

public:

    static inline ProcessEndpointManager_ptr
    _duplicate(ProcessEndpointManager_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline ProcessEndpointManager_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    virtual void establish_link(const char* server,
                                const char* id,
                                ::IMR::ProcessID pid,
                                ::OAD::ProcessEndpoint_ptr endpoint) = 0;
};

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

protected:

    ProcessEndpoint() { }

public:

    static inline ProcessEndpoint_ptr
    _duplicate(ProcessEndpoint_ptr p)
    {
        if(p)
            p -> _OB_incRef();
        return p;
    }

    static inline ProcessEndpoint_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    virtual void reestablish_link(::OAD::ProcessEndpointManager_ptr endpoint) = 0;

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    virtual void stop() = 0;
};

} // End of namespace OBStubImpl_OAD

//
// IDL:ooc.com/OAD:1.0
//
namespace OBMarshalStubImpl_OAD
{

//
// IDL:ooc.com/OAD/ProcessEndpointManager:1.0
//
class ProcessEndpointManager : virtual public OBStubImpl_OAD::ProcessEndpointManager,
                               virtual public OB::MarshalStubImpl
{
    ProcessEndpointManager(const ProcessEndpointManager&);
    void operator=(const ProcessEndpointManager&);

protected:

    ProcessEndpointManager() { }
    friend class OBProxy_OAD::ProcessEndpointManager;

public:

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    virtual void establish_link(const char* server,
                                const char* id,
                                ::IMR::ProcessID pid,
                                ::OAD::ProcessEndpoint_ptr endpoint);
};

//
// IDL:ooc.com/OAD/ProcessEndpoint:1.0
//
class ProcessEndpoint : virtual public OBStubImpl_OAD::ProcessEndpoint,
                        virtual public OB::MarshalStubImpl
{
    ProcessEndpoint(const ProcessEndpoint&);
    void operator=(const ProcessEndpoint&);

protected:

    ProcessEndpoint() { }
    friend class OBProxy_OAD::ProcessEndpoint;

public:

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    virtual void reestablish_link(::OAD::ProcessEndpointManager_ptr endpoint);

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    virtual void stop();
};

} // End of namespace OBMarshalStubImpl_OAD

//
// IDL:ooc.com/OAD:1.0
//
namespace OBV_OAD
{

} // End of namespace OBV_OAD

//
// IDL:ooc.com/OAD/AlreadyLinked:1.0
//
void operator<<=(::CORBA::Any&, OAD::AlreadyLinked*);
void operator<<=(::CORBA::Any&, const OAD::AlreadyLinked&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const OAD::AlreadyLinked*&);

inline void
operator<<=(::CORBA::Any_var& any, OAD::AlreadyLinked* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const OAD::AlreadyLinked& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const OAD::AlreadyLinked*& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OAD/ProcessEndpointManager:1.0
//
namespace CORBA
{

inline void
release(::OAD::ProcessEndpointManager_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OAD::ProcessEndpointManager_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_OAD::ProcessEndpointManager_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_OAD::ProcessEndpointManager_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, OAD::ProcessEndpointManager_ptr*);
void operator<<=(::CORBA::Any&, OAD::ProcessEndpointManager_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, OAD::ProcessEndpointManager_ptr&);

inline void
operator<<=(::CORBA::Any_var& any, OAD::ProcessEndpointManager_ptr* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, OAD::ProcessEndpointManager_ptr val)
{
    any.inout() <<= val;
}

inline CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, OAD::ProcessEndpointManager_ptr& val)
{
    return any.in() >>= val;
}

//
// IDL:ooc.com/OAD/ProcessEndpoint:1.0
//
namespace CORBA
{

inline void
release(::OAD::ProcessEndpoint_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OAD::ProcessEndpoint_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_OAD::ProcessEndpoint_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_OAD::ProcessEndpoint_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, OAD::ProcessEndpoint_ptr*);
void operator<<=(::CORBA::Any&, OAD::ProcessEndpoint_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, OAD::ProcessEndpoint_ptr&);

inline void
operator<<=(::CORBA::Any_var& any, OAD::ProcessEndpoint_ptr* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, OAD::ProcessEndpoint_ptr val)
{
    any.inout() <<= val;
}

inline CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, OAD::ProcessEndpoint_ptr& val)
{
    return any.in() >>= val;
}

#endif
