-#ifndef __DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H__
-#define __DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H__
+#ifndef DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H
+#define DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
namespace Dali
{
-
namespace Internal
{
-
/**
* @brief Helper for allocating/deallocating objects using a memory pool.
*
* The type may be a class or POD.
*
*/
-template< typename T >
+template<typename T>
class MemoryPoolObjectAllocator
{
public:
-
/**
* @brief Constructor
*/
MemoryPoolObjectAllocator()
- : mPool( NULL )
+ : mPool(nullptr)
{
ResetMemoryPool();
}
*/
T* Allocate()
{
- return new ( mPool->Allocate() ) T();
+ return new(mPool->Allocate()) T();
}
/**
*/
T* AllocateThreadSafe()
{
- return new ( mPool->AllocateThreadSafe() ) T();
+ return new(mPool->AllocateThreadSafe()) T();
}
/**
*
* @param object Pointer to the object to delete
*/
- void Free( T* object )
+ void Free(T* object)
{
- mPool->Free( object );
+ mPool->Free(object);
}
/**
*
* @param object Pointer to the object to delete
*/
- void FreeThreadSafe( T* object )
+ void FreeThreadSafe(T* object)
{
- mPool->FreeThreadSafe( object );
+ mPool->FreeThreadSafe(object);
}
/**
*
* @param object Pointer to the object to delete
*/
- void Destroy( T* object )
+ void Destroy(T* object)
{
object->~T();
- mPool->Free( object );
+ mPool->Free(object);
}
/**
*
* @param object Pointer to the object to delete
*/
- void DestroyThreadSafe( T* object )
+ void DestroyThreadSafe(T* object)
{
object->~T();
- mPool->FreeThreadSafe( object );
+ mPool->FreeThreadSafe(object);
}
/**
{
delete mPool;
- mPool = new FixedSizeMemoryPool( TypeSizeWithAlignment< T >::size );
+ mPool = new FixedSizeMemoryPool(TypeSizeWithAlignment<T>::size);
}
-private:
+ /**
+ * @brief Get the capacity of the memory pool
+ */
+ uint32_t GetCapacity() const
+ {
+ return mPool->GetCapacity();
+ }
+private:
// Undefined
- MemoryPoolObjectAllocator( const MemoryPoolObjectAllocator& memoryPoolObjectAllocator );
+ MemoryPoolObjectAllocator(const MemoryPoolObjectAllocator& memoryPoolObjectAllocator);
// Undefined
- MemoryPoolObjectAllocator& operator=( const MemoryPoolObjectAllocator& memoryPoolObjectAllocator );
+ MemoryPoolObjectAllocator& operator=(const MemoryPoolObjectAllocator& memoryPoolObjectAllocator);
private:
-
- FixedSizeMemoryPool* mPool; ///< Memory pool from which allocations are made
-
+ FixedSizeMemoryPool* mPool; ///< Memory pool from which allocations are made
};
} // namespace Internal
} // namespace Dali
-#endif /* __DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H__ */
+#endif // DALI_INTERNAL_MEMORY_POOL_OBJECT_ALLOCATOR_H