亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? functionholder.h

?? AMOP 0.3 is an Automatic Mock Object for C++. By using ABI and template techniques, it can simulate
?? H
字號:
#ifndef __AMOP_FUNCTIONHOLDER_HH
#define __AMOP_FUNCTIONHOLDER_HH

#include "Config.h"
#include "Functor.h"

namespace amop
{
namespace Detail
{
	//------------------------------------------------------------------
	template <int I, class T, bool>
	struct FunctionHolderBase;
	
	//------------------------------------------------------------------
	template <int I, class T>
	struct FunctionHolder : public FunctionHolderBase<I, T, 
		!IsEqual< typename Functor<T>::ReturnType, void >::Result  >
	{
	};
	
#ifndef VT_THIS 
#define VT_THIS TVirtualTable::GetThis(this)
#endif


#ifndef HANDLE_REDIRECT_R
#define HANDLE_REDIRECT_R			\
	do { \
	if(VT_THIS->Redirector<FunctorType>(I)){ \
		return VT_THIS->Redirector<FunctorType>(I)(DETAIL_FUNC_PARAMS(n, t));	\
		}	\
	}while(false)
#endif

#ifndef HANDLE_REDIRECT
#define HANDLE_REDIRECT			\
	do { \
	if(VT_THIS->Redirector(I)){ \
		VT_THIS->Redirector<FunctorType>(I)(DETAIL_FUNC_PARAMS(n, t));	\
		}	\
	}while(false)
#endif
	
	template <int I, class C>
	struct FunctionHolderBase<I, void (C::*)(), false>
	{			
		typedef typename void (C::*FunctorType)();
		void Func() { 
			VT_THIS->AddCallCounter(I); 
			if(VT_THIS->Redirector<FunctorType>(I))
				VT_THIS->Redirector<FunctorType>(I)();
		}
	};

	template <int I, class C>
	struct FunctionHolderBase<I, void (C::*)() const, false>
	{			
		typedef typename void (C::*FunctorType)();
		void Func() 
		{ 
			VT_THIS->AddCallCounter(I); 
			
			if(VT_THIS->Redirector<FunctorType>(I))
			{
				VT_THIS->Redirector<FunctorType>(I)();
			}
		}
	};

	//------------------------------------------------------------------
	template <int I, class R, class C>
	struct FunctionHolderBase<I, R (C::*)(), true>
	{			
		typedef typename R (C::*FunctorType)();
		R Func() 
		{ 
			VT_THIS->AddCallCounter(I);

			if(VT_THIS->Redirector<FunctorType>(I))
			{
				return VT_THIS->Redirector<FunctorType>(I)();
			}

			return VT_THIS->Return<R>(I);
		}
	};

	//------------------------------------------------------------------
	template <int I, class R, class C>
	struct FunctionHolderBase<I, R (C::*)() const, true>
	{			
		typedef typename R (C::*FunctorType)();
		R Func() 
		{ 
			VT_THIS->AddCallCounter(I);

			if(VT_THIS->Redirector<FunctorType>(I))
			{
				return VT_THIS->Redirector<FunctorType>(I)();
			}

			return VT_THIS->Return<R>(I);
		}
	};

#define DETAIL_ACTUALCALL_ITEM(n, t)		VT_THIS->Actual<T##n>(I,DETAIL_DEC(n),t##n);
#define DETAIL_ACTUALCALL_ITEM_END(n, t)	VT_THIS->Actual<T##n>(I,DETAIL_DEC(n),t##n);


