diff options
author | Jean-Sebastien Bevilacqua <realitix@gmail.com> | 2017-03-15 16:48:20 +0100 |
---|---|---|
committer | Jean-Sebastien Bevilacqua <realitix@gmail.com> | 2017-03-15 16:48:20 +0100 |
commit | e32d65ffd23ea832ab8db6cf0f72839d7cde4a0a (patch) | |
tree | 9d6ba746e7fcaf27d90fe201dc2f78f1a1d82c9b /cffi/cparser.py | |
parent | 01bd5815e6f3eb8fb65c96028eb10f0972d92be4 (diff) | |
download | cffi-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.py | 10 |
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) |