// **********************************************************************
//
// 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_CosTypedEventComm_h__
#define __OB_CosTypedEventComm_h__

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


#include <OB/CosEventComm.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 CosTypedEventComm
{

class TypedPushConsumer;
typedef TypedPushConsumer* TypedPushConsumer_ptr;
typedef TypedPushConsumer* TypedPushConsumerRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedPushConsumer;

class TypedPullSupplier;
typedef TypedPullSupplier* TypedPullSupplier_ptr;
typedef TypedPullSupplier* TypedPullSupplierRef;

OB_EVENT_IMPORT extern OB::TypeCodeConst _tc_TypedPullSupplier;

} // End of namespace CosTypedEventComm

void OBDuplicate(CosTypedEventComm::TypedPushConsumer_ptr);
void OBRelease(CosTypedEventComm::TypedPushConsumer_ptr);

void OBMarshal(CosTypedEventComm::TypedPushConsumer_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventComm::TypedPushConsumer_ptr&, OB::InputStreamImpl*);

void OBDuplicate(CosTypedEventComm::TypedPullSupplier_ptr);
void OBRelease(CosTypedEventComm::TypedPullSupplier_ptr);

void OBMarshal(CosTypedEventComm::TypedPullSupplier_ptr, OB::OutputStreamImpl*);
void OBUnmarshal(CosTypedEventComm::TypedPullSupplier_ptr&, OB::InputStreamImpl*);

namespace CosTypedEventComm
{

typedef OB::ObjVar< TypedPushConsumer > TypedPushConsumer_var;
typedef OB::ObjOut< TypedPushConsumer > TypedPushConsumer_out;

typedef OB::ObjVar< TypedPullSupplier > TypedPullSupplier_var;
typedef OB::ObjOut< TypedPullSupplier > TypedPullSupplier_out;

} // End of namespace CosTypedEventComm

namespace OBStubImpl_CosTypedEventComm
{

class TypedPushConsumer;
typedef TypedPushConsumer* TypedPushConsumer_ptr;

class TypedPullSupplier;
typedef TypedPullSupplier* TypedPullSupplier_ptr;

} // End of namespace OBStubImpl_CosTypedEventComm

void OBDuplicate(OBStubImpl_CosTypedEventComm::TypedPushConsumer_ptr);
void OBRelease(OBStubImpl_CosTypedEventComm::TypedPushConsumer_ptr);

void OBDuplicate(OBStubImpl_CosTypedEventComm::TypedPullSupplier_ptr);
void OBRelease(OBStubImpl_CosTypedEventComm::TypedPullSupplier_ptr);

namespace OBStubImpl_CosTypedEventComm
{

typedef OB::ObjVar< TypedPushConsumer > TypedPushConsumer_var;

typedef OB::ObjVar< TypedPullSupplier > TypedPullSupplier_var;

} // End of namespace OBStubImpl_CosTypedEventComm

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

//
// IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0
//
class TypedPushConsumer : virtual public ::CosEventComm::PushConsumer
{
    TypedPushConsumer(const TypedPushConsumer&);
    void operator=(const TypedPushConsumer&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedPushConsumer() { }
    virtual ~TypedPushConsumer() { }

    typedef TypedPushConsumer_ptr _ptr_type;
    typedef TypedPushConsumer_var _var_type;

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

    static inline TypedPushConsumer_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:omg.org/CosTypedEventComm/TypedPushConsumer/get_typed_consumer:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_consumer() = 0;
};

//
// IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0
//
class TypedPullSupplier : virtual public ::CosEventComm::PullSupplier
{
    TypedPullSupplier(const TypedPullSupplier&);
    void operator=(const TypedPullSupplier&);

protected:

    static OB_EVENT_IMPORT const char* ids_[];

public:

    TypedPullSupplier() { }
    virtual ~TypedPullSupplier() { }

    typedef TypedPullSupplier_ptr _ptr_type;
    typedef TypedPullSupplier_var _var_type;

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

    static inline TypedPullSupplier_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

    //
    // IDL:omg.org/CosTypedEventComm/TypedPullSupplier/get_typed_supplier:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_supplier() = 0;
};

} // End of namespace CosTypedEventComm