	//------------------------------------------------------------------
#define	DETAIL_FUNCTIONHOLDER_BUILD_O(n)				\
	template <int I, class C, DETAIL_TPARAMS(n)>	\
	struct FunctionHolderBase<I, void (C::*)(DETAIL_TPARAMS(n)), false>   \
	{																  \
		typedef typename void (C::*FunctorType)(DETAIL_FUNC_PARAMS(n, t));		\
		void Func(DETAIL_FUNC_PARAMS(n, t))								  \
		{															  \
			DETAIL_REPEAT(n,DETAIL_ACTUALCALL_ITEM,DETAIL_ACTUALCALL_ITEM_END,t);  \
			VT_THIS->AddCallCounter(I);								  \
			if(VT_THIS->Redirector<FunctorType>(I))					\
				VT_THIS->Redirector<FunctorType>(I)(DETAIL_ARGS_P(n));	\
		}															  \
	};																\
	template <int I, class C, DETAIL_TPARAMS(n)>						\
	struct FunctionHolderBase<I, void (C::*)(DETAIL_TPARAMS(n)) const, false>   \
	{																  \
		typedef typename void (C::*FunctorType)(DETAIL_FUNC_PARAMS(n, t));		\
		void Func(DETAIL_FUNC_PARAMS(n, t))								  \
		{															  \
			DETAIL_REPEAT(n,DETAIL_ACTUALCALL_ITEM,DETAIL_ACTUALCALL_ITEM_END,t);  \
			VT_THIS->AddCallCounter(I);								  \
			if(VT_THIS->Redirector<FunctorType>(I))					\
				VT_THIS->Redirector<FunctorType>(I)(DETAIL_ARGS_P(n));	\
		}															  \
	};																	

#define	DETAIL_FUNCTIONHOLDER_BUILD_R(n)				\
	template <int I, class R, class C, DETAIL_TPARAMS(n)>				\
	struct FunctionHolderBase<I, R (C::*)(DETAIL_TPARAMS(n)), true>		\
	{																	\
		typedef typename R (C::*FunctorType)(DETAIL_FUNC_PARAMS(n, t));		\
		R Func(DETAIL_FUNC_PARAMS(n,t))									\
		{																\
			DETAIL_REPEAT(n,DETAIL_ACTUALCALL_ITEM,DETAIL_ACTUALCALL_ITEM_END,t);  \
			VT_THIS->AddCallCounter(I);									\
			if(VT_THIS->Redirector<FunctorType>(I))					\
				return VT_THIS->Redirector<FunctorType>(I)(DETAIL_ARGS_P(n));	\
			return VT_THIS->Return<R>(I);								\
		}																\
	};			\
	template <int I, class R, class C, DETAIL_TPARAMS(n)>				\
	struct FunctionHolderBase<I, R (C::*)(DETAIL_TPARAMS(n)) const, true>		\
	{																	\
		typedef typename R (C::*FunctorType)(DETAIL_FUNC_PARAMS(n, t));		\
		R Func(DETAIL_FUNC_PARAMS(n,t))									\
		{																\
			DETAIL_REPEAT(n,DETAIL_ACTUALCALL_ITEM,DETAIL_ACTUALCALL_ITEM_END,t);  \
			VT_THIS->AddCallCounter(I);									\
			if(VT_THIS->Redirector<FunctorType>(I))					\
				return VT_THIS->Redirector<FunctorType>(I)(DETAIL_ARGS_P(n));	\
			return VT_THIS->Return<R>(I);								\
		}																\
	};

#define DETAIL_FUNCTIONHOLDER_BUILD(n) DETAIL_FUNCTIONHOLDER_BUILD_O(n) \
	DETAIL_FUNCTIONHOLDER_BUILD_R(n)

DETAIL_FUNCTIONHOLDER_BUILD(1);
DETAIL_FUNCTIONHOLDER_BUILD(2);
DETAIL_FUNCTIONHOLDER_BUILD(3);
DETAIL_FUNCTIONHOLDER_BUILD(4);
DETAIL_FUNCTIONHOLDER_BUILD(5);
DETAIL_FUNCTIONHOLDER_BUILD(6);
DETAIL_FUNCTIONHOLDER_BUILD(7);
DETAIL_FUNCTIONHOLDER_BUILD(8);
/*
DETAIL_FUNCTIONHOLDER_BUILD(9);
DETAIL_FUNCTIONHOLDER_BUILD(10);
DETAIL_FUNCTIONHOLDER_BUILD(11);
DETAIL_FUNCTIONHOLDER_BUILD(12);
DETAIL_FUNCTIONHOLDER_BUILD(13);
DETAIL_FUNCTIONHOLDER_BUILD(14);
DETAIL_FUNCTIONHOLDER_BUILD(15);
*/

#undef VT_THIS
#undef HANDLE_REDIRECT
#undef HANDLE_REDIRECT_R
}

}

