//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
//
// Ice version 3.7.10
//
// <auto-generated>
//
// Generated from file `Descriptor.ice'
//
// Warning: do not edit this file.
//
// </auto-generated>
//

#include <IceGrid/Descriptor.h>
#include <IceUtil/PushDisableWarnings.h>
#include <Ice/LocalException.h>
#include <Ice/ValueFactory.h>
#include <Ice/OutgoingAsync.h>
#include <Ice/InputStream.h>
#include <Ice/OutputStream.h>
#include <IceUtil/PopDisableWarnings.h>

#if defined(_MSC_VER)
#   pragma warning(disable:4458) // declaration of ... hides class member
#elif defined(__clang__)
#   pragma clang diagnostic ignored "-Wshadow"
#elif defined(__GNUC__)
#   pragma GCC diagnostic ignored "-Wshadow"
#endif

#ifndef ICE_IGNORE_VERSION
#   if ICE_INT_VERSION / 100 != 307
#       error Ice version mismatch!
#   endif
#   if ICE_INT_VERSION % 100 >= 50
#       error Beta header file detected
#   endif
#   if ICE_INT_VERSION % 100 < 10
#       error Ice patch level mismatch!
#   endif
#endif

#ifdef ICE_CPP11_MAPPING // C++11 mapping

namespace
{

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::CommunicatorDescriptor> iceC_IceGrid_CommunicatorDescriptor_init("::IceGrid::CommunicatorDescriptor");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::ServerDescriptor> iceC_IceGrid_ServerDescriptor_init("::IceGrid::ServerDescriptor");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::ServiceDescriptor> iceC_IceGrid_ServiceDescriptor_init("::IceGrid::ServiceDescriptor");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::IceBoxDescriptor> iceC_IceGrid_IceBoxDescriptor_init("::IceGrid::IceBoxDescriptor");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::LoadBalancingPolicy> iceC_IceGrid_LoadBalancingPolicy_init("::IceGrid::LoadBalancingPolicy");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::RandomLoadBalancingPolicy> iceC_IceGrid_RandomLoadBalancingPolicy_init("::IceGrid::RandomLoadBalancingPolicy");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::OrderedLoadBalancingPolicy> iceC_IceGrid_OrderedLoadBalancingPolicy_init("::IceGrid::OrderedLoadBalancingPolicy");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::RoundRobinLoadBalancingPolicy> iceC_IceGrid_RoundRobinLoadBalancingPolicy_init("::IceGrid::RoundRobinLoadBalancingPolicy");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::AdaptiveLoadBalancingPolicy> iceC_IceGrid_AdaptiveLoadBalancingPolicy_init("::IceGrid::AdaptiveLoadBalancingPolicy");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::BoxedString> iceC_IceGrid_BoxedString_init("::IceGrid::BoxedString");

const ::IceInternal::DefaultValueFactoryInit<::IceGrid::BoxedDistributionDescriptor> iceC_IceGrid_BoxedDistributionDescriptor_init("::IceGrid::BoxedDistributionDescriptor");

}

IceGrid::CommunicatorDescriptor::~CommunicatorDescriptor()
{
}

const ::std::string&
IceGrid::CommunicatorDescriptor::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::CommunicatorDescriptor";
    return typeId;
}

IceGrid::ServerDescriptor::~ServerDescriptor()
{
}

const ::std::string&
IceGrid::ServerDescriptor::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::ServerDescriptor";
    return typeId;
}

IceGrid::ServiceDescriptor::~ServiceDescriptor()
{
}

const ::std::string&
IceGrid::ServiceDescriptor::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::ServiceDescriptor";
    return typeId;
}

IceGrid::IceBoxDescriptor::~IceBoxDescriptor()
{
}

const ::std::string&
IceGrid::IceBoxDescriptor::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::IceBoxDescriptor";
    return typeId;
}

IceGrid::LoadBalancingPolicy::~LoadBalancingPolicy()
{
}

const ::std::string&
IceGrid::LoadBalancingPolicy::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::LoadBalancingPolicy";
    return typeId;
}

IceGrid::RandomLoadBalancingPolicy::~RandomLoadBalancingPolicy()
{
}

const ::std::string&
IceGrid::RandomLoadBalancingPolicy::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::RandomLoadBalancingPolicy";
    return typeId;
}

IceGrid::OrderedLoadBalancingPolicy::~OrderedLoadBalancingPolicy()
{
}

