Added BX_OFFSETOF.

This commit is contained in:
Бранимир Караџић
2022-08-25 20:01:07 -07:00
parent d4403099f9
commit dbafa143d9
3 changed files with 50 additions and 0 deletions

View File

@@ -21,6 +21,10 @@
///
#define BX_COUNTOF(_x) sizeof(bx::CountOfRequireArrayArgumentT(_x) )
///
#define BX_OFFSETOF(_type, _member) \
(reinterpret_cast<ptrdiff_t>(&(reinterpret_cast<_type*>(16)->_member) )-ptrdiff_t(16) )
///
#if BX_COMPILER_MSVC
# define BX_IGNORE_C4127(_x) bx::ignoreC4127(!!(_x) )
@@ -45,6 +49,14 @@ namespace bx
template <class Ty>
const Ty* addressOf(const Ty& _a);
///
template<typename Ty>
Ty* addressOf(void* _ptr, ptrdiff_t _offset);
///
template<typename Ty>
const Ty* addressOf(const void* _ptr, ptrdiff_t _offset);
/// Swap two values.
template<typename Ty>
void swap(Ty& _a, Ty& _b);

View File

@@ -53,6 +53,18 @@ namespace bx
);
}
template<typename Ty>
inline Ty* addressOf(void* _ptr, ptrdiff_t _offset)
{
return (Ty*)( (uint8_t*)_ptr + _offset);
}
template<typename Ty>
inline const Ty* addressOf(const void* _ptr, ptrdiff_t _offset)
{
return (const Ty*)( (const uint8_t*)_ptr + _offset);
}
template<typename Ty>
inline void swap(Ty& _a, Ty& _b)
{