#endif __FUNCTIONHOLDER_HH

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜看片网址| 国产一区二区网址| 国内精品嫩模私拍在线| 白白色 亚洲乱淫| 91精品国产欧美一区二区| 亚洲桃色在线一区| 韩国一区二区视频| 91精品国产综合久久久蜜臀粉嫩| 久久精品亚洲一区二区三区浴池| 亚洲成人中文在线| 91啦中文在线观看| 亚洲国产精品成人久久综合一区| 欧美成人video| 麻豆国产一区二区| 亚洲午夜久久久久久久久电影网| 国产一区二区三区香蕉| 欧美日韩一区精品| 亚洲裸体xxx| 国产福利视频一区二区三区| 777久久久精品| 一区二区国产视频| 99re免费视频精品全部| 中文成人综合网| 激情欧美日韩一区二区| 日韩一区二区三区三四区视频在线观看 | 99久久er热在这里只有精品15| 精品国产乱码久久久久久夜甘婷婷 | 色婷婷综合久久久久中文一区二区| 亚洲精品一二三| 丰满岳乱妇一区二区三区| 蜜桃视频一区二区| 国产电影精品久久禁18| 欧美一级片在线观看| 天天色天天操综合| 欧美日韩你懂得| 午夜精品一区二区三区电影天堂| 欧日韩精品视频| 尤物在线观看一区| 在线视频欧美区| 亚洲最新视频在线观看| 在线观看欧美日本| 亚洲国产精品自拍| 欧美日韩一级黄| 丝袜美腿成人在线| 日韩女优视频免费观看| 韩国三级电影一区二区| 久久久影视传媒| 欧美性生活大片视频| 88在线观看91蜜桃国自产| 一区二区三区在线视频免费| 日韩二区三区在线观看| 精品视频一区二区不卡| 日韩二区三区四区| 久久免费精品国产久精品久久久久| 国产乱人伦偷精品视频不卡| 国产欧美视频在线观看| 色婷婷综合视频在线观看| 亚洲成人午夜影院| 日韩精品中文字幕一区二区三区 | 久久99久久久久| 久久久久久综合| 91捆绑美女网站| 日本va欧美va欧美va精品| 久久这里只精品最新地址| eeuss鲁一区二区三区| 午夜精品免费在线| 久久精品欧美一区二区三区麻豆| 97se狠狠狠综合亚洲狠狠| 在线视频中文字幕一区二区| 精品国产百合女同互慰| 成人h动漫精品一区二区| 玉足女爽爽91| 久久影音资源网| 色婷婷av一区二区三区软件| 麻豆中文一区二区| 亚洲人123区| 精品成人一区二区| 欧美揉bbbbb揉bbbbb| 韩国女主播成人在线观看| 亚洲精品久久嫩草网站秘色| 日韩欧美第一区| 色妹子一区二区| 国产精一区二区三区| 五月综合激情婷婷六月色窝| 久久精品免费在线观看| 欧美精品在欧美一区二区少妇| 欧美日韩大陆在线| 国产精品一区二区在线观看不卡 | 成人精品在线视频观看| 亚洲三级电影网站| 精品久久免费看| 欧美性猛片aaaaaaa做受| 成人在线一区二区三区| 蜜臀久久99精品久久久画质超高清 | 国产日韩欧美一区二区三区综合| 欧美日韩中文一区| 91美女福利视频| 国产二区国产一区在线观看| 日本中文字幕一区二区视频| 亚洲日本在线看| 国产精品久久久久久久久免费相片| 欧美大度的电影原声| 欧美午夜免费电影| 99re热这里只有精品视频| 国产精品一区不卡| 麻豆91精品91久久久的内涵| 亚洲成av人影院| 亚洲综合男人的天堂| 中文字幕一区二区视频| 中文字幕免费观看一区| 亚洲午夜私人影院| 久久女同性恋中文字幕| 国产99久久久国产精品潘金网站| 亚洲欧洲日本在线| 9191久久久久久久久久久| 一区二区在线观看不卡| 国产精品免费视频网站| 国产女同互慰高潮91漫画| 久久精品夜色噜噜亚洲a∨| 精品成人一区二区三区四区| 精品捆绑美女sm三区| 日韩三级在线观看| 精品裸体舞一区二区三区| 日韩女同互慰一区二区| 欧美va天堂va视频va在线| 日韩免费看的电影| 精品99999| 国产女人18水真多18精品一级做| 久久精品亚洲乱码伦伦中文| 日本一区免费视频| 国产精品乱码人人做人人爱| 中文字幕一区二区三区不卡| 亚洲欧美偷拍另类a∨色屁股| 岛国一区二区在线观看| 精品亚洲成a人在线观看 | 久久精品国产亚洲a| 日韩av成人高清| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品一区在线观看你懂的| 国产乱码精品一品二品| 成人av在线网| 精品视频一区三区九区| 精品奇米国产一区二区三区| 久久久久久久久久久久久女国产乱| 国产日产精品1区| 亚洲人成人一区二区在线观看 | 亚洲国产一区在线观看| 久久精品国产亚洲一区二区三区 | 久久亚洲私人国产精品va媚药| 国产视频一区在线播放| 亚洲欧美日韩在线| 玖玖九九国产精品| 99综合电影在线视频| 7777精品久久久大香线蕉| 久久精品免视看| 亚洲超碰精品一区二区| 国产精品综合二区| 91福利在线播放| 久久综合九色综合久久久精品综合| 国产精品毛片a∨一区二区三区| 亚洲高清视频的网址| 国产精品99久久久久久似苏梦涵| 欧美影院午夜播放| 久久久精品综合| 午夜婷婷国产麻豆精品| 欧美中文字幕一二三区视频| 一区二区三区四区蜜桃| 一卡二卡三卡日韩欧美| 久久不见久久见免费视频1| 91在线免费看| 精品播放一区二区| 亚洲123区在线观看| av高清不卡在线| 久久这里只有精品首页| 偷拍亚洲欧洲综合| 91麻豆精东视频| 日本一区二区三区dvd视频在线| 偷拍一区二区三区四区| 91黄视频在线| 亚洲国产精品高清| 国产一本一道久久香蕉| 欧美一区二区网站| 亚洲图片欧美一区| 一道本成人在线| 国产精品美女一区二区在线观看| 成人精品高清在线| 久久久91精品国产一区二区精品 | 精品国免费一区二区三区| 亚洲18女电影在线观看| 色综合中文字幕国产| 欧美成人官网二区| 免费高清视频精品| 91麻豆精品国产91久久久更新时间| 亚洲图片另类小说| 91在线小视频| **性色生活片久久毛片| 不卡电影一区二区三区| 中文子幕无线码一区tr| 国产ts人妖一区二区| 国产亚洲欧美色|