! $Id: overload.macro,v 1.5 2010-03-30 18:10:53 atrayano Exp $ #ifdef TYPE_ #undef TYPE_ #endif #ifdef MPITYPE_ #undef MPITYPE_ #endif #ifdef TYPEKIND_ #undef TYPEKIND_ #endif #ifdef SUB_ #undef SUB_ #endif #ifdef SUB__ #undef SUB__ #endif #ifdef SUB___ #undef SUB___ #endif #ifdef EKIND_ #undef EKIND_ #endif #ifdef EKIND__ #undef EKIND__ #endif #ifdef EKIND___ #undef EKIND___ #endif #if (VARTYPE_ == 0) #define MPITYPE_ MPI_BYTE #define TYPEKIND_ STRING #elif (VARTYPE_ == 1) #define MPITYPE_ MPI_INTEGER #define TYPE_ INTEGER #define TYPEKIND_ I4 #elif (VARTYPE_ == 2) #define MPITYPE_ MPI_LOGICAL #define TYPE_ LOGICAL #define TYPEKIND_ L4 #elif (VARTYPE_ == 3) #define MPITYPE_ MPI_REAL #define TYPE_ REAL #define TYPEKIND_ R4 #elif (VARTYPE_ == 4) #define MPITYPE_ MPI_DOUBLE_PRECISION #define TYPE_ REAL #define TYPEKIND_ R8 #endif #define TKR_ FOO__(TYPEKIND_,RANK_) #define FOO__(A,B) FOO___(A,B) #define FOO___(A,B) A ## _ ## B #define SUB_ SUB__(NAME_,TYPEKIND_,RANK_) #define SUB__(N, A,B) SUB___(N, A,B) #define SUB___(N,A,B) N ## A ## _ ## B #define EKIND_ EKIND__(TYPEKIND_) #define EKIND__(A) EKIND___(A) #define EKIND___(A) ESMF_KIND_ ## A #define SUBNAME_(A) #A #define SUBNAME__(A) SUBNAME_(A) #if (RANK_ == 0) #define DIMENSIONS_ #endif #if (RANK_ == 1) #define DIMENSIONS_ (:) #endif #if (RANK_ == 2) #define DIMENSIONS_ (:,:) #endif #if (RANK_ == 3) #define DIMENSIONS_ (:,:,:) #endif #if (RANK_ == 4) #define DIMENSIONS_ (:,:,:,:) #endif