[pypy-commit] pypy cpyext-cleanup: Create write_header() function
rlamy
pypy.commits at gmail.com
Thu Jan 5 11:21:55 EST 2017
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: cpyext-cleanup
Changeset: r89380:4f9fc8a84053
Date: 2017-01-05 16:18 +0000
http://bitbucket.org/pypy/pypy/changeset/4f9fc8a84053/
Log: Create write_header() function
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -1178,6 +1178,18 @@
else:
raise ValueError("Error converting '%s'" % name)
+def write_header(header_name, decls):
+ lines = [
+ '#define Signed long /* xxx temporary fix */',
+ '#define Unsigned unsigned long /* xxx temporary fix */',
+ '',] + decls + [
+ '',
+ '#undef Signed /* xxx temporary fix */',
+ '#undef Unsigned /* xxx temporary fix */',
+ '']
+ decl_h = udir.join(header_name)
+ decl_h.write('\n'.join(lines))
+
def generate_decls_and_callbacks(db, prefix=''):
"NOT_RPYTHON"
pypy_macros = []
@@ -1204,22 +1216,12 @@
pypy_macros_h.write('\n'.join(pypy_macros))
# generate function decls
- decls = {}
- pypy_decls = decls[pypy_decl] = []
- pypy_decls.append('#define Signed long /* xxx temporary fix */\n')
- pypy_decls.append('#define Unsigned unsigned long /* xxx temporary fix */\n')
-
+ decls = defaultdict(list)
for decl in FORWARD_DECLS:
- pypy_decls.append("%s;" % (decl,))
+ decls[pypy_decl].append("%s;" % (decl,))
for header_name, header_functions in FUNCTIONS_BY_HEADER.iteritems():
- if header_name not in decls:
- header = decls[header_name] = []
- header.append('#define Signed long /* xxx temporary fix */\n')
- header.append('#define Unsigned unsigned long /* xxx temporary fix */\n')
- else:
- header = decls[header_name]
-
+ header = decls[header_name]
for name, func in sorted(header_functions.iteritems()):
_name = mangle_name(prefix, name)
header.append("#define %s %s" % (name, _name))
@@ -1236,14 +1238,8 @@
decls[header].append('#define %s %s' % (name, mangle_name(prefix, name)))
decls[header].append('PyAPI_DATA(%s) %s;' % (typ, name))
- for header_name in FUNCTIONS_BY_HEADER.keys():
- header = decls[header_name]
- header.append('#undef Signed /* xxx temporary fix */\n')
- header.append('#undef Unsigned /* xxx temporary fix */\n')
-
for header_name, header_decls in decls.iteritems():
- decl_h = udir.join(header_name)
- decl_h.write('\n'.join(header_decls))
+ write_header(header_name, header_decls)
separate_module_files = [source_dir / "varargwrapper.c",
source_dir / "pyerrors.c",
More information about the pypy-commit
mailing list