// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 3.2
// License: non-commercial

#ifndef __DynAny_h__
#define __DynAny_h__

#include <OB/TCKind.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined!
#endif

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

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

//
// IDL:omg.org/CORBA/DynAny:1.0
//
class CORBA_DynAny;
typedef CORBA_DynAny* CORBA_DynAny_ptr;
typedef CORBA_DynAny* CORBA_DynAnyRef;
void OBDuplicate(CORBA_DynAny_ptr);
void OBRelease(CORBA_DynAny_ptr);
typedef OBObjVar< CORBA_DynAny > CORBA_DynAny_var;

//
// IDL:omg.org/CORBA/DynFixed:1.0
//
class CORBA_DynFixed;
typedef CORBA_DynFixed* CORBA_DynFixed_ptr;
typedef CORBA_DynFixed* CORBA_DynFixedRef;
void OBDuplicate(CORBA_DynFixed_ptr);
void OBRelease(CORBA_DynFixed_ptr);
typedef OBObjVar< CORBA_DynFixed > CORBA_DynFixed_var;

//
// IDL:omg.org/CORBA/DynEnum:1.0
//
class CORBA_DynEnum;
typedef CORBA_DynEnum* CORBA_DynEnum_ptr;
typedef CORBA_DynEnum* CORBA_DynEnumRef;
void OBDuplicate(CORBA_DynEnum_ptr);
void OBRelease(CORBA_DynEnum_ptr);
typedef OBObjVar< CORBA_DynEnum > CORBA_DynEnum_var;

//
// IDL:omg.org/CORBA/DynStruct:1.0
//
class CORBA_DynStruct;
typedef CORBA_DynStruct* CORBA_DynStruct_ptr;
typedef CORBA_DynStruct* CORBA_DynStructRef;
void OBDuplicate(CORBA_DynStruct_ptr);
void OBRelease(CORBA_DynStruct_ptr);
typedef OBObjVar< CORBA_DynStruct > CORBA_DynStruct_var;

//
// IDL:omg.org/CORBA/DynUnion:1.0
//
class CORBA_DynUnion;
typedef CORBA_DynUnion* CORBA_DynUnion_ptr;
typedef CORBA_DynUnion* CORBA_DynUnionRef;
void OBDuplicate(CORBA_DynUnion_ptr);
void OBRelease(CORBA_DynUnion_ptr);
typedef OBObjVar< CORBA_DynUnion > CORBA_DynUnion_var;

//
// IDL:omg.org/CORBA/DynSequence:1.0
//
class CORBA_DynSequence;
typedef CORBA_DynSequence* CORBA_DynSequence_ptr;
typedef CORBA_DynSequence* CORBA_DynSequenceRef;
void OBDuplicate(CORBA_DynSequence_ptr);
void OBRelease(CORBA_DynSequence_ptr);
typedef OBObjVar< CORBA_DynSequence > CORBA_DynSequence_var;

//
// IDL:omg.org/CORBA/DynArray:1.0
//
class CORBA_DynArray;
typedef CORBA_DynArray* CORBA_DynArray_ptr;
typedef CORBA_DynArray* CORBA_DynArrayRef;
void OBDuplicate(CORBA_DynArray_ptr);
void OBRelease(CORBA_DynArray_ptr);
typedef OBObjVar< CORBA_DynArray > CORBA_DynArray_var;

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

