Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10) id PAA05561 for mpi-bind-out; Thu, 25 Jun 1998 15:06:11 -0500 Received: from lsc.nd.edu (lsc.nd.edu [129.74.22.171]) by antares.mcs.anl.gov (8.6.10/8.6.10) with ESMTP id PAA05539 for ; Thu, 25 Jun 1998 15:05:20 -0500 Received: from localhost (jsquyres@localhost) by lsc.nd.edu (8.8.8/8.8.8) with SMTP id PAA14558; Thu, 25 Jun 1998 15:05:15 -0500 (EST) Date: Thu, 25 Jun 1998 15:05:15 -0500 (EST) From: Jeff Squyres To: mpi-bind@mcs.anl.gov cc: Michael Holzheu Subject: More from Michael Holzheu Message-ID: X-URL: http://www.cse.nd.edu/~jsquyres/ MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-mpi-core@mcs.anl.gov Precedence: bulk Here is Michael's latest questions, and my reply: > Thanks for your answer! I found the "complex"-class in the standard. > > I was asking after the "C" MPI_CPP_COMPLEX MPI-Datatype because there > exist e.g. Fortran Datatypes like MPI::F_COMPLEX in C++ for language > interoperability, too. If I understood this correctly we can e.g send a > Fortran-complex from a Fortran program to a C++ program, which must > interpret the received buffer in an adequate way. If this is correct, This is correct. More specifically, you can: Fortran program: CALL MPI_SEND(... MPI_COMPLEX ...) C++ prgraom: MPI::COMM_WORLD.Recv(... MPI::F_COMPLEX ...); and then the C++ program has to interpret the buffer appropriately (or pass it to a Fortran routine who can handle it natively), because you will have an instance of a Fortran COMPLEX type. > so why don't we have this for language interoperability between C and > C++ ? But perhaps I am totaly wrong in this point... ? No, I think that we just didn't put in a corresponding datatype in Fortran/C for the C++ complex type (since it is different than the Fortran complex type). So we have: C/Fortran bindings C++ bindings Fortran complex type: MPI_COMPLEX MPI::F_COMPLEX C++ complex type: -none- MPI::COMPLEX So you are correct in that we should have an "MPI_CPP_COMPLEX" type for the C/Fortran bindings. Unless anyone objects, we can put it on Steve's erratta list. > I have not understood the thing with the depreciated functions. For the > C++- bindings there do not exist the depreciated functions, don't they? Ah! You are correct -- Jeremy and I were wrong in our first reply to you. > I assume that "MPI::NULL_COPY_FN" and "MPI::DUP_FN" are of type " > MPI::Comm::Copy_attr_function" and "MPI::NULL_DELETE_FN" is of type > "MPI::Comm::Delete_attr_function". So this functions can't be used for > the depreciated C-call "MPI_Keyval_create()" either. In the C++ call > "MPI::Comm::Create_keyval()" we can use the "MPI::Comm:: NULL_COPY_FN" > etc. So why do we need the "MPI::NULL_COPY_FN" etc ? Actually, it looks like we deleted the typedefs (notice on 346:29 and 346:32 that it says that they are of type MPI::Copy_function and MPI::Delete_function, respectively, but those typedefs are not declared anywhere), but we forgot to delete the corresponding constants from 346:29 - 346:33. These constants do not exist in our C++ bindings implementation. This should also go on Steve's erratta list. {+} Jeff Squyres {+} squyres@cse.nd.edu {+} Perpetual Obsessive Notre Dame Student Craving Utter Madness {+} "I came to ND for 4 years and ended up staying for a decade"