diff options
author | Eric Jones <eric@enthought.com> | 2002-02-13 08:28:22 +0000 |
---|---|---|
committer | Eric Jones <eric@enthought.com> | 2002-02-13 08:28:22 +0000 |
commit | 45819f94a39fe9c46678c09db406eb36c38170ac (patch) | |
tree | e8276a92d163a6d71697d97b12d1f2191eb01bc5 /weave/conversion_code.py | |
parent | fdb510696ec5874ce2630a24828f24197c3cffe9 (diff) | |
download | numpy-45819f94a39fe9c46678c09db406eb36c38170ac.tar.gz |
removed template code from use for scalar conversions. Template versions were moved into blitz support stuff because that is the only place they are utilized.
Diffstat (limited to 'weave/conversion_code.py')
-rwxr-xr-x | weave/conversion_code.py | 124 |
1 files changed, 1 insertions, 123 deletions
diff --git a/weave/conversion_code.py b/weave/conversion_code.py index adfdec67f..29c50d40e 100755 --- a/weave/conversion_code.py +++ b/weave/conversion_code.py @@ -255,7 +255,7 @@ PyObject* module_to_py(PyObject* module) ############################################################# # These non-templated version is now used for most scalar conversions. -non_template_scalar_support_code = \ +scalar_support_code = \ """ class scalar_handler @@ -335,125 +335,3 @@ scalar_handler x__scalar_handler = scalar_handler(); """ -# this code will not build with msvc... -# This is only used for blitz stuff now. The non-templated -# version, defined further down, is now used for most code. -scalar_support_code = \ -""" -// conversion routines - -template<class T> -static T convert_to_scalar(PyObject* py_obj,const char* name) -{ - //never used. - return (T) 0; -} -template<> -static int convert_to_scalar<int>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyInt_Check(py_obj)) - handle_conversion_error(py_obj,"int", name); - return (int) PyInt_AsLong(py_obj); -} - -template<> -static long convert_to_scalar<long>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyLong_Check(py_obj)) - handle_conversion_error(py_obj,"long", name); - return (long) PyLong_AsLong(py_obj); -} - -template<> -static double convert_to_scalar<double>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyFloat_Check(py_obj)) - handle_conversion_error(py_obj,"float", name); - return PyFloat_AsDouble(py_obj); -} - -template<> -static float convert_to_scalar<float>(PyObject* py_obj,const char* name) -{ - return (float) convert_to_scalar<double>(py_obj,name); -} - -// complex not checked. -template<> -static std::complex<float> convert_to_scalar<std::complex<float> >(PyObject* py_obj, - const char* name) -{ - if (!py_obj || !PyComplex_Check(py_obj)) - handle_conversion_error(py_obj,"complex", name); - return std::complex<float>((float) PyComplex_RealAsDouble(py_obj), - (float) PyComplex_ImagAsDouble(py_obj)); -} -template<> -static std::complex<double> convert_to_scalar<std::complex<double> >( - PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyComplex_Check(py_obj)) - handle_conversion_error(py_obj,"complex", name); - return std::complex<double>(PyComplex_RealAsDouble(py_obj), - PyComplex_ImagAsDouble(py_obj)); -} - -///////////////////////////////// -// standard translation routines - -template<class T> -static T py_to_scalar(PyObject* py_obj,const char* name) -{ - //never used. - return (T) 0; -} -template<> -static int py_to_scalar<int>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyInt_Check(py_obj)) - handle_bad_type(py_obj,"int", name); - return (int) PyInt_AsLong(py_obj); -} - -template<> -static long py_to_scalar<long>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyLong_Check(py_obj)) - handle_bad_type(py_obj,"long", name); - return (long) PyLong_AsLong(py_obj); -} - -template<> -static double py_to_scalar<double>(PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyFloat_Check(py_obj)) - handle_bad_type(py_obj,"float", name); - return PyFloat_AsDouble(py_obj); -} - -template<> -static float py_to_scalar<float>(PyObject* py_obj,const char* name) -{ - return (float) py_to_scalar<double>(py_obj,name); -} - -// complex not checked. -template<> -static std::complex<float> py_to_scalar<std::complex<float> >(PyObject* py_obj, - const char* name) -{ - if (!py_obj || !PyComplex_Check(py_obj)) - handle_bad_type(py_obj,"complex", name); - return std::complex<float>((float) PyComplex_RealAsDouble(py_obj), - (float) PyComplex_ImagAsDouble(py_obj)); -} -template<> -static std::complex<double> py_to_scalar<std::complex<double> >( - PyObject* py_obj,const char* name) -{ - if (!py_obj || !PyComplex_Check(py_obj)) - handle_bad_type(py_obj,"complex", name); - return std::complex<double>(PyComplex_RealAsDouble(py_obj), - PyComplex_ImagAsDouble(py_obj)); -} -""" |