diff oct-py-types.h @ 337:d3d355dc44ad

Overhaul Python numeric type creation from Octave scalar types * oct-py-types.cc, oct-py-types.h (pytave::make_py_bool, pytave::make_py_complex, pytave::make_py_float, pytave::make_py_int): New functions to construct Python numeric types. (pytave::make_py_numeric_value): New function to construct the appropriate Python type for a given Octave scalar value. * octave_to_python.cc (pytave::octvalue_to_pyobj): Use make_py_numeric_value. (pytave::octscalar_to_pyobject, pytave::python_integer_value): Delete.
author Mike Miller <mtmiller@octave.org>
date Mon, 15 Aug 2016 21:53:16 -0700
parents c081e30c2f64
children 832ee1f14862
line wrap: on
line diff
--- a/oct-py-types.h	Mon Aug 15 16:14:38 2016 -0700
+++ b/oct-py-types.h	Mon Aug 15 21:53:16 2016 -0700
@@ -24,23 +24,49 @@
 #define pytave_oct_py_types_h 1
 
 #include <Python.h>
+#include <complex>
 #include <string>
 
 class Cell;
 class octave_scalar_map;
+class octave_value;
 
 namespace pytave
 {
 
 PyObject *
+make_py_bool (bool value);
+
+PyObject *
+make_py_complex (std::complex<double> value);
+
+PyObject *
+make_py_float (double value);
+
+PyObject *
 make_py_dict (const octave_scalar_map& map);
 
 int64_t
 extract_py_int64 (PyObject *obj);
 
 PyObject *
+make_py_int (int32_t value);
+
+PyObject *
+make_py_int (uint32_t value);
+
+PyObject *
+make_py_int (int64_t value);
+
+PyObject *
+make_py_int (uint64_t value);
+
+PyObject *
 make_py_list (const Cell& cell);
 
+PyObject *
+make_py_numeric_value (const octave_value& value);
+
 std::string
 extract_py_str (PyObject *obj);