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

📄 interface.hpp

📁 ACE编程的一本经典BIBLE的源代码,喜欢网络编程的别错过
💻 HPP
字号:
// file      : Utility/ReferenceCounting/Interface.hpp
// author    : Boris Kolpackov <boris@kolpackov.net>
// copyright : Copyright (c) 2002-2003 Boris Kolpackov
// license   : http://kolpackov.net/license.html

#ifndef UTILITY_REFERENCE_COUNTING_INTERFACE_HPP
#define UTILITY_REFERENCE_COUNTING_INTERFACE_HPP

#include "Utility/ExH/Compound.hpp"
#include "Utility/ExH/System/Exception.hpp"
#include "Utility/ExH/Logic/Exception.hpp"
#include "Utility/ExH/Logic/DescriptiveException.hpp"

namespace Utility
{
  namespace ReferenceCounting
  {
    // Interface to a reference-countable object. Note that _remove_ref ()
    // member function has a no-throw semantic. Even though it can lead to
    // a diagnostic loss it was made no-throw because it has a destructor
    // semantic.

    class Interface
    {
    public:
      typedef
      unsigned long
      count_t;

      typedef
      ExH::System::Exception
      SystemException;

      class Exception_ {};
      typedef
      ExH::Compound<Exception_, ExH::Logic::DescriptiveException>
      Exception;

    public:
      virtual void
      add_ref () const throw (Exception, SystemException) = 0;

      virtual void
      remove_ref () const throw () = 0;

      virtual count_t
      refcount_value () const throw (Exception, SystemException) = 0;

    protected:
      Interface () throw ();

      virtual
      ~Interface () throw ();

    protected:
      virtual void
      add_ref_i () const throw (Exception, SystemException) = 0;

      virtual bool
      remove_ref_i () const throw (Exception, SystemException) = 0;

      virtual count_t
      refcount_value_i () const throw (Exception, SystemException) = 0;

    private:
      // Copy semanic is not supported.
      Interface (Interface const&) throw ();
      Interface&
      operator= (Interface const&) throw ();
    };

    template <typename Type>
    Type*
    add_ref (Type* ptr)
      throw (Interface::Exception, Interface::SystemException);
  }
}

#include "Utility/ReferenceCounting/Interface.tpp"
#include "Utility/ReferenceCounting/Interface.ipp"

#endif  // UTILITY_REFERENCE_COUNTING_INTERFACE_HPP

//Interface.hpp,v 1.1 2005/05/24 04:33:13 turkaye Exp

⌨️ 快捷键说明

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