diff options
Diffstat (limited to 'src/util/Cast.hxx')
-rw-r--r-- | src/util/Cast.hxx | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/util/Cast.hxx b/src/util/Cast.hxx index ca4b62832..8eb3479b8 100644 --- a/src/util/Cast.hxx +++ b/src/util/Cast.hxx @@ -41,6 +41,15 @@ OffsetPointer(void *p, ptrdiff_t offset) return (char *)p + offset; } +/** + * Offset the given pointer by the specified number of bytes. + */ +static inline constexpr const void * +OffsetPointer(const void *p, ptrdiff_t offset) +{ + return (const char *)p + offset; +} + template<typename T, typename U> static inline constexpr T * OffsetCast(U *p, ptrdiff_t offset) @@ -48,6 +57,13 @@ OffsetCast(U *p, ptrdiff_t offset) return reinterpret_cast<T *>(OffsetPointer(p, offset)); } +template<typename T, typename U> +static inline constexpr T * +OffsetCast(const U *p, ptrdiff_t offset) +{ + return reinterpret_cast<const T *>(OffsetPointer(p, offset)); +} + /** * Cast the given pointer to a struct member to its parent structure. */ |