Skip to content

Commit 5dc8ad3

Browse files
committed
Streamline the coord_operator macro calls by introducing the all_coord_operators macro
1 parent b2a1560 commit 5dc8ad3

File tree

1 file changed

+21
-49
lines changed

1 file changed

+21
-49
lines changed

src/coordinate/tuple.rs

+21-49
Original file line numberDiff line numberDiff line change
@@ -85,55 +85,27 @@ macro_rules! coord_operator {
8585
};
8686
}
8787

88-
coord_operator!(Coor4D, Coor4D, coor4d, Add, +, add);
89-
coord_operator!(Coor4D, Coor4D, coor4d, Sub, -, sub);
90-
coord_operator!(Coor4D, Coor4D, coor4d, Mul, *, mul);
91-
coord_operator!(Coor4D, Coor4D, coor4d, Div, /, div);
92-
93-
coord_operator!(Coor4D, &Coor4D, coor4d, Add, +, add);
94-
coord_operator!(Coor4D, &Coor4D, coor4d, Sub, -, sub);
95-
coord_operator!(Coor4D, &Coor4D, coor4d, Mul, *, mul);
96-
coord_operator!(Coor4D, &Coor4D, coor4d, Div, /, div);
97-
98-
coord_operator!(Coor3D, Coor3D, coor3d, Add, +, add);
99-
coord_operator!(Coor3D, Coor3D, coor3d, Sub, -, sub);
100-
coord_operator!(Coor3D, Coor3D, coor3d, Mul, *, mul);
101-
coord_operator!(Coor3D, Coor3D, coor3d, Div, /, div);
102-
103-
coord_operator!(Coor3D, &Coor3D, coor3d, Add, +, add);
104-
coord_operator!(Coor3D, &Coor3D, coor3d, Sub, -, sub);
105-
coord_operator!(Coor3D, &Coor3D, coor3d, Mul, *, mul);
106-
coord_operator!(Coor3D, &Coor3D, coor3d, Div, /, div);
107-
108-
coord_operator!(Coor2D, Coor2D, coor2d, Add, +, add);
109-
coord_operator!(Coor2D, Coor2D, coor2d, Sub, -, sub);
110-
coord_operator!(Coor2D, Coor2D, coor2d, Mul, *, mul);
111-
coord_operator!(Coor2D, Coor2D, coor2d, Div, /, div);
112-
113-
coord_operator!(Coor2D, &Coor2D, coor2d, Add, +, add);
114-
coord_operator!(Coor2D, &Coor2D, coor2d, Sub, -, sub);
115-
coord_operator!(Coor2D, &Coor2D, coor2d, Mul, *, mul);
116-
coord_operator!(Coor2D, &Coor2D, coor2d, Div, /, div);
117-
118-
coord_operator!(Coor2D, Coor32, coor2d, Add, +, add);
119-
coord_operator!(Coor2D, Coor32, coor2d, Sub, -, sub);
120-
coord_operator!(Coor2D, Coor32, coor2d, Mul, *, mul);
121-
coord_operator!(Coor2D, Coor32, coor2d, Div, /, div);
122-
123-
coord_operator!(Coor2D, &Coor32, coor2d, Add, +, add);
124-
coord_operator!(Coor2D, &Coor32, coor2d, Sub, -, sub);
125-
coord_operator!(Coor2D, &Coor32, coor2d, Mul, *, mul);
126-
coord_operator!(Coor2D, &Coor32, coor2d, Div, /, div);
127-
128-
coord_operator!(Coor32, Coor32, coor32, Add, +, add);
129-
coord_operator!(Coor32, Coor32, coor32, Sub, -, sub);
130-
coord_operator!(Coor32, Coor32, coor32, Mul, *, mul);
131-
coord_operator!(Coor32, Coor32, coor32, Div, /, div);
132-
133-
coord_operator!(Coor32, &Coor32, coor32, Add, +, add);
134-
coord_operator!(Coor32, &Coor32, coor32, Sub, -, sub);
135-
coord_operator!(Coor32, &Coor32, coor32, Mul, *, mul);
136-
coord_operator!(Coor32, &Coor32, coor32, Div, /, div);
88+
// Generate the vector space operators Add, Sub, Mul, Div for $type
89+
macro_rules! all_coord_operators {
90+
($type:ty, $othertype:ty, $typemacro:ident) => {
91+
coord_operator!($type, $othertype, $typemacro, Add, +, add);
92+
coord_operator!($type, $othertype, $typemacro, Sub, -, sub);
93+
coord_operator!($type, $othertype, $typemacro, Mul, *, mul);
94+
coord_operator!($type, $othertype, $typemacro, Div, /, div);
95+
};
96+
}
97+
98+
all_coord_operators!(Coor4D, &Coor4D, coor4d);
99+
all_coord_operators!(Coor3D, &Coor3D, coor3d);
100+
all_coord_operators!(Coor2D, &Coor2D, coor2d);
101+
all_coord_operators!(Coor2D, &Coor32, coor2d);
102+
all_coord_operators!(Coor32, &Coor32, coor32);
103+
104+
all_coord_operators!(Coor4D, Coor4D, coor4d);
105+
all_coord_operators!(Coor3D, Coor3D, coor3d);
106+
all_coord_operators!(Coor2D, Coor2D, coor2d);
107+
all_coord_operators!(Coor2D, Coor32, coor2d);
108+
all_coord_operators!(Coor32, Coor32, coor32);
137109

138110
/// CoordinateTuple is the ISO-19111 atomic spatial/spatiotemporal
139111
/// referencing element. So loosely speaking, a CoordinateSet is a

0 commit comments

Comments
 (0)