From dbe37f9c769e5918ab8d2177b863adea7417aac4 Mon Sep 17 00:00:00 2001 From: Andreas Gattringer <andreas.gattringer@univie.ac.at> Date: Tue, 30 Jan 2024 17:04:03 +0100 Subject: [PATCH] refactor: moved memory handling to library libbdc/bdc_memory --- CMakeLists.txt | 5 +- libbdc/CMakeLists.txt | 41 ++++++++++++ libbdc/bdc_memory/CMakeLists.txt | 13 ++++ {src/memory => libbdc/bdc_memory}/arrays.c | 35 ++++++---- .../bdc_memory/bdc_memory.c | 20 +++--- .../bdc_memory/bdc_memory.h | 65 +++++++++++++++++-- .../memory => libbdc/bdc_memory}/raw_arrays.c | 10 +-- src/CMakeLists.txt | 1 - src/cats/CMakeLists.txt | 8 +-- src/cats/actions/setup_actions.c | 3 +- src/cats/configuration/configuration.c | 2 +- .../load_configuration_environments.c | 11 ++-- .../configuration/load_configuration_helper.c | 3 +- .../load_configuration_species_params.c | 2 +- src/cats/data/cats_datatypes.h | 5 -- src/cats/data/cats_global.c | 2 +- src/cats/data/cats_grid.h | 3 +- src/cats/data/simulation_geometry.c | 2 +- src/cats/data/simulation_geometry.h | 6 +- src/cats/debug/debug.c | 4 +- src/cats/debug/debug_vital_rates.c | 2 +- src/cats/dispersal/dispersal.c | 2 +- src/cats/dispersal/dispersal_helper.c | 3 +- src/cats/environment/environment.c | 2 +- src/cats/environment/environment_rasters.c | 2 +- src/cats/environment/environment_rasters.h | 3 +- src/cats/environment/environment_registry.c | 9 ++- src/cats/environment/environment_registry.h | 5 +- src/cats/environment/environment_set.c | 2 +- src/cats/environment/load_environment.c | 8 +-- src/cats/grids/cats_grid.c | 8 +-- src/cats/grids/cats_grid.h | 6 +- src/cats/grids/gdal_helper.c | 4 +- src/cats/grids/gdal_helper.h | 4 +- src/cats/grids/gdal_load.c | 4 +- src/cats/grids/gdal_load.h | 2 +- src/cats/grids/gdal_save.c | 10 +-- src/cats/grids/grid_converters.c | 4 +- src/cats/grids/grid_converters.h | 2 +- src/cats/grids/grid_setup.c | 6 +- src/cats/grids/grid_wrapper.c | 10 +-- src/cats/grids/grid_wrapper.h | 12 ++-- src/cats/inline.h | 2 +- src/cats/inline_population.h | 3 +- src/cats/lambda/eigen_power.c | 3 +- src/cats/lambda/lambda-grid.c | 4 +- src/cats/lambda/leslie_matrix.c | 2 +- src/cats/lambda/matrix_helpers.c | 3 +- src/cats/misc/cats_maths.c | 3 +- src/cats/misc/debug.c | 2 +- src/cats/misc/output.c | 6 +- src/cats/misc/output.h | 6 +- src/cats/modules/module_header.h | 2 +- src/cats/mpi/mpi_cats.c | 3 +- src/cats/mpi/mpi_debug.c | 4 +- src/cats/mpi/mpi_grid_helpers.c | 3 +- src/cats/mpi/mpi_save.c | 4 +- src/cats/mpi/mpi_scalefactor.c | 4 +- src/cats/mpi/mpi_seeds.c | 4 +- src/cats/mpi/mpi_stats.c | 6 +- src/cats/overlays/overlay_exclusion.c | 4 +- src/cats/overlays/overlay_exclusion.h | 4 +- src/cats/overlays/overlay_habitat_type_cc.c | 5 +- src/cats/overlays/overlay_habitat_type_cc.h | 2 +- src/cats/overlays/overlay_resources.c | 5 +- src/cats/overlays/overlays.h | 2 +- src/cats/performance/timer.c | 3 +- src/cats/plants/plant_structures.c | 2 +- src/cats/plants/population_stats.c | 4 +- src/cats/populations/plant_juveniles.c | 3 +- src/cats/stats/global_stats.c | 3 +- src/cats/stats/grid_stats.c | 12 +--- src/cats/stats/indices.c | 8 +-- src/cats/stats/statistics.c | 2 +- src/cats/stats/write_stats.c | 8 +-- src/cats/temporal/timeformat.c | 2 +- src/cats/threading/block_tasks.c | 8 +-- src/cats/threading/dispersal_tasks.c | 14 ++-- src/cats/threading/threading-helpers.c | 4 +- src/cats/threading/threading.c | 4 +- src/cats_csv/CMakeLists.txt | 2 +- src/cats_csv/cats_csv.c | 2 +- src/cats_ini/CMakeLists.txt | 2 +- src/cats_strings/cats_strings.c | 2 +- src/cats_strings/string_helpers.c | 2 +- src/cats_windows.h | 2 +- src/logging/logging.c | 2 +- src/memory/CMakeLists.txt | 15 ----- src/memory/arrays.h | 64 ------------------ src/memory/cats_memory.h | 38 ----------- src/modules/butterflies/butterflies_main.c | 6 +- .../cats_test_module/register_module.c | 2 +- src/tests/CMakeLists.txt | 4 +- src/tests/csv_test.c | 5 +- src/tests/vital_rate_test.c | 2 +- 95 files changed, 317 insertions(+), 347 deletions(-) create mode 100644 libbdc/CMakeLists.txt create mode 100644 libbdc/bdc_memory/CMakeLists.txt rename {src/memory => libbdc/bdc_memory}/arrays.c (72%) rename src/memory/cats_memory.c => libbdc/bdc_memory/bdc_memory.c (92%) rename src/memory/raw_arrays.h => libbdc/bdc_memory/bdc_memory.h (54%) rename {src/memory => libbdc/bdc_memory}/raw_arrays.c (93%) delete mode 100644 src/memory/CMakeLists.txt delete mode 100644 src/memory/arrays.h delete mode 100644 src/memory/cats_memory.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 05993bf..e8353b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ +cmake_minimum_required(VERSION 3.19) project(CATS C) enable_language(C) -cmake_minimum_required(VERSION 3.19) set(C_STANDARD 17) include(CTest) MESSAGE("Using compiler: ${CMAKE_C_COMPILER_ID}") @@ -67,7 +67,8 @@ add_definitions("-DCATS_GIT_VERSION=${CATS_GIT_VERSION}") MESSAGE("GIT commit hash: ${CATS_GIT_VERSION}") add_definitions("-DCOMPILER_VERSION='${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}'") - +include_directories("libbdc") +add_subdirectory(libbdc/) include_directories("src") include_directories("src/cats") add_subdirectory(src/) diff --git a/libbdc/CMakeLists.txt b/libbdc/CMakeLists.txt new file mode 100644 index 0000000..4ae0edc --- /dev/null +++ b/libbdc/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.19) +project(LIBBDC C) +enable_language(C) +set(C_STANDARD 17) + + +if ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + add_link_options(-Bsymbolic -fno-semantic-interposition) + add_compile_options(-std=gnu11 + -Wall + -Werror + -O3 + -g + -D_GNU_SOURCE + -DHAVE_INLINE + -DGSL_C99_INLINE + -Wno-unused-function + -DGSL_DISABLE_DEPRECATED) +endif () + +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + add_compile_options(-Wno-stringop-truncation -Wno-stringop-overflow) +elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") + # nothing yet +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Intel") + # nothing yet +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") + add_compile_options("/std:c17") +else () + MESSAGE("Unknown compiler: ${CMAKE_C_COMPILER_ID}") +endif () + +add_subdirectory(bdc_memory) + +add_library(bdc STATIC "") + +set_target_properties(bdc PROPERTIES LINKER_LANGUAGE C) +set_property(TARGET bdc PROPERTY POSITION_INDEPENDENT_CODE ON) +target_link_libraries(bdc + bdc_memory) + diff --git a/libbdc/bdc_memory/CMakeLists.txt b/libbdc/bdc_memory/CMakeLists.txt new file mode 100644 index 0000000..38e9e22 --- /dev/null +++ b/libbdc/bdc_memory/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(bdc_memory STATIC "") + +target_sources(bdc_memory + PRIVATE + bdc_memory.c + raw_arrays.c + arrays.c + PUBLIC + bdc_memory.h + ) + + +set_property(TARGET bdc_memory PROPERTY POSITION_INDEPENDENT_CODE ON) \ No newline at end of file diff --git a/src/memory/arrays.c b/libbdc/bdc_memory/arrays.c similarity index 72% rename from src/memory/arrays.c rename to libbdc/bdc_memory/arrays.c index c08bc0e..a26c51f 100644 --- a/src/memory/arrays.c +++ b/libbdc/bdc_memory/arrays.c @@ -19,36 +19,40 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include "raw_arrays.h" -#include <malloc.h> -#include "cats_memory.h" #include <assert.h> -#include "arrays.h" +#include <malloc.h> +#include <stdlib.h> +#include <stdint.h> +#include "bdc_memory.h" -struct cats_2d_array_float *new_2d_array_float(struct cats_dimension dimension) + +__attribute__((unused)) struct cats_2d_array_float *new_2d_array_float(struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_float *result = malloc_or_die(sizeof(struct cats_2d_array_float)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(float)); - result->dimension = dimension; + result->dimension = *dimension; return result; } -struct cats_2d_array_char *new_2d_array_char(struct cats_dimension dimension) +struct cats_2d_array_char *new_2d_array_char(const struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_char *result = malloc_or_die(sizeof(struct cats_2d_array_char)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(char)); - result->dimension = dimension; + result->dimension = *dimension; return result; } -struct cats_2d_array_double *new_2d_array_double(struct cats_dimension dimension) +struct cats_2d_array_double *new_2d_array_double(const struct array_dimension *dimension) { + assert(dimension != NULL); struct cats_2d_array_double *result = malloc_or_die(sizeof(struct cats_2d_array_double)); result->data = new_raw_2d_array_from_dimension(dimension, sizeof(double)); - result->dimension = dimension; + result->dimension = *dimension; return result; } @@ -92,7 +96,14 @@ void cleanup_2d_array_double(struct cats_2d_array_double **grid) } -void *new_raw_2d_array_from_dimension(struct cats_dimension dimension, size_t member_size) +void *new_raw_2d_array_from_dimension(const struct array_dimension *dimension, size_t member_size) { - return new_raw_2d_array(dimension.rows, dimension.cols, member_size); + if (dimension->cols <= 0 || dimension->rows <= 0) { + fprintf(stderr, + "%s: invalid dimensions of %d rows %d cols", + __func__, dimension->rows, dimension->cols); + exit(EXIT_FAILURE); + } + + return new_raw_2d_array(dimension->rows, dimension->cols, member_size); } \ No newline at end of file diff --git a/src/memory/cats_memory.c b/libbdc/bdc_memory/bdc_memory.c similarity index 92% rename from src/memory/cats_memory.c rename to libbdc/bdc_memory/bdc_memory.c index f9ec1b0..f8ab25b 100644 --- a/src/memory/cats_memory.c +++ b/libbdc/bdc_memory/bdc_memory.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later // -// cats_memory.c +// bdc_memory.c // // Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. // @@ -22,7 +22,7 @@ #include <stddef.h> #include <stdlib.h> #include <stdio.h> -#include "cats_memory.h" +#include "bdc_memory.h" // we do not use logging functions here -- // if there is a memory allocation error, keep everything simple and terminate. @@ -50,17 +50,21 @@ void *malloc_or_die_trace(size_t size, const char *func) void *realloc_or_die(void *ptr, size_t size) { - ptr = realloc(ptr, size); + void *new = realloc(ptr, size); // NULL if realloc failure, so we don't overwrite the old address + + if (new == NULL) { + fprintf(stderr, "%s: error re-allocating %zu bytes. Quitting\n", __func__, size); + printf("%s: error re-allocating %zu bytes. Quitting\n", __func__, size); // allowed printf + abort(); + // exit(EXIT_FAILURE); + } + + ptr = new; if (size > 1000 * 1000 * 1000) { fprintf(stderr, "Allocation of %zu bytes\n", size); fflush(stderr); } - if (ptr == NULL) { - fprintf(stderr, "%s: error re-allocating %zu bytes. Quitting\n", __func__, size); - printf("%s: error re-allocating %zu bytes. Quitting\n", __func__, size); // allowed printf - exit(EXIT_FAILURE); - } return ptr; } diff --git a/src/memory/raw_arrays.h b/libbdc/bdc_memory/bdc_memory.h similarity index 54% rename from src/memory/raw_arrays.h rename to libbdc/bdc_memory/bdc_memory.h index 2a4ca21..015638d 100644 --- a/src/memory/raw_arrays.h +++ b/libbdc/bdc_memory/bdc_memory.h @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later // -// raw_arrays.h +// bdc_memory.h // // Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. // @@ -19,11 +19,66 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#ifndef CATS_RAW_ARRAYS_H -#define CATS_RAW_ARRAYS_H +#ifndef bdc_memory_H +#define bdc_memory_H +#include <stddef.h> // for size_t +#include <stdbool.h> #include <stdint.h> -#include <stddef.h> + +void *malloc_or_die_trace(size_t size, const char *func); + +void *realloc_or_die(void *ptr, size_t size); + +void *malloc_or_die(size_t size); + +void *calloc_or_die(size_t count, size_t size); + + +struct array_dimension { + int32_t rows; + int32_t cols; +}; + +struct cats_2d_array_float { + float **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_char { + char **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_double { + double **data; + struct array_dimension dimension; +}; + +struct cats_2d_array_char *new_2d_array_char(const struct array_dimension *dimension); + +struct cats_2d_array_double *new_2d_array_double(const struct array_dimension *dimension); + +__attribute__((unused)) struct cats_2d_array_float *new_2d_array_float(struct array_dimension *dimension); + +void cleanup_2d_array_char(struct cats_2d_array_char **grid); + +void cleanup_2d_array_float(struct cats_2d_array_float **grid); + +void cleanup_2d_array_double(struct cats_2d_array_double **grid); + +#define free_cats_grid(PTR_TO_GRID) _Generic((PTR_TO_GRID), \ + struct cats_2d_array_float **: cleanup_2d_array_float, \ + struct cats_2d_array_double **: cleanup_2d_array_double, \ + struct cats_2d_array_char **: cleanup_2d_array_char \ + )(PTR_TO_GRID) + +bool array_dimension_valid(const struct array_dimension *dimension); + +__attribute__((unused)) bool array_dimensions_match(const struct array_dimension *d1, const struct array_dimension *d2); + +void *new_raw_2d_array_from_dimension(const struct array_dimension *dimension, size_t member_size); + void cleanup_raw_2d_double_array(double ***data, int64_t rows); @@ -60,4 +115,4 @@ void *new_raw_2d_array(size_t rows, size_t cols, size_t size); void *new_raw_1d_array(size_t count, size_t size); -#endif // CATS_RAW_ARRAYS_H \ No newline at end of file +#endif //bdc_memory_H diff --git a/src/memory/raw_arrays.c b/libbdc/bdc_memory/raw_arrays.c similarity index 93% rename from src/memory/raw_arrays.c rename to libbdc/bdc_memory/raw_arrays.c index 93eca60..6a19a29 100644 --- a/src/memory/raw_arrays.c +++ b/libbdc/bdc_memory/raw_arrays.c @@ -19,20 +19,16 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <assert.h> #include <stddef.h> #include <stdlib.h> -#include <stdio.h> -#include <inttypes.h> -#include "raw_arrays.h" -#include "cats_memory.h" +#include "bdc_memory.h" void *new_raw_2d_array(size_t rows, size_t cols, size_t size) { - void **grid = calloc_or_die(rows, sizeof(void *)); + void **grid = calloc_or_die(rows, sizeof(void *)); // FIXME DANGER - for (cats_dt_coord row = 0; row < rows; row++) { + for (size_t row = 0; row < rows; row++) { grid[row] = calloc_or_die(cols, size); if (grid[row] == NULL) exit(EXIT_FAILURE); // should never happen, we would exit in calloc_or_die } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2bf1b6a..e371925 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,4 @@ add_subdirectory(logging) -add_subdirectory(memory) add_subdirectory(cats) add_subdirectory(cats_time) add_subdirectory(cats_strings) diff --git a/src/cats/CMakeLists.txt b/src/cats/CMakeLists.txt index 00239ae..8b22d87 100644 --- a/src/cats/CMakeLists.txt +++ b/src/cats/CMakeLists.txt @@ -321,15 +321,15 @@ set(CATS_SOURCES_MPI ) add_executable(cats cats.c) -target_link_libraries(libcats cats_logging cats_memory cats_strings cats_ini cats_csv) -target_link_libraries(cats libcats cats_logging cats_memory cats_strings cats_ini cats_csv) +target_link_libraries(libcats cats_logging bdc cats_strings cats_ini cats_csv) +target_link_libraries(cats libcats cats_logging bdc cats_strings cats_ini cats_csv) if (MSVC) # target_include_directories(cats PRIVATE ${GDAL_INCLUDE_DIRS}) # target_link_libraries(cats cats_logging cats_memory cats_strings cats_ini cats_csv ${GDAL_LIBRARIES}) else () - target_link_libraries(cats cats_logging cats_memory cats_strings cats_ini cats_csv) + target_link_libraries(cats cats_logging bdc cats_strings cats_ini cats_csv) endif () @@ -337,7 +337,7 @@ if (MPI_FOUND) add_executable(cats-mpi cats.c ${CATS_SOURCES_MPI}) - target_link_libraries(cats-mpi ${MPI_C_LIBRARIES} cats_logging cats_memory cats_strings cats_ini cats_csv libcats) + target_link_libraries(cats-mpi ${MPI_C_LIBRARIES} cats_logging bdc_memory cats_strings cats_ini cats_csv libcats) target_compile_options(cats-mpi PRIVATE -DUSEMPI) diff --git a/src/cats/actions/setup_actions.c b/src/cats/actions/setup_actions.c index 2868263..e3a1539 100644 --- a/src/cats/actions/setup_actions.c +++ b/src/cats/actions/setup_actions.c @@ -26,12 +26,11 @@ #include "configuration/configuration.h" #include "actions/setup_actions.h" -#include "logging.h" #include "actions/cats_actions.h" #include "actions/process_inter_period_survival.h" #include "cats_strings/cats_strings.h" #include "dispersal/dispersal.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void list_actions(const struct cats_configuration *conf) diff --git a/src/cats/configuration/configuration.c b/src/cats/configuration/configuration.c index 99560cc..9044c29 100644 --- a/src/cats/configuration/configuration.c +++ b/src/cats/configuration/configuration.c @@ -31,7 +31,7 @@ #include <stdio.h> #include <errno.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <cats_ini/cats_ini.h> #include "configuration.h" diff --git a/src/cats/configuration/load_configuration_environments.c b/src/cats/configuration/load_configuration_environments.c index a49a67f..08f0f70 100644 --- a/src/cats/configuration/load_configuration_environments.c +++ b/src/cats/configuration/load_configuration_environments.c @@ -44,13 +44,15 @@ enum environment_variable_type get_environment_variable_type_from_string(const c void add_environment_variable_from_conf(struct cats_configuration *conf, struct cats_ini *ini, char *environment_section) { - struct cats_dimension *dimension = &conf->geometry.dimension; + struct array_dimension *dimension = &conf->geometry.dimension; char *name = remove_0th_token(environment_section, ":"); if (conf->command_line_options.no_input_rasters_required) { struct cats_environment *set = add_environment(conf, name, ENVIRONMENT_TYPE_SUITABILITY, NULL); - struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, "suitability", ENV_VAR_SUITABILITY, - 0, 0, "None", + struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, + "suitability", ENV_VAR_SUITABILITY, + "None", 0, + 0, dimension); add_to_environment(set, env); return; @@ -89,7 +91,8 @@ void add_environment_variable_from_conf(struct cats_configuration *conf, struct enum environment_variable_type type = get_environment_variable_type_from_string(type_name); struct cats_environment_variable *env = add_environment_to_registry(&conf->environment_registry, name, type, - interpolation, reload, filename_pattern, + filename_pattern, reload, + interpolation, dimension); diff --git a/src/cats/configuration/load_configuration_helper.c b/src/cats/configuration/load_configuration_helper.c index cc6e422..2e93757 100644 --- a/src/cats/configuration/load_configuration_helper.c +++ b/src/cats/configuration/load_configuration_helper.c @@ -22,10 +22,9 @@ #include <assert.h> #include <string.h> #include "cats_global.h" -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include "actions/setup.h" #include "load_configuration_helper.h" -#include <memory/cats_memory.h> #include "dispersal/dispersal.h" #include "data/species_parameters.h" diff --git a/src/cats/configuration/load_configuration_species_params.c b/src/cats/configuration/load_configuration_species_params.c index e2504e8..a7418dd 100644 --- a/src/cats/configuration/load_configuration_species_params.c +++ b/src/cats/configuration/load_configuration_species_params.c @@ -28,7 +28,7 @@ #include <string.h> #include <math.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <cats_ini/cats_ini.h> #include <logging/logging.h> diff --git a/src/cats/data/cats_datatypes.h b/src/cats/data/cats_datatypes.h index e912a70..d2bba54 100644 --- a/src/cats/data/cats_datatypes.h +++ b/src/cats/data/cats_datatypes.h @@ -49,11 +49,6 @@ typedef int32_t cats_dt_coord; ///< data type for coordinates (grid #define CATS_MAX_COORD INT32_MAX -/// @brief Struct for grid dimensions (number of rows and columns) -struct cats_dimension { - cats_dt_coord rows; - cats_dt_coord cols; -}; /// @brief Struct for grid coordinates (row and column) struct cats_coordinates { diff --git a/src/cats/data/cats_global.c b/src/cats/data/cats_global.c index d2179ba..d3a5749 100644 --- a/src/cats/data/cats_global.c +++ b/src/cats/data/cats_global.c @@ -23,7 +23,7 @@ #include "cats_global.h" #include "misc/misc.h" #include "defaults.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include <logging/logging.h> #include <stdlib.h> diff --git a/src/cats/data/cats_grid.h b/src/cats/data/cats_grid.h index 131fbf9..043bc20 100644 --- a/src/cats/data/cats_grid.h +++ b/src/cats/data/cats_grid.h @@ -27,6 +27,7 @@ #include "data/cats_datatypes.h" #include "stats/statistics.h" #include "defaults.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; struct module_grid_data { @@ -43,7 +44,7 @@ struct cats_grid { /** @name spatial information **/ - const struct cats_dimension dimension; + const struct array_dimension dimension; struct cats_environment *suitability; /** @name hybrid mode only: suitability information **/ diff --git a/src/cats/data/simulation_geometry.c b/src/cats/data/simulation_geometry.c index 75dee4b..ed9e0b1 100644 --- a/src/cats/data/simulation_geometry.c +++ b/src/cats/data/simulation_geometry.c @@ -46,7 +46,7 @@ void init_simulation_geometry(struct simulation_geometry *geo) } -void check_raster_dimensions(struct cats_dimension to_check, struct cats_dimension reference) +void check_raster_dimensions(struct array_dimension to_check, struct array_dimension reference) { if (to_check.cols != reference.cols || to_check.rows != reference.rows) { log_message(LOG_ERROR, "GDAL gdal_raster dimensions do not match expected dimensions: " diff --git a/src/cats/data/simulation_geometry.h b/src/cats/data/simulation_geometry.h index 57de102..be25d3c 100644 --- a/src/cats/data/simulation_geometry.h +++ b/src/cats/data/simulation_geometry.h @@ -22,13 +22,13 @@ #ifndef CATS_SIMULATION_GEOMETRY_H #define CATS_SIMULATION_GEOMETRY_H - +#include "bdc_memory/bdc_memory.h" #include "cats_datatypes.h" struct simulation_geometry { bool gdal_registered; - struct cats_dimension dimension; - struct cats_dimension dimension_orig; + struct array_dimension dimension; + struct array_dimension dimension_orig; cats_dt_coord row_offset; cats_dt_coord col_offset; double origin_x; diff --git a/src/cats/debug/debug.c b/src/cats/debug/debug.c index c2d6ed8..ebe381a 100644 --- a/src/cats/debug/debug.c +++ b/src/cats/debug/debug.c @@ -20,10 +20,8 @@ // #include "cats_global.h" -#include <stdint.h> #include <stdarg.h> -#include <memory/raw_arrays.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "debug/debug.h" #include "threading/threading-helpers.h" #include <cats_strings/cats_strings.h> diff --git a/src/cats/debug/debug_vital_rates.c b/src/cats/debug/debug_vital_rates.c index 7219c57..ca9da40 100644 --- a/src/cats/debug/debug_vital_rates.c +++ b/src/cats/debug/debug_vital_rates.c @@ -22,7 +22,7 @@ #include "debug_vital_rates.h" #include "data/species_parameters.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "inline_carrying_capacity.h" #include "grids/grid_setup.h" #include "paths/directory_helper.h" diff --git a/src/cats/dispersal/dispersal.c b/src/cats/dispersal/dispersal.c index 92adefe..3f0aeaf 100644 --- a/src/cats/dispersal/dispersal.c +++ b/src/cats/dispersal/dispersal.c @@ -47,7 +47,7 @@ #include "mpi/mpi_cats.h" #endif -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "inline_overlays.h" // ANSATZPUNKTE diff --git a/src/cats/dispersal/dispersal_helper.c b/src/cats/dispersal/dispersal_helper.c index 45d2fb6..df26f0c 100644 --- a/src/cats/dispersal/dispersal_helper.c +++ b/src/cats/dispersal/dispersal_helper.c @@ -26,8 +26,7 @@ #include "dispersal.h" #include "misc/cats_random.h" #include "threading/threading-helpers.h" -#include "memory/cats_memory.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" cats_dt_rates get_average_local_dispersal(const struct cats_dispersal *dispersal, const struct cats_configuration *conf) diff --git a/src/cats/environment/environment.c b/src/cats/environment/environment.c index 833be2c..353a797 100644 --- a/src/cats/environment/environment.c +++ b/src/cats/environment/environment.c @@ -152,7 +152,7 @@ load_environment_raster(struct cats_configuration *conf, struct cats_environment raster->interpolation_type = type; raster->environment_type = environment_type; if (raster->values == NULL) { - raster->values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(cats_dt_environment)); + raster->values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(cats_dt_environment)); } struct raster_load_wrapper wrapper = {.geometry = &conf->geometry, .target_environment = raster->values, diff --git a/src/cats/environment/environment_rasters.c b/src/cats/environment/environment_rasters.c index 1c44aca..b5e8016 100644 --- a/src/cats/environment/environment_rasters.c +++ b/src/cats/environment/environment_rasters.c @@ -50,7 +50,7 @@ void create_raster_if_needed(struct cats_configuration *conf, struct cats_enviro log_message(LOG_INFO, "\tinitializing empty grid for <%s>", get_raster_type_name_specific(raster)); log_message(LOG_DEBUG, "%s: ALLOCATING NEW GRID NOW", __func__); - raster->values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(cats_dt_environment)); + raster->values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(cats_dt_environment)); raster->dimension.rows = conf->geometry.dimension.rows; raster->dimension.cols = conf->geometry.dimension.cols; diff --git a/src/cats/environment/environment_rasters.h b/src/cats/environment/environment_rasters.h index 6e38f42..6cb05c5 100644 --- a/src/cats/environment/environment_rasters.h +++ b/src/cats/environment/environment_rasters.h @@ -23,6 +23,7 @@ #define CATS_ENVIRONMENT_RASTERS_H #include "data/cats_datatypes.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; @@ -55,7 +56,7 @@ enum environment_type { struct cats_environment_raster { cats_dt_environment **values; //!< the values as 2D-grid - struct cats_dimension dimension; + struct array_dimension dimension; enum interpolation_type interpolation_type; //!< are we the start, end or current set of values? enum environment_variable_type environment_type; int year; //!< temporal information: which year is loaded in \ref cats_suitability.values? INT_MIN for unknown or not loaded diff --git a/src/cats/environment/environment_registry.c b/src/cats/environment/environment_registry.c index e7898d6..fa1f606 100644 --- a/src/cats/environment/environment_registry.c +++ b/src/cats/environment/environment_registry.c @@ -24,7 +24,7 @@ #include <string.h> #include <limits.h> #include "environment/environment_structures.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #include <logging/logging.h> void reset_environment_registry(struct cats_environment_registry *reg) @@ -45,9 +45,8 @@ char *get_suitability_name_from_species(const char *name) struct cats_environment_variable * add_environment_to_registry(struct cats_environment_registry *registry, const char *name, - enum environment_variable_type type, - int32_t interpolation, int32_t reload_interval, - const char *file_name_pattern, const struct cats_dimension *dimension) + enum environment_variable_type type, const char *file_name_pattern, int32_t reload_interval, + int32_t interpolation, const struct array_dimension *dimension) { if (registry->name == NULL) { log_message(LOG_ERROR, "%s: name variable is NULL!", __func__); @@ -117,7 +116,7 @@ add_environment_to_registry(struct cats_environment_registry *registry, const ch env_var->current.quiet = false; env_var->start.quiet = false; env_var->end.quiet = false; - cats_dt_environment **tmp = new_raw_2d_array_from_dimension(*dimension, sizeof(cats_dt_environment)); + cats_dt_environment **tmp = new_raw_2d_array_from_dimension(dimension, sizeof(cats_dt_environment)); env_var->current.values = tmp; env_var->end.values = NULL; env_var->start.values = NULL; diff --git a/src/cats/environment/environment_registry.h b/src/cats/environment/environment_registry.h index 6735356..1d4680f 100644 --- a/src/cats/environment/environment_registry.h +++ b/src/cats/environment/environment_registry.h @@ -35,9 +35,8 @@ char *get_suitability_name_from_species(const char *name); struct cats_environment_variable * add_environment_to_registry(struct cats_environment_registry *registry, const char *name, - enum environment_variable_type type, - int32_t interpolation, int32_t reload_interval, const char *file_name_pattern, - const struct cats_dimension *dimension); + enum environment_variable_type type, const char *file_name_pattern, int32_t reload_interval, + int32_t interpolation, const struct array_dimension *dimension); struct cats_environment_variable *get_environment_from_registry(struct cats_environment_registry *reg, char *name); diff --git a/src/cats/environment/environment_set.c b/src/cats/environment/environment_set.c index f62b1f9..7e5f6b0 100644 --- a/src/cats/environment/environment_set.c +++ b/src/cats/environment/environment_set.c @@ -25,7 +25,7 @@ #include "configuration/configuration.h" #include "environment/environment.h" #include "environment_set.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "environment/glm.h" #include "configuration/print_configuration.h" diff --git a/src/cats/environment/load_environment.c b/src/cats/environment/load_environment.c index 3fa2f6e..c1324c5 100644 --- a/src/cats/environment/load_environment.c +++ b/src/cats/environment/load_environment.c @@ -37,8 +37,8 @@ #include "logging.h" #include "environment.h" #include "misc/cats_maths_inline.h" -#include "../../memory/arrays.h" -#include "../../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" + #include "grids/gdal_save.h" #include "inline.h" #include "paths/paths.h" @@ -146,7 +146,7 @@ load_environment_if_needed(struct cats_configuration *conf, struct cats_environm "%s: loading interpolated %s %s for year %d (interpolated between %d and %d)", short_name, name, environment->pattern, time, start, end); load_environment_interpolated(conf, environment, start, end, time); - + } } @@ -154,7 +154,7 @@ load_environment_if_needed(struct cats_configuration *conf, struct cats_environm void save_glm(struct cats_configuration *conf, const struct cats_environment *env, int32_t time) { - double **values = new_raw_2d_array_from_dimension(conf->geometry.dimension, sizeof(double)); + double **values = new_raw_2d_array_from_dimension(&conf->geometry.dimension, sizeof(double)); struct cats_vital_rate rate_info = {0}; rate_info.environment_set = (struct cats_environment *) env; rate_info.density = NO_DENSITY_DEP; diff --git a/src/cats/grids/cats_grid.c b/src/cats/grids/cats_grid.c index 04f9b4d..9665728 100644 --- a/src/cats/grids/cats_grid.c +++ b/src/cats/grids/cats_grid.c @@ -42,7 +42,7 @@ #include "stats/grid_stats.h" #include "gdal_load.h" #include "grid_setup.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "misc/cats_random.h" #ifdef USEMPI @@ -142,7 +142,7 @@ create_and_initialize_grid(struct cats_configuration *conf, const int32_t id, st } -void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct cats_dimension dimension, int id) +void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct array_dimension dimension, int id) { assert(conf != NULL); assert(grid != NULL); @@ -217,7 +217,7 @@ void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, st } -int64_t raster_cell_count(struct cats_dimension raster) +int64_t raster_cell_count(struct array_dimension raster) { assert(raster.rows >= 0); assert(raster.cols >= 0); @@ -350,7 +350,7 @@ void initialize_grid_stats(struct cats_grid *grid, struct cats_configuration *co { assert(grid != NULL); init_statistics(&grid->stats, &conf->stats_registry); - grid->stats.has_been_populated = (char **) new_raw_2d_array_from_dimension(grid->dimension, sizeof(char)); + grid->stats.has_been_populated = (char **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(char)); char *filename = get_grid_stat_filename(grid, conf); diff --git a/src/cats/grids/cats_grid.h b/src/cats/grids/cats_grid.h index 4a6ff2e..2fc3459 100644 --- a/src/cats/grids/cats_grid.h +++ b/src/cats/grids/cats_grid.h @@ -25,9 +25,9 @@ #include "data/cats_grid.h" #include "configuration/configuration.h" -int64_t raster_cell_count(struct cats_dimension raster); +int64_t raster_cell_count(struct array_dimension raster); -void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct cats_dimension dimension, int id); +void initialize_grid(struct cats_grid *grid, struct cats_configuration *conf, struct array_dimension dimension, int id); void cleanup_grid(struct cats_grid *grid); @@ -41,5 +41,5 @@ void cleanup_array_of_grids(struct cats_grid ***grid, int grid_count); void do_all_grids(struct cats_grid **grids, struct cats_configuration *conf, grid_function function); -void check_raster_dimensions(struct cats_dimension to_check, struct cats_dimension reference); +void check_raster_dimensions(struct array_dimension to_check, struct array_dimension reference); diff --git a/src/cats/grids/gdal_helper.c b/src/cats/grids/gdal_helper.c index 7173136..403df56 100644 --- a/src/cats/grids/gdal_helper.c +++ b/src/cats/grids/gdal_helper.c @@ -207,7 +207,7 @@ void get_projection_from_file(struct simulation_geometry *geometry, const char * GDALDatasetH -create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct cats_dimension dimension, +create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct array_dimension dimension, int bands, GDALDataType datatype, const struct cats_configuration *conf) { @@ -240,7 +240,7 @@ create_gdal_dataset(const struct simulation_geometry *geometry, const char *file void set_gdal_dataset_geo_info(GDALDatasetH dataset, const struct simulation_geometry *geometry, - const struct cats_dimension *offset) + const struct array_dimension *offset) { assert(geometry != NULL); assert(dataset != NULL); diff --git a/src/cats/grids/gdal_helper.h b/src/cats/grids/gdal_helper.h index a8f4cf5..f18faed 100644 --- a/src/cats/grids/gdal_helper.h +++ b/src/cats/grids/gdal_helper.h @@ -46,13 +46,13 @@ void set_gdal_dataset_metadata(GDALDatasetH dataset, const char *name, const cha void set_gdal_band_metadata(GDALRasterBandH band, GDALColorInterp colorint, const char *description); void set_gdal_dataset_geo_info(GDALDatasetH dataset, const struct simulation_geometry *geometry, - const struct cats_dimension *offset); + const struct array_dimension *offset); void gdal_destroy(void); void load_global_geometry(struct simulation_geometry *geometry, const char *filename); GDALDatasetH -create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct cats_dimension dimension, +create_gdal_dataset(const struct simulation_geometry *geometry, const char *filename, struct array_dimension dimension, int bands, GDALDataType datatype, const struct cats_configuration *conf); diff --git a/src/cats/grids/gdal_load.c b/src/cats/grids/gdal_load.c index c52e27a..78b6d82 100644 --- a/src/cats/grids/gdal_load.c +++ b/src/cats/grids/gdal_load.c @@ -221,8 +221,8 @@ get_double_values_from_gdal(struct simulation_geometry *geometry, const char *fi cats_dt_coord rows = GDALGetRasterYSize(dataset); cats_dt_coord cols = GDALGetRasterXSize(dataset); - struct cats_dimension dim = {.rows = rows, .cols=cols}; - struct cats_2d_array_double *raster = new_2d_array_double(dim); + struct array_dimension dim = {.rows = rows, .cols=cols}; + struct cats_2d_array_double *raster = new_2d_array_double(&dim); if (raster->dimension.cols <= 0 || raster->dimension.rows <= 0) { diff --git a/src/cats/grids/gdal_load.h b/src/cats/grids/gdal_load.h index b531191..6f51eac 100644 --- a/src/cats/grids/gdal_load.h +++ b/src/cats/grids/gdal_load.h @@ -25,7 +25,7 @@ #include "data/cats_datatypes.h" #include "configuration/configuration.h" #include "grid_wrapper.h" -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" #include "data/simulation_geometry.h" enum RASTER_LOAD_TYPE { diff --git a/src/cats/grids/gdal_save.c b/src/cats/grids/gdal_save.c index 26e395d..847f30a 100644 --- a/src/cats/grids/gdal_save.c +++ b/src/cats/grids/gdal_save.c @@ -26,12 +26,12 @@ #include "gdal_save.h" #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "paths/paths.h" #include "gdal_load.h" #include "gdal_helper.h" -#include "memory/arrays.h" + #include "paths/output_paths.h" #include "inline.h" #include "inline_vital_rates.h" @@ -124,7 +124,7 @@ void *save_dispersed_seeds_to_gdal(struct cats_grid *grid, struct cats_configura char *filename = get_current_dispersed_seeds_filename(grid, conf); - double **seeds = new_raw_2d_array_from_dimension(grid->dimension, + double **seeds = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(double)); const int32_t rows = grid->dimension.rows; const int32_t cols = grid->dimension.cols; @@ -163,7 +163,7 @@ void *save_seeds_to_gdal(struct cats_grid *grid, struct cats_configuration *conf for (int i = 0; i < seed_persistence; i++) { char *filename = get_current_seeds_filename(grid, conf, i); - int32_t **seeds = new_raw_2d_array_from_dimension(grid->dimension, + int32_t **seeds = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(int32_t)); //new_int32t_grid(grid->rows, grid->cols); const int32_t rows = grid->dimension.rows; const int32_t cols = grid->dimension.cols; @@ -226,7 +226,7 @@ void *save_juveniles_to_gdal(struct cats_grid *grid, struct cats_configuration * } } } - struct cats_dimension dim = {.rows = rows, .cols = cols}; + struct array_dimension dim = {.rows = rows, .cols = cols}; struct grid_wrapper data = gridwrapper(juvs, dim); save_grid_to_gdal(&data, GDT_Int32, conf, filename, conf->param[id].species_name); free(filename); diff --git a/src/cats/grids/grid_converters.c b/src/cats/grids/grid_converters.c index b6c40f2..e65ad00 100644 --- a/src/cats/grids/grid_converters.c +++ b/src/cats/grids/grid_converters.c @@ -24,7 +24,7 @@ #include "data/cats_grid.h" #include "configuration/configuration.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "actions/cats_actions.h" @@ -36,7 +36,7 @@ cats_dt_environment **convert_double_to_environment(const struct cats_2d_array_double *in_grid) { log_message(LOG_DEBUG, "%s: ALLOCATING NEW GRID NOW", __func__); - cats_dt_environment **array = new_raw_2d_array_from_dimension(in_grid->dimension, sizeof(cats_dt_environment)); + cats_dt_environment **array = new_raw_2d_array_from_dimension(&in_grid->dimension, sizeof(cats_dt_environment)); const cats_dt_coord rows = in_grid->dimension.rows; const cats_dt_coord cols = in_grid->dimension.cols; for (int32_t r = 0; r < rows; r++) { diff --git a/src/cats/grids/grid_converters.h b/src/cats/grids/grid_converters.h index a070da1..526985a 100644 --- a/src/cats/grids/grid_converters.h +++ b/src/cats/grids/grid_converters.h @@ -21,7 +21,7 @@ #pragma once -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" cats_dt_environment **convert_double_to_environment(const struct cats_2d_array_double *in_grid); diff --git a/src/cats/grids/grid_setup.c b/src/cats/grids/grid_setup.c index 63d74fc..365cff4 100644 --- a/src/cats/grids/grid_setup.c +++ b/src/cats/grids/grid_setup.c @@ -24,7 +24,7 @@ #include "grid_setup.h" #include "logging.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void setup_grid_seed_structures(const struct cats_configuration *conf, struct cats_grid *const grid, int grid_id) @@ -44,9 +44,9 @@ void setup_grid_seed_structures(const struct cats_configuration *conf, struct ca exit(EXIT_FAILURE); } - grid->dispersed_seeds = (cats_dt_seeds **) new_raw_2d_array_from_dimension(grid->dimension, + grid->dispersed_seeds = (cats_dt_seeds **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(cats_dt_seeds)); - grid->seeds_produced = (cats_dt_seeds **) new_raw_2d_array_from_dimension(grid->dimension, + grid->seeds_produced = (cats_dt_seeds **) new_raw_2d_array_from_dimension(&grid->dimension, sizeof(cats_dt_seeds)); grid->seed_bank = calloc_or_die(rows, sizeof(cats_dt_seeds **)); diff --git a/src/cats/grids/grid_wrapper.c b/src/cats/grids/grid_wrapper.c index 2fd585a..ab06ac1 100644 --- a/src/cats/grids/grid_wrapper.c +++ b/src/cats/grids/grid_wrapper.c @@ -25,7 +25,7 @@ #include "grid_wrapper.h" -struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_int32 = data; @@ -37,7 +37,7 @@ struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimensio } -struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_double(double **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_double = data; @@ -49,7 +49,7 @@ struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension } -struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_float(float **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.offset.cols = 0; @@ -64,7 +64,7 @@ struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension d } -struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.data_float = data; @@ -77,7 +77,7 @@ struct grid_wrapper gridwrapper_from_env(cats_dt_environment **data, struct cats } -struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct cats_dimension dimension) +struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct array_dimension dimension) { struct grid_wrapper result = {0}; result.nodata = -9999; diff --git a/src/cats/grids/grid_wrapper.h b/src/cats/grids/grid_wrapper.h index 0bde452..3668443 100644 --- a/src/cats/grids/grid_wrapper.h +++ b/src/cats/grids/grid_wrapper.h @@ -39,8 +39,8 @@ struct grid_wrapper { char *data_char_1d; double *data_double_1d; - struct cats_dimension dimension; - struct cats_dimension offset; + struct array_dimension dimension; + struct array_dimension offset; GDALDataType dt; @@ -49,13 +49,13 @@ struct grid_wrapper { }; -struct grid_wrapper gridwrapper_from_float(float **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_float(float **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_int32t(int32_t **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_from_double(double **data, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_from_double(double **data, struct array_dimension dimension); -struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct cats_dimension dimension); +struct grid_wrapper gridwrapper_1d(void *data, GDALDataType dt, struct array_dimension dimension); #define gridwrapper(DATA, DIMENSION) _Generic((DATA), \ int32_t **: gridwrapper_from_int32t, \ diff --git a/src/cats/inline.h b/src/cats/inline.h index 1c29c28..dd1e76f 100644 --- a/src/cats/inline.h +++ b/src/cats/inline.h @@ -35,7 +35,7 @@ #include "logging.h" #include "overlays/overlays.h" #include "misc/cats_maths_inline.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #include "inline_carrying_capacity.h" #include "inline_population.h" diff --git a/src/cats/inline_population.h b/src/cats/inline_population.h index 7c1ba19..20937d8 100644 --- a/src/cats/inline_population.h +++ b/src/cats/inline_population.h @@ -259,7 +259,7 @@ get_population_all_classes_ts(const struct cats_grid **grids, cats_dt_coord row, #include "defaults.h" #include "environment/glm.h" #include "cats_global.h" -#include "../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "plants/plant_rates.h" #include "data/cats_grid.h" #include "configuration/configuration.h" @@ -268,7 +268,6 @@ get_population_all_classes_ts(const struct cats_grid **grids, cats_dt_coord row, #include "logging.h" #include "overlays/overlays.h" #include "misc/cats_maths_inline.h" -#include "memory/arrays.h" #include "inline_vital_rates.h" #include "inline_overlays.h" #include "inline_carrying_capacity.h" diff --git a/src/cats/lambda/eigen_power.c b/src/cats/lambda/eigen_power.c index 7fc8add..9768dde 100644 --- a/src/cats/lambda/eigen_power.c +++ b/src/cats/lambda/eigen_power.c @@ -23,8 +23,7 @@ #include <stdbool.h> #include <stdlib.h> #include "eigen_power.h" -#include "logging/logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" static double *ep_empty_vec(int N) diff --git a/src/cats/lambda/lambda-grid.c b/src/cats/lambda/lambda-grid.c index 7cde1c3..42ea357 100644 --- a/src/cats/lambda/lambda-grid.c +++ b/src/cats/lambda/lambda-grid.c @@ -25,7 +25,7 @@ #include "inline.h" #include "grids/gdal_save.h" #include "environment/environment_set.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "lambda.h" #include "inline_vital_rates.h" #include "inline_overlays.h" @@ -127,7 +127,7 @@ void save_lambda_grid(struct cats_configuration *conf, struct cats_grid *grid, b cats_dt_coord cols = conf->geometry.dimension.cols; - double **lambdas = new_raw_2d_array_from_dimension(grid->dimension, + double **lambdas = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(double)); log_message(LOG_IMPORTANT, "Calculating lambda grid"); cats_dt_rates max_cc = get_vital_rate_maximum(&grid->param.carrying_capacity); diff --git a/src/cats/lambda/leslie_matrix.c b/src/cats/lambda/leslie_matrix.c index 2128d84..e1a8582 100644 --- a/src/cats/lambda/leslie_matrix.c +++ b/src/cats/lambda/leslie_matrix.c @@ -23,7 +23,7 @@ #include <stdio.h> #include "dispersal/dispersal.h" #include "leslie_matrix.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "logging/logging.h" #include "configuration/configuration.h" #include "inline.h" diff --git a/src/cats/lambda/matrix_helpers.c b/src/cats/lambda/matrix_helpers.c index 9c653b6..c054e99 100644 --- a/src/cats/lambda/matrix_helpers.c +++ b/src/cats/lambda/matrix_helpers.c @@ -21,9 +21,8 @@ // #include <assert.h> -#include <stdio.h> #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "cats_global.h" diff --git a/src/cats/misc/cats_maths.c b/src/cats/misc/cats_maths.c index fc65edf..e932b4e 100644 --- a/src/cats/misc/cats_maths.c +++ b/src/cats/misc/cats_maths.c @@ -23,8 +23,7 @@ #include <assert.h> #include "cats_maths.h" -#include "../../memory/cats_memory.h" -#include "../../memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "logging.h" diff --git a/src/cats/misc/debug.c b/src/cats/misc/debug.c index b6d8d73..f86e57b 100644 --- a/src/cats/misc/debug.c +++ b/src/cats/misc/debug.c @@ -23,7 +23,7 @@ #include "data/cats_grid.h" #include "misc.h" #include "inline.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void diff --git a/src/cats/misc/output.c b/src/cats/misc/output.c index 48919ca..df52926 100644 --- a/src/cats/misc/output.c +++ b/src/cats/misc/output.c @@ -32,7 +32,7 @@ void -save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf) +save_1d_grid(double *src, struct array_dimension dimension, char *filename, struct cats_configuration *conf) { struct grid_wrapper data = gridwrapper_1d(src, GDT_Float64, dimension); @@ -40,8 +40,8 @@ save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struc } -void save_2d_grid(float **src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf, - struct cats_dimension *offset) +void save_2d_grid(float **src, struct array_dimension dimension, char *filename, struct cats_configuration *conf, + struct array_dimension *offset) { struct grid_wrapper data = gridwrapper(src, dimension); if (offset != NULL) { diff --git a/src/cats/misc/output.h b/src/cats/misc/output.h index bf39bbc..b484d46 100644 --- a/src/cats/misc/output.h +++ b/src/cats/misc/output.h @@ -28,10 +28,10 @@ void -save_1d_grid(double *src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf); +save_1d_grid(double *src, struct array_dimension dimension, char *filename, struct cats_configuration *conf); -void save_2d_grid(float **src, struct cats_dimension dimension, char *filename, struct cats_configuration *conf, - struct cats_dimension *offset); +void save_2d_grid(float **src, struct array_dimension dimension, char *filename, struct cats_configuration *conf, + struct array_dimension *offset); #endif \ No newline at end of file diff --git a/src/cats/modules/module_header.h b/src/cats/modules/module_header.h index 7de3891..9f6f2c5 100644 --- a/src/cats/modules/module_header.h +++ b/src/cats/modules/module_header.h @@ -28,7 +28,7 @@ #include <assert.h> #include "logging.h" #include "data/cats_grid.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" extern int CATS_MODULE_ID_INTERNAL; extern void *CATS_MODULE_DATA_INTERNAL; diff --git a/src/cats/mpi/mpi_cats.c b/src/cats/mpi/mpi_cats.c index 92b983d..81dd183 100644 --- a/src/cats/mpi/mpi_cats.c +++ b/src/cats/mpi/mpi_cats.c @@ -31,11 +31,10 @@ #include "configuration/configuration.h" #include "misc/misc.h" #include "misc/output.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "paths/paths.h" #include "grids/gdal_load.h" #include "mpi_cats.h" -#include "memory/cats_memory.h" #include "mpi/mpi_grid_helpers.h" diff --git a/src/cats/mpi/mpi_debug.c b/src/cats/mpi/mpi_debug.c index 86fc215..1570c2c 100644 --- a/src/cats/mpi/mpi_debug.c +++ b/src/cats/mpi/mpi_debug.c @@ -61,7 +61,7 @@ char *dispersed_seeds_mpi_local_filename(const struct cats_configuration *conf) void mpi_save_locally_dispersed_seeds(struct cats_configuration *conf, struct cats_grid *grid) { char *filename = dispersed_seeds_mpi_local_filename(conf); - struct cats_dimension offset = {0}; + struct array_dimension offset = {0}; offset.cols = 0; int radius = 0; @@ -72,7 +72,7 @@ void mpi_save_locally_dispersed_seeds(struct cats_configuration *conf, struct ca log_message(LOG_RAW, "rank %d, rows %d cols %d, rows before %d, rows after %d, row offset %d\n\n", conf->mpi.world_rank, grid->dimension.rows, grid->dimension.cols, rows_before, rows_after, conf->geometry.row_offset); - struct cats_dimension dimension; + struct array_dimension dimension; dimension.cols = grid->dimension.cols; dimension.rows = grid->dimension.rows + rows_before + rows_after; save_2d_grid(grid->seeds_0_all, dimension, filename, conf, &offset); diff --git a/src/cats/mpi/mpi_grid_helpers.c b/src/cats/mpi/mpi_grid_helpers.c index fdb04b3..f30cad2 100644 --- a/src/cats/mpi/mpi_grid_helpers.c +++ b/src/cats/mpi/mpi_grid_helpers.c @@ -25,8 +25,7 @@ #include "logging.h" #include "configuration/configuration.h" #include "mpi_grid_helpers.h" -#include "memory/raw_arrays.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "grids/cats_grid.h" #ifdef USEMPI diff --git a/src/cats/mpi/mpi_save.c b/src/cats/mpi/mpi_save.c index a32da0b..23f638b 100644 --- a/src/cats/mpi/mpi_save.c +++ b/src/cats/mpi/mpi_save.c @@ -22,15 +22,13 @@ #include <assert.h> #include "paths/paths.h" #include "cats_global.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "grids/cats_grid.h" #include "data/cats_grid.h" #include "mpi_save.h" #include "mpi_seeds.h" -#include "logging.h" #include "grids/gdal_load.h" #include "grids/gdal_save.h" -#include "memory/cats_memory.h" #include "mpi/mpi_grid_helpers.h" #include "paths/output_paths.h" diff --git a/src/cats/mpi/mpi_scalefactor.c b/src/cats/mpi/mpi_scalefactor.c index 19b93a6..17c6eae 100644 --- a/src/cats/mpi/mpi_scalefactor.c +++ b/src/cats/mpi/mpi_scalefactor.c @@ -20,11 +20,11 @@ // #include "mpi_scalefactor.h" -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include "logging.h" #include "vital_rates/hybrid_functions.h" #include "data/cats_grid.h" -#include <memory/cats_memory.h> + #ifdef USEMPI diff --git a/src/cats/mpi/mpi_seeds.c b/src/cats/mpi/mpi_seeds.c index 77a1dd4..c818d57 100644 --- a/src/cats/mpi/mpi_seeds.c +++ b/src/cats/mpi/mpi_seeds.c @@ -22,10 +22,8 @@ #include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "logging.h" -#include "grids/cats_grid.h" #include "mpi_grid_helpers.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "mpi_seeds.h" diff --git a/src/cats/mpi/mpi_stats.c b/src/cats/mpi/mpi_stats.c index 5e2fde5..c5eff7b 100644 --- a/src/cats/mpi/mpi_stats.c +++ b/src/cats/mpi/mpi_stats.c @@ -24,15 +24,11 @@ #ifdef USEMPI #include <string.h> -#include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "misc/misc.h" #include "stats/grid_stats.h" -#include "logging.h" -#include "memory/raw_arrays.h" +#include "bdc_memory/bdc_memory.h" #include "mpi/mpi_stats.h" -#include "memory/cats_memory.h" void collect_and_write_plant_stats_mpi(struct cats_configuration *conf, struct cats_grid *grid) diff --git a/src/cats/overlays/overlay_exclusion.c b/src/cats/overlays/overlay_exclusion.c index 37f0823..3b2e784 100644 --- a/src/cats/overlays/overlay_exclusion.c +++ b/src/cats/overlays/overlay_exclusion.c @@ -27,7 +27,7 @@ #include "logging.h" #include "grids/cats_grid.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "populations/population.h" #include "plants/plant_structures.h" #include "inline_overlays.h" @@ -100,7 +100,7 @@ void destroy_excluded_cells_all_grids(const struct cats_configuration *conf, str struct cats_2d_array_char *translate_exclusion(const struct cats_2d_array_double *data, int64_t *excluded_count) { - struct cats_2d_array_char *result = new_2d_array_char(data->dimension); + struct cats_2d_array_char *result = new_2d_array_char(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlay_exclusion.h b/src/cats/overlays/overlay_exclusion.h index 5bc74a8..ed0eeb3 100644 --- a/src/cats/overlays/overlay_exclusion.h +++ b/src/cats/overlays/overlay_exclusion.h @@ -22,8 +22,8 @@ #ifndef CATS_OVERLAY_EXCLUSION_H #define CATS_OVERLAY_EXCLUSION_H -#include "../../memory/raw_arrays.h" -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" + struct cats_2d_array_char *translate_exclusion(const struct cats_2d_array_double *data, int64_t *excluded_count); diff --git a/src/cats/overlays/overlay_habitat_type_cc.c b/src/cats/overlays/overlay_habitat_type_cc.c index 83ab768..cba3f82 100644 --- a/src/cats/overlays/overlay_habitat_type_cc.c +++ b/src/cats/overlays/overlay_habitat_type_cc.c @@ -27,7 +27,8 @@ #include "overlay_habitat_type_cc.h" #include "cats_csv/cats_csv.h" #include "logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" +#include "data/cats_datatypes.h" void cleanup_habitat_layer_cc_aux(void **data) @@ -115,7 +116,7 @@ struct cats_2d_array_double *translate_habitat(const struct cats_2d_array_double { assert(aux != NULL); struct habitat_layer_cc_aux *habitat_info = aux; - struct cats_2d_array_double *result = new_2d_array_double(data->dimension); + struct cats_2d_array_double *result = new_2d_array_double(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlay_habitat_type_cc.h b/src/cats/overlays/overlay_habitat_type_cc.h index 5148928..fa07f3a 100644 --- a/src/cats/overlays/overlay_habitat_type_cc.h +++ b/src/cats/overlays/overlay_habitat_type_cc.h @@ -23,7 +23,7 @@ #define CATS_OVERLAY_HABITAT_TYPE_CC_H #include <stdint.h> -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" #define MAX_HABITAT_TYPE_CODES 1024 diff --git a/src/cats/overlays/overlay_resources.c b/src/cats/overlays/overlay_resources.c index acfef34..131bdea 100644 --- a/src/cats/overlays/overlay_resources.c +++ b/src/cats/overlays/overlay_resources.c @@ -22,12 +22,13 @@ #include <assert.h> #include <math.h> #include "overlay_resources.h" -#include "memory/arrays.h" +#include "bdc_memory/bdc_memory.h" +#include "data/cats_datatypes.h" struct cats_2d_array_double *translate_resources(const struct cats_2d_array_double *data) { - struct cats_2d_array_double *result = new_2d_array_double(data->dimension); + struct cats_2d_array_double *result = new_2d_array_double(&data->dimension); const cats_dt_coord rows = data->dimension.rows; const cats_dt_coord cols = data->dimension.cols; diff --git a/src/cats/overlays/overlays.h b/src/cats/overlays/overlays.h index b26e515..75e5b9d 100644 --- a/src/cats/overlays/overlays.h +++ b/src/cats/overlays/overlays.h @@ -25,7 +25,7 @@ #include <stdbool.h> #include <stdint.h> #include "data/cats_datatypes.h" -#include "../../memory/arrays.h" +#include "bdc_memory/bdc_memory.h" struct cats_configuration; struct cats_grid; diff --git a/src/cats/performance/timer.c b/src/cats/performance/timer.c index 22329f6..0ba6758 100644 --- a/src/cats/performance/timer.c +++ b/src/cats/performance/timer.c @@ -25,12 +25,11 @@ #include <stdint.h> #include "timer.h" -#include "logging.h" #include "misc/misc.h" #include "temporal/phase_names.h" #include "temporal/years.h" #include "performance_stats.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" struct timeval *time_difference(struct timeval *start, struct timeval *end) diff --git a/src/cats/plants/plant_structures.c b/src/cats/plants/plant_structures.c index ed45e5d..d9e54cc 100644 --- a/src/cats/plants/plant_structures.c +++ b/src/cats/plants/plant_structures.c @@ -27,7 +27,7 @@ #include "seeds.h" #include "inline_population.h" #include "populations/population.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" void destroy_plant_cell(struct cats_grid *grid, const cats_dt_coord row, const cats_dt_coord col) diff --git a/src/cats/plants/population_stats.c b/src/cats/plants/population_stats.c index a7471ea..a68064e 100644 --- a/src/cats/plants/population_stats.c +++ b/src/cats/plants/population_stats.c @@ -19,12 +19,12 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include "../../memory/raw_arrays.h" + #include "population_stats.h" #include "configuration/configuration.h" #include "data/cats_grid.h" -#include "logging.h" + void print_populated_cell_change_carrying_capacity(struct cats_configuration *conf, struct cats_grid **parent) diff --git a/src/cats/populations/plant_juveniles.c b/src/cats/populations/plant_juveniles.c index bd00998..2573d9b 100644 --- a/src/cats/populations/plant_juveniles.c +++ b/src/cats/populations/plant_juveniles.c @@ -23,10 +23,9 @@ #include <assert.h> #include "plant_juveniles.h" -#include "data/cats_datatypes.h" #include "data/cats_grid.h" #include "inline_vital_rates.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void setup_plant_juvenile_weights(struct cats_species_param *param) diff --git a/src/cats/stats/global_stats.c b/src/cats/stats/global_stats.c index a9addfe..a412a82 100644 --- a/src/cats/stats/global_stats.c +++ b/src/cats/stats/global_stats.c @@ -25,12 +25,11 @@ #include "configuration/configuration.h" #include "misc/misc.h" -#include "logging.h" #include "paths/paths.h" #include "stats/global_stats.h" #include "stats/grid_stats.h" #include "paths/output_paths.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #ifdef USEMPI #include "mpi/mpi_stats.h" diff --git a/src/cats/stats/grid_stats.c b/src/cats/stats/grid_stats.c index 5438917..a355506 100644 --- a/src/cats/stats/grid_stats.c +++ b/src/cats/stats/grid_stats.c @@ -25,9 +25,7 @@ #include <assert.h> #include "data/cats_grid.h" #include "configuration/configuration.h" -#include "misc/misc.h" #include "grid_stats.h" -#include "logging.h" #include "paths/paths.h" #include "temporal/phase_names.h" #include "temporal/years.h" @@ -36,13 +34,9 @@ #include "mpi/mpi_stats.h" #endif -#include "inline.h" -#include "memory/arrays.h" -#include "paths/output_paths.h" -#include "memory/cats_memory.h" -#include "inline_overlays.h" -#include "inline_population.h" -#include "populations/population.h" + +#include "bdc_memory/bdc_memory.h" + struct string_array *add_stats_header_overlay(struct string_array *x, struct cats_configuration *conf, bool header) diff --git a/src/cats/stats/indices.c b/src/cats/stats/indices.c index 5f5623a..7f35aef 100644 --- a/src/cats/stats/indices.c +++ b/src/cats/stats/indices.c @@ -32,12 +32,12 @@ #include "configuration/configuration.h" #include "populations/carrying_capacity.h" #include "actions/cats_actions.h" -#include "logging.h" + #include "indices.h" -#include "inline.h" -#include "memory/cats_memory.h" + +#include "bdc_memory/bdc_memory.h" #include "inline_overlays.h" -#include "inline_carrying_capacity.h" + #include "inline_population.h" #include "populations/population.h" diff --git a/src/cats/stats/statistics.c b/src/cats/stats/statistics.c index e397798..c1ed496 100644 --- a/src/cats/stats/statistics.c +++ b/src/cats/stats/statistics.c @@ -24,7 +24,7 @@ #include <stdlib.h> #include "statistics.h" #include "cats_strings/cats_strings.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "configuration/configuration.h" diff --git a/src/cats/stats/write_stats.c b/src/cats/stats/write_stats.c index 9700929..c99e118 100644 --- a/src/cats/stats/write_stats.c +++ b/src/cats/stats/write_stats.c @@ -20,14 +20,14 @@ // #include <stdlib.h> -#include <memory/raw_arrays.h> +#include "bdc_memory/bdc_memory.h" #include <string.h> -#include <assert.h> + #include "configuration/configuration.h" -#include "logging.h" + #include "data/cats_grid.h" #include "grid_stats.h" -#include "defaults.h" + #include "metadata.h" diff --git a/src/cats/temporal/timeformat.c b/src/cats/temporal/timeformat.c index 36fb293..5120e20 100644 --- a/src/cats/temporal/timeformat.c +++ b/src/cats/temporal/timeformat.c @@ -23,7 +23,7 @@ #include "timeformat.h" #include "configuration/configuration.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "simulation_time.h" diff --git a/src/cats/threading/block_tasks.c b/src/cats/threading/block_tasks.c index b245ffd..cf08e60 100644 --- a/src/cats/threading/block_tasks.c +++ b/src/cats/threading/block_tasks.c @@ -22,8 +22,8 @@ #include "cats_global.h" #include <stdint.h> -#include <memory/arrays.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" + #include "threading/threading-helpers.h" #include "threading.h" @@ -100,9 +100,9 @@ void setup_block_tasks(struct cats_thread_controller *t, int32_t rows, int32_t c (t->grid->dimension.cols % t->task_size_cols != 0); - struct cats_dimension dim = {.rows = grid_rows, .cols = grid_cols}; + struct array_dimension dim = {.rows = grid_rows, .cols = grid_cols}; - t->task_grid = new_2d_array_char(dim); + t->task_grid = new_2d_array_char(&dim); t->tasks_remaining = t->task_grid->dimension.rows * t->task_grid->dimension.cols; t->task_getter = block_task_getter; diff --git a/src/cats/threading/dispersal_tasks.c b/src/cats/threading/dispersal_tasks.c index 9c2fc45..a825f9f 100644 --- a/src/cats/threading/dispersal_tasks.c +++ b/src/cats/threading/dispersal_tasks.c @@ -19,12 +19,10 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <memory/arrays.h> +#include "bdc_memory/bdc_memory.h" #include "threading/threading-helpers.h" #include "threading/threading.h" #include "misc/cats_maths_inline.h" - -#include <memory/cats_memory.h> #include "cats_global.h" #include <stdint.h> #include "dispersal_tasks.h" @@ -102,20 +100,20 @@ struct thread_task dispersal_task_getter(struct cats_thread_controller *tc, int3 } -struct cats_dimension get_dispersal_area_dimensions(const struct cats_configuration *conf, const struct cats_grid *grid) +struct array_dimension get_dispersal_area_dimensions(const struct cats_configuration *conf, const struct cats_grid *grid) { int32_t id = grid->id; int32_t max_radius = get_dispersal_radius(conf, id); int32_t min_dimension = min_int32t(grid->dimension.cols, grid->dimension.rows); max_radius = max_int32t(max_radius, min_dimension / 32); - struct cats_dimension result = {.rows = max_radius, .cols = max_radius}; + struct array_dimension result = {.rows = max_radius, .cols = max_radius}; return result; } void setup_dispersal_tasks(struct cats_thread_controller *t) { - struct cats_dimension dispersal_area_dimensions = get_dispersal_area_dimensions(t->conf, t->grid); + struct array_dimension dispersal_area_dimensions = get_dispersal_area_dimensions(t->conf, t->grid); t->task_size_rows = dispersal_area_dimensions.rows; t->task_size_cols = dispersal_area_dimensions.cols; @@ -129,8 +127,8 @@ void setup_dispersal_tasks(struct cats_thread_controller *t) t->tasks_remaining = grid_rows * grid_cols; t->task_getter = dispersal_task_getter; - struct cats_dimension dim = {.rows = grid_rows, .cols = grid_cols}; - t->task_grid = new_2d_array_char(dim); + struct array_dimension dim = {.rows = grid_rows, .cols = grid_cols}; + t->task_grid = new_2d_array_char(&dim); //t->task_grid = new_2d_array(t->task_grid_rows, t->task_grid_cols, sizeof(char)); for (int32_t r = 0; r < t->task_grid->dimension.rows; r++) { for (int32_t c = 0; c < t->task_grid->dimension.cols; c++) { diff --git a/src/cats/threading/threading-helpers.c b/src/cats/threading/threading-helpers.c index b5e1837..0877f6b 100644 --- a/src/cats/threading/threading-helpers.c +++ b/src/cats/threading/threading-helpers.c @@ -20,15 +20,13 @@ // #include <assert.h> -#include "data/cats_datatypes.h" #include "threading-helpers.h" #include "logging.h" #include "threading.h" #include "misc/cats_maths_inline.h" #include "misc/cats_random.h" #include "stats/grid_stats.h" -#include "data/error.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" void create_custom_stats_for_thread(struct statistics *thread_stats, struct statistics *grid_stats) { diff --git a/src/cats/threading/threading.c b/src/cats/threading/threading.c index 9b89dbb..008df95 100644 --- a/src/cats/threading/threading.c +++ b/src/cats/threading/threading.c @@ -19,9 +19,9 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // -#include <stdint.h> + #include "cats_global.h" -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include "block_tasks.h" #include "misc/misc.h" diff --git a/src/cats_csv/CMakeLists.txt b/src/cats_csv/CMakeLists.txt index e3674eb..d3afbbe 100644 --- a/src/cats_csv/CMakeLists.txt +++ b/src/cats_csv/CMakeLists.txt @@ -13,4 +13,4 @@ target_sources(cats_csv set_property(TARGET cats_csv PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(cats_logging cats_memory cats_strings) \ No newline at end of file +target_link_libraries(cats_logging bdc cats_strings) \ No newline at end of file diff --git a/src/cats_csv/cats_csv.c b/src/cats_csv/cats_csv.c index 45a9bf1..db8cf59 100644 --- a/src/cats_csv/cats_csv.c +++ b/src/cats_csv/cats_csv.c @@ -27,7 +27,7 @@ #include "cats_csv.h" #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" struct cats_csv *csv_new(char *header_line, int32_t expected_fields) diff --git a/src/cats_ini/CMakeLists.txt b/src/cats_ini/CMakeLists.txt index 8d8eea0..8b03aec 100644 --- a/src/cats_ini/CMakeLists.txt +++ b/src/cats_ini/CMakeLists.txt @@ -18,4 +18,4 @@ target_sources(cats_ini set_property(TARGET cats_ini PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(cats_logging cats_memory cats_strings) +target_link_libraries(cats_logging cats_strings bdc) diff --git a/src/cats_strings/cats_strings.c b/src/cats_strings/cats_strings.c index cc3ebb7..4843f1b 100644 --- a/src/cats_strings/cats_strings.c +++ b/src/cats_strings/cats_strings.c @@ -25,7 +25,7 @@ #include <string.h> #include "cats_strings.h" #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" #include <assert.h> diff --git a/src/cats_strings/string_helpers.c b/src/cats_strings/string_helpers.c index 34f5239..eb6553f 100644 --- a/src/cats_strings/string_helpers.c +++ b/src/cats_strings/string_helpers.c @@ -25,7 +25,7 @@ #include <string.h> #include <ctype.h> #include <logging/logging.h> -#include <memory/cats_memory.h> +#include "bdc_memory/bdc_memory.h" bool string_is_emptyish(const char *string) diff --git a/src/cats_windows.h b/src/cats_windows.h index 9c28524..a9f8868 100644 --- a/src/cats_windows.h +++ b/src/cats_windows.h @@ -38,7 +38,7 @@ #define F_OK 0 #include <string.h> -#include <memory/cats_memory.h> +#include <bdc_memory/bdc_memory.h> static inline char *strndup(const char *s, size_t n) { diff --git a/src/logging/logging.c b/src/logging/logging.c index 38172c8..601a5e0 100644 --- a/src/logging/logging.c +++ b/src/logging/logging.c @@ -26,7 +26,7 @@ #include <stdarg.h> #include <stdlib.h> #include "logging.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "cats_time/cats_time.h" #include "misc/misc.h" diff --git a/src/memory/CMakeLists.txt b/src/memory/CMakeLists.txt deleted file mode 100644 index 2d42f3f..0000000 --- a/src/memory/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_library(cats_memory STATIC "" ../cats_defs.h ../cats_windows.h) - -target_sources(cats_memory - PRIVATE - cats_memory.c - raw_arrays.c - arrays.c - PUBLIC - cats_memory.h - raw_arrays.h - arrays.h - ) - -#target_include_directories(cats_memory PUBLIC "..") -set_property(TARGET cats_memory PROPERTY POSITION_INDEPENDENT_CODE ON) \ No newline at end of file diff --git a/src/memory/arrays.h b/src/memory/arrays.h deleted file mode 100644 index 3e6b70c..0000000 --- a/src/memory/arrays.h +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -// -// arrays.h -// -// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or (at -// your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// - -#ifndef CATS_ARRAYS_H -#define CATS_ARRAYS_H - -#include "data/cats_datatypes.h" -#include "raw_arrays.h" - -struct cats_2d_array_float { - float **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_char { - char **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_double { - double **data; - struct cats_dimension dimension; -}; - -struct cats_2d_array_char *new_2d_array_char(struct cats_dimension dimension); - -struct cats_2d_array_double *new_2d_array_double(struct cats_dimension dimension); - -struct cats_2d_array_float *new_2d_array_float(struct cats_dimension dimension); - -void cleanup_2d_array_char(struct cats_2d_array_char **grid); - -void cleanup_2d_array_float(struct cats_2d_array_float **grid); - -void cleanup_2d_array_double(struct cats_2d_array_double **grid); - -#define free_cats_grid(PTR_TO_GRID) _Generic((PTR_TO_GRID), \ - struct cats_2d_array_float **: cleanup_2d_array_float, \ - struct cats_2d_array_double **: cleanup_2d_array_double, \ - struct cats_2d_array_char **: cleanup_2d_array_char \ - )(PTR_TO_GRID) - - -void *new_raw_2d_array_from_dimension(struct cats_dimension dimension, size_t member_size); - -#endif //CATS_ARRAYS_H diff --git a/src/memory/cats_memory.h b/src/memory/cats_memory.h deleted file mode 100644 index dbe7ce9..0000000 --- a/src/memory/cats_memory.h +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -// -// cats_memory.h -// -// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or (at -// your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// - -#ifndef CATS_CATS_MEMORY_H -#define CATS_CATS_MEMORY_H - -#include <stddef.h> - -void *malloc_or_die_trace(size_t size, const char *func); - -void *realloc_or_die(void *ptr, size_t size); - -void *malloc_or_die(size_t size); - -void *calloc_or_die(size_t count, size_t size); - -#include <stddef.h> -#include "data/cats_datatypes.h" - -#endif //CATS_CATS_MEMORY_H diff --git a/src/modules/butterflies/butterflies_main.c b/src/modules/butterflies/butterflies_main.c index 35712a7..e8e0b29 100644 --- a/src/modules/butterflies/butterflies_main.c +++ b/src/modules/butterflies/butterflies_main.c @@ -63,13 +63,13 @@ void *butterfly_grid_init(__attribute__((unused)) struct cats_configuration *con struct grid_data_butterflies *data = malloc_or_die(sizeof(struct grid_data_butterflies)); log_message(LOG_INFO, "allocating data for generations"); - data->generations = new_raw_2d_array_from_dimension(grid->dimension, sizeof(float)); - data->info_layer = new_raw_2d_array_from_dimension(grid->dimension, sizeof(int32_t)); + data->generations = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(float)); + data->info_layer = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(int32_t)); log_message(LOG_INFO, "done allocating data for generations"); data->generation_current = 0; //struct conf_data_butterflies *conf_data = CATS_MODULE_DATA; - data->eggs = new_raw_2d_array_from_dimension(grid->dimension, sizeof(float)); + data->eggs = new_raw_2d_array_from_dimension(&grid->dimension, sizeof(float)); if (grid->param.parametrization != PARAM_HYBRID) { log_message(LOG_ERROR, "%s only works with hybrid parametrisation mode", module_name); diff --git a/src/modules/cats_test_module/register_module.c b/src/modules/cats_test_module/register_module.c index a4f47fa..8289752 100644 --- a/src/modules/cats_test_module/register_module.c +++ b/src/modules/cats_test_module/register_module.c @@ -21,7 +21,7 @@ #include "configuration/configuration.h" #include "cats_global.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "modules/load_module.h" #include "modules/module_header.h" #include "second_file.h" diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 7e0e75d..237b15d 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -9,5 +9,5 @@ add_executable(vital_rate_test vital_rate_test.c) add_executable(csv_test csv_test.c ) configure_file("test.csv" "test.csv") -target_link_libraries(vital_rate_test cmocka cats_logging cats_memory cats_strings cats_ini cats_csv libcats) -target_link_libraries(csv_test cmocka cats_strings cats_csv cats_strings cats_logging cats_memory) +target_link_libraries(vital_rate_test cmocka cats_logging bdc cats_strings cats_ini cats_csv libcats) +target_link_libraries(csv_test cmocka cats_strings cats_csv cats_strings cats_logging bdc) diff --git a/src/tests/csv_test.c b/src/tests/csv_test.c index 74ec635..1375ec1 100644 --- a/src/tests/csv_test.c +++ b/src/tests/csv_test.c @@ -23,11 +23,10 @@ #include <setjmp.h> #include <cmocka.h> #include <stdio.h> -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include "cats_strings/cats_strings.h" #include "cats_csv/cats_csv.h" -#include <unistd.h> -#include <limits.h> + struct csv_test { FILE *csv_file; diff --git a/src/tests/vital_rate_test.c b/src/tests/vital_rate_test.c index 1a0defe..1c6f98d 100644 --- a/src/tests/vital_rate_test.c +++ b/src/tests/vital_rate_test.c @@ -24,7 +24,7 @@ #include "inline_vital_rates.h" #include "vital_rates/setup_rates.h" #include "debug/debug_vital_rates.h" -#include "memory/cats_memory.h" +#include "bdc_memory/bdc_memory.h" #include <stddef.h> #include <stdarg.h> #include <setjmp.h> -- GitLab