Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/mpi/python.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/mpi/python.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,79 @@ +// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com> + +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Authors: Douglas Gregor +#ifndef BOOST_MPI_PYTHON_HPP +#define BOOST_MPI_PYTHON_HPP + +#include <boost/python/object.hpp> + +/** @file python.hpp + * + * This header interacts with the Python bindings for Boost.MPI. The + * routines in this header can be used to register user-defined and + * library-defined data types with Boost.MPI for efficient + * (de-)serialization and separate transmission of skeletons and + * content. + * + */ + +namespace boost { namespace mpi { namespace python { + +/** + * @brief Register the type T for direct serialization within Boost.MPI + * + * The @c register_serialized function registers a C++ type for direct + * serialization within Boost.MPI. Direct serialization elides the use + * of the Python @c pickle package when serializing Python objects + * that represent C++ values. Direct serialization can be beneficial + * both to improve serialization performance (Python pickling can be + * very inefficient) and to permit serialization for Python-wrapped + * C++ objects that do not support pickling. + * + * @param value A sample value of the type @c T. This may be used + * to compute the Python type associated with the C++ type @c T. + * + * @param type The Python type associated with the C++ type @c + * T. If not provided, it will be computed from the same value @p + * value. + */ +template<typename T> +void +register_serialized(const T& value = T(), PyTypeObject* type = 0); + +/** + * @brief Registers a type for use with the skeleton/content mechanism + * in Python. + * + * The skeleton/content mechanism can only be used from Python with + * C++ types that have previously been registered via a call to this + * function. Both the sender and the transmitter must register the + * type. It is permitted to call this function multiple times for the + * same type @c T, but only one call per process per type is + * required. The type @c T must be Serializable. + * + * @param value A sample object of type T that will be used to + * determine the Python type associated with T, if @p type is not + * specified. + * + * @param type The Python type associated with the C++ type @c + * T. If not provided, it will be computed from the same value @p + * value. + */ +template<typename T> +void +register_skeleton_and_content(const T& value = T(), PyTypeObject* type = 0); + +} } } // end namespace boost::mpi::python + +#ifndef BOOST_MPI_PYTHON_FORWARD_ONLY +# include <boost/mpi/python/serialize.hpp> +# include <boost/mpi/python/skeleton_and_content.hpp> +#else +# undef BOOST_MPI_PYTHON_FORWARD_ONLY +#endif + +#endif // BOOST_MPI_PYTHON_HPP