flag.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <grass/gis.h>
  2. #include <grass/glocale.h>
  3. #include "flag.h"
  4. FLAG *flag_create(int nrows, int ncols)
  5. {
  6. unsigned char *temp;
  7. FLAG *new_flag;
  8. register int i;
  9. new_flag = (FLAG *) G_malloc(sizeof(FLAG));
  10. new_flag->nrows = nrows;
  11. new_flag->ncols = ncols;
  12. new_flag->leng = (ncols + 7) / 8;
  13. new_flag->array =
  14. (unsigned char **)G_malloc(nrows * sizeof(unsigned char *));
  15. if (!new_flag->array)
  16. G_fatal_error(_("Out of memory!"));
  17. temp =
  18. (unsigned char *)G_malloc(nrows * new_flag->leng *
  19. sizeof(unsigned char));
  20. if (!temp)
  21. G_fatal_error(_("Out of memory!"));
  22. for (i = 0; i < nrows; i++) {
  23. new_flag->array[i] = temp;
  24. temp += new_flag->leng;
  25. }
  26. flag_clear_all(new_flag);
  27. return (new_flag);
  28. }
  29. int flag_destroy(FLAG * flags)
  30. {
  31. G_free(flags->array[0]);
  32. G_free(flags->array);
  33. G_free(flags);
  34. return 0;
  35. }
  36. int flag_clear_all(FLAG * flags)
  37. {
  38. register int r, c;
  39. for (r = 0; r < flags->nrows; r++) {
  40. for (c = 0; c < flags->leng; c++) {
  41. flags->array[r][c] = 0;
  42. }
  43. }
  44. return 0;
  45. }