⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultimpl.ipp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 IPP
字号:
// file      : Utility/ReferenceCounting/DefaultImpl.ipp// author    : Boris Kolpackov <boris@kolpackov.net>// copyright : Copyright (c) 2002-2003 Boris Kolpackov// license   : http://kolpackov.net/license.htmlnamespace Utility{  namespace ReferenceCounting  {    // c-tor & d-tor    template <typename SynchPolicy>    DefaultImpl<SynchPolicy>::    DefaultImpl () throw (Interface::SystemException)        : ref_count_ (1),          lock_ ()    {    }    template <typename SynchPolicy>    DefaultImpl<SynchPolicy>::    ~DefaultImpl () throw ()    {    }    // add_ref, remove_ref and refcount_value member functions    template <typename SynchPolicy>    void DefaultImpl<SynchPolicy>::    add_ref () const throw (Exception, SystemException)    {      WriteGuard_ guard (lock_);      add_ref_i ();    }    template <typename SynchPolicy>    void DefaultImpl<SynchPolicy>::    remove_ref () const throw ()    {      bool destroy (false);      try      {        WriteGuard_ guard (lock_);        destroy = remove_ref_i ();      }      catch (...)      {        // there is nothing we can do      }      if (destroy) delete this;    }    template <typename SynchPolicy>    Interface::count_t DefaultImpl<SynchPolicy>::    refcount_value () const throw (Exception, SystemException)    {      ReadGuard_ guard (lock_);      return refcount_value_i ();    }    // add_ref_i, remove_ref_i and refcount_value_i member functions    template <typename SynchPolicy>    void DefaultImpl<SynchPolicy>::    add_ref_i () const throw (Exception, SystemException)    {      ref_count_++;    }    template <typename SynchPolicy>    bool DefaultImpl<SynchPolicy>::    remove_ref_i () const throw (Exception, SystemException)    {      bool destroy (false);      if (ref_count_ > 0)      {        if (--ref_count_ == 0) destroy = true;      }      else      {        throw InconsistentState (          "Utility::ReferenceCounting::DefaultImpl::_remove_ref_i: "          "reference counter is zero.");      }      return destroy;    }    template <typename SynchPolicy>    Interface::count_t DefaultImpl<SynchPolicy>::    refcount_value_i () const throw (Exception, SystemException)    {      return ref_count_;    }    template <typename SynchPolicy>    typename SynchPolicy::Mutex& DefaultImpl<SynchPolicy>::    lock_i() const throw ()    {      return lock_;    }  }}//DefaultImpl.ipp,v 1.1 2005/05/24 04:33:13 turkaye Exp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -