c_arrow/
c_arrow.rs

1#[macro_export]
2macro_rules! pt {
3    [ $func:ident($($args:expr),*) $($other:tt)+] => {{
4        let mut temp = $func($($args),*);
5        pt![temp $($other)+]
6    }};
7    [ $a:ident . $b:ident $(($($args:expr),*))?. $($other:tt)+] => {{
8        let mut temp = &mut $a.$b$(($($args),*))?;
9        ref_pt![temp . $($other)+]
10    }};
11    [ $a:ident . $b:ident $(($($args:expr),*))?-> $($other:tt)+] => {{
12        let mut temp = &mut $a.$b$(($($args),*))?;
13        ref_pt![temp -> $($other)+]
14    }};
15    [ $a:ident -> $b:ident $(($($args:expr),*))?. $($other:tt)+] => {{
16        let mut temp = &mut (*$a).$b$(($($args),*))?;
17        ref_pt![temp . $($other)+]
18    }};
19    [ $a:ident -> $b:ident $(($($args:expr),*))?-> $($other:tt)+] => {{
20        let mut temp = &mut (*$a).$b$(($($args),*))?;
21        ref_pt![temp -> $($other)+]
22    }};
23    [ $a:ident . $b:ident $(($($args:expr),*))? ] => {{
24        &mut $a.$b$(($($args),*))?
25    }};
26    [ $a:ident -> $b:ident $(($($args:expr),*))? ] => {{
27        &mut (*$a).$b$(($($args),*))?
28    }};
29
30    [ $a:ident . $b:ident $(($($args:expr),*))? = $c:ident $($other:tt)+] => {{
31        $a.$b$(($($args),*))? = *pt![$c $($other)+];
32    }};
33    [ $a:ident -> $b:ident $(($($args:expr),*))? = $c:ident $($other:tt)+] => {{
34        (*$a).$b$(($($args),*))? = *pt![$c $($other)+];
35    }};
36    [ $a:ident . $b:ident $(($($args:expr),*))? = $c:expr] => {{
37        $a.$b$(($($args),*))? = $c;
38    }};
39    [ $a:ident -> $b:ident $(($($args:expr),*))? = $c:expr] => {{
40        (*$a).$b$(($($args),*))? = $c;
41    }};
42}
43
44#[macro_export]
45macro_rules! ref_pt {
46    [ $a:ident . $b:ident $(($($args:expr),*))?. $($other:tt)+] => {{
47        let mut temp = &mut (*$a).$b$(($($args),*))?;
48        ref_pt![temp . $($other)+]
49    }};
50    [ $a:ident . $b:ident $(($($args:expr),*))?-> $($other:tt)+] => {{
51        let mut temp = &mut (*$a).$b$(($($args),*))?;
52        ref_pt![temp -> $($other)+]
53    }};
54    [ $a:ident -> $b:ident $(($($args:expr),*))?. $($other:tt)+] => {{
55        let mut temp = &mut (**$a).$b$(($($args),*))?;
56        ref_pt![temp . $($other)+]
57    }};
58    [ $a:ident -> $b:ident $(($($args:expr),*))?-> $($other:tt)+] => {{
59        let mut temp = &mut (**$a).$b$(($($args),*))?;
60        ref_pt![temp -> $($other)+]
61    }};
62    [ $a:ident . $b:ident $(($($args:expr),*))? ] => {{
63        &mut (*$a).$b$(($($args),*))?
64    }};
65    [ $a:ident -> $b:ident $(($($args:expr),*))? ] => {{
66        &mut (**$a).$b$(($($args),*))?
67    }};
68
69    [ $a:ident . $b:ident $(($($args:expr),*))? = $c:ident $($other:tt)+] => {{
70        (*$a).$b$(($($args),*))? = *pt![$c $($other)+];
71    }};
72    [ $a:ident -> $b:ident $(($($args:expr),*))? = $c:ident $($other:tt)+] => {{
73        (**$a).$b$(($($args),*))? = *pt![$c $($other)+];
74    }};
75    [ $a:ident . $b:ident $(($($args:expr),*))? = $c:expr] => {{
76        (*$a).$b$(($($args),*))? = $c;
77    }};
78    [ $a:ident -> $b:ident $(($($args:expr),*))? = $c:expr] => {{
79        (**$a).$b$(($($args),*))? = $c;
80    }};
81}