35 lines
501 B
C
35 lines
501 B
C
|
#ifndef ELFSPY_METHODPOINTER_H
|
||
|
#define ELFSPY_METHODPOINTER_H
|
||
|
|
||
|
#include <cstddef>
|
||
|
|
||
|
namespace spy
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* @namespace spy
|
||
|
* @struct MethodPointer
|
||
|
* handle details of a potentially virtual function pointer to a class method
|
||
|
*/
|
||
|
|
||
|
struct MethodPointer
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
std::size_t index_;
|
||
|
void* pointer_;
|
||
|
};
|
||
|
std::size_t offset_; // to adjust this pointer with
|
||
|
|
||
|
bool is_virtual() const;
|
||
|
};
|
||
|
|
||
|
inline bool MethodPointer::is_virtual() const
|
||
|
{
|
||
|
return index_ & 1UL;
|
||
|
}
|
||
|
|
||
|
} // namespace spy
|
||
|
|
||
|
#endif
|