- datatype_lookup = xbt_dynar_new(sizeof(MPI_Datatype), NULL);
- new_datatype(MPI_BYTE);
- new_datatype(MPI_CHAR);
- new_datatype(MPI_INT);
- new_datatype(MPI_INT);
- new_datatype(MPI_INT8_T);
- new_datatype(MPI_INT16_T);
- new_datatype(MPI_INT32_T);
- new_datatype(MPI_INT64_T);
- new_datatype(MPI_FLOAT);
- new_datatype(MPI_FLOAT);
- new_datatype(MPI_DOUBLE);
- new_datatype(MPI_DOUBLE);
- new_datatype(MPI_C_FLOAT_COMPLEX);
- new_datatype(MPI_C_DOUBLE_COMPLEX);
- new_datatype(MPI_2INT);
- new_datatype(MPI_UINT8_T);
- new_datatype(MPI_UINT16_T);
- new_datatype(MPI_UINT32_T);
- new_datatype(MPI_UINT64_T);
- new_datatype(MPI_2FLOAT);
- new_datatype(MPI_2DOUBLE);
-
-
- op_lookup = xbt_dynar_new(sizeof(MPI_Op), NULL);
- new_op(MPI_MIN);
- new_op(MPI_MAXLOC);
- new_op(MPI_MINLOC);
- new_op(MPI_SUM);
- new_op(MPI_PROD);
- new_op(MPI_LAND);
- new_op(MPI_LOR);
- new_op(MPI_LXOR);
- new_op(MPI_BAND);
- new_op(MPI_BOR);
- new_op(MPI_BXOR);
+static void smpi_init_fortran_types(){
+ if(!comm_lookup){
+ comm_lookup = xbt_dict_new_homogeneous(NULL);
+ smpi_comm_c2f(MPI_COMM_WORLD);
+ group_lookup = xbt_dict_new_homogeneous(NULL);
+ request_lookup = xbt_dict_new_homogeneous(NULL);
+ datatype_lookup = xbt_dict_new_homogeneous(NULL);
+ win_lookup = xbt_dict_new_homogeneous(NULL);
+ info_lookup = xbt_dict_new_homogeneous(NULL);
+ smpi_type_c2f(MPI_BYTE);
+ smpi_type_c2f(MPI_CHAR);
+ #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+ smpi_type_c2f(MPI_INT);
+ smpi_type_c2f(MPI_INT);
+ #else
+ smpi_type_c2f(MPI_LONG);
+ smpi_type_c2f(MPI_LONG);
+ #endif
+ smpi_type_c2f(MPI_INT8_T);
+ smpi_type_c2f(MPI_INT16_T);
+ smpi_type_c2f(MPI_INT32_T);
+ smpi_type_c2f(MPI_INT64_T);
+ smpi_type_c2f(MPI_FLOAT);
+ smpi_type_c2f(MPI_FLOAT);
+ smpi_type_c2f(MPI_DOUBLE);
+ smpi_type_c2f(MPI_DOUBLE);
+ smpi_type_c2f(MPI_C_FLOAT_COMPLEX);
+ smpi_type_c2f(MPI_C_DOUBLE_COMPLEX);
+ #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+ smpi_type_c2f(MPI_2INT);
+ #else
+ smpi_type_c2f(MPI_2LONG);
+ #endif
+ smpi_type_c2f(MPI_UINT8_T);
+ smpi_type_c2f(MPI_UINT16_T);
+ smpi_type_c2f(MPI_UINT32_T);
+ smpi_type_c2f(MPI_UINT64_T);
+ smpi_type_c2f(MPI_2FLOAT);
+ smpi_type_c2f(MPI_2DOUBLE);
+ smpi_type_c2f(MPI_DOUBLE);
+ smpi_type_c2f(MPI_DOUBLE);
+ smpi_type_c2f(MPI_INT);
+ smpi_type_c2f(MPI_DATATYPE_NULL);
+ smpi_type_c2f(MPI_DATATYPE_NULL);
+ smpi_type_c2f(MPI_DATATYPE_NULL);
+ smpi_type_c2f(MPI_DATATYPE_NULL);
+ op_lookup = xbt_dict_new_homogeneous(NULL);
+ smpi_op_c2f(MPI_MAX);
+ smpi_op_c2f(MPI_MIN);
+ smpi_op_c2f(MPI_MAXLOC);
+ smpi_op_c2f(MPI_MINLOC);
+ smpi_op_c2f(MPI_SUM);
+ smpi_op_c2f(MPI_PROD);
+ smpi_op_c2f(MPI_LAND);
+ smpi_op_c2f(MPI_LOR);
+ smpi_op_c2f(MPI_LXOR);
+ smpi_op_c2f(MPI_BAND);
+ smpi_op_c2f(MPI_BOR);
+ smpi_op_c2f(MPI_BXOR);