[mpich2-commits] r4138 - mpich2/trunk/src/mpi/datatype
goodell at mcs.anl.gov
goodell at mcs.anl.gov
Thu Mar 19 21:47:36 CDT 2009
Author: goodell
Date: 2009-03-19 21:47:35 -0500 (Thu, 19 Mar 2009)
New Revision: 4138
Modified:
mpich2/trunk/src/mpi/datatype/type_get_name.c
Log:
Refactor the MPI_Type_get_name implementation slightly.
This should reduce the chances of a copy-paste bug creeping in to the code.
No reviewer.
Modified: mpich2/trunk/src/mpi/datatype/type_get_name.c
===================================================================
--- mpich2/trunk/src/mpi/datatype/type_get_name.c 2009-03-20 02:47:27 UTC (rev 4137)
+++ mpich2/trunk/src/mpi/datatype/type_get_name.c 2009-03-20 02:47:35 UTC (rev 4138)
@@ -33,75 +33,78 @@
typedef struct mpi_names_t { MPI_Datatype dtype; const char *name; } mpi_names_t;
/* The MPI standard specifies that the names must be the MPI names,
not the related language names (e.g., MPI_CHAR, not char) */
+#define type_name_entry(x_) { x_, MPIU_QUOTE(x_) }
static mpi_names_t mpi_names[] = {
- { MPI_CHAR, "MPI_CHAR" },
- { MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR" },
- { MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR" },
- { MPI_BYTE, "MPI_BYTE" },
- { MPI_WCHAR, "MPI_WCHAR" },
- { MPI_SHORT, "MPI_SHORT" },
- { MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT" },
- { MPI_INT, "MPI_INT" },
- { MPI_UNSIGNED, "MPI_UNSIGNED" },
- { MPI_LONG, "MPI_LONG" },
- { MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG" },
- { MPI_FLOAT, "MPI_FLOAT" },
- { MPI_DOUBLE, "MPI_DOUBLE" },
- { MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE" },
+ type_name_entry(MPI_CHAR),
+ type_name_entry(MPI_SIGNED_CHAR),
+ type_name_entry(MPI_UNSIGNED_CHAR),
+ type_name_entry(MPI_BYTE),
+ type_name_entry(MPI_WCHAR),
+ type_name_entry(MPI_SHORT),
+ type_name_entry(MPI_UNSIGNED_SHORT),
+ type_name_entry(MPI_INT),
+ type_name_entry(MPI_UNSIGNED),
+ type_name_entry(MPI_LONG),
+ type_name_entry(MPI_UNSIGNED_LONG),
+ type_name_entry(MPI_FLOAT),
+ type_name_entry(MPI_DOUBLE),
+ type_name_entry(MPI_LONG_DOUBLE),
/* LONG_LONG_INT is allowed as an alias; we don't make it a separate
type */
-/* { MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT" }, */
- { MPI_LONG_LONG, "MPI_LONG_LONG" },
- { MPI_UNSIGNED_LONG_LONG, "MPI_UNSIGNED_LONG_LONG" },
- { MPI_PACKED, "MPI_PACKED" },
- { MPI_LB, "MPI_LB" },
- { MPI_UB, "MPI_UB" },
+/* type_name_entry(MPI_LONG_LONG_INT), */
+ type_name_entry(MPI_LONG_LONG),
+ type_name_entry(MPI_UNSIGNED_LONG_LONG),
+ type_name_entry(MPI_PACKED),
+ type_name_entry(MPI_LB),
+ type_name_entry(MPI_UB),
-/* The maxloc/minloc types are not builtin because they're size and
+/* The maxloc/minloc types are not builtin because their size and
extent may not be the same. */
/*
- { MPI_FLOAT_INT, "MPI_FLOAT_INT" },
- { MPI_DOUBLE_INT, "MPI_DOUBLE_INT" },
- { MPI_LONG_INT, "MPI_LONG_INT" },
- { MPI_SHORT_INT, "MPI_SHORT_INT" },
+ type_name_entry(MPI_FLOAT_INT),
+ type_name_entry(MPI_DOUBLE_INT),
+ type_name_entry(MPI_LONG_INT),
+ type_name_entry(MPI_SHORT_INT),
*/
/* Fortran */
- { MPI_COMPLEX, "MPI_COMPLEX" },
- { MPI_DOUBLE_COMPLEX, "MPI_DOUBLE_COMPLEX" },
- { MPI_LOGICAL, "MPI_LOGICAL" },
- { MPI_REAL, "MPI_REAL" },
- { MPI_DOUBLE_PRECISION, "MPI_DOUBLE_PRECISION" },
- { MPI_INTEGER, "MPI_INTEGER" },
- { MPI_2INTEGER, "MPI_2INTEGER" },
- { MPI_2COMPLEX, "MPI_2COMPLEX" },
- { MPI_2DOUBLE_COMPLEX, "MPI_2DOUBLE_COMPLEX" },
- { MPI_2REAL, "MPI_2REAL" },
- { MPI_2DOUBLE_PRECISION, "MPI_2DOUBLE_PRECISION" },
- { MPI_CHARACTER, "MPI_CHARACTER" },
+ type_name_entry(MPI_COMPLEX),
+ type_name_entry(MPI_DOUBLE_COMPLEX),
+ type_name_entry(MPI_LOGICAL),
+ type_name_entry(MPI_REAL),
+ type_name_entry(MPI_DOUBLE_PRECISION),
+ type_name_entry(MPI_INTEGER),
+ type_name_entry(MPI_2INTEGER),
+ type_name_entry(MPI_2COMPLEX),
+ type_name_entry(MPI_2DOUBLE_COMPLEX),
+ type_name_entry(MPI_2REAL),
+ type_name_entry(MPI_2DOUBLE_PRECISION),
+ type_name_entry(MPI_CHARACTER),
/* Size-specific types (C, Fortran, and C++) */
- { MPI_REAL4, "MPI_REAL4" },
- { MPI_REAL8, "MPI_REAL8" },
- { MPI_REAL16, "MPI_REAL16" },
- { MPI_COMPLEX8, "MPI_COMPLEX8" },
- { MPI_COMPLEX16, "MPI_COMPLEX16" },
- { MPI_COMPLEX32, "MPI_COMPLEX32" },
- { MPI_INTEGER1, "MPI_INTEGER1" },
- { MPI_INTEGER2, "MPI_INTEGER2" },
- { MPI_INTEGER4, "MPI_INTEGER4" },
- { MPI_INTEGER8, "MPI_INTEGER8" },
- { MPI_INTEGER16, "MPI_INTEGER16" },
- { 0, (char *) 0 }, /* Sentinal used to indicate the last element */
+ type_name_entry(MPI_REAL4),
+ type_name_entry(MPI_REAL8),
+ type_name_entry(MPI_REAL16),
+ type_name_entry(MPI_COMPLEX8),
+ type_name_entry(MPI_COMPLEX16),
+ type_name_entry(MPI_COMPLEX32),
+ type_name_entry(MPI_INTEGER1),
+ type_name_entry(MPI_INTEGER2),
+ type_name_entry(MPI_INTEGER4),
+ type_name_entry(MPI_INTEGER8),
+ type_name_entry(MPI_INTEGER16),
+
+ { 0, (char *) 0 }, /* Sentinel used to indicate the last element */
};
static mpi_names_t mpi_maxloc_names[] = {
- { MPI_FLOAT_INT, "MPI_FLOAT_INT" },
- { MPI_DOUBLE_INT, "MPI_DOUBLE_INT" },
- { MPI_LONG_INT, "MPI_LONG_INT" },
- { MPI_SHORT_INT, "MPI_SHORT_INT" },
- { MPI_2INT, "MPI_2INT" },
- { MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT" },
- { 0, (char *) 0 }, /* Sentinal used to indicate the last element */
+ type_name_entry(MPI_FLOAT_INT),
+ type_name_entry(MPI_DOUBLE_INT),
+ type_name_entry(MPI_LONG_INT),
+ type_name_entry(MPI_SHORT_INT),
+ type_name_entry(MPI_2INT),
+ type_name_entry(MPI_LONG_DOUBLE_INT),
+ { 0, (char *) 0 }, /* Sentinel used to indicate the last element */
};
+#undef type_name_entry
/* This routine is also needed by type_set_name */
int MPIR_Datatype_init_names(void)
More information about the mpich2-commits
mailing list