GRASS GIS 8 Programmer's Manual  8.4.0dev(2024)-535c39c9fc
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  */
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);
33  C->sum = 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  */
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);
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, const char *,...) __attribute__((format(printf
int I_free_double2(double **)
Definition: imagery/alloc.c:93
int * I_alloc_int(int)
Definition: imagery/alloc.c:49
int I_free(void *)
Definition: imagery/alloc.c:21
double ** I_alloc_double2(int, int)
Definition: imagery/alloc.c:29
Definition: cluster.h:7
int * count
Definition: cluster.h:18
double ** sum2
Definition: cluster.h:22
int npoints
Definition: cluster.h:9
int * countdiff
Definition: cluster.h:19
int * class
Definition: cluster.h:16
int nclasses
Definition: cluster.h:26
double ** mean
Definition: cluster.h:23
int * reclass
Definition: cluster.h:17
double ** sum
Definition: cluster.h:20
int nbands
Definition: cluster.h:8
double ** sumdiff
Definition: cluster.h:21