tract_hir/
macros.rs

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/// Constructs a type fact.
18#[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/// Constructs a shape fact.
30#[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/// Constructs a dimension fact.
43#[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/// Constructs an value fact.
57#[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}