c_execmem.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <grass/cluster.h>
  2. int I_cluster_exec_allocate(struct Cluster *C)
  3. {
  4. /*
  5. fprintf(stderr,"I_cluster_exec_allocate(npoints=%d,nclasses=%d,nbands=%d)\n", C->npoints, C->nclasses, C->nbands);
  6. */
  7. C->class = I_alloc_int(C->npoints);
  8. C->reclass = I_alloc_int(C->nclasses);
  9. C->count = I_alloc_int(C->nclasses);
  10. C->countdiff = I_alloc_int(C->nclasses);
  11. C->sum = I_alloc_double2(C->nbands, C->nclasses);
  12. C->sumdiff = I_alloc_double2(C->nbands, C->nclasses);
  13. C->sum2 = I_alloc_double2(C->nbands, C->nclasses);
  14. C->mean = I_alloc_double2(C->nbands, C->nclasses);
  15. if (C->class == NULL || C->reclass == NULL ||
  16. C->sum == NULL || C->sumdiff == NULL ||
  17. C->count == NULL || C->countdiff == NULL ||
  18. C->sum2 == NULL || C->mean == NULL) {
  19. I_cluster_exec_free(C);
  20. return 0;
  21. }
  22. return 1;
  23. }
  24. int I_cluster_exec_free(struct Cluster *C)
  25. {
  26. I_free(C->class);
  27. I_free(C->reclass);
  28. I_free(C->count);
  29. I_free(C->countdiff);
  30. I_free_double2(C->sum2);
  31. I_free_double2(C->sum);
  32. I_free_double2(C->sumdiff);
  33. I_free_double2(C->mean);
  34. C->class = NULL;
  35. C->count = NULL;
  36. C->countdiff = NULL;
  37. C->sum = NULL;
  38. C->sumdiff = NULL;
  39. C->sum2 = NULL;
  40. C->mean = NULL;
  41. return 0;
  42. }