// **********************************************************************
//
// 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_h__
#define __OB_IFR4_h__

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


#include <OB/IFR2.h>
#include <OB/IFR3.h>
#include <OB/IFR4_fwd.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

namespace OBStubImpl_CORBA
{

class AbstractInterfaceDef;
typedef AbstractInterfaceDef* AbstractInterfaceDef_ptr;

class LocalInterfaceDef;
typedef LocalInterfaceDef* LocalInterfaceDef_ptr;

class ValueMemberDef;
typedef ValueMemberDef* ValueMemberDef_ptr;

class ValueDef;
typedef ValueDef* ValueDef_ptr;

class ValueBoxDef;
typedef ValueBoxDef* ValueBoxDef_ptr;

} // End of namespace OBStubImpl_CORBA

void OBDuplicate(OBStubImpl_CORBA::AbstractInterfaceDef_ptr);
void OBRelease(OBStubImpl_CORBA::AbstractInterfaceDef_ptr);

void OBDuplicate(OBStubImpl_CORBA::LocalInterfaceDef_ptr);
void OBRelease(OBStubImpl_CORBA::LocalInterfaceDef_ptr);

void OBDuplicate(OBStubImpl_CORBA::ValueMemberDef_ptr);
void OBRelease(OBStubImpl_CORBA::ValueMemberDef_ptr);

void OBDuplicate(OBStubImpl_CORBA::ValueDef_ptr);
void OBRelease(OBStubImpl_CORBA::ValueDef_ptr);

void OBDuplicate(OBStubImpl_CORBA::ValueBoxDef_ptr);
void OBRelease(OBStubImpl_CORBA::ValueBoxDef_ptr);

namespace OBStubImpl_CORBA
{

typedef OB::ObjVar< AbstractInterfaceDef > AbstractInterfaceDef_var;

typedef OB::ObjVar< LocalInterfaceDef > LocalInterfaceDef_var;

typedef OB::ObjVar< ValueMemberDef > ValueMemberDef_var;

typedef OB::ObjVar< ValueDef > ValueDef_var;

typedef OB::ObjVar< ValueBoxDef > ValueBoxDef_var;

} // End of namespace OBStubImpl_CORBA

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

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    AbstractInterfaceDef() { }
    virtual ~AbstractInterfaceDef() { }

    typedef AbstractInterfaceDef_ptr _ptr_type;
    typedef AbstractInterfaceDef_var _var_type;

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

    static inline AbstractInterfaceDef_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    LocalInterfaceDef() { }
    virtual ~LocalInterfaceDef() { }

    typedef LocalInterfaceDef_ptr _ptr_type;
    typedef LocalInterfaceDef_var _var_type;

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

    static inline LocalInterfaceDef_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();
};

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ValueMemberDef() { }
    virtual ~ValueMemberDef() { }

    typedef ValueMemberDef_ptr _ptr_type;
    typedef ValueMemberDef_var _var_type;

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

    static inline ValueMemberDef_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

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

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

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

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ValueDef() { }
    virtual ~ValueDef() { }

    typedef ValueDef_ptr _ptr_type;
    typedef ValueDef_var _var_type;

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

    static inline ValueDef_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

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

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

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

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

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

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

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

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

    //
    // IDL:omg.org/CORBA/ValueDef/FullValueDescription:1.0
    //
    struct FullValueDescription;
    typedef OB::VarVar< FullValueDescription > FullValueDescription_var;
    typedef OB::VarOut< FullValueDescription > FullValueDescription_out;

    struct FullValueDescription
    {
#ifdef OB_CLEAR_MEM
        FullValueDescription();
#else
        FullValueDescription() { }
#endif
        FullValueDescription(const FullValueDescription&);
        FullValueDescription& operator=(const FullValueDescription&);

        typedef FullValueDescription_var _var_type;

        OB::StrForStruct name;
        OB::StrForStruct id;
        ::CORBA::Boolean is_abstract;
        ::CORBA::Boolean is_custom;
        OB::StrForStruct defined_in;
        OB::StrForStruct version;
        OpDescriptionSeq operations;
        AttrDescriptionSeq attributes;
        ValueMemberSeq members;
        InitializerSeq initializers;
        RepositoryIdSeq supported_interfaces;
        RepositoryIdSeq abstract_base_values;
        ::CORBA::Boolean is_truncatable;
        OB::StrForStruct base_value;
        ::CORBA::TypeCode_var type;

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

    OB_IMPORT static OB::TypeCodeConst _tc_FullValueDescription;

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

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

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

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

//
// IDL:omg.org/CORBA/ValueDescription:1.0
//
struct ValueDescription;
typedef OB::VarVar< ValueDescription > ValueDescription_var;
typedef OB::VarOut< ValueDescription > ValueDescription_out;

struct ValueDescription
{
#ifdef OB_CLEAR_MEM
    ValueDescription();
#else
    ValueDescription() { }
#endif
    ValueDescription(const ValueDescription&);
    ValueDescription& operator=(const ValueDescription&);

    typedef ValueDescription_var _var_type;

    OB::StrForStruct name;
    OB::StrForStruct id;
    ::CORBA::Boolean is_abstract;
    ::CORBA::Boolean is_custom;
    OB::StrForStruct defined_in;
    OB::StrForStruct version;
    RepositoryIdSeq supported_interfaces;
    RepositoryIdSeq abstract_base_values;
    ::CORBA::Boolean is_truncatable;
    OB::StrForStruct base_value;

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

OB_IMPORT extern OB::TypeCodeConst _tc_ValueDescription;

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

protected:

    static OB_IMPORT const char* ids_[];

public:

    ValueBoxDef() { }
    virtual ~ValueBoxDef() { }

    typedef ValueBoxDef_ptr _ptr_type;
    typedef ValueBoxDef_var _var_type;

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

    static inline ValueBoxDef_ptr
    _nil()
    {
        return 0;
    }

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

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

    static const char** _OB_staticIds();

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

} // End of namespace CORBA

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

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    AbstractInterfaceDef() { }
    virtual ~AbstractInterfaceDef() { }

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

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    LocalInterfaceDef() { }
    virtual ~LocalInterfaceDef() { }

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

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ValueMemberDef() { }
    virtual ~ValueMemberDef() { }

    virtual const char** _OB_ids() const;

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

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

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

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

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ValueDef() { }
    virtual ~ValueDef() { }

    virtual const char** _OB_ids() const;

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

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

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

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

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

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

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

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

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

    //
    // IDL:omg.org/CORBA/ValueDef/create_value_member:1.0
    //
    ::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
    //
    ::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
    //
    ::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 ::CORBA::ValueBoxDef,
                    virtual public OBProxy_CORBA::TypedefDef
{
    ValueBoxDef(const ValueBoxDef&);
    void operator=(const ValueBoxDef&);

protected:

    virtual OB::MarshalStubImpl_ptr _OB_createMarshalStubImpl();

public:

    ValueBoxDef() { }
    virtual ~ValueBoxDef() { }

    virtual const char** _OB_ids() const;

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

} // End of namespace OBProxy_CORBA

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

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

protected:

    AbstractInterfaceDef() { }

public:

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

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

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

protected:

    LocalInterfaceDef() { }

public:

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

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

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

protected:

    ValueMemberDef() { }

public:

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

    static inline ValueMemberDef_ptr
    _nil()
    {
        return 0;
    }

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

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

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

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

protected:

    ValueDef() { }

public:

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

    static inline ValueDef_ptr
    _nil()
    {
        return 0;
    }

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

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

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

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

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

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

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

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

    //
    // IDL:omg.org/CORBA/ValueDef/describe_value:1.0
    //
    virtual ::CORBA::ValueDef::FullValueDescription* describe_value() = 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) = 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) = 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) = 0;
};

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

