// **********************************************************************
//
// 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_IFR4_skel_h__
#define __OB_IFR4_skel_h__

#include <OB/IFR4.h>

#include <OB/IFR2_skel.h>
#include <OB/IFR3_skel.h>

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


#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

//
// IDL:omg.org/CORBA:1.0
//
namespace POA_CORBA
{

//
// IDL:omg.org/CORBA/AbstractInterfaceDef:1.0
//
class AbstractInterfaceDef : virtual public POA_CORBA::InterfaceDef
{
    AbstractInterfaceDef(const AbstractInterfaceDef&);
    void operator=(const AbstractInterfaceDef&);

public:

    AbstractInterfaceDef() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    CORBA::AbstractInterfaceDef_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);
};

//
// IDL:omg.org/CORBA/LocalInterfaceDef:1.0
//
class LocalInterfaceDef : virtual public POA_CORBA::InterfaceDef
{
    LocalInterfaceDef(const LocalInterfaceDef&);
    void operator=(const LocalInterfaceDef&);

public:

    LocalInterfaceDef() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    CORBA::LocalInterfaceDef_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);
};

//
// IDL:omg.org/CORBA/ValueMemberDef:1.0
//
class ValueMemberDef : virtual public POA_CORBA::Contained
{
    ValueMemberDef(const ValueMemberDef&);
    void operator=(const ValueMemberDef&);

protected:

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type:1.0
    //
    void _OB_get_type(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type_def:1.0
    //
    void _OB_get_type_def(OB::Upcall_ptr);
    void _OB_set_type_def(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueMemberDef/access:1.0
    //
    void _OB_get_access(OB::Upcall_ptr);
    void _OB_set_access(OB::Upcall_ptr);

public:

    ValueMemberDef() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    CORBA::ValueMemberDef_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type:1.0
    //
    virtual ::CORBA::TypeCode_ptr type()
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr type_def()
        throw(::CORBA::SystemException) = 0;
    virtual void type_def(::CORBA::IDLType_ptr)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueMemberDef/access:1.0
    //
    virtual ::CORBA::Visibility access()
        throw(::CORBA::SystemException) = 0;
    virtual void access(::CORBA::Visibility)
        throw(::CORBA::SystemException) = 0;
};

//
// IDL:omg.org/CORBA/ValueDef:1.0
//
class ValueDef : virtual public POA_CORBA::Container,
                 virtual public POA_CORBA::Contained,
                 virtual public POA_CORBA::IDLType
{
    ValueDef(const ValueDef&);
    void operator=(const ValueDef&);

protected:

    //
    // IDL:omg.org/CORBA/ValueDef/supported_interfaces:1.0
    //
    void _OB_get_supported_interfaces(OB::Upcall_ptr);
    void _OB_set_supported_interfaces(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/initializers:1.0
    //
    void _OB_get_initializers(OB::Upcall_ptr);
    void _OB_set_initializers(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/base_value:1.0
    //
    void _OB_get_base_value(OB::Upcall_ptr);
    void _OB_set_base_value(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/abstract_base_values:1.0
    //
    void _OB_get_abstract_base_values(OB::Upcall_ptr);
    void _OB_set_abstract_base_values(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/is_abstract:1.0
    //
    void _OB_get_is_abstract(OB::Upcall_ptr);
    void _OB_set_is_abstract(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/is_custom:1.0
    //
    void _OB_get_is_custom(OB::Upcall_ptr);
    void _OB_set_is_custom(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/is_truncatable:1.0
    //
    void _OB_get_is_truncatable(OB::Upcall_ptr);
    void _OB_set_is_truncatable(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/is_a:1.0
    //
    void _OB_op_is_a(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/describe_value:1.0
    //
    void _OB_op_describe_value(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/create_value_member:1.0
    //
    void _OB_op_create_value_member(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/create_attribute:1.0
    //
    void _OB_op_create_attribute(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/create_operation:1.0
    //
    void _OB_op_create_operation(OB::Upcall_ptr);

public:

    ValueDef() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    CORBA::ValueDef_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/supported_interfaces:1.0
    //
    virtual ::CORBA::InterfaceDefSeq* supported_interfaces()
        throw(::CORBA::SystemException) = 0;
    virtual void supported_interfaces(const ::CORBA::InterfaceDefSeq&)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/initializers:1.0
    //
    virtual ::CORBA::InitializerSeq* initializers()
        throw(::CORBA::SystemException) = 0;
    virtual void initializers(const ::CORBA::InitializerSeq&)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/base_value:1.0
    //
    virtual ::CORBA::ValueDef_ptr base_value()
        throw(::CORBA::SystemException) = 0;
    virtual void base_value(::CORBA::ValueDef_ptr)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/abstract_base_values:1.0
    //
    virtual ::CORBA::ValueDefSeq* abstract_base_values()
        throw(::CORBA::SystemException) = 0;
    virtual void abstract_base_values(const ::CORBA::ValueDefSeq&)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/is_abstract:1.0
    //
    virtual ::CORBA::Boolean is_abstract()
        throw(::CORBA::SystemException) = 0;
    virtual void is_abstract(::CORBA::Boolean)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/is_custom:1.0
    //
    virtual ::CORBA::Boolean is_custom()
        throw(::CORBA::SystemException) = 0;
    virtual void is_custom(::CORBA::Boolean)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/is_truncatable:1.0
    //
    virtual ::CORBA::Boolean is_truncatable()
        throw(::CORBA::SystemException) = 0;
    virtual void is_truncatable(::CORBA::Boolean)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/is_a:1.0
    //
    virtual ::CORBA::Boolean is_a(const char* value_id)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/describe_value:1.0
    //
    virtual ::CORBA::ValueDef::FullValueDescription* describe_value()
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/create_value_member:1.0
    //
    virtual ::CORBA::ValueMemberDef_ptr create_value_member(const char* id,
                                                            const char* name,
                                                            const char* version,
                                                            ::CORBA::IDLType_ptr type,
                                                            ::CORBA::Visibility access)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/create_attribute:1.0
    //
    virtual ::CORBA::AttributeDef_ptr create_attribute(const char* id,
                                                       const char* name,
                                                       const char* version,
                                                       ::CORBA::IDLType_ptr type,
                                                       ::CORBA::AttributeMode mode)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ValueDef/create_operation:1.0
    //
    virtual ::CORBA::OperationDef_ptr create_operation(const char* id,
                                                       const char* name,
                                                       const char* version,
                                                       ::CORBA::IDLType_ptr result,
                                                       ::CORBA::OperationMode mode,
                                                       const ::CORBA::ParDescriptionSeq& params,
                                                       const ::CORBA::ExceptionDefSeq& exceptions,
                                                       const ::CORBA::ContextIdSeq& contexts)
        throw(::CORBA::SystemException) = 0;
};

//
// IDL:omg.org/CORBA/ValueBoxDef:1.0
//
class ValueBoxDef : virtual public POA_CORBA::TypedefDef
{
    ValueBoxDef(const ValueBoxDef&);
    void operator=(const ValueBoxDef&);

protected:

    //
    // IDL:omg.org/CORBA/ValueBoxDef/original_type_def:1.0
    //
    void _OB_get_original_type_def(OB::Upcall_ptr);
    void _OB_set_original_type_def(OB::Upcall_ptr);

public:

    ValueBoxDef() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    CORBA::ValueBoxDef_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ValueBoxDef/original_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr original_type_def()
        throw(::CORBA::SystemException) = 0;
    virtual void original_type_def(::CORBA::IDLType_ptr)
        throw(::CORBA::SystemException) = 0;
};

} // End of namespace POA_CORBA

//
// IDL:omg.org/CORBA:1.0
//
namespace OBDirectStubImpl_CORBA
{

//
// IDL:omg.org/CORBA/AbstractInterfaceDef:1.0
//
class AbstractInterfaceDef : virtual public OBStubImpl_CORBA::AbstractInterfaceDef,
                             virtual public OBDirectStubImpl_CORBA::InterfaceDef
{
    AbstractInterfaceDef(const AbstractInterfaceDef&);
    void operator=(const AbstractInterfaceDef&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    AbstractInterfaceDef() { }

#endif

    AbstractInterfaceDef(PortableServer::POA_ptr,
                         const PortableServer::ObjectId&,
                         PortableServer::ServantBase*);

    friend class POA_CORBA::AbstractInterfaceDef;

public:
};

//
// IDL:omg.org/CORBA/LocalInterfaceDef:1.0
//
class LocalInterfaceDef : virtual public OBStubImpl_CORBA::LocalInterfaceDef,
                          virtual public OBDirectStubImpl_CORBA::InterfaceDef
{
    LocalInterfaceDef(const LocalInterfaceDef&);
    void operator=(const LocalInterfaceDef&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    LocalInterfaceDef() { }

#endif

    LocalInterfaceDef(PortableServer::POA_ptr,
                      const PortableServer::ObjectId&,
                      PortableServer::ServantBase*);

    friend class POA_CORBA::LocalInterfaceDef;

public:
};

//
// IDL:omg.org/CORBA/ValueMemberDef:1.0
//
class ValueMemberDef : virtual public OBStubImpl_CORBA::ValueMemberDef,
                       virtual public OBDirectStubImpl_CORBA::Contained
{
    ValueMemberDef(const ValueMemberDef&);
    void operator=(const ValueMemberDef&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ValueMemberDef() { }

#endif

    ValueMemberDef(PortableServer::POA_ptr,
                   const PortableServer::ObjectId&,
                   PortableServer::ServantBase*);

    friend class POA_CORBA::ValueMemberDef;

public:

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type:1.0
    //
    virtual ::CORBA::TypeCode_ptr type();

    //
    // IDL:omg.org/CORBA/ValueMemberDef/type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr type_def();
    virtual void type_def(::CORBA::IDLType_ptr);

    //
    // IDL:omg.org/CORBA/ValueMemberDef/access:1.0
    //
    virtual ::CORBA::Visibility access();
    virtual void access(::CORBA::Visibility);
};

//
// IDL:omg.org/CORBA/ValueDef:1.0
//
class ValueDef : virtual public OBStubImpl_CORBA::ValueDef,
                 virtual public OBDirectStubImpl_CORBA::Container,
                 virtual public OBDirectStubImpl_CORBA::Contained,
                 virtual public OBDirectStubImpl_CORBA::IDLType
{
    ValueDef(const ValueDef&);
    void operator=(const ValueDef&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ValueDef() { }

#endif

    ValueDef(PortableServer::POA_ptr,
             const PortableServer::ObjectId&,
             PortableServer::ServantBase*);

    friend class POA_CORBA::ValueDef;

public:

    //
    // IDL:omg.org/CORBA/ValueDef/supported_interfaces:1.0
    //
    virtual ::CORBA::InterfaceDefSeq* supported_interfaces();
    virtual void supported_interfaces(const ::CORBA::InterfaceDefSeq&);

    //
    // IDL:omg.org/CORBA/ValueDef/initializers:1.0
    //
    virtual ::CORBA::InitializerSeq* initializers();
    virtual void initializers(const ::CORBA::InitializerSeq&);

    //
    // IDL:omg.org/CORBA/ValueDef/base_value:1.0
    //
    virtual ::CORBA::ValueDef_ptr base_value();
    virtual void base_value(::CORBA::ValueDef_ptr);

    //
    // IDL:omg.org/CORBA/ValueDef/abstract_base_values:1.0
    //
    virtual ::CORBA::ValueDefSeq* abstract_base_values();
    virtual void abstract_base_values(const ::CORBA::ValueDefSeq&);

    //
    // IDL:omg.org/CORBA/ValueDef/is_abstract:1.0
    //
    virtual ::CORBA::Boolean is_abstract();
    virtual void is_abstract(::CORBA::Boolean);

    //
    // IDL:omg.org/CORBA/ValueDef/is_custom:1.0
    //
    virtual ::CORBA::Boolean is_custom();
    virtual void is_custom(::CORBA::Boolean);

    //
    // IDL:omg.org/CORBA/ValueDef/is_truncatable:1.0
    //
    virtual ::CORBA::Boolean is_truncatable();
    virtual void is_truncatable(::CORBA::Boolean);

    //
    // IDL:omg.org/CORBA/ValueDef/is_a:1.0
    //
    virtual ::CORBA::Boolean is_a(const char* value_id);

    //
    // IDL:omg.org/CORBA/ValueDef/describe_value:1.0
    //
    virtual ::CORBA::ValueDef::FullValueDescription* describe_value();

    //
    // IDL:omg.org/CORBA/ValueDef/create_value_member:1.0
    //
    virtual ::CORBA::ValueMemberDef_ptr create_value_member(const char* id,
                                                            const char* name,
                                                            const char* version,
                                                            ::CORBA::IDLType_ptr type,
                                                            ::CORBA::Visibility access);

    //
    // IDL:omg.org/CORBA/ValueDef/create_attribute:1.0
    //
    virtual ::CORBA::AttributeDef_ptr create_attribute(const char* id,
                                                       const char* name,
                                                       const char* version,
                                                       ::CORBA::IDLType_ptr type,
                                                       ::CORBA::AttributeMode mode);

    //
    // IDL:omg.org/CORBA/ValueDef/create_operation:1.0
    //
    virtual ::CORBA::OperationDef_ptr create_operation(const char* id,
                                                       const char* name,
                                                       const char* version,
                                                       ::CORBA::IDLType_ptr result,
                                                       ::CORBA::OperationMode mode,
                                                       const ::CORBA::ParDescriptionSeq& params,
                                                       const ::CORBA::ExceptionDefSeq& exceptions,
                                                       const ::CORBA::ContextIdSeq& contexts);
};

//
// IDL:omg.org/CORBA/ValueBoxDef:1.0
//
class ValueBoxDef : virtual public OBStubImpl_CORBA::ValueBoxDef,
                    virtual public OBDirectStubImpl_CORBA::TypedefDef
{
    ValueBoxDef(const ValueBoxDef&);
    void operator=(const ValueBoxDef&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ValueBoxDef() { }

#endif

    ValueBoxDef(PortableServer::POA_ptr,
                const PortableServer::ObjectId&,
                PortableServer::ServantBase*);

    friend class POA_CORBA::ValueBoxDef;

public:

    //
    // IDL:omg.org/CORBA/ValueBoxDef/original_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr original_type_def();
    virtual void original_type_def(::CORBA::IDLType_ptr);
};

} // End of namespace OBDirectStubImpl_CORBA

#endif
