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