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

📄 mem_fn.hpp

📁 system C源码 一种替代verilog的语言
💻 HPP
字号:
#ifndef BOOST_MEM_FN_HPP_INCLUDED#define BOOST_MEM_FN_HPP_INCLUDED// MS compatible compilers support #pragma once#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif////  mem_fn.hpp - a generalization of std::mem_fun[_ref]////  Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.//  Copyright (c) 2001 David Abrahams//  Copyright (c) 2003-2005 Peter Dimov//// Distributed under 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)////  See http://www.boost.org/libs/bind/mem_fn.html for documentation.//#include <sysc/packages/boost/config.hpp>#include <sysc/packages/boost/get_pointer.hpp>#include <sysc/packages/boost/detail/workaround.hpp>namespace boost{#if defined(BOOST_NO_VOID_RETURNS)#define BOOST_MEM_FN_CLASS_F , class F#define BOOST_MEM_FN_TYPEDEF(X)namespace _mfi // mem_fun_impl{template<class V> struct mf{#define BOOST_MEM_FN_RETURN return#define BOOST_MEM_FN_NAME(X) inner_##X#define BOOST_MEM_FN_CC#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#ifdef BOOST_MEM_FN_ENABLE_CDECL#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl#define BOOST_MEM_FN_CC __cdecl#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall#define BOOST_MEM_FN_CC __stdcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_FASTCALL#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall#define BOOST_MEM_FN_CC __fastcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#undef BOOST_MEM_FN_RETURN}; // struct mf<V>template<> struct mf<void>{#define BOOST_MEM_FN_RETURN#define BOOST_MEM_FN_NAME(X) inner_##X#define BOOST_MEM_FN_CC#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#ifdef BOOST_MEM_FN_ENABLE_CDECL#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl#define BOOST_MEM_FN_CC __cdecl#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall#define BOOST_MEM_FN_CC __stdcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_FASTCALL#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall#define BOOST_MEM_FN_CC __fastcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#undef BOOST_MEM_FN_RETURN}; // struct mf<void>#undef BOOST_MEM_FN_CLASS_F#undef BOOST_MEM_FN_TYPEDEF_F#define BOOST_MEM_FN_NAME(X) X#define BOOST_MEM_FN_NAME2(X) inner_##X#define BOOST_MEM_FN_CC#include <sysc/packages/boost/bind/mem_fn_vw.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_NAME2#undef BOOST_MEM_FN_CC#ifdef BOOST_MEM_FN_ENABLE_CDECL#define BOOST_MEM_FN_NAME(X) X##_cdecl#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl#define BOOST_MEM_FN_CC __cdecl#include <sysc/packages/boost/bind/mem_fn_vw.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_NAME2#undef BOOST_MEM_FN_CC#endif#ifdef BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_NAME(X) X##_stdcall#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall#define BOOST_MEM_FN_CC __stdcall#include <sysc/packages/boost/bind/mem_fn_vw.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_NAME2#undef BOOST_MEM_FN_CC#endif#ifdef BOOST_MEM_FN_ENABLE_FASTCALL#define BOOST_MEM_FN_NAME(X) X##_fastcall#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall#define BOOST_MEM_FN_CC __fastcall#include <sysc/packages/boost/bind/mem_fn_vw.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_NAME2#undef BOOST_MEM_FN_CC#endif} // namespace _mfi#else // #ifdef BOOST_NO_VOID_RETURNS#define BOOST_MEM_FN_CLASS_F#define BOOST_MEM_FN_TYPEDEF(X) typedef X;namespace _mfi{#define BOOST_MEM_FN_RETURN return#define BOOST_MEM_FN_NAME(X) X#define BOOST_MEM_FN_CC#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#ifdef BOOST_MEM_FN_ENABLE_CDECL#define BOOST_MEM_FN_NAME(X) X##_cdecl#define BOOST_MEM_FN_CC __cdecl#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_NAME(X) X##_stdcall#define BOOST_MEM_FN_CC __stdcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#ifdef BOOST_MEM_FN_ENABLE_FASTCALL#define BOOST_MEM_FN_NAME(X) X##_fastcall#define BOOST_MEM_FN_CC __fastcall#include <sysc/packages/boost/bind/mem_fn_template.hpp>#undef BOOST_MEM_FN_CC#undef BOOST_MEM_FN_NAME#endif#undef BOOST_MEM_FN_RETURN} // namespace _mfi#undef BOOST_MEM_FN_CLASS_F#undef BOOST_MEM_FN_TYPEDEF#endif // #ifdef BOOST_NO_VOID_RETURNS#define BOOST_MEM_FN_NAME(X) X#define BOOST_MEM_FN_CC#include <sysc/packages/boost/bind/mem_fn_cc.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_CC#ifdef BOOST_MEM_FN_ENABLE_CDECL#define BOOST_MEM_FN_NAME(X) X##_cdecl#define BOOST_MEM_FN_CC __cdecl#include <sysc/packages/boost/bind/mem_fn_cc.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_CC#endif#ifdef BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_NAME(X) X##_stdcall#define BOOST_MEM_FN_CC __stdcall#include <sysc/packages/boost/bind/mem_fn_cc.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_CC#endif#ifdef BOOST_MEM_FN_ENABLE_FASTCALL#define BOOST_MEM_FN_NAME(X) X##_fastcall#define BOOST_MEM_FN_CC __fastcall#include <sysc/packages/boost/bind/mem_fn_cc.hpp>#undef BOOST_MEM_FN_NAME#undef BOOST_MEM_FN_CC#endif// data member supportnamespace _mfi{template<class R, class T> class dm{public:    typedef R const & result_type;    typedef T const * argument_type;private:        typedef R (T::*F);    F f_;    template<class U> R const & call(U & u, T const *) const    {        return (u.*f_);    }    template<class U> R & call(U & u, T *) const    {        return (u.*f_);    }    template<class U> R const & call(U & u, void const *) const    {        return (get_pointer(u)->*f_);    }public:        explicit dm(F f): f_(f) {}    R & operator()(T * p) const    {        return (p->*f_);    }    R const & operator()(T const * p) const    {        return (p->*f_);    }    template<class U> R const & operator()(U & u) const    {        return call(u, &u);    }#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200)    R & operator()(T & t) const    {        return (t.*f_);    }#endif    R const & operator()(T const & t) const    {        return (t.*f_);    }    bool operator==(dm const & rhs) const    {        return f_ == rhs.f_;    }    bool operator!=(dm const & rhs) const    {        return f_ != rhs.f_;    }};} // namespace _mfitemplate<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f){    return _mfi::dm<R, T>(f);}} // namespace boost#endif // #ifndef BOOST_MEM_FN_HPP_INCLUDED

⌨️ 快捷键说明

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