protected:

    ValueBoxDef() { }

public:

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

    static inline ValueBoxDef_ptr
    _nil()
    {
        return 0;
    }

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

} // End of namespace OBStubImpl_CORBA

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

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

protected:

    AbstractInterfaceDef() { }
    friend class OBProxy_CORBA::AbstractInterfaceDef;

public:
};

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

protected:

    LocalInterfaceDef() { }
    friend class OBProxy_CORBA::LocalInterfaceDef;

public:
};

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

protected:

    ValueMemberDef() { }
    friend class OBProxy_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 OBMarshalStubImpl_CORBA::Container,
                 virtual public OBMarshalStubImpl_CORBA::Contained,
                 virtual public OBMarshalStubImpl_CORBA::IDLType
{
    ValueDef(const ValueDef&);
    void operator=(const ValueDef&);

protected:

    ValueDef() { }
    friend class OBProxy_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 OBMarshalStubImpl_CORBA::TypedefDef
{
    ValueBoxDef(const ValueBoxDef&);
    void operator=(const ValueBoxDef&);

protected:

    ValueBoxDef() { }
    friend class OBProxy_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 OBMarshalStubImpl_CORBA

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

} // End of namespace OBV_CORBA

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

inline void
release(::CORBA::AbstractInterfaceDef_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::AbstractInterfaceDef_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CORBA::AbstractInterfaceDef_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CORBA::AbstractInterfaceDef_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CORBA::LocalInterfaceDef_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::LocalInterfaceDef_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CORBA::LocalInterfaceDef_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CORBA::LocalInterfaceDef_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CORBA::ValueMemberDef_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::ValueMemberDef_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CORBA::ValueMemberDef_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CORBA::ValueMemberDef_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

inline void
release(::CORBA::ValueDef_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::ValueDef_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CORBA::ValueDef_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CORBA::ValueDef_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

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

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

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

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

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

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

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

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

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

inline void
release(::CORBA::ValueBoxDef_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::CORBA::ValueBoxDef_ptr p)
{
    return p == 0;
}

inline void
release(OBStubImpl_CORBA::ValueBoxDef_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline Boolean
is_nil(OBStubImpl_CORBA::ValueBoxDef_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

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

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

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

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

#endif
