GRASS GIS 7 Programmer's Manual  7.9.dev(2021)-e5379bbd7
xdouble.c
Go to the documentation of this file.
1 
2 #include <stdlib.h>
3 
4 #include <grass/gis.h>
5 #include <grass/raster.h>
6 #include <grass/calc.h>
7 
8 /**********************************************************************
9 double(x)
10  converts x to double
11 **********************************************************************/
12 
13 int f_double(int argc, const int *argt, void **args)
14 {
15  DCELL *res = args[0];
16  int i;
17 
18  if (argc < 1)
19  return E_ARG_LO;
20  if (argc > 1)
21  return E_ARG_HI;
22 
23  if (argt[0] != DCELL_TYPE)
24  return E_RES_TYPE;
25 
26  switch (argt[1]) {
27  case CELL_TYPE:
28  {
29  CELL *arg1 = args[1];
30 
31  for (i = 0; i < columns; i++)
32  if (IS_NULL_C(&arg1[i]))
33  SET_NULL_D(&res[i]);
34  else
35  res[i] = (DCELL) arg1[i];
36  return 0;
37  }
38  case FCELL_TYPE:
39  {
40  FCELL *arg1 = args[1];
41 
42  for (i = 0; i < columns; i++)
43  if (IS_NULL_F(&arg1[i]))
44  SET_NULL_D(&res[i]);
45  else
46  res[i] = (DCELL) arg1[i];
47  return 0;
48  }
49  case DCELL_TYPE:
50  {
51  DCELL *arg1 = args[1];
52 
53  for (i = 0; i < columns; i++)
54  if (IS_NULL_D(&arg1[i]))
55  SET_NULL_D(&res[i]);
56  else
57  res[i] = (DCELL) arg1[i];
58  return 0;
59  }
60  default:
61  return E_INV_TYPE;
62  }
63 }
64 
65 int c_double(int argc, int *argt)
66 {
67  if (argc < 1)
68  return E_ARG_LO;
69  if (argc > 1)
70  return E_ARG_HI;
71 
72  argt[0] = DCELL_TYPE;
73  /* argt[1] = argt[1]; */
74 
75  return 0;
76 }
#define CELL_TYPE
Definition: raster.h:11
double DCELL
Definition: gis.h:603
#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
#define DCELL_TYPE
Definition: raster.h:13
Definition: calc.h:12
float FCELL
Definition: gis.h:604
int f_double(int argc, const int *argt, void **args)
Definition: xdouble.c:13
#define IS_NULL_D(x)
Definition: calc.h:30
int CELL
Definition: gis.h:602
#define FCELL_TYPE
Definition: raster.h:12
#define SET_NULL_D(x)
Definition: calc.h:34
int c_double(int argc, int *argt)
Definition: xdouble.c:65