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.
/* * 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$ */ /** @page page_mpi The src/mpi directory @section page_mpi_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. */