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 static inline constexpr T * OffsetCast(U *p, ptrdiff_t offset) @@ -48,6 +57,13 @@ OffsetCast(U *p, ptrdiff_t offset) return reinterpret_cast(OffsetPointer(p, offset)); } +template +static inline constexpr T * +OffsetCast(const U *p, ptrdiff_t offset) +{ + return reinterpret_cast(OffsetPointer(p, offset)); +} + /** * Cast the given pointer to a struct member to its parent structure. */