File: flag.c

package info (click to toggle)
grass 8.4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 277,040 kB
  • sloc: ansic: 460,798; python: 227,732; cpp: 42,026; sh: 11,262; makefile: 7,007; xml: 3,637; sql: 968; lex: 520; javascript: 484; yacc: 450; asm: 387; perl: 157; sed: 25; objc: 6; ruby: 4
file content (59 lines) | stat: -rw-r--r-- 1,170 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <grass/gis.h>
#include <grass/glocale.h>
#include "flag.h"

FLAG *flag_create(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 *));

    if (!new_flag->array)
        G_fatal_error(_("Out of memory!"));

    temp = (unsigned char *)G_malloc(nrows * new_flag->leng *
                                     sizeof(unsigned char));

    if (!temp)
        G_fatal_error(_("Out of memory!"));

    for (i = 0; i < nrows; i++) {
        new_flag->array[i] = temp;
        temp += new_flag->leng;
    }

    flag_clear_all(new_flag);

    return (new_flag);
}

int flag_destroy(FLAG *flags)
{
    G_free(flags->array[0]);
    G_free(flags->array);
    G_free(flags);

    return 0;
}

int flag_clear_all(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;
        }
    }

    return 0;
}