72bef32e65
use the STL. This is the first step in removing the STL from the C++ bindings (Solaris has 2 versions of the STL; if OMPI uses one and an MPI application wants to use another, Bad Things happen). The main idea is to wrap up the C++ callback function pointers and the user's extra_state into our own struct that is passed as the extra_state to the C keyval registration along with the intercept routines in intercepts.cc. When the C++ intercepts are activated, they unwrap the user's callback and extra state and call them. It got a little more complicated than that, however: * I realized that we were returning errors back from Comm::create_keyval() incorrectly, so I fixed that. * Instead of using STL maps to store associations, we now use an opal_list_t which has to be guaranteed to be initialized correctly and only once in a multi-threaded environment. * Because of whackyness in the C++ bindings, it is possible to call Comm::Create_keyval with C callbacks (!). If both registered callbacks are C functions, then ensure to avoid all the C++ machinery. This commit was SVN r17125. |
||
---|---|---|
.. | ||
attribute | ||
class | ||
communicator | ||
datatype | ||
debuggers | ||
errhandler | ||
etc | ||
file | ||
group | ||
include | ||
info | ||
mca | ||
mpi | ||
op | ||
peruse | ||
proc | ||
request | ||
runtime | ||
tools | ||
win | ||
Makefile.am | ||
README.dox |
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ /** @mainpage @section mainpage_introduction Introduction This is the introduction. This is the introduction. This is the introduction. This is the introduction. This is the introduction. This is the introduction. This is the introduction. @section main_install Installation This is the installation section. This is the installation section. This is the installation section. This is the installation section. This is the installation section. This is the installation section. This is the installation section. */