// **********************************************************************
//
// 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_OBPOAManager_h__
#define __OB_OBPOAManager_h__

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


#include <OB/POAManager.h>
#include <OB/OCI.h>
#include <OB/OBPOAManager_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_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

namespace OBStubImpl_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

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

//
// IDL:ooc.com/OBPortableServer/POAManager:1.0
//
class POAManager : virtual public ::PortableServer::POAManager
{
    POAManager(const POAManager&);
    void operator=(const POAManager&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    POAManager() { }
    virtual ~POAManager() { }

    typedef POAManager_ptr _ptr_type;
    typedef POAManager_var _var_type;

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

    static inline POAManager_ptr
    _nil()
    {
        return 0;
    }

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

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


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

    //
    // IDL:ooc.com/OBPortableServer/POAManager/get_acceptors:1.0
    //
    virtual ::OCI::AcceptorSeq* get_acceptors() = 0;
};

//
// IDL:ooc.com/OBPortableServer/POAManagerSeq:1.0
//
class OBUnique_POAManagerSeq { };

typedef OB::ObjSeq< POAManager, OBUnique_POAManagerSeq > POAManagerSeq;
typedef OB::SeqVar< OB::ObjSeq< POAManager, OBUnique_POAManagerSeq > > POAManagerSeq_var;
typedef OB::SeqOut< OB::ObjSeq< POAManager, OBUnique_POAManagerSeq > > POAManagerSeq_out;

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    POAManagerFactory() { }
    virtual ~POAManagerFactory() { }

    typedef POAManagerFactory_ptr _ptr_type;
    typedef POAManagerFactory_var _var_type;

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

    static inline POAManagerFactory_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:ooc.com/OBPortableServer/POAManagerFactory/AcceptorConfig:1.0
    //
    struct AcceptorConfig;
    typedef OB::VarVar< AcceptorConfig > AcceptorConfig_var;
    typedef OB::VarOut< AcceptorConfig > AcceptorConfig_out;

    struct AcceptorConfig
    {
        AcceptorConfig() { }
        AcceptorConfig(const AcceptorConfig&);
        AcceptorConfig& operator=(const AcceptorConfig&);

        typedef AcceptorConfig_var _var_type;

        OB::StrForStruct id;
        ::OCI::ParamSeq params;

        void _OB_marshal(OB::OutputStreamImpl*) const;
        static void _OB_unmarshal(AcceptorConfig&, OB::InputStreamImpl*);
    };

    //
    // IDL:ooc.com/OBPortableServer/POAManagerFactory/AcceptorConfigSeq:1.0
    //
    class OBUnique_AcceptorConfigSeq { };

    typedef OB::VarSeq< AcceptorConfig, OBUnique_AcceptorConfigSeq > AcceptorConfigSeq;
    typedef OB::SeqVar< OB::VarSeq< AcceptorConfig, OBUnique_AcceptorConfigSeq > > AcceptorConfigSeq_var;
    typedef OB::SeqOut< OB::VarSeq< AcceptorConfig, OBUnique_AcceptorConfigSeq > > AcceptorConfigSeq_out;

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

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

    //
    // IDL:ooc.com/OBPortableServer/POAManagerFactory/create_poa_manager:1.0
    //
    virtual POAManager_ptr create_poa_manager(const char* name) = 0;

    //
    // IDL:ooc.com/OBPortableServer/POAManagerFactory/create_poa_manager_with_config:1.0
    //
    virtual POAManager_ptr create_poa_manager_with_config(const char* name,
                                                          const AcceptorConfigSeq& config) = 0;

    //
    // IDL:ooc.com/OBPortableServer/POAManagerFactory/get_poa_managers:1.0
    //
    virtual POAManagerSeq* get_poa_managers() = 0;

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

} // End of namespace OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBProxy_OBPortableServer
{

} // End of namespace OBProxy_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBStubImpl_OBPortableServer
{

} // End of namespace OBStubImpl_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBMarshalStubImpl_OBPortableServer
{

} // End of namespace OBMarshalStubImpl_OBPortableServer

//
// IDL:ooc.com/OBPortableServer:1.0
//
namespace OBV_OBPortableServer
{

} // End of namespace OBV_OBPortableServer

//
// IDL:ooc.com/OBPortableServer/POAManager:1.0
//
namespace CORBA
{

inline void
release(::OBPortableServer::POAManager_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBPortableServer::POAManager_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OBPortableServer/POAManagerFactory:1.0
//
namespace CORBA
{

inline void
release(::OBPortableServer::POAManagerFactory_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OBPortableServer::POAManagerFactory_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

#endif
