aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/util/Cast.hxx16
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.
*/