Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
corium::internal Namespace Reference

Classes

struct  callable_event_type
 
struct  callable_event_type< R(*)(const EventType &)>
 
struct  callable_event_type< R(*)(EventType)>
 
struct  callable_event_type< R(C::*)(const EventType &) const >
 
struct  callable_event_type< R(C::*)(const EventType &)>
 
struct  callable_event_type< R(C::*)(EventType) const >
 
struct  callable_event_type< R(C::*)(EventType)>
 
class  EventHandlerDelegate
 Lightweight non-allocating delegate wrapper with 32-byte Small Buffer Optimization (SBO). Eliminates std::function heap allocations and virtual table overhead for event handlers. More...
 
class  EventQueue
 Event queue composing QueuePolicy, SignalPolicy, and OverflowPolicy strategy types. More...
 
struct  extract_event_variant
 
struct  extract_event_variant< T, std::void_t< typename T::EventVariant > >
 
class  FixedHandlerList
 Fixed-capacity stack-allocated list of event handlers for a single event type. More...
 
struct  get_callable_event_type
 
struct  get_callable_event_type< Callable, std::void_t< decltype(&std::decay_t< Callable >::operator())> >
 
struct  get_callable_event_type< R(*)(const EventType &)>
 
struct  get_callable_event_type< R(*)(EventType)>
 
struct  get_timer_clock_policy
 
struct  get_timer_clock_policy< T, std::void_t< typename T::clock_policy > >
 
struct  has_variant_type
 Helper trait to check if type T exists inside std::variant<Types...> at compile time. More...
 
struct  has_variant_type< T, std::variant< Types... > >
 
struct  queue_capacity_of
 Extract queue capacity from a QueuePolicy if it exposes a static ::capacity member, rounded up to the nearest power of 2 for power-of-two ring buffer constraints. Falls back to 1024 for policies without a capacity (e.g. NoQueuePolicy). More...
 
struct  queue_capacity_of< QueuePolicy, std::void_t< decltype(QueuePolicy::capacity)> >
 
struct  rebind_queue_capacity
 Rebind QueuePolicy Capacity while preserving EventVariant. More...
 
struct  rebind_queue_capacity< QueuePolicy< EventVariant, HighCap, OldNormalCap, LowCap >, NewCapacity >
 
struct  rebind_queue_capacity< QueuePolicy< EventVariant, OldCapacity >, NewCapacity >
 
struct  rebind_queue_policy
 Rebind QueuePolicy EventVariant type parameter while preserving Capacity or Policy structure. More...
 
struct  rebind_queue_policy< QueuePolicy< OldEventVariant >, NewEventVariant >
 
struct  rebind_queue_policy< QueuePolicy< OldEventVariant, Capacity >, NewEventVariant >
 
struct  rebind_queue_policy< QueuePolicy< OldEventVariant, HighCap, NormalCap, LowCap >, NewEventVariant >
 
class  StaticMinHeap
 Fixed-capacity statically-allocated binary min-heap. Zero dynamic heap allocations. More...
 
struct  TypeId
 
struct  variant_index
 Helper trait to compute index of type T inside std::variant<Types...> at compile time. More...
 
struct  variant_index< T, std::variant< Types... > >
 

Concepts

concept  HasSetContext
 
concept  HasInitialize
 
concept  HasRunToken
 
concept  HasStart
 
concept  HasStop
 
concept  HasJoin
 

Typedefs

template<typename Callable >
using callable_event_type_t = typename get_callable_event_type< Callable >::type
 Helper trait to deduce the concrete EventType argument from a callable (lambda, function pointer, or functor).
 
template<typename T >
using extract_event_variant_t = typename extract_event_variant< T >::type
 
template<typename EventType , std::size_t InlineSize = 32>
using FastDelegate = EventHandlerDelegate< EventType, InlineSize >
 Alias for EventHandlerDelegate.
 
template<typename T , std::size_t Capacity>
using MpscRingBuffer = ::corium::MpscRingBuffer< T, Capacity >
 
template<typename QueuePolicy , size_t NewCapacity>
using rebind_queue_capacity_t = typename rebind_queue_capacity< QueuePolicy, NewCapacity >::type
 
