// **********************************************************************
//
// 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_IFR3_skel_h__
#define __OB_IFR3_skel_h__

#include <OB/IFR3.h>

#include <OB/IFR2_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/Repository:1.0
//
class Repository : virtual public POA_CORBA::Container
{
    Repository(const Repository&);
    void operator=(const Repository&);

protected:

    //
    // IDL:omg.org/CORBA/Repository/lookup_id:1.0
    //
    void _OB_op_lookup_id(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/get_canonical_typecode:1.0
    //
    void _OB_op_get_canonical_typecode(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/get_primitive:1.0
    //
    void _OB_op_get_primitive(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/create_string:1.0
    //
    void _OB_op_create_string(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/create_wstring:1.0
    //
    void _OB_op_create_wstring(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/create_sequence:1.0
    //
    void _OB_op_create_sequence(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/create_array:1.0
    //
    void _OB_op_create_array(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/Repository/create_fixed:1.0
    //
    void _OB_op_create_fixed(OB::Upcall_ptr);

public:

    Repository() { }

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

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

    CORBA::Repository_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/Repository/lookup_id:1.0
    //
    virtual ::CORBA::Contained_ptr lookup_id(const char* search_id)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/get_canonical_typecode:1.0
    //
    virtual ::CORBA::TypeCode_ptr get_canonical_typecode(::CORBA::TypeCode_ptr tc)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/get_primitive:1.0
    //
    virtual ::CORBA::PrimitiveDef_ptr get_primitive(::CORBA::PrimitiveKind kind)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/create_string:1.0
    //
    virtual ::CORBA::StringDef_ptr create_string(::CORBA::ULong bound)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/create_wstring:1.0
    //
    virtual ::CORBA::WstringDef_ptr create_wstring(::CORBA::ULong bound)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/create_sequence:1.0
    //
    virtual ::CORBA::SequenceDef_ptr create_sequence(::CORBA::ULong bound,
                                                     ::CORBA::IDLType_ptr element_type)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/create_array:1.0
    //
    virtual ::CORBA::ArrayDef_ptr create_array(::CORBA::ULong length,
                                               ::CORBA::IDLType_ptr element_type)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/Repository/create_fixed:1.0
    //
    virtual ::CORBA::FixedDef_ptr create_fixed(::CORBA::UShort digits,
                                               ::CORBA::Short scale)
        throw(::CORBA::SystemException) = 0;
};

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

public:

    ModuleDef() { }

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

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

    CORBA::ModuleDef_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/ConstantDef:1.0
//
class ConstantDef : virtual public POA_CORBA::Contained
{
    ConstantDef(const ConstantDef&);
    void operator=(const ConstantDef&);

protected:

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

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

    //
    // IDL:omg.org/CORBA/ConstantDef/value:1.0
    //
    void _OB_get_value(OB::Upcall_ptr);
    void _OB_set_value(OB::Upcall_ptr);

public:

    ConstantDef() { }

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

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

    CORBA::ConstantDef_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/ConstantDef/type:1.0
    //
    virtual ::CORBA::TypeCode_ptr type()
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/ConstantDef/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/ConstantDef/value:1.0
    //
    virtual ::CORBA::Any* value()
        throw(::CORBA::SystemException) = 0;
    virtual void value(const ::CORBA::Any&)
        throw(::CORBA::SystemException) = 0;
};

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

public:

    TypedefDef() { }

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

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

    CORBA::TypedefDef_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/StructDef:1.0
//
class StructDef : virtual public POA_CORBA::TypedefDef,
                  virtual public POA_CORBA::Container
{
    StructDef(const StructDef&);
    void operator=(const StructDef&);

protected:

    //
    // IDL:omg.org/CORBA/StructDef/members:1.0
    //
    void _OB_get_members(OB::Upcall_ptr);
    void _OB_set_members(OB::Upcall_ptr);

public:

    StructDef() { }

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

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

    CORBA::StructDef_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/StructDef/members:1.0
    //
    virtual ::CORBA::StructMemberSeq* members()
        throw(::CORBA::SystemException) = 0;
    virtual void members(const ::CORBA::StructMemberSeq&)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/UnionDef/discriminator_type:1.0
    //
    void _OB_get_discriminator_type(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/UnionDef/discriminator_type_def:1.0
    //
    void _OB_get_discriminator_type_def(OB::Upcall_ptr);
    void _OB_set_discriminator_type_def(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/UnionDef/members:1.0
    //
    void _OB_get_members(OB::Upcall_ptr);
    void _OB_set_members(OB::Upcall_ptr);

public:

    UnionDef() { }

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

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

    CORBA::UnionDef_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/UnionDef/discriminator_type:1.0
    //
    virtual ::CORBA::TypeCode_ptr discriminator_type()
        throw(::CORBA::SystemException) = 0;

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

    //
    // IDL:omg.org/CORBA/UnionDef/members:1.0
    //
    virtual ::CORBA::UnionMemberSeq* members()
        throw(::CORBA::SystemException) = 0;
    virtual void members(const ::CORBA::UnionMemberSeq&)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/EnumDef/members:1.0
    //
    void _OB_get_members(OB::Upcall_ptr);
    void _OB_set_members(OB::Upcall_ptr);

public:

    EnumDef() { }

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

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

    CORBA::EnumDef_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/EnumDef/members:1.0
    //
    virtual ::CORBA::EnumMemberSeq* members()
        throw(::CORBA::SystemException) = 0;
    virtual void members(const ::CORBA::EnumMemberSeq&)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

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

public:

    AliasDef() { }

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

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

    CORBA::AliasDef_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/AliasDef/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;
};

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

public:

    NativeDef() { }

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

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

    CORBA::NativeDef_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/PrimitiveDef:1.0
//
class PrimitiveDef : virtual public POA_CORBA::IDLType
{
    PrimitiveDef(const PrimitiveDef&);
    void operator=(const PrimitiveDef&);

protected:

    //
    // IDL:omg.org/CORBA/PrimitiveDef/kind:1.0
    //
    void _OB_get_kind(OB::Upcall_ptr);

public:

    PrimitiveDef() { }

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

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

    CORBA::PrimitiveDef_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/PrimitiveDef/kind:1.0
    //
    virtual ::CORBA::PrimitiveKind kind()
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/StringDef/bound:1.0
    //
    void _OB_get_bound(OB::Upcall_ptr);
    void _OB_set_bound(OB::Upcall_ptr);

public:

    StringDef() { }

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

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

    CORBA::StringDef_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/StringDef/bound:1.0
    //
    virtual ::CORBA::ULong bound()
        throw(::CORBA::SystemException) = 0;
    virtual void bound(::CORBA::ULong)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/WstringDef/bound:1.0
    //
    void _OB_get_bound(OB::Upcall_ptr);
    void _OB_set_bound(OB::Upcall_ptr);

public:

    WstringDef() { }

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

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

    CORBA::WstringDef_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/WstringDef/bound:1.0
    //
    virtual ::CORBA::ULong bound()
        throw(::CORBA::SystemException) = 0;
    virtual void bound(::CORBA::ULong)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/FixedDef/digits:1.0
    //
    void _OB_get_digits(OB::Upcall_ptr);
    void _OB_set_digits(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/FixedDef/scale:1.0
    //
    void _OB_get_scale(OB::Upcall_ptr);
    void _OB_set_scale(OB::Upcall_ptr);

public:

    FixedDef() { }

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

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

    CORBA::FixedDef_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/FixedDef/digits:1.0
    //
    virtual ::CORBA::UShort digits()
        throw(::CORBA::SystemException) = 0;
    virtual void digits(::CORBA::UShort)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:omg.org/CORBA/FixedDef/scale:1.0
    //
    virtual ::CORBA::Short scale()
        throw(::CORBA::SystemException) = 0;
    virtual void scale(::CORBA::Short)
        throw(::CORBA::SystemException) = 0;
};

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

protected:

    //
    // IDL:omg.org/CORBA/SequenceDef/bound:1.0
    //
    void _OB_get_bound(OB::Upcall_ptr);
    void _OB_set_bound(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/SequenceDef/element_type:1.0
    //
    void _OB_get_element_type(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/SequenceDef/element_type_def:1.0
    //
    void _OB_get_element_type_def(OB::Upcall_ptr);
    void _OB_set_element_type_def(OB::Upcall_ptr);

public:

    SequenceDef() { }

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

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

    CORBA::SequenceDef_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/SequenceDef/bound:1.0
    //
    virtual ::CORBA::ULong bound()
        throw(::CORBA::SystemException) = 0;
    virtual void bound(::CORBA::ULong)
        throw(::CORBA::SystemException) = 0;

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

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

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

protected:

    //
    // IDL:omg.org/CORBA/ArrayDef/length:1.0
    //
    void _OB_get_length(OB::Upcall_ptr);
    void _OB_set_length(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ArrayDef/element_type:1.0
    //
    void _OB_get_element_type(OB::Upcall_ptr);

    //
    // IDL:omg.org/CORBA/ArrayDef/element_type_def:1.0
    //
    void _OB_get_element_type_def(OB::Upcall_ptr);
    void _OB_set_element_type_def(OB::Upcall_ptr);

public:

    ArrayDef() { }

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

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

    CORBA::ArrayDef_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/ArrayDef/length:1.0
    //
    virtual ::CORBA::ULong length()
        throw(::CORBA::SystemException) = 0;
    virtual void length(::CORBA::ULong)
        throw(::CORBA::SystemException) = 0;

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

    //
    // IDL:omg.org/CORBA/ArrayDef/element_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr element_type_def()
        throw(::CORBA::SystemException) = 0;
    virtual void element_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/Repository:1.0
//
class Repository : virtual public OBStubImpl_CORBA::Repository,
                   virtual public OBDirectStubImpl_CORBA::Container
{
    Repository(const Repository&);
    void operator=(const Repository&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    Repository() { }

#endif

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

    friend class POA_CORBA::Repository;

public:

    //
    // IDL:omg.org/CORBA/Repository/lookup_id:1.0
    //
    virtual ::CORBA::Contained_ptr lookup_id(const char* search_id);

    //
    // IDL:omg.org/CORBA/Repository/get_canonical_typecode:1.0
    //
    virtual ::CORBA::TypeCode_ptr get_canonical_typecode(::CORBA::TypeCode_ptr tc);

    //
    // IDL:omg.org/CORBA/Repository/get_primitive:1.0
    //
    virtual ::CORBA::PrimitiveDef_ptr get_primitive(::CORBA::PrimitiveKind kind);

    //
    // IDL:omg.org/CORBA/Repository/create_string:1.0
    //
    virtual ::CORBA::StringDef_ptr create_string(::CORBA::ULong bound);

    //
    // IDL:omg.org/CORBA/Repository/create_wstring:1.0
    //
    virtual ::CORBA::WstringDef_ptr create_wstring(::CORBA::ULong bound);

    //
    // IDL:omg.org/CORBA/Repository/create_sequence:1.0
    //
    virtual ::CORBA::SequenceDef_ptr create_sequence(::CORBA::ULong bound,
                                                     ::CORBA::IDLType_ptr element_type);

    //
    // IDL:omg.org/CORBA/Repository/create_array:1.0
    //
    virtual ::CORBA::ArrayDef_ptr create_array(::CORBA::ULong length,
                                               ::CORBA::IDLType_ptr element_type);

    //
    // IDL:omg.org/CORBA/Repository/create_fixed:1.0
    //
    virtual ::CORBA::FixedDef_ptr create_fixed(::CORBA::UShort digits,
                                               ::CORBA::Short scale);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ModuleDef() { }

#endif

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

    friend class POA_CORBA::ModuleDef;

public:
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ConstantDef() { }

#endif

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

    friend class POA_CORBA::ConstantDef;

public:

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

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

    //
    // IDL:omg.org/CORBA/ConstantDef/value:1.0
    //
    virtual ::CORBA::Any* value();
    virtual void value(const ::CORBA::Any&);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    TypedefDef() { }

#endif

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

    friend class POA_CORBA::TypedefDef;

public:
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    StructDef() { }

#endif

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

    friend class POA_CORBA::StructDef;

public:

    //
    // IDL:omg.org/CORBA/StructDef/members:1.0
    //
    virtual ::CORBA::StructMemberSeq* members();
    virtual void members(const ::CORBA::StructMemberSeq&);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    UnionDef() { }

#endif

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

    friend class POA_CORBA::UnionDef;

public:

    //
    // IDL:omg.org/CORBA/UnionDef/discriminator_type:1.0
    //
    virtual ::CORBA::TypeCode_ptr discriminator_type();

    //
    // IDL:omg.org/CORBA/UnionDef/discriminator_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr discriminator_type_def();
    virtual void discriminator_type_def(::CORBA::IDLType_ptr);

    //
    // IDL:omg.org/CORBA/UnionDef/members:1.0
    //
    virtual ::CORBA::UnionMemberSeq* members();
    virtual void members(const ::CORBA::UnionMemberSeq&);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    EnumDef() { }

#endif

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

    friend class POA_CORBA::EnumDef;

public:

    //
    // IDL:omg.org/CORBA/EnumDef/members:1.0
    //
    virtual ::CORBA::EnumMemberSeq* members();
    virtual void members(const ::CORBA::EnumMemberSeq&);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    AliasDef() { }

#endif

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

    friend class POA_CORBA::AliasDef;

public:

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

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    NativeDef() { }

#endif

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

    friend class POA_CORBA::NativeDef;

public:
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    PrimitiveDef() { }

#endif

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

    friend class POA_CORBA::PrimitiveDef;

public:

    //
    // IDL:omg.org/CORBA/PrimitiveDef/kind:1.0
    //
    virtual ::CORBA::PrimitiveKind kind();
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    StringDef() { }

#endif

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

    friend class POA_CORBA::StringDef;

public:

    //
    // IDL:omg.org/CORBA/StringDef/bound:1.0
    //
    virtual ::CORBA::ULong bound();
    virtual void bound(::CORBA::ULong);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    WstringDef() { }

#endif

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

    friend class POA_CORBA::WstringDef;

public:

    //
    // IDL:omg.org/CORBA/WstringDef/bound:1.0
    //
    virtual ::CORBA::ULong bound();
    virtual void bound(::CORBA::ULong);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    FixedDef() { }

#endif

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

    friend class POA_CORBA::FixedDef;

public:

    //
    // IDL:omg.org/CORBA/FixedDef/digits:1.0
    //
    virtual ::CORBA::UShort digits();
    virtual void digits(::CORBA::UShort);

    //
    // IDL:omg.org/CORBA/FixedDef/scale:1.0
    //
    virtual ::CORBA::Short scale();
    virtual void scale(::CORBA::Short);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    SequenceDef() { }

#endif

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

    friend class POA_CORBA::SequenceDef;

public:

    //
    // IDL:omg.org/CORBA/SequenceDef/bound:1.0
    //
    virtual ::CORBA::ULong bound();
    virtual void bound(::CORBA::ULong);

    //
    // IDL:omg.org/CORBA/SequenceDef/element_type:1.0
    //
    virtual ::CORBA::TypeCode_ptr element_type();

    //
    // IDL:omg.org/CORBA/SequenceDef/element_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr element_type_def();
    virtual void element_type_def(::CORBA::IDLType_ptr);
};

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

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ArrayDef() { }

#endif

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

    friend class POA_CORBA::ArrayDef;

public:

    //
    // IDL:omg.org/CORBA/ArrayDef/length:1.0
    //
    virtual ::CORBA::ULong length();
    virtual void length(::CORBA::ULong);

    //
    // IDL:omg.org/CORBA/ArrayDef/element_type:1.0
    //
    virtual ::CORBA::TypeCode_ptr element_type();

    //
    // IDL:omg.org/CORBA/ArrayDef/element_type_def:1.0
    //
    virtual ::CORBA::IDLType_ptr element_type_def();
    virtual void element_type_def(::CORBA::IDLType_ptr);
};

} // End of namespace OBDirectStubImpl_CORBA

#endif