//
// IDL:omg.org/CosTypedEventComm:1.0
//
namespace OBProxy_CosTypedEventComm
{

//
// IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0
//
class TypedPushConsumer : virtual public ::CosTypedEventComm::TypedPushConsumer,
                          virtual public OBProxy_CosEventComm::PushConsumer
{
    TypedPushConsumer(const TypedPushConsumer&);
    void operator=(const TypedPushConsumer&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedPushConsumer() { }
    virtual ~TypedPushConsumer() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:omg.org/CosTypedEventComm/TypedPushConsumer/get_typed_consumer:1.0
    //
    ::CORBA::Object_ptr get_typed_consumer();
};

//
// IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0
//
class TypedPullSupplier : virtual public ::CosTypedEventComm::TypedPullSupplier,
                          virtual public OBProxy_CosEventComm::PullSupplier
{
    TypedPullSupplier(const TypedPullSupplier&);
    void operator=(const TypedPullSupplier&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    TypedPullSupplier() { }
    virtual ~TypedPullSupplier() { }

    virtual const char** _OB_ids() const;

    //
    // IDL:omg.org/CosTypedEventComm/TypedPullSupplier/get_typed_supplier:1.0
    //
    ::CORBA::Object_ptr get_typed_supplier();
};

} // End of namespace OBProxy_CosTypedEventComm

//
// IDL:omg.org/CosTypedEventComm:1.0
//
namespace OBStubImpl_CosTypedEventComm
{

//
// IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0
//
class TypedPushConsumer : virtual public OBStubImpl_CosEventComm::PushConsumer
{
    TypedPushConsumer(const TypedPushConsumer&);
    void operator=(const TypedPushConsumer&);

protected:

    TypedPushConsumer() { }

public:

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

    static inline TypedPushConsumer_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:omg.org/CosTypedEventComm/TypedPushConsumer/get_typed_consumer:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_consumer() = 0;
};

//
// IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0
//
class TypedPullSupplier : virtual public OBStubImpl_CosEventComm::PullSupplier
{
    TypedPullSupplier(const TypedPullSupplier&);
    void operator=(const TypedPullSupplier&);

protected:

    TypedPullSupplier() { }

public:

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

    static inline TypedPullSupplier_ptr
    _nil()
    {
        return 0;
    }

    //
    // IDL:omg.org/CosTypedEventComm/TypedPullSupplier/get_typed_supplier:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_supplier() = 0;
};

} // End of namespace OBStubImpl_CosTypedEventComm

//
// IDL:omg.org/CosTypedEventComm:1.0
//
namespace OBMarshalStubImpl_CosTypedEventComm
{

//
// IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0
//
class TypedPushConsumer : virtual public OBStubImpl_CosTypedEventComm::TypedPushConsumer,
                          virtual public OBMarshalStubImpl_CosEventComm::PushConsumer
{
    TypedPushConsumer(const TypedPushConsumer&);
    void operator=(const TypedPushConsumer&);

protected:

    TypedPushConsumer() { }
    friend class OBProxy_CosTypedEventComm::TypedPushConsumer;

public:

    //
    // IDL:omg.org/CosTypedEventComm/TypedPushConsumer/get_typed_consumer:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_consumer();
};

//
// IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0
//
class TypedPullSupplier : virtual public OBStubImpl_CosTypedEventComm::TypedPullSupplier,
                          virtual public OBMarshalStubImpl_CosEventComm::PullSupplier
{
    TypedPullSupplier(const TypedPullSupplier&);
    void operator=(const TypedPullSupplier&);

protected:

    TypedPullSupplier() { }
    friend class OBProxy_CosTypedEventComm::TypedPullSupplier;

public:

    //
    // IDL:omg.org/CosTypedEventComm/TypedPullSupplier/get_typed_supplier:1.0
    //
    virtual ::CORBA::Object_ptr get_typed_supplier();
};

} // End of namespace OBMarshalStubImpl_CosTypedEventComm

//
// IDL:omg.org/CosTypedEventComm:1.0
//
namespace OBV_CosTypedEventComm
{

} // End of namespace OBV_CosTypedEventComm

//
// IDL:omg.org/CosTypedEventComm/TypedPushConsumer:1.0
//
namespace CORBA
{

inline void
release(::CosTypedEventComm::TypedPushConsumer_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventComm::TypedPushConsumer_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventComm::TypedPushConsumer_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventComm::TypedPushConsumer_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

//
// IDL:omg.org/CosTypedEventComm/TypedPullSupplier:1.0
//
namespace CORBA
{

inline void
release(::CosTypedEventComm::TypedPullSupplier_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CosTypedEventComm::TypedPullSupplier_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CosTypedEventComm::TypedPullSupplier_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CosTypedEventComm::TypedPullSupplier_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

#endif
