pub struct SimulationKernelConfig {
pub column_map: Vec<(String, usize)>,
pub table_map: Vec<(String, usize)>,
pub state_field_offsets: Vec<(String, usize)>,
pub state_schema_id: u32,
pub column_count: usize,
pub table_count: usize,
}Expand description
Configuration for compiling a simulation kernel.
This provides the field offset mappings needed to generate direct memory access code for the kernel ABI.
Supports two modes:
- Single-series:
column_mapmaps field names (close, volume) to column indices - Multi-series:
table_mapmaps series names (spy, vix) to series indices
Fields§
§column_map: Vec<(String, usize)>Column index mappings: (field_name, column_index) e.g., [(“close”, 3), (“volume”, 4)] Used in single-series mode for accessing columns within one series
table_map: Vec<(String, usize)>Series index mappings: (series_name, series_index) e.g., [(“spy”, 0), (“vix”, 1), (“temperature”, 2)] Used in multi-series mode for accessing multiple correlated series
CRITICAL for JIT: Resolved at compile time, NOT runtime.
context.spy → series_ptrs[0][cursor_idx]
state_field_offsets: Vec<(String, usize)>State field offsets: (field_name, byte_offset) e.g., [(“cash”, 0), (“position”, 8), (“entry_price”, 16)]
state_schema_id: u32Schema ID for the state TypedObject
column_count: usizeTotal number of columns in the data (single-series mode)
table_count: usizeTotal number of series (multi-series mode)
Implementations§
Source§impl SimulationKernelConfig
impl SimulationKernelConfig
Sourcepub fn new(state_schema_id: u32, column_count: usize) -> Self
pub fn new(state_schema_id: u32, column_count: usize) -> Self
Create a new kernel config for single-series mode.
Sourcepub fn new_multi_table(state_schema_id: u32, table_count: usize) -> Self
pub fn new_multi_table(state_schema_id: u32, table_count: usize) -> Self
Create a new kernel config for multi-series (correlated) mode.
Use this when simulating across multiple aligned time series (e.g., SPY vs VIX, temperature vs pressure).
Sourcepub fn map_column(self, field_name: &str, column_index: usize) -> Self
pub fn map_column(self, field_name: &str, column_index: usize) -> Self
Map a data field name to a column index (single-series mode).
Sourcepub fn map_series(self, series_name: &str, series_index: usize) -> Self
pub fn map_series(self, series_name: &str, series_index: usize) -> Self
Map a series name to a series index (multi-series mode).
CRITICAL: This mapping is resolved at compile time.
context.spy in Shape → series_ptrs[0][cursor_idx] in generated code.
Sourcepub fn map_state_field(self, field_name: &str, offset: usize) -> Self
pub fn map_state_field(self, field_name: &str, offset: usize) -> Self
Map a state field name to a byte offset.
Sourcepub fn get_column_index(&self, field_name: &str) -> Option<usize>
pub fn get_column_index(&self, field_name: &str) -> Option<usize>
Get column index for a field name (single-series mode).
Sourcepub fn get_series_index(&self, series_name: &str) -> Option<usize>
pub fn get_series_index(&self, series_name: &str) -> Option<usize>
Get series index for a series name (multi-series mode).
This is used by the JIT compiler at compile time.
Sourcepub fn get_state_offset(&self, field_name: &str) -> Option<usize>
pub fn get_state_offset(&self, field_name: &str) -> Option<usize>
Get state field offset for a field name.
Sourcepub fn is_multi_table(&self) -> bool
pub fn is_multi_table(&self) -> bool
Check if this config is for multi-series mode.
Trait Implementations§
Source§impl Clone for SimulationKernelConfig
impl Clone for SimulationKernelConfig
Source§fn clone(&self) -> SimulationKernelConfig
fn clone(&self) -> SimulationKernelConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SimulationKernelConfig
impl RefUnwindSafe for SimulationKernelConfig
impl Send for SimulationKernelConfig
impl Sync for SimulationKernelConfig
impl Unpin for SimulationKernelConfig
impl UnsafeUnpin for SimulationKernelConfig
impl UnwindSafe for SimulationKernelConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more