GRASS GIS 8 Programmer's Manual  8.2.2dev(2023)-3d2c704037
xisnull.c
Go to the documentation of this file.
1 
2 #include <grass/gis.h>
3 #include <grass/raster.h>
4 #include <grass/calc.h>
5 
6 /**********************************************************************
7 isnull(x)
8  return 1 if x is null, 0 otherwise
9 **********************************************************************/
10 
11 int f_isnull(int argc, const int *argt, void **args)
12 {
13  int *res = args[0];
14  int i;
15 
16  if (argc < 1)
17  return E_ARG_LO;
18  if (argc > 1)
19  return E_ARG_HI;
20 
21  if (argt[0] != CELL_TYPE)
22  return E_RES_TYPE;
23 
24  switch (argt[1]) {
25  case CELL_TYPE:
26  {
27  CELL *arg1 = args[1];
28 
29  for (i = 0; i < columns; i++)
30  res[i] = IS_NULL_C(&arg1[i]) ? 1 : 0;
31  return 0;
32  }
33  case FCELL_TYPE:
34  {
35  FCELL *arg1 = args[1];
36 
37  for (i = 0; i < columns; i++)
38  res[i] = IS_NULL_F(&arg1[i]) ? 1 : 0;
39  return 0;
40  }
41  case DCELL_TYPE:
42  {
43  DCELL *arg1 = args[1];
44 
45  for (i = 0; i < columns; i++)
46  res[i] = IS_NULL_D(&arg1[i]) ? 1 : 0;
47  return 0;
48  }
49  default:
50  return E_INV_TYPE;
51  }
52 }
53 
54 int c_isnull(int argc, int *argt)
55 {
56  if (argc < 1)
57  return E_ARG_LO;
58  if (argc > 1)
59  return E_ARG_HI;
60 
61  argt[0] = CELL_TYPE;
62 
63  return 0;
64 }
#define CELL_TYPE
Definition: raster.h:11
double DCELL
Definition: gis.h:614
#define IS_NULL_F(x)
Definition: calc.h:29
#define IS_NULL_C(x)
Definition: calc.h:28
Definition: calc.h:13
int columns
Definition: calc.c:12
int c_isnull(int argc, int *argt)
Definition: xisnull.c:54
#define DCELL_TYPE
Definition: raster.h:13
Definition: calc.h:12
float FCELL
Definition: gis.h:615
#define IS_NULL_D(x)
Definition: calc.h:30
int CELL
Definition: gis.h:613
#define FCELL_TYPE
Definition: raster.h:12
int f_isnull(int argc, const int *argt, void **args)
Definition: xisnull.c:11