wowlab_engine_domain/rotation/
reference.rs1use super::{
4 buffer::DenseBuffer,
5 decision_trace::DecisionTraceTarget,
6 prepared::PreparedRotation,
7 reference_backend::{ReferenceBackend, ReferenceFrame, ReferenceRecorderCtx},
8 result::EvalResult,
9};
10
11pub(super) fn evaluate_trace(
12 prepared: &PreparedRotation,
13 buffer: &mut DenseBuffer,
14 now_secs: f64,
15 sink: DecisionTraceTarget,
16) -> EvalResult {
17 let context = ReferenceRecorderCtx {
18 rotation: prepared.rotation(),
19 schema: prepared.schema(),
20 resolver: prepared.resolver(),
21 table: prepared.table(),
22 };
23 let mut backend = ReferenceBackend::with_sink(
24 ReferenceFrame {
25 buffer,
26 now: now_secs,
27 },
28 sink,
29 context,
30 );
31
32 prepared.lower(&mut backend);
33
34 backend.finish()
35}
36
37#[cfg(test)]
38pub(super) fn evaluate_oracle(
39 prepared: &PreparedRotation,
40 buffer: &mut DenseBuffer,
41 now_secs: f64,
42) -> EvalResult {
43 let mut backend = ReferenceBackend::new(ReferenceFrame {
44 buffer,
45 now: now_secs,
46 });
47
48 prepared.lower(&mut backend);
49
50 backend.finish()
51}