diff --git a/acc/src/code_generator.c b/acc/src/code_generator.c index aab16eb..b0dcb13 100644 --- a/acc/src/code_generator.c +++ b/acc/src/code_generator.c @@ -731,29 +731,24 @@ external acdevicesynchronizestream fprintf(DSLHEADER, "typedef int Stream;\n\n"); // Reduction types + fprintf(DSLHEADER, "#define AC_FOR_RTYPES(FUNC)\\\n"); + fprintf(DSLHEADER, "FUNC(%s)\\\n", "RTYPE_MAX"); + fprintf(DSLHEADER, "FUNC(%s)\\\n", "RTYPE_MIN"); + fprintf(DSLHEADER, "FUNC(%s)\\\n", "RTYPE_RMS"); + fprintf(DSLHEADER, "FUNC(%s)\\\n", "RTYPE_RMS_EXP"); + fprintf(DSLHEADER, "FUNC(%s)\n", "RTYPE_SUM"); + size_t counter = 0; - fprintf(DSLHEADER, "#define RTYPE_MAX (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: RTYPE_MAX = %lu\n", counter); ++counter; - - fprintf(DSLHEADER, "#define RTYPE_MIN (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: RTYPE_MIN = %lu\n", counter); ++counter; - - fprintf(DSLHEADER, "#define RTYPE_RMS (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: RTYPE_RMS = %lu\n", counter); ++counter; - - fprintf(DSLHEADER, "#define RTYPE_RMS_EXP (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: RTYPE_RMS_EXP = %lu\n", counter); ++counter; - - fprintf(DSLHEADER, "#define RTYPE_SUM (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: RTYPE_SUM = %lu\n", counter); ++counter; - - fprintf(DSLHEADER, "typedef int ReductionType;\n"); - fprintf(DSLHEADER, "#define NUM_REDUCTION_TYPES (%lu)\n", counter); fprintf(FHEADER, "integer(c_int), parameter :: NUM_REDUCTION_TYPES = %lu\n", counter); // Fortran structs diff --git a/include/astaroth.h b/include/astaroth.h index 5eaa734..9b1a820 100644 --- a/include/astaroth.h +++ b/include/astaroth.h @@ -50,19 +50,12 @@ typedef struct { typedef enum { AC_SUCCESS = 0, AC_FAILURE = 1 } AcResult; -/* -// Deprecated, defined during code generation -typedef enum { - RTYPE_MAX, - RTYPE_MIN, - RTYPE_RMS, - RTYPE_RMS_EXP, - RTYPE_SUM, - NUM_REDUCTION_TYPES -} ReductionType; -*/ - #define AC_GEN_ID(X) X, +typedef enum { + AC_FOR_RTYPES(AC_GEN_ID) // + NUM_RTYPES +} ReductionType; + typedef enum { AC_FOR_USER_INT_PARAM_TYPES(AC_GEN_ID) // NUM_INT_PARAMS @@ -96,6 +89,7 @@ typedef enum { #define _UNUSED __attribute__((unused)) // Does not give a warning if unused #define AC_GEN_STR(X) #X, +static const char* rtype_names[] _UNUSED = {AC_FOR_RTYPES(AC_GEN_STR) "-end-"}; static const char* intparam_names[] _UNUSED = {AC_FOR_USER_INT_PARAM_TYPES(AC_GEN_STR) "-end-"}; static const char* int3param_names[] _UNUSED = {AC_FOR_USER_INT3_PARAM_TYPES(AC_GEN_STR) "-end-"}; static const char* realparam_names[] _UNUSED = {AC_FOR_USER_REAL_PARAM_TYPES(AC_GEN_STR) "-end-"};