Base Framework
Public Member Functions | Protected Attributes | List of all members
HeapBlock< TYPE > Class Template Reference

#include <base/mem/Heap.h>

Inherited by HeapBlockOwned< TYPE >.

Public Member Functions

 HeapBlock () noexcept
 
 HeapBlock (MemorySize size)
 
 HeapBlock (const HeapBlock &copy) noexcept
 
 HeapBlock (HeapBlock &&move) noexcept
 
HeapBlockoperator= (const HeapBlock &assign) noexcept
 
HeapBlockoperator= (NullPtr assign) noexcept
 
HeapBlockoperator= (TYPE *assign) noexcept
 
HeapBlockoperator= (HeapBlock &&assign) noexcept
 
void resize (MemorySize size)
 
bool tryResize (MemorySize size) noexcept
 
MemorySize getSize () const noexcept
 
void release ()
 
 operator TYPE * () noexcept
 
 operator const TYPE * () const noexcept
 
 operator bool () const noexcept
 
 ~HeapBlock ()
 

Protected Attributes

TYPE * heap = nullptr
 

Detailed Description

template<typename TYPE>
class HeapBlock< TYPE >

Pointer to heap. Note destructor will not release heap! Likewise copy construction and assignment copy the pointer value. This is to behave like a normal pointer. You must call release explicitly.

Constructor & Destructor Documentation

◆ HeapBlock() [1/4]

template<typename TYPE >
HeapBlock< TYPE >::HeapBlock ( )
inlinenoexcept

No memory.

◆ HeapBlock() [2/4]

template<typename TYPE >
HeapBlock< TYPE >::HeapBlock ( MemorySize  size)
inline

Allocates memory of given size.

◆ HeapBlock() [3/4]

template<typename TYPE >
HeapBlock< TYPE >::HeapBlock ( const HeapBlock< TYPE > &  copy)
inlinenoexcept

Copy of pointer value!

◆ HeapBlock() [4/4]

template<typename TYPE >
HeapBlock< TYPE >::HeapBlock ( HeapBlock< TYPE > &&  move)
inlinenoexcept

Copy of pointer value!

◆ ~HeapBlock()

template<typename TYPE >
HeapBlock< TYPE >::~HeapBlock ( )
inline

Member Function Documentation

◆ getSize()

template<typename TYPE >
MemorySize HeapBlock< TYPE >::getSize ( ) const
inlinenoexcept

Returns the size of the block. Can return 0 if not supported.

◆ operator bool()

template<typename TYPE >
HeapBlock< TYPE >::operator bool ( ) const
inlinenoexcept

Returns true if pointer is not nullptr.

◆ operator const TYPE *()

template<typename TYPE >
HeapBlock< TYPE >::operator const TYPE * ( ) const
inlinenoexcept

Returns the native pointer.

◆ operator TYPE *()

template<typename TYPE >
HeapBlock< TYPE >::operator TYPE * ( )
inlinenoexcept

Returns the native pointer.

◆ operator=() [1/4]

template<typename TYPE >
HeapBlock& HeapBlock< TYPE >::operator= ( const HeapBlock< TYPE > &  assign)
inlinenoexcept

Assignment of pointer value!

◆ operator=() [2/4]

template<typename TYPE >
HeapBlock& HeapBlock< TYPE >::operator= ( HeapBlock< TYPE > &&  assign)
inlinenoexcept

Assignment of pointer value!

◆ operator=() [3/4]

template<typename TYPE >
HeapBlock& HeapBlock< TYPE >::operator= ( NullPtr  assign)
inlinenoexcept

Assignment of pointer value!

◆ operator=() [4/4]

template<typename TYPE >
HeapBlock& HeapBlock< TYPE >::operator= ( TYPE *  assign)
inlinenoexcept

Assignment of pointer value!

◆ release()

template<typename TYPE >
void HeapBlock< TYPE >::release ( )
inline

Releases heap. Make sure to call explicitly for normal use cases!

◆ resize()

template<typename TYPE >
void HeapBlock< TYPE >::resize ( MemorySize  size)
inline

Resizes block.

◆ tryResize()

template<typename TYPE >
bool HeapBlock< TYPE >::tryResize ( MemorySize  size)
inlinenoexcept

Tries inplace resize. Returns true on success.