c_execmem.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*!
  2. \file cluster/c_execmem.c
  3. \brief Cluster library - Allocate cluster
  4. (C) 2001-2009 by the GRASS Development Team
  5. This program is free software under the GNU General Public License
  6. (>=v2). Read the file COPYING that comes with GRASS for details.
  7. \author Original author CERL
  8. */
  9. #include <grass/cluster.h>
  10. /*!
  11. \brief Allocate Cluster structure
  12. \param C pointer to Cluster structure
  13. \return 1 on success
  14. \return 0 on error
  15. */
  16. int I_cluster_exec_allocate(struct Cluster *C)
  17. {
  18. G_debug(1, "I_cluster_exec_allocate(npoints=%d,nclasses=%d,nbands=%d)",
  19. C->npoints, C->nclasses, C->nbands);
  20. C->class = I_alloc_int(C->npoints);
  21. C->reclass = I_alloc_int(C->nclasses);
  22. C->count = I_alloc_int(C->nclasses);
  23. C->countdiff = I_alloc_int(C->nclasses);
  24. C->sum = I_alloc_double2(C->nbands, C->nclasses);
  25. C->sumdiff = I_alloc_double2(C->nbands, C->nclasses);
  26. C->sum2 = I_alloc_double2(C->nbands, C->nclasses);
  27. C->mean = I_alloc_double2(C->nbands, C->nclasses);
  28. if (C->class == NULL || C->reclass == NULL ||
  29. C->sum == NULL || C->sumdiff == NULL ||
  30. C->count == NULL || C->countdiff == NULL ||
  31. C->sum2 == NULL || C->mean == NULL) {
  32. I_cluster_exec_free(C);
  33. return 0;
  34. }
  35. return 1;
  36. }
  37. /*!
  38. \brief Free allocated Cluster structure
  39. \param C pointer to Cluster structure
  40. \return 0
  41. */
  42. int I_cluster_exec_free(struct Cluster *C)
  43. {
  44. I_free(C->class);
  45. I_free(C->reclass);
  46. I_free(C->count);
  47. I_free(C->countdiff);
  48. I_free_double2(C->sum2);
  49. I_free_double2(C->sum);
  50. I_free_double2(C->sumdiff);
  51. I_free_double2(C->mean);
  52. C->class = NULL;
  53. C->count = NULL;
  54. C->countdiff = NULL;
  55. C->sum = NULL;
  56. C->sumdiff = NULL;
  57. C->sum2 = NULL;
  58. C->mean = NULL;
  59. return 0;
  60. }