// **********************************************************************
//
// 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_CosTypedEventChannelAdmin_h__
#define __OB_CosTypedEventChannelAdmin_h__

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


#include <OB/CosEventChannelAdmin.h>
#include <OB/CosTypedEventComm.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 CosTypedEventChannelAdmin
{

class TypedProxyPushConsumer;
typedef TypedProxyPushConsumer* TypedProxyPushConsumer_ptr;
typedef TypedProxyPushConsumer* TypedProxyPushConsumerRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedProxyPushConsumer;

class TypedProxyPullSupplier;
typedef TypedProxyPullSupplier* TypedProxyPullSupplier_ptr;
typedef TypedProxyPullSupplier* TypedProxyPullSupplierRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedProxyPullSupplier;

class TypedSupplierAdmin;
typedef TypedSupplierAdmin* TypedSupplierAdmin_ptr;
typedef TypedSupplierAdmin* TypedSupplierAdminRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedSupplierAdmin;

class TypedConsumerAdmin;
typedef TypedConsumerAdmin* TypedConsumerAdmin_ptr;
typedef TypedConsumerAdmin* TypedConsumerAdminRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedConsumerAdmin;

class TypedEventChannel;
typedef TypedEventChannel* TypedEventChannel_ptr;
typedef TypedEventChannel* TypedEventChannelRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedEventChannel;

} // End of namespace CosTypedEventChannelAdmin

void OBDuplicate(CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr);
void OBRelease(CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr);

void OBMarshal(CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr&, OB::InputStreamImpl*);

void OBDuplicate(CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr);
void OBRelease(CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr);

void OBMarshal(CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr&, OB::InputStreamImpl*);

void OBDuplicate(CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr);
void OBRelease(CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr);

void OBMarshal(CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr&, OB::InputStreamImpl*);

void OBDuplicate(CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr);
void OBRelease(CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr);

void OBMarshal(CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr&, OB::InputStreamImpl*);

void OBDuplicate(CosTypedEventChannelAdmin::TypedEventChannel_ptr);
void OBRelease(CosTypedEventChannelAdmin::TypedEventChannel_ptr);

void OBMarshal(CosTypedEventChannelAdmin::TypedEventChannel_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventChannelAdmin::TypedEventChannel_ptr&, OB::InputStreamImpl*);

namespace CosTypedEventChannelAdmin
{

typedef OB::ObjVar< TypedProxyPushConsumer > TypedProxyPushConsumer_var;
typedef OB::ObjOut< TypedProxyPushConsumer > TypedProxyPushConsumer_out;

typedef OB::ObjVar< TypedProxyPullSupplier > TypedProxyPullSupplier_var;
typedef OB::ObjOut< TypedProxyPullSupplier > TypedProxyPullSupplier_out;

typedef OB::ObjVar< TypedSupplierAdmin > TypedSupplierAdmin_var;
typedef OB::ObjOut< TypedSupplierAdmin > TypedSupplierAdmin_out;

typedef OB::ObjVar< TypedConsumerAdmin > TypedConsumerAdmin_var;
typedef OB::ObjOut< TypedConsumerAdmin > TypedConsumerAdmin_out;

typedef OB::ObjVar< TypedEventChannel > TypedEventChannel_var;
typedef OB::ObjOut< TypedEventChannel > TypedEventChannel_out;

} // End of namespace CosTypedEventChannelAdmin

namespace OBStubImpl_CosTypedEventChannelAdmin
{

class TypedProxyPushConsumer;
typedef TypedProxyPushConsumer* TypedProxyPushConsumer_ptr;

class TypedProxyPullSupplier;
typedef TypedProxyPullSupplier* TypedProxyPullSupplier_ptr;

class TypedSupplierAdmin;
typedef TypedSupplierAdmin* TypedSupplierAdmin_ptr;

class TypedConsumerAdmin;
typedef TypedConsumerAdmin* TypedConsumerAdmin_ptr;

class TypedEventChannel;
typedef TypedEventChannel* TypedEventChannel_ptr;

} // End of namespace OBStubImpl_CosTypedEventChannelAdmin