const ::std::string&
IceGrid::OrderedLoadBalancingPolicy::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::OrderedLoadBalancingPolicy";
    return typeId;
}

IceGrid::RoundRobinLoadBalancingPolicy::~RoundRobinLoadBalancingPolicy()
{
}

const ::std::string&
IceGrid::RoundRobinLoadBalancingPolicy::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::RoundRobinLoadBalancingPolicy";
    return typeId;
}

IceGrid::AdaptiveLoadBalancingPolicy::~AdaptiveLoadBalancingPolicy()
{
}

const ::std::string&
IceGrid::AdaptiveLoadBalancingPolicy::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::AdaptiveLoadBalancingPolicy";
    return typeId;
}

IceGrid::BoxedString::~BoxedString()
{
}

const ::std::string&
IceGrid::BoxedString::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::BoxedString";
    return typeId;
}

IceGrid::BoxedDistributionDescriptor::~BoxedDistributionDescriptor()
{
}

const ::std::string&
IceGrid::BoxedDistributionDescriptor::ice_staticId()
{
    static const ::std::string typeId = "::IceGrid::BoxedDistributionDescriptor";
    return typeId;
}

namespace Ice
{
}

#else // C++98 mapping

namespace
{

}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(CommunicatorDescriptor* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< CommunicatorDescriptor>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new CommunicatorDescriptor;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::CommunicatorDescriptor::_newInstance() const
{
    return new CommunicatorDescriptor;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::CommunicatorDescriptor::ice_staticId()
{
    return ::IceGrid::CommunicatorDescriptor::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(ServerDescriptor* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< ServerDescriptor>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new ServerDescriptor;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::ServerDescriptor::_newInstance() const
{
    return new ServerDescriptor;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::ServerDescriptor::ice_staticId()
{
    return ::IceGrid::ServerDescriptor::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(ServiceDescriptor* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< ServiceDescriptor>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new ServiceDescriptor;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::ServiceDescriptor::_newInstance() const
{
    return new ServiceDescriptor;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::ServiceDescriptor::ice_staticId()
{
    return ::IceGrid::ServiceDescriptor::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(IceBoxDescriptor* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< IceBoxDescriptor>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new IceBoxDescriptor;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::IceBoxDescriptor::_newInstance() const
{
    return new IceBoxDescriptor;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::IceBoxDescriptor::ice_staticId()
{
    return ::IceGrid::IceBoxDescriptor::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(LoadBalancingPolicy* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< LoadBalancingPolicy>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new LoadBalancingPolicy;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::LoadBalancingPolicy::_newInstance() const
{
    return new LoadBalancingPolicy;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::LoadBalancingPolicy::ice_staticId()
{
    return ::IceGrid::LoadBalancingPolicy::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(RandomLoadBalancingPolicy* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< RandomLoadBalancingPolicy>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new RandomLoadBalancingPolicy;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::RandomLoadBalancingPolicy::_newInstance() const
{
    return new RandomLoadBalancingPolicy;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::RandomLoadBalancingPolicy::ice_staticId()
{
    return ::IceGrid::RandomLoadBalancingPolicy::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(OrderedLoadBalancingPolicy* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< OrderedLoadBalancingPolicy>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new OrderedLoadBalancingPolicy;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::OrderedLoadBalancingPolicy::_newInstance() const
{
    return new OrderedLoadBalancingPolicy;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::OrderedLoadBalancingPolicy::ice_staticId()
{
    return ::IceGrid::OrderedLoadBalancingPolicy::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(RoundRobinLoadBalancingPolicy* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< RoundRobinLoadBalancingPolicy>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new RoundRobinLoadBalancingPolicy;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::RoundRobinLoadBalancingPolicy::_newInstance() const
{
    return new RoundRobinLoadBalancingPolicy;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::RoundRobinLoadBalancingPolicy::ice_staticId()
{
    return ::IceGrid::RoundRobinLoadBalancingPolicy::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(AdaptiveLoadBalancingPolicy* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< AdaptiveLoadBalancingPolicy>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new AdaptiveLoadBalancingPolicy;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::AdaptiveLoadBalancingPolicy::_newInstance() const
{
    return new AdaptiveLoadBalancingPolicy;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::AdaptiveLoadBalancingPolicy::ice_staticId()
{
    return ::IceGrid::AdaptiveLoadBalancingPolicy::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(BoxedString* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< BoxedString>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new BoxedString;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::BoxedString::_newInstance() const
{
    return new BoxedString;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::BoxedString::ice_staticId()
{
    return ::IceGrid::BoxedString::ice_staticId();
}

/// \cond INTERNAL
::IceProxy::Ice::Object* ::IceProxy::IceGrid::upCast(BoxedDistributionDescriptor* p) { return p; }

void
::IceProxy::IceGrid::_readProxy(::Ice::InputStream* istr, ::IceInternal::ProxyHandle< BoxedDistributionDescriptor>& v)
{
    ::Ice::ObjectPrx proxy;
    istr->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new BoxedDistributionDescriptor;
        v->_copyFrom(proxy);
    }
}
/// \endcond

/// \cond INTERNAL
::IceProxy::Ice::Object*
IceProxy::IceGrid::BoxedDistributionDescriptor::_newInstance() const
{
    return new BoxedDistributionDescriptor;
}
/// \endcond

const ::std::string&
IceProxy::IceGrid::BoxedDistributionDescriptor::ice_staticId()
{
    return ::IceGrid::BoxedDistributionDescriptor::ice_staticId();
}

IceGrid::CommunicatorDescriptor::~CommunicatorDescriptor()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(CommunicatorDescriptor* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::CommunicatorDescriptor::ice_clone() const
{
    ::Ice::Object* p = new CommunicatorDescriptor(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_CommunicatorDescriptor_ids[2] =
{
    "::Ice::Object",
    "::IceGrid::CommunicatorDescriptor"
};

}

bool
IceGrid::CommunicatorDescriptor::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_CommunicatorDescriptor_ids, iceC_IceGrid_CommunicatorDescriptor_ids + 2, s);
}

::std::vector< ::std::string>
IceGrid::CommunicatorDescriptor::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_CommunicatorDescriptor_ids[0], &iceC_IceGrid_CommunicatorDescriptor_ids[2]);
}

const ::std::string&
IceGrid::CommunicatorDescriptor::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::CommunicatorDescriptor::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::CommunicatorDescriptor";
    return typeId;
#else
    return iceC_IceGrid_CommunicatorDescriptor_ids[1];
#endif
}

/// \cond STREAM
void
IceGrid::CommunicatorDescriptor::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, true);
    ::Ice::StreamWriter< CommunicatorDescriptor, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
}

void
IceGrid::CommunicatorDescriptor::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< CommunicatorDescriptor, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::CommunicatorDescriptor> iceC_IceGrid_CommunicatorDescriptor_init("::IceGrid::CommunicatorDescriptor");
}

::Ice::ValueFactoryPtr
IceGrid::CommunicatorDescriptor::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::CommunicatorDescriptor::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(CommunicatorDescriptorPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = CommunicatorDescriptorPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(CommunicatorDescriptor::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::ServerDescriptor::~ServerDescriptor()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(ServerDescriptor* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::ServerDescriptor::ice_clone() const
{
    ::Ice::Object* p = new ServerDescriptor(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_ServerDescriptor_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::CommunicatorDescriptor",
    "::IceGrid::ServerDescriptor"
};

}

bool
IceGrid::ServerDescriptor::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_ServerDescriptor_ids, iceC_IceGrid_ServerDescriptor_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::ServerDescriptor::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_ServerDescriptor_ids[0], &iceC_IceGrid_ServerDescriptor_ids[3]);
}

const ::std::string&
IceGrid::ServerDescriptor::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::ServerDescriptor::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::ServerDescriptor";
    return typeId;
#else
    return iceC_IceGrid_ServerDescriptor_ids[2];
#endif
}

/// \cond STREAM
void
IceGrid::ServerDescriptor::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< ServerDescriptor, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    CommunicatorDescriptor::_iceWriteImpl(ostr);
}

void
IceGrid::ServerDescriptor::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< ServerDescriptor, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    CommunicatorDescriptor::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::ServerDescriptor> iceC_IceGrid_ServerDescriptor_init("::IceGrid::ServerDescriptor");
}

::Ice::ValueFactoryPtr
IceGrid::ServerDescriptor::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::ServerDescriptor::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(ServerDescriptorPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = ServerDescriptorPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(ServerDescriptor::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::ServiceDescriptor::~ServiceDescriptor()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(ServiceDescriptor* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::ServiceDescriptor::ice_clone() const
{
    ::Ice::Object* p = new ServiceDescriptor(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_ServiceDescriptor_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::CommunicatorDescriptor",
    "::IceGrid::ServiceDescriptor"
};

}

bool
IceGrid::ServiceDescriptor::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_ServiceDescriptor_ids, iceC_IceGrid_ServiceDescriptor_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::ServiceDescriptor::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_ServiceDescriptor_ids[0], &iceC_IceGrid_ServiceDescriptor_ids[3]);
}

const ::std::string&
IceGrid::ServiceDescriptor::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::ServiceDescriptor::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::ServiceDescriptor";
    return typeId;
#else
    return iceC_IceGrid_ServiceDescriptor_ids[2];
#endif
}

/// \cond STREAM
void
IceGrid::ServiceDescriptor::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< ServiceDescriptor, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    CommunicatorDescriptor::_iceWriteImpl(ostr);
}

void
IceGrid::ServiceDescriptor::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< ServiceDescriptor, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    CommunicatorDescriptor::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::ServiceDescriptor> iceC_IceGrid_ServiceDescriptor_init("::IceGrid::ServiceDescriptor");
}

::Ice::ValueFactoryPtr
IceGrid::ServiceDescriptor::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::ServiceDescriptor::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(ServiceDescriptorPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = ServiceDescriptorPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(ServiceDescriptor::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::IceBoxDescriptor::~IceBoxDescriptor()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(IceBoxDescriptor* p) { return p; }

/// \endcond

#if defined(_MSC_VER) && (_MSC_VER >= 1900)
#   pragma warning(push)
#   pragma warning(disable:4589)
#endif
::Ice::ObjectPtr
IceGrid::IceBoxDescriptor::ice_clone() const
{
    ::Ice::Object* p = new IceBoxDescriptor(*this);
    return p;
}
#if defined(_MSC_VER) && (_MSC_VER >= 1900)
#   pragma warning(pop)
#endif

namespace
{
const ::std::string iceC_IceGrid_IceBoxDescriptor_ids[4] =
{
    "::Ice::Object",
    "::IceGrid::CommunicatorDescriptor",
    "::IceGrid::IceBoxDescriptor",
    "::IceGrid::ServerDescriptor"
};

}

bool
IceGrid::IceBoxDescriptor::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_IceBoxDescriptor_ids, iceC_IceGrid_IceBoxDescriptor_ids + 4, s);
}

::std::vector< ::std::string>
IceGrid::IceBoxDescriptor::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_IceBoxDescriptor_ids[0], &iceC_IceGrid_IceBoxDescriptor_ids[4]);
}

const ::std::string&
IceGrid::IceBoxDescriptor::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::IceBoxDescriptor::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::IceBoxDescriptor";
    return typeId;
#else
    return iceC_IceGrid_IceBoxDescriptor_ids[2];
#endif
}

void
IceGrid::IceBoxDescriptor::_iceGcVisitMembers(::IceInternal::GCVisitor& v_)
{
    {
        for(::IceGrid::ServiceInstanceDescriptorSeq::iterator _i0 = services.begin(); _i0 != services.end(); ++_i0)
        {
            if((*_i0).descriptor)
            {
                if((::IceGrid::upCast((*_i0).descriptor.get())->_iceGcVisit(v_)))
                {
                    (*_i0).descriptor = 0;
                }
            }
        }
    }
}

/// \cond STREAM
void
IceGrid::IceBoxDescriptor::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< IceBoxDescriptor, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    ServerDescriptor::_iceWriteImpl(ostr);
}

void
IceGrid::IceBoxDescriptor::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< IceBoxDescriptor, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    ServerDescriptor::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::IceBoxDescriptor> iceC_IceGrid_IceBoxDescriptor_init("::IceGrid::IceBoxDescriptor");
}

::Ice::ValueFactoryPtr
IceGrid::IceBoxDescriptor::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::IceBoxDescriptor::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(IceBoxDescriptorPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = IceBoxDescriptorPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(IceBoxDescriptor::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::LoadBalancingPolicy::~LoadBalancingPolicy()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(LoadBalancingPolicy* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::LoadBalancingPolicy::ice_clone() const
{
    ::Ice::Object* p = new LoadBalancingPolicy(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_LoadBalancingPolicy_ids[2] =
{
    "::Ice::Object",
    "::IceGrid::LoadBalancingPolicy"
};

}

bool
IceGrid::LoadBalancingPolicy::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_LoadBalancingPolicy_ids, iceC_IceGrid_LoadBalancingPolicy_ids + 2, s);
}

::std::vector< ::std::string>
IceGrid::LoadBalancingPolicy::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_LoadBalancingPolicy_ids[0], &iceC_IceGrid_LoadBalancingPolicy_ids[2]);
}

const ::std::string&
IceGrid::LoadBalancingPolicy::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::LoadBalancingPolicy::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::LoadBalancingPolicy";
    return typeId;
#else
    return iceC_IceGrid_LoadBalancingPolicy_ids[1];
#endif
}

/// \cond STREAM
void
IceGrid::LoadBalancingPolicy::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, true);
    ::Ice::StreamWriter< LoadBalancingPolicy, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
}

void
IceGrid::LoadBalancingPolicy::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< LoadBalancingPolicy, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::LoadBalancingPolicy> iceC_IceGrid_LoadBalancingPolicy_init("::IceGrid::LoadBalancingPolicy");
}

::Ice::ValueFactoryPtr
IceGrid::LoadBalancingPolicy::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::LoadBalancingPolicy::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(LoadBalancingPolicyPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = LoadBalancingPolicyPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(LoadBalancingPolicy::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::RandomLoadBalancingPolicy::~RandomLoadBalancingPolicy()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(RandomLoadBalancingPolicy* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::RandomLoadBalancingPolicy::ice_clone() const
{
    ::Ice::Object* p = new RandomLoadBalancingPolicy(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_RandomLoadBalancingPolicy_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::LoadBalancingPolicy",
    "::IceGrid::RandomLoadBalancingPolicy"
};

}

bool
IceGrid::RandomLoadBalancingPolicy::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_RandomLoadBalancingPolicy_ids, iceC_IceGrid_RandomLoadBalancingPolicy_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::RandomLoadBalancingPolicy::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_RandomLoadBalancingPolicy_ids[0], &iceC_IceGrid_RandomLoadBalancingPolicy_ids[3]);
}

const ::std::string&
IceGrid::RandomLoadBalancingPolicy::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::RandomLoadBalancingPolicy::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::RandomLoadBalancingPolicy";
    return typeId;
#else
    return iceC_IceGrid_RandomLoadBalancingPolicy_ids[2];
#endif
}

/// \cond STREAM
void
IceGrid::RandomLoadBalancingPolicy::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< RandomLoadBalancingPolicy, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    LoadBalancingPolicy::_iceWriteImpl(ostr);
}

void
IceGrid::RandomLoadBalancingPolicy::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< RandomLoadBalancingPolicy, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    LoadBalancingPolicy::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::RandomLoadBalancingPolicy> iceC_IceGrid_RandomLoadBalancingPolicy_init("::IceGrid::RandomLoadBalancingPolicy");
}

::Ice::ValueFactoryPtr
IceGrid::RandomLoadBalancingPolicy::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::RandomLoadBalancingPolicy::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(RandomLoadBalancingPolicyPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = RandomLoadBalancingPolicyPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(RandomLoadBalancingPolicy::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::OrderedLoadBalancingPolicy::~OrderedLoadBalancingPolicy()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(OrderedLoadBalancingPolicy* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::OrderedLoadBalancingPolicy::ice_clone() const
{
    ::Ice::Object* p = new OrderedLoadBalancingPolicy(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_OrderedLoadBalancingPolicy_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::LoadBalancingPolicy",
    "::IceGrid::OrderedLoadBalancingPolicy"
};

}

bool
IceGrid::OrderedLoadBalancingPolicy::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_OrderedLoadBalancingPolicy_ids, iceC_IceGrid_OrderedLoadBalancingPolicy_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::OrderedLoadBalancingPolicy::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_OrderedLoadBalancingPolicy_ids[0], &iceC_IceGrid_OrderedLoadBalancingPolicy_ids[3]);
}

const ::std::string&
IceGrid::OrderedLoadBalancingPolicy::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::OrderedLoadBalancingPolicy::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::OrderedLoadBalancingPolicy";
    return typeId;
#else
    return iceC_IceGrid_OrderedLoadBalancingPolicy_ids[2];
#endif
}

/// \cond STREAM
void
IceGrid::OrderedLoadBalancingPolicy::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< OrderedLoadBalancingPolicy, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    LoadBalancingPolicy::_iceWriteImpl(ostr);
}

void
IceGrid::OrderedLoadBalancingPolicy::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< OrderedLoadBalancingPolicy, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    LoadBalancingPolicy::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::OrderedLoadBalancingPolicy> iceC_IceGrid_OrderedLoadBalancingPolicy_init("::IceGrid::OrderedLoadBalancingPolicy");
}

::Ice::ValueFactoryPtr
IceGrid::OrderedLoadBalancingPolicy::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::OrderedLoadBalancingPolicy::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(OrderedLoadBalancingPolicyPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = OrderedLoadBalancingPolicyPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(OrderedLoadBalancingPolicy::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::RoundRobinLoadBalancingPolicy::~RoundRobinLoadBalancingPolicy()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(RoundRobinLoadBalancingPolicy* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::RoundRobinLoadBalancingPolicy::ice_clone() const
{
    ::Ice::Object* p = new RoundRobinLoadBalancingPolicy(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::LoadBalancingPolicy",
    "::IceGrid::RoundRobinLoadBalancingPolicy"
};

}

bool
IceGrid::RoundRobinLoadBalancingPolicy::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids, iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::RoundRobinLoadBalancingPolicy::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids[0], &iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids[3]);
}

const ::std::string&
IceGrid::RoundRobinLoadBalancingPolicy::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::RoundRobinLoadBalancingPolicy::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::RoundRobinLoadBalancingPolicy";
    return typeId;
#else
    return iceC_IceGrid_RoundRobinLoadBalancingPolicy_ids[2];
#endif
}

/// \cond STREAM
void
IceGrid::RoundRobinLoadBalancingPolicy::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< RoundRobinLoadBalancingPolicy, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    LoadBalancingPolicy::_iceWriteImpl(ostr);
}

void
IceGrid::RoundRobinLoadBalancingPolicy::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< RoundRobinLoadBalancingPolicy, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    LoadBalancingPolicy::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::RoundRobinLoadBalancingPolicy> iceC_IceGrid_RoundRobinLoadBalancingPolicy_init("::IceGrid::RoundRobinLoadBalancingPolicy");
}

::Ice::ValueFactoryPtr
IceGrid::RoundRobinLoadBalancingPolicy::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::RoundRobinLoadBalancingPolicy::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(RoundRobinLoadBalancingPolicyPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = RoundRobinLoadBalancingPolicyPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(RoundRobinLoadBalancingPolicy::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::AdaptiveLoadBalancingPolicy::~AdaptiveLoadBalancingPolicy()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(AdaptiveLoadBalancingPolicy* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::AdaptiveLoadBalancingPolicy::ice_clone() const
{
    ::Ice::Object* p = new AdaptiveLoadBalancingPolicy(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids[3] =
{
    "::Ice::Object",
    "::IceGrid::AdaptiveLoadBalancingPolicy",
    "::IceGrid::LoadBalancingPolicy"
};

}

bool
IceGrid::AdaptiveLoadBalancingPolicy::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids, iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids + 3, s);
}

::std::vector< ::std::string>
IceGrid::AdaptiveLoadBalancingPolicy::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids[0], &iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids[3]);
}

const ::std::string&
IceGrid::AdaptiveLoadBalancingPolicy::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::AdaptiveLoadBalancingPolicy::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::AdaptiveLoadBalancingPolicy";
    return typeId;
#else
    return iceC_IceGrid_AdaptiveLoadBalancingPolicy_ids[1];
#endif
}

/// \cond STREAM
void
IceGrid::AdaptiveLoadBalancingPolicy::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, false);
    ::Ice::StreamWriter< AdaptiveLoadBalancingPolicy, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
    LoadBalancingPolicy::_iceWriteImpl(ostr);
}

