mirror of
https://github.com/boostorg/histogram.git
synced 2026-01-30 07:52:11 +00:00
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
// Copyright 2015-2016 Hans Dembinski
|
|
//
|
|
// Distributed under 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)
|
|
|
|
#include <boost/python/module.hpp>
|
|
#include <boost/python/scope.hpp>
|
|
#include <boost/python/object.hpp>
|
|
#ifdef HAVE_NUMPY
|
|
#define PY_ARRAY_UNIQUE_SYMBOL boost_histogram_ARRAY_API
|
|
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
|
|
extern "C" {
|
|
#include <numpy/arrayobject.h>
|
|
#if PY_MAJOR_VERSION >= 3
|
|
static void *init_numpy() {
|
|
import_array();
|
|
return NULL;
|
|
}
|
|
#else
|
|
static void init_numpy() { import_array(); }
|
|
#endif
|
|
}
|
|
#endif
|
|
|
|
namespace boost {
|
|
namespace histogram {
|
|
void register_axis_types();
|
|
void register_histogram();
|
|
}
|
|
}
|
|
|
|
BOOST_PYTHON_MODULE(histogram) {
|
|
#ifdef HAVE_NUMPY
|
|
init_numpy();
|
|
#endif
|
|
using namespace boost::python;
|
|
scope current;
|
|
object axis_module = object(
|
|
borrowed(PyImport_AddModule("histogram.axis"))
|
|
);
|
|
current.attr("axis") = axis_module;
|
|
{
|
|
scope current = axis_module;
|
|
boost::histogram::register_axis_types();
|
|
}
|
|
boost::histogram::register_histogram();
|
|
}
|