// **********************************************************************
//
// 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_StringValue_h__
#define __OB_StringValue_h__

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


#include <OB/StringValue_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
{

} // End of namespace OBStubImpl_CORBA

namespace OBStubImpl_CORBA
{

} // End of namespace OBStubImpl_CORBA

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

//
// IDL:omg.org/CORBA/StringValue:1.0
//
class StringValue : virtual public ::CORBA::DefaultValueRefCountBase
{
    static const char* _ob_id_;
    ::CORBA::String_var _ob_v_;

    StringValue& operator=(const StringValue&);

protected:

    virtual ~StringValue() { }

public:

    StringValue()
        : _ob_v_((const char*)"") { }

    StringValue(const StringValue& _ob_a)
        : _ob_v_(_ob_a._ob_v_) { }

    StringValue(char* _ob_a)
        : _ob_v_(_ob_a) { }

    StringValue(const char* _ob_a)
        : _ob_v_(_ob_a) { }

    StringValue(const ::CORBA::String_var& _ob_a)
        : _ob_v_(_ob_a) { }

    StringValue& operator=(char* _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    StringValue& operator=(const char* _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    StringValue& operator=(const ::CORBA::String_var& _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    const char* _value() const { return _ob_v_.in(); }

    void _value(char* _ob_a) { _ob_v_ = _ob_a; }
    void _value(const char* _ob_a) { _ob_v_ = _ob_a; }
    void _value(const ::CORBA::String_var& _ob_a) { _ob_v_ = _ob_a; }

    const char* _boxed_in() const { return _ob_v_.in(); }
    char*& _boxed_inout() { return _ob_v_.inout(); }
    char*& _boxed_out() { return _ob_v_.out(); }

    char& operator[](short idx) { return _ob_v_[idx]; }
    char operator[](short idx) const { return _ob_v_[idx]; }
    char& operator[](unsigned short idx) { return _ob_v_[idx]; }
    char operator[](unsigned short idx) const { return _ob_v_[idx]; }
    char& operator[](int idx) { return _ob_v_[idx]; }
    char operator[](int idx) const { return _ob_v_[idx]; }
    char& operator[](unsigned int idx) { return _ob_v_[idx]; }
    char operator[](unsigned int idx) const { return _ob_v_[idx]; }
    char& operator[](long idx) { return _ob_v_[idx]; }
    char operator[](long idx) const { return _ob_v_[idx]; }
    char& operator[](unsigned long idx) { return _ob_v_[idx]; }
    char operator[](unsigned long idx) const { return _ob_v_[idx]; }

    StringValue& operator+=(const char* _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(char _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(unsigned char _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(::CORBA::LongLong _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(::CORBA::ULongLong _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(long _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(unsigned long _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(short _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(unsigned short _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(int _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    StringValue& operator+=(unsigned int _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    typedef StringValue_var _var_type;

    virtual ::CORBA::ValueBase* _copy_value();
    static StringValue* _downcast(::CORBA::ValueBase*);

    static const char* _OB_id();

    virtual const char* _OB_typeId() const;

    virtual void _OB_marshal(OB::OutputStreamImpl*);
    virtual void _OB_unmarshal(OB::InputStreamImpl*);
};

OB_IMPORT extern OB::TypeCodeConst _tc_StringValue;

class StringValue_init : public ::CORBA::ValueFactoryBase
{
    virtual ::CORBA::ValueBase* create_for_unmarshal();

public:
    StringValue_init()
    {
    }

    virtual ~StringValue_init()
    {
    }

    static StringValue_init* _downcast(::CORBA::ValueFactory);
};

//
// IDL:omg.org/CORBA/WStringValue:1.0
//
class WStringValue : virtual public ::CORBA::DefaultValueRefCountBase
{
    static const char* _ob_id_;
    ::CORBA::WString_var _ob_v_;

    WStringValue& operator=(const WStringValue&);

protected:

    virtual ~WStringValue() { }

public:

    WStringValue()
        : _ob_v_((const wchar_t*)L"") { }

    WStringValue(const WStringValue& _ob_a)
        : _ob_v_(_ob_a._ob_v_) { }

    WStringValue(::CORBA::WChar* _ob_a)
        : _ob_v_(_ob_a) { }

    WStringValue(const ::CORBA::WChar* _ob_a)
        : _ob_v_(_ob_a) { }

    WStringValue(const ::CORBA::WString_var& _ob_a)
        : _ob_v_(_ob_a) { }

    WStringValue& operator=(::CORBA::WChar* _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    WStringValue& operator=(const ::CORBA::WChar* _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    WStringValue& operator=(const ::CORBA::WString_var& _ob_a)
    {
        _ob_v_ = _ob_a;
        return *this;
    }

    const ::CORBA::WChar* _value() const { return _ob_v_.in(); }

    void _value(::CORBA::WChar* _ob_a) { _ob_v_ = _ob_a; }
    void _value(const ::CORBA::WChar* _ob_a) { _ob_v_ = _ob_a; }
    void _value(const ::CORBA::WString_var& _ob_a) { _ob_v_ = _ob_a; }

    const ::CORBA::WChar* _boxed_in() const { return _ob_v_.in(); }
    ::CORBA::WChar*& _boxed_inout() { return _ob_v_.inout(); }
    ::CORBA::WChar*& _boxed_out() { return _ob_v_.out(); }

    wchar_t& operator[](short idx) { return _ob_v_[idx]; }
    wchar_t operator[](short idx) const { return _ob_v_[idx]; }
    wchar_t& operator[](unsigned short idx) { return _ob_v_[idx]; }
    wchar_t operator[](unsigned short idx) const { return _ob_v_[idx]; }
    wchar_t& operator[](int idx) { return _ob_v_[idx]; }
    wchar_t operator[](int idx) const { return _ob_v_[idx]; }
    wchar_t& operator[](unsigned int idx) { return _ob_v_[idx]; }
    wchar_t operator[](unsigned int idx) const { return _ob_v_[idx]; }
    wchar_t& operator[](long idx) { return _ob_v_[idx]; }
    wchar_t operator[](long idx) const { return _ob_v_[idx]; }
    wchar_t& operator[](unsigned long idx) { return _ob_v_[idx]; }
    wchar_t operator[](unsigned long idx) const { return _ob_v_[idx]; }

    WStringValue& operator+=(const wchar_t* _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    WStringValue& operator+=(wchar_t _ob_a)
    {
        _ob_v_ += _ob_a;
        return *this;
    }

    typedef WStringValue_var _var_type;

    virtual ::CORBA::ValueBase* _copy_value();
    static WStringValue* _downcast(::CORBA::ValueBase*);

    static const char* _OB_id();

    virtual const char* _OB_typeId() const;

    virtual void _OB_marshal(OB::OutputStreamImpl*);
    virtual void _OB_unmarshal(OB::InputStreamImpl*);
};

OB_IMPORT extern OB::TypeCodeConst _tc_WStringValue;

class WStringValue_init : public ::CORBA::ValueFactoryBase
{
    virtual ::CORBA::ValueBase* create_for_unmarshal();

public:
    WStringValue_init()
    {
    }

    virtual ~WStringValue_init()
    {
    }

    static WStringValue_init* _downcast(::CORBA::ValueFactory);
};

} // End of namespace CORBA

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

} // End of namespace OBProxy_CORBA

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

} // End of namespace OBStubImpl_CORBA

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

} // End of namespace OBMarshalStubImpl_CORBA

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

} // End of namespace OBV_CORBA

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

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

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

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

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

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

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

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

#endif
