mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 01:37:00 +00:00
120 lines
2.7 KiB
C++
120 lines
2.7 KiB
C++
// -*- C++ -*-
|
|
//
|
|
// $Id: Auto_Functor.inl 92386 2010-10-28 07:44:37Z johnnyw $
|
|
|
|
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
|
|
|
|
template<typename X, typename Functor> ACE_INLINE
|
|
ACE_Utils::Auto_Functor_Ref<X,Functor>::
|
|
Auto_Functor_Ref(X * p, Functor f)
|
|
: p_(p)
|
|
, f_(f)
|
|
{
|
|
}
|
|
|
|
template<typename X, typename Functor> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::Auto_Functor(X * p, Functor f)
|
|
: p_(p)
|
|
, f_(f)
|
|
{
|
|
}
|
|
|
|
template<typename X, typename Functor> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::Auto_Functor(Auto_Functor & rhs)
|
|
: p_(rhs.release())
|
|
, f_(rhs.f_)
|
|
{
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE ACE_Utils::Auto_Functor<X,Functor>&
|
|
ACE_Utils::Auto_Functor<X,Functor>:: operator=(Auto_Functor & rhs)
|
|
{
|
|
reset(rhs.release());
|
|
f_ = rhs.f_;
|
|
return *this;
|
|
}
|
|
|
|
template<typename X, typename Functor> template<typename Y> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::Auto_Functor(Auto_Functor<Y,Functor>& rhs)
|
|
: p_(rhs.release())
|
|
, f_(rhs.f_)
|
|
{
|
|
}
|
|
|
|
template<typename X, typename Functor> template<typename Y>
|
|
ACE_INLINE ACE_Utils::Auto_Functor<X,Functor>&
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator=(Auto_Functor<Y,Functor>& rhs)
|
|
{
|
|
reset(rhs.release());
|
|
return *this;
|
|
}
|
|
|
|
template<typename X, typename Functor> ACE_INLINE X &
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator*() const
|
|
{
|
|
return *p_;
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE X *
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator->() const
|
|
{
|
|
return p_;
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE X *
|
|
ACE_Utils::Auto_Functor<X,Functor>::get()
|
|
{
|
|
return p_;
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE X *
|
|
ACE_Utils::Auto_Functor<X,Functor>::release()
|
|
{
|
|
X * tmp = p_;
|
|
p_ = 0;
|
|
return tmp;
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE Functor const &
|
|
ACE_Utils::Auto_Functor<X,Functor>::functor() const
|
|
{
|
|
return f_;
|
|
}
|
|
|
|
template<typename X, typename Functor> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::Auto_Functor(Auto_Functor_Ref<X,Functor> rhs)
|
|
: p_(rhs.p_)
|
|
, f_(rhs.f_)
|
|
{
|
|
}
|
|
|
|
template<typename X, typename Functor>
|
|
ACE_INLINE ACE_Utils::Auto_Functor<X,Functor> &
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator=(Auto_Functor_Ref<X,Functor> rhs)
|
|
{
|
|
if(rhs.p_ != p_)
|
|
{
|
|
reset(rhs.p_);
|
|
f_ = rhs.f_;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
template<typename X, typename Functor> template<typename Y> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator ACE_Utils::Auto_Functor_Ref<Y,Functor>()
|
|
{
|
|
return ACE_Utils::Auto_Functor_Ref<Y,Functor>(release(), f_);
|
|
}
|
|
|
|
template<typename X, typename Functor> template<typename Y> ACE_INLINE
|
|
ACE_Utils::Auto_Functor<X,Functor>::operator ACE_Utils::Auto_Functor<Y,Functor>()
|
|
{
|
|
return ACE_Utils::Auto_Functor<Y,Functor>(release(), f_);
|
|
}
|
|
|
|
ACE_END_VERSIONED_NAMESPACE_DECL
|