[pypy-commit] cffi default: Accept "0x123" constants too.

arigo noreply at buildbot.pypy.org
Fri Aug 24 19:04:03 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r892:89436c37cc2f
Date: 2012-08-24 19:03 +0200
http://bitbucket.org/cffi/cffi/changeset/89436c37cc2f/

Log:	Accept "0x123" constants too.

diff --git a/cffi/cparser.py b/cffi/cparser.py
--- a/cffi/cparser.py
+++ b/cffi/cparser.py
@@ -417,7 +417,7 @@
         # for now, limited to expressions that are an immediate number
         # or negative number
         if isinstance(exprnode, pycparser.c_ast.Constant):
-            return int(exprnode.value)
+            return int(exprnode.value, 0)
         #
         if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and
                 exprnode.op == '-'):
diff --git a/testing/backend_tests.py b/testing/backend_tests.py
--- a/testing/backend_tests.py
+++ b/testing/backend_tests.py
@@ -880,6 +880,9 @@
         assert ffi.cast("enum bar", "A") != ffi.cast("int", 0)
         assert repr(ffi.cast("enum bar", "CC")) == "<cdata 'enum bar' 'CC'>"
         py.test.raises(ValueError, ffi.cast, "enum bar", "UNKNOWN")
+        ffi.cdef("enum baz { A=0x1000, B=0x2000 };")
+        assert int(ffi.cast("enum baz", "A")) == 0x1000
+        assert int(ffi.cast("enum baz", "B")) == 0x2000
 
     def test_enum_in_struct(self):
         ffi = FFI(backend=self.Backend())


More information about the pypy-commit mailing list