template<typename QueuePolicy , typename NewEventVariant >
using rebind_queue_policy_t = typename rebind_queue_policy< QueuePolicy, NewEventVariant >::type
 
using TypeIdPtr = const void *
 

Functions

template<typename T , typename... Types>
constexpr std::size_t get_variant_index_impl ()
 
PanicHandlerFngetPanicHandler () noexcept
 
template<typename T >
TypeIdPtr getTypeId () noexcept
 Get static unique address for type T without dynamic allocations or RTTI.
 
template<std::size_t N>
constexpr std::size_t next_power_of_two ()
 Compile-time helper to round up an integer to the next power of 2.
 
void panic (const char *file, int line, const char *message) noexcept
 

Variables

template<typename T , typename Variant >
constexpr bool has_variant_type_v = has_variant_type<T, Variant>::value
 Compile-time boolean indicating if type T exists in Variant.
 
template<typename QueuePolicy >
static constexpr std::size_t queue_capacity_of_v = queue_capacity_of<QueuePolicy>::value
 
template<typename T , typename Variant >
constexpr std::size_t variant_index_v = variant_index<T, Variant>::value
 Compile-time constant of type T's index in Variant.
 

Typedef Documentation

◆ callable_event_type_t

template<typename Callable >
using corium::internal::callable_event_type_t = typedef typename get_callable_event_type<Callable>::type

Helper trait to deduce the concrete EventType argument from a callable (lambda, function pointer, or functor).

◆ extract_event_variant_t

template<typename T >
using corium::internal::extract_event_variant_t = typedef typename extract_event_variant<T>::type

◆ FastDelegate

template<typename EventType , std::size_t InlineSize = 32>
using corium::internal::FastDelegate = typedef EventHandlerDelegate<EventType, InlineSize>

◆ MpscRingBuffer

template<typename T , std::size_t Capacity>
using corium::internal::MpscRingBuffer = typedef ::corium::MpscRingBuffer<T, Capacity>

◆ rebind_queue_capacity_t

template<typename QueuePolicy , size_t NewCapacity>
using corium::internal::rebind_queue_capacity_t = typedef typename rebind_queue_capacity<QueuePolicy, NewCapacity>::type

◆ rebind_queue_policy_t

template<typename QueuePolicy , typename NewEventVariant >
using corium::internal::rebind_queue_policy_t = typedef typename rebind_queue_policy<QueuePolicy, NewEventVariant>::type

◆ TypeIdPtr

using corium::internal::TypeIdPtr = typedef const void*

Function Documentation

◆ get_variant_index_impl()

template<typename T , typename... Types>
constexpr std::size_t corium::internal::get_variant_index_impl ( )
constexpr

◆ getPanicHandler()

PanicHandlerFn & corium::internal::getPanicHandler ( )
inlinenoexcept
+ Here is the caller graph for this function:

◆ getTypeId()

template<typename T >
TypeIdPtr corium::internal::getTypeId ( )
inlinenoexcept

Get static unique address for type T without dynamic allocations or RTTI.

◆ next_power_of_two()

template<std::size_t N>
constexpr std::size_t corium::internal::next_power_of_two ( )
constexpr

Compile-time helper to round up an integer to the next power of 2.

◆ panic()

void corium::internal::panic ( const char *  file,
int  line,
const char *  message 
)
inlinenoexcept
+ Here is the call graph for this function:

Variable Documentation

◆ has_variant_type_v

template<typename T , typename Variant >
constexpr bool corium::internal::has_variant_type_v = has_variant_type<T, Variant>::value
inlineconstexpr

Compile-time boolean indicating if type T exists in Variant.

◆ queue_capacity_of_v

template<typename QueuePolicy >
constexpr std::size_t corium::internal::queue_capacity_of_v = queue_capacity_of<QueuePolicy>::value
staticconstexpr

◆ variant_index_v

template<typename T , typename Variant >
constexpr std::size_t corium::internal::variant_index_v = variant_index<T, Variant>::value
inlineconstexpr

Compile-time constant of type T's index in Variant.