void
IceGrid::AdaptiveLoadBalancingPolicy::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< AdaptiveLoadBalancingPolicy, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
    LoadBalancingPolicy::_iceReadImpl(istr);
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::AdaptiveLoadBalancingPolicy> iceC_IceGrid_AdaptiveLoadBalancingPolicy_init("::IceGrid::AdaptiveLoadBalancingPolicy");
}

::Ice::ValueFactoryPtr
IceGrid::AdaptiveLoadBalancingPolicy::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::AdaptiveLoadBalancingPolicy::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(AdaptiveLoadBalancingPolicyPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = AdaptiveLoadBalancingPolicyPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(AdaptiveLoadBalancingPolicy::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::BoxedString::~BoxedString()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(BoxedString* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::BoxedString::ice_clone() const
{
    ::Ice::Object* p = new BoxedString(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_BoxedString_ids[2] =
{
    "::Ice::Object",
    "::IceGrid::BoxedString"
};

}

bool
IceGrid::BoxedString::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_BoxedString_ids, iceC_IceGrid_BoxedString_ids + 2, s);
}

::std::vector< ::std::string>
IceGrid::BoxedString::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_BoxedString_ids[0], &iceC_IceGrid_BoxedString_ids[2]);
}

const ::std::string&
IceGrid::BoxedString::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::BoxedString::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::BoxedString";
    return typeId;
