GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
xor2.c
Go to the documentation of this file.
1#include <grass/gis.h>
2#include <grass/raster.h>
3#include <grass/calc.h>
4
5/****************************************************************
6or2(a,b,c,...) = a || b || c || ...
7
8Differs from or() in that the boolean axioms:
9
10 true || x == true
11 x || true == true
12
13hold even when x is null.
14****************************************************************/
15
16int f_or2(int argc, const int *argt, void **args)
17{
18 CELL *res = args[0];
19 int i, j;
20
21 if (argc < 1)
22 return E_ARG_LO;
23
24 if (argt[0] != CELL_TYPE)
25 return E_RES_TYPE;
26
27 for (i = 1; i <= argc; i++)
28 if (argt[i] != argt[0])
29 return E_ARG_TYPE;
30
31 for (i = 0; i < columns; i++) {
32 res[i] = 0;
33 for (j = 1; j <= argc; j++) {
34 CELL *arg = args[j];
35 if (!IS_NULL_C(&arg[i]) && arg[i]) {
36 res[i] = 1;
37 break;
38 }
39 if (IS_NULL_C(&arg[i]))
40 SET_NULL_C(&res[i]);
41 }
42 }
43
44 return 0;
45}
int columns
Definition calc.c:11
int f_or2(int argc, const int *argt, void **args)
Definition xor2.c:16