Author: Jean-Sebastien Bevilacqua <reali...@gmail.com>
Branch: binary_enum
Changeset: r2911:5e9d6a26b6b1
Date: 2017-03-15 16:48 +0100
http://bitbucket.org/cffi/cffi/changeset/5e9d6a26b6b1/

Log:    Add operation support in enum

        With this patch, the following C code works now:

        ```c typedef enum VkPipelineCacheHeaderVersion {
        VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
        VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE =
        (VK_PIPELINE_CACHE_HEADER_VERSION_ONE -
        VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1), }
        VkPipelineCacheHeaderVersion; ```

diff --git a/cffi/cparser.py b/cffi/cparser.py
--- a/cffi/cparser.py
+++ b/cffi/cparser.py
@@ -803,6 +803,16 @@
                            "the actual array length in this context"
                            % exprnode.coord.line)
         #
+        if (isinstance(exprnode, pycparser.c_ast.BinaryOp) and
+                exprnode.op == '+'):
+            return (self._parse_constant(exprnode.left) +
+                    self._parse_constant(exprnode.right))
+        #
+        if (isinstance(exprnode, pycparser.c_ast.BinaryOp) and
+                exprnode.op == '-'):
+            return (self._parse_constant(exprnode.left) -
+                    self._parse_constant(exprnode.right))
+        #
         raise FFIError(":%d: unsupported expression: expected a "
                        "simple numeric constant" % exprnode.coord.line)
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to