WPILibC++ 2025.1.1
Loading...
Searching...
No Matches
memory_arena.hpp File Reference

Class wpi::memory::memory_arena and related functionality regarding BlockAllocators. More...

#include <type_traits>
#include "detail/debug_helpers.hpp"
#include "detail/assert.hpp"
#include "detail/utility.hpp"
#include "allocator_traits.hpp"
#include "config.hpp"
#include "default_allocator.hpp"
#include "error.hpp"

Go to the source code of this file.

Classes

struct  wpi::memory::memory_block
 A memory block. More...
 
struct  wpi::memory::is_block_allocator< T >
 Traits that check whether a type models concept BlockAllocator. More...
 
class  wpi::memory::detail::memory_block_stack
 
class  wpi::memory::detail::memory_arena_cache< cached_arena >
 
class  wpi::memory::detail::memory_arena_cache< uncached_arena >
 
class  wpi::memory::memory_arena< BlockAllocator, Cached >
 A memory arena that manages huge memory blocks for a higher-level allocator. More...
 
class  wpi::memory::growing_block_allocator< RawAllocator, Num, Den >
 A BlockAllocator that uses a given RawAllocator for allocating the blocks. More...
 
class  wpi::memory::fixed_block_allocator< RawAllocator >
 A BlockAllocator that allows only one block allocation. More...
 

Namespaces

namespace  wpi
 Foonathan namespace.
 
namespace  wpi::memory
 Memory namespace.
 
namespace  wpi::memory::detail
 
namespace  wpi::memory::literals
 Literals namespace.
 

Typedefs

template<class RawAlloc >
using wpi::memory::detail::default_block_wrapper = growing_block_allocator<RawAlloc>
 
template<class BlockOrRawAllocator , template< typename... > class BlockAllocator = detail::default_block_wrapper>
using wpi::memory::make_block_allocator_t
 Takes either a BlockAllocator or a RawAllocator.
 

Functions

template<class BlockAllocator >
std::true_type wpi::memory::detail::is_block_allocator_impl (int,,,)
 
template<typename T >
std::false_type wpi::memory::detail::is_block_allocator_impl (short)
 
template<template< class... > class Wrapper, class BlockAllocator , typename... Args>
BlockAllocator wpi::memory::detail::make_block_allocator (std::true_type, std::size_t block_size, Args &&... args)
 
template<template< class... > class Wrapper, class RawAlloc >
auto wpi::memory::detail::make_block_allocator (std::false_type, std::size_t block_size, RawAlloc alloc=RawAlloc()) -> Wrapper< RawAlloc >
 
template<class BlockOrRawAllocator , typename... Args>
make_block_allocator_t< BlockOrRawAllocator > wpi::memory::make_block_allocator (std::size_t block_size, Args &&... args)
 
template<template< class... > class BlockAllocator, class BlockOrRawAllocator , typename... Args>
make_block_allocator_t< BlockOrRawAllocator, BlockAllocator > wpi::memory::make_block_allocator (std::size_t block_size, Args &&... args)
 
constexpr std::size_t wpi::memory::literals::operator""_KiB (unsigned long long value) noexcept
 Syntax sugar to express sizes with unit prefixes.
 
constexpr std::size_t wpi::memory::literals::operator""_KB (unsigned long long value) noexcept
 
constexpr std::size_t wpi::memory::literals::operator""_MiB (unsigned long long value) noexcept
 
constexpr std::size_t wpi::memory::literals::operator""_MB (unsigned long long value) noexcept
 
constexpr std::size_t wpi::memory::literals::operator""_GiB (unsigned long long value) noexcept
 
constexpr std::size_t wpi::memory::literals::operator""_GB (unsigned long long value) noexcept
 

Variables

constexpr bool wpi::memory::cached_arena = true
 
constexpr bool wpi::memory::uncached_arena = false
 

Detailed Description

Class wpi::memory::memory_arena and related functionality regarding BlockAllocators.