util/Cast: add const overloads

This commit is contained in:
Max Kellermann 2014-07-14 16:02:02 +02:00
parent 393cb7fd7d
commit f8da8b0261

View File

@ -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.
*/