xint.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include <stdlib.h>
  2. #include <grass/gis.h>
  3. #include <grass/raster.h>
  4. #include <grass/calc.h>
  5. /**********************************************************************
  6. int(x)
  7. converts x to int
  8. **********************************************************************/
  9. int f_int(int argc, const int *argt, void **args)
  10. {
  11. CELL *res = args[0];
  12. int i;
  13. if (argc < 1)
  14. return E_ARG_LO;
  15. if (argc > 1)
  16. return E_ARG_HI;
  17. if (argt[0] != CELL_TYPE)
  18. return E_RES_TYPE;
  19. switch (argt[1]) {
  20. case CELL_TYPE:
  21. {
  22. CELL *arg1 = args[1];
  23. for (i = 0; i < columns; i++)
  24. if (IS_NULL_C(&arg1[i]))
  25. SET_NULL_C(&res[i]);
  26. else
  27. res[i] = (CELL) arg1[i];
  28. return 0;
  29. }
  30. case FCELL_TYPE:
  31. {
  32. FCELL *arg1 = args[1];
  33. for (i = 0; i < columns; i++)
  34. if (IS_NULL_F(&arg1[i]))
  35. SET_NULL_C(&res[i]);
  36. else
  37. res[i] = (CELL) arg1[i];
  38. return 0;
  39. }
  40. case DCELL_TYPE:
  41. {
  42. DCELL *arg1 = args[1];
  43. for (i = 0; i < columns; i++)
  44. if (IS_NULL_D(&arg1[i]))
  45. SET_NULL_C(&res[i]);
  46. else
  47. res[i] = (CELL) arg1[i];
  48. return 0;
  49. }
  50. default:
  51. return E_INV_TYPE;
  52. }
  53. }
  54. int c_int(int argc, int *argt)
  55. {
  56. if (argc < 1)
  57. return E_ARG_LO;
  58. if (argc > 1)
  59. return E_ARG_HI;
  60. argt[0] = CELL_TYPE;
  61. /* argt[1] = argt[1]; */
  62. return 0;
  63. }