3#include <grass/raster.h>
13static int f_if_i(
int argc,
const int *argt,
void **args)
16 DCELL *arg1 = args[1];
17 CELL *arg2 = (argc >= 2) ? args[2] :
NULL;
18 CELL *arg3 = (argc >= 3) ? args[3] :
NULL;
19 CELL *arg4 = (argc >= 4) ? args[4] :
NULL;
27 if (IS_NULL_D(&arg1[i]))
30 res[i] = arg1[i] != 0.0 ? 1 : 0;
34 if (IS_NULL_D(&arg1[i]))
36 else if (arg1[i] == 0.0)
39 if (IS_NULL_C(&arg2[i]))
47 if (IS_NULL_D(&arg1[i]))
49 else if (arg1[i] == 0.0) {
50 if (IS_NULL_C(&arg3[i]))
56 if (IS_NULL_C(&arg2[i]))
64 if (IS_NULL_D(&arg1[i]))
66 else if (arg1[i] == 0.0) {
67 if (IS_NULL_C(&arg3[i]))
72 else if (arg1[i] > 0.0) {
73 if (IS_NULL_C(&arg2[i]))
80 if (IS_NULL_C(&arg4[i]))
93static int f_if_f(
int argc,
const int *argt,
void **args)
96 DCELL *arg1 = args[1];
97 FCELL *arg2 = (argc >= 2) ? args[2] :
NULL;
98 FCELL *arg3 = (argc >= 3) ? args[3] :
NULL;
99 FCELL *arg4 = (argc >= 4) ? args[4] :
NULL;
109 if (IS_NULL_D(&arg1[i]))
111 else if (arg1[i] == 0.0)
114 if (IS_NULL_F(&arg2[i]))
122 if (IS_NULL_D(&arg1[i]))
124 else if (arg1[i] == 0.0) {
125 if (IS_NULL_F(&arg3[i]))
131 if (IS_NULL_F(&arg2[i]))
139 if (IS_NULL_D(&arg1[i]))
141 else if (arg1[i] == 0.0) {
142 if (IS_NULL_F(&arg3[i]))
147 else if (arg1[i] > 0.0) {
148 if (IS_NULL_F(&arg2[i]))
155 if (IS_NULL_F(&arg4[i]))
168static int f_if_d(
int argc,
const int *argt,
void **args)
170 DCELL *res = args[0];
171 DCELL *arg1 = args[1];
172 DCELL *arg2 = (argc >= 2) ? args[2] :
NULL;
173 DCELL *arg3 = (argc >= 3) ? args[3] :
NULL;
174 DCELL *arg4 = (argc >= 4) ? args[4] :
NULL;
184 if (IS_NULL_D(&arg1[i]))
186 else if (arg1[i] == 0.0)
189 if (IS_NULL_D(&arg2[i]))
197 if (IS_NULL_D(&arg1[i]))
199 else if (arg1[i] == 0.0) {
200 if (IS_NULL_D(&arg3[i]))
206 if (IS_NULL_D(&arg2[i]))
214 if (IS_NULL_D(&arg1[i]))
216 else if (arg1[i] == 0.0) {
217 if (IS_NULL_D(&arg3[i]))
222 else if (arg1[i] > 0.0) {
223 if (IS_NULL_D(&arg2[i]))
230 if (IS_NULL_D(&arg4[i]))
243int f_if(
int argc,
const int *argt,
void **args)
250 if (argt[1] != DCELL_TYPE)
252 if (argc >= 2 && argt[2] != argt[0])
254 if (argc >= 3 && argt[3] != argt[0])
256 if (argc >= 4 && argt[4] != argt[0])
261 return f_if_i(argc, argt, args);
263 return f_if_f(argc, argt, args);
265 return f_if_d(argc, argt, args);
280 if (argc >= 2 && argt[2] == FCELL_TYPE)
281 argt[0] = FCELL_TYPE;
282 if (argc >= 3 && argt[3] == FCELL_TYPE)
283 argt[0] = FCELL_TYPE;
284 if (argc >= 4 && argt[4] == FCELL_TYPE)
285 argt[0] = FCELL_TYPE;
287 if (argc >= 2 && argt[2] == DCELL_TYPE)
288 argt[0] = DCELL_TYPE;
289 if (argc >= 3 && argt[3] == DCELL_TYPE)
290 argt[0] = DCELL_TYPE;
291 if (argc >= 4 && argt[4] == DCELL_TYPE)
292 argt[0] = DCELL_TYPE;
294 argt[1] = DCELL_TYPE;
int c_if(int argc, int *argt)
int f_if(int argc, const int *argt, void **args)