Skip to content


Public Types🔗

using uint32_t Index_t

Public Functions🔗

LoFFLi() =default
void init(cxx::not_null< Index_t * > freeIndicesMemory, const uint32_t capacity)
bool pop(Index_t & index)
bool push(const Index_t index)
constexpr std::size_t requiredIndexMemorySize(const uint32_t capacity)

Public Types Documentation🔗

using Index_t🔗

using iox::concurrent::LoFFLi::Index_t =  uint32_t;

Public Functions Documentation🔗

function LoFFLi🔗

LoFFLi() =default

function init🔗

void init(
    cxx::not_null< Index_t * > freeIndicesMemory,
    const uint32_t capacity


  • freeIndicesMemory pointer to a memory with the capacity calculated by requiredMemorySize()
  • capacity is the number of elements of the free-list; must be the same used at requiredMemorySize()

Todo: : why init not in ctor

Initializes the lock-free free-list

function pop🔗

bool pop(
    Index_t & index


  • index for an element to use

Return: true if index is valid, false otherwise

Pop a value from the free-list

function push🔗

bool push(
    const Index_t index


  • index to previously poped element

Return: true if index is valid or not yet pushed, false otherwise

Push previously poped element

function requiredIndexMemorySize🔗

static inline constexpr std::size_t requiredIndexMemorySize(
    const uint32_t capacity


  • capacity is the number of elements of the free-list

Return: the required memory size for a free-list with the requested capacity

Calculates the required memory size for a free-list

Updated on 26 April 2021 at 15:31:01 CEST