GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
Loading...
Searching...
No Matches
c_execmem.c
Go to the documentation of this file.
1/*!
2 \file cluster/c_execmem.c
3
4 \brief Cluster library - Allocate cluster
5
6 (C) 2001-2009 by the GRASS Development Team
7
8 This program is free software under the GNU General Public License
9 (>=v2). Read the file COPYING that comes with GRASS for details.
10
11 \author Original author CERL
12 */
13
14#include <grass/cluster.h>
15
16/*!
17 \brief Allocate Cluster structure
18
19 \param C pointer to Cluster structure
20
21 \return 1 on success
22 \return 0 on error
23 */
24int I_cluster_exec_allocate(struct Cluster *C)
25{
26 G_debug(1, "I_cluster_exec_allocate(npoints=%d,nclasses=%d,nbands=%d)",
27 C->npoints, C->nclasses, C->nbands);
28
29 C->class = I_alloc_int(C->npoints);
30 C->reclass = I_alloc_int(C->nclasses);
31 C->count = I_alloc_int(C->nclasses);
32 C->countdiff = I_alloc_int(C->nclasses);
33 C->sum = I_alloc_double2(C->nbands, C->nclasses);
34 C->sumdiff = I_alloc_double2(C->nbands, C->nclasses);
35 C->sum2 = I_alloc_double2(C->nbands, C->nclasses);
36 C->mean = I_alloc_double2(C->nbands, C->nclasses);
37 if (C->class == NULL || C->reclass == NULL || C->sum == NULL ||
38 C->sumdiff == NULL || C->count == NULL || C->countdiff == NULL ||
39 C->sum2 == NULL || C->mean == NULL) {
41 return 0;
42 }
43 return 1;
44}
45
46/*!
47 \brief Free allocated Cluster structure
48
49 \param C pointer to Cluster structure
50
51 \return 0
52 */
53int I_cluster_exec_free(struct Cluster *C)
54{
55 I_free(C->class);
56 I_free(C->reclass);
57 I_free(C->count);
58 I_free(C->countdiff);
59 I_free_double2(C->sum2);
60 I_free_double2(C->sum);
61 I_free_double2(C->sumdiff);
62 I_free_double2(C->mean);
63
64 C->class = NULL;
65 C->count = NULL;
66 C->countdiff = NULL;
67 C->sum = NULL;
68 C->sumdiff = NULL;
69 C->sum2 = NULL;
70 C->mean = NULL;
71
72 return 0;
73}
int I_cluster_exec_allocate(struct Cluster *C)
Allocate Cluster structure.
Definition c_execmem.c:24
int I_cluster_exec_free(struct Cluster *C)
Free allocated Cluster structure.
Definition c_execmem.c:53
#define NULL
Definition ccmath.h:32
int G_debug(int level, const char *msg,...)
Print debugging message.
Definition debug.c:66