1#[macro_export]
2macro_rules! to_typed {
3 () => {
4 fn to_typed(
5 &self,
6 _source: &$crate::infer::InferenceModel,
7 node: &$crate::infer::InferenceNode,
8 target: &mut TypedModel,
9 mapping: &std::collections::HashMap<OutletId, OutletId>,
10 ) -> TractResult<TVec<OutletId>> {
11 let inputs = node.inputs.iter().map(|m| mapping[m]).collect::<TVec<_>>();
12 target.wire_node(&*node.name, self.clone(), &*inputs)
13 }
14 };
15}
16
17#[macro_export]
19macro_rules! typefact {
20 (_) => {
21 $crate::infer::TypeFactoid::default()
22 };
23 ($arg:expr) => {{
24 let fact: $crate::infer::TypeFactoid = $crate::infer::GenericFactoid::Only($arg);
25 fact
26 }};
27}
28
29#[macro_export]
31macro_rules! shapefactoid {
32 () =>
33 ($crate::infer::ShapeFactoid::closed(tvec![]));
34 (..) =>
35 ($crate::infer::ShapeFactoid::open(tvec![]));
36 ($($arg:tt),+; ..) =>
37 ($crate::infer::ShapeFactoid::open(tvec![$($crate::dimfact!($arg)),+]));
38 ($($arg:tt),+) =>
39 ($crate::infer::ShapeFactoid::closed(tvec![$($crate::dimfact!($arg)),+]));
40}
41
42#[macro_export]
44macro_rules! dimfact {
45 (_) => {
46 $crate::infer::DimFact::default()
47 };
48 (S) => {
49 $crate::infer::GenericFactoid::Only(tract_pulse::internal::stream_dim())
50 };
51 ($arg:expr) => {
52 $crate::infer::GenericFactoid::Only($arg.to_dim())
53 };
54}
55
56#[macro_export]
58macro_rules! valuefact {
59 (_) => {
60 $crate::infer::ValueFact::default()
61 };
62 ($arg:expr) => {{
63 let fact: $crate::infer::ValueFact = $crate::infer::GenericFactoid::Only($arg);
64 fact
65 }};
66}