[pypy-commit] pypy rffi-parser-2: Move some logic from parse_source to CTypeSpace.__init__

rlamy pypy.commits at gmail.com
Mon Jan 16 10:32:49 EST 2017


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: rffi-parser-2
Changeset: r89609:f2837cdef16e
Date: 2017-01-16 15:18 +0000
http://bitbucket.org/pypy/pypy/changeset/f2837cdef16e/

Log:	Move some logic from parse_source to CTypeSpace.__init__

diff --git a/pypy/module/cpyext/cparser.py b/pypy/module/cpyext/cparser.py
--- a/pypy/module/cpyext/cparser.py
+++ b/pypy/module/cpyext/cparser.py
@@ -685,17 +685,21 @@
 
 
 class CTypeSpace(object):
-    def __init__(self, source, parser, definitions=None, macros=None, headers=None):
+    def __init__(self, source, parser=None, definitions=None, macros=None,
+                 headers=None, includes=None):
         self.source = source
         self.definitions = definitions if definitions is not None else {}
         self.macros = macros if macros is not None else {}
         self.structs = {}
-        self.ctx = parser
+        self.ctx = parser if parser else Parser()
         self.headers = headers if headers is not None else ['sys/types.h']
         self._Config = type('Config', (object,), {})
         self._TYPES = {}
         self.includes = []
         self.struct_typedefs = {}
+        if includes is not None:
+            for header in includes:
+                self.include(header)
 
     def include(self, other):
         self.ctx.include(other.ctx)
@@ -821,11 +825,7 @@
 
 
 def parse_source(source, includes=None, headers=None, configure_now=True):
-    ctx = Parser()
-    src = CTypeSpace(source, ctx, headers=headers)
-    if includes is not None:
-        for header in includes:
-            src.include(header)
-    ctx.parse(source)
+    src = CTypeSpace(source, headers=headers, includes=includes)
+    src.ctx.parse(source)
     src.configure_types()
     return src


More information about the pypy-commit mailing list