This source file includes following definitions.
- ompi_type_match_size_f
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 #include "ompi_config.h"
  24 
  25 #include "ompi/mpi/fortran/mpif-h/bindings.h"
  26 #include "ompi/mpi/fortran/base/constants.h"
  27 #include "ompi/datatype/ompi_datatype.h"
  28 #include "ompi/datatype/ompi_datatype_internal.h"
  29 #include "ompi/errhandler/errhandler.h"
  30 #include "ompi/communicator/communicator.h"
  31 #include "ompi/runtime/params.h"
  32 
  33 #if OMPI_BUILD_MPI_PROFILING
  34 #if OPAL_HAVE_WEAK_SYMBOLS
  35 #pragma weak PMPI_TYPE_MATCH_SIZE = ompi_type_match_size_f
  36 #pragma weak pmpi_type_match_size = ompi_type_match_size_f
  37 #pragma weak pmpi_type_match_size_ = ompi_type_match_size_f
  38 #pragma weak pmpi_type_match_size__ = ompi_type_match_size_f
  39 
  40 #pragma weak PMPI_Type_match_size_f = ompi_type_match_size_f
  41 #pragma weak PMPI_Type_match_size_f08 = ompi_type_match_size_f
  42 #else
  43 OMPI_GENERATE_F77_BINDINGS (PMPI_TYPE_MATCH_SIZE,
  44                            pmpi_type_match_size,
  45                            pmpi_type_match_size_,
  46                            pmpi_type_match_size__,
  47                            pompi_type_match_size_f,
  48                            (MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr),
  49                            (typeclass, size, type, ierr) )
  50 #endif
  51 #endif
  52 
  53 #if OPAL_HAVE_WEAK_SYMBOLS
  54 #pragma weak MPI_TYPE_MATCH_SIZE = ompi_type_match_size_f
  55 #pragma weak mpi_type_match_size = ompi_type_match_size_f
  56 #pragma weak mpi_type_match_size_ = ompi_type_match_size_f
  57 #pragma weak mpi_type_match_size__ = ompi_type_match_size_f
  58 
  59 #pragma weak MPI_Type_match_size_f = ompi_type_match_size_f
  60 #pragma weak MPI_Type_match_size_f08 = ompi_type_match_size_f
  61 #else
  62 #if ! OMPI_BUILD_MPI_PROFILING
  63 OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_MATCH_SIZE,
  64                            mpi_type_match_size,
  65                            mpi_type_match_size_,
  66                            mpi_type_match_size__,
  67                            ompi_type_match_size_f,
  68                            (MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr),
  69                            (typeclass, size, type, ierr) )
  70 #else
  71 #define ompi_type_match_size_f pompi_type_match_size_f
  72 #endif
  73 #endif
  74 
  75 static const char FUNC_NAME[] = "MPI_Type_match_size_f";
  76 
  77 
  78 
  79 
  80 void ompi_type_match_size_f(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr)
  81 {
  82     int c_ierr;
  83     MPI_Datatype c_type;
  84     int c_size = OMPI_FINT_2_INT( *size );
  85 
  86     if (MPI_PARAM_CHECK) {
  87         OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
  88     }
  89 
  90     switch( OMPI_FINT_2_INT(*typeclass) ) {
  91     case MPI_TYPECLASS_REAL:
  92         c_type = (MPI_Datatype)ompi_datatype_match_size( c_size, OMPI_DATATYPE_FLAG_DATA_FLOAT, OMPI_DATATYPE_FLAG_DATA_FORTRAN );
  93         break;
  94     case MPI_TYPECLASS_INTEGER:
  95         c_type = (MPI_Datatype)ompi_datatype_match_size( c_size, OMPI_DATATYPE_FLAG_DATA_INT, OMPI_DATATYPE_FLAG_DATA_FORTRAN );
  96         break;
  97     case MPI_TYPECLASS_COMPLEX:
  98         c_type = (MPI_Datatype)ompi_datatype_match_size( c_size, OMPI_DATATYPE_FLAG_DATA_COMPLEX, OMPI_DATATYPE_FLAG_DATA_FORTRAN );
  99         break;
 100     default:
 101         c_type = &ompi_mpi_datatype_null.dt;
 102     }
 103     *type = PMPI_Type_c2f( c_type );
 104     if ( c_type != &ompi_mpi_datatype_null.dt ) {
 105         c_ierr = MPI_SUCCESS;
 106     } else {
 107         c_ierr = MPI_ERR_ARG;
 108         (void)OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME);
 109     }
 110     if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
 111 }