123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include <stdlib.h>
- #include <grass/gis.h>
- #include "flag.h"
- void FlagClearAll(FLAG * flags)
- {
- register int r, c;
- for (r = 0; r < flags->nrows; r++) {
- for (c = 0; c < flags->leng; c++) {
- flags->array[r][c] = 0;
- }
- }
- }
- FLAG *FlagCreate(int nrows, int ncols)
- {
- unsigned char *temp;
- FLAG *new_flag;
- register int i;
- new_flag = (FLAG *) G_malloc(sizeof(FLAG));
- new_flag->nrows = nrows;
- new_flag->ncols = ncols;
- new_flag->leng = (ncols + 7) / 8;
- new_flag->array =
- (unsigned char **)G_malloc(nrows * sizeof(unsigned char *));
- temp =
- (unsigned char *)G_calloc(nrows * new_flag->leng,
- sizeof(unsigned char));
- for (i = 0; i < nrows; i++) {
- new_flag->array[i] = temp;
- temp += new_flag->leng;
- }
- return (new_flag);
- }
- void FlagDestroy(FLAG * flags)
- {
- G_free(flags->array[0]);
- G_free(flags->array);
- G_free(flags);
- }
- int FlagGet(FLAG * flags, int row, int col)
- {
- return (flags->array[row][col >> 3] & (1 << (col & 7)));
- }
- void FlagSet(FLAG * flags, int row, int col)
- {
- flags->array[row][col >> 3] |= (1 << (col & 7));
- }
- void FlagUnset(FLAG * flags, int row, int col)
- {
- flags->array[row][col >> 3] &= ~(1 << (col & 7));
- }
|