// Instantiate type cases for all available types -*-C++-*- // (C) 2001 Erik Schnetter // Usage: // Define the macro TYPECASE(N,T) to be a typecase for the type T with name N, // then include this file, // then undefine the macro TYPECASE. // Decide which types to typecase #ifdef CARPET_ALL # undef CARPET_BYTE # undef CARPET_INT # undef CARPET_REAL # undef CARPET_COMPLEX # define CARPET_BYTE # define CARPET_INT # define CARPET_REAL # define CARPET_COMPLEX #endif #ifdef CARPET_ALL_INT # undef CARPET_INT1 # undef CARPET_INT2 # undef CARPET_INT4 # undef CARPET_INT8 # define CARPET_INT1 # define CARPET_INT2 # define CARPET_INT4 # define CARPET_INT8 #endif #ifdef CARPET_ALL_REAL # undef CARPET_REAL4 # undef CARPET_REAL8 # undef CARPET_REAL16 # define CARPET_REAL4 # define CARPET_REAL8 # define CARPET_REAL16 #endif #ifdef CARPET_ALL_COMPLEX # undef CARPET_COMPLEX8 # undef CARPET_COMPLEX16 # undef CARPET_COMPLEX32 # define CARPET_COMPLEX8 # define CARPET_COMPLEX16 # define CARPET_COMPLEX32 #endif #if !defined(CARPET_BYTE) && !defined(CARPET_INT) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) // Assume the user just wants INT, REAL, and COMPLEX # undef CARPET_INT # define CARPET_INT # undef CARPET_REAL # define CARPET_REAL # undef CARPET_COMPLEX # define CARPET_COMPLEX #endif #ifdef CARPET_INT # ifdef CCTK_INTEGER_PRECISION_1 # undef CARPET_INT1 # define CARPET_INT1 # endif # ifdef CCTK_INTEGER_PRECISION_2 # undef CARPET_INT2 # define CARPET_INT2 # endif # ifdef CCTK_INTEGER_PRECISION_4 # undef CARPET_INT4 # define CARPET_INT4 # endif # ifdef CCTK_INTEGER_PRECISION_8 # undef CARPET_INT8 # define CARPET_INT8 # endif #endif #ifdef CARPET_REAL # ifdef CCTK_REAL_PRECISION_4 # undef CARPET_REAL4 # define CARPET_REAL4 # endif # ifdef CCTK_REAL_PRECISION_8 # undef CARPET_REAL8 # define CARPET_REAL8 # endif # ifdef CCTK_REAL_PRECISION_16 # undef CARPET_REAL16 # define CARPET_REAL16 # endif #endif #ifdef CARPET_COMPLEX # ifdef CCTK_REAL_PRECISION_4 # undef CARPET_COMPLEX8 # define CARPET_COMPLEX8 # endif # ifdef CCTK_REAL_PRECISION_8 # undef CARPET_COMPLEX16 # define CARPET_COMPLEX16 # endif # ifdef CCTK_REAL_PRECISION_16 # undef CARPET_COMPLEX32 # define CARPET_COMPLEX32 # endif #endif // // Check // #if !defined(CARPET_BYTE) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) // # error "You have not defined which grid function types to instantiate." // #endif // Typecase the desired types // TODO: Find a way to collapse e.g. CCTK_INT and CCTK_INT4, if both // are the same. Remember that the TYPECASE statements need not be // executable. Maybe find a way to convert CCTK_VARIABLE_INT to // CCTK_VARIABLE_INT4? #ifdef CARPET_BYTE TYPECASE(CCTK_VARIABLE_BYTE, CCTK_BYTE) #endif #ifdef CARPET_INT TYPECASE(CCTK_VARIABLE_INT, CCTK_INT) #endif #ifdef CARPET_INT1 # ifdef HAVE_CCTK_INT1 TYPECASE(CCTK_VARIABLE_INT1, CCTK_INT1) # endif #endif #ifdef CARPET_INT2 # ifdef HAVE_CCTK_INT2 TYPECASE(CCTK_VARIABLE_INT2, CCTK_INT2) # endif #endif #ifdef CARPET_INT4 # ifdef HAVE_CCTK_INT4 TYPECASE(CCTK_VARIABLE_INT4, CCTK_INT4) # endif #endif #ifdef CARPET_INT8 # ifdef HAVE_CCTK_INT8 TYPECASE(CCTK_VARIABLE_INT8, CCTK_INT8) # endif #endif #ifdef CARPET_REAL TYPECASE(CCTK_VARIABLE_REAL, CCTK_REAL) #endif #ifdef CARPET_REAL4 # ifdef HAVE_CCTK_REAL4 TYPECASE(CCTK_VARIABLE_REAL4, CCTK_REAL4) # endif #endif #ifdef CARPET_REAL8 # ifdef HAVE_CCTK_REAL8 TYPECASE(CCTK_VARIABLE_REAL8, CCTK_REAL8) # endif #endif #ifdef CARPET_REAL16 # ifdef HAVE_CCTK_REAL16 TYPECASE(CCTK_VARIABLE_REAL16, CCTK_REAL16) # endif #endif #ifdef CARPET_COMPLEX TYPECASE(CCTK_VARIABLE_COMPLEX, CCTK_COMPLEX) #endif #ifdef CARPET_COMPLEX8 # ifdef HAVE_CCTK_COMPLEX8 TYPECASE(CCTK_VARIABLE_COMPLEX8, CCTK_COMPLEX8) # endif #endif #ifdef CARPET_COMPLEX16 # ifdef HAVE_CCTK_COMPLEX16 TYPECASE(CCTK_VARIABLE_COMPLEX16, CCTK_COMPLEX16) # endif #endif #ifdef CARPET_COMPLEX32 # ifdef HAVE_CCTK_COMPLEX32 TYPECASE(CCTK_VARIABLE_COMPLEX32, CCTK_COMPLEX32) # endif #endif