From 60b19dcf63376c61bcd7e8a89f227981f2f18cf6 Mon Sep 17 00:00:00 2001 From: Jeff Squyres Date: Mon, 7 Nov 2005 14:42:46 +0000 Subject: [PATCH] Add missing functions for MPI_LONG_LONG, MPI_LONG_LONG_INT, and MPI_UNSIGNED_LONG_LONG. This commit was SVN r8010. --- ompi/op/op.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/ompi/op/op.c b/ompi/op/op.c index 2ae9b67b60..d169973588 100644 --- a/ompi/op/op.c +++ b/ompi/op/op.c @@ -53,24 +53,48 @@ OBJ_CLASS_INSTANCE(ompi_op_t, opal_object_t, /* * Helpful defines, because there's soooo many names! + * + * **NOTE** These #define's are strictly ordered! A series of macros + * are built up to assemble a list of function names (or NULLs) that + * are put into the intrinsict ompi_op_t's in the middle of this + * file. The order of these function names is critical, and must be + * the same as the OMPI_OP_TYPE_* enums in op.h (i.e., the enum's + * starting with OMPI_OP_TYPE_INT -- at the time of this writing, + * this is op.h:78). */ /** C integer ***********************************************************/ +#ifdef HAVE_LONG_LONG +#define C_INTEGER_LONG_LONG(name) \ + { ompi_mpi_op_##name##_long_long }, /* OMPI_OP_TYPE_LONG_LONG */ \ + { ompi_mpi_op_##name##_long_long_int }, /* OMPI_OP_TYPE_LONG_LONG_INT */ \ + { ompi_mpi_op_##name##_unsigned_long_long } /* OMPI_OP_TYPE_UNSIGNED_LONG_LONG */ +#else +#define C_INTEGER_LONG_LONG(name) \ + { NULL }, /* OMPI_OP_TYPE_LONG_LONG */ \ + { NULL }, /* OMPI_OP_TYPE_LONG_LONG_INT */ \ + { NULL } /* OMPI_OP_TYPE_UNSIGNED_LONG_LONG */ +#endif + #define C_INTEGER(name) \ { ompi_mpi_op_##name##_int }, /* OMPI_OP_TYPE_INT */ \ { ompi_mpi_op_##name##_long }, /* OMPI_OP_TYPE_LONG */ \ { ompi_mpi_op_##name##_short }, /* OMPI_OP_TYPE_SHORT */ \ { ompi_mpi_op_##name##_unsigned_short }, /* OMPI_OP_TYPE_UNSIGNED_SHORT */ \ { ompi_mpi_op_##name##_unsigned }, /* OMPI_OP_TYPE_UNSIGNED */ \ - { ompi_mpi_op_##name##_unsigned_long } /* OMPI_OP_TYPE_UNSIGNED_LONG */ + { ompi_mpi_op_##name##_unsigned_long }, /* OMPI_OP_TYPE_UNSIGNED_LONG */ \ + C_INTEGER_LONG_LONG(name) #define C_INTEGER_NULL \ { NULL }, /* OMPI_OP_TYPE_INT */ \ { NULL }, /* OMPI_OP_TYPE_LONG */ \ { NULL }, /* OMPI_OP_TYPE_SHORT */ \ { NULL }, /* OMPI_OP_TYPE_UNSIGNED_SHORT */ \ { NULL }, /* OMPI_OP_TYPE_UNSIGNED */ \ - { NULL } /* OMPI_OP_TYPE_UNSIGNED_LONG */ + { NULL }, /* OMPI_OP_TYPE_UNSIGNED_LONG */ \ + { NULL }, /* OMPI_OP_TYPE_LONG_LONG */ \ + { NULL }, /* OMPI_OP_TYPE_LONG_LONG_ING */ \ + { NULL } /* OMPI_OP_TYPE_UNSIGNED_LONG_LONG */ /** All the Fortran integers ********************************************/