RADLib
RADical C++ application framework
RADDataStructures.h File Reference

Cache-conscious container primitives for RADLib internals and advanced users. More...

#include <RADCore/RADLicenseGate.h>
#include <algorithm>
#include <atomic>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <initializer_list>
#include <iterator>
#include <limits>
#include <memory>
#include <new>
#include <optional>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>
+ Include dependency graph for RADDataStructures.h:

Go to the source code of this file.

Classes

class  RADData::RADArrayView< T >
 Non-owning contiguous view over T values. More...
 
class  RADData::RADByteArray
 Owning byte array with lightweight append/view helpers. More...
 
class  RADData::RADMonotonicArena
 Simple monotonic arena for short-lived allocations. More...
 
class  RADData::RADFixedPool
 Fixed-size block pool for high-frequency same-size allocations. More...
 
class  RADData::RADMonotonicAllocator< T >
 Standard-compatible allocator backed by RADMonotonicArena. More...
 
struct  RADData::RADMonotonicAllocator< T >::rebind< U >
 Rebinds the allocator to another value type. More...
 
class  RADData::RADAlignedAllocator< T, Alignment >
 Standard-compatible aligned allocator. More...
 
struct  RADData::RADAlignedAllocator< T, Alignment >::rebind< U >
 Rebinds the allocator to another value type. More...
 
class  RADData::RADVector< T, Alloc >
 Contiguous dynamic array optimized for RADLib hot paths. More...
 
class  RADData::RADSmallVector< T, InlineN, Alloc >
 Vector with InlineN elements of inline storage before heap allocation. More...
 
class  RADData::RADRingBuffer< T, Alloc >
 Power-of-two circular buffer with push/pop at both ends. More...
 
class  RADData::RADRingBuffer< T, Alloc >::iterator
 Forward iterator over logical ring order. More...
 
class  RADData::RADRingBuffer< T, Alloc >::const_iterator
 Const forward iterator over logical ring order. More...
 
class  RADData::RADQueue< T, Alloc >
 FIFO queue adapter backed by RADRingBuffer. More...
 
class  RADData::RADStack< T, Alloc >
 LIFO stack adapter backed by RADVector. More...
 
class  RADData::RADSpscQueue< T >
 Lock-free single-producer/single-consumer bounded queue. More...
 
class  RADData::RADFlatHashMap< K, V, Hash, Eq >
 Open-addressed flat hash map optimized for cache-local lookups. More...
 
class  RADData::RADFlatHashMap< K, V, Hash, Eq >::iterator
 Forward iterator over occupied map entries. More...
 
class  RADData::RADFlatHashMap< K, V, Hash, Eq >::const_iterator
 Const forward iterator over occupied map entries. More...
 
class  RADData::RADFlatHashSet< K, Hash, Eq >
 Flat hash set implemented on top of RADFlatHashMap. More...
 
class  RADData::RADList< T, Alloc >
 Stable-node doubly linked list for cases where node stability matters. More...
 
class  RADData::RADList< T, Alloc >::iterator
 Mutable bidirectional iterator. More...
 
class  RADData::RADList< T, Alloc >::const_iterator
 Const forward iterator. More...
 

Namespaces

 RADData
 
 RADData::Detail
 Internal implementation details for RADData containers.
 

Typedefs

using RADData::RADByteArrayView = RADArrayView< uint8_t >
 Mutable byte view. More...
 
using RADData::RADConstByteArrayView = RADArrayView< const uint8_t >
 Const byte view. More...
 

Functions

constexpr size_t RADData::Detail::nextPowerOfTwo (size_t value)
 Returns the next power-of-two capacity at least as large as value. More...
 
template<typename T , typename U >
bool RADData::operator== (const RADMonotonicAllocator< T > &lhs, const RADMonotonicAllocator< U > &rhs)
 Compares monotonic allocators by backing arena. More...
 
template<typename T , typename U >
bool RADData::operator!= (const RADMonotonicAllocator< T > &lhs, const RADMonotonicAllocator< U > &rhs)
 Compares monotonic allocators by backing arena. More...
 
template<typename T , size_t A, typename U , size_t B>
bool RADData::operator== (const RADAlignedAllocator< T, A > &, const RADAlignedAllocator< U, B > &)
 Compares aligned allocators by alignment value. More...
 
template<typename T , size_t A, typename U , size_t B>
bool RADData::operator!= (const RADAlignedAllocator< T, A > &lhs, const RADAlignedAllocator< U, B > &rhs)
 Compares aligned allocators by alignment value. More...
 

Detailed Description

Cache-conscious container primitives for RADLib internals and advanced users.