dfir_lang/graph/ops/
initialize.rs

1use syn::parse_quote_spanned;
2
3use super::{
4    OperatorCategory, OperatorConstraints, WriteContextArgs, RANGE_0, RANGE_1,
5};
6
7/// > 0 input streams, 1 output stream
8///
9/// > Arguments: None.
10///
11/// Emits a single unit `()` at the start of the first tick.
12///
13/// ```dfir
14/// initialize()
15///     -> assert_eq([()]);
16/// ```
17pub const INITIALIZE: OperatorConstraints = OperatorConstraints {
18    name: "initialize",
19    categories: &[OperatorCategory::Source],
20    hard_range_inn: RANGE_0,
21    soft_range_inn: RANGE_0,
22    hard_range_out: RANGE_1,
23    soft_range_out: RANGE_1,
24    num_args: 0,
25    persistence_args: RANGE_0,
26    type_args: RANGE_0,
27    is_external_input: false,
28    has_singleton_output: false,
29    flo_type: None,
30    ports_inn: None,
31    ports_out: None,
32    input_delaytype_fn: |_| None,
33    write_fn: |wc @ &WriteContextArgs { op_span, .. }, diagnostics| {
34        let wc = WriteContextArgs {
35            arguments: &parse_quote_spanned!(op_span=> [()]),
36            ..wc.clone()
37        };
38        (super::source_iter::SOURCE_ITER.write_fn)(&wc, diagnostics)
39    },
40};