@@ -85,55 +85,27 @@ macro_rules! coord_operator {
85
85
} ;
86
86
}
87
87
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) ;
137
109
138
110
/// CoordinateTuple is the ISO-19111 atomic spatial/spatiotemporal
139
111
/// referencing element. So loosely speaking, a CoordinateSet is a
0 commit comments