// **********************************************************************
//
// 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_Dynamic_h__
#define __OB_Dynamic_h__

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


#include <OB/TypeCode.h>
#include <OB/Types.h>
#include <OB/Dynamic_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_Dynamic
{

} // End of namespace OBStubImpl_Dynamic

namespace OBStubImpl_Dynamic
{

} // End of namespace OBStubImpl_Dynamic

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

//
// IDL:omg.org/Dynamic/Parameter:1.0
//
struct Parameter;
typedef OB::VarVar< Parameter > Parameter_var;
typedef OB::VarOut< Parameter > Parameter_out;

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

    typedef Parameter_var _var_type;

    ::CORBA::Any argument;
    ::CORBA::ParameterMode mode;

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

OB_IMPORT extern OB::TypeCodeConst _tc_Parameter;

//
// IDL:omg.org/Dynamic/ParameterList:1.0
//
class OBUnique_ParameterList { };

typedef OB::VarSeq< Parameter, OBUnique_ParameterList > ParameterList;
typedef OB::SeqVar< OB::VarSeq< Parameter, OBUnique_ParameterList > > ParameterList_var;
typedef OB::SeqOut< OB::VarSeq< Parameter, OBUnique_ParameterList > > ParameterList_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ParameterList;

struct OBInfo_ParameterList : public OB::ConstructedInfo
{
    OBInfo_ParameterList() { }

    virtual void free(void* p) const
    {
        delete (ParameterList*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ParameterList(*(const ParameterList*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:omg.org/Dynamic/ContextList:1.0
//
typedef OB::StrSeq< CORBA::OBUnique_StringSeq > ContextList;
typedef OB::SeqVar< OB::StrSeq< CORBA::OBUnique_StringSeq > > ContextList_var;
typedef OB::SeqOut< OB::StrSeq< CORBA::OBUnique_StringSeq > > ContextList_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ContextList;

struct OBInfo_ContextList : public OB::ConstructedInfo
{
    OBInfo_ContextList() { }

    virtual void free(void* p) const
    {
        delete (ContextList*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ContextList(*(const ContextList*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:omg.org/Dynamic/ExceptionList:1.0
//
class OBUnique_ExceptionList { };

typedef OB::ObjSeq< ::CORBA::TypeCode, OBUnique_ExceptionList > ExceptionList;
typedef OB::SeqVar< OB::ObjSeq< ::CORBA::TypeCode, OBUnique_ExceptionList > > ExceptionList_var;
typedef OB::SeqOut< OB::ObjSeq< ::CORBA::TypeCode, OBUnique_ExceptionList > > ExceptionList_out;
OB_IMPORT extern OB::TypeCodeConst _tc_ExceptionList;

struct OBInfo_ExceptionList : public OB::ConstructedInfo
{
    OBInfo_ExceptionList() { }

    virtual void free(void* p) const
    {
        delete (ExceptionList*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new ExceptionList(*(const ExceptionList*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

//
// IDL:omg.org/Dynamic/RequestContext:1.0
//
typedef OB::StrSeq< CORBA::OBUnique_StringSeq > RequestContext;
typedef OB::SeqVar< OB::StrSeq< CORBA::OBUnique_StringSeq > > RequestContext_var;
typedef OB::SeqOut< OB::StrSeq< CORBA::OBUnique_StringSeq > > RequestContext_out;
OB_IMPORT extern OB::TypeCodeConst _tc_RequestContext;

struct OBInfo_RequestContext : public OB::ConstructedInfo
{
    OBInfo_RequestContext() { }

    virtual void free(void* p) const
    {
        delete (RequestContext*)p;
    }

    virtual void* dup(const void* p) const
    {
        return new RequestContext(*(const RequestContext*)p);
    }

    virtual void marshal(const void*, OB::OutputStreamImpl*) const;
    virtual void unmarshal(void*, OB::InputStreamImpl*) const;
};

} // End of namespace Dynamic

//
// IDL:omg.org/Dynamic:1.0
//
namespace OBProxy_Dynamic
{

} // End of namespace OBProxy_Dynamic

//
// IDL:omg.org/Dynamic:1.0
//
namespace OBStubImpl_Dynamic
{

} // End of namespace OBStubImpl_Dynamic

//
// IDL:omg.org/Dynamic:1.0
//
namespace OBMarshalStubImpl_Dynamic
{

} // End of namespace OBMarshalStubImpl_Dynamic

//
// IDL:omg.org/Dynamic:1.0
//
namespace OBV_Dynamic
{

} // End of namespace OBV_Dynamic

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

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

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

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

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

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

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

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

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

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

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

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

#endif