public:

    CORBA_DynAny() { }

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

    static inline CORBA_DynAny_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynAny_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynAny/Invalid:1.0
    //
    struct Invalid : public CORBA_UserException
    {
        Invalid() { }
        Invalid(const Invalid&);
        virtual ~Invalid() { }
        Invalid& operator=(const Invalid&);

        virtual void _raise() const { throw *this; }

        static Invalid* _narrow(CORBA_Exception*);
#ifdef HAVE_NO_RTTI
        virtual void* _OB_narrowHelp(const char*) const;
#endif
        virtual const char* _OB_typeId() const;
        virtual CORBA_Exception* _OB_clone() const;
    };

    //
    // IDL:omg.org/CORBA/DynAny/InvalidValue:1.0
    //
    struct InvalidValue : public CORBA_UserException
    {
        InvalidValue() { }
        InvalidValue(const InvalidValue&);
        virtual ~InvalidValue() { }
        InvalidValue& operator=(const InvalidValue&);

        virtual void _raise() const { throw *this; }

        static InvalidValue* _narrow(CORBA_Exception*);
#ifdef HAVE_NO_RTTI
        virtual void* _OB_narrowHelp(const char*) const;
#endif
        virtual const char* _OB_typeId() const;
        virtual CORBA_Exception* _OB_clone() const;
    };

    //
    // IDL:omg.org/CORBA/DynAny/TypeMismatch:1.0
    //
    struct TypeMismatch : public CORBA_UserException
    {
        TypeMismatch() { }
        TypeMismatch(const TypeMismatch&);
        virtual ~TypeMismatch() { }
        TypeMismatch& operator=(const TypeMismatch&);

        virtual void _raise() const { throw *this; }

        static TypeMismatch* _narrow(CORBA_Exception*);
#ifdef HAVE_NO_RTTI
        virtual void* _OB_narrowHelp(const char*) const;
#endif
        virtual const char* _OB_typeId() const;
        virtual CORBA_Exception* _OB_clone() const;
    };

    //
    // IDL:omg.org/CORBA/DynAny/InvalidSeq:1.0
    //
    struct InvalidSeq : public CORBA_UserException
    {
        InvalidSeq() { }
        InvalidSeq(const InvalidSeq&);
        virtual ~InvalidSeq() { }
        InvalidSeq& operator=(const InvalidSeq&);

        virtual void _raise() const { throw *this; }

        static InvalidSeq* _narrow(CORBA_Exception*);
#ifdef HAVE_NO_RTTI
        virtual void* _OB_narrowHelp(const char*) const;
#endif
        virtual const char* _OB_typeId() const;
        virtual CORBA_Exception* _OB_clone() const;
    };

    //
    // IDL:omg.org/CORBA/DynAny/OctetSeq:1.0
    //
    typedef OBFixSeq< CORBA_Octet > OctetSeq;
    typedef OBSeqVar< OBFixSeq< CORBA_Octet > > OctetSeq_var;

    //
    // IDL:omg.org/CORBA/DynAny/type:1.0
    //
    virtual CORBA_TypeCode_ptr type() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/assign:1.0
    //
    virtual void assign(CORBA_DynAny_ptr dyn_any) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/from_any:1.0
    //
    virtual void from_any(const CORBA_Any& value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/to_any:1.0
    //
    virtual CORBA_Any* to_any() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/destroy:1.0
    //
    virtual void destroy() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/copy:1.0
    //
    virtual CORBA_DynAny_ptr copy() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_boolean:1.0
    //
    virtual void insert_boolean(CORBA_Boolean value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_octet:1.0
    //
    virtual void insert_octet(CORBA_Octet value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_char:1.0
    //
    virtual void insert_char(CORBA_Char value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_short:1.0
    //
    virtual void insert_short(CORBA_Short value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_ushort:1.0
    //
    virtual void insert_ushort(CORBA_UShort value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_long:1.0
    //
    virtual void insert_long(CORBA_Long value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_ulong:1.0
    //
    virtual void insert_ulong(CORBA_ULong value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_float:1.0
    //
    virtual void insert_float(CORBA_Float value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_double:1.0
    //
    virtual void insert_double(CORBA_Double value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_string:1.0
    //
    virtual void insert_string(const char* value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_reference:1.0
    //
    virtual void insert_reference(CORBA_Object_ptr value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_typecode:1.0
    //
    virtual void insert_typecode(CORBA_TypeCode_ptr value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/insert_any:1.0
    //
    virtual void insert_any(const CORBA_Any& value) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_boolean:1.0
    //
    virtual CORBA_Boolean get_boolean() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_octet:1.0
    //
    virtual CORBA_Octet get_octet() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_char:1.0
    //
    virtual CORBA_Char get_char() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_short:1.0
    //
    virtual CORBA_Short get_short() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_ushort:1.0
    //
    virtual CORBA_UShort get_ushort() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_long:1.0
    //
    virtual CORBA_Long get_long() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_ulong:1.0
    //
    virtual CORBA_ULong get_ulong() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_float:1.0
    //
    virtual CORBA_Float get_float() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_double:1.0
    //
    virtual CORBA_Double get_double() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_string:1.0
    //
    virtual char* get_string() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_reference:1.0
    //
    virtual CORBA_Object_ptr get_reference() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_typecode:1.0
    //
    virtual CORBA_TypeCode_ptr get_typecode() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/get_any:1.0
    //
    virtual CORBA_Any* get_any() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/current_component:1.0
    //
    virtual CORBA_DynAny_ptr current_component() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/next:1.0
    //
    virtual CORBA_Boolean next() = 0;

    //
    // IDL:omg.org/CORBA/DynAny/seek:1.0
    //
    virtual CORBA_Boolean seek(CORBA_Long index) = 0;

    //
    // IDL:omg.org/CORBA/DynAny/rewind:1.0
    //
    virtual void rewind() = 0;
};

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

public:

    CORBA_DynFixed() { }

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

    static inline CORBA_DynFixed_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynFixed_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynFixed/get_value:1.0
    //
    virtual CORBA_DynAny::OctetSeq* get_value() = 0;

    //
    // IDL:omg.org/CORBA/DynFixed/set_value:1.0
    //
    virtual void set_value(const CORBA_DynAny::OctetSeq& val) = 0;
};

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

public:

    CORBA_DynEnum() { }

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

    static inline CORBA_DynEnum_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynEnum_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynEnum/value_as_string:1.0
    //
    virtual char* value_as_string() = 0;
    virtual void value_as_string(const char*) = 0;

    //
    // IDL:omg.org/CORBA/DynEnum/value_as_ulong:1.0
    //
    virtual CORBA_ULong value_as_ulong() = 0;
    virtual void value_as_ulong(CORBA_ULong) = 0;
};

//
// IDL:omg.org/CORBA/FieldName:1.0
//
typedef char* CORBA_FieldName;
typedef CORBA_String_var CORBA_FieldName_var;

//
// IDL:omg.org/CORBA/NameValuePair:1.0
//
struct CORBA_NameValuePair
{
    CORBA_NameValuePair() { }
    CORBA_NameValuePair(const CORBA_NameValuePair&);
    ~CORBA_NameValuePair() { }
    CORBA_NameValuePair& operator=(const CORBA_NameValuePair&);

    CORBA_FieldName_var id;
    CORBA_Any value;
};

typedef OBVarVar< CORBA_NameValuePair > CORBA_NameValuePair_var;

//
// IDL:omg.org/CORBA/NameValuePairSeq:1.0
//
typedef OBVarSeq< CORBA_NameValuePair > CORBA_NameValuePairSeq;
typedef OBSeqVar< OBVarSeq< CORBA_NameValuePair > > CORBA_NameValuePairSeq_var;

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

public:

    CORBA_DynStruct() { }

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

    static inline CORBA_DynStruct_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynStruct_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynStruct/current_member_name:1.0
    //
    virtual CORBA_FieldName current_member_name() = 0;

    //
    // IDL:omg.org/CORBA/DynStruct/current_member_kind:1.0
    //
    virtual CORBA_TCKind current_member_kind() = 0;

    //
    // IDL:omg.org/CORBA/DynStruct/get_members:1.0
    //
    virtual CORBA_NameValuePairSeq* get_members() = 0;

    //
    // IDL:omg.org/CORBA/DynStruct/set_members:1.0
    //
    virtual void set_members(const CORBA_NameValuePairSeq& value) = 0;
};

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

public:

    CORBA_DynUnion() { }

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

    static inline CORBA_DynUnion_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynUnion_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynUnion/set_as_default:1.0
    //
    virtual CORBA_Boolean set_as_default() = 0;
    virtual void set_as_default(CORBA_Boolean) = 0;

    //
    // IDL:omg.org/CORBA/DynUnion/discriminator:1.0
    //
    virtual CORBA_DynAny_ptr discriminator() = 0;

    //
    // IDL:omg.org/CORBA/DynUnion/discriminator_kind:1.0
    //
    virtual CORBA_TCKind discriminator_kind() = 0;

    //
    // IDL:omg.org/CORBA/DynUnion/member:1.0
    //
    virtual CORBA_DynAny_ptr member() = 0;

    //
    // IDL:omg.org/CORBA/DynUnion/member_name:1.0
    //
    virtual CORBA_FieldName member_name() = 0;
    virtual void member_name(const char*) = 0;

    //
    // IDL:omg.org/CORBA/DynUnion/member_kind:1.0
    //
    virtual CORBA_TCKind member_kind() = 0;
};

//
// IDL:omg.org/CORBA/AnySeq:1.0
//
typedef OBVarSeq< CORBA_Any > CORBA_AnySeq;
typedef OBSeqVar< OBVarSeq< CORBA_Any > > CORBA_AnySeq_var;

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

public:

    CORBA_DynSequence() { }

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

    static inline CORBA_DynSequence_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynSequence_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynSequence/length:1.0
    //
    virtual CORBA_ULong length() = 0;
    virtual void length(CORBA_ULong) = 0;

    //
    // IDL:omg.org/CORBA/DynSequence/get_elements:1.0
    //
    virtual CORBA_AnySeq* get_elements() = 0;

    //
    // IDL:omg.org/CORBA/DynSequence/set_elements:1.0
    //
    virtual void set_elements(const CORBA_AnySeq& value) = 0;
};

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

public:

    CORBA_DynArray() { }

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

    static inline CORBA_DynArray_ptr
    _nil()
    {
        return 0;
    }

    static CORBA_DynArray_ptr _narrow(CORBA_Object_ptr);
    virtual void* _OB_narrowHelp(const char*) const;
    virtual const char* _OB_typeId() const;

    //
    // IDL:omg.org/CORBA/DynArray/get_elements:1.0
    //
    virtual CORBA_AnySeq* get_elements() = 0;

    //
    // IDL:omg.org/CORBA/DynArray/set_elements:1.0
    //
    virtual void set_elements(const CORBA_AnySeq& value) = 0;
};

//
// IDL:omg.org/CORBA/DynAnySeq:1.0
//
typedef OBObjSeq< CORBA_DynAny > CORBA_DynAnySeq;
typedef OBSeqVar< OBObjSeq< CORBA_DynAny > > CORBA_DynAnySeq_var;

//
// IDL:omg.org/CORBA/DynAny:1.0
//
inline void
CORBA_release(CORBA_DynAny_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynAny_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/DynAny/Invalid:1.0
//

//
// IDL:omg.org/CORBA/DynAny/InvalidValue:1.0
//

//
// IDL:omg.org/CORBA/DynAny/TypeMismatch:1.0
//

//
// IDL:omg.org/CORBA/DynAny/InvalidSeq:1.0
//

//
// IDL:omg.org/CORBA/DynFixed:1.0
//
inline void
CORBA_release(CORBA_DynFixed_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynFixed_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/DynEnum:1.0
//
inline void
CORBA_release(CORBA_DynEnum_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynEnum_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/NameValuePair:1.0
//

//
// IDL:omg.org/CORBA/DynStruct:1.0
//
inline void
CORBA_release(CORBA_DynStruct_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynStruct_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/DynUnion:1.0
//
inline void
CORBA_release(CORBA_DynUnion_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynUnion_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/DynSequence:1.0
//
inline void
CORBA_release(CORBA_DynSequence_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynSequence_ptr p)
{
    return p == 0;
}

//
// IDL:omg.org/CORBA/DynArray:1.0
//
inline void
CORBA_release(CORBA_DynArray_ptr p)
{
    if(p)
        p -> _OB_decRef();
}

inline CORBA_Boolean
CORBA_is_nil(CORBA_DynArray_ptr p)
{
    return p == 0;
}

//
// OBVarSeq< CORBA_NameValuePair >
//
#ifndef OB_use_OBVarSeq_CORBA__NameValuePair
#define OB_use_OBVarSeq_CORBA__NameValuePair
#define OB_use_OBVarSeq_CORBA__NameValuePair_from_DynAny_h

#endif

//
// OBObjSeq< CORBA_DynAny >
//
#ifndef OB_use_OBObjSeq_CORBA__DynAny
#define OB_use_OBObjSeq_CORBA__DynAny
#define OB_use_OBObjSeq_CORBA__DynAny_from_DynAny_h

#endif

#endif
