30 virtual void Free(
void *inAddress,
uint inSize) = 0;
42 if constexpr (needs_aligned_allocate)
45 mBase =
static_cast<uint8 *
>(JPH::Allocate(inSize));
52 if constexpr (needs_aligned_allocate)
70 Trace(
"TempAllocator: Out of memory trying to allocate %u bytes", inSize);
73 void *address = mBase + mTop;
80 virtual void Free(
void *inAddress,
uint inSize)
override
82 if (inAddress ==
nullptr)
89 if (mBase + mTop != inAddress)
91 Trace(
"TempAllocator: Freeing in the wrong order");
124 return inAddress >= mBase && inAddress < mBase + mSize;
145 if constexpr (needs_aligned_allocate)
148 return JPH::Allocate(inSize);
155 virtual void Free(
void *inAddress, [[maybe_unused]]
uint inSize)
override
157 if (inAddress !=
nullptr)
159 if constexpr (needs_aligned_allocate)
162 JPH::Free(inAddress);
182 if (mAllocator.CanAllocate(inSize))
183 return mAllocator.Allocate(inSize);
185 return mFallbackAllocator.Allocate(inSize);
189 virtual void Free(
void *inAddress,
uint inSize)
override
191 if (inAddress ==
nullptr)
197 if (mAllocator.OwnsMemory(inAddress))
198 mAllocator.Free(inAddress, inSize);
200 mFallbackAllocator.Free(inAddress, inSize);
std::uint8_t uint8
Definition Core.h:501
#define JPH_EXPORT
Definition Core.h:275
unsigned int uint
Definition Core.h:500
#define JPH_NAMESPACE_END
Definition Core.h:425
#define JPH_NAMESPACE_BEGIN
Definition Core.h:419
TraceFunction Trace
Definition IssueReporting.cpp:14
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
T AlignUp(T inV, uint64 inAlignment)
Align inV up to the next inAlignment bytes.
Definition Math.h:83
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:49
#define JPH_RVECTOR_ALIGNMENT
Definition Real.h:34
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
Definition TempAllocator.h:16
virtual void Free(void *inAddress, uint inSize)=0
Frees inSize bytes of memory located at inAddress.
virtual void * Allocate(uint inSize)=0
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
virtual ~TempAllocator()=default
Destructor.
Default implementation of the temp allocator that allocates a large block through malloc upfront.
Definition TempAllocator.h:35
size_t GetUsage() const
Get current usage in bytes of the buffer.
Definition TempAllocator.h:110
size_t GetSize() const
Get the total size of the fixed buffer.
Definition TempAllocator.h:104
bool OwnsMemory(const void *inAddress) const
Check if memory block at inAddress is owned by this allocator.
Definition TempAllocator.h:122
virtual ~TempAllocatorImpl() override
Destructor, frees the block.
Definition TempAllocator.h:49
JPH_OVERRIDE_NEW_DELETE TempAllocatorImpl(size_t inSize)
Constructs the allocator with a maximum allocatable size of inSize.
Definition TempAllocator.h:40
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:80
bool CanAllocate(uint inSize) const
Check if an allocation of inSize can be made in this fixed buffer allocator.
Definition TempAllocator.h:116
bool IsEmpty() const
Check if no allocations have been made.
Definition TempAllocator.h:98
virtual void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:59
Implementation of the TempAllocator that tries to allocate from a large preallocated block,...
Definition TempAllocator.h:169
JPH_OVERRIDE_NEW_DELETE TempAllocatorImplWithMallocFallback(uint inSize)
Constructs the allocator with an initial fixed block if inSize.
Definition TempAllocator.h:174
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:189
virtual void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:180
Definition TempAllocator.h:136
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:155
virtual JPH_OVERRIDE_NEW_DELETE void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:141