// **********************************************************************
//
// 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_IMRState_h__
#define __OB_IMRState_h__

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


#include <OB/OADProcessEndpoint.h>
#include <OB/PIORT.h>
#include <OB/IMRState_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_IMR
{

class ActiveState;
typedef ActiveState* ActiveState_ptr;

class Domain;
typedef Domain* Domain_ptr;

} // End of namespace OBStubImpl_IMR

void OBDuplicate(OBStubImpl_IMR::ActiveState_ptr);
void OBRelease(OBStubImpl_IMR::ActiveState_ptr);

void OBDuplicate(OBStubImpl_IMR::Domain_ptr);
void OBRelease(OBStubImpl_IMR::Domain_ptr);

namespace OBStubImpl_IMR
{

typedef OB::ObjVar< ActiveState > ActiveState_var;

typedef OB::ObjVar< Domain > Domain_var;

} // End of namespace OBStubImpl_IMR

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

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ActiveState() { }
    virtual ~ActiveState() { }

    typedef ActiveState_ptr _ptr_type;
    typedef ActiveState_var _var_type;

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

    static inline ActiveState_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:ooc.com/IMR/ActiveState/set_status:1.0
    //
    virtual void set_status(const char* id,
                            ServerStatus status) = 0;

    //
    // IDL:ooc.com/IMR/ActiveState/poa_create:1.0
    //
    virtual ::PortableInterceptor::ObjectReferenceTemplate* poa_create(POAStatus state,
                                                                       ::PortableInterceptor::ObjectReferenceTemplate* poa_tmpl) = 0;

    //
    // IDL:ooc.com/IMR/ActiveState/poa_status_update:1.0
    //
    virtual void poa_status_update(const POANameSeq& poas,
                                   POAStatus state) = 0;
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    Domain() { }
    virtual ~Domain() { }

    typedef Domain_ptr _ptr_type;
    typedef Domain_var _var_type;

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

    static inline Domain_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:ooc.com/IMR/Domain/registerServer:1.0
    //
    virtual void registerServer(const char* name,
                                const char* exec,
                                const char* host) = 0;

    //
    // IDL:ooc.com/IMR/Domain/startup:1.0
    //
    virtual ActiveState_ptr startup(const char* serverId,
                                    const char* instance,
                                    ::PortableInterceptor::ObjectReferenceTemplate* root_tmpl,
                                    ::OAD::ProcessEndpointManager_out endpoint) = 0;
};

} // End of namespace IMR

//
// IDL:ooc.com/IMR:1.0
//
namespace OBProxy_IMR
{

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ActiveState() { }
    virtual ~ActiveState() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:ooc.com/IMR/ActiveState/set_status:1.0
    //
    void set_status(const char* id,
                    ::IMR::ServerStatus status);

    //
    // IDL:ooc.com/IMR/ActiveState/poa_create:1.0
    //
    ::PortableInterceptor::ObjectReferenceTemplate* poa_create(::IMR::POAStatus state,
                                                               ::PortableInterceptor::ObjectReferenceTemplate* poa_tmpl);

    //
    // IDL:ooc.com/IMR/ActiveState/poa_status_update:1.0
    //
    void poa_status_update(const ::IMR::POANameSeq& poas,
                           ::IMR::POAStatus state);
};

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    Domain() { }
    virtual ~Domain() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:ooc.com/IMR/Domain/registerServer:1.0
    //
    void registerServer(const char* name,
                        const char* exec,
                        const char* host);

    //
    // IDL:ooc.com/IMR/Domain/startup:1.0
    //
    ::IMR::ActiveState_ptr startup(const char* serverId,
                                   const char* instance,
                                   ::PortableInterceptor::ObjectReferenceTemplate* root_tmpl,
                                   ::OAD::ProcessEndpointManager_out endpoint);
};

} // End of namespace OBProxy_IMR

//
// IDL:ooc.com/IMR:1.0
//
namespace OBStubImpl_IMR
{

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

protected:

    ActiveState() { }

public:

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