#else
    return iceC_IceGrid_BoxedString_ids[1];
#endif
}

/// \cond STREAM
void
IceGrid::BoxedString::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, true);
    ::Ice::StreamWriter< BoxedString, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
}

void
IceGrid::BoxedString::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< BoxedString, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::BoxedString> iceC_IceGrid_BoxedString_init("::IceGrid::BoxedString");
}

::Ice::ValueFactoryPtr
IceGrid::BoxedString::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::BoxedString::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(BoxedStringPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = BoxedStringPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(BoxedString::ice_staticId(), v);
    }
}
/// \endcond

IceGrid::BoxedDistributionDescriptor::~BoxedDistributionDescriptor()
{
}

/// \cond INTERNAL
::Ice::Object* IceGrid::upCast(BoxedDistributionDescriptor* p) { return p; }

/// \endcond
::Ice::ObjectPtr
IceGrid::BoxedDistributionDescriptor::ice_clone() const
{
    ::Ice::Object* p = new BoxedDistributionDescriptor(*this);
    return p;
}

namespace
{
const ::std::string iceC_IceGrid_BoxedDistributionDescriptor_ids[2] =
{
    "::Ice::Object",
    "::IceGrid::BoxedDistributionDescriptor"
};

}

bool
IceGrid::BoxedDistributionDescriptor::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceGrid_BoxedDistributionDescriptor_ids, iceC_IceGrid_BoxedDistributionDescriptor_ids + 2, s);
}