void OBDuplicate(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr);
void OBRelease(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr);

void OBDuplicate(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr);
void OBRelease(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr);

void OBDuplicate(OBStubImpl_CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr);
void OBRelease(OBStubImpl_CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr);

void OBDuplicate(OBStubImpl_CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr);
void OBRelease(OBStubImpl_CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr);

void OBDuplicate(OBStubImpl_CosTypedEventChannelAdmin::TypedEventChannel_ptr);
void OBRelease(OBStubImpl_CosTypedEventChannelAdmin::TypedEventChannel_ptr);

namespace OBStubImpl_CosTypedEventChannelAdmin
{

typedef OB::ObjVar< TypedProxyPushConsumer > TypedProxyPushConsumer_var;

typedef OB::ObjVar< TypedProxyPullSupplier > TypedProxyPullSupplier_var;

typedef OB::ObjVar< TypedSupplierAdmin > TypedSupplierAdmin_var;

typedef OB::ObjVar< TypedConsumerAdmin > TypedConsumerAdmin_var;

typedef OB::ObjVar< TypedEventChannel > TypedEventChannel_var;

} // End of namespace OBStubImpl_CosTypedEventChannelAdmin

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

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

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

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_InterfaceNotSupported;

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

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

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_NoSuchImplementation;

//
// IDL:omg.org/CosTypedEventChannelAdmin/Key:1.0
//
typedef char* Key;
typedef ::CORBA::String_var Key_var;
typedef ::CORBA::String_out Key_out;
OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_Key;

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0
//
class TypedProxyPushConsumer : virtual public ::CosEventChannelAdmin::ProxyPushConsumer,
                               virtual public ::CosTypedEventComm::TypedPushConsumer
{
    TypedProxyPushConsumer(const TypedProxyPushConsumer&);
    void operator=(const TypedProxyPushConsumer&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedProxyPushConsumer() { }
    virtual ~TypedProxyPushConsumer() { }

    typedef TypedProxyPushConsumer_ptr _ptr_type;
    typedef TypedProxyPushConsumer_var _var_type;

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

    static inline TypedProxyPushConsumer_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0
//
class TypedProxyPullSupplier : virtual public ::CosEventChannelAdmin::ProxyPullSupplier,
                               virtual public ::CosTypedEventComm::TypedPullSupplier
{
    TypedProxyPullSupplier(const TypedProxyPullSupplier&);
    void operator=(const TypedProxyPullSupplier&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedProxyPullSupplier() { }
    virtual ~TypedProxyPullSupplier() { }

    typedef TypedProxyPullSupplier_ptr _ptr_type;
    typedef TypedProxyPullSupplier_var _var_type;

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

    static inline TypedProxyPullSupplier_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0
//
class TypedSupplierAdmin : virtual public ::CosEventChannelAdmin::SupplierAdmin
{
    TypedSupplierAdmin(const TypedSupplierAdmin&);
    void operator=(const TypedSupplierAdmin&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedSupplierAdmin() { }
    virtual ~TypedSupplierAdmin() { }

    typedef TypedSupplierAdmin_ptr _ptr_type;
    typedef TypedSupplierAdmin_var _var_type;

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

    static inline TypedSupplierAdmin_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_push_consumer:1.0
    //
    virtual TypedProxyPushConsumer_ptr obtain_typed_push_consumer(const char* supported_interface) = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_pull_consumer:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_typed_pull_consumer(const char* uses_interface) = 0;
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0
//
class TypedConsumerAdmin : virtual public ::CosEventChannelAdmin::ConsumerAdmin
{
    TypedConsumerAdmin(const TypedConsumerAdmin&);
    void operator=(const TypedConsumerAdmin&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedConsumerAdmin() { }
    virtual ~TypedConsumerAdmin() { }

    typedef TypedConsumerAdmin_ptr _ptr_type;
    typedef TypedConsumerAdmin_var _var_type;

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

    static inline TypedConsumerAdmin_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_pull_supplier:1.0
    //
    virtual TypedProxyPullSupplier_ptr obtain_typed_pull_supplier(const char* supported_interface) = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_push_supplier:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_typed_push_supplier(const char* uses_interface) = 0;
};

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

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedEventChannel() { }
    virtual ~TypedEventChannel() { }

    typedef TypedEventChannel_ptr _ptr_type;
    typedef TypedEventChannel_var _var_type;

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

    static inline TypedEventChannel_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_consumers:1.0
    //
    virtual TypedConsumerAdmin_ptr for_consumers() = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_suppliers:1.0
    //
    virtual TypedSupplierAdmin_ptr for_suppliers() = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/destroy:1.0
    //
    virtual void destroy() = 0;
};

} // End of namespace CosTypedEventChannelAdmin

//
// IDL:omg.org/CosTypedEventChannelAdmin:1.0
//
namespace OBProxy_CosTypedEventChannelAdmin
{

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0
//
class TypedProxyPushConsumer : virtual public ::CosTypedEventChannelAdmin::TypedProxyPushConsumer,
                               virtual public OBProxy_CosEventChannelAdmin::ProxyPushConsumer,
                               virtual public OBProxy_CosTypedEventComm::TypedPushConsumer
{
    TypedProxyPushConsumer(const TypedProxyPushConsumer&);
    void operator=(const TypedProxyPushConsumer&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedProxyPushConsumer() { }
    virtual ~TypedProxyPushConsumer() { }

    virtual const char** _OB_ids() const;
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0
//
class TypedProxyPullSupplier : virtual public ::CosTypedEventChannelAdmin::TypedProxyPullSupplier,
                               virtual public OBProxy_CosEventChannelAdmin::ProxyPullSupplier,
                               virtual public OBProxy_CosTypedEventComm::TypedPullSupplier
{
    TypedProxyPullSupplier(const TypedProxyPullSupplier&);
    void operator=(const TypedProxyPullSupplier&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedProxyPullSupplier() { }
    virtual ~TypedProxyPullSupplier() { }

    virtual const char** _OB_ids() const;
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0
//
class TypedSupplierAdmin : virtual public ::CosTypedEventChannelAdmin::TypedSupplierAdmin,
                           virtual public OBProxy_CosEventChannelAdmin::SupplierAdmin
{
    TypedSupplierAdmin(const TypedSupplierAdmin&);
    void operator=(const TypedSupplierAdmin&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedSupplierAdmin() { }
    virtual ~TypedSupplierAdmin() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_push_consumer:1.0
    //
    ::CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr obtain_typed_push_consumer(const char* supported_interface);

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_pull_consumer:1.0
    //
    ::CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_typed_pull_consumer(const char* uses_interface);
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0
//
class TypedConsumerAdmin : virtual public ::CosTypedEventChannelAdmin::TypedConsumerAdmin,
                           virtual public OBProxy_CosEventChannelAdmin::ConsumerAdmin
{
    TypedConsumerAdmin(const TypedConsumerAdmin&);
    void operator=(const TypedConsumerAdmin&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedConsumerAdmin() { }
    virtual ~TypedConsumerAdmin() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_pull_supplier:1.0
    //
    ::CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr obtain_typed_pull_supplier(const char* supported_interface);

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_push_supplier:1.0
    //
    ::CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_typed_push_supplier(const char* uses_interface);
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel:1.0
//
class TypedEventChannel : virtual public ::CosTypedEventChannelAdmin::TypedEventChannel,
                          virtual public OBCORBA::Object
{
    TypedEventChannel(const TypedEventChannel&);
    void operator=(const TypedEventChannel&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedEventChannel() { }
    virtual ~TypedEventChannel() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_consumers:1.0
    //
    ::CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr for_consumers();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_suppliers:1.0
    //
    ::CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr for_suppliers();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/destroy:1.0
    //
    void destroy();
};

} // End of namespace OBProxy_CosTypedEventChannelAdmin

//
// IDL:omg.org/CosTypedEventChannelAdmin:1.0
//
namespace OBStubImpl_CosTypedEventChannelAdmin
{

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0
//
class TypedProxyPushConsumer : virtual public OBStubImpl_CosEventChannelAdmin::ProxyPushConsumer,
                               virtual public OBStubImpl_CosTypedEventComm::TypedPushConsumer
{
    TypedProxyPushConsumer(const TypedProxyPushConsumer&);
    void operator=(const TypedProxyPushConsumer&);

protected:

    TypedProxyPushConsumer() { }

public:

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

    static inline TypedProxyPushConsumer_ptr
    _nil()
    {
        return 0;
    }
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0
//
class TypedProxyPullSupplier : virtual public OBStubImpl_CosEventChannelAdmin::ProxyPullSupplier,
                               virtual public OBStubImpl_CosTypedEventComm::TypedPullSupplier
{
    TypedProxyPullSupplier(const TypedProxyPullSupplier&);
    void operator=(const TypedProxyPullSupplier&);

protected:

    TypedProxyPullSupplier() { }

public:

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

    static inline TypedProxyPullSupplier_ptr
    _nil()
    {
        return 0;
    }
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0
//
class TypedSupplierAdmin : virtual public OBStubImpl_CosEventChannelAdmin::SupplierAdmin
{
    TypedSupplierAdmin(const TypedSupplierAdmin&);
    void operator=(const TypedSupplierAdmin&);

protected:

    TypedSupplierAdmin() { }

public:

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

    static inline TypedSupplierAdmin_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_push_consumer:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr obtain_typed_push_consumer(const char* supported_interface) = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_pull_consumer:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_typed_pull_consumer(const char* uses_interface) = 0;
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0
//
class TypedConsumerAdmin : virtual public OBStubImpl_CosEventChannelAdmin::ConsumerAdmin
{
    TypedConsumerAdmin(const TypedConsumerAdmin&);
    void operator=(const TypedConsumerAdmin&);

protected:

    TypedConsumerAdmin() { }

public:

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

    static inline TypedConsumerAdmin_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_pull_supplier:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr obtain_typed_pull_supplier(const char* supported_interface) = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_push_supplier:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_typed_push_supplier(const char* uses_interface) = 0;
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel:1.0
//
class TypedEventChannel : virtual public OB::StubImplBase
{
    TypedEventChannel(const TypedEventChannel&);
    void operator=(const TypedEventChannel&);

protected:

    TypedEventChannel() { }

public:

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

    static inline TypedEventChannel_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_consumers:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr for_consumers() = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_suppliers:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr for_suppliers() = 0;

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/destroy:1.0
    //
    virtual void destroy() = 0;
};

} // End of namespace OBStubImpl_CosTypedEventChannelAdmin

//
// IDL:omg.org/CosTypedEventChannelAdmin:1.0
//
namespace OBMarshalStubImpl_CosTypedEventChannelAdmin
{

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPushConsumer:1.0
//
class TypedProxyPushConsumer : virtual public OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPushConsumer,
                               virtual public OBMarshalStubImpl_CosEventChannelAdmin::ProxyPushConsumer,
                               virtual public OBMarshalStubImpl_CosTypedEventComm::TypedPushConsumer
{
    TypedProxyPushConsumer(const TypedProxyPushConsumer&);
    void operator=(const TypedProxyPushConsumer&);

protected:

    TypedProxyPushConsumer() { }
    friend class OBProxy_CosTypedEventChannelAdmin::TypedProxyPushConsumer;

public:
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedProxyPullSupplier:1.0
//
class TypedProxyPullSupplier : virtual public OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPullSupplier,
                               virtual public OBMarshalStubImpl_CosEventChannelAdmin::ProxyPullSupplier,
                               virtual public OBMarshalStubImpl_CosTypedEventComm::TypedPullSupplier
{
    TypedProxyPullSupplier(const TypedProxyPullSupplier&);
    void operator=(const TypedProxyPullSupplier&);

protected:

    TypedProxyPullSupplier() { }
    friend class OBProxy_CosTypedEventChannelAdmin::TypedProxyPullSupplier;

public:
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin:1.0
//
class TypedSupplierAdmin : virtual public OBStubImpl_CosTypedEventChannelAdmin::TypedSupplierAdmin,
                           virtual public OBMarshalStubImpl_CosEventChannelAdmin::SupplierAdmin
{
    TypedSupplierAdmin(const TypedSupplierAdmin&);
    void operator=(const TypedSupplierAdmin&);

protected:

    TypedSupplierAdmin() { }
    friend class OBProxy_CosTypedEventChannelAdmin::TypedSupplierAdmin;

public:

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_push_consumer:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr obtain_typed_push_consumer(const char* supported_interface);

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedSupplierAdmin/obtain_typed_pull_consumer:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPullConsumer_ptr obtain_typed_pull_consumer(const char* uses_interface);
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin:1.0
//
class TypedConsumerAdmin : virtual public OBStubImpl_CosTypedEventChannelAdmin::TypedConsumerAdmin,
                           virtual public OBMarshalStubImpl_CosEventChannelAdmin::ConsumerAdmin
{
    TypedConsumerAdmin(const TypedConsumerAdmin&);
    void operator=(const TypedConsumerAdmin&);

protected:

    TypedConsumerAdmin() { }
    friend class OBProxy_CosTypedEventChannelAdmin::TypedConsumerAdmin;

public:

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_pull_supplier:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr obtain_typed_pull_supplier(const char* supported_interface);

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedConsumerAdmin/obtain_typed_push_supplier:1.0
    //
    virtual ::CosEventChannelAdmin::ProxyPushSupplier_ptr obtain_typed_push_supplier(const char* uses_interface);
};

//
// IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel:1.0
//
class TypedEventChannel : virtual public OBStubImpl_CosTypedEventChannelAdmin::TypedEventChannel,
                          virtual public OB::MarshalStubImpl
{
    TypedEventChannel(const TypedEventChannel&);
    void operator=(const TypedEventChannel&);

protected:

    TypedEventChannel() { }
    friend class OBProxy_CosTypedEventChannelAdmin::TypedEventChannel;

public:

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_consumers:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr for_consumers();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/for_suppliers:1.0
    //
    virtual ::CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr for_suppliers();

    //
    // IDL:omg.org/CosTypedEventChannelAdmin/TypedEventChannel/destroy:1.0
    //
    virtual void destroy();
};

} // End of namespace OBMarshalStubImpl_CosTypedEventChannelAdmin

//
// IDL:omg.org/CosTypedEventChannelAdmin:1.0
//
namespace OBV_CosTypedEventChannelAdmin
{

} // End of namespace OBV_CosTypedEventChannelAdmin

//
// IDL:omg.org/CosTypedEventChannelAdmin/InterfaceNotSupported:1.0
//
void operator<<=(::CORBA::Any&, CosTypedEventChannelAdmin::InterfaceNotSupported*);
void operator<<=(::CORBA::Any&, const CosTypedEventChannelAdmin::InterfaceNotSupported&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const CosTypedEventChannelAdmin::InterfaceNotSupported*&);

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

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

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

//
// IDL:omg.org/CosTypedEventChannelAdmin/NoSuchImplementation:1.0
//
void operator<<=(::CORBA::Any&, CosTypedEventChannelAdmin::NoSuchImplementation*);
void operator<<=(::CORBA::Any&, const CosTypedEventChannelAdmin::NoSuchImplementation&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const CosTypedEventChannelAdmin::NoSuchImplementation*&);

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

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

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

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

inline void
release(::CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPushConsumer_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventChannelAdmin::TypedSupplierAdmin_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventChannelAdmin::TypedConsumerAdmin_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CosTypedEventChannelAdmin::TypedEventChannel_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventChannelAdmin::TypedEventChannel_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventChannelAdmin::TypedEventChannel_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventChannelAdmin::TypedEventChannel_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

#endif
