1 #include <grass/gis.h>
2 #include <grass/glocale.h>
3 #include "flag.h"
4 
flag_create(int nrows,int ncols)5 FLAG *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)40 int 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)49 int 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