29 #ifndef JUCE_MEMORY_H_INCLUDED
30 #define JUCE_MEMORY_H_INCLUDED
34 inline void zeromem (
void* memory,
size_t numBytes)
noexcept { memset (memory, 0, numBytes); }
37 template <
typename Type>
38 inline void zerostruct (Type& structure)
noexcept { memset (&structure, 0,
sizeof (structure)); }
45 template <
typename Type>
46 inline void deleteAndZero (Type& pointer) {
delete pointer; pointer =
nullptr; }
52 template <
typename Type,
typename IntegerType>
58 template <
typename Type1,
typename Type2>
65 inline Type*
createCopyIfNotNull (
const Type* objectToCopy) {
return objectToCopy !=
nullptr ?
new Type (*objectToCopy) :
nullptr; }
69 template <
typename Type>
73 memcpy (&value, srcPtr,
sizeof (Type));
79 template <
typename Type>
82 memcpy (dstPtr, &value,
sizeof(Type));
86 #if JUCE_MAC || JUCE_IOS || DOXYGEN
94 ScopedAutoReleasePool();
95 ~ScopedAutoReleasePool();
108 #if (JUCE_COMPILER_SUPPORTS_ARC && defined (__OBJC__)) || DOXYGEN
109 #define JUCE_AUTORELEASEPOOL @autoreleasepool
111 #define JUCE_AUTORELEASEPOOL const juce::ScopedAutoReleasePool JUCE_JOIN_MACRO (autoReleasePool_, __LINE__);
115 #define JUCE_AUTORELEASEPOOL
124 #if JUCE_MSVC && (defined (JUCE_DLL) || defined (JUCE_DLL_BUILD)) && ! (JUCE_DISABLE_DLL_ALLOCATORS || DOXYGEN)
125 extern JUCE_API void* juceDLL_malloc (
size_t);
126 extern JUCE_API void juceDLL_free (
void*);
128 #define JUCE_LEAK_DETECTOR(OwnerClass) public:\
129 static void* operator new (size_t sz) { return juce::juceDLL_malloc (sz); } \
130 static void* operator new (size_t, void* p) { return p; } \
131 static void operator delete (void* p) { juce::juceDLL_free (p); } \
132 static void operator delete (void*, void*) {}
139 #ifndef juce_UseDebuggingNewOperator
140 #define juce_UseDebuggingNewOperator
144 #endif // JUCE_MEMORY_H_INCLUDED
#define noexcept
Definition: juce_CompilerSupport.h:141
void zeromem(void *memory, size_t numBytes) noexcept
Definition: juce_Memory.h:34
Type * addBytesToPointer(Type *basePointer, IntegerType bytes) noexcept
Definition: juce_Memory.h:53
#define JUCE_API
Definition: juce_StandardHeader.h:139
void deleteAndZero(Type &pointer)
Definition: juce_Memory.h:46
void zerostruct(Type &structure) noexcept
Definition: juce_Memory.h:38
Type * createCopyIfNotNull(const Type *objectToCopy)
Definition: juce_Memory.h:65
void writeUnaligned(void *dstPtr, Type value) noexcept
Definition: juce_Memory.h:80
Type readUnaligned(const void *srcPtr) noexcept
Definition: juce_Memory.h:70
int getAddressDifference(Type1 *pointer1, Type2 *pointer2) noexcept
Definition: juce_Memory.h:59