summaryrefslogtreecommitdiff
path: root/cffi/cparser.py
diff options
context:
space:
mode:
authorJean-Sebastien Bevilacqua <realitix@gmail.com>2017-03-15 16:48:20 +0100
committerJean-Sebastien Bevilacqua <realitix@gmail.com>2017-03-15 16:48:20 +0100
commite32d65ffd23ea832ab8db6cf0f72839d7cde4a0a (patch)
tree9d6ba746e7fcaf27d90fe201dc2f78f1a1d82c9b /cffi/cparser.py
parent01bd5815e6f3eb8fb65c96028eb10f0972d92be4 (diff)
downloadcffi-e32d65ffd23ea832ab8db6cf0f72839d7cde4a0a.tar.gz
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; ```
Diffstat (limited to 'cffi/cparser.py')
-rw-r--r--cffi/cparser.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/cffi/cparser.py b/cffi/cparser.py
index 3d5caed..0c8ef3f 100644
--- a/cffi/cparser.py
+++ b/cffi/cparser.py
@@ -803,6 +803,16 @@ class Parser(object):
"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)