[pypy-commit] cffi binary_enum: Add operation support in enum
realitix
pypy.commits at gmail.com
Wed Mar 15 16:23:05 EDT 2017
Author: Jean-Sebastien Bevilacqua <realitix at 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)
More information about the pypy-commit
mailing list