[pypy-commit] cffi cpy-extension: Generalize the conversions.
arigo
noreply at buildbot.pypy.org
Tue Jun 12 16:03:43 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: cpy-extension
Changeset: r288:c744188b2aae
Date: 2012-06-12 15:26 +0200
http://bitbucket.org/cffi/cffi/changeset/c744188b2aae/
Log: Generalize the conversions.
diff --git a/cffi/verifier.py b/cffi/verifier.py
--- a/cffi/verifier.py
+++ b/cffi/verifier.py
@@ -24,6 +24,11 @@
self.f = f
self.prnt("#include <Python.h>")
self.prnt()
+ self.prnt('#define _cffi_from_c_double PyFloat_FromDouble')
+ self.prnt('#define _cffi_to_c_double PyFloat_AsDouble')
+ self.prnt('#define _cffi_from_c_float PyFloat_FromDouble')
+ self.prnt('#define _cffi_to_c_float PyFloat_AsDouble')
+ self.prnt()
self.prnt(preamble)
self.prnt()
#
@@ -68,11 +73,23 @@
def generate_nothing(self, tp, name):
pass
+ # ----------
+
def convert_to_c(self, tp, fromvar, tovar, errcode):
- self.prnt(' %s = PyFloat_AsDouble(%s);' % (tovar, fromvar))
+ if isinstance(tp, model.PrimitiveType):
+ self.prnt(' %s = _cffi_to_c_%s(%s);' % (
+ tovar, tp.name.replace(' ', '_'), fromvar))
+ self.prnt(' if (%s == (%s)-1 && PyErr_Occurred())' % (
+ tovar, tp.name))
+ self.prnt(' %s;' % errcode)
+ else:
+ raise NotImplementedError(tp)
def get_converter_from_c(self, tp):
- return 'PyFloat_FromDouble'
+ if isinstance(tp, model.PrimitiveType):
+ return '_cffi_from_c_%s' % (tp.name.replace(' ', '_'),)
+ else:
+ raise NotImplementedError(tp)
# ----------
More information about the pypy-commit
mailing list