dfir_lang/graph/ops/
state.rs
1use syn::parse_quote_spanned;
2use super::{
3 OperatorCategory, OperatorConstraints,
4 WriteContextArgs, RANGE_1,
5};
6
7pub const STATE: OperatorConstraints = OperatorConstraints {
25 name: "state",
26 categories: &[OperatorCategory::Persistence],
27 hard_range_inn: RANGE_1,
28 soft_range_inn: RANGE_1,
29 hard_range_out: &(0..=1),
30 soft_range_out: &(0..=1),
31 num_args: 0,
32 persistence_args: &(0..=1),
33 type_args: &(0..=1),
34 is_external_input: false,
35 has_singleton_output: true,
36 flo_type: None,
37 ports_inn: None,
38 ports_out: None,
39 input_delaytype_fn: |_| None,
40 write_fn: |wc @ &WriteContextArgs { op_span, .. },
41 diagnostics| {
42
43 let wc = WriteContextArgs {
44 arguments: &parse_quote_spanned!(op_span => ::std::convert::identity, ::std::default::Default::default),
45 ..wc.clone()
46 };
47
48 (super::state_by::STATE_BY.write_fn)(&wc, diagnostics)
49 },
50};