Kawe Mazidjatari 81dcfa60a0 Cleanup
2022-05-13 17:51:01 +02:00

44 lines
939 B
C++

#ifndef IDETOUR_H
#define IDETOUR_H
#define ADDDETOUR(x,y) static std::size_t dummy_reg_##y = AddDetour( new x() );
#define XREGISTER(x,y) ADDDETOUR(x, y)
#define REGISTER(x) XREGISTER(x, __COUNTER__)
class IDetour
{
public:
virtual ~IDetour() { ; }
virtual void GetAdr(void) const = 0;
virtual void GetFun(void) const = 0;
virtual void GetVar(void) const = 0;
virtual void GetCon(void) const = 0;
virtual void Attach(void) const = 0;
virtual void Detach(void) const = 0;
};
class VDetour : public IDetour
{
virtual void GetAdr(void) const { }
virtual void GetFun(void) const { }
virtual void GetVar(void) const { }
virtual void GetCon(void) const { }
virtual void Attach(void) const { }
virtual void Detach(void) const { }
};
namespace
{
std::vector<IDetour*> vDetour;
std::size_t AddDetour(IDetour* pDetour)
{
vDetour.push_back(pDetour);
return vDetour.size();
}
}
REGISTER(VDetour);
#endif // IDETOUR_H