::std::vector< ::std::string>
IceGrid::BoxedDistributionDescriptor::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceGrid_BoxedDistributionDescriptor_ids[0], &iceC_IceGrid_BoxedDistributionDescriptor_ids[2]);
}

const ::std::string&
IceGrid::BoxedDistributionDescriptor::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

const ::std::string&
IceGrid::BoxedDistributionDescriptor::ice_staticId()
{
#ifdef ICE_HAS_THREAD_SAFE_LOCAL_STATIC
    static const ::std::string typeId = "::IceGrid::BoxedDistributionDescriptor";
    return typeId;
#else
    return iceC_IceGrid_BoxedDistributionDescriptor_ids[1];
#endif
}

/// \cond STREAM
void
IceGrid::BoxedDistributionDescriptor::_iceWriteImpl(::Ice::OutputStream* ostr) const
{
    ostr->startSlice(ice_staticId(), -1, true);
    ::Ice::StreamWriter< BoxedDistributionDescriptor, ::Ice::OutputStream>::write(ostr, *this);
    ostr->endSlice();
}

void
IceGrid::BoxedDistributionDescriptor::_iceReadImpl(::Ice::InputStream* istr)
{
    istr->startSlice();
    ::Ice::StreamReader< BoxedDistributionDescriptor, ::Ice::InputStream>::read(istr, *this);
    istr->endSlice();
}
/// \endcond

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceGrid::BoxedDistributionDescriptor> iceC_IceGrid_BoxedDistributionDescriptor_init("::IceGrid::BoxedDistributionDescriptor");
}

::Ice::ValueFactoryPtr
IceGrid::BoxedDistributionDescriptor::ice_factory()
{
    return ::IceInternal::factoryTable->getValueFactory(::IceGrid::BoxedDistributionDescriptor::ice_staticId());
}

/// \cond INTERNAL
void
IceGrid::_icePatchObjectPtr(BoxedDistributionDescriptorPtr& handle, const ::Ice::ObjectPtr& v)
{
    handle = BoxedDistributionDescriptorPtr::dynamicCast(v);
    if(v && !handle)
    {
        IceInternal::Ex::throwUOE(BoxedDistributionDescriptor::ice_staticId(), v);
    }
}
/// \endcond

namespace Ice
{
}

#endif
