// Instantiate templates for all available types -*-C++-*- // (C) 2001 Erik Schnetter // Usage: // Define the macro INSTANTIATE(T) to instantiate for the type T, // then include this file, // then undefine the macro INSTANTIATE. // Decide which types to instantiate #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 // Instantiate the desired types #ifdef CARPET_BYTE INSTANTIATE(CCTK_BYTE) #endif #ifdef CARPET_INT1 # ifdef HAVE_CCTK_INT1 INSTANTIATE(CCTK_INT1) # endif #endif #ifdef CARPET_INT2 # ifdef HAVE_CCTK_INT2 INSTANTIATE(CCTK_INT2) # endif #endif #ifdef CARPET_INT4 # ifdef HAVE_CCTK_INT4 INSTANTIATE(CCTK_INT4) # endif #endif #ifdef CARPET_INT8 # ifdef HAVE_CCTK_INT8 INSTANTIATE(CCTK_INT8) # endif #endif #ifdef CARPET_REAL4 # ifdef HAVE_CCTK_REAL4 INSTANTIATE(CCTK_REAL4) # endif #endif #ifdef CARPET_REAL8 # ifdef HAVE_CCTK_REAL8 INSTANTIATE(CCTK_REAL8) # endif #endif #ifdef CARPET_REAL16 # ifdef HAVE_CCTK_REAL16 INSTANTIATE(CCTK_REAL16) # endif #endif #ifdef CARPET_COMPLEX8 # ifdef HAVE_CCTK_COMPLEX8 INSTANTIATE(CCTK_COMPLEX8) # endif #endif #ifdef CARPET_COMPLEX16 # ifdef HAVE_CCTK_COMPLEX16 INSTANTIATE(CCTK_COMPLEX16) # endif #endif #ifdef CARPET_COMPLEX32 # ifdef HAVE_CCTK_COMPLEX32 INSTANTIATE(CCTK_COMPLEX32) # endif #endif