26#ifndef WATER_MEMORY_H_INCLUDED
27#define WATER_MEMORY_H_INCLUDED
37inline void zeromem (
void* memory,
size_t numBytes)
noexcept { std::memset (memory, 0, numBytes); }
40template <
typename Type>
41inline void zerostruct (Type& structure)
noexcept { std::memset (&structure, 0,
sizeof (structure)); }
48template <
typename Type>
49inline void deleteAndZero (Type& pointer) {
delete pointer; pointer =
nullptr; }
55template <
typename Type,
typename IntegerType>
56inline Type*
addBytesToPointer (Type* basePointer, IntegerType bytes)
noexcept {
return (Type*) (((
char*) basePointer) + bytes); }
61template <
typename Type1,
typename Type2>
62inline int getAddressDifference (Type1* pointer1, Type2* pointer2)
noexcept {
return (
int) (((
const char*) pointer1) - (
const char*) pointer2); }
68inline Type*
createCopyIfNotNull (
const Type* objectToCopy) {
return objectToCopy !=
nullptr ?
new Type (*objectToCopy) :
nullptr; }
72template <
typename Type>
76 std::memcpy (&
value, srcPtr,
sizeof (Type));
82template <
typename Type>
85 std::memcpy (dstPtr, &
value,
sizeof(Type));
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioSampleBuffer.h:33
int getAddressDifference(Type1 *pointer1, Type2 *pointer2) noexcept
Definition Memory.h:62
Type readUnaligned(const void *srcPtr) noexcept
Definition Memory.h:73
void writeUnaligned(void *dstPtr, Type value) noexcept
Definition Memory.h:83
void deleteAndZero(Type &pointer)
Definition Memory.h:49
void zeromem(void *memory, size_t numBytes) noexcept
Definition Memory.h:37
void zerostruct(Type &structure) noexcept
Definition Memory.h:41
Type * addBytesToPointer(Type *basePointer, IntegerType bytes) noexcept
Definition Memory.h:56
Type * createCopyIfNotNull(const Type *objectToCopy)
Definition Memory.h:68