invariant_check.hpp

来自「LINUX下」· HPP 代码 · 共 79 行

HPP
79
字号
// Copyright Daniel Wallin 2004. Use, modification and distribution is// subject to the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef TORRENT_INVARIANT_ACCESS_HPP_INCLUDED#define TORRENT_INVARIANT_ACCESS_HPP_INCLUDED#include "libtorrent/assert.hpp"namespace libtorrent{	class invariant_access	{	public:		template<class T>		static void check_invariant(T const& self)		{			self.check_invariant();		}	};	template<class T>	void check_invariant(T const& x)	{		invariant_access::check_invariant(x);	}	struct invariant_checker {};	template<class T>	struct invariant_checker_impl : invariant_checker	{		invariant_checker_impl(T const& self_)			: self(self_)		{			try			{				check_invariant(self);			}			catch (...)			{				TORRENT_ASSERT(false);			}		}		~invariant_checker_impl()		{			try			{				check_invariant(self);			}			catch (...)			{				TORRENT_ASSERT(false);			}		}		T const& self;	};	template<class T>	invariant_checker_impl<T> make_invariant_checker(T const& x)	{		return invariant_checker_impl<T>(x);	}}#if !defined NDEBUG && !defined TORRENT_DISABLE_INVARIANT_CHECKS#define INVARIANT_CHECK \	invariant_checker const& _invariant_check = make_invariant_checker(*this); \	(void)_invariant_check; \	do {} while (false)#else#define INVARIANT_CHECK do {} while (false)#endif#endif // TORRENT_INVARIANT_ACCESS_HPP_INCLUDED

⌨️ 快捷键说明

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