callhandler.h
来自「AMOP 0.3 is an Automatic Mock Object for」· C头文件 代码 · 共 66 行
H
66 行
#ifndef __AMOP_CALLHANDLER_HH
#define __AMOP_CALLHANDLER_HH
#include "Config.h"
#include "VirtualTable.h"
#include "FunctionHolder.h"
namespace amop
{
namespace Detail
{
struct CallHandler
{
template <int I>
struct SelectID
{
template <class T>
struct Get
{
static void* Select(T method, size_t offset)
{
if(I == offset)
return HorribleCast<void*>(&FunctionHolder<I,T>::Func);
else
return SelectID<I+1>::Get<T>::Select(method, offset);
}
};
};
template <>
struct SelectID<MAX_NUM_VIRTUAL_FUNCTIONS>
{
template <class T>
struct Get
{
static void* Select(T method, size_t offset)
{
return 0;
}
};
};
template <class T>
static void* Select(T method,
size_t offset)
{
return SelectID<0>::Get<T>::Select(method, offset);
}
template<class T>
static void* Create(T method, size_t offset)
{
void* result = Select(method, offset);
assert(result);
return result;
}
};
}
}
#endif //__AMOP_CALLHANDLER_HH
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?