    static inline ActiveState_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:ooc.com/IMR/ActiveState/set_status:1.0
    //
    virtual void set_status(const char* id,
                            ::IMR::ServerStatus status) = 0;

    //
    // IDL:ooc.com/IMR/ActiveState/poa_create:1.0
    //
    virtual ::PortableInterceptor::ObjectReferenceTemplate* poa_create(::IMR::POAStatus state,
                                                                       ::PortableInterceptor::ObjectReferenceTemplate* poa_tmpl) = 0;

    //
    // IDL:ooc.com/IMR/ActiveState/poa_status_update:1.0
    //
    virtual void poa_status_update(const ::IMR::POANameSeq& poas,
                                   ::IMR::POAStatus state) = 0;
};

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

protected:

    Domain() { }

public:

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

    static inline Domain_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:ooc.com/IMR/Domain/registerServer:1.0
    //
    virtual void registerServer(const char* name,
                                const char* exec,
                                const char* host) = 0;

    //
    // IDL:ooc.com/IMR/Domain/startup:1.0
    //
    virtual ::IMR::ActiveState_ptr startup(const char* serverId,
                                           const char* instance,
                                           ::PortableInterceptor::ObjectReferenceTemplate* root_tmpl,
                                           ::OAD::ProcessEndpointManager_out endpoint) = 0;
};

} // End of namespace OBStubImpl_IMR

//
// IDL:ooc.com/IMR:1.0
//
namespace OBMarshalStubImpl_IMR
{

//
// IDL:ooc.com/IMR/ActiveState:1.0
//
class ActiveState : virtual public OBStubImpl_IMR::ActiveState,
                    virtual public OB::MarshalStubImpl
{
    ActiveState(const ActiveState&);
    void operator=(const ActiveState&);

protected:

    ActiveState() { }
    friend class OBProxy_IMR::ActiveState;

public:

    //
    // IDL:ooc.com/IMR/ActiveState/set_status:1.0
    //
    virtual void set_status(const char* id,
                            ::IMR::ServerStatus status);

    //
    // IDL:ooc.com/IMR/ActiveState/poa_create:1.0
    //
    virtual ::PortableInterceptor::ObjectReferenceTemplate* poa_create(::IMR::POAStatus state,
                                                                       ::PortableInterceptor::ObjectReferenceTemplate* poa_tmpl);

    //
    // IDL:ooc.com/IMR/ActiveState/poa_status_update:1.0
    //
    virtual void poa_status_update(const ::IMR::POANameSeq& poas,
                                   ::IMR::POAStatus state);
};

//
// IDL:ooc.com/IMR/Domain:1.0
//
class Domain : virtual public OBStubImpl_IMR::Domain,
               virtual public OB::MarshalStubImpl
{
    Domain(const Domain&);
    void operator=(const Domain&);

protected:

    Domain() { }
    friend class OBProxy_IMR::Domain;

public:

    //
    // IDL:ooc.com/IMR/Domain/registerServer:1.0
    //
    virtual void registerServer(const char* name,
                                const char* exec,
                                const char* host);

    //
    // IDL:ooc.com/IMR/Domain/startup:1.0
    //
    virtual ::IMR::ActiveState_ptr startup(const char* serverId,
                                           const char* instance,
                                           ::PortableInterceptor::ObjectReferenceTemplate* root_tmpl,
                                           ::OAD::ProcessEndpointManager_out endpoint);
};

} // End of namespace OBMarshalStubImpl_IMR

//
// IDL:ooc.com/IMR:1.0
//
namespace OBV_IMR
{

} // End of namespace OBV_IMR

//
// IDL:ooc.com/IMR/ActiveState:1.0
//
namespace CORBA
{

inline void
release(::IMR::ActiveState_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::IMR::ActiveState_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_IMR::ActiveState_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_IMR::ActiveState_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

//
// IDL:ooc.com/IMR/Domain:1.0
//
namespace CORBA
{

inline void
release(::IMR::Domain_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::IMR::Domain_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_IMR::Domain_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_IMR::Domain_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

#endif
