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

#ifndef ICESTORM_API_EXPORTS
#   define ICESTORM_API_EXPORTS
#endif
#include <IceStorm/Metrics.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 <Ice/LocalException.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<::IceMX::TopicMetrics> iceC_IceMX_TopicMetrics_init("::IceMX::TopicMetrics");

const ::IceInternal::DefaultValueFactoryInit<::IceMX::SubscriberMetrics> iceC_IceMX_SubscriberMetrics_init("::IceMX::SubscriberMetrics");

}

IceMX::TopicMetrics::~TopicMetrics()
{
}

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

IceMX::SubscriberMetrics::~SubscriberMetrics()
{
}

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

#else // C++98 mapping

namespace
{

}

/// \cond INTERNAL
ICESTORM_API ::IceProxy::Ice::Object* ::IceProxy::IceMX::upCast(TopicMetrics* p) { return p; }

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

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

const ::std::string&
IceProxy::IceMX::TopicMetrics::ice_staticId()
{
    return ::IceMX::TopicMetrics::ice_staticId();
}

/// \cond INTERNAL
ICESTORM_API ::IceProxy::Ice::Object* ::IceProxy::IceMX::upCast(SubscriberMetrics* p) { return p; }

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

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

const ::std::string&
IceProxy::IceMX::SubscriberMetrics::ice_staticId()
{
    return ::IceMX::SubscriberMetrics::ice_staticId();
}

IceMX::TopicMetrics::~TopicMetrics()
{
}

/// \cond INTERNAL
ICESTORM_API ::Ice::Object* IceMX::upCast(TopicMetrics* p) { return p; }

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

namespace
{
const ::std::string iceC_IceMX_TopicMetrics_ids[3] =
{
    "::Ice::Object",
    "::IceMX::Metrics",
    "::IceMX::TopicMetrics"
};

}

bool
IceMX::TopicMetrics::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceMX_TopicMetrics_ids, iceC_IceMX_TopicMetrics_ids + 3, s);
}

::std::vector< ::std::string>
IceMX::TopicMetrics::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceMX_TopicMetrics_ids[0], &iceC_IceMX_TopicMetrics_ids[3]);
}

const ::std::string&
IceMX::TopicMetrics::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

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

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

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

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceMX::TopicMetrics> iceC_IceMX_TopicMetrics_init("::IceMX::TopicMetrics");
}

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

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

IceMX::SubscriberMetrics::~SubscriberMetrics()
{
}

/// \cond INTERNAL
ICESTORM_API ::Ice::Object* IceMX::upCast(SubscriberMetrics* p) { return p; }

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

namespace
{
const ::std::string iceC_IceMX_SubscriberMetrics_ids[3] =
{
    "::Ice::Object",
    "::IceMX::Metrics",
    "::IceMX::SubscriberMetrics"
};

}

bool
IceMX::SubscriberMetrics::ice_isA(const ::std::string& s, const ::Ice::Current&) const
{
    return ::std::binary_search(iceC_IceMX_SubscriberMetrics_ids, iceC_IceMX_SubscriberMetrics_ids + 3, s);
}

::std::vector< ::std::string>
IceMX::SubscriberMetrics::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&iceC_IceMX_SubscriberMetrics_ids[0], &iceC_IceMX_SubscriberMetrics_ids[3]);
}

const ::std::string&
IceMX::SubscriberMetrics::ice_id(const ::Ice::Current&) const
{
    return ice_staticId();
}

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

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

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

namespace
{
const ::IceInternal::DefaultValueFactoryInit< ::IceMX::SubscriberMetrics> iceC_IceMX_SubscriberMetrics_init("::IceMX::SubscriberMetrics");
}

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

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

namespace Ice
{
}

#endif
