[oe] [meta-oe][PATCH 1/2] sip: Update to 4.19.13.

Philip Balister philip at balister.org
Thu Oct 4 16:43:22 UTC 2018


 * Deleted patch is in new version.

Signed-off-by: Philip Balister <philip at balister.org>
---
 meta-oe/recipes-devtools/sip/files/sip.patch       | 31331 -------------------
 .../sip/{sip_4.19.12.bb => sip_4.19.13.bb}         |     5 +-
 2 files changed, 2 insertions(+), 31334 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/sip/files/sip.patch
 rename meta-oe/recipes-devtools/sip/{sip_4.19.12.bb => sip_4.19.13.bb} (89%)

diff --git a/meta-oe/recipes-devtools/sip/files/sip.patch b/meta-oe/recipes-devtools/sip/files/sip.patch
deleted file mode 100644
index c126beee7..000000000
--- a/meta-oe/recipes-devtools/sip/files/sip.patch
+++ /dev/null
@@ -1,31331 +0,0 @@
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/build.py sip/build.py
---- ./sip-4.19.12.orig/build.py	1969-12-31 19:00:00.000000000 -0500
-+++ sip/build.py	2018-09-18 17:52:23.269544132 -0400
-@@ -0,0 +1,131 @@
-+#!/usr/bin/python
-+
-+# Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
-+#
-+# This file is part of SIP.
-+#
-+# This copy of SIP is licensed for use under the terms of the SIP License
-+# Agreement.  See the file LICENSE for more details.
-+#
-+# This copy of SIP may also used under the terms of the GNU General Public
-+# License v2 or v3 as published by the Free Software Foundation which can be
-+# found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
-+#
-+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+
-+
-+"""This script prepares a repository copy of SIP for building.  It should be
-+run from a Mercurial repository.  It is not part of a packaged release.
-+"""
-+
-+
-+import os
-+import sys
-+
-+
-+# Dummy version numbers.
-+RM_HEXVERSION = '04ffff'
-+RM_RELEASE = '4.255.255'
-+
-+
-+def _progress(message, quiet):
-+    """ Show a progress message to the user. """
-+
-+    if not quiet:
-+        sys.stdout.write(message)
-+        sys.stdout.write("\n")
-+
-+
-+def _patch(name, quiet):
-+    """ Patch a file with version information. """
-+
-+    _progress("Creating %s" % name, quiet)
-+
-+    patched_f = open(name + '.in')
-+    patched = patched_f.read()
-+    patched_f.close()
-+
-+    patched = patched.replace('@RM_HEXVERSION@', RM_HEXVERSION)
-+    patched = patched.replace('@RM_RELEASE@', RM_RELEASE)
-+
-+    patched_f = open(name, 'w')
-+    patched_f.write(patched)
-+    patched_f.close()
-+
-+
-+def prepare(quiet):
-+    """ Prepare for configuration and building by creating all the required
-+    additional files.
-+    """
-+
-+    sipgen = 'sipgen'
-+    metasrc = os.path.join(sipgen, 'metasrc')
-+
-+    lexer_l = os.path.join(metasrc, 'lexer.l')
-+    lexer_c = os.path.join(sipgen, 'lexer.c')
-+    _progress("Running flex to create %s" % lexer_c, quiet)
-+    os.system('flex -o%s %s' % (lexer_c, lexer_l))
-+
-+    parser_y = os.path.join(metasrc, 'parser.y')
-+    parser_c = os.path.join(sipgen, 'parser.c')
-+    _progress("Running bison to create %s" % parser_c, quiet)
-+    os.system('bison -y -d -o %s %s' % (parser_c, parser_y))
-+
-+    _patch(os.path.join('sipgen', 'sip.h'), quiet)
-+    _patch(os.path.join('siplib', 'sip.h'), quiet)
-+    _patch('configure.py', quiet)
-+
-+
-+if __name__ == '__main__':
-+
-+    def _prepare(options):
-+        """prepare for configuration and building"""
-+
-+        prepare(options.quiet)
-+
-+
-+    actions = (_prepare, )
-+
-+    import optparse
-+
-+    class MyParser(optparse.OptionParser):
-+
-+        def get_usage(self):
-+            """ Reimplemented to add the description of the actions.  We don't
-+            use the description because the default formatter strips newlines.
-+            """
-+
-+            usage = optparse.OptionParser.get_usage(self)
-+
-+            usage += "\n" + __doc__ + "\nActions:\n"
-+
-+            for action in actions:
-+                usage += "  %-9s  %s\n" % (action.__name__[1:], action.__doc__)
-+
-+            return usage
-+
-+
-+    action_names = [action.__name__[1:] for action in actions]
-+
-+    parser = MyParser(
-+            usage="%%prog [options] %s" % '|'.join(action_names))
-+
-+    parser.add_option("-q", "--quiet", action='store_true', default=False,
-+            dest='quiet', help="suppress progress messages")
-+
-+    options, args = parser.parse_args()
-+
-+    if len(args) != 1:
-+        parser.print_help()
-+        sys.exit(1)
-+
-+    for action in actions:
-+        if action.__name__[1:] == args[0]:
-+            action(options)
-+            break
-+    else:
-+        parser.print_help()
-+        sys.exit(1)
-+
-+    sys.exit()
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/ChangeLog sip/ChangeLog
---- ./sip-4.19.12.orig/ChangeLog	2018-07-05 05:55:19.000000000 -0400
-+++ sip/ChangeLog	1969-12-31 19:00:00.000000000 -0500
-@@ -1,9785 +0,0 @@
--2018-07-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Released as v4.19.12.
--	[290a78d4a00d] [4.19.12] <4.19-maint>
--
--	* sphinx/installation.rst, sphinx/using.rst:
--	Updated the docs regarding private copies of the sip module.
--	[e30b9d2668c4] <4.19-maint>
--
--	* NEWS, configure.py.in, sphinx/installation.rst:
--	Added the --no-module option to configure.py.
--	[02ab8cfda064] <4.19-maint>
--
--	* configure.py.in:
--	The --no-tools option does not install the sip.h. Fixed .dist-info
--	for the code generator when --no-tools is specified.
--	[b3633241320b] <4.19-maint>
--
--2018-07-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[f4799b368aa1] <4.19-maint>
--
--	* sipgen/main.c:
--	Fixed the default sip module name.
--	[30b34699ad64] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/array.c, siplib/sip.h.in, siplib/sipint.h,
--	siplib/siplib.c, siplib/voidptr.c:
--	Fixed the implementation of sipConvertFromSliceObject() so that
--	generated modules still support the limited API.
--	[5baed8e71fdb] <4.19-maint>
--
--	* configure.py.in:
--	Include the build system for all builds (not just legacy ones).
--	[5443d32d2928] <4.19-maint>
--
--	* configure.py.in:
--	The mk_distinfo.py script now takes a temporary installation
--	directory as an additional argument.
--	[048f7a6100c8] <4.19-maint>
--
--	* configure.py.in:
--	Fixes for invoking mk_distinfo.py for out-of-tree builds.
--	[ded7362cc94a] <4.19-maint>
--
--	* siplib/siplib.c:
--	Fixed a bug exposing traditional enum members in a class that also
--	contains a C++11 scoped enum.
--	[ccc4eda868de] <4.19-maint>
--
--2018-07-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fix for installing sip.h with out-of-tree builds.
--	[935f8cdab1b7] <4.19-maint>
--
--2018-06-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.11 for changeset a7d0f8459788
--	[77add4c87760] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.11.
--	[a7d0f8459788] [4.19.11] <4.19-maint>
--
--	* NEWS:
--	Updated the NEWS file.
--	[373c872333a4] <4.19-maint>
--
--	* sphinx/using.rst:
--	Documented the need for the enum34 package for versions of Python
--	earlier than v3.4.
--	[379da5a152c4] <4.19-maint>
--
--2018-06-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	Fixed the exception when a keyword argument overflows.
--	[659e30e2c490] <4.19-maint>
--
--	* siplib/siplib.c:
--	Fixed a couple of Python v2 exception messages.
--	[8b2f14850fcd] <4.19-maint>
--
--	* siplib/siplib.c:
--	Fixed a compilation issue with Python v2.
--	[fea0057d2c29] <4.19-maint>
--
--2018-06-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Handle const signal arguments (that are not pointers or references).
--	[a7a3d5f49c09] <4.19-maint>
--
--2018-06-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /ScopesStripped/ argument annotation.
--	[ab62eae89111] <4.19-maint>
--
--2018-06-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	The .dist-info directory now takes account of $(DESTDIR).
--	[d6a17b9e8f21] <4.19-maint>
--
--	* configure.py.in:
--	Fixed out-of-tree builds.
--	[81516a4441db] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Further fixes for the stripping of scopes from signal arguments.
--	[44dd1db98cf7] <4.19-maint>
--
--2018-06-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.10 for changeset abf14ded1760
--	[8597a94e4d25] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.10.
--	[abf14ded1760] [4.19.10] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed the stripping of scopes from signal arguments.
--	[ce55e3219bc5] <4.19-maint>
--
--2018-06-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.9 for changeset 21bc9fb06802
--	[8331b47585f6] <4.19-maint>
--
--	* NEWS:
--	Released as 4.19.9.
--	[21bc9fb06802] [4.19.9] <4.19-maint>
--
--	* build.py, configure.py.in:
--	Fixes for building in situ.
--	[500aa97cf889] <4.19-maint>
--
--2018-06-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[0339dce88c21] <4.19-maint>
--
--2018-06-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* METADATA.in:
--	Updated the METADATA.in file to account for the private copy for
--	PyQt5.
--	[970b0223221f] <4.19-maint>
--
--2018-06-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h.in,
--	siplib/sip.h.in, siplib/siplib.c:
--	The sip.h file no longer needs to be configured by the compiler
--	invocation for the sip module name. Added the -n option to the code
--	generator to configure the sip module name.
--	[d2b3b20484bd] <4.19-maint>
--
--	* sphinx/command_line.rst, sphinx/installation.rst,
--	sphinx/introduction.rst.in, sphinx/python_api.rst, sphinx/using.rst:
--	Updated the docs regarding private copies of the sip module.
--	[76e24a5bc0c3] <4.19-maint>
--
--	* sphinx/build_system.rst, sphinx/directives.rst,
--	sphinx/installation.rst, sphinx/introduction.rst.in:
--	Fixed all external links in the documentation.
--	[31a654cb4d5a] <4.19-maint>
--
--	* configure.py.in, siplib/sip.h.in, siplib/sip.h.in.in,
--	siplib/siplib.c, siplib/siplib.c.in, siplib/siplib.sbf,
--	siplib/siplib.sbf.in:
--	Fixed issues when using the --sip-module option to build the sip
--	module.
--	[fc3023a254ce] <4.19-maint>
--
--2018-06-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	More fixes for the /Transfer/ function annotation when applied to
--	static methods.
--	[69938bd3654c] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed the implemenation of the /Transfer/ method annotation for
--	static methods.
--	[e61b036cb050] <4.19-maint>
--
--2018-06-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Clarified the docs for sipSetUserObject().
--	[8077330e3c1b] <4.19-maint>
--
--2018-06-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Refactored the new enum visibility support so that normal attribute
--	lookup in an enum works again (specifically for pickling).
--	[6d59f2a57159] <4.19-maint>
--
--	* NEWS, siplib/siplib.c.in, sphinx/using.rst:
--	The members of traditional C/C++ enums are now visible within the
--	scope of the enum.
--	[79b93109033f] <4.19-maint>
--
--2018-06-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* mk_distinfo.py:
--	Removed the mk_distinfo.py script as it is now added during
--	preparation.
--	[b8400f2e1b7b] <4.19-maint>
--
--	* mk_distinfo.py:
--	Updated the copy of mk_distinfo.py.
--	[3dd68ef638eb] <4.19-maint>
--
--2018-06-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* mk_distinfo.py:
--	Fixed a typo.
--	[e687d71b4cc9] <4.19-maint>
--
--2018-05-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed building for Python versions prior to v3.3.
--	[91088a13f975] <4.19-maint>
--
--	* configure.py.in:
--	Fixes for the .dist-info support on Windows.
--	[4773b53d98f0] <4.19-maint>
--
--	* configure.py.in:
--	Handle spaces in path names when building with qmake.
--	[1757ff19b578] <4.19-maint>
--
--2018-05-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, configure.py.in, mk_distinfo.py, siputils.py,
--	sphinx/build_system.rst, sphinx/installation.rst:
--	A PEP 376 .dist-info directory will be created on installation. The
--	--no-dist-info option was added to configure.py.
--	[4dea64c9e1a8] <4.19-maint>
--
--2018-05-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed __qualname__ for generated types.
--	[7cf6d49bb422] <4.19-maint>
--
--2018-05-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed the sip module's .pro file when building with qmake.
--	[43635cc7012b] <4.19-maint>
--
--2018-04-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* METADATA.in:
--	Fixed a link in the PyPI documentation.
--	[e343bf878ebc] <4.19-maint>
--
--	* Roadmap.rst:
--	Updated the roadmap so that it will age more gracefully.
--	[1f3cbd657f14] <4.19-maint>
--
--2018-04-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/riverbank/static/riverbank.css:
--	More CSS fixes.
--	[e413581ca661] <4.19-maint>
--
--2018-04-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/riverbank/static/riverbank.css:
--	Fixed the CSS for links in headers.
--	[f125f51ceffb] <4.19-maint>
--
--2018-03-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Removed all calls to the deprecated buffer protocol.
--	[d9c9937f820a] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	Fixed the calling of handwritten garbage collection code for classes
--	that do not directly sub-class the class that is providing the code.
--	[f968cccc9b77] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Signal signatures now have a full version appended if a namespace
--	has been stripped.
--	[7683ca65278f] <4.19-maint>
--
--2018-03-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Signal docstrings can now automatically include the signature.
--	[34a94ca0260d] <4.19-maint>
--
--2018-03-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in:
--	Implemented sipConvertFromSliceObject() for Python v3.7 to avoid
--	using the deprecated PySlize_GetIndicesEx().
--	[ae83f4e7993f] <4.19-maint>
--
--2018-02-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.8 for changeset 09748626765f
--	[6462a294376f] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.8.
--	[09748626765f] [4.19.8] <4.19-maint>
--
--2018-02-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* README:
--	Fixed the README.
--	[f07d0788eef0] <4.19-maint>
--
--2018-01-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Make sure the C API is documented in alphabetical order.
--	[e930a3c90dc0] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Make sure that the pointer to the Python object held by the C++
--	instance of the generated derived type is reset by the derived
--	type's dtor. Also make sure it is tested and reset while the GIL is
--	held in order to avoid race conditions.
--	[71bfa703c4ee] <4.19-maint>
--
--2018-01-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.7 for changeset 7e9dbd15c866
--	[9a8622f989f9] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.7.
--	[7e9dbd15c866] [4.19.7] <4.19-maint>
--
--	* NEWS:
--	Updated the NEWS file.
--	[3d0a9ebb536c] <4.19-maint>
--
--2018-01-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	A significant update to a comment.
--	[f947546822c3] <4.19-maint>
--
--2018-01-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/lexer.l:
--	Fixed the failed attempt to fix %Docstring argument parsing.
--	[6054b3268f6f] <4.19-maint>
--
--2018-01-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sphinx/directives.rst:
--	In the context of a class's docstring the signature argument refers
--	to the concatanated ctor docstrings.
--	[34ddf9638287] <4.19-maint>
--
--	* sipgen/metasrc/parser.y, sphinx/directives.rst:
--	Typedefs can now have docstrings. These are only used by those that
--	instantiate class templates.
--	[327ad560d853] <4.19-maint>
--
--2018-01-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the generated of a default value that is a global unscoped
--	enum.
--	[8f9c478295d3] <4.19-maint>
--
--2018-01-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a missing quote in the docstring support.
--	[e37301b91a57] <4.19-maint>
--
--2018-01-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the handling of signal docstrings.
--	[5d4d28286e02] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed the docstring handling for private ctors and method.
--	[8186b65687f1] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed the formats of class docstrings.
--	[3af2dab08ed3] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed the formatting of function/method docstrings.
--	[8e1829fdaf04] <4.19-maint>
--
--2018-01-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in, sphinx/directives.rst:
--	Initial commit to support embeded signatures in explicit docstrings.
--	[b3d42a546701] <4.19-maint>
--
--2018-01-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/conf.py.in, sphinx/riverbank/layout.html,
--	sphinx/riverbank/static/logo.png,
--	sphinx/riverbank/static/logo_tn.ico,
--	sphinx/riverbank/static/riverbank.css, sphinx/riverbank/theme.conf,
--	sphinx/static/classic.css, sphinx/static/logo.png,
--	sphinx/static/logo_tn.ico:
--	Switched to the revised Sphinx standards.
--	[b68eecb348b9] <4.19-maint>
--
--2017-12-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Fixed the handling of wchar_t constants.
--	[c0436cb89959] <4.19-maint>
--
--2017-12-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Readability improvement.
--	[6a635db426ea] <4.19-maint>
--
--	* configure.py.in:
--	Fixed the location to install the code generator in a Windows venv.
--	[d0f37d83df6f] <4.19-maint>
--
--	* configure.py.in:
--	Fixed the location of the pythonMN.lib file on Windows when building
--	in a venv.
--	[a098e2be83c2] <4.19-maint>
--
--2017-11-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.6 for changeset 3f131525d4d5
--	[3f3a98f6a67a] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.6.
--	[3f131525d4d5] [4.19.6] <4.19-maint>
--
--2017-11-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Updated the docs for /NewThread/.
--	[30c7476904af] <4.19-maint>
--
--2017-11-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the handling of the default value of unscoped enums when using
--	old compilers.
--	[dd017d3e1454] <4.19-maint>
--
--2017-11-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.5 for changeset a572b9daf87f
--	[e0419013252c] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.5.
--	[a572b9daf87f] [4.19.5] <4.19-maint>
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Fixed a regression in the conversion of enums which meant that an
--	object with an __int__ method was accepted as a valid value.
--	[273b01861a11] <4.19-maint>
--
--2017-11-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* test/int_convertors/mk.sh, test/int_convertors/run_test.py,
--	test/int_convertors/test.h, test/int_convertors/test.sip:
--	Added the test for an overloaded function where the argument of each
--	overload is a different named enum.
--	[cac9082bdbd8] <4.19-maint>
--
--2017-11-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Ensure that when building on macOS using qmake the sip module is a
--	bundle.
--	[f945942bc896] <4.19-maint>
--
--2017-11-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.4 for changeset ed56fb689db8
--	[c56a33a3ef0c] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.4.
--	[ed56fb689db8] [4.19.4] <4.19-maint>
--
--2017-10-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Build fixes for Python v2.
--	[5b2adad49340] <4.19-maint>
--
--2017-09-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression that meant that namespaces were included in the
--	types of arguments to signals. Probably only affects
--	PyQtDataVisualization.
--	[5c94d14871a3] <4.19-maint>
--
--2017-09-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Appy a cast to const class pointers to static instances.
--	[3db4b02ea152] <4.19-maint>
--
--	* sphinx/incompatibilities.rst, sphinx/using.rst:
--	Added a section on overflow checking to the documentation.
--	[39409c0a5282] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Make sure the default value of scoped enums is valid.
--	[5024429c9126] <4.19-maint>
--
--2017-09-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst,
--	test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Deprecated sipCanConvertToEnum(). sipConvertToEnum() now has single-
--	pass behaviour like the integer convertors.
--	[2065bdd284cc] <4.19-maint>
--
--2017-09-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/int_convertors.c, siplib/siplib.c.in:
--	Improved the exception text when a virtual should return an enum or
--	a bool.
--	[7636b12a0789] <4.19-maint>
--
--	* test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Added the tests for converting names enums.
--	[8b5be80fda82] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	Fixed a regression where sipBadCatcherResult() is called without an
--	exception.
--	[894b51685d51] <4.19-maint>
--
--	* test/int_convertors/run_test.py:
--	Added the remaining bool tests.
--	[1afb586f55db] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst,
--	test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Added sipConvertToBool() to the public API. Implemented the tests
--	for invalid bool values.
--	[3e8faabe48a1] <4.19-maint>
--
--	* test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Added the tests for converting char.
--	[fb34c9009048] <4.19-maint>
--
--	* test/int_convertors/run_test.py:
--	Completed the unit tests for unsigned values.
--	[cbb776ab54f9] <4.19-maint>
--
--2017-09-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* test/int_convertors/run_test.py:
--	Added the tests for valid values of unsigned types.
--	[895e5218b2a2] <4.19-maint>
--
--	* test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Added tests for virtuals returning invalid values. Added the C++ and
--	wrappers for the unsigned types tests.
--	[b42f7afd33bc] <4.19-maint>
--
--	* test/int_convertors/run_test.py:
--	Fixed the tests for long and long long to account for the legacy
--	behaviour of the convertors.
--	[06c124a19f3c] <4.19-maint>
--
--	* test/int_convertors/run_test.py, test/int_convertors/test.h,
--	test/int_convertors/test.sip:
--	Implemented the unit tests for int, long and long long integer
--	conversions.
--	[55a8a713a6fc] <4.19-maint>
--
--	* test/int_convertors/mk.sh, test/int_convertors/run_test.py,
--	test/int_convertors/test.h, test/int_convertors/test.sip:
--	Added the unit tests for signed char and short integer convertors.
--	[1109afd9d851] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	The type of the exception raised when a Python re-implementation of
--	a C++ virtual raises an exception is now the same as that original
--	exception and not fixed to be TypeError.
--	[61885f427681] <4.19-maint>
--
--2017-08-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/siplib.c.in:
--	Fixed a regression in the generation of slots code.
--	[9e09f205e404] <4.19-maint>
--
--2017-08-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Backed out the documentation change for sipConvertToEnum().
--	[fec7c90f35a2] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/siplib.c.in, sphinx/c_api.rst:
--	Removed the last call to SIPLong_AsLong().
--	[b70f7ccc3069] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in, siplib/siplib.sbf.in,
--	sphinx/c_api.rst:
--	Added sipLong_AsSignedChar() ot the public API. The generated
--	variable setters now use the new convertors.
--	[85bfd5c33ae0] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	Completed the sip module changes for overflow checking.
--	[c8029d4cc754] <4.19-maint>
--
--2017-08-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Migration of more module code to the new convertors.
--	[b035786f41e8] <4.19-maint>
--
--2017-08-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/voidptr.c:
--	The array and voidptr types now use the new convertors.
--	[037839910d09] <4.19-maint>
--
--	* siplib/int_convertors.c:
--	Completed the implementation of the new integer convertors.
--	[cae1cf5dfa79] <4.19-maint>
--
--2017-08-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst:
--	Implemented the int convertor stubs and documented them.
--	[3c4d82a590ac] <4.19-maint>
--
--	* siplib/int_convertors.c, siplib/sipint.h, siplib/siplib.c.in:
--	Refactored the support for int convertors.
--	[2b1714de0e3f] <4.19-maint>
--
--2017-08-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/python_api.rst:
--	Implemented sipEnableOverflowChecking() and
--	sip.enableoverflowchecking() stubs.
--	[56266006c18f] <4.19-maint>
--
--2017-08-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sphinx/c_api.rst, sphinx/incompatibilities.rst:
--	Updated the docs regarding support for scoped enums.
--	[0cf1c85b12bd] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Completed the implementation of scoped enums.
--	[d0b2e8967294] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	Scoped enums are now created as Python enums.
--	[ae7df49152e3] <4.19-maint>
--
--	* siplib/siplib.c.in, sphinx/c_api.rst:
--	More work on scoped enums.
--	[9a196aece94e] <4.19-maint>
--
--2017-08-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
--	siplib/siplib.c.in, sphinx/c_api.rst:
--	Created the stub of the scoped enums implementation.
--	[674f800ed250] <4.19-maint>
--
--	* sipgen/type_hints.c:
--	Removed some unused variables.
--	[90360e454f86] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Remove the const from the source object declaration in assignment
--	helpers.
--	[2b53ba180983] <4.19-maint>
--
--2017-08-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Completed the parser support for scoped enums.
--	[11b383822a47] <4.19-maint>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/specification_files.rst:
--	Added parser support for scoped enums.
--	[f5b7d5bf0624] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Use static_cast<int>() when passing values to sipConvertFromEnum().
--	[091cfd53e597] <4.19-maint>
--
--2017-08-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Disallow (rather than ignore) invalid types in Python signatures if
--	%MethodCode and a C/C++ signature is provided.
--	[a975983c39c1] <4.19-maint>
--
--2017-08-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug in the handling of signals in scoped
--	classes.
--	[7c82958d6327] <4.19-maint>
--
--2017-07-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/sip.h.in, sipgen/transform.c:
--	Fixes for the detection of recursive imports.
--	[6a7ab03d4efa] <4.19-maint>
--
--2017-07-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Detect recursive imports as an error.
--	[ba19c3f5fb29] <4.19-maint>
--
--2017-07-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.3 for changeset 14685a6e736e
--	[2a9f342b7f39] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.3.
--	[14685a6e736e] [4.19.3] <4.19-maint>
--
--2017-07-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/type_hints.c:
--	Fixes for hidden namespaces in generated XML.
--	[489321fd2475] <4.19-maint>
--
--2017-06-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/specification_files.rst:
--	Fixed an out of date statement in the docs.
--	[21539b0e74c6] <4.19-maint>
--
--2017-06-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	Don't report template arguments of uninstantiated templates as
--	undefined classes.
--	[a69025738247] <4.19-maint>
--
--2017-06-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Allow empty class bodies.
--	[265b531cb6e4] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed a bug handling double quotes as the default value of a char
--	argument.
--	[d86c23976619] <4.19-maint>
--
--2017-06-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	Completed the implementation of non-strict parsing.
--	[8b5e498d13dd] <4.19-maint>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	The relevant data structures now retain the platform information.
--	[15b6c00166a7] <4.19-maint>
--
--	* sipgen/gencode.c, sipgen/main.c, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in:
--	Added the stub of non-strict parsing that saves (but otherwise
--	ignores) the platform information.
--	[b05b36a086c2] <4.19-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l:
--	Improve the handling of string constants to properly support escape
--	characters.
--	[495a7635a52d] <4.19-maint>
--
--	* sipgen/metasrc/parser.y:
--	Make sure any expanded template ctor call is a deep copy.
--	[141c98e741b6] <4.19-maint>
--
--2017-06-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Expand template ctor calls when they are the default values of an
--	argument.
--	[5df8870c61a7] <4.19-maint>
--
--2017-06-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression in the invocation of the dtor of shadow classes.
--	[e833dc3f9a2f] <4.19-maint>
--
--2017-06-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgignore:
--	Updated .hgignore for the changed build directory.
--	[b2fb251d3500] <4.19-maint>
--
--2017-05-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in, sphinx/c_api.rst:
--	Documented the event handler mechanism.
--	[aee09bdf1206] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Implemented sipEventType and sipRegisterEventHandler().
--	[2a4bcf305afa] <4.19-maint>
--
--2017-05-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/objmap.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst:
--	Renamed sipCommonDtor() to sipInstanceDestroyed() and added it to
--	the public API.
--	[e7d4e6661fa0] <4.19-maint>
--
--	* sipgen/metasrc/parser.y:
--	The parser will now accept class template definitions within a
--	class. The generated code is untested.
--	[ec57a6e03eb3] <4.19-maint>
--
--2017-05-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	Added support for type hints for properties from Scott Maxwell.
--	[c861fe0ef6ca] <4.19-maint>
--
--2017-05-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixes for 'char *&' argument types.
--	[684e23c995a3] <4.19-maint>
--
--2017-05-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Removed a duplicate call.
--	[afe3d3efc82d] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Don't try and initialise the result of a virtual when the type is a
--	template.
--	[cce4fe835faf] <4.19-maint>
--
--2017-04-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Added sipPrintObject() to the public C API.
--	[10e10b1a2d68] <4.19-maint>
--
--2017-04-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/siplib.c.in:
--	Fixed regressions in the handling of exceptions.
--	[974a4d77314b] <4.19-maint>
--
--	* sipgen/transform.c, sphinx/conf.py.in:
--	Minor cosmetic fixes.
--	[4ea35fd2187d] <4.19-maint>
--
--2017-04-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Effectively re-applied changeset dc06058c99dd. If there is a real
--	problem here then we don't yet fully understand it.
--	[95a493a417e8] <4.19-maint>
--
--2017-04-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fix a regression so that a shadow class is not generated if there is
--	a private dtor.
--	[6b09a6d578e8] <4.19-maint>
--
--2017-03-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.2 for changeset 1df924860f57
--	[6209a625ac87] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.2.
--	[1df924860f57] [4.19.2] <4.19-maint>
--
--2017-03-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Remove an unnecessary comment.
--	[1f31effbc614] <4.19-maint>
--
--2017-03-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a crash when a user defined class uses sip.wrappertype as it's
--	meta-type but is not derived from sip.simplewrapper.
--	[f5bab1986fbb] <4.19-maint>
--
--2017-02-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19.1 for changeset ee5ea590d186
--	[f45eb310f129] <4.19-maint>
--
--	* NEWS:
--	Released as v4.19.1.
--	[ee5ea590d186] [4.19.1] <4.19-maint>
--
--2017-02-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed another regression in deprecated code.
--	[556ca44cc535] <4.19-maint>
--
--	* sipgen/gencode.c:
--	Fixed some deprecated macros.
--	[23a8ef68306d] <4.19-maint>
--
--2017-02-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a typo in the implementation of sipEnableGC().
--	[c15936fc6007] <4.19-maint>
--
--2017-02-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a doesn't-work-with-old-c-compilers bug.
--	[5775566848d1] <4.19-maint>
--
--2017-02-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed a regression in the generation of names of protected methods
--	in classes imported from other modules.
--	[948e06cb1921] <4.19-maint>
--
--2017-02-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c:
--	Fixed a regression in determining when a shadow class should be
--	generated.
--	[71a8ee38b2c6] <4.19-maint>
--
--2017-01-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in:
--	Updated the ABI version number.
--	[6b23496bd532] <4.19-maint>
--
--	* sphinx/annotations.rst:
--	Added a clarification to the /Abstract/ class annotation.
--	[adb03184b044] <4.19-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipEnableGC() to the public API.
--	[03b120e8fe2f] <4.19-maint>
--
--2017-01-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed a couple of missing types.
--	[9737461081da] <4.19-maint>
--
--2017-01-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	More fixes for /NoTypeName/ applied to class templates.
--	[8a45855e0d70] <4.19-maint>
--
--2017-01-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	The /NoTypeName/ typedef annotation now affects classes
--	instantiation from class templates.
--	[30d9a5a61ed2] <4.19-maint>
--
--2017-01-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/metasrc/lexer.l,
--	sipgen/metasrc/parser.y, sipgen/sip.h.in, sphinx/directives.rst:
--	Added the %PreMethodCode implementation from Robin Dunn.
--	[08d77fb135a2] <4.19-maint>
--
--	* sipgen/metasrc/parser.y:
--	Properly fix the template super-class regression.
--	[3b674fc274d5] <4.19-maint>
--
--	* sipgen/metasrc/parser.y:
--	Backed out changeset b94757bc5637 It fixes the bug but breaks
--	everything else.
--	[f39e23bcd25b] <4.19-maint>
--
--	* sipgen/metasrc/parser.y:
--	Fixed a regression in the handling of template arguments specifying
--	super-classes.
--	[b94757bc5637] <4.19-maint>
--
--2017-01-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* README, build.py:
--	Fixed the build.py script so that it does a complete preparation.
--	[85539feb92ea] <4.19-maint>
--
--2017-01-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed sipGetBufferInfo().
--	[1de5c188f98d] <4.19-maint>
--
--2017-01-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/main.c, sipgen/transform.c,
--	siplib/siplib.c.in, sphinx/command_line.rst:
--	Added the -D command line option so that the generated code is aware
--	of Python debug builds.
--	[2a21ceefdf2a] <4.19-maint>
--
--2017-01-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Hopefully a better implementation of changeset dc06058c99dd.
--	[4c135d33a5cf] <4.19-maint>
--
--	* siplib/siplib.c.in:
--	Backed out changeset dc06058c99dd The change is too drastic.
--	[d9e95528015e] <4.19-maint>
--
--2017-01-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed a regression in the ordering of the generated types table for
--	a module.
--	[06237437b446] <4.19-maint>
--
--2016-12-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.19 for changeset 0a4ee5a5511f
--	[245c1ac3c34e]
--
--	* NEWS:
--	Released as v4.19.
--	[0a4ee5a5511f] [4.19]
--
--2016-12-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed a problem importing the required types for protected methods
--	without the public/protected hack.
--	[ccf3d8f3cc59]
--
--2016-12-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/python_api.rst:
--	Implemented sip.assign() to invoke the C++ assignment operator.
--	[4324a0bc03a4]
--
--2016-11-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, sphinx/installation.rst:
--	Added the --no-stubs and --stubsdir options to configure.py to be
--	consistent with other configuration scripts.
--	[70e0d9d09265]
--
--2016-11-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed the incomplete tidy-up.
--	[69aaa13a1883]
--
--2016-11-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fix a warning message.
--	[5d7b73925360]
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Reverted to pre-4.18 handling of the generated cast function. There
--	are cases where a C++ derived class does not have the same address
--	as its single base class.
--	[8e9e02f1bea0]
--
--2016-11-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed a regression (related to scoped names) that meant that header
--	code for template arguments wasn't being included.
--	[04796a24e981]
--
--2016-10-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	iHandwritten code to be included in the sipAPI*.h file is now placed
--	at the end so that it can make use of the generated macros and
--	types.
--	[ed446493da18]
--
--2016-10-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed some compiler warnings when building for Python v2.
--	[264793ee3fb0]
--
--2016-10-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed a regression in the handling of abstratc classes.
--	[ce1042e83d1a]
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	More namespace related fixes.
--	[73d456c2f5cc]
--
--2016-10-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/siplib.c.in:
--	Implemented 'final' support. More fixes for the handling of scopes.
--	[1d0d5c659b92]
--
--2016-10-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/specification_files.rst:
--	Added parser support for the 'final' keyword.
--	[373d57302d56]
--
--2016-10-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/transform.c:
--	Refactored the support for scopes so that types hav a leading '::'.
--	[1f498dfe2888]
--
--2016-10-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	Fixed the generation of the scope of an operator moved from a
--	namespace to a class.
--	[f697ee13a3aa]
--
--2016-10-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/directives.rst:
--	Documented the %HideNamespace directive.
--	[b45a86055567]
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in, sipgen/transform.c:
--	Implemented the %HideNamespace directive.
--	[6b1f471385df]
--
--2016-10-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Make sure the underlying types are generated in tuple builders.
--	[0507dfae0588]
--
--	* sipgen/gencode.c:
--	Virtual handlers use typedef names like all the rest of the
--	generated code.
--	[c732f0460bc3]
--
--2016-10-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Refactored the name lookup code.
--	[8bd669cf535f]
--
--2016-09-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Variable getters/setters now only keep a hidden reference for C
--	character strings.
--	[6ec87337d5e2]
--
--	* sipgen/gencode.c:
--	Fixed a bad indentation in the generated code.
--	[cb1d8e948a2b]
--
--2016-09-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/qtlib.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in, sphinx/using.rst:
--	Removed anll code generator support for PyQt3.
--	[a9cc0cc567aa]
--
--2016-09-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	A class that sub-classes an abstract class and doesn't provide an
--	implementation of an abstract method is itself abstract.
--	[472469f1d7ad]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	Fixes for imported types that have multiple implementations.
--	[dc02dc4430ec]
--
--	* sipgen/transform.c, siplib/sip.h.in.in:
--	Fixed the selection of a virtual handler.
--	[d6c07e82a3d2]
--
--2016-09-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, siplib/sipint.h:
--	Fixed some regressions when building with the limited API disabled.
--	[8118a2156d11]
--
--	* siplib/sip.h.in.in, siplib/sipint.h:
--	Exposed some missing macros.
--	[d12bb44a9d7d]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipGetUserObject() and sipSetUserObject() to the public API.
--	[e0352cc51b67]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/sipint.h,
--	siplib/siplib.c.in:
--	Added sipIsOwnedByPython() and sipIsDerivedClass() to the private
--	API to remove more binary dependencies.
--	[17ed5300e0dc]
--
--	* sipgen/metasrc/parser.y, siplib/objmap.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in:
--	Fix some warnings.
--	[d0dcc6cd73b9]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Refactored how the plugin-specific generated tables are handled.
--	[a0fcb2bc14ca]
--
--2016-09-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed the auto-generation of default copy ctors.
--	[508f9dd396f9]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Implemented the sipCallProcedureMethod() optimisation.
--	[948be90a3f5e]
--
--	* sipgen/transform.c, siplib/sip.h.in.in:
--	Class based exceptions should now have their type structure
--	included.
--	[64ac366b669f]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Reorganised the C API structure.
--	[a08c7533a799]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Completed the refactoring to eliminate binary dependencies.
--	[fb3b72523947]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Refactored the implementation of exceptions to eliminate the binary
--	dependencies.
--	[aeb733f23126]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Refactored the handling of virtual error handlers to reduce binary
--	dependencies.
--	[b08f6f3325e8]
--
--2016-09-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Genearte the needed types table at the right time.
--	[26331d156a87]
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Refactoring of the code that inspects a class for its visible
--	virtuals.
--	[082c756c263d]
--
--2016-09-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixes for regressions using the type header files in the right
--	place.
--	[0b1a09bbde7a]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/sip.h.in.in:
--	Initial refactoring of virtual handlers.
--	[d454a9b02d26]
--
--2016-09-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/siplib.c.in:
--	Generate the correct type names for template based types.
--	[1f17d1688231]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/incompatibilities.rst:
--	Refactored the handling of generated type structures so that they
--	are only referenced by name by an importing module rather than by an
--	index into a table. This reduces the binary dependencies between
--	modules.
--	[667720dbc42d]
--
--2016-09-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/directives.rst:
--	Removed the support for module version numbers.
--	[685029cadb52]
--
--2016-09-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed silly bugs in the previous change.
--	[7df5236aa50f]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Improved the implementation of sipGetBufferInfo().
--	[7a606d0daf37]
--
--2016-09-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/type_hints.c:
--	Fixed the type hint for unsigned const char *.
--	[19f9b9eea667]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
--	Updated sipGetBufferInfo() to optionally check the type.
--	sipGetBufferInfo() only supports 1-dimensional arrays.
--	[985d7877b3a1]
--
--2016-09-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Further fixes for invoking the new type handler.
--	[ecdcfc0f0558]
--
--	* siplib/objmap.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Fixes for the invocation of the new user type handler.
--	[a95c68d37f6e]
--
--	* siplib/siplib.c.in:
--	Fixed the invocation of the new user type handler.
--	[d484574b76e9]
--
--2016-09-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipGetBufferInfo() and sipReleaseBufferInfo() to the public
--	API.
--	[c23d7cb8b06e]
--
--2016-09-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in, sphinx/c_api.rst:
--	Documented the new Unicode-related functions.
--	[c8408349d43c]
--
--2016-09-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Added sipUnicodeNew(), sipUnicodeWrite() and sipUnicodeData() to the
--	public API.
--	[e05849602bef]
--
--2016-08-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipGetMethod(), sipFromMethod() and sipGetCFunction() ot the
--	public API.
--	[28f7daaa7542]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
--	siplib/siplib.c.in, sphinx/c_api.rst:
--	Added sipCheckPluginForType() ot the public API.
--	sipSetNewUserTypeHandler() now returns the old handler to allow
--	chaining.
--	[7e8e4447431b]
--
--2016-08-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/descriptors.c, siplib/objmap.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in:
--	Renamed some structure fields.
--	[cb8478e5895d]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipPyTypeDict() to the public API.
--	[7f25c1fe8296]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipGetFrame() to the public API.
--	[a34c213208b2]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipIsUserType() to the public API.
--	[d2477eb9265e]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added the data and time functions to the public API.
--	[7739c16f94c9]
--
--2016-08-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Documented sipPyTypeName().
--	[c7098cf08c3a]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Added sipPyTypeName() to the public API.
--	[319512a38c50]
--
--	* siplib/sip.h.in.in:
--	Fixed the new macros.
--	[c361a6924e82]
--
--	* siplib/sip.h.in.in:
--	Implemented additional portablity macros for the limited API.
--	[120e916e8608]
--
--	* .hgignore, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/using.rst:
--	Implemented sipSetNewUserTypeFunc() sipSetTypeUserData() and
--	sipGetTypeUserData().
--	[1f180cf4a42a]
--
--2016-08-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/apiversions.c, siplib/array.c, siplib/array.h,
--	siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h.in.in, siplib/sipint.h, siplib/threads.c,
--	siplib/voidptr.c, sphinx/c_api.rst, sphinx/directives.rst:
--	Added the user field to the sipWrapperType structure as an
--	alternative to defining a super-type of sipWrapperType (which isn't
--	possible with the limited API). Bumped the major ABI version number.
--	[5e9de8cde212]
--
--2016-08-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/directives.rst:
--	Added the use_limited_api argument to the %Module directive. Changed
--	the API of %BIGetBufferCode when using the limited API.
--	[10d7121c07e3]
--
--2016-08-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Merged the 4.18-maint branch into the trunk.
--	[d92384aa5baf]
--
--	* sipgen/gencode.c:
--	Fixed the handling of global unsigned constants.
--	[a45bec408ec2] <4.18-maint>
--
--	* sphinx/conf.py.in:
--	Fixed the copyright notice in the docs.
--	[17475357a153] <4.18-maint>
--
--2016-08-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* README, build.py:
--	Removed the old internal build system leaving the minimum needed to
--	build from hg without the new build system.
--	[dbbced5689a8] <4.18-maint>
--
--2016-07-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.18.1 for changeset 81021a5690ce
--	[8f5b6c8fe5f1] <4.18-maint>
--
--	* NEWS:
--	Released as v4.18.1.
--	[81021a5690ce] [4.18.1] <4.18-maint>
--
--2016-07-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* Roadmap.rst:
--	Updated the Roadmap.
--	[1226013f2516] <4.18-maint>
--
--	* NEWS:
--	Updated the NEWS file.
--	[26a4fd92bf59] <4.18-maint>
--
--2016-07-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/objmap.c:
--	Fixed a problem with stale aliases for objects created by C/C++.
--	[b493c6f3e015] <4.18-maint>
--
--2016-06-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rb-product, rbproduct.py:
--	Replaced the product plugin with a product file.
--	[a10b0caa91a8] <4.18-maint>
--
--2016-06-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Product plugin changes for rb-tools API changes.
--	[86f51ad3ac30] <4.18-maint>
--
--	* rbproduct.py:
--	Debugged the product plugin.
--	[67a81861273c] <4.18-maint>
--
--	* rbproduct.py:
--	Added support for a minimal build and release build types.
--	[8cc794662db5] <4.18-maint>
--
--2016-06-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Tewaks to the product plugin.
--	[b2fd658f11cf] <4.18-maint>
--
--2016-06-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Debugged the support for rb-release.
--	[38cdb78872f4] <4.18-maint>
--
--2016-06-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin to support rb-release.
--	[ecb166af3ad3] <4.18-maint>
--
--2016-06-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression in the handling of a cast with a diamond
--	hierachy.
--	[91206af66161] <4.18-maint>
--
--2016-06-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Implemented the different build types.
--	[15184d86e394] <4.18-maint>
--
--	* rbproduct.py:
--	Updates to the product plugin.
--	[23ca59449373] <4.18-maint>
--
--2016-06-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin to simplify the class hierachy.
--	[a977c7f870f7] <4.18-maint>
--
--	* .hgignore, rbproduct.py:
--	The product plugin will now do a default build.
--	[8c433398f573] <4.18-maint>
--
--2016-05-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin for the latest rbtools changes.
--	[a4a0a84984dc] <4.18-maint>
--
--2016-05-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a bug in out-of-source builds.
--	[f9602fd24f17] <4.18-maint>
--
--2016-04-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* METADATA.in:
--	Updated the meta-data to say that 64-bit Linux wheels are available
--	at PyPI.
--	[5602445cb458] <4.18-maint>
--
--2016-04-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.18 for changeset b51768a1749e
--	[1da474e6ccc1]
--
--	* NEWS, sphinx/specification_files.rst:
--	Released as v4.18.
--	[b51768a1749e] [4.18]
--
--	* METADATA.in, sipgen/export.c, sipgen/type_hints.c:
--	Fixed the type hints for arrays.
--	[02a712634ce1]
--
--2016-04-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* METADATA.in:
--	Updated the description in the meta-data.
--	[d9eb656132f3]
--
--2016-04-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* METADATA.in:
--	Further tweak to METADATA.in.
--	[9acfb4baa44c]
--
--	* METADATA.in:
--	Use v1.1 meta-data rather than v2.0.
--	[8d9645471343]
--
--	* METADATA.in:
--	Fixed a typo.
--	[4a9ee34e65c3]
--
--	* METADATA.in, rbproduct.py:
--	Added the METADATA.in file.
--	[39106871989b]
--
--2016-04-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin.
--	[e42e999389f9]
--
--	* rbproduct.py:
--	Added the rbtools product plugin.
--	[b9ba57967915]
--
--2016-03-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/incompatibilities.rst:
--	Fixed a Sphinx warning message.
--	[ae966103325c]
--
--	* sipgen/main.c, sipgen/sip.h.in, sipgen/transform.c:
--	Fixed the use of SIP_NORETURN.
--	[b3a916e0bc78]
--
--2016-03-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c:
--	Fixed a regression in the exporting of the XML API files.
--	[c7714bbbdae7]
--
--	* build.py, sphinx/build_system.rst, sphinx/c_api.rst,
--	sphinx/python_api.rst:
--	Adopt the new standards for naming development versions.
--	[72140f544ef1]
--
--	* sphinx/annotations.rst:
--	Fixed a bug in the documentation.
--	[9e4ee12928cd]
--
--	* .hgignore:
--	Added the .hgignore file.
--	[e1d2556ce4a2]
--
--2016-03-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	__long__ gets translated to __int__ for Python v3.
--	[a4f8a7810cc3]
--
--2016-03-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c, sphinx/annotations.rst:
--	Type hints are ignored if an argument is constrained.
--	[f041cf891a29]
--
--	* sipgen/type_hints.c:
--	Implement the flattening of Unions in type hints.
--	[ff5f0d0251e0]
--
--2016-02-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/sip.h.in, sipgen/type_hints.c:
--	Reimplemented the type hint parser so it can handle recursive
--	definitions properly.
--	[506e30d92b51]
--
--2016-02-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	Fixed type hints for enums in mapped types.
--	[efb04ab24462]
--
--	* sipgen/type_hints.c:
--	Fixed type hints for the return values of functions.
--	[b5c392c71f78]
--
--	* sipgen/type_hints.c:
--	Added Iterable to the list of known typing module objects.
--	[a1d1a573a304]
--
--2016-02-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/sip.h.in, sipgen/type_hints.c:
--	Fixed the handling of recursively defined type hints.
--	[b5abe12b4968]
--
--2016-02-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/sip.h.in, sipgen/type_hints.c:
--	The typing module is now imported as a whole rather than individual
--	objects.
--	[ac67b3f0bd95]
--
--2016-02-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sip.pyi:
--	Fixed the Buffer type hint.
--	[78a799aec114]
--
--	* sipgen/type_hints.c:
--	Don't generate type hints for the sequence concat and repeat slots
--	(and the inplace versions).
--	[a5ae3982ff5f]
--
--	* sipgen/metasrc/parser.y, sphinx/directives.rst:
--	Exported type hint code is no longer included in the module that
--	defines it.
--	[442b3ed07ae6]
--
--	* sipgen/type_hints.c:
--	Exclude external classes when looking up a class.
--	[61fe4c76a394]
--
--	* sipgen/transform.c, sipgen/type_hints.c:
--	Fixed type hints and docstrings for const template arguments.
--	[679c13adda6a]
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c,
--	sphinx/directives.rst:
--	%TypeHintCode can now be used in a class.
--	[053c7351dba2]
--
--2016-02-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	Don't generate type hints for slots that can return
--	Py_NotImplemented. Make sure callables generate a valid (but vague)
--	type hint.
--	[883918a8dc36]
--
--2016-02-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sip.pyi, sipgen/type_hints.c:
--	Tweaks to the type hint support.
--	[785978d8f7e3]
--
--2016-02-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c, sphinx/annotations.rst:
--	Added the /TypeHint/, /TypeHintOut/ and /TypeHintValue/ class
--	annotations.
--	[4f5dc2c51d06]
--
--	* sipgen/type_hints.c:
--	Moved the old-style signal/slot type hints to PyQt4.
--	[4689a40f7e7d]
--
--2016-02-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sphinx/annotations.rst:
--	Implemented /TypeHintValue/ as a mapped type annotation.
--	[2418e7f7760d]
--
--	* build.py:
--	Make sure sip.pyi is included in the source package.
--	[1eabde271e53]
--
--2016-02-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/transform.c, siplib/siplib.c.in:
--	Eliminate a few compiler warnings.
--	[e864a0451a4a]
--
--2016-02-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	More fixes for Optional handling.
--	[365d31de81fd]
--
--	* sipgen/type_hints.c:
--	Use Optional properly.
--	[ab7d66d1ea0d]
--
--2016-02-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	PY_TYPE and PY_SLICE aren't actually needed.
--	[9778770c65a5]
--
--2016-02-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	Fixed the translation of Any to object in docstrings.
--	[7571d96c1f79]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in,
--	sipgen/type_hints.c:
--	Docstrings now use a format based on type hints.
--	[9de9b0470aa6]
--
--2016-02-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Don't complain about a lack of %SetCode when /NoSetter/ is
--	specified.
--	[cf4db5eb171a]
--
--	* sipgen/metasrc/parser.y:
--	Fixed some typos in error messages.
--	[82a34911686f]
--
--	* sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sphinx/directives.rst:
--	Renamed %ModuleTypeHintCode to %TypeHintCode.
--	[73b214c14dde]
--
--	* sipgen/type_hints.c, sphinx/annotations.rst:
--	Documented the /NoTypeHint/ annotations.
--	[26e59a86ca45]
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c:
--	Implemented the /NoTypeHint/ annotation. Fixed a bug to make sure
--	type header code is included before enum slot code needs it.
--	[1943d4866c73]
--
--	* sipgen/metasrc/parser.y, sipgen/type_hints.c:
--	More flexible handling of ellipsis when /NoArgParser/ is specified.
--	[7097a0008042]
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c:
--	Protect against (possible) recursion when handling type hints for
--	mapped types.
--	[9402857f5eb6]
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c:
--	Fixed class /TypeHintIn/ when used with a template.
--	[3a914d9789e0]
--
--2016-02-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c,
--	sphinx/annotations.rst:
--	Added /TypeHintIn/ as a class annotation.
--	[92d3d32ebf64]
--
--2016-02-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, sipgen/type_hints.c:
--	Completed the implementation of /TypeHintIn/ and /TypeHintOut/.
--	[70e9172c61b7]
--
--	* sipgen/export.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	Implement /TypeHintValue/ as a synonym for /DocValue/ for the
--	moment.
--	[df8230d91f9f]
--
--	* sipgen/metasrc/parser.y, sphinx/annotations.rst:
--	Adde the stubs of the /TypeHintIn/, /TypeHintOut/ and
--	/TypeHintValue/ annotations.
--	[aeb5d848b98a]
--
--	* sipgen/metasrc/parser.y, sphinx/annotations.rst:
--	Deprecated /DocType/ and /DocValue/.
--	[ec369060cd94]
--
--	* sipgen/main.c, sipgen/metasrc/parser.y, sipgen/type_hints.c,
--	sphinx/command_line.rst:
--	Added the -f command line option to treat warnings as errors.
--	[fc945a2d732f]
--
--2016-02-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	Added Iterator and Mapping to the objecys imported from typing.
--	[6d439bc77538]
--
--	* sipgen/type_hints.c:
--	Fixed references to mapped types imported from other modules.
--	[b579781f2a2a]
--
--	* sipgen/type_hints.c:
--	Don't try and create type hints for global slots.
--	[11562a825b7c]
--
--	* sipgen/type_hints.c:
--	Bug fix when looking up enums.
--	[a4b89fac02d3]
--
--	* sipgen/type_hints.c:
--	Added PEP 484 support for composite modules.
--	[99e626f4fd23]
--
--	* sipgen/type_hints.c:
--	Fixed PEP 484 support for all callables with a non-default API
--	version.
--	[b2f8e2fed83d]
--
--	* sipgen/type_hints.c:
--	Completed the PEP 484 support for mapped types.
--	[b06408ae2397]
--
--	* sipgen/export.c, sipgen/sip.h.in, sipgen/type_hints.c:
--	More PEP 484 bug fixes.
--	[3e4df4d97ba5]
--
--2016-01-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sphinx/directives.rst, sphinx/specification_files.rst:
--	Documented the %ExportedTypeHintCode and %ModuleTypeHintCode
--	directives.
--	[cc7f789360b8]
--
--	* NEWS, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in, sipgen/type_hints.c, sphinx/directives.rst:
--	Added the %ExportedTypeHintCode and %ModuleTypeHintCode directives.
--	[aef93197b065]
--
--	* sipgen/metasrc/parser.y, sipgen/type_hints.c,
--	sphinx/annotations.rst:
--	Renamed /HintType/ to /TypeHint/.
--	[70c8915f680a]
--
--2016-01-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c:
--	More PEP 484 support.
--	[ea6e7a7ae51f]
--
--2016-01-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c:
--	More PEP 484 support.
--	[aa1228396424]
--
--2016-01-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c:
--	Added the stubs for parsing /HintType/ annotations.
--	[7c0fac66f27c]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, sipgen/type_hints.c:
--	Improved the lookup of QObject.
--	[a2d8330df89d]
--
--2016-01-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	More PEP 484 support.
--	[336749ea71c5]
--
--	* sipgen/type_hints.c, sphinx/annotations.rst:
--	HintType will now fallback to DocType if the latter is specified.
--	[4423da336fbb]
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	sipgen/type_hints.c, sphinx/annotations.rst:
--	Added the /HintType/ annotation.
--	[2985d2d641d4]
--
--	* sipgen/type_hints.c:
--	More PEP 484 support.
--	[21e70ef4b15f]
--
--2016-01-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/sip.h.in, sipgen/type_hints.c:
--	More PEP 484 support.
--	[dd04be5e4e4f]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in,
--	sipgen/type_hints.c:
--	More support for PEP 484.
--	[353fe29217fb]
--
--	* siplib/siplib.c.in:
--	Reverted the use of simplewrapper for mapped types.
--	[14ba1e5b1e5b]
--
--	* siplib/siplib.c.in:
--	Namespaces and mapped types now default to simplewrapper as their
--	super-type.
--	[f7fd77d1cd4e]
--
--2016-01-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h.in,
--	sipgen/sipgen.sbf, sipgen/type_hints.c, sphinx/command_line.rst,
--	sphinx/introduction.rst.in:
--	Initial support for generating PEP484 type hints.
--	[4191467f125a]
--
--	* sip.pyi:
--	Added None return types to the stub file.
--	[314ef3cd76ed]
--
--2016-01-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Hard-code the name of the stub file (rather than handle bespoke
--	module names).
--	[e1e4b29eb1a6]
--
--	* configure.py.in, sip.pyi, sphinx/installation.rst:
--	Added the sip.pyi type hints stub file.
--	[30e58feee19f]
--
--2016-01-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Minor docs change.
--	[dd03f114259c]
--
--2016-01-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_SLOT.
--	[2b821ae5e9f1]
--
--	* Roadmap.rst:
--	Updated the roadmap.
--	[495ebc034f99]
--
--	* sphinx/annotations.rst:
--	Deprecated the SingleShot annotation.
--	[aa46307e00b4]
--
--	* sipgen/metasrc/parser.y:
--	Deprecated SIP_RXOBJ_CON and SIP_SLOT_CON.
--	[affb0c5b465c]
--
--2016-01-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_SIGNAL.
--	[865e00b6ffa0]
--
--2016-01-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_ANYSLOT.
--	[8199aa8980e8]
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_QOBJECT.
--	[fb9c94746255]
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_RXOBJ_DIS.
--	[0f26db165557]
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_SLOT_DIS.
--	[051775601278]
--
--2016-01-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* Merged the current maintenance branch.
--	[b7bd085548b6]
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Fixes to the handling of fatal errors.
--	[f35ebfa4c27f] <4.17-maint>
--
--	* Merged the current maintenance branch with the default.
--	[d244ec3a2dec]
--
--2016-01-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, sipgen/export.c, sipgen/gencode.c, sipgen/main.c,
--	sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, siplib/siplib.c.in:
--	Fixed all compiler warnings.
--	[9dbdf30558aa] <4.17-maint>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in, siplib/siplib.c.in,
--	sphinx/specification_files.rst:
--	Some minor tidy-ups.
--	[b4edb1990e23] <4.17-maint>
--
--	* Merged the current maintenance branch with the default.
--	[782cf5e8441e]
--
--2015-12-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Another attempt and preventing accesses to SIP data structures after
--	the interpreter has gone.
--	[138eb1eded99] <4.17-maint>
--
--2015-12-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipGetInterpreter() to the public API. Avoid the Python
--	interpreter if it has gone when getting a QMetaObject.
--	[61d8f0f6f5c0] <4.17-maint>
--
--2015-12-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Cleared a benign exception in the handling of mixins.
--	[602884540b54] <4.17-maint>
--
--2015-12-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the previous fix.
--	[17876e15c41d] <4.17-maint>
--
--2015-11-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Restrict the invocation of sub-class convertors to those that handle
--	direct sub-classes.
--	[57cbe5142d57] <4.17-maint>
--
--2015-10-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Invoking sub-class convertor code turns out to be quite expensive so
--	check the object map first. Check the object map again if the
--	convertor code needed to be invoked. This change is absolutely
--	fundamental to the inner workings so may have some unexpected
--	consequences.
--	[77fde6c0ee2d] <4.17-maint>
--
--2015-10-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c,
--	siplib/siplib.c.in:
--	Refactored the handling of casts so that cast functions are only
--	generated for classes that multiply inherit somewhere in their class
--	hierarchy.
--	[14bfbaf7431a] <4.17-maint>
--
--2015-10-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.17 for changeset 0cbb680b4f69
--	[36d16e74cf7f]
--
--	* NEWS:
--	Released as v4.17.
--	[0cbb680b4f69] [4.17]
--
--2015-09-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in:
--	Fix extensions that use Python v3.5 slots but are being built with
--	an earlier version.
--	[9102d6c3daf0]
--
--2015-09-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* specs/win32-msvc2015:
--	Tweak win32-msvc2015 to suppress a warning message.
--	[74754ca3e59f]
--
--	* configure.py.in, specs/win32-msvc2010, specs/win32-msvc2015:
--	Added win32-msvc2015 to the build system.
--	[fca4f2fcbb39]
--
--2015-09-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in:
--	Added a comment about adding new slot types and its effect on the
--	ABI.
--	[50af972e1652]
--
--2015-09-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/specification_files.rst:
--	Added support for PEP 492, ie. the __await__, __aiter__ and
--	__anext__ special methods.
--	[f5d07b919355]
--
--	* sipgen/metasrc/parser.y, siplib/siplib.c.in:
--	Add __aenter__ and __aexit__ and non-lazy methods.
--	[979e23401d1d]
--
--	* sipgen/metasrc/parser.y:
--	Fixed a regression in the handling of the __len__ annotation.
--	[cad3bdaecf3e]
--
--	* sphinx/static/default.css:
--	Merged the 4.16-main branch into the trunk.
--	[b4f30681b90f]
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in, siplib/voidptr.c,
--	sphinx/annotations.rst, sphinx/specification_files.rst:
--	Implemented support for PEP465 (array infix operator) ie. the
--	__matmul__ and __imatmul__ special methods and function annotations
--	of the same name.
--	[ff867feb8f90] <4.16-maint>
--
--	* siplib/voidptr.c:
--	Tweaked an exception message to follow the style adopted in Python
--	v3.5.
--	[e98693bf17d7] <4.16-maint>
--
--2015-08-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the error handling of sipCallMethod() when a re-implementation
--	raises an exception.
--	[27c61f660fba] <4.16-maint>
--
--2015-07-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.9 for changeset 87de938efba2
--	[90aaa31768c9] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.9.
--	[87de938efba2] [4.16.9] <4.16-maint>
--
--	* sipgen/export.c:
--	Added the "virtual" attribute to the exported XML.
--	[e37fcc2e29e2] <4.16-maint>
--
--2015-07-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Improved the detail of the text of the exception
--	sipBadCatcherResult() raises.
--	[4f7ad0a4e353] <4.16-maint>
--
--	* siplib/siplib.c.in:
--	Allow for an /External/ class being referenced when the module
--	containing its implementation hasn't been imported.
--	[1574043cc948] <4.16-maint>
--
--2015-07-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fix a problem caused by PyQt4 wrapping the QApplication C++ instance
--	as multiple Python objects.
--	[42a056fbf006] <4.16-maint>
--
--2015-06-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Remove an object from the map whenever the pointer ot the C/C++
--	instance is cleared.
--	[8dd533ab6ce9] <4.16-maint>
--
--2015-06-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a missing reference in the previous fix.
--	[1a2704282933] <4.16-maint>
--
--	* sipgen/gencode.c:
--	Fixed a regression in the handling of static non-pointer object
--	variables.
--	[dafbaadea76b] <4.16-maint>
--
--2015-06-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.8 for changeset f87e232098eb
--	[95abaccb67d6] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.8.
--	[f87e232098eb] [4.16.8] <4.16-maint>
--
--2015-06-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in:
--	Bump the internal API version number.
--	[6069463e8937] <4.16-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
--	siplib/siplib.c.in:
--	Fixed the handling of non-pointer object variables so that they are
--	only wrapped once and the Python object cached.
--	[11a92ebd4840] <4.16-maint>
--
--2015-06-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/using.rst:
--	Fixed a type in the docs.
--	[7d0d2cede024] <4.16-maint>
--
--2015-06-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[92c83f02758f] <4.16-maint>
--
--2015-05-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Added support for the current Python3 exceptions.
--	[79afcf752c2a] <4.16-maint>
--
--2015-05-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed bugs maintaining the deleted state of wrapped instances.
--	[e5674f034e48] <4.16-maint>
--
--2015-03-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed a regression in v4.16.7 that affects methods with %MethodCode
--	and the __len__ annotation.
--	[765b6874363f] <4.16-maint>
--
--	* .hgtags:
--	Added tag 4.16.7 for changeset 9076f70a012c
--	[dffe9ad569c9] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.7.
--	[9076f70a012c] [4.16.7] <4.16-maint>
--
--	* sphinx/static/classic.css, sphinx/static/default.css:
--	Fixed the stylesheet.
--	[af2e27024d33] <4.16-maint>
--
--2015-03-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fix the declaration of sipRes in the %VirtualCallCode support.
--	[bd92aad3cf7d] <4.16-maint>
--
--2015-03-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/specification_files.rst:
--	Added %VirtualCallCode to the BNF.
--	[cf1ad8f7be68] <4.16-maint>
--
--	* sphinx/directives.rst:
--	Documented %VirtualCallCode.
--	[752beb1cd641] <4.16-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in:
--	Renamed %InvokeCode to %VirtualCallCode and only use it in a
--	generated virtual reimplementation.
--	[82c8303a8041] <4.16-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in:
--	Implemented the %InvokeCode directive.
--	[d85f3584b06f] <4.16-maint>
--
--	* siplib/siplib.c.in:
--	Fixed the handling of keyword argument when keywords can be used for
--	all arguments.
--	[2ae037bbfa23] <4.16-maint>
--
--	* sphinx/directives.rst:
--	Fixed a documentation typo.
--	[fb4c980c92cc] <4.16-maint>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Backed out changeset 9e11298be101 A more correct solution is
--	required.
--	[e212465fed26] <4.16-maint>
--
--2015-03-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Reverted to the pre-v4.15 behavour when generating the scope of a
--	call to a virtual implementation where the scope may be ambiguous.
--	This may not be the right call, but at least the code compiles.
--	[9e11298be101] <4.16-maint>
--
--2015-03-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Fixed a bug where the original typedef of an argument of a mapped
--	template type was being corrupted.
--	[f652446e2462] <4.16-maint>
--
--	* sphinx/conf.py.in:
--	Updated for sphinx v1.3.
--	[569a9695bc2f] <4.16-maint>
--
--	* sipgen/sip.h.in:
--	Fixed a regression in the handling of module flags.
--	[3f8c05ac8e47] <4.16-maint>
--
--2015-02-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.6 for changeset 1c5f5c8c7416
--	[6c73a1f41add] <4.16-maint>
--
--	* NEWS:
--	Released v4.16.6.
--	[1c5f5c8c7416] [4.16.6] <4.16-maint>
--
--	* NEWS:
--	Updated the NEWS file.
--	[bf261aa4b322] <4.16-maint>
--
--2015-02-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Added support for module-level PyObjects.
--	[136913548818] <4.16-maint>
--
--2015-02-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Installing into a virtual env should now work.
--	[5e133f99d74e] <4.16-maint>
--
--	* siplib/siplib.c.in:
--	Fixed the handling of an empty dict of keyword arguments.
--	[5f5542824235] <4.16-maint>
--
--2015-02-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c, sphinx/command_line.rst:
--	The -T command line option is now ignored and deprecated. Timestamps
--	in generated files are always disabled.
--	[9b1a195afe04] <4.16-maint>
--
--	* sipgen/main.c, sphinx/command_line.rst:
--	Added support for the '@file' format for passing additional command
--	line options in a file.
--	[6c270132db87] <4.16-maint>
--
--2015-02-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c, sphinx/command_line.rst:
--	Deprecated the -z option to the code generator.
--	[b1dff38b9766] <4.16-maint>
--
--2015-02-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a couple of compiler warnings.
--	[d653de687fd4] <4.16-maint>
--
--2015-02-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* Merged the current 4.16-maint branch into the trunk.
--	[f207b8886557]
--
--2015-01-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the lookup of slots.
--	[56c254273cd8] <4.16-maint>
--
--2015-01-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed an invalid deprecation warning.
--	[3c5425fa3c80] <4.16-maint>
--
--2015-01-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /FileExtension/ class annotation.
--	[51f7769fe32f] <4.16-maint>
--
--	* LICENSE, Roadmap.rst, build.py, configure.py.in, sipgen/export.c,
--	sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/main.c,
--	sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
--	siplib/array.c, siplib/array.h, siplib/bool.cpp,
--	siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
--	siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
--	siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
--	Updated the copyright notices.
--	[ccd0bdd9b21c] <4.16-maint>
--
--	* siputils.py, sphinx/build_system.rst, sphinx/c_api.rst,
--	sphinx/python_api.rst:
--	Updated the docs in preparation for snapshots being called previews.
--	[c42e02f71e27] <4.16-maint>
--
--2014-12-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug when a C/C++ argument was a pointer to a
--	struct/class and the Python argument was a void*.
--	[51b0b1f31cea] <4.16-maint>
--
--2014-12-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, siputils.py:
--	Fixed the --target-py-version flag to configure.py.
--	[0e9e078d2d18] <4.16-maint>
--
--2014-12-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.5 for changeset 9c27ed5e0d77
--	[6aa131ac48e8] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.5.
--	[9c27ed5e0d77] [4.16.5] <4.16-maint>
--
--2014-12-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed SIP_SLOT_CON and SIP_SLOT_DIS so that they generate const
--	char*.
--	[7f4c922a779f] <4.16-maint>
--
--2014-12-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/voidptr.c, sphinx/c_api.rst,
--	sphinx/python_api.rst:
--	Added sip.voidptr.asarray().
--	[d3b5a974ac69] <4.16-maint>
--
--2014-12-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Updated a deprecated definition of method arguments.
--	[529b8cd2ab89] <4.16-maint>
--
--2014-11-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed a regression when adding the VPATH support for moc.
--	[c2c285a80412] <4.16-maint>
--
--2014-11-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	A source package now includes a full ChangeLog.
--	[c005a6d2e53e] <4.16-maint>
--
--2014-11-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Build system fix so that generated Makefiles support VPATH with moc.
--	[3f9301ccb08a] <4.16-maint>
--
--2014-11-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, siputils.py, sphinx/build_system.rst:
--	Fixed bugs with out-of-tree builds.
--	[4579c80da1be] <4.16-maint>
--
--	* sphinx/build_system.rst, sphinx/distutils.rst:
--	Updated the docs regarding the build system and SIP v5.
--	[2828a3bb25af] <4.16-maint>
--
--	* sphinx/c_api.rst:
--	Updated the docs for sip.SIP_VERSION_STR.
--	[04e7630e6a41] <4.16-maint>
--
--2014-11-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	Removed the reference to MacHg in the internal build script.
--	[b1668849c472] <4.16-maint>
--
--2014-10-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.4 for changeset c5d0da367a1e
--	[cb045f5e074a] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.4.
--	[c5d0da367a1e] [4.16.4] <4.16-maint>
--
--2014-10-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug related to encoded C string arguments to
--	virtuals.
--	[f230cfcebc36] <4.16-maint>
--
--2014-10-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/descriptors.c:
--	Minor fix for Python v2.5 and earlier.
--	[3b7f6957ae4b] <4.16-maint>
--
--2014-10-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Reimplemented the __qualname__ support for enums so that it is
--	always non_NULL (because Python accesses the value directly
--	internally and doesn't go through the attribute interface).
--	[c2cfa151229a] <4.16-maint>
--
--2014-10-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, sphinx/c_api.rst:
--	Removed SIP_REACQUIRE_GIL as we no longer need it.
--	[7e026c2613ec] <4.16-maint>
--
--	* sipgen/transform.c:
--	Fixed a recent regression in the de-duplication of virtual catchers.
--	[65abadff114d] <4.16-maint>
--
--2014-10-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, sphinx/c_api.rst:
--	Added SIP_REACQUIRE_GIL.
--	[9ff042abc188] <4.16-maint>
--
--2014-10-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c, sphinx/annotations.rst:
--	Added the /AbortOnException/ function annotation.
--	[835f4d6bcb99] <4.16-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/transform.c,
--	sphinx/annotations.rst:
--	Added the /DisallowNone/ function annotation.
--	[8b2f4c02e106] <4.16-maint>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/metasrc/parser.y,
--	sipgen/sip.h.in, sphinx/annotations.rst:
--	Implemented the /DisallowNone/ argument annotation.
--	[d3a7fd6b1344] <4.16-maint>
--
--	* sipgen/metasrc/parser.y, sipgen/transform.c, sphinx/annotations.rst,
--	sphinx/c_api.rst:
--	Added the AllowNone function annotation.
--	[9d52162606b5] <4.16-maint>
--
--2014-09-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Virtual handlers with handwritten code can no longer be considered
--	to be the same.
--	[a4c712b72828] <4.16-maint>
--
--2014-09-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.3 for changeset 8ead57151bd1
--	[de0c3c076ab3] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.3.
--	[8ead57151bd1] [4.16.3] <4.16-maint>
--
--2014-09-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[b5de96615389] <4.16-maint>
--
--2014-09-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/bool.cpp, siplib/siplib.c.in:
--	Eliminated all compiler warnings when building on Windows with
--	qmake.
--	[1a321ad68223] <4.16-maint>
--
--2014-09-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Enums now support PEP 3155 fro Python v3.3 and later.
--	[a3f8a9b56659] <4.16-maint>
--
--2014-07-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py, configure.py.in:
--	Added fixes for QTBUG-39300.
--	[53f490fe8f52] <4.16-maint>
--
--2014-07-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.2 for changeset 4eb546b2c208
--	[21412c346e75] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.2.
--	[4eb546b2c208] [4.16.2] <4.16-maint>
--
--2014-06-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression that introduced some "modern" C code.
--	[449e2866018a] <4.16-maint>
--
--2014-06-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/metasrc/parser.y, sphinx/directives.rst:
--	Deprecated the %ConsolidatedModule directive as it won't be
--	supported in SIP v5.
--	[e4dc9d633742] <4.16-maint>
--
--2014-06-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a bug with /Out/ class pointer arguments in virtual methods.
--	[8abafd34bfab] <4.16-maint>
--
--	* sipgen/gencode.c:
--	Work around what looks like a Python2 bug in the handling of
--	composite modules.
--	[f113aea18630] <4.16-maint>
--
--2014-06-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16.1 for changeset efd5e09a4024
--	[787e2ce426f7] <4.16-maint>
--
--	* NEWS:
--	Released as v4.16.1.
--	[efd5e09a4024] [4.16.1] <4.16-maint>
--
--2014-06-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixes for Python v2.6.
--	[3974dcb54776] <4.16-maint>
--
--2014-06-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression in the creating of the build file when generating
--	individual source files.
--	[d9229cce7220] <4.16-maint>
--
--2014-05-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.16 for changeset d3a907d2acd1
--	[2a310fa9719a]
--
--	* NEWS:
--	Released as v4.16.
--	[d3a907d2acd1] [4.16]
--
--2014-05-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/descriptors.c:
--	Fixed a regression introduced when getting rid of warning messages.
--	[9472e2f08313]
--
--2014-05-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a regression in the handling of the --platform configure.py
--	option.
--	[1cc4bd967882]
--
--2014-05-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Eliminated a couple of (benign) warning messages.
--	[f6acb8ed7b65]
--
--2014-05-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[d3c64f5117e0]
--
--	* sipgen/main.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/command_line.rst, sphinx/directives.rst,
--	sphinx/incompatibilities.rst:
--	Changed the handling of timelines so that the latest version is
--	enabled if no known version is explicitly enabled. Added the -B
--	option to sip to allow timeline backstops to be defined.
--	[8a3fb94329aa]
--
--2014-05-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a bug in the handling of configuration files.
--	[61da788f455f]
--
--2014-05-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Don't generate an interface file if it will be empty.
--	[3f7d0afde4ce]
--
--	* siplib/siplib.c.in:
--	Ignore overflows when converting Python ints to C/C++.
--	[8065fb1cb418]
--
--2014-05-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /NoSetter/ variable annotation.
--	[422cc3b4ee5b]
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug for variables with multi-const types.
--	[dd6840986c03]
--
--2014-05-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/descriptors.c, siplib/siplib.c.in,
--	siplib/voidptr.c:
--	Fixed building against Python v2.5 and earlier.
--	[be46b0f3b785]
--
--	* NEWS, configure.py.in, sphinx/installation.rst:
--	Added the --no-tools option to configure.py.
--	[fcc0fc5d24c4]
--
--2014-05-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/installation.rst:
--	Some documentation fixes.
--	[210151d0ba6a]
--
--	* build.py, configurations/rpi_py3.cfg, sphinx/installation.rst:
--	Removed the configurations directory.
--	[4b482124587b]
--
--	* siplib/apiversions.c, siplib/array.c, siplib/descriptors.c,
--	siplib/siplib.c.in, siplib/voidptr.c:
--	Eliminated most warning messages. Fixed a memory leak in the
--	handling of sip.array.
--	[63626dea7508]
--
--	* configure.py.in, sphinx/installation.rst:
--	Removed the unneeded support for continuation lines in configuration
--	files.
--	[95f40f9a8967]
--
--	* NEWS, build.py, configurations/rpi_py3.cfg, configure.py.in,
--	siputils.py, sphinx/installation.rst:
--	Removed the --static-root option. Added the --configuration,
--	--sysroot and --target-py-version options. Added the Raspberry Pi
--	configuration file.
--	[e57308c0ef92]
--
--2014-05-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, build.py, configure.py.in, sphinx/installation.rst:
--	Added the --use-qmake option to configure.py so that it can be
--	cross-compiled.
--	[163331dc90b0]
--
--2014-05-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py, custom/custom.c, custom/customw.c, custom/mkcustom.py,
--	sphinx/build_system.rst, sphinx/builtin.rst, sphinx/index.rst:
--	Removed the (way out of date and superceded by pyqtdeploy) custom
--	directory.
--	[4e4a1cbe2f7e]
--
--	* NEWS, configure.py.in, sphinx/installation.rst:
--	Added the --static-root option to configure.py.
--	[c90befbc77d2]
--
--2014-04-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Handle in-line comments in spec files.
--	[044852da62d4]
--
--2014-04-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Fixed the previous fix. (This is C not C++.)
--	[a67e996e00d3]
--
--2014-04-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/voidptr.c:
--	Implemented nb_bool for sip.voidptr.
--	[7ca5aa6bde10]
--
--2014-04-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/qtlib.c, siplib/sipint.h:
--	Reversed the sense of the argument to check for signal receivers.
--	[e14829596147]
--
--	* NEWS, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in:
--	Added sipInvokeSlotEx() as support for the upcoming 'check_receiver'
--	flag in PyQt's connect().
--	[d7ef32db3967]
--
--2014-04-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y:
--	Merged the v4.15 maintenance branch into the trunk.
--	[8e55c9f2ba87]
--
--2014-04-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/conf.py.in:
--	Fixed the missing logo thumbnail.
--	[f53a9094e52e] <4.15-maint>
--
--2014-04-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in, sphinx/build_system.rst, sphinx/using.rst:
--	Updated the docs so that pyqtconfig is only mentioned in the context
--	of PyQt4. Fixed some typos.
--	[efa359fde2a4] <4.15-maint>
--
--2014-03-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the generation of Qt signal signatures so that they are
--	correct for Qt5.
--	[3f9633204687] <4.15-maint>
--
--2014-03-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	Fixed the handling of platforms and features that are disabled by
--	other platforms or features.
--	[0c1b13e45887] <4.15-maint>
--
--2014-03-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the handling of enums for C++11.
--	[85e544458789] <4.15-maint>
--
--2014-03-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15.5 for changeset 13906834d910
--	[411bbc879ae6] <4.15-maint>
--
--	* NEWS:
--	Released as v4.15.5.
--	[13906834d910] [4.15.5] <4.15-maint>
--
--2014-03-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Make sure an object doesn't already have a parent when adding it in
--	__init__() (ie. avoid an infinite loop if __init__() is called twice
--	for an object).
--	[05c32deeaeed] <4.15-maint>
--
--2014-03-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[8d7c37ddc55d] <4.15-maint>
--
--2014-02-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Added the PyQt signal hack #3. All versions of signals with optional
--	arguments are now generated for PyQt4 when built against Qt5.
--	[22c03a345d4e] <4.15-maint>
--
--2014-02-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the creation of wrapper scripts for Python v3.4 on OS/X.
--	[93e30c84cbf9] <4.15-maint>
--
--2014-02-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in:
--	Support for the PyQt4 signal hacks when building against Qt5.
--	[8bff7edb3c80] <4.15-maint>
--
--2014-02-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Implemented the PyQt5 signal emitters.
--	[4fc63f9adb44] <4.15-maint>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in:
--	Bumped the internal API to v11.0. The PyQt4 and PyQt5 specific data
--	structures are now completely separate in preparation for the signal
--	changes needed by PyQt5. Renamed the PyQt4Flags and
--	PyQt4NoQMetaObject annotations so that they are not PyQt4 specific.
--	[b96a5e69adb6] <4.15-maint>
--
--2014-02-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a name clash for a type in a module that has the same name as
--	the module when building against Python v2.
--	[d45411f2a001] <4.15-maint>
--
--2014-02-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Relax a test in the build system for PyQt v4.10.3 and earlier so
--	that we don't have to synch releases.
--	[e6e10c9f08b5] <4.15-maint>
--
--2014-02-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	sip.wrapinstance() will now handle addresses >32 bits on Windows64.
--	[5a95f257ccca] <4.15-maint>
--
--2014-02-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sphinx/annotations.rst:
--	Fixed the /KeepReference/ function annotation when applied to static
--	functions.
--	[2737c3074f4d] <4.15-maint>
--
--	* siputils.py:
--	Removed the requirement that Python must be built as a framework on
--	OS/X.
--	[fb6dbd80297b] <4.15-maint>
--
--2014-01-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
--	Removed the unnecessary (and broken) support for __unicode__().
--	[0b19f77489ce] <4.15-maint>
--
--2014-01-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siputils.py, sphinx/build_system.rst:
--	The use_arch argument of sipconfig.create_wrapper() will now accept
--	a space separated set of architectures.
--	[6fe353128007] <4.15-maint>
--
--2014-01-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a bug building on OSX when passing a value of LIBDIR to
--	configure.py on the command line.
--	[577bff05ca6d] <4.15-maint>
--
--2014-01-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15.4 for changeset 4d629a0d7510
--	[79a5b5e82ca3] <4.15-maint>
--
--	* NEWS:
--	Released as v4.15.4.
--	[4d629a0d7510] [4.15.4] <4.15-maint>
--
--2014-01-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* LICENSE, Roadmap.rst, build.py, configure.py.in, sipgen/export.c,
--	sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/main.c,
--	sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
--	sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
--	siplib/array.c, siplib/array.h, siplib/bool.cpp,
--	siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
--	siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
--	siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
--	Updated the copyright notices.
--	[b4a30e5b9970] <4.15-maint>
--
--2013-12-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Allow the pointers used to store the parsed results from Python
--	reimplementations to be NULL.
--	[7b83d16f7d28] <4.15-maint>
--
--	* build.py, sipgen/lexer.l, sipgen/metasrc/README,
--	sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/parser.y:
--	Moved the lexer and parser meta-source files to a separate directory
--	to avoid problems with make accidentaly regenerating them.
--	[c8d48c22ebf7] <4.15-maint>
--
--	* build.py:
--	Remove the __pycache__ directory when cleaning.
--	[a0682feb1e94] <4.15-maint>
--
--2013-12-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/array.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added SIP_SSIZE_T_FORMAT to the C API.
--	[e74243fcc265] <4.15-maint>
--
--2013-12-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y:
--	Fixed the parsing of C++ types involving multiple const and
--	pointers.
--	[7a74623b6967] <4.15-maint>
--
--2013-10-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/objmap.c, siplib/sipint.h,
--	siplib/siplib.c.in, siplib/voidptr.c:
--	Fixed all the compiler warning messages when building the sip
--	module.
--	[5e5fdf4cc35c] <4.15-maint>
--
--2013-10-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15.3 for changeset a751e48db99a
--	[dffbff1c0664] <4.15-maint>
--
--	* NEWS:
--	Released as v4.15.3.
--	[a751e48db99a] [4.15.3] <4.15-maint>
--
--2013-10-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed virtual re-implementations so that the number of generated
--	Python methods slots is correct and that re-implementations
--	explicitly marked as virtual are handled correctly.
--	[aa7806ed2405] <4.15-maint>
--
--2013-10-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the format of an exception with Python v2.
--	[5dc8c370157e] <4.15-maint>
--
--2013-09-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15.2 for changeset f8fdf4d1eb87
--	[82b599f547b1] <4.15-maint>
--
--	* NEWS:
--	Released as v4.15.2.
--	[f8fdf4d1eb87] [4.15.2] <4.15-maint>
--
--2013-09-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/array.h, siplib/sip.h.in.in,
--	sphinx/c_api.rst:
--	sipConvertToArray() will now optionally take ownership of the array
--	memory. Changed the signatures of sipConvertToArray() and
--	sipConvertToTypedArray(), but in a source and binary compatible way.
--	[908d49322dcf] <4.15-maint>
--
--	* siplib/array.c, sphinx/c_api.rst:
--	Added support for char, unsigned char, short, int, float and double
--	as array types.
--	[fc41755d6481] <4.15-maint>
--
--2013-08-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Further fixes for the handling of virtual methods.
--	[14732b487dda] <4.15-maint>
--
--2013-08-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15.1 for changeset 148b813a559c
--	[5ef6f2e04687] <4.15-maint>
--
--	* NEWS:
--	Released as v4.15.1.
--	[148b813a559c] [4.15.1] <4.15-maint>
--
--	* sipgen/transform.c:
--	Fixed a regression in the handling of hidden virtuals.
--	[15657c502e42] <4.15-maint>
--
--2013-08-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.15 for changeset 2f84fb045098
--	[1f9737376184]
--
--	* NEWS:
--	Released as v4.15.
--	[2f84fb045098] [4.15]
--
--2013-08-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Fixed a mistake in the documentation for /Factory/.
--	[4c2fe2e7397e]
--
--	* siplib/siplib.c.in:
--	Fixed a C++ism that crept into the sip module code.
--	[764f7fc80f1f]
--
--2013-08-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[69897cf50dea]
--
--2013-08-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipRegisterProxyResolver() to the public API.
--	[66235bf9625f]
--
--2013-08-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Documented sipConvertToArray() and sipConvertToTypedArray().
--	[bf49a3ad5612]
--
--2013-08-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/array.c, siplib/sipint.h, siplib/siplib.c.in:
--	Fixed the array support.
--	[e2d05fb54872]
--
--	* sipgen/gencode.c, siplib/array.c, siplib/array.h,
--	siplib/sip.h.in.in, siplib/siplib.c.in:
--	Added sipConvertToArray().
--	[660fdd5cb10e]
--
--	* sipgen/gencode.c:
--	Eliminated unused arguments in the setters of constant variables.
--	[e43b7d64c488]
--
--2013-08-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /NoScope/ enum annotation.
--	[aa4646c186d2]
--
--	* siplib/array.c, siplib/array.h, siplib/siplib.c.in:
--	Properly initialise the sip.array type.
--	[a7e4f6c62b8f]
--
--	* siplib/array.c, siplib/array.h, siplib/sip.h.in.in, siplib/sipint.h,
--	siplib/siplib.c.in:
--	Completed the array implementation for wrapped types.
--	[9e5b63022e19]
--
--2013-08-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/array.c, siplib/array.h,
--	siplib/sip.h.in.in, siplib/siplib.c.in, siplib/siplib.sbf.in:
--	Added the stub of the array support.
--	[ffb87d2e0fc5]
--
--2013-07-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Documented sipConvertFromNewPyType().
--	[ba59d434b206]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Changed the signature of sipConvertFromNewPyType() to handle
--	ownership and hide the internals of generated derived classes.
--	[5a9ba502593c]
--
--	* sipgen/gencode.c:
--	Fixed the PyQt5 generation of qt_metaobject() so that it supports
--	QML.
--	[2f18c4617542]
--
--2013-07-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/sipint.h,
--	siplib/siplib.c.in, siplib/threads.c:
--	Added the (as yet undocumented) sipConvertFromNewPyType().
--	[5a65f5bad461]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /ExportDerived/ class annotation.
--	[e3c78dfd30b8]
--
--2013-07-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Clear any exceptions before trying to parse a reimplementation
--	result.
--	[7bebd55f50b2]
--
--2013-07-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a mixin bug where C++ was using the mixin (rather than Python)
--	wasn't being detected properly.
--	[52d3b8035dca]
--
--2013-07-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a bug in the dereferencing of mixins.
--	[fc3df3e99932]
--
--2013-07-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
--	Implemented the PyQt5 plugin, including support for Qt interfaces.
--	Added sipGetMixinAddress() to the public API. Python
--	reimplementations of abstract mixins are now handled correctly.
--	[972540270afa]
--
--2013-07-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	The parser now handles multiple consts in type declarations.
--	[e7b6e4b5b1de]
--
--	* sipgen/gencode.c:
--	Properly implement /TransferBack/ even for return values that appear
--	to be always new because the type may be a mapped collection type
--	with elements that might not be new (e. QList<QTreeWidgetItem *>).
--	[9c073a101fb6]
--
--2013-07-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l:
--	Make sure that source locations are always valid (if not always
--	absolutely correct).
--	[e5a66c9174a6]
--
--2013-07-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in:
--	The parser can now handle expressions with casts.
--	[54ec565cf24e]
--
--	* sipgen/lexer.l:
--	Added support for numbers having trailing lLuU.
--	[88cc29113b02]
--
--2013-07-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Backed out changeset bd5b9927361b The problem is real (but currently
--	not triggered), but the fix breaks PyQt.
--	[3529b7c08228]
--
--2013-07-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed a bug where a method with %VirtualCatcherCode was being used
--	by a method without if they had the same signature.
--	[bd5b9927361b]
--
--	* configure.py.in:
--	Invalidate the import caches before trying to import the newly
--	created sipconfig.py.
--	[1e3ae0d5e790]
--
--	* sipgen/gencode.c:
--	Fixed the mixin support when the generated class definition may be a
--	sub-type.
--	[aec935209f0d]
--
--2013-07-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	A virtual catcher now calls the super-class implementation by via
--	the super-class rather than needing to know exactly where the
--	nearest implementation is.
--	[58987948b9fd]
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/descriptors.c, siplib/sip.h.in.in, siplib/sipint.h,
--	siplib/siplib.c.in, sphinx/annotations.rst:
--	Implemented the /Mixin/ class annotation.
--	[8b1702ce3226]
--
--2013-07-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h.in, siplib/siplib.c.in, sphinx/directives.rst:
--	Added the call_super_init argument to the %Module directive. Updated
--	the documentation.
--	[42950b118753]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Support for cooperative multi-inheritance must now be explicitly
--	enabled because it affects compatibility. Added a shortcut so that
--	the cooperative multi-inheritance support is skipped when it isn't
--	needed.
--	[07984388686f]
--
--2013-06-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/siplib.c.in:
--	Fixed the %Finalisation support so that QObject sub-classes work.
--	[17fc8e27b7e9]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Completed the support for cooperative multi-inheritance.
--	[ddd13ea38870]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Changed the API of td_final to minimise the creation of new dicts.
--	Fixed the calling of the super-class's __init__.
--	[195f0d1ab91c]
--
--2013-06-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Instead of calling super() to implement the cooperative multi-
--	inheritance, just call the __init__ of the next type in the MRO.
--	[da9edad8f7b1]
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Wrapped classes now support cooperative multi-inheritance with non-
--	sip classes. Implemented %FinalisationCode.
--	[aaedcb26099e]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in:
--	Added the code generator support for %FinalisationCode.
--	[e8b4b1ab730d]
--
--2013-06-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* Merged the v4.14 maintenance branch.
--	[97beee973f94]
--
--2013-06-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Fixed a reference count bug when a sip.voidptr is created from a
--	buffer object.
--	[02bdf6cc32c1] <4.14-maint>
--
--2013-06-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.7 for changeset ee771b441704
--	[6e6cc6c60a36] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.7.
--	[ee771b441704] [4.14.7] <4.14-maint>
--
--2013-06-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, build.py, sip.nsi.in, sphinx/installation.rst:
--	Removed the Windows installer as we can't have co-existant PyQt4 and
--	PyQt5 installers for other reasons.
--	[74e1df1d9940] <4.14-maint>
--
--2013-06-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sip.nsi.in, sphinx/installation.rst:
--	Debugged the installer.
--	[00678082f72e] <4.14-maint>
--
--	* build.py, sip.nsi.in:
--	Added the initial (not debugged) installer.
--	[d22b19884c62] <4.14-maint>
--
--	* sphinx/directives.rst:
--	Fixed a broken reference to the Python documentation.
--	[38ed755c797d] <4.14-maint>
--
--2013-06-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the last fix.
--	[67258ffe885a] <4.14-maint>
--
--2013-06-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y, sipgen/sip.h.in, siplib/siplib.c.in,
--	sphinx/annotations.rst:
--	Added the /Sequence/ function annotation. Added a work around for
--	the Python bug whereby nb_inplace_add is wrongly copied to
--	sq_inplace_concat if either are missing.
--	[029828cabb4d] <4.14-maint>
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h.in, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/directives.rst, sphinx/python_api.rst:
--	Added support for classes to have %ConvertFromTypeCode. Added
--	sipEnableAutoconversion() to the C API. Added
--	sip.enableautoconversion() to the Python API.
--	[4dbbc8c6c054] <4.14-maint>
--
--2013-06-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h.in.in,
--	siplib/sipint.h, siplib/siplib.c.in, siplib/threads.c:
--	Bumped the internal API to 10.0. Removed deprecated parts of the
--	private API. Added the stub for the optional convert from class
--	code.
--	[50319794231a] <4.14-maint>
--
--2013-06-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/qtlib.c, siplib/siplib.c.in:
--	Add more checks to make sure that PyQt5 isn't accidentally using
--	features that will be deprecated in SIP5.
--	[c80745f8ee0b] <4.14-maint>
--
--2013-06-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/qtlib.c:
--	Added assertions for Qt support for all API functions that provide
--	Qt support.
--	[aa60efc50608] <4.14-maint>
--
--2013-05-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Fixed a bug in converting an int to a voidptr.
--	[dd473964ac33] <4.14-maint>
--
--2013-05-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst:
--	Added sipSetDestroyOnExit() to the public C API.
--	[40660935c75b] <4.14-maint>
--
--2013-04-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug that affected QObject sub-classes with
--	dtor %MethodCode and with the GIL not released by default (ie.
--	PyQt5).
--	[bd9eccac4407] <4.14-maint>
--
--2013-04-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.6 for changeset 32dcb22f994c
--	[23da2e18916b] <4.14-maint>
--
--	* NEWS, Roadmap.rst:
--	Released as v4.14.6.
--	[32dcb22f994c] [4.14.6] <4.14-maint>
--
--2013-04-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sphinx/annotations.rst:
--	Documented that sub-classing from classes with different
--	implementations is not supported.
--	[1773f2100851] <4.14-maint>
--
--	* sipgen/parser.y:
--	Fixed a grammar bug in the parsing of %Module with no parenthesis.
--	[2d5256eda850] <4.14-maint>
--
--2013-04-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a bug in the parsing of SIP_ANYSLOT arguments.
--	[a9f7473ba9c7] <4.14-maint>
--
--2013-04-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Removed some redundant code generated for a component module.
--	[395bf9f00aa6] <4.14-maint>
--
--2013-03-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.5 for changeset e528e634d4db
--	[6a2bda53d2c0] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.5.
--	[e528e634d4db] [4.14.5] <4.14-maint>
--
--2013-03-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug when using /Array, Transfer/.
--	[054f1676c300] <4.14-maint>
--
--2013-03-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed a build system bug for QtWebKit on Linux against Qt v5.
--	[c65a525a0a17] <4.14-maint>
--
--2013-03-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.4 for changeset 4c818299f57a
--	[72b69b39a7a8] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.4.
--	[4c818299f57a] [4.14.4] <4.14-maint>
--
--2013-02-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, sphinx/installation.rst:
--	The --sdk flag to configure.py will now default to the directory
--	used by current versions of Xcode.
--	[312a27229b3f] <4.14-maint>
--
--2013-02-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sipint.h, siplib/siplib.c.in,
--	siplib/threads.c:
--	The thread support now only creates TLS when it is actually needed.
--	This makes sipStartThread() redundant and it is now deprecated.
--	Failing to allocate TLS will now raise an exception.
--	[34f6f0d52c1e] <4.14-maint>
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/directives.rst,
--	sphinx/incompatibilities.rst:
--	VirtualErrorHandler code is now called with the GIL and from the
--	thread that raised the exception. This ensures that the details of
--	the exception can be obtained. It also means that the default
--	handler (ie. PyErr_Print()) can also get the details.
--	VirtualErrorHandler code is now also provided sipGILState so that it
--	can call SIP_RELEASE_GIL() prior to changing the execution path.
--	[45a50c6d82fe] <4.14-maint>
--
--2013-02-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/introduction.rst.in:
--	Documentation updates regarding SIP v5.
--	[03f33e7fdfb1] <4.14-maint>
--
--2013-02-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c:
--	Fixed the generation of an unnecessary variable for array arguments.
--	[fb45cf6e775b] <4.14-maint>
--
--2013-02-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	The problem of the moc pathname is more widespread.
--	[bf2062f2318f] <4.14-maint>
--
--	* siputils.py:
--	Fix the build of QtWebKit on Windows. Workaround the foward slash
--	characters in the moc pathname on Windows/Qt5.
--	[13ee5a9fc8bd] <4.14-maint>
--
--2013-02-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the QAxContainer dependencies for Qt5.
--	[793be65e22b9] <4.14-maint>
--
--	* siputils.py:
--	Fixed the renaming of QAxContainer for Qt5.
--	[7e67f0559595] <4.14-maint>
--
--	* siputils.py:
--	Fixed the QAxContainer dependency for Qt5.
--	[d33f9eaa4394] <4.14-maint>
--
--	* siputils.py:
--	Build system changes for Qt5 on Windows.
--	[9abd1d0f5d3f] <4.14-maint>
--
--2013-01-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.3 for changeset 6e004d396299
--	[c9a29107c8ef] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.3.
--	[6e004d396299] [4.14.3] <4.14-maint>
--
--2013-01-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	When a Python object is garbage collected SIP no longer creates an
--	additional reference to any child Python objects so that those
--	children can now be handled by the garbage collector if appropriate.
--	We used to keep the extra reference to make sure any additional
--	attributes set in the child were preserved, however if the parent is
--	being deleted then the C++ object it wraps must have been (or is
--	about to be) destroyed, and therefore (if the parent/child
--	relationships between the Python objects are correct) the child
--	Python object is about to be deleted anyway. Before we relied on the
--	C++ child telling us when to garbage collect the Python child via
--	its virtual dtor - but this won't work if it was the C++ library
--	(rather than the Python application) that created the child.
--	[dc06058c99dd] <4.14-maint>
--
--2013-01-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Backed out changeset 4ec79ea69263 Realised that the (slight) change
--	in behaviour could break legitimate use cases.
--	[597c864debcc] <4.14-maint>
--
--	* siplib/siplib.c.in:
--	When a Python object is garbage collected its child Python objects
--	are now garbage collected unless they have an instance dict.
--	[4ec79ea69263] <4.14-maint>
--
--2013-01-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* LICENSE, build.py, configure.py.in, sipgen/export.c,
--	sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
--	sipgen/main.c, sipgen/parser.y, sipgen/sip.h.in, sipgen/sipgen.sbf,
--	sipgen/transform.c, siplib/apiversions.c, siplib/bool.cpp,
--	siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
--	siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
--	siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
--	Updated the copyright notices.
--	[ee3b1348996c] <4.14-maint>
--
--2013-01-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sphinx/annotations.rst:
--	The /KeepReference/ argument annotation, when applied to factories,
--	will now keep the reference with the object created by the factory.
--	[0ad6099f31fa] <4.14-maint>
--
--2013-01-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Properly implemented the support for passing objects that implement
--	the buffer protocol where a voidptr is expected.
--	[171bd8e1e037] <4.14-maint>
--
--	* siputils.py:
--	Changed the test for a Python framework build so that it works with
--	pyvenv.
--	[a612391f667c] <4.14-maint>
--
--2012-12-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Further build system fixes for Linux/Qt5.
--	[04dec290a15e] <4.14-maint>
--
--	* siputils.py:
--	Fix the build system for the Linux specific naming conventions of
--	the Qt5 libraries.
--	[05cb90880c2b] <4.14-maint>
--
--2012-12-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the build system for QtTest in Qt5.
--	[55188026fe6d] <4.14-maint>
--
--2012-12-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.2 for changeset e9180a8d374f
--	[ed864cf2277f] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.2.
--	[e9180a8d374f] [4.14.2] <4.14-maint>
--
--2012-12-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the build system for Qt v5-rc1.
--	[44586b952072] <4.14-maint>
--
--2012-11-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	The build system now knows that QtWebKit is QtWebKitWidgets in Qt5.
--	[b8261071d302] <4.14-maint>
--
--2012-11-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/siplib.c.in, sphinx/python_api.rst:
--	Added sip.setdestroyonexit().
--	[b063e90b6c20] <4.14-maint>
--
--	* siplib/voidptr.c:
--	Backed out to keep the behaviour the same as memoryview.
--	[e8f21b0950c8] <4.14-maint>
--
--	* siplib/voidptr.c:
--	Backed out to keep the behaviour the same as memoryview.
--	[26717fbefb61] <4.14-maint>
--
--2012-11-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Patch from Matt Newell to fix /HoldGIL/ when exceptions are enabled.
--	[669ecadaaae1] <4.14-maint>
--
--2012-11-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	A simple index of a sip.voidptr now returns an int rather than a
--	string/bytes of length 1.
--	[80ee79901dc9] <4.14-maint>
--
--	* siplib/voidptr.c:
--	Fixed simple index item assignment for voidptr.
--	[3cb217678514] <4.14-maint>
--
--	* siplib/voidptr.c:
--	The new buffer interface was backported to v2.6.3.
--	[47f4f489055e] <4.14-maint>
--
--	* NEWS, siplib/voidptr.c, sphinx/python_api.rst:
--	sip.voidptr() will now accept any object that implements the (old or
--	new) buffer protocols.
--	[cb7799eb557b] <4.14-maint>
--
--	* sphinx/python_api.rst:
--	Clarified the docs for __getitem__ and __setitem__ for sip.voidptr.
--	[32fb8513b196] <4.14-maint>
--
--2012-10-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14.1 for changeset d0431cee7920
--	[6b278a98323b] <4.14-maint>
--
--	* NEWS:
--	Released as v4.14.1.
--	[d0431cee7920] [4.14.1] <4.14-maint>
--
--2012-10-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	More buffer support fixes.
--	[1fe9c59f0f06] <4.14-maint>
--
--	* siplib/siplib.c.in:
--	Both the old and new buffer protocols are now checked.
--	[7227f121bac9] <4.14-maint>
--
--2012-10-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h.in, sipgen/transform.c,
--	siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/annotations.rst,
--	sphinx/c_api.rst, sphinx/specification_files.rst:
--	Added support for types that implement the buffer protocol.
--	[4ec285852cba] <4.14-maint>
--
--	* siplib/siplib.c.in:
--	None may be provided whenever a capsule is expected.
--	[b90e3475bdfc] <4.14-maint>
--
--2012-10-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Renamed the sipCapsule_* macros to be consistent with other similar
--	ones.
--	[1913168e0c8d] <4.14-maint>
--
--	* sipgen/export.c:
--	The type name of a capsule is now used in docstrings.
--	[1c8ce8a61324] <4.14-maint>
--
--	* sphinx/directives.rst:
--	Fixed a documentation typo.
--	[94362407c872] <4.14-maint>
--
--2012-10-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Eliminated a C compiler warning message from the generated code.
--	[e60f63cfe0d1] <4.14-maint>
--
--	* NEWS, sipgen/parser.y, sipgen/sip.h.in:
--	The C prototype foo(void) is now accepted.
--	[54aca3c0b75e] <4.14-maint>
--
--	* sipgen/lexer.l, sipgen/transform.c:
--	Fixed a bug in the saving of line numbers for error messages when
--	the error is on the last significant line.
--	[7c77e368814f] <4.14-maint>
--
--	* NEWS, sipdistutils.py, sphinx/distutils.rst:
--	If no sip-opts are defined sipdistutils.py will now use any
--	swig_opts passed to the Extension ctor.
--	[6fcc431a81bf] <4.14-maint>
--
--2012-10-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in, sphinx/annotations.rst, sphinx/c_api.rst:
--	Increased the API version number to 9.1. Added the /Capsule/ typedef
--	annotation. Added the 'z' format character to sipBuildResult().
--	Added the 'z' format character to sipParseResult().
--	[f4bc254f96d8] <4.14-maint>
--
--2012-10-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed regressions in the handling of types when generating code for
--	C modules.
--	[3eba5b9842f0] <4.14-maint>
--
--2012-10-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Explicity close files in siputils.py to avoid resource warning
--	messages.
--	[fdc332e116b2] <4.14-maint>
--
--2012-10-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Backed out the changes to the signal table generation (and revert
--	the API version to 9.0) because they are no longer needed.
--	[38235401ffbc] <4.14-maint>
--
--2012-10-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Renamed PYQT4_SIGNAL_EXPLICIT to PYQT4_SIGNAL_FIXED_ARGS. Renamed
--	PYQT4_SIGNAL_MASK to PYQT4_SIGNAL_ARGS_MASK.
--	[cfbd55297dcd] <4.14-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Added the flags member to the pyqt4QtSignal structure so that PyQT
--	can distinguish between explicitly defined signals and those added
--	to support optional arguments.
--	[81617aa9e051] <4.14-maint>
--
--2012-10-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in:
--	Revised the previous change to keep the brackets unless the signal
--	has no arguments. (PyQt relies on the format for some of its
--	exceptions.)
--	[dd884ddcb239] <4.14-maint>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in:
--	Changed the docstrings for signals to use parenthesis rather than
--	brackets as it is less confusing.
--	[3f6128385aa2] <4.14-maint>
--
--2012-09-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.14 for changeset 90ea220ecc4b
--	[76a18a32f759]
--
--	* NEWS:
--	Released as v4.14.
--	[90ea220ecc4b] [4.14]
--
--2012-09-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[214dd6433474]
--
--2012-09-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/directives.rst, sphinx/embedding.rst,
--	sphinx/incompatibilities.rst, sphinx/python_api.rst,
--	sphinx/using.rst:
--	Got rid of all Sphinx warning messages.
--	[cbf911605931]
--
--2012-09-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, specs/win32-msvc2008, specs/win32-msvc2010:
--	Updated the win32-msvc2008 spec file. Taught the build system about
--	MSVC 2010.
--	[5d3c5164342a]
--
--2012-09-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, siputils.py:
--	Taught the build system about Qt5's CXXFLAGS_APP macro.
--	[4e2fddd95c07]
--
--	* sphinx/annotations.rst:
--	Another correction to the /Factory/ documentation.
--	[f030580a19f6]
--
--2012-09-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Fixed the incorrect /Factory/ documentation.
--	[3b76a41a1f4a]
--
--2012-09-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the signature for generated virtual error handler functions.
--	[caa74f25dff8]
--
--2012-09-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Fixed an initialisation bug in the parser by making it resiliant to
--	future changes.
--	[fd2e76ea8e16]
--
--2012-09-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in:
--	Fixed a few compiler warning messages.
--	[a8aaecad7327]
--
--2012-09-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
--	sipgen/sip.h.in, sphinx/directives.rst:
--	Added support for the SIP_PLATFORM_* and SIP_TIMELINE_* preprocessor
--	symbols.
--	[664ec65acb33]
--
--2012-09-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	A build system fix for Qt v5-beta1.
--	[6d704a7ab6c5]
--
--	* siplib/sip.h.in.in:
--	Removed the ANY SIP v3 compatibility macro as it causes problems
--	with Qt v5.
--	[40aeb5a8f98e]
--
--2012-09-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sipgen/transform.c:
--	The AllowNone and NoRelease mapped type annotations can now be
--	applied to mapped type templates.
--	[3da91337f333]
--
--	* sphinx/annotations.rst:
--	Documented the PyName mapped type annotation.
--	[b1a5b8cab2ab]
--
--	* sipgen/lexer.l:
--	Improved the parsing of floating point literals thanks to Andrea
--	Griffini.
--	[be35aa0bb4b5]
--
--2012-09-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/c_api.rst, sphinx/directives.rst:
--	Added sipCallErrorHandler() to the private API. A virtual error
--	handler is now called with the GIL released. The sipGILState
--	variable is no longer passed to an error handler.
--	[be42df79035d]
--
--2012-08-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sphinx/annotations.rst, sphinx/directives.rst:
--	Updated the docs regarding the latest virtual error changes.
--	[86a4f33db172]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in:
--	Changed the virtual error handler support yet again so that error
--	handlers are automatically exported to sub-classes and sub-modules.
--	[118500886fa7]
--
--2012-08-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Completed the refactoring of virtual handlers to use
--	sipParseResultEx().
--	[397b4ade7900]
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Added sipParseResultEx() to the private API as a stub for future
--	changes.
--	[659fcb20bbc9]
--
--	* specs/macx-xcode:
--	Merged the 4.13 branch into the trunk.
--	[96ef5f43f010]
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
--	sphinx/annotations.rst, sphinx/c_api.rst, sphinx/directives.rst:
--	Replaced the virtual error support (again) with the
--	%DefaultVirtualErrorHandler directive, the /NoVirtualErrorHandler/
--	and /VirtualErrorHandler/ function annotations, and the
--	/VirtualErrorHandler/ class annotation. Added sip_gilstate_t and
--	SIP_RELEASE_GIL() to the public API. The Sphinx docs now use C
--	domains where appropriate.
--	[71c0d64913bc] <4.13-maint>
--
--2012-08-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in:
--	Bumped the API version number to 9.0. Removed the support for
--	pre-9.0 variable structures. Changed the sipVariableGetterFunc
--	signature to pass the Python object.
--	[d8824768aa51] <4.13-maint>
--
--	* sphinx/c_api.rst:
--	Updated the documentation for sipConvertToType().
--	[32c2c73f4c27] <4.13-maint>
--
--2012-08-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
--	sphinx/annotations.rst, sphinx/directives.rst:
--	Changed the support for flagging errors in Python reimplementations
--	of virtuals by adding the %VirtualErrorCode directive and removing
--	SIPPyException. Also replaced the all_throw_cpp_exception %Module
--	argument with all_use_VirtualErrorCode, and the
--	/NoThrowsCppException/ and /ThrowsCppException/ function annotations
--	with /NoUsesVirtualErrorCode/ and /UsesVirtualErrorCode/.
--	[523c3bccb41b] <4.13-maint>
--
--2012-08-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in:
--	Fixed the support for virtual handler exceptions so that memory
--	isn't leaked and the GIL is released.
--	[f644e914b292] <4.13-maint>
--
--	* sipgen/transform.c:
--	A simply tidy up after the previous change.
--	[b3cd21a00d51] <4.13-maint>
--
--	* sipgen/transform.c:
--	Backed out changeset 1066 and did it properly.
--	[368eaa1143bd] <4.13-maint>
--
--2012-08-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
--	sphinx/annotations.rst, sphinx/directives.rst:
--	Added the all_throw_cpp_exception argument to the %Module directive.
--	Added the /ThrowCppException/ and /NoThrowCppException/ function
--	annotations.
--	[5f97352e818f] <4.13-maint>
--
--2012-08-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	No longer require that the types of the arguments of a C/C++
--	signature are fully defined to SIP.
--	[01e11dc52626] <4.13-maint>
--
--2012-08-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/siplib.c.in, sphinx/c_api.rst:
--	sipTransferTo() now increments the reference count of an object if
--	the owner is Py_None. Fixed a type checking bug in sip.transferto().
--	Deprecated sipTransferBreak().
--	[f59d135ae51c] <4.13-maint>
--
--2012-08-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	For Python v2.x unsigned short and unsigned byte are now converted
--	to int rather than long objects (to be consistent with the signed
--	versions).
--	[897e085bdd97] <4.13-maint>
--
--	* siplib/siplib.c.in:
--	Make sure an exception is raised when converting to a character when
--	a string longer than one character is passed.
--	[28ea90cba3a9] <4.13-maint>
--
--2012-07-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipdistutils.py:
--	Applied a patch from Oliver Nagy to fix sipdistutils.py for Python
--	v3.
--	[5775580258b3] <4.13-maint>
--
--2012-07-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the use of a Python3 specific format character.
--	[801ae4c35450] <4.13-maint>
--
--2012-07-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst, sphinx/directives.rst,
--	sphinx/specification_files.rst:
--	Implemented the %InstanceCode directive.
--	[9b330b545c65] <4.13-maint>
--
--2012-07-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Reformatted some comments.
--	[fa8592b30bf5] <4.13-maint>
--
--	* configure.py.in, sipgen/export.c, sipgen/extracts.c,
--	sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l, sipgen/main.c,
--	sipgen/sip.h.in, sipgen/sipgen.sbf, sipgen/transform.c,
--	siplib/apiversions.c, siplib/bool.cpp, siplib/descriptors.c,
--	siplib/objmap.c, siplib/qtlib.c, siplib/sipint.h,
--	siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
--	sphinx/conf.py.in, sphinx/directives.rst:
--	Updated the dates on various copyright notices.
--	[257d223f5d45] <4.13-maint>
--
--2012-06-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Fixed a documentation typo.
--	[e1a825c52e33] <4.13-maint>
--
--2012-06-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.13.3 for changeset 589228145d51
--	[1cbf533ebe71] <4.13-maint>
--
--	* NEWS:
--	Released as v4.13.3.
--	[589228145d51] [4.13.3] <4.13-maint>
--
--2012-06-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/siplib.c.in:
--	Another fix for the handling of keyword arguments when used with
--	unbound methods.
--	[377e9e4763f5] <4.13-maint>
--
--2012-06-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the handling of keyword arguments when used with unbound
--	methods.
--	[cdd78f0c72b2] <4.13-maint>
--
--2012-06-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Apply a cast to the argument to
--	sipConvertFrom[Const]VoidPtr[AndSize]() when it was defined with a
--	typedef. This makes it easier to use typedef as a way of hiding the
--	complexities of a type that SIP doesn't handle.
--	[c814c38523ff] <4.13-maint>
--
--2012-05-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/siplib.c.in, sphinx/annotations.rst, sphinx/directives.rst:
--	The /NoRaisesPyExceptions/ and /RaisesPyExceptions/ function
--	annotations can no be used with constructors. Updated the NEWS file.
--	[482aa7e3f1ab] <4.13-maint>
--
--2012-04-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* specs/macx-xcode:
--	Removed the macx-xcode file at it isn't supported by the build
--	system.
--	[31ad477ff5ae] <4.13-maint>
--
--2012-04-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Removed the free() of a code block filename now that filenames are
--	retained for error messages.
--	[16ef20290565] <4.13-maint>
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	Error messages related to callables should now include the filename
--	and line number of the callable in the .sip source file.
--	[fa6c71904d78] <4.13-maint>
--
--2012-04-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the support for keeping an extra reference to a containing
--	class when refering to a member variable.
--	[fbb9cdbad791] <4.13-maint>
--
--2012-04-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Eliminate a race condition in sip_api_is_py_method().
--	[871a7b44c8f0] <4.13-maint>
--
--2012-04-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in:
--	Improved the text of the exception raised when a wrapped C/C++
--	object doesn't exist.
--	[dd2d72cac87f] <4.13-maint>
--
--2012-04-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Taught the build system about Qt5's QtGui module.
--	[8d2739f3225f] <4.13-maint>
--
--2012-04-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Allow a string as well as an identifier for arguments to various
--	name= settings so that name="name" can be used.
--	[d5e6a1fa39f2] <4.13-maint>
--
--2012-03-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Updated the Unicode support for Python v3.3.
--	[0870e512d8dd] <4.13-maint>
--
--2012-03-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/sip.h.in.in:
--	Ensure a reference is kept to the containing object when getting an
--	instance variable that is a non-const wrapped object. This should
--	(safely) avoid a certain kind of application bug.
--	[0dd3cb4eff0e] <4.13-maint>
--
--	* siplib/qtlib.c:
--	Effectively backed out change 769 because it causes inconsistent
--	behaviour when a method is connected to its object's destroyed()
--	method.
--	[ca0fb2b4bd89] <4.13-maint>
--
--2012-02-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	If a Python reimplementation is a descriptor then use the descriptor
--	protocol to bind it (specifically added for Nuitka).
--	[88844f85f705] <4.13-maint>
--
--2012-02-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.13.2 for changeset 4efeefee717e
--	[389a142d1997] <4.13-maint>
--
--	* NEWS:
--	Updated the NEWS file. Released as v4.13.2.
--	[4efeefee717e] [4.13.2] <4.13-maint>
--
--2012-02-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Fixed bad pointer bugs in the parsing of exceptions.
--	[1058b2c18309] <4.13-maint>
--
--2012-01-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/objmap.c:
--	Handle aliases properly when discovering that an object has been
--	deleted.
--	[f51e159f6dff] <4.13-maint>
--
--2011-12-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.13.1 for changeset a782debccd42
--	[8a56d87be977] <4.13-maint>
--
--	* NEWS:
--	Released as v4.13.1.
--	[a782debccd42] [4.13.1] <4.13-maint>
--
--2011-12-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a bug in the generation of PyQt signal signatures that caused
--	a "const" to be wrongly dropped.
--	[39cf1d1d8167] <4.13-maint>
--
--2011-12-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Properly handle %PickleCode returning NULL.
--	[29ec1c523114] <4.13-maint>
--
--2011-12-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, Roadmap.rst, sipgen/main.c:
--	Deprecation warnings can no longer be suppressed. Updated the NEWS
--	file. Updated the Roadmap.
--	[358be4ede9fc] <4.13-maint>
--
--2011-12-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/objmap.c:
--	Completed the support for object aliases when garbage collecting an
--	object.
--	[7ab562ae0e39] <4.13-maint>
--
--	* siplib/objmap.c, siplib/sip.h.in.in, siplib/sipint.h,
--	siplib/siplib.c.in:
--	When an object that uses multiple inheritance in its class hierachy
--	is wrapped, all of its addresses when cast to the different super-
--	classes are internally registered as aliases. This means that the
--	original object will be found when given an address that is
--	different as a result of a cast. (Note that the support for removing
--	aliases when the object is garbage collected is not yet done.)
--	[da88157d2f03] <4.13-maint>
--
--2011-12-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Backed out 1013. It breaks when the method is overloaded in a super-
--	class but only one overload is reimplemented in this class so the
--	compiler doesn't see the other overload in the super-class so we
--	must refer to it explicitly.
--	[82af71f0adcb] <4.13-maint>
--
--	* sipgen/gencode.c:
--	Backed out 1014.
--	[e50d347a15db] <4.13-maint>
--
--2011-11-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Fixed the generation of handlers for virtuals defined in templates.
--	[98421b9cc511] <4.13-maint>
--
--	* siputils.py:
--	The build system now handles recursively defined macros.
--	[5d7476cbb504] <4.13-maint>
--
--2011-11-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	sipSelf is now generated with the correct const qualifier.
--	[3c46012c8562] <4.13-maint>
--
--	* NEWS, sipgen/parser.y, sphinx/specification_files.rst:
--	Protected and private super-classes can now be specified but are
--	otherwise ignored.
--	[f331e22716d9] <4.13-maint>
--
--	* custom/mkcustom.py:
--	Support for sys.platform being 'linux3'.
--	[01a339a7f2e9] <4.13-maint>
--
--2011-11-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y, sphinx/annotations.rst:
--	Added the /PyName/ typedef annotation.
--	[8c147224120a] <4.13-maint>
--
--2011-11-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the build system for building a debug version of PyQt on OS/X.
--	[3b44dc2f0efd] <4.13-maint>
--
--	* NEWS, sipgen/parser.y, sipgen/sip.h.in, sipgen/transform.c:
--	Class templates now allow template arguments to be used as a super-
--	class.
--	[08e44ad74137] <4.13-maint>
--
--2011-11-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y:
--	Added support for 'public' preceding the name of a class in a super-
--	class list.
--	[7fbb8a754a81] <4.13-maint>
--
--	* sipgen/parser.y, sphinx/annotations.rst, sphinx/directives.rst,
--	sphinx/specification_files.rst, sphinx/using.rst:
--	Updated the docs where the examples refered to deprecated syntax.
--	[36208e0a6773] <4.13-maint>
--
--	* NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst, sphinx/directives.rst:
--	Added the all_raise_py_exception argument to the %Module directive.
--	Added the /NoRaisesPyException/ function annotation.
--	[bf725fdfd029] <4.13-maint>
--
--	* sipgen/gencode.c:
--	Fixed the previous change for classes contained in namespaces.
--	[09411053ef1b] <4.13-maint>
--
--	* sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
--	Virtual catchers will now call the most recent C++ implementation
--	(if there is no Python reimplementation) even if it is unknown to
--	SIP rather than the most recent implementation that SIP knows about.
--	[8893e36b8ca3] <4.13-maint>
--
--2011-11-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Updated some code generator comments.
--	[fad4bdca5bbd] <4.13-maint>
--
--2011-11-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Make sure PyQt's internal static support libraries don't get added
--	to rpath.
--	[91848382e6fd] <4.13-maint>
--
--2011-11-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Added support for void template arguments.
--	[1c699c672ed7] <4.13-maint>
--
--2011-10-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.13 for changeset 0869eb93c773
--	[3b2a3fb3fdda]
--
--	* NEWS:
--	Released as v4.13.
--	[0869eb93c773] [4.13]
--
--	* Merged the v4.12 maintenance branch into the trunk.
--	[021e97baeeb0]
--
--	* NEWS:
--	Updated the NEWS file.
--	[af334da384fd] <4.12-maint>
--
--2011-10-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sphinx/specification_files.rst:
--	'*' and '&' are now accepted as unary operators in expressions used
--	to define the values of default arguments.
--	[4eba42cb2457] <4.12-maint>
--
--	* sipgen/parser.y, sipgen/sip.h.in:
--	Further fix for overloads with a variant that is protected and a
--	variant that has optional arguments defined in a module that
--	supports keyword arguments imported by a module that doesn't.
--	[79951a333f30] <4.12-maint>
--
--2011-10-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sphinx/annotations.rst:
--	The /Transfer/ annotation can now be used with the /Array/
--	annotation to prevent the freeing of the temporary array of
--	pointers.
--	[3a009ee97d60] <4.12-maint>
--
--2011-10-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/siplib.c.in, sphinx/directives.rst:
--	%ConvertToSubClassCode can now cause a restart of the conversion
--	process using a different requested type. This enables the correct
--	handling of PyQt's QLayoutItem.
--	[fa212070a486] <4.12-maint>
--
--2011-10-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	sipIsPyMethod() now allows for an object's type's tp_mro to be NULL.
--	This can happen when the only instance of a dynamically created type
--	is in the process of being garbage collected.
--	[d66046441fa8] <4.12-maint>
--
--2011-10-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Commit backout.
--	[6e11ad753de6] <4.12-maint>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	Backed out changeset 0bcc2ce09ba0 This (and the following changeset)
--	doesn't seem to make a difference.
--	[2df67f4a3294] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Commit backout.
--	[4a9b20624f88] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Backed out changeset de3fe63e5dec This (and the previous changeset)
--	doesn't seem to make a difference.
--	[78740eff2bf4] <4.12-maint>
--
--2011-09-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Add an atexit function that will disable all Python
--	reimplementations of virtuals.
--	[de6a700f5faa] <4.12-maint>
--
--2011-09-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/directives.rst:
--	Added the %DefaultDocstringFormat directive. Added the format
--	argument to the %Docstring directive.
--	[dba052605539] <4.12-maint>
--
--2011-09-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the previous fix to sipIsPyMethod() so that it doesn't retain
--	the GIL.
--	[de3fe63e5dec] <4.12-maint>
--
--2011-09-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
--	sipIsPyMethod() now acquires the GIL before checking if the Python
--	object has been garbage collected.
--	[0bcc2ce09ba0] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Fixed a typo in a comment.
--	[c4ad84eeed37] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Added a missing Py_DECREF() on a (very rarely used) error handling
--	path.
--	[a99ab15f7b18] <4.12-maint>
--
--2011-09-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug where a module with keyword arguments
--	disabled derives from a class imported from a module with them
--	enabled.
--	[1c3d2412e35a] <4.12-maint>
--
--2011-08-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	PyQt will now only delete a QObject if the QObject belongs to the
--	current thread, otherwise it calls deleteLater().
--	[c2987628087f] <4.12-maint>
--
--2011-08-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.12.4 for changeset 7dff386f6d8c
--	[49580889fa23] <4.12-maint>
--
--	* NEWS:
--	Released as v4.12.4.
--	[7dff386f6d8c] [4.12.4] <4.12-maint>
--
--2011-07-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siputils.py:
--	Added support for Qt configured with -qtlibinfix based on a patch
--	from Ian Scott.
--	[d87cea364549] <4.12-maint>
--
--	* NEWS, sipgen/gencode.c, siplib/siplib.c.in:
--	Switched to using PyLong_AsUnsignedLongMask() and
--	PyLong_AsUnsignedLongLongMask() instead of the non-mask versions so
--	that overflow is ignored.
--	[533e6a9e3e3a] <4.12-maint>
--
--2011-07-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Make sure the %TypeHeaderCode of a /Default/ %Exception is included.
--	[bbe43a0bad78] <4.12-maint>
--
--2011-06-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a regression introduced in the recent sipIsPyMethod() changes
--	in the handling of special methods implemented by object (eg.
--	__lt__).
--	[f9f4b161c940] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Fixed some other warnings from more (undocumented) Python v3.2
--	changes.
--	[df42f6bf92c8] <4.12-maint>
--
--	* siplib/sip.h.in.in, siplib/voidptr.c:
--	Fixed sipConvertFromSliceObject() for Python v3.2.
--	[3d0336c32dfa] <4.12-maint>
--
--2011-06-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	Fixed the build system for MacOS as the development platform.
--	[fdd3cecee60d] <4.12-maint>
--
--2011-05-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.12.3 for changeset 50282bee0c60
--	[54c00a0e9c01] <4.12-maint>
--
--	* NEWS:
--	Released as v4.12.3.
--	[50282bee0c60] [4.12.3] <4.12-maint>
--
--2011-05-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Generated signal signatures no longer remove the reference '&' for
--	non-const arguments.
--	[274e38133e7a] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	Fixed the calling of hooks for Python3.
--	[192dfa04b3ac] <4.12-maint>
--
--2011-05-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in, sphinx/incompatibilities.rst:
--	When searching for a Python reimplementation of a virtual C++
--	method, any object that is not a C++ method wrapper is assumed to be
--	valid. Previously, if it wasn't a Python function or method then it
--	would be ignored. This is a potential incompatibility, but any code
--	that is affected is either buggy or badly written.
--	[f95ee221598d] <4.12-maint>
--
--2011-04-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.12.2 for changeset dd8f52a95d04
--	[b99179c54a07] <4.12-maint>
--
--	* NEWS:
--	Released as v4.12.2.
--	[dd8f52a95d04] [4.12.2] <4.12-maint>
--
--2011-04-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c:
--	Added support for global inplace numeric operators.
--	[af33bd829af3] <4.12-maint>
--
--	* sipdistutils.py:
--	Updated the license and copyright information for sipdistutils.py.
--	[94f4971497a9] <4.12-maint>
--
--2011-04-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Made sure thngs were initialised to 0 properly when parsing new-
--	style directives for variables.
--	[c3f5a8b89968] <4.12-maint>
--
--2011-04-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y:
--	Handwritten code in class templates no longer has types substituted
--	in lines that appear to be C preprocessor directives. This prevents
--	#include'd file names getting substituted.
--	[e039b65daa03] <4.12-maint>
--
--2011-04-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a regression in the handling of keyword arguments.
--	[f68e042c94f5] <4.12-maint>
--
--2011-03-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the news file.
--	[ec9807971e08] <4.12-maint>
--
--2011-03-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	The names of optional arguments to protected methods are generated
--	no matter what module the method is defined in.
--	[fe4c052830ff] <4.12-maint>
--
--	* sipgen/gencode.c:
--	Another fix for the bad protected enum fix.
--	[d112d90bcbfd] <4.12-maint>
--
--	* sipgen/parser.y:
--	Fixed a bug where keyword argument names were being generated when
--	being defined in a parent module.
--	[3e11c4b7d541] <4.12-maint>
--
--2011-03-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Mapped type template arguments now include "const" if appropriate.
--	[22c5009485a8] <4.12-maint>
--
--	* sipgen/gencode.c:
--	Fixed a regression that caused enums in namespaces to be ignored.
--	[f9b89f2c1c7d] <4.12-maint>
--
--2011-03-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	The keyword support now explicitly checks that keywords are
--	provided. Python handles this for ordinary methods but not for
--	__init__.
--	[05718fa95834] <4.12-maint>
--
--2011-03-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Code is no longer generated for protected enums of /Abstract/
--	classes.
--	[d349bb35cdcc] <4.12-maint>
--
--2011-03-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	The /KeepReference/ function annotation now keeps a reference even
--	if the result is already owned by Python.
--	[ecb3e795382e] <4.12-maint>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c,
--	sphinx/annotations.rst:
--	/KeepReference/ can now be used as a function annotation.
--	[dc7effca2a82] <4.12-maint>
--
--	* configure.py.in:
--	A fix for when building outside the source directory.
--	[942f1b8ac66b] <4.12-maint>
--
--2011-03-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
--	sipgen/transform.c:
--	The %TypeHeaderCode from a class template is now included in the
--	generated code.
--	[b5992208a757] <4.12-maint>
--
--2011-02-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sipgen/transform.c:
--	typedefs in class templates are now handled correctly.
--	[62e2faa4fb81] <4.12-maint>
--
--	* sipgen/transform.c:
--	When comparing mapped type templates the number of dereferences of
--	the template arguments is now taken into account.
--	[9cf3969984a5] <4.12-maint>
--
--2011-02-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	%Docstring applied to a Qt signal is no longer ignored.
--	[0fae9a0aae28] <4.12-maint>
--
--2011-02-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed /KeepReference/ when used with ctors.
--	[1a5475b48b7c] <4.12-maint>
--
--2011-01-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.12.1 for changeset 6a8117e8b16a
--	[2ead36288f97] <4.12-maint>
--
--	* NEWS, build.py:
--	Released as v4.12.1.
--	[6a8117e8b16a] [4.12.1] <4.12-maint>
--
--2011-01-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Tweaked an exception message to make it easier to mimic in
--	handwritten code.
--	[426308437843] <4.12-maint>
--
--	* sipgen/transform.c:
--	sip will now longer complain about callables with the same Python
--	signature if either of them has %MethodCode as it assumes that the
--	%MethodCode will resolve any potential conflicts.
--	[9ed59e5c8070] <4.12-maint>
--
--2011-01-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py, sphinx/conf.py.in, sphinx/static/default.css,
--	sphinx/static/logo.png, sphinx/static/logo_tn.ico:
--	Added a new Sphinx stylesheet.
--	[c0c94278423e] <4.12-maint>
--
--2011-01-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[fa100876a783] <4.12-maint>
--
--2011-01-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* LICENSE, build.py, configure.py.in, sipgen/export.c,
--	sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
--	sipgen/main.c, sipgen/parser.y, sipgen/sip.h.in, sipgen/sipgen.sbf,
--	sipgen/transform.c, siplib/apiversions.c, siplib/bool.cpp,
--	siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
--	siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
--	siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
--	Updated the copyright notices.
--	[42e1cfe37140] <4.12-maint>
--
--	* sphinx/directives.rst:
--	Fixed a documentation typo.
--	[e54f022f78f6] <4.12-maint>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	sphinx/annotations.rst:
--	Added the /RaisesPyException/ function annotation.
--	[649736ef0ab2] <4.12-maint>
--
--2011-01-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, siputils.py, sphinx/build_system.rst,
--	sphinx/installation.rst:
--	Added the --deployment-target option to configure.py which should be
--	used to work around bugs in the latest versions of Python on
--	MacOS/X.
--	[18c8fe174f38] <4.12-maint>
--
--2011-01-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug in the %MethodCode error handling for
--	zero argument slots.
--	[4ed8b04e7e7a] <4.12-maint>
--
--2010-12-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y, sphinx/specification_files.rst:
--	Added SIP_SSIZE_T as a pre-defined type so it can be used in .sip
--	files.
--	[1871ed7f3c9b] <4.12-maint>
--
--	* sipgen/parser.y, sphinx/specification_files.rst:
--	PyObject * is now a synonym for SIP_PYOBJECT in .sip files.
--	[56e378d55db0] <4.12-maint>
--
--	* siplib/siplib.c.in, sphinx/python_api.rst:
--	Added sip.ispycreated().
--	[e1efc2847290] <4.12-maint>
--
--2010-12-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y, siplib/siplib.c.in,
--	sphinx/specification_files.rst:
--	Added support for the __getattribute__ and __getattr__ methods.
--	[1da2e2e9fa1c] <4.12-maint>
--
--2010-12-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c.in,
--	sphinx/specification_files.rst:
--	Added support for __setattr__ and __delattr__ methods.
--	[3f7a1f5bff74] <4.12-maint>
--
--	* siplib/siplib.c.in:
--	The lazy attributes of a type are added when the first instance of
--	the type is created. This leaves the instance tp_getattro and
--	tp_setattro slots available.
--	[12a8fc4ee75a] <4.12-maint>
--
--2010-12-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Fixed some errors in the NEWS file.
--	[44a6a3833477] <4.12-maint>
--
--2010-12-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.12 for changeset 4a79f5996bd7
--	[111436ade941]
--
--	* NEWS:
--	Released as v4.12.
--	[4a79f5996bd7] [4.12]
--
--	* sipgen/gencode.c:
--	A further fix for Python v2.4 and earlier.
--	[5e655e94fc64]
--
--	* sipgen/gencode.c:
--	Fixed the code generated for a composite module an Python v2.4 and
--	earlier.
--	[00b0fadcf6fc]
--
--	* siplib/voidptr.c:
--	Add a couple of casts for MSVC2008.
--	[68916b34ac59]
--
--2010-12-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/python_api.rst:
--	Updated the documentation regarding the sip.simplewrapper type.
--	[0f92caeb5770]
--
--	* sipgen/parser.y, sipgen/transform.c:
--	Fixed a bug looking up mapped types that are templates with enum
--	arguments.
--	[1212ca61ef1d]
--
--2010-12-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed the inclusion of header files for init extenders.
--	[171d8f4e9f3a]
--
--2010-12-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	sip.voidptr now uses PyLong_AsVoidPtr() for all versions of Python.
--	[3d4ccc59c9c3]
--
--2010-12-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Improved the configure.py error message when an invalid build macro
--	is given.
--	[631ded439583]
--
--	* Roadmap.rst:
--	Removed the section of the roadmap stating that SIP v5 will require
--	types to be defined in advance of being used because (after thinking
--	about it properly) in would be a complete pain for the user.
--	[02eee09f591f]
--
--	* sipgen/sip.h, sipgen/sip.h.in:
--	Fixed an apparent hg problem with sipgen/sip.h[.in].
--	[1fd9ca0698a0]
--
--2010-12-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/sip.h:
--	Fixed the parsing of %Extract.
--	[393564f2cfeb]
--
--	* sipgen/gencode.c:
--	Make sure backslashes in generated #line directives are escaped.
--	[cc58da4653e7]
--
--	* sipgen/parser.y, sipgen/sip.h:
--	A deprecation warning is issues for any argument annotations in an
--	explicit C/C++ signature.
--	[8d0e2a1b1d1c]
--
--	* sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
--	/AllowNone/ is a valid class annotation.
--	[e94d52f996d7]
--
--2010-12-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sipgen/sip.h, sphinx/annotations.rst:
--	Deprecation warning are now generated for any invalid annotation.
--	Updated the docs so that annotations are mentioned in all the
--	contexts that they can applied to.
--	[a3715d0c74a5]
--
--	* NEWS, build.py, sipgen/main.c, sipgen/main.c.in, sipgen/parser.y,
--	sipgen/sip.h, sphinx/directives.rst:
--	Added the automatic pseudo-%Timeline of SIP version numbers.
--	[50fc306bfb6d]
--
--	* NEWS, sphinx/annotations.rst:
--	Documented /PyInt/ as a typedef annotation.
--	[0d8a873e3d30]
--
--2010-12-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
--	Added sipGetAddress() to the public API.
--	[b202f0d04ba6]
--
--2010-11-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c.in, sphinx/command_line.rst:
--	Don't try and issue warnings until the -w flag has been parsed.
--	[64e98b58216b]
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/main.c.in,
--	sipgen/parser.y, sipgen/sip.h, sphinx/annotations.rst,
--	sphinx/command_line.rst, sphinx/directives.rst:
--	Added the 'keyword_arguments' argument to %Module. The /KeywordArgs/
--	annotation now takes a string value describing the level of keyword
--	argument support. The previous behavior is deprecated. Deprecated
--	the /NoKeywordArgs/ annotation. Deprecated the code generator's -k
--	command line option.
--	[2294802123f4]
--
--2010-11-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	More generic parser fixes for directives that allow an argument
--	without requiring parentheses.
--	[1d6ba419952c]
--
--2010-11-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	Semi-colons are now not allowed after directives with no sub-
--	directives but are now required after the closing brace after sub-
--	directives.
--	[1a300e9d7f80]
--
--	* sipgen/parser.y:
--	Tidy up some coding inconsistencies in the parser.
--	[c86ace2573fd]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	The (internal) %Plgin directive now uses the revised syntax.
--	[86a793919cd1]
--
--	* sipgen/lexer.l, sipgen/parser.y, sphinx/directives.rst:
--	%Timeline now respects %If/%End.
--	[d227e7ea1eac]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	%Platforms now respects %If/%End.
--	[3c1e4cb9dd4c]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	%Doc and %ExportedDoc now respect %If/%End.
--	[e3f95120f8c9]
--
--	* sipgen/lexer.l, sipgen/parser.y, sphinx/directives.rst:
--	%OptionalInclude is now deprecated.
--	[fbfa68d0b559]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	The %MappedType sub-directives now respect %If/%End.
--	[afb6cb9b21b9]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst, sphinx/conf.py.in, sphinx/directives.rst:
--	%License now uses the revised syntax.
--	[ebeed9b2838e]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	%Include now follows the new syntax and includes the functionality
--	of %OptionalInclude.
--	[b71dca41f194]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	%Import now uses the revised syntax.
--	[df828f381c63]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	Changed the argument of %DefaultEncoding to 'name' to be consistent
--	with other similar directives.
--	[66c4f0e60cc5]
--
--2010-11-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	%Feature now uses the revised syntax.
--	[ca22b358ab05]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst, sphinx/specification_files.rst:
--	%Exception now (sort of) follows the revised syntax.
--	[b19d67575786]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	Reverted the change to make %Copying a sub-directive.
--	[d59876780e53]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	%DefaultEncoding now uses the revised syntax.
--	[111024e5bcbd]
--
--2010-11-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst, sphinx/incompatibilities.rst,
--	sphinx/specification_files.rst:
--	Fixed some more generic parser issues. %Copying is now a sub-
--	directive of each of the different module directives. All the module
--	directives now support docstrings.
--	[6244dcb1fcb9]
--
--	* sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
--	%CompositeModule and %Consolidated module now conform to the revised
--	syntax.
--	[18da01aba948]
--
--	* sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst,
--	sphinx/using.rst:
--	%API now uses the revised directive syntax.
--	[b7ba07998b37]
--
--2010-11-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Generated #line directives now include the full path name of the
--	file.
--	[52ed45309f83]
--
--	* siplib/siplib.c.in:
--	Reverted the broken "fixes" passing sub-int values as varargs.
--	[167ff79ec560]
--
--2010-11-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
--	The %Module and %Property sub-directives now respect %If/%End.
--	%AccessCode, %GetCode and %SetCode are now new-style sub-directives.
--	[7dfe49a56ec7]
--
--	* Roadmap.rst:
--	Added the v5 roadmap.
--	[9ddab02f25a6]
--
--	* sipgen/parser.y:
--	/PyInt/ can now be applied to pointer types.
--	[0a986be7f8e4]
--
--2010-11-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/siplib.c.in,
--	sphinx/annotations.rst, sphinx/c_api.rst:
--	Added /PyInt/ as an argument and function annotation. Added the L
--	and M format characters to sipBuildResult(), sipCallMethod() and
--	sipParseResult(). Fixed a bug in sipParseResult() in the handling of
--	encoded strings.
--	[372703eb4e88]
--
--	* sipgen/gencode.c:
--	Fixed a bug maintaining the current line number when generating
--	docstrings.
--	[2327d077f65a]
--
--2010-11-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y, sphinx/specification_files.rst:
--	Added parser support for empty namespaces. Documented how namespaces
--	are implemented and how to achieve the different behaviors.
--	[9101c7412e89]
--
--	* sphinx/annotations.rst, sphinx/command_line.rst,
--	sphinx/directives.rst:
--	Documented that -I, %Import and %Include all expect POSIX style
--	directory separators.
--	[7b0d6bc17f28]
--
--2010-11-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in.in, siplib/siplib.c.in, siplib/voidptr.c:
--	Eliminate compiler warnings when building the sip module.
--	[93040d2c716c]
--
--	* siplib/siplib.c.in, siplib/voidptr.c:
--	Fixed some Python v3 and MSVC build bugs.
--	[43cb06769dd6]
--
--2010-11-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	More updates to the NEWS file.
--	[c38668e9dd93]
--
--	* NEWS:
--	Updated the NEWS file.
--	[37a725e0b83a]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, siplib/siplib.c.in:
--	Eliminated a couple of warning messages.
--	[8d220ed77f02]
--
--	* sipgen/parser.y:
--	%Module and %Property sub-directives can now be individually
--	enclosed in %If/%End.
--	[637f2357b1e4]
--
--	* sphinx/annotations.rst, sphinx/directives.rst:
--	Documented the %AutoPyName directive.
--	[e8106eb58553]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	Added the %AutoPyName directive.
--	[85d02c95ebf7]
--
--2010-11-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/main.c.in, sipgen/sip.h,
--	sphinx/command_line.rst:
--	Added the -T command line flag to suppress the timestamp in the
--	header of generated source files.
--	[d84b9db1d89d]
--
--	* sipgen/gencode.c:
--	Fixed a bug where keyword strings where being generated for /Out/
--	arguments.
--	[2a314426e67a]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	Replaced the %RealArgNames directive with the use_argument_names
--	argument to the %Module directive.
--	[0eb004659e3d]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	The %Module directive now respects the %If directive.
--	[9b99a6f7d295]
--
--	* sphinx/directives.rst:
--	Documented the revised %Module directive syntax.
--	[0a7d4b89a2eb]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	%Module now supports the revised directive syntax. Module docstrings
--	are now supported. %CModule is deprecated.
--	[2606deb743f2]
--
--2010-11-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a bug in the generated of the variables table.
--	[eac351f5cca7]
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Fixed a bug in the tidying up of temporary class instances in unary
--	operators.
--	[990299a02451]
--
--	* sphinx/directives.rst:
--	Documented the %Property directive.
--	[455500391b43]
--
--	* sipgen/parser.y, sphinx/directives.rst:
--	Documented the revised directive syntax. Updated %Extract so that it
--	follows the revised syntax completely. %Extract no longer uses a
--	quoted string as an identifer.
--	[7970e4fa94ef]
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h.in.in, siplib/siplib.c.in:
--	Completed the support for %Property.
--	[dfd258dec260]
--
--	* sipgen/gencode.c, sipgen/sip.h:
--	The code generator now generates the property structure.
--	[07134d471acd]
--
--	* sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h.in.in,
--	siplib/siplib.c.in:
--	Migrated the existing variable support to the new runtime structure.
--	[c66412e816ab]
--
--2010-11-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l:
--	Fixed the parser so that C/C++ argument names don't get confused
--	with directive argument names.
--	[8bad8295e12f]
--
--2010-11-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Renamed getter to get and setter to set to be consistent with
--	%GetCode and %SetCode.
--	[eef0c18dd0df]
--
--	* sipgen/parser.y, sipgen/transform.c:
--	The %Property getters and setters are now validated.
--	[caf6e4cee176]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	Added parser support for %Property.
--	[41f66dca2447]
--
--	* sipgen/extracts.c, sipgen/lexer.l, sipgen/main.c.in,
--	sipgen/parser.y, sipgen/sip.h, sipgen/sipgen.sbf,
--	sphinx/command_line.rst, sphinx/directives.rst,
--	sphinx/specification_files.rst:
--	Added the %Extract directive and the corresponding -X command line
--	option.
--	[37a7149135a9]
--
--2010-11-04  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/main.c.in, sipgen/parser.y, sipgen/sip.h,
--	sphinx/c_api.rst, sphinx/command_line.rst, sphinx/directives.rst,
--	sphinx/introduction.rst.in, sphinx/python_api.rst:
--	Issue warning messages from the parser about deprecated syntax.
--	Updated the documentation regarding deprecations.
--	[3a45afc8d9eb]
--
--	* siplib/voidptr.c:
--	Fixed a bug in the new sip.voidptr code for Python v2.5 and earlier.
--	[7ff903c5cb76]
--
--	* sphinx/python_api.rst:
--	Updated the sip.voidptr documentation to describe the memoryview-
--	like support.
--	[b49b90639831]
--
--	* sipdistutils.py:
--	sipdistutils.py now allows the output directory to be overriden in a
--	derived class.
--	[5a1f9d9fff30]
--
--2010-11-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Fixed a silly typo in the sip.voidptr changes.
--	[af2d7120dd7f]
--
--	* siplib/voidptr.c:
--	sip.voidptr now supports sub-script assignment for Python v2.4 and
--	earlier.
--	[14186a17d310]
--
--	* siplib/voidptr.c:
--	sip.voidptr now supports sub-script assignment for Python v2.5.
--	[67ef521ce467]
--
--	* siplib/voidptr.c:
--	sip.voidptr now supports sub-script assignment (Python v2.6 and
--	later only at the moment).
--	[4ad087fd7e94]
--
--	* siplib/voidptr.c:
--	sip.voidptr can now be indexed like memoryview.
--	[76620ebb872e]
--
--	* siplib/voidptr.c:
--	sip.voidptr now fully implements the new buffer protocol for Python
--	v2 so that memoryview works.
--	[f9dfbda5844f]
--
--	* NEWS, build.py, configure.py.in, sipgen/gencode.c, siplib/sip.h.in,
--	siplib/sip.h.in.in, siplib/siplib.c, siplib/siplib.c.in,
--	siplib/siplib.sbf, siplib/siplib.sbf.in, sphinx/installation.rst,
--	sphinx/using.rst:
--	Added the --sip-module flag to configure.py to allow private copies
--	of the module to be built.
--	[8b8e93a159c6]
--
--2010-10-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst, sphinx/specification_files.rst:
--	Added the %RealArgNames directive.
--	[12acbffd0085]
--
--2010-10-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l:
--	All directives now start with the first non-whitespace character of
--	a line.
--	[c5a525178196]
--
--	* .hgtags:
--	Merged the v4.11 branch into the trunk.
--	[a7689cef100b]
--
--2010-10-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Released as v4.11.2.
--	[13f57fe7e992] [4.11.2] <4.11-maint>
--
--	* sipgen/gencode.c:
--	Fixed the implementation of %MethodCode for dtors in C modules.
--	[4f26704c5789] <4.11-maint>
--
--2010-10-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	Make sure that lazy attributes have been added when searching for a
--	Python reimplemention of a C++ method.
--	[f45ff97a3c66] <4.11-maint>
--
--	* siplib/sip.h.in:
--	Properly set SIP_SUPPORT_PYCOBJECT in sip.h.
--	[f1cf3fef8eb5] <4.11-maint>
--
--2010-10-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h.in,
--	siplib/siplib.c:
--	__enter__ and __exit__ are now handled as non-lazy methods and are
--	added to the type dictionary when the type is created (rather than
--	when the first attribute of the first instance is accessed). This
--	required by a change in behaviour introduced in Python v2.7 and
--	v3.2.
--	[5167b98767e2] <4.11-maint>
--
--2010-10-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[ed3deec59b70] <4.11-maint>
--
--2010-10-09  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	/KeepReference/ now applies to global functions.
--	[52e6a73fd81f] <4.11-maint>
--
--	* siplib/siplib.c:
--	Fixed a regression in the handling of global class pointers (eg.
--	qApp in PyQt3).
--	[08328092b36b] <4.11-maint>
--
--2010-10-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	/KeepReference/ can now be applied to static methods.
--	[43c2359df596] <4.11-maint>
--
--2010-10-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/directives.rst:
--	%TypeCode can now be specified in a %MappedType directive.
--	[8727e0eb0f5e] <4.11-maint>
--
--	* sipgen/transform.c:
--	Mapped types for templates no longer require the template arguments
--	to be defined.
--	[7ed0e265a218] <4.11-maint>
--
--2010-10-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Added support for the MSBUILD Makefile generator introduced in Qt
--	v4.7 for the win32-msvc2010 target.
--	[ff2494c0e443] <4.11-maint>
--
--2010-09-30  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	A protected class enum will now trigger the generation of a shadow
--	class.
--	[18681651c2c7] <4.11-maint>
--
--2010-09-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	A minor documentation fix.
--	[f6df40935e99] <4.11-maint>
--
--2010-09-24  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed the rpaths problem properly (ie. didn't apply the fix to a
--	generated file).
--	[c93f5da3d4e4] <4.11-maint>
--
--	* NEWS, siputils.py:
--	Taught the build system about QtDeclarative. Updated the NEWS file.
--	[2487fb909ee1] <4.11-maint>
--
--2010-09-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed rpaths for Qt v4.7.
--	[4d12df6526e5] <4.11-maint>
--
--2010-09-14  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in:
--	Ensured that uint is always defined.
--	[b6508f053614] <4.11-maint>
--
--2010-09-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.11.1 for changeset fdf86b3115cd
--	[3213dc5731bb] <4.11-maint>
--
--	* NEWS:
--	Released as v4.11.1.
--	[fdf86b3115cd] [4.11.1] <4.11-maint>
--
--2010-09-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/objmap.c:
--	When deciding if an entry in the object map is valid the C/C++
--	address is first checked to see if it is still valid. This detects
--	the case (if there is a guard in place) where a new C/C++ object has
--	been created at the same address of one that has been destroyed (but
--	whose Python wrapper is still around).
--
--	HG commit message. Lines beginning with 'HG:' are removed.
--	[13632c7f0f2c] <4.11-maint>
--
--2010-08-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.11 for changeset 80f7c6530416
--	[86286537601c]
--
--	* NEWS:
--	Released as v4.11.
--	[80f7c6530416] [4.11]
--
--2010-08-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/objmap.c, siplib/sip.h.in, siplib/siplib.c,
--	sphinx/c_api.rst:
--	Objects with handwritten access functions are no longer placed in
--	the object map as they don't have a usable key. Reworked the support
--	for meta-type aupplied access functions so that the original address
--	is still available (even if it is no longer valid) to be used to
--	search the object map.
--	[c38d259c1879]
--
--2010-08-21  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[7cff86d70dc7]
--
--2010-08-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	The parsing of encoded strings is now done with two passes so that
--	encoding errors are now picked up in the second pass and raise an
--	appropriate exception.
--	[89ff42be167c]
--
--2010-08-19  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst:
--	The /KeepReference/ annotation now takes an optional integer key
--	value.
--	[efff0d2932e1]
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c:
--	operator() and __call__() now support keyword arguments.
--	[0daacc25c6ce]
--
--2010-08-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/sip.h.in, siplib/siplib.c, sphinx/c_api.rst:
--	Completed the access function implementation so that any resources
--	created by access functions are released appropriately.
--	[35cf486718d4]
--
--2010-08-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c,
--	sphinx/c_api.rst:
--	Removed sipRegisterObjectFinaliser() and assume that the equivalent
--	functionality will be provided by a custom meta-class.
--	[d028d0cecb7b]
--
--	* sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c:
--	Added sipRegisterObjectFinaliser() and related infrastructure.
--	(Though it will probably be replaced by a meta-type based
--	implementation.)
--	[d525d84c9d61]
--
--	* sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c, siplib/sip.h.in,
--	siplib/sipint.h, siplib/siplib.c:
--	All access to the C/C++ object now goes through
--	sip_api_get_address(). Bumped the internal API version to 8.0
--	(because the size of sipSimpleWrapper has changed).
--	[956c80d8e9fa]
--
--2010-08-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Make sure #line 0 is not generated as the Intel compiler doesn't
--	like it.
--	[d715222f1f65]
--
--	* siplib/voidptr.c, sphinx/c_api.rst, sphinx/embedding.rst,
--	sphinx/python_api.rst:
--	Added support for Python v3.2. Exposed the SIP_USE_PYCAPSULE macro
--	as part of the C API.
--	[0e34dc4e0824]
--
--2010-08-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug affecting inplace operators.
--	[6cddd9276220]
--
--2010-08-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	Refactored the calls to assert() when creating types to catch any
--	recursive calls.
--	[052b642f04a8]
--
--2010-08-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Make sure the %UnitPostIncludeCode is after all #includes.
--	[d45e8042c7da]
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, sphinx/directives.rst:
--	Added the %UnitPostIncludeCode directive.
--	[058d680384e7]
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	sphinx/directives.rst:
--	Removed the %RemoveNamespace directive.
--	[18fc68280d49]
--
--	* sipgen/gencode.c:
--	Removed 'const' and '&' from signal signatures so that Qt doesn't
--	have to.
--	[9e9795fa36a5]
--
--	* sipgen/transform.c:
--	Fixed a problem with the recent change regarding the original types
--	of template based mapped types.
--	[83019d3299ea]
--
--	* sipgen/gencode.c, sipgen/parser.y:
--	Generated code now uses 'uint' rather than 'unsigned'. This is
--	because Qt's QMetaObject::normalizedType() converts the latter to
--	the former.
--	[0923d067541a]
--
--	* sipgen/gencode.c:
--	The generated typedefs table now always defines a type in terms of a
--	base type and never another typedef type.
--	[5ed328590fd1]
--
--	* sipgen/transform.c:
--	Template based mapped types now correctly keep a reference to the
--	original types used when invoking the template.
--	[691852c6b0b0]
--
--2010-07-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Const references are now assumed to be input arguments rather than
--	output arguments.
--	[d11b7adf095a]
--
--2010-07-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	An improvement on the previous fix.
--	[086a77b99464]
--
--	* sipgen/parser.y:
--	Fixed global operators that are declared in a namespace.
--	[c46ac8f9b1e9]
--
--2010-07-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	Switched to the new format of snapshot names.
--	[4d30378c5622]
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	sphinx/directives.rst:
--	Implemented the %RemoveNamespace directive.
--	[a2eb3fe46f43]
--
--	* lib/LICENSE, lib/LICENSE-GPL2.txt, lib/LICENSE-GPL3.txt,
--	lib/LICENSE.short, lib/README, lib/configure.py,
--	lib/sipdistutils.py, lib/siputils.py, sipgen/main.c, siplib/sip.h,
--	sphinx/Makefile, sphinx/conf.py, sphinx/introduction.rst:
--	Merged v4.10.5 into the trunk.
--	[4cce948441da]
--
--2010-07-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, siplib/sip.h.in, siplib/voidptr.c, sphinx/python_api.rst:
--	Released as v4.10.5. Fixed the build regression against Python v3
--	introduced in SIP v4.10.4. Properly fixed the Python v2.7 workaround
--	that SIP v4.10.4 was supposed to address.
--	[834787fbcb72] [4.10.5] <4.10-maint>
--
--2010-07-15  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.10.4 for changeset 046c346a71fe
--	[d0340fc3658c] <4.10-maint>
--
--	* NEWS:
--	Released as v4.10.4.
--	[046c346a71fe] [4.10.4] <4.10-maint>
--
--2010-07-13  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, siplib/siplib.c, siplib/voidptr.c:
--	Use PyCapsule when available to work around an apparent bug in
--	PyCObject in Python v2.7.
--	[f5574a061fd0] <4.10-maint>
--
--2010-07-12  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.10.3 for changeset 2ec1a8f8560c
--	[254b8071446e] <4.10-maint>
--
--	* NEWS, README:
--	Released as v4.10.3.
--	[2ec1a8f8560c] [4.10.3] <4.10-maint>
--
--2010-07-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, sphinx/annotations.rst:
--	Added support for the __len__ annotation.
--	[f760366cea3b] <4.10-maint>
--
--	* sipgen/transform.c:
--	Assignment helpers are now generated for classes that have a ctor
--	where all arguments are optional.
--	[3e647ed0f2a2] <4.10-maint>
--
--2010-06-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the code generator for /NewThread/ methods so that it no
--	longer assumes that such methods are abstract (though it still
--	assumes they don't return a value) as QThread.run() no longer is.
--	[710b71e6f0c6] <4.10-maint>
--
--	* siputils.py:
--	Fixed a regression introduced when fixing the += problem with spec.
--	files.
--	[94d177d8f426] <4.10-maint>
--
--2010-06-11  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
--	Changed the generated docstrings for signals to use [] rather than
--	() to surround the arguments.
--	[1851f2d754e7] <4.10-maint>
--
--2010-06-10  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug where special methods that invoke
--	sipNoMethod() were trying to tidy up sipParseErr rather than leaving
--	it to sipNoMethod().
--	[90aad46480b2] <4.10-maint>
--
--2010-06-08  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the previous fix to avoid compiler warning messages.
--	[0a3f45fea555] <4.10-maint>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug caused by ctor handwritten code that
--	sets the error flag and isn't handling unused keyword arguments.
--	[d53889ad7abe] <4.10-maint>
--
--2010-06-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sphinx/specification_files.rst:
--	Added support for Q_SLOT and Q_SIGNAL.
--	[cb323da88516] <4.10-maint>
--
--2010-06-05  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/lexer.l:
--	Added support for Q_SIGNALS and Q_SLOTS as synonyms for signals and
--	slots.
--	[daf61465ef3c] <4.10-maint>
--
--	* siputils.py:
--	Fixed a build system regression introduced when not linking against
--	X11 when building QtCore.
--	[ee5415b91040] <4.10-maint>
--
--2010-06-03  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	The build system now handles += in spec files properly.
--	[f292793d6c99] <4.10-maint>
--
--2010-05-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* configure.py.in, siputils.py:
--	A build system fix for building a static version of QWebKit.
--	[de0df36d3162] <4.10-maint>
--
--	* sipgen/transform.c:
--	Fixed a bug in the error message when reporting an unsupported
--	signal argument type.
--	[7adbf28d075e] <4.10-maint>
--
--2010-05-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fix a code generation bug where a protected ctor had a protected
--	enum argument.
--	[529660fb77a9] <4.10-maint>
--
--2010-04-23  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c.in, siplib/qtlib.c:
--	Invoking a slot is ignored if the underlying C++ object no longer
--	exists.
--	[7387fa17a780] <4.10-maint>
--
--2010-04-16  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.10.2 for changeset 44ac47d02467
--	[2a980c3f0e3a] <4.10-maint>
--
--	* NEWS:
--	Released as v4.10.2.
--	[44ac47d02467] [4.10.2] <4.10-maint>
--
--2010-04-06  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/using.rst:
--	Updated the PyQt example for PyQt4.
--	[275fa5a54910] <4.10-maint>
--
--2010-04-01  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	Fixed a regression in the new-style error handling of C++ ctors that
--	raise exceptions.
--	[ea295d6e9e9c] <4.10-maint>
--
--2010-03-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siputils.py:
--	The X11 libraries will only be linked for modules that depend on the
--	QtGui module.
--	[9fe1eb5bf1ac] <4.10-maint>
--
--2010-03-22  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* siplib/siplib.c:
--	Fixed a bug in the pickle support under Python v3.
--	[9c51fda2b963] <4.10-maint>
--
--2010-03-17  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* .hgtags:
--	Added tag 4.10.1 for changeset 812aad0bacea
--	[6f759792341f] <4.10-maint>
--
--	* NEWS, build.py:
--	Fixed the generation of the change log after tagging a release.
--	Updated the NEWS file. Released as v4.10.1.
--	[812aad0bacea] [4.10.1] <4.10-maint>
--
--	* siplib/siplib.c:
--	Removed an unused variable left over from the previous commit.
--	[0068b2608046] <4.10-maint>
--
--	* siplib/siplib.c:
--	Fixed the implementation of sip.cast().
--	[93bc3ab3fef5] <4.10-maint>
--
--2010-03-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[752ab6580111] <4.10-maint>
--
--2010-02-26  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a memory leak with the new error handling and most Python
--	special methods.
--	[637497440cb5] <4.10-maint>
--
--	* sipgen/transform.c:
--	Global operators, when moved to the correct class, are now appended
--	to the list of any existing overloads to make sure the generated
--	code is in the same order as the overloads in the .sip file.
--	[5c0eb00cd19b] <4.10-maint>
--
--2010-02-25  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c:
--	Arguments in docstrings only have names if they are optional.
--	[0f83f6c82600] <4.10-maint>
--
--2010-02-20  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c,
--	sphinx/c_api.rst, sphinx/incompatibilities.rst:
--	Fixed a bug in the handling of /Out/ arguments of virtuals where the
--	type was a reference to a class by adding the 'H' format character
--	to sipParseResult() (and deprecating the 'D' format character).
--	[c723c4de2e22] <4.10-maint>
--
--2010-02-18  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Fixed a bug in the documentation of the NoCopy annotation.
--	[cb2c1ea78ed5] <4.10-maint>
--
--2010-02-07  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst:
--	Python reimplementations of C++ virtuals will now be given a copy of
--	any const references to classes so that they can keep a reference
--	without needing to do their own explicit copy. The previous
--	behaviour can be obtained using the new NoCopy annotation. The
--	NoCopy annotation can also be applied to functions and methods to
--	prevent the automatic copying of const references to classes that
--	are returned.
--	[724e4236428b] <4.10-maint>
--
--2010-02-02  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/export.c:
--	Fixed the XML exporting of mapped type arguments.
--	[b514b2f196b8] <4.10-maint>
--
--	* siplib/sipint.h, siplib/siplib.c, siplib/siplib.sbf,
--	siplib/voidptr.c:
--	Moved the voidptr code to a separate file. Eliminated a few
--	compilation warnings that have crept into the sip module. Refactored
--	the sip module to eliminate the (wrong) forward declaration of the
--	static type structures.
--	[f07ec31fbdf9] <4.10-maint>
--
--	* build.py:
--	Fixed a bug in the release action of build.py.
--	[bcdd91cbf139] <4.10-maint>
--
--2010-01-31  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* sipgen/main.c.in:
--	Added the -b command line argument to the sip usage text.
--	[7ae3aa20dfc0] <4.10-maint>
--
--2010-01-29  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	Refactored build.py so that it can be easily used as an imported
--	module.
--	[9170df0b1ea3] <4.10-maint>
--
--2010-01-28  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* build.py:
--	Fixed a regression in the release action of build.py.
--	[e3611c1babe7] <4.10-maint>
--
--	* build.py:
--	Changed the format of the changelog to be closer to the Mercurial
--	default.
--	[f1d6ba993e7f] <4.10-maint>
--
--	* build.py:
--	Added the changelog action to build.py.
--	[8189b0595d44] <4.10-maint>
--
--	* build.py:
--	build.py now generates a version number corresponding to the next
--	release (as the old build system did).
--	[d09c61626663] <4.10-maint>
--
--	* build.py:
--	build.py now doesn't care about the current working directory. Fixed
--	the handling of branch names.
--	[3402912a0176] <4.10-maint>
--
--2010-01-27  Phil Thompson  <phil at riverbankcomputing.com>
--
--	* README:
--	Updated the README to document the need for flex, bison and Sphinx.
--	[d785bd5471f8] <4.10-maint>
--
--	* sphinx/introduction.rst.in:
--	Updated the documentation to include the URL of the Mercurial
--	repository.
--	[0a7fc3830b27] <4.10-maint>
--
--	* LICENSE, LICENSE-GPL2, LICENSE-GPL3, README, build.py,
--	configure.py.in, lib/LICENSE, lib/LICENSE-GPL2.txt, lib/LICENSE-
--	GPL3.txt, lib/LICENSE.short, lib/README, lib/configure.py,
--	lib/sipdistutils.py, lib/siputils.py, sipdistutils.py,
--	sipgen/export.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
--	sipgen/main.c, sipgen/main.c.in, sipgen/parser.y, sipgen/sip.h,
--	sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
--	siplib/bool.cpp, siplib/descriptors.c, siplib/objmap.c,
--	siplib/qtlib.c, siplib/sip.h, siplib/sip.h.in, siplib/sipint.h,
--	siplib/siplib.c, siplib/siplib.sbf, siplib/threads.c, siputils.py,
--	sphinx/Makefile, sphinx/conf.py, sphinx/conf.py.in,
--	sphinx/introduction.rst, sphinx/introduction.rst.in:
--	Refactored the build.py script so that it is a documented utility
--	for allowing SIP to be built from a Mercurial repository or archive.
--	Updated the directory structure accordingly.
--	[3edc3f9c777f] <4.10-maint>
--
--2010-01-27  phil  <phil>
--
--	* .hgtags:
--	Import from SVN.
--	[d6529eb1c096]
--
--2010-01-14  phil  <phil>
--
--	* NEWS, lib/LICENSE.short:
--	Released as v4.10.
--	[d7aa01036415] [4.10]
--
--2010-01-08  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, sipgen/transform.c,
--	siplib/siplib.c:
--	Taught the build system about QtMultimedia. Removed some potential
--	warning messages in virtual catchers with handwritten code. Fixed
--	docstrings that might contain C++ rather than Python scoping.
--	[d1214a2c892d]
--
--2010-01-02  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a crash in the error handling when trying to call sip.wrapper
--	or sip.wrappertype explicitly.
--	[4f7c7b09a3e4]
--
--2009-12-29  phil  <phil>
--
--	* siplib/apiversions.c:
--	Fixed a memory corruption bug in the implementation of sip.setapi().
--	[11cc05a59770]
--
--2009-12-28  phil  <phil>
--
--	* siplib/siplib.c:
--	A fix for building against Stackless.
--	[a3ce099e5002]
--
--2009-12-27  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a regression in the parsing of constrained enums.
--	[eacac49b64df]
--
--	* siplib/siplib.c:
--	Fixed a bug in the lookup of virtual reimplementations that may only
--	be apparent when looking up Python special methods.
--	[97c538d2e634]
--
--2009-12-26  phil  <phil>
--
--	* siplib/siplib.c:
--	Backed out the check for sub-classing from more than one wrapped
--	type as it isn't sophisticated enough to handle mixins that share a
--	meta-class.
--	[34cf41855599]
--
--2009-12-23  phil  <phil>
--
--	* siplib/siplib.c:
--	Added a hack for va_copy() being missing in MSVC.
--	[e3bd9f6c1a3a]
--
--2009-12-22  phil  <phil>
--
--	* lib/siputils.py:
--	Another attempt to fix creating script wrappers on MacOS to
--	invokethe right version of Python.
--	[39d66e33acfd]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
--	Fixed a docstring bug handling default values that are literal
--	strings.
--	[a1fea3306f54]
--
--2009-12-21  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a fundamental problem with the parsing of signatures that
--	allow keyword arguments where the current position in the format
--	string and the var_args was being lost.
--	[afa78322cb2d]
--
--2009-12-19  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Changed the signature of sipAddException(). Fixed a reference count
--	bug in the handling of chained parse errors.
--	[1e48cd06b448]
--
--2009-12-17  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
--	sphinx/c_api.rst:
--	Added sipBadCallableArg() to the C API.
--	[4046e5d6ca66]
--
--2009-12-15  phil  <phil>
--
--	* sipgen/parser.y:
--	Fixed a NULL dereference when instantiating an unscoped class
--	template.
--	[908f41773044]
--
--2009-12-14  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
--	sphinx/directives.rst:
--	Added support for sipError to %MethodCode to allow code to
--	distinguish between user errors and system errors.
--	[8cb9ae04484a]
--
--2009-12-12  phil  <phil>
--
--	* siplib/siplib.c:
--	Raise an exception if the automatically generated cast function
--	fails (though this, theoretcally, shouldn't happed). Explicitly test
--	for attempting to inherit from more than one wrapped type.
--	[ae6cee8faa67]
--
--2009-12-11  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed the generation of a bad call to sipMalloc() when generating
--	for a C library.
--	[a174c9456eab]
--
--2009-12-04  phil  <phil>
--
--	* sipgen/parser.y:
--	Finally fixed %DefaultEncoding when set in an imported module.
--	[d1eec2d99a95]
--
--2009-12-03  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a problem where Python wasn't creating descriptors for any
--	enum slots which meant that explicitly calling special methods
--	failed to invoke those slots.
--	[ca934a1f4132]
--
--2009-12-02  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, siplib/siplib.c, sphinx/python_api.rst:
--	Use capsules for Python v3.1 and later. Added the
--	sip.voidptr.ascapsule() method.
--	[154f2c63c18d]
--
--2009-11-23  phil  <phil>
--
--	* NEWS, sipgen/transform.c:
--	Fixed a bug where assignment helpers may not be generated for
--	classes that have an alternate mapped type implementation.
--	[6734e82522ee]
--
--2009-11-17  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a problem that meant that circular references in slots
--	connected to objects owned by C++ weren't being detected.
--	[b38add3f63d9]
--
--2009-11-15  phil  <phil>
--
--	* sipgen/parser.y:
--	Fixed a bug where %DefaultEncoding could be ignored if %Imports were
--	being done in an inconvenient order.
--	[ae075b6d08ea]
--
--	* sphinx/command_line.rst, sphinx/distutils.rst:
--	Added the documentation for the updated sipdistutils.py.
--	[c5547730f27b]
--
--	* lib/sipdistutils.py:
--	An updated sipdistutils.py from Giovanni Bajo.
--	[62a698e9f9bd]
--
--2009-11-14  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
--	Signal docstrings no longer include default values as they are
--	implemented as separate overloads.
--	[339a2114ec6d]
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/sip.h, siplib/sip.h:
--	Docstrings are now generated for use by PyQt4 signals.
--	[18bb2e74f269]
--
--2009-11-11  phil  <phil>
--
--	* sipgen/gencode.c:
--	The docstrings are now wrapped with PyDoc_STRVAR().
--	[ef3374625928]
--
--	* sipgen/transform.c:
--	The /DocType/ annotation is now properly supported for typedefs.
--	[b3bbd7202a88]
--
--	* sipgen/gencode.c:
--	No docstrings are generated for any part of a class that isn't the
--	default implementation.
--	[9db19f2694a2]
--
--	* sipgen/heap.c, sipgen/parser.y, sipgen/transform.c:
--	Added support for /DocType/ to mapped type templates.
--	[74a135153c66]
--
--2009-11-10  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, siplib/siplib.c, sphinx/directives.rst,
--	sphinx/introduction.rst, sphinx/specification_files.rst:
--	Added the %Docstring directive to specify explicit docstrings.
--	[61b4453a9ff4]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/transform.c,
--	siplib/siplib.c:
--	More docstring fixes. Docstrings are not now generated for non-
--	default implementations.
--	[64779347846b]
--
--2009-11-09  phil  <phil>
--
--	* NEWS, sipgen/gencode.c:
--	A fix for the formatting of function calls in default values for XML
--	and docstrings.
--	[cfd41d5169d1]
--
--	* sipgen/export.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst:
--	Added the /DocValue/ argument annotation.
--	[63dbaa87cf17]
--
--	* NEWS, sipgen/parser.y:
--	String annotations can now have feature selectors embedded in them.
--	[d8fccc02cc21]
--
--2009-11-08  phil  <phil>
--
--	* NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y:
--	More docstring fixes.
--	[98dc281a1a11]
--
--	* sphinx/annotations.rst:
--	Updated the docs as /DocType/ is also a function and variable
--	annotation.
--	[cad85d54df79]
--
--	* sipgen/export.c:
--	Docstrings now consider all C++ integer types to be "int".
--	Docstrings now consider all C++ character types to be "str".
--	[72ae0dd8d9dc]
--
--2009-11-07  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
--	sipgen/sip.h, siplib/sip.h, sphinx/annotations.rst:
--	Added the /DocType/ argument and mapped type annotation. More fixes
--	for the docstring support.
--	[99ebe42a8e10]
--
--	* sipgen/export.c, sipgen/parser.y, sipgen/transform.c:
--	Fixed a bug where a default copy ctor might be added when there
--	aleady was one when the class had a alternative mapped type
--	implementation.
--	[0db8f014b7e7]
--
--2009-11-06  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c:
--	Completed the basic support for automated docstrings (some tweaking
--	still needed).
--	[3d914379ef28]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added stub docstring support for methods and classes.
--	[b52d1ef306ae]
--
--2009-11-05  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/main.c, sipgen/sip.h, siplib/apiversions.c,
--	siplib/sip.h, siplib/siplib.c, sphinx/command_line.rst,
--	sphinx/introduction.rst:
--	Added stubbed support for function docstrings.
--	[91a545605044]
--
--2009-11-04  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed building on Python v2.
--	[af23791238c1]
--
--	* sipgen/gencode.c:
--	Fixed a memory leak of class instances annotated with /Out/ when
--	catching C++ exceptions.
--	[7fe47a8dd71d]
--
--	* siplib/siplib.c:
--	Completed the basic extended (ie. without docstrings) error messages
--	on overload parse failures.
--	[fe018c83a8df]
--
--	* siplib/siplib.c:
--	More support for the extended errors when parsing signatures.
--	[e837961dad1d]
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
--	Fixed a problem where an overload that didn't take keyword arguments
--	wasn't raising an error if one was supplied and there where other
--	overloads that did.
--	[f405b7102d19]
--
--2009-11-03  phil  <phil>
--
--	* siplib/siplib.c:
--	Added the error detail for unbound methods. Ctor errors now don't
--	include the module name (to match other errors).
--	[b176dda5f1e9]
--
--	* siplib/sip.h, siplib/siplib.c:
--	Refactored the new error reporting so that it is much more
--	lightweight in the common case of failure to parse an overload.
--	[e801eb8ce7e6]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	The SIP API major version number has changed. Implemented the basics
--	of the revised error messages (still missing the message detail
--	though).
--	[aa4e0e8fd705]
--
--2009-11-02  phil  <phil>
--
--	* sphinx/directives.rst:
--	Fixed a broken Sphinx directive.
--	[fc0975814576]
--
--2009-10-30  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst, sphinx/directives.rst:
--	Added the /Default/ exception annotation to specify an exception
--	that will be caught if there is no throw clause. A 'catch (...)'
--	block will now always be generated.
--	[d65ec4986067]
--
--	* siplib/siplib.c:
--	Fixed a regression in the monkey patching of instances.
--	[94348861afba]
--
--	* sphinx/directives.rst:
--	...and another.
--	[f90c80feb177]
--
--	* sphinx/directives.rst:
--	...and another documentation typo.
--	[c3a7ea01b1e5]
--
--	* sphinx/directives.rst:
--	Fixed a documentation typo.
--	[80259f3cc2f5]
--
--	* sipgen/gencode.c:
--	Fixed a double delete bug with mapped types passed as references
--	annotated with /Out/.
--	[a788f308bbee]
--
--2009-10-28  phil  <phil>
--
--	* NEWS, lib/configure.py, lib/siputils.py, sphinx/build_system.rst:
--	Adde support for out-of-tree building.
--	[837ce5451585]
--
--	* lib/siputils.py, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
--	sipgen/sip.h, sphinx/build_system.rst, sphinx/c_api.rst,
--	sphinx/command_line.rst, sphinx/directives.rst:
--	Added support for building with "protected" redefined as "public" to
--	reduce the size of generated modules.
--	[6601a9a55993]
--
--2009-10-26  phil  <phil>
--
--	* siplib/siplib.c:
--	sipFindType() now handles references as well as pointers.
--	[2228a1ad7d3f]
--
--	* specs/linux-arm-g++, specs/linux-arm-thumb-g++, specs/linux-
--	armv6-g++:
--	Added the Linux ARM spec files from David Boddie's PyQt embedded
--	patch set.
--	[9285dfaea8a2]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
--	More keyword argument bug fixing. (PyQt now seems to work with it
--	enabled.)
--	[d2f15ccd7460]
--
--	* sipgen/gencode.c:
--	More keyword argument bug fixing. (PyQt now builds again.)
--	[709ea5c81d46]
--
--2009-10-25  phil  <phil>
--
--	* siplib/siplib.c:
--	Bug fixing the keyword argument support.
--	[9f8d9cc3f521]
--
--	* sipgen/gencode.c, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
--	siplib/sip.h, siplib/siplib.c, sphinx/annotations.rst,
--	sphinx/command_line.rst, sphinx/introduction.rst:
--	Added support for (optional) keyword arguments - untested.
--	[04504a7b338b]
--
--2009-10-24  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, siplib/siplib.c:
--	Merged v4.9.1 back into the trunk.
--	[8e50e7601287]
--
--2009-09-26  phil  <phil>
--
--	* NEWS:
--	Released as v4.9.
--	[4d26f5a2ec9c] [4.9]
--
--2009-09-19  phil  <phil>
--
--	* lib/siputils.py:
--	Fixed the dependency order of Qt libraries on Windows (which weems
--	to only affect MinGW).
--	[b3b353012242]
--
--2009-09-16  phil  <phil>
--
--	* lib/configure.py:
--	Fixed a configure.py command line parsing problem on OS/X.
--	[26287bd85bfd]
--
--	* lib/siputils.py, sphinx/build_system.rst:
--	The default build system values of universal and arch are now taken
--	from the configuration.
--	[33fab9918a24]
--
--	* NEWS, siplib/siplib.c, sphinx/python_api.rst:
--	Added sip.ispyowned().
--	[ad556c1da3a4]
--
--2009-09-15  phil  <phil>
--
--	* lib/siputils.py:
--	A fix for the last fix.
--	[de0e5576ac75]
--
--	* lib/siputils.py:
--	More fixes for Snow Leopard.
--	[64601a49b403]
--
--2009-09-14  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c,
--	sphinx/annotations.rst:
--	Allowed the /NoArgParser/ annotation to be used for class methods.
--	[e5ec799a3f70]
--
--2009-09-12  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a problem when a function returns a class instance that SIP
--	doesn't think can be copied.
--	[bf71880486d0]
--
--	* lib/configure.py, lib/siputils.py, sphinx/build_system.rst,
--	sphinx/installation.rst:
--	The --arch option now only implies a universal binary if it is
--	specified more than once.
--	[8c16580e8c21]
--
--	* lib/configure.py, lib/siputils.py, sphinx/build_system.rst:
--	Added support for specifying a MacOS architecture when creating a
--	wrapper script.
--	[8eeb8a1947b7]
--
--2009-09-11  phil  <phil>
--
--	* lib/configure.py:
--	The MacOS specific configure.py options are no longer enabled on
--	other platforms.
--	[2dd928167cd9]
--
--	* lib/configure.py, sphinx/installation.rst:
--	Removed the -a short form of --arch so that it will be the same as
--	PyQt.
--	[239f8861bc8e]
--
--	* NEWS, lib/configure.py, lib/siputils.py, sphinx/build_system.rst,
--	sphinx/installation.rst:
--	Added the --arch flag to configure.py to allow the architectures to
--	be included in a MacOS/X universal binary to be specified.
--	[b74bcfcb34b0]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Fixed a problem with the name of an API version in modules that sub-
--	class from classes with versioned methods in a different module.
--	[5b327c45a283]
--
--2009-09-06  phil  <phil>
--
--	* siplib/siplib.c:
--	Added the support for handling keyword arguments to QObject ctors.
--	[562b8ecd5e55]
--
--2009-09-04  phil  <phil>
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
--	sphinx/annotations.rst, sphinx/c_api.rst:
--	Completed the support for /Array/ applied to classes and mapped
--	types.
--	[f32ceb5cb246]
--
--	* sipgen/gencode.c, sipgen/sip.h, siplib/siplib.c:
--	Added support for /Array/ for classes and mapped types for non-
--	virtual functions.
--	[24bcbdbd0393]
--
--2009-09-03  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/transform.c, siplib/sip.h:
--	Added the extended assignment helper and the array allocation helper
--	for the future support of /Array/ for classes and mapped types.
--	[61cf6b3635ab]
--
--2009-09-01  phil  <phil>
--
--	* NEWS, build.py, lib/LICENSE-GPL2.txt, lib/LICENSE-GPL3.txt,
--	lib/LICENSE.short, sphinx/introduction.rst:
--	Added the GPL as a licensing option.
--	[1d372e99f512]
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
--	siplib/siplib.c, sphinx/specification_files.rst:
--	Added support for __iter__ and __next__.
--	[d6cd069a434f]
--
--2009-08-21  phil  <phil>
--
--	* sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Added a check for recursive class hierarchies. Fixed the error
--	message about type2string() by making sure it handles structs.
--	[7af2d9cb07f8]
--
--2009-08-11  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed sipIsPyMethod() to not use PyObject_GetAttr() so that
--	reimplementations defined in mixins will be found. This was a
--	regression introduced when attribute lookup was made less lazy when
--	getting super() to work properly.
--	[710a488b84b4]
--
--	* siplib/siplib.c:
--	Fixed the conversion of strings to wchar_t arrays as it was using
--	calls that appeared in Python v2.6.
--	[47cc56c95614]
--
--2009-08-08  phil  <phil>
--
--	* siplib/siplib.c:
--	sipFindType() will now find types given as a pointer.
--	[b693f15869c8]
--
--2009-08-06  phil  <phil>
--
--	* lib/sipdistutils.py:
--	Fixed sipdistutils.py for Python v3.
--	[4574e78f607f]
--
--2009-08-05  phil  <phil>
--
--	* siplib/apiversions.c, siplib/sip.h, siplib/siplib.c:
--	Fixes for looking up types when some times have no implementation
--	for all API versions.
--	[e77c51f40fe0]
--
--2009-08-04  phil  <phil>
--
--	* sipgen/transform.c:
--	No longer complain about methods having the same Python signature if
--	they all are versioned.
--	[076cbeaeb3ad]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Init extenders now respect API version numbers.
--	[4efa4f7f246b]
--
--2009-08-03  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Virtual methods now support API versions.
--	[8ec049505369]
--
--	* sipgen/gencode.c, sipgen/parser.y, sphinx/annotations.rst:
--	Added support for the /API/ annotation to all overloaded methods.
--	[fae5b6dd29d0]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	sphinx/annotations.rst:
--	The /API/ annotation is now supported for ctors.
--	[a24c25aede8d]
--
--2009-08-02  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c:
--	Instantiated class templates now take their API from the scoping
--	class.
--	[39bf3e3fc6de]
--
--2009-08-01  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Operator casts and global slots now handle classes with alternate
--	mapped type implementations. (In a limited way, but good enough for
--	PyQt.)
--	[c2ed8e5bbf11]
--
--2009-07-29  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a crash with sipFindType() when the search happens to land on
--	an unresolved external type.
--	[ec4838cbf038]
--
--	* siplib/siplib.c:
--	Fixed the Python v3 buffer interface for sip.voidptr.
--	[4f800839bd44]
--
--2009-07-25  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
--	sphinx/annotations.rst, sphinx/command_line.rst,
--	sphinx/specification_files.rst:
--	Fixed the '/' operator for Python v3 and future import for Python
--	v2.
--	[fe62bcd81fa3]
--
--2009-07-18  phil  <phil>
--
--	* sipgen/transform.c, sphinx/python_api.rst:
--	Fixed a typo in a couple of error messages.
--	[c7eb3170f527]
--
--2009-07-09  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed the nb_index initialiser for sip.voidptr for Python v2.4 and
--	earler.
--	[672b898935b5]
--
--	* siplib/siplib.c:
--	Allow the meta-type to be used with with ordinary Python classes,
--	not just SIP generated classes.
--	[6f724709902c]
--
--2009-07-08  phil  <phil>
--
--	* sipgen/gencode.c:
--	Complete the support for mapped type static methods.
--	[f1cf7ebed748]
--
--2009-07-07  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Safety commit of (mostly complete) support for static functions in
--	mapped types.
--	[58aa805c1867]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sphinx/annotations.rst:
--	Extended the use of /AllowNone/ to classes with %ConvertToType code.
--	[102fc846396e]
--
--2009-07-06  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
--	siplib/siplib.c, sphinx/annotations.rst:
--	Added the /AllowNone/ mapped type annotation for mapped types that
--	want to place a special interpretation on None.
--	[d449e525c5e8]
--
--	* sipgen/gencode.c:
--	The generated virtual handler code is now the same for classes and
--	for mapped types that might have an alternate class implementation.
--	[60ce12a7d248]
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Make sure mapped types honour the /Constrained/ annotation.
--	[0a8916fbe3b2]
--
--2009-07-05  phil  <phil>
--
--	* siplib/apiversions.c, siplib/siplib.c:
--	Debugged mapped types with namespaces.
--	[1f55210a89de]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	siplib/descriptors.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Safety checkin on the run-time support for mapped types with
--	namespaces.
--	[ec7ba808f36c]
--
--2009-06-29  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Finished the code generation support for enums in mapped types.
--	(Runtime support still to do.)
--	[552a2d4950a1]
--
--2009-06-28  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Safety commit of the support for mapped types containing enums.
--	[d94e09ea5add]
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
--	Implemented the sipContainerDef in anticipation of mapped types
--	supporting enums (for the moment, static methods and variables at a
--	later date). Fixed a problem where API version ranges wheren't being
--	reused.
--	[28f8f2aa4bcf]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Fixed a problem with enums in a type with alternate APIs.
--	[e320f9cb7d19]
--
--2009-06-27  phil  <phil>
--
--	* lib/siputils.py:
--	Added a workaround to the build system when using virtualenv on
--	MacOS.
--	[ff5b09d449d5]
--
--2009-06-25  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c, sphinx/c_api.rst:
--	A Python string object can now be provided when a wide character
--	(wchar_t) is expected.
--	[5a629389629b]
--
--2009-06-23  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Some fixes for generated code for mapped types and classes not being
--	as completely interchangeable as needed. (Still more to do.)
--	[438a66e8e0a4]
--
--2009-06-22  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Bug fixes to the multi-API type support - PyQt4 now builds again.
--	[795308460def]
--
--	* siplib/apiversions.c, sphinx/annotations.rst:
--	Completed the run-time support for multi-API types.
--	[8888d5cd3feb]
--
--2009-06-21  phil  <phil>
--
--	* sipgen/gencode.c:
--	Completed the code generation changes for multi-API types.
--	[439a95ba643e]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	More refactoring in preparation for multi-API support for types.
--	[a9c3de1478d8]
--
--	* sipgen/gencode.c:
--	More changes to the multi-API support for types.
--	[329493ac7802]
--
--2009-06-20  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Safety commit of latest changes for support of type API selection.
--	[9443ed19b08b]
--
--2009-06-19  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Safety commit of parser changes to get at the API version of a class
--	before it is defined.
--	[c209ce56ea4d]
--
--2009-06-18  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c, sphinx/annotations.rst:
--	Implemented API selection for global functions.
--	[db777d90f374]
--
--2009-06-17  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/apiversions.c, siplib/sip.h, sphinx/annotations.rst,
--	sphinx/c_api.rst, sphinx/directives.rst, sphinx/using.rst:
--	Completed the documentation for the API support. The %API directive
--	can now be used any number of times in a module. Added the parser
--	support for the API annotation.
--	[9e63d5da36bd]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c, sphinx/directives.rst,
--	sphinx/specification_files.rst:
--	Added support for the %API directive.
--	[076c846bb8ca]
--
--2009-06-16  phil  <phil>
--
--	* siplib/apiversions.c, siplib/sipint.h, siplib/siplib.c,
--	sphinx/c_api.rst:
--	Implemented sipIsAPIEnabled().
--	[ade852c2131a]
--
--	* siplib/apiversions.c:
--	...and made sure it compiles.
--	[3e8030fe1b76]
--
--	* siplib/apiversions.c, siplib/sipint.h, siplib/siplib.c,
--	siplib/siplib.sbf, sphinx/python_api.rst, sphinx/using.rst:
--	Fixed the reference count of the sip module in the error path if its
--	initialisation fails. Added the sip.getapi() and sip.setapi()
--	functions.
--	[43c34f1c289a]
--
--	* NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/sip.h, siplib/siplib.c,
--	sphinx/specification_files.rst:
--	Merged v4.8.1 into the trunk.
--	[d1bd8aecab5a]
--
--2009-06-05  phil  <phil>
--
--	* NEWS:
--	Released as v4.8.
--	[6e9fb584da32] [4.8]
--
--2009-06-03  phil  <phil>
--
--	* build.py:
--	More internal build system fixes.
--	[4f34294143b0]
--
--	* NEWS, build.py, siplib/descriptors.c, sphinx/Makefile:
--	Fixed a Python v3 portability bug. Fixed the internal build system
--	for Python v2.5.
--	[144adbee9ea0]
--
--2009-06-02  phil  <phil>
--
--	* build.py, doc/sipref.txt, sphinx/conf.py,
--	sphinx/extensions/siproles.py:
--	Switched to the Sphinx documentation.
--	[16b6a4f285a6]
--
--	* sphinx/build_system.rst, sphinx/builtin.rst, sphinx/distutils.rst,
--	sphinx/python_api.rst, sphinx/using.rst:
--	Completed the initial Sphinx docs.
--	[d9202085c430]
--
--	* sphinx/c_api.rst, sphinx/embedding.rst, sphinx/python_api.rst,
--	sphinx/using.rst:
--	More Sphinx docs.
--	[f3c5b7d3dcd4]
--
--2009-06-01  phil  <phil>
--
--	* sphinx/annotations.rst, sphinx/c_api.rst, sphinx/command_line.rst,
--	sphinx/directives.rst, sphinx/extensions/siproles.py,
--	sphinx/specification_files.rst, sphinx/using.rst:
--	More Sphinx docs.
--	[831112f389a5]
--
--	* sipgen/transform.c:
--	Fixed a bug where nested templates where having their types resolved
--	(when they should have been left as templates) which then meant that
--	they were being found and were being instantiated again (possibly in
--	a different module).
--	[79d8261912c8]
--
--	* build.py:
--	Fixed the build system after removing the TODO file.
--	[93ea3b759b5f]
--
--2009-05-31  phil  <phil>
--
--	* sphinx/annotations.rst, sphinx/builtin.rst, sphinx/c_api.rst,
--	sphinx/conf.py, sphinx/directives.rst,
--	sphinx/extensions/annotations.py, sphinx/extensions/siproles.py,
--	sphinx/incompatibilities.rst, sphinx/installation.rst:
--	More Sphinx docs.
--	[d28f3153b2f8]
--
--	* doc/sipref.txt, sphinx/annotations.rst, sphinx/c_api.rst,
--	sphinx/conf.py, sphinx/extensions/annotations.py,
--	sphinx/incompatibilities.rst, sphinx/using.rst:
--	More Sphinx docs.
--	[e4dcbba1bd9d]
--
--2009-05-30  phil  <phil>
--
--	* sphinx/build_system.rst, sphinx/conf.py, sphinx/distutils.rst,
--	sphinx/introduction.rst, sphinx/python_api.rst, sphinx/using.rst:
--	Sphinx documentation changes.
--	[62644d47ee77]
--
--	* TODO, doc/sipref.txt, siplib/siplib.c, sphinx/Makefile,
--	sphinx/annotations.rst, sphinx/build_system.rst, sphinx/builtin.rst,
--	sphinx/c_api.rst, sphinx/command_line.rst, sphinx/conf.py,
--	sphinx/directives.rst, sphinx/distutils.rst, sphinx/embedding.rst,
--	sphinx/incompatibilities.rst, sphinx/index.rst,
--	sphinx/installation.rst, sphinx/introduction.rst,
--	sphinx/python_api.rst, sphinx/specification_files.rst,
--	sphinx/using.rst:
--	Initial commit of the Sphinx documentation.
--	[432d95fdad2f]
--
--	* sipgen/parser.y, sipgen/transform.c:
--	Reverted the previous fix and fixed the real bug which was that
--	%DefaultEncoding wasn't being inherited properly by modules.
--	[9abeaff1148a]
--
--2009-05-29  phil  <phil>
--
--	* sipgen/transform.c:
--	Fixed a bug in comparing virtual handlers that had a char* result or
--	argument and a default encoding was specified (ie. with Python v3).
--	[3c92e9237373]
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/descriptors.c,
--	siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Eliminated more warning messages.
--	[a61fb0a096f2]
--
--	* sipgen/gencode.c, siplib/sip.h:
--	Eliminated some compiler warning messages - particularly for Python
--	v2.4.
--	[374f079e7228]
--
--2009-05-28  phil  <phil>
--
--	* sipgen/gencode.c:
--	Removed a compiler warning for the generated calls to
--	PyInit_Module() for Python v2.5 and v2.6.
--	[dc93a8fa4a5b]
--
--2009-05-27  phil  <phil>
--
--	* sipgen/gencode.c:
--	The implicit copying of const& results is disabled for abstract
--	classes.
--	[705fc12e2144]
--
--2009-05-26  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed the generated code for abstract operators.
--	[c56cc92b0917]
--
--	* siplib/siplib.c:
--	Added the missing initialisation of the sipVariableDescr_Type type.
--	[2c0779527ed3]
--
--2009-05-25  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
--	__bool__ is now synonymous with __nonzero__. __truediv__ and
--	__itruediv__ are now explicit. __div__ and __idiv__ are now Python
--	v2 only. Added support for __floordiv__, __ifloordiv__ and
--	__index__.
--	[537579d9318e]
--
--	* sipgen/parser.y:
--	Hopefully fixed the regression with specific mapped types not
--	properly superceding template mapped types that was affecting PyKDE3
--	and PyKDE4.
--	[25a665370099]
--
--2009-05-24  phil  <phil>
--
--	* siplib/descriptors.c, siplib/sipint.h:
--	Added a repr() method to sip.methoddescriptor.
--	[149f6c3f12a5]
--
--	* sipgen/transform.c:
--	Fixed a bug where the name of an automatically generated
--	complementary slot wasn't being generated.
--	[0f304e850331]
--
--	* sipgen/export.c:
--	Added support for images in the generated Scintilla API files from a
--	patch from Detlev Offenbach.
--	[83966cc9950a]
--
--2009-04-30  phil  <phil>
--
--	* doc/sipref.txt, sipgen/transform.c, siplib/qtlib.c:
--	%DefaultSupertype now only changes the default for the current
--	module. (%DefaultMetatype still affects importing modules.) This
--	should mean that modules that extend PyQt4 will continue to work
--	without having to make super-type or meta-type changes.
--	[5fc24c675796]
--
--2009-04-24  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed the lookup of generated slot functions in sub-types. Moved
--	some assertions to more appropriate places when a generated slot
--	function isn't found.
--	[5b59bd703dff]
--
--2009-04-20  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Disabled the new implicit copying of const reference results where
--	the class doesn't have a public copy ctor.
--	[70cd90b1d5b9]
--
--2009-04-18  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a problem handling __setitem__ when being used to support
--	multi-dimensional mappings.
--	[705be62a3cd0]
--
--2009-04-09  phil  <phil>
--
--	* siplib/siplib.c:
--	Print any exception raised by __dtor__.
--	[0d56ac42feac]
--
--2009-04-01  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
--	Added support for PyQt4's support for signals that have overloaded
--	methods.
--	[c0ad968503e4]
--
--2009-03-30  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a compiler warning message if sipCpp isn't used by
--	%BIGetBufferCode.
--	[26269a7e86f4]
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Fixed the declaration of the module initialisation function when
--	building static modules for Python v3.
--	[6f48c809c90b]
--
--2009-03-27  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a couple of missing calls to clear the error flag while
--	parsing strings.
--	[2275585e4c08]
--
--2009-03-26  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
--	siplib/siplib.c:
--	Replaced the new /Byte/ annotation with the even newer /Encoding/
--	annotation and %DefaultEncoding directive.
--	[7c648d9cdd13]
--
--2009-03-24  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the order in which PyQt4 signals are generated so that those
--	with optional arguments appear with the most arguments first and
--	least last.
--	[4d0b9c852cf8]
--
--2009-03-23  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Backed out the removal of sipSelfWasArg and supporting code as it
--	really is needed. However, changed how it was set so that super()
--	should still work.
--	[29d1813e4566]
--
--2009-03-21  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a bug in the code generated for protected methods with
--	multiple Python names.
--	[7aa8d62ddf7c]
--
--2009-03-20  phil  <phil>
--
--	* siplib/siplib.c:
--	Bytes and the buffer protocol are now also supported for non-byte
--	char and char * (howver the buffer protocol support seems to be
--	broken).
--	[1c5b994cd2d6]
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/descriptors.c,
--	siplib/sip.h, siplib/siplib.c:
--	Many changes to the wrapping of strings for Python v3 so that char
--	and char * (unless the /Byte/ annotation is specified) are handled
--	as Unicode rather than bytes. Such strings must be able to be
--	encoded as Latin-1. Related to the above, the generated code is much
--	more careful than it used to be about keeping Python string objects
--	alive while their data is being used.
--	[49cf3c9e7b69]
--
--2009-03-18  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a long-standing bug in the handling of the /NoArgParser/
--	annotation that only came to light with Python v3.
--	[2c44dd616d6d]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c:
--	More fixes for consolidated modules. Python v2 and v3 should now be
--	working.
--	[b966b1df2bb1]
--
--2009-03-17  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Some fixes for consolidated module support for both Python v2 and
--	v3.
--	[b17d4cdf4709]
--
--	* lib/siputils.py:
--	Tweaked the build system to make it easier for Makefile sub-classes
--	to add commands to targets.
--	[abe3ecd83256]
--
--2009-03-16  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Fixed a bug in generating Python v3 consolidated modules.
--	[8fc22b7be6fd]
--
--	* siplib/siplib.c:
--	Fixed a typo that broke the build of the sip module for Python v2.
--	[348b333af022]
--
--2009-03-15  phil  <phil>
--
--	* siplib/sip.h:
--	Tweaks to the Python portability macros.
--	[c1f795ce8a5a]
--
--	* siplib/sip.h:
--	More Python portability macros.
--	[b3d39099f350]
--
--2009-03-14  phil  <phil>
--
--	* lib/configure.py:
--	Fixed a Mac build regression handling the location of the SDK.
--	[2c8cf43905e1]
--
--	* siplib/sip.h:
--	Added some more Python porting macros.
--	[c046cc5bb268]
--
--	* lib/siputils.py:
--	Removed a remaining Python v2 specific call from the build system.
--	[c1527c576e1d]
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h:
--	The generated code now supports Python v3.
--	[c60f38353478]
--
--	* siplib/siplib.c:
--	The sip module can now be imported by Python v3.
--	[a8bd1e5a5a4b]
--
--2009-03-13  phil  <phil>
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Ported the PyString_ calls in the sip module to Python v3.
--	[337e7e627054]
--
--	* sipgen/gencode.c:
--	Updated the generated module initialisation code for Python v3 - but
--	not for consolidated modules yet.
--	[985c336dd059]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Moved to PyLong_* for Python v3.
--	[a1d1a376920b]
--
--2009-03-12  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h, siplib/siplib.c:
--	More porting of the sip module. It now compiles but still calls
--	Python v2 functions.
--	[9f4570a090e1]
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, siplib/descriptors.c, siplib/sip.h,
--	siplib/siplib.c:
--	Partially ported the sip module to Python v3. Added the
--	%BIGetBufferCode and %BIReleaseBufferCode directives to support the
--	buffer interface of Python v3.
--	[0631013fd5ae]
--
--2009-03-11  phil  <phil>
--
--	* doc/sipref.txt, lib/configure.py, lib/siputils.py:
--	configure.py now uses optparse. configure.py and the build system
--	will now run under Python3.
--	[89bbb0b49865]
--
--	* siplib/siplib.c:
--	Implemented __dict__ for sipsimplewrapper.
--	[cf1c9edeb56a]
--
--	* sipgen/gencode.c, siplib/sip.h:
--	Added the SIP_PYMETHODDEF_CAST compatibility macro for Python v2.4
--	and earlier.
--	[43e5b0afa42d]
--
--2009-03-10  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the code generated for variable getters so that a copy is
--	only returned if the variable is const.
--	[22c2ae7bdc37]
--
--2009-03-09  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the generation of the string pool to get around MSVC's
--	limitation on the size of a string.
--	[e15683c4034a]
--
--	* NEWS:
--	Updated the NEWS file.
--	[262f29053a78]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Made sure all generated code doesn't break strict aliasing.
--	[ae62345de148]
--
--	* sipgen/gencode.c:
--	SIP now automatically copies objects when they are returned as a
--	const reference.
--	[3d0c7011cb93]
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	A further fix to the order in which modules have their types
--	resolved.
--	[d7ebeff5a7ce]
--
--2009-03-06  phil  <phil>
--
--	* lib/siputils.py:
--	Taught the build system about the QtScriptTools module.
--	[6c0d66e4ef0b]
--
--	* sipgen/transform.c:
--	Fixed a bug where types were being resolved in outer modules before
--	inner modules. This meant that template-based types created on the
--	fly might be created in the wrong module.
--	[cd2a99e505be]
--
--2009-03-05  phil  <phil>
--
--	* lib/siputils.py:
--	Taught the build system about the new dependency of QtXmlPatterns on
--	QtNetwork.
--	[50a9e41802c2]
--
--2009-03-04  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixes for the updated method cache.
--	[d82c3be07e1b]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Greatly simplified the virtual reimplementation method cache now
--	that attribute lookup has been cleaned up.
--	[0cc40f47e6d5]
--
--2009-03-03  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
--	Implemented the /KeepReference/ argument annotation.
--	[c8e2e1961f50]
--
--2009-02-27  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added sipCanConvertToEnum() to the public API.
--	[2748f0bbb0ab]
--
--2009-02-26  phil  <phil>
--
--	* siplib/sipint.h, siplib/siplib.c:
--	Removed the __dict__ getter as it is no longer needed. Changed the
--	declaration of the descriptors as they don't need to be exported.
--	[ddd2710b42fd]
--
--2009-02-25  phil  <phil>
--
--	* NEWS, doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
--	Reverted to using type's and object's attribute getters and setters
--	now that we populate the type dictionary of a generated type with
--	all its lazy attributes in one go. Changed how an external
--	attributer getter works now that it only needs to populate the type
--	dictionary.
--	[8a22253728be]
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Safety checking of the working (but still to be changed) attribute
--	lookup code.
--	[d7244d817b9f]
--
--	* sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h,
--	siplib/siplib.c:
--	Refactored the support for setting instance variables.
--	[cc8a22386009]
--
--	* sipgen/gencode.c, sipgen/parser.y, siplib/descriptors.c,
--	siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	The refactored support for getting variables now works.
--	[c3e7dc58b020]
--
--2009-02-24  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Safety commit of refactored wrapping of class variables.
--	[fa8ba6ef243b]
--
--2009-02-23  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed the problem with looking up external lazy attributes - wrapped
--	variables are the only thing not working.
--	[ab3e207d555b]
--
--	* siplib/descriptors.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c, siplib/siplib.sbf:
--	Safety commit of new attribute lookup code. Don't use this - it's
--	broken.
--	[2673bc2add5c]
--
--	* siplib/siplib.c:
--	Fixed a reference count leak when an external lazy attribute was a
--	descriptor.
--	[1047169d1ba8]
--
--	* siplib/siplib.c:
--	Fixed a crash when accessing a wrapped instance variable as a class
--	variable.
--	[e922b386c5aa]
--
--2009-02-22  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a bug in the refactored attribute lookup.
--	[ddad97af22ec]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Completed the support for the lazy attribute lookup hook.
--	[1f7bc8f488a8]
--
--2009-02-21  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	Added initial support for registering lazy attribute getters.
--	[9aae0eb78368]
--
--	* sipgen/export.c, sipgen/gencode.c:
--	The PyQt4 signal table is now generated. The XML export now marks
--	the default signal.
--	[dbf0c7f47b6b]
--
--2009-02-20  phil  <phil>
--
--	* lib/LICENSE, sipgen/gencode.c, siplib/sip.h:
--	Added the stub of signal table for PyQt4.
--	[f53134503038]
--
--2009-02-16  phil  <phil>
--
--	* siplib/sip.h, siplib/siplib.c:
--	Removed some compiler warnings.
--	[a3c24034045a]
--
--2009-02-14  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	More signal/slot refactoring fixes.
--	[e1c0b895f0d1]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
--	Debugged the signal/slot refactoring.
--	[a4a47ea6fd1e]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
--	siplib/sipint.h, siplib/siplib.c:
--	Safety commit of latest signal/slot refactoring.
--	[751cebc544cc]
--
--2009-02-13  phil  <phil>
--
--	* siplib/qtlib.c, siplib/siplib.c:
--	Fixed a build problem with Python 2.4.x and earlier.
--	[df846f30a329]
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/siplib.c:
--	PyQt3 signal support is now enabled with the %Plugin directive
--	instead of %SIPOptions. Removed %SIPOptions.
--	[d511ad00cc71]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	The generated typedefs table is now sorted.
--	[abd1a7d60330]
--
--2009-02-12  phil  <phil>
--
--	* siplib/siplib.c:
--	An unconstrained enum can now be a sub-class of int.
--	[60366594aa80]
--
--2009-02-11  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h:
--	Renamed TypeFlags to PyQt4Flags. Renamed NoQMetaObject to
--	PyQt4NoQMetaObject. Moved the type flags into the PyQt4-specific
--	type structure.
--	[259fceeadbbe]
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Removed the registration of wrapped types with the Qt meta-type
--	system as it is no longer needed by PyQt4.
--	[71f80e789732]
--
--2009-02-07  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Removed sipAssignType() and moved the helpers to the PyQt4 plugin.
--	[305f07cd3ce2]
--
--2009-02-02  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c:
--	The QObject.sender() support is now PyQt3 only again.
--	[e732e65c15b5]
--
--2009-02-01  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Fixed a bug in the generation of the sipParseArgs() sub-format
--	character for types.
--	[fadc9f7074f1]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
--	Changed the QObject::sender() support for PyQt4.
--	[9d6d9918bb1f]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Debugged the merged types table.
--	[cf4e643c28b5]
--
--2009-01-31  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/heap.c, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	Safety commit of the merge of the class, mapped types and enum
--	tables.
--	[33a1dbf992df]
--
--2009-01-30  phil  <phil>
--
--	* siplib/sip.h, siplib/siplib.c:
--	Wrapped classes are now created as they are needed and not in the
--	order they appear in the generated class table. Therefore the class,
--	mapped type and enum tables can now be merged and ordered by the
--	type name (and searched using a binary search).
--	[4a72c9cee88f]
--
--2009-01-29  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Moved the last of the type parsing to PyQt3.
--	[b7d7695e3d8e]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Moved the registering of int types to PyQt4.
--	[e63f85d857bd]
--
--2009-01-28  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Refactored the support for looking up typedefs.
--	[42851fe9a2cb]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Moved the type parsing support to PyQt3.
--	[531e8244cfd3]
--
--2009-01-27  phil  <phil>
--
--	* sipgen/gencode.c:
--	Removed a remaining call to sipReleaseMappedType().
--	[2a9cbf86c86a]
--
--2009-01-25  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a too-few-arguments-to-a-print bug in the code generator.
--	[1260503c2021]
--
--	* siplib/siplib.c:
--	Fixed compilation issues.
--	[635ffd53597b]
--
--2009-01-18  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h:
--	Replaced sipFindConnection() with sipFindSlot().
--	[30f0174c05f4]
--
--2009-01-13  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Replaced sipFreeSignature() with sipFreeSipslot().
--	[e5275f031458]
--
--2009-01-12  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Pushed the parsing of signatures into PyQt.
--	[b2e616d5c92f]
--
--2009-01-11  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Replaced sipConvertRx() with sipConvertRxEx().
--	[cc0e4fe70f50]
--
--2009-01-10  phil  <phil>
--
--	* sipgen/gencode.c:
--	Removed the generation of an old Qt API entry.
--	[30f044ed1723]
--
--2009-01-09  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
--	Safety commit of partial refactoring of the Qt signal support.
--	[429673b02dcd]
--
--2009-01-04  phil  <phil>
--
--	* lib/LICENSE, lib/LICENSE.short, sipgen/gencode.c:
--	Don't import the qt_register_type symbol if it isn't needed. Updated
--	copyright notices.
--	[f2dbc98f7144]
--
--2008-12-30  phil  <phil>
--
--	* doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
--	sipTypeFromPyTypeObject() now takes a PyTypeObject* rather than a
--	PyObject*.
--	[077c2ad4451f]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/objmap.c, siplib/sip.h,
--	siplib/sipint.h, siplib/siplib.c, siplib/threads.c:
--	Added sipTypeName() and sipTypeScope() to the public SIP API.
--	[701c6915d3e3]
--
--2008-12-29  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, siplib/sip.h,
--	siplib/sipint.h, siplib/siplib.c:
--	Migrated sipEnum_* to sipType_*.
--	[e0417099f5a9]
--
--2008-12-27  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	sipType_* are now generated for enums. These are used internally but
--	the SIP API has not yet been changed.
--	[ca45e1d31af2]
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Broke out the generated type structures for mapped and class types
--	to different structures with a common header.
--	[ff4bec0abd37]
--
--2008-12-26  phil  <phil>
--
--	* siplib/siplib.c:
--	Wrapped enums now have their own meta-type. This is the hook that
--	will allow the C++ name of an enum to be derived from the enum's
--	Python type object.
--	[ea550b12904c]
--
--2008-12-24  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
--	siplib/siplib.c:
--	Added sip_api_init_module() to make sure dependent modules can be
--	fully initialised before they are needed.
--	[fed394659169]
--
--	* sipgen/gencode.c, siplib/sip.h:
--	Removed the Qt meta-type id from the pyqt4TypeDef structure as we
--	want to use it for mapped types as well but we would never know when
--	it was safe to cast from a sipTypeDef pointer.
--	[92c012de8c02]
--
--2008-12-21  phil  <phil>
--
--	* sipgen/gencode.c:
--	The PyQt4-specific extension to the generated type structure is now
--	used for mapped types as well.
--	[f49b6d447292]
--
--2008-12-20  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	Changed the PyQt4-specifc handling of Qt meta-type registration.
--	[d112840accfd]
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	A generated type structure now has its Python type object set
--	earlier so that sub-meta-types can use sipIsExactWrappedType().
--	Calls to QObject::metaObject() are no longer need to trigger the
--	creation of the meta-object.
--	[8d816e1f3008]
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, siplib/sip.h:
--	Added %Plugin and use it to support pyqt4TypeDef.
--	[0f236470d582]
--
--2008-12-19  phil  <phil>
--
--	* siplib/sip.h:
--	Moved the qt_qobject member out of sipWrapperType and into PyQt
--	where it belongs.
--	[babe6a91d801]
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Completed the migration of sipClass_* to sipType_*.
--	[e7c00163d819]
--
--	* doc/sipref.txt:
--	Documentation updates. All uses of sipClass_* are only by deprecated
--	parts of the API.
--	[cfa2b5ca880e]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Deprecated the 'B' and 'C' format characters to sipBuildResult() and
--	sipCallMethod(). Added the new 'N' format character to
--	sipBuildResult() and sipCallMethod().
--	[d685f1b18287]
--
--2008-12-17  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
--	Deprecated the 'C' format character of sipParseResult() in favor of
--	the existing 'D' character.
--	[be1f044d9828]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
--	siplib/siplib.c:
--	Migrated the sub-class convertor code to using sipType rather than
--	sipClass.
--	[a4424a9ac5a5]
--
--2008-12-16  phil  <phil>
--
--	* sipgen/transform.c:
--	Fixed a bug where names of mapped type templates where being
--	generated for modules that didn't need them.
--	[176171583343]
--
--2008-12-14  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
--	siplib/sipint.h, siplib/siplib.c:
--	Replaced the deprecated sipConvertFromInstance() and
--	sipConvertFromNewInstance() with sipConvertFromType() and
--	sipConvertFromNewType().
--	[6f6e06ceaace]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Replaced the deprecated sipForceConvertToInstance() and
--	sipForceConvertToMappedType() with sipForceConvertToType().
--	[fc54ee3b5308]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Replaced the deprecated sipConvertToInstance() and
--	sipConvertToMappedType() with sipConvertToType().
--	[8e66284398dd]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Replaced the deprecated sipCanConvertToInstance() and
--	sipCanConvertToMappedType() by sipCanConvertToType().
--	[c1f1b170b263]
--
--2008-12-13  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Replaced the deprecated sipReleaseInstance() and
--	sipReleaseMappedType() with sipReleaseType().
--	[7ce45ed9ae89]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Replaced the deprecated sipGetWrapper() with sipGetPyObject().
--	[8cb295b72e62]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c,
--	siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	More moves from sipClass_* to sipType_*.
--	[4e7936a90f99]
--
--	* sipgen/gencode.c, siplib/objmap.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	More conversions from sipClass_* to sipType_*.
--	[75eed80555d4]
--
--2008-12-12  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c,
--	siplib/threads.c:
--	Merged the adding of type instances.
--	[d2db3775a993]
--
--2008-12-08  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Started the port from sipClass_* to sipType_*. Added support for
--	assert() to the build system.
--	[231826fe6d04]
--
--	* sipgen/gencode.c:
--	Renamed sipMappedType_* to sipType_*.
--	[8df5a86247e8]
--
--2008-12-07  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added sipType_* for wrapped types. sipClass_* is now defined in
--	terms of sipType_*.
--	[bb37272a3113]
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Deprecated sipClassName().
--	[de0402f5112c]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	Mapped types are now described by the same sipTypeDef structure that
--	describes wrapped types.
--	[77ce210b751e]
--
--2008-12-06  phil  <phil>
--
--	* doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
--	Moved the 'user' field from sip.wrapper to sip.simplewrapper because
--	PyQt uses it for some non-QObject types.
--	[0bb916ce4818]
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	Restored %DefaultMetatype and the /Metatype/ class annotation. This
--	support is now complete. Documented the meta-type and super-type
--	support.
--	[15f1b60f808f]
--
--2008-12-03  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h,
--	siplib/siplib.c:
--	Code generator changes to support sipSimpleWrapper.
--	[ebd5b0b103ae]
--
--	* siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	The sip module now compiles again without any unexpected warnings.
--	[6fb536d5333e]
--
--2008-12-02  phil  <phil>
--
--	* siplib/objmap.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
--	siplib/siplib.c:
--	Various compilation fixes.
--	[ace8e0f95607]
--
--2008-12-01  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Safety checkin of the support for the new sip.simplewrapper type.
--	[3d87512e3a5c]
--
--	* NEWS, doc/sipref.txt, siplib/siplib.c:
--	Added support for %InitialisationCode. (Actually in the previous
--	commit but I forgotto mention it.) The text of an attribute
--	exception now mimics that produced by the Python interpreter.
--	[70d0f5dc259b]
--
--2008-11-30  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	Refactored the super-type and meta-type support. Meta-types are now
--	handled implicitly.
--	[2676976c88bf]
--
--2008-11-29  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/siplib.c:
--	Debugged the metatype support.
--	[e7e9b5d303c3]
--
--2008-11-27  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	The metatypes are now registered and readied.
--	[5c4757c83b70]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/transform.c, siplib/siplib.c:
--	Fixes for various regressions.
--	[eea6dc713727]
--
--2008-11-26  phil  <phil>
--
--	* sipgen/gencode.c:
--	Use the string pool for calls to qRegisterMetaType().
--	[954bd63eb830]
--
--	* sipgen/gencode.c, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	Completed the code generator support for user defined metatypes.
--	[6c09f41b9eec]
--
--2008-11-24  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/sip.h:
--	Added the parser support for %Metatype and %DefaultMetatype.
--	[6af8f6a12eb5]
--
--2008-11-23  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	The string pool now overlaps strings where possible.
--	[4873718f6e82]
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	siplib/sip.h, siplib/siplib.c:
--	Enum names now use the string pool.
--	[b6414c99a03a]
--
--	* sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
--	Fixed a regression in the handling of nested namespaces.
--	[a49433be0291]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	Python and C++ type names now use the string pool. The string pool
--	is currently broken for namespace extenders.
--	[b08a2ca9d7fd]
--
--2008-11-22  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	The generated name cache is now a single (const) string.
--	[0296eda5e61a]
--
--	* doc/sipref.txt, lib/configure.py, lib/siputils.py, sipgen/gencode.c,
--	siplib/sip.h, siplib/siplib.c:
--	Removed all deprecated parts of the API and generated code.
--	[0a00c20f5c5b]
--
--2008-11-21  phil  <phil>
--
--	* lib/siputils.py:
--	Use "-undefined dynamic_lookup" rather than linking against the
--	Python framework on MacOS.
--	[773c8920c04f]
--
--2008-11-18  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added sipWrapperType_Check() to the public API.
--	[42d9ec7403f4]
--
--2008-11-17  phil  <phil>
--
--	* NEWS, sipgen/gencode.c:
--	Merged v4.7.9 into the trunk.
--	[63aff4a6e0f0]
--
--2008-11-08  phil  <phil>
--
--	* NEWS, TODO, build.py, doc/default.css, doc/sipref.txt, lib/LICENSE,
--	lib/LICENSE.short, lib/README.HP-UX, lib/THANKS, lib/configure.py,
--	lib/siputils.py, sipgen/export.c, sipgen/gencode.c, sipgen/heap.c,
--	sipgen/lexer.l, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/objmap.c, siplib/qtlib.c, siplib/sip.h,
--	siplib/sipint.h, siplib/siplib.c, specs/linux-icc,
--	specs/win32-msvc2005, specs/win32-msvc2008:
--	Merged v4.7.8 into the trunk.
--	[9cc6147a1067]
--
--2007-07-30  phil  <phil>
--
--	* NEWS:
--	Released as v4.7.
--	[a458d43a6fbb] [4.7]
--
--2007-07-28  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a memory leak with mapped types with the /Out/ annotation.
--	[5c156cb3b313]
--
--2007-07-27  phil  <phil>
--
--	* siplib/qtlib.c:
--	Fixed a bug preventing wrapped C++ slots from being disconnected.
--	[43fc1981c30d]
--
--2007-07-14  phil  <phil>
--
--	* siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	Rather than only lambda functions being given an extra reference
--	when used as a slot, anything other that a method or wrapped C
--	function is given an extra reference. Specifically this means that
--	partial functions can now be used as slots.
--	[2562db168ce9]
--
--2007-07-04  phil  <phil>
--
--	* sipgen/transform.c:
--	Relaxed the restriction that /Out/ arguments couldn't be const.
--	[546fba30aac6]
--
--2007-06-25  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a compiler warning message about an unused argument in
--	generated code.
--	[5713835ff863]
--
--	* sipgen/parser.y:
--	Fixed a bug in the previous fix so that it only applies to mapped
--	types.
--	[68a7fd2c1ea4]
--
--	* sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Fixed a bug where template based types where overwriting the header
--	code of any previously defined type based on the same interface
--	file.
--	[f41edc04b3cf]
--
--2007-06-23  phil  <phil>
--
--	* NEWS, sipgen/gencode.c:
--	Consolidated modules are now generated as either C or C++ (rather
--	than always C) so that the name cache names are consistently
--	mangled.
--	[83c24c956277]
--
--2007-06-22  phil  <phil>
--
--	* lib/siputils.py:
--	Fixed a build system problem for PyQt on Windows against a static
--	Qt.
--	[3ff5f3d1e074]
--
--	* sipgen/gencode.c:
--	Fixed silly code generation typo.
--	[3232af13c3f6]
--
--	* lib/siputils.py:
--	Changed the build system so that missing macros default to being
--	empty rather than causing an error. (Qt v4.3.0 contains such a
--	case.)
--	[213c1dd11448]
--
--2007-06-20  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/main.c,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
--	siplib/siplib.c:
--	Split the consolidated module concept into separate consolidated and
--	composite module types, which significantly simplifies things.
--	[eb0502b5bb27]
--
--2007-06-19  phil  <phil>
--
--	* lib/siputils.py:
--	Updated some comments in the build system.
--	[f38ba63f0f97]
--
--	* siplib/siplib.c:
--	Fixed a bug in the sip module consolidated module support. Otherwise
--	everything seems to work.
--	[a9d7eeffdf81]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	More consolidated module refactoring.
--	[9c629ca01a4a]
--
--2007-06-18  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c:
--	More consolidated module refactoring. PyQt4 with only QtCore enabled
--	now compiles.
--	[bec649674da2]
--
--2007-06-16  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y:
--	More consolidated module support.
--	[b7455f328486]
--
--2007-06-12  phil  <phil>
--
--	* siplib/siplib.c:
--	Hopefully fixed a bug in the handling of the 'C' and 'D' format
--	characters in sipParseResult().
--	[c28fa1333976]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	More refactoring for consolidated module support. SIP no longer
--	generates lots of .h files. Note that SIP is now less tolerant of
--	missing #includes in %TypeHeaderCode and %ModuleHeaderCode.
--	[ae2dec8da410]
--
--2007-06-04  phil  <phil>
--
--	* sipgen/gencode.c:
--	Removed the need to generate the shadow class definition in a header
--	file and put it in the original class's C++ file instead.
--	[30cd539612c7]
--
--2007-06-03  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c:
--	More consolidated module refactoring.
--	[9fbe5340767f]
--
--2007-06-01  phil  <phil>
--
--	* sipgen/parser.y:
--	Fixed a missing return in parser.y.
--	[3f160ab4ae5b]
--
--2007-05-28  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	A bit more consolidated module support.
--	[f714935139bb]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
--	siplib/siplib.c:
--	More work on consolidated modules.
--	[bde47f2343cf]
--
--2007-05-27  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
--	The component stub modules (ie. those requested with the -p flag)
--	are now generated.
--	[21119384ab4f]
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h:
--	Added the stubs of the -n and -p command line options for the
--	remaining consolidated module support. Documented the
--	%ConsolidatedModule directive.
--	[744cf0ed0857]
--
--2007-05-24  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
--	Completed the implementation of %ConsolidatedModule for the simple
--	case (where the consolidated module populates itself from the
--	component modules).
--	[78406f2fdcb4]
--
--2007-05-23  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
--	A bit more refactoring for the consolidated module support.
--	[51a36ed46e45]
--
--	* siplib/objmap.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	When deciding if an instance is already wrapped, sip only considers
--	if the candidate is a sub-class of the expected class. (Before it
--	used to consider if the candidate was a super-class of the expected
--	class as well. However this shouldn't be necessary as the candidates
--	class should be correct if all the sub-class convertor code is
--	working properly.)
--	[014d6fb553a9]
--
--	* sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, siplib/objmap.c:
--	Added the start of the support for %ConsolidatedModule.
--	[2cdafc7810be]
--
--2007-05-20  phil  <phil>
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Added the dump() funtion to the sip module.
--	[299d67a0fe51]
--
--2007-05-13  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added sipTransferBreak() for removing hidden references without
--	changing owndership.
--	[5d298052a2e5]
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
--	Added support for /Transfer/ as a function annotation.
--	[ab6bd827b7a0]
--
--2007-05-12  phil  <phil>
--
--	* lib/siputils.py:
--	Added the build system hooks for PyQt's QtScript module.
--	[6fdf6cb0ade1]
--
--	* sipgen/parser.y:
--	Fixed some parser problems related to versioning.
--	[a4ffe24c61bd]
--
--2007-05-11  phil  <phil>
--
--	* sipgen/parser.y:
--	Relaxed the restriction that the arguments to mapped type templates
--	had to be simple names and not basic types.
--	[04d512a7ddee]
--
--	* sipgen/gencode.c:
--	Generated the sipClass_* for namespaces.
--	[234dfbd619d5]
--
--2007-05-07  phil  <phil>
--
--	* sipgen/gencode.c:
--	More fixes to mapped type templates - should be Ok now.
--	[3e7528f5ec18]
--
--2007-05-04  phil  <phil>
--
--	* doc/sipref.txt:
--	Fixed a couple of documentation bugs regarding exceptions.
--	[21138bd0e4dd]
--
--2007-05-03  phil  <phil>
--
--	* sipgen/transform.c:
--	Fixed a bug where generated .h files for template argument types
--	were being included in the mapped type rather than the mapped type's
--	own .h file.
--	[015e7bc362e3]
--
--2007-04-28  phil  <phil>
--
--	* siplib/siplib.c:
--	Removed the need for the copy_reg module. This marks the completion
--	if the pickle support.
--	[855e5b2a3bfc]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Pickling nested types now works.
--	[d10779f3268e]
--
--	* siplib/siplib.c:
--	Minor refactoring of the pickle code prior to adding support for
--	nested classes.
--	[33badbfc5ee1]
--
--2007-04-27  phil  <phil>
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Named enums that are nested within other types can now be pickled.
--	(Note that the pickle format for classes will be changed in the next
--	few days to allow nested classes to be pickled in the same way.)
--	[ad31cd17972b]
--
--2007-04-26  phil  <phil>
--
--	* siplib/siplib.c:
--	More improvements to the pick code.
--	[7387a6436f4f]
--
--	* sipgen/gencode.c:
--	Slight improvement to the generated pickle code.
--	[250d4acde794]
--
--2007-04-22  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
--	siplib/siplib.c:
--	Added %PickleCode to allow wrapped objects to be pickled.
--	[45059aeff1d0]
--
--	* siplib/siplib.c:
--	Module level enums can now be pickled. Removed the None
--	implementations of __reduce__ and __reduce_ex__ and fixed the
--	segfault that pickling was causing.
--	[960a54bd61d7]
--
--2007-04-10  phil  <phil>
--
--	* NEWS:
--	Released as v4.6.
--	[9d849b09a8d4] [4.6]
--
--2007-04-07  phil  <phil>
--
--	* sipgen/export.c:
--	Changed the API file generation to generate the __init__ form of a
--	ctor as well as the callable type form.
--	[316e430f8a37]
--
--2007-04-02  phil  <phil>
--
--	* NEWS:
--	Updated the NEWS file.
--	[5c6477d8ee0d]
--
--	* NEWS, doc/sipref.txt, lib/configure.py, lib/siputils.py:
--	Added the -n flag to configure.py to build universal binaries on
--	MacOS/X.
--	[e892f0a63956]
--
--	* siplib/siplib.c:
--	Fixed a MinGW warning message.
--	[79ac369e6efa]
--
--	* siplib/siplib.c:
--	Backed out the save and restore of the exception state in
--	sipWrapper_dealloc() as it can get called when there is no current
--	thread state (which results in a segfault).
--	[f66e13ead83b]
--
--	* NEWS:
--	Updated the NEWS file.
--	[c7488adf6abf]
--
--	* siplib/siplib.c:
--	Fixed a bug handling sub-class convertor code with multiple
--	inheritance.
--	[8ac3a23e1e3c]
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Virtuals that return a wchar_t * now keep then free the previous
--	result to limit the possible memory leaks.
--	[48b87ba8bc6a]
--
--2007-04-01  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/transform.c:
--	Fixed a bug in the wchar_t support with const wchar_t * arguments.
--	Fixed a bug in the wchar_t support with char and wchar_t being
--	considered equivalent.
--	[541c7556314d]
--
--2007-03-26  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed problem where lambda slots connected to QObject.destroyed()
--	were cleared before the signal was emitted.
--	[2ace696800c4]
--
--2007-03-25  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Completed the wchar_t support.
--	[14c15deefc3b]
--
--2007-03-24  phil  <phil>
--
--	* sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/qtlib.c, siplib/sip.h,
--	siplib/siplib.c:
--	Added support for wchar_t - undocumented and certainly untested.
--	[14559b49bd9d]
--
--2007-03-10  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	No longer generate the forward declaration of an opaque class. It
--	shouldn't be necessary and means that the class could be a C
--	structure.
--	[647d2f4b8561]
--
--2007-03-02  phil  <phil>
--
--	* sipgen/lexer.l:
--	SIP should now handle DOS format files on UNIX systems.
--	[1935d8be814b]
--
--2007-02-27  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
--	sipgen/sip.h:
--	Undeprecated the -g command line option. Added the /HoldGIL/
--	annotation.
--	[fbf1aaec1094]
--
--2007-02-25  phil  <phil>
--
--	* sipgen/transform.c, siplib/siplib.c:
--	Fixed the previous fix related to signatures for the cases where the
--	Python and C++ signatures have different numbers of arguments.
--	[66f4866a1393]
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Included Matt Newell's fix for making sure that a sub-class
--	convertor returns the most specific type available.
--	[7b9b628d5c50]
--
--2007-02-24  phil  <phil>
--
--	* doc/sipref.txt, sipgen/transform.c:
--	Fixed some documentation references to Py_ssize_t. sip now takes C++
--	as well as Python signatures into account when deciding what
--	interface files a class need to include.
--	[ac3ecfcc08d3]
--
--	* doc/sipref.txt, siplib/qtlib.c:
--	Leave it to the Qt support code to release the GIL when connecting
--	signals.
--	[8c907b07ad8f]
--
--2007-02-20  phil  <phil>
--
--	* siplib/qtlib.c, siplib/sipint.h, siplib/siplib.c:
--	An instance dictionary is not longer created automatically. Python
--	will create it if and when it is needed. lambda slots are now
--	cleaned up in the clear function rather than being left to the slot
--	proxy dtor.
--	[61eac95ed77e]
--
--	* siplib/siplib.c:
--	Fixed a bug in the implementation of /Transfer/ when the object was
--	aleady owned by C++ but the owning object had been garbage
--	collected.
--	[4d64b0e0db86]
--
--2007-02-18  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a bug in the clearing of reference cycles with lambda slots.
--	Although the slot is visited, it is no longer cleared - that is left
--	to the proxy dtor.
--	[aac8236a8970]
--
--2007-02-16  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c:
--	Fixed a bug in the build system for QtDesigner on Windows. The
--	Q_OBJECT support code now uses metaObject() rather than
--	staticMetaObject because the latter is private in the ActiveQt
--	classes.
--	[4b8647dbb036]
--
--2007-02-10  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	Added support for /TypeFlags/. Added sipFindClass() and
--	sipFindNamedEnum() to the public API.
--	[530b7a1aa547]
--
--2007-02-06  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h:
--	More changes to the Q_OBJECT support.
--	[b46c77268a1c]
--
--2007-02-04  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h:
--	Renamed "Qt4MetaObject" to "Qt4Q_OBJECT".
--	[9b8809b3f254]
--
--2007-02-01  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the metaObject() hook so that it won't crash if the C++
--	instance has gone.
--	[5241cd5c39d3]
--
--2007-01-30  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the metaObject() hook again.
--	[77da534919cb]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Changed the metaObject() hooks.
--	[272f63959180]
--
--2007-01-27  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the way the Qt support API is created so that new SIPs can
--	build old PyQts.
--	[15c8d8be611d]
--
--	* NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added the hooks to allow PyQt to build a proper meta-object when a
--	new Python class is defined.
--	[c82c3d1b50aa]
--
--2007-01-25  phil  <phil>
--
--	* lib/siputils.py, siplib/qtlib.c:
--	Fixed a build system bug that affected non-MinGW Windows compilers
--	when building static modules. Taught the build system about the
--	QtDesigner module.
--	[0029d3937d59]
--
--2007-01-23  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Reimplemented the support for qt_metacall() so that it is a bit
--	cleaner and can't be called from Python.
--	[c3701e916110]
--
--2007-01-22  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/qtlib.c,
--	siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	Added support for the QtMetaClass option. Added sipParseSignature()
--	to the private Qt API. (Both of the above are needed for David
--	Boddie's support for Python widgets in Qt Designer.)
--	[51250dc9185b]
--
--2007-01-21  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Extended the cyclic garbage collector support for lambda slots so it
--	works with SIGNALs as well as PYSIGNALs. Incremented the SIP API
--	version number to 3.4.
--	[fcf4f2b51bd7]
--
--	* siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	Fixed garbage collection support for lambda slots (at the moment
--	only when the slot is connected to a PYSIGNAL).
--	[8bf735cda5bf]
--
--2007-01-16  phil  <phil>
--
--	* siplib/sip.h:
--	Added #undef slots to sip.h for when embedding Python 2.3 in Qt
--	applications.
--	[33ab2adb9d0c]
--
--	* sipgen/gencode.c:
--	qRegisterMetaType() is now called for every candidate class at
--	module initialisation rather than when the first instance is created
--	from Python.
--	[a31d12e3d9c2]
--
--2007-01-15  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
--	Allowed /TransferThis/ to be specified more than once.
--	[e8246e9dc928]
--
--	* doc/sipref.txt, lib/LICENSE.short, siplib/threads.c:
--	Updated the copyright notices. Fixed a reentrancy problem in
--	wrapping objects obtained from C/C++ (thanks to Giovanni Bajo for
--	the fix).
--	[117d2c42c517]
--
--2007-01-10  phil  <phil>
--
--	* siplib/sip.h, siplib/siplib.c:
--	Added support for __truediv__ and __itruediv__ by making them
--	synonyms for __div__ and __idiv__.
--	[1c6e71aeb203]
--
--2007-01-07  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Hopefully fixed a bug in the generation of the typedefs table that
--	wasn't using the full name of foreign modules.
--	[a193602041a2]
--
--2006-12-28  phil  <phil>
--
--	* siplib/sip.h:
--	Fixed a bug in the sipResetCppHasRef() macro that breaks the
--	/TransferBack/ annotation.
--	[30e9fc168db0]
--
--2006-12-20  phil  <phil>
--
--	* lib/siputils.py:
--	Fixed a MacOS specific bug in create_wrapper() in the build system.
--	[34641513890f]
--
--	* lib/sipdistutils.py:
--	Applied a patch to sipdistutils.py from Giovanni Bajo to allow .sip
--	files to be used in the "depends" argument to setup().
--	[912613b39701]
--
--2006-12-16  phil  <phil>
--
--	* NEWS, lib/siputils.py:
--	Fixed a bug in the build system that meant that lines in the top
--	level mkspec file were being ignored after the last include.
--	[c2ee167686b7]
--
--2006-12-09  phil  <phil>
--
--	* lib/siputils.py:
--	Fixed a MacOS build problem caused by another change to Qt installs.
--	[90c588f6fa54]
--
--	* NEWS, build.py:
--	Updated the NEWS file. Fixed the internal build system for later
--	versions of docutils.
--	[4bcf93b8836e]
--
--2006-12-06  phil  <phil>
--
--	* NEWS, siplib/qtlib.c:
--	"PyQt_PyObject" is now used instead of "PyObject *". lamda functions
--	can now be used as slots.
--	[33493621d63e]
--
--2006-11-26  phil  <phil>
--
--	* siplib/sip.h, siplib/siplib.c:
--	Fixed an incorrect assumption that if a Python wrapper of a C++
--	owned object was being garbage collected then its Python children
--	(ie. things it owns) should also be garbage collected. It may be
--	that the parent is a "temporary" object (eg. the argument of a
--	reimplementation of a virtual) but the children are "permanent". The
--	case in PyQt is the parent argument of
--	QAbstractItemDelegate.createEditor().
--	[b981a814a1b2]
--
--2006-11-25  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	PEP 353 fixes from Ulli.
--	[d22c558be4b9]
--
--	* siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Some "char *" to "const char *" fixes from Ulli.
--	[208ba44fcddc]
--
--2006-11-18  phil  <phil>
--
--	* sipgen/transform.c:
--	Fixed a broken pointer bug in the API file generation.
--	[b80f4ae42e97]
--
--2006-11-17  phil  <phil>
--
--	* sipgen/export.c, sipgen/lexer.l:
--	Fixed a misleading error message when instantiating templates. Fixed
--	a bug generating global functions in API files.
--	[6b6804bacc4f]
--
--2006-11-11  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Fixed a bug with virtual handlers when a module %Imports from two
--	other (independent) modules.
--	[56ca50343b62]
--
--2006-11-04  phil  <phil>
--
--	* NEWS:
--	Released as v4.5.
--	[5982951360f3] [4.5]
--
--2006-10-28  phil  <phil>
--
--	* lib/siputils.py:
--	The build system now handles .prl files on MacOS.
--	[25b8444de255]
--
--2006-10-27  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c:
--	Changed NoDefaultCopyCtor to NoDefaultCtors. Updated the NEWS file.
--	[57307ed6d154]
--
--2006-10-22  phil  <phil>
--
--	* doc/sipref.txt, lib/siputils.py, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/qtlib.c:
--	A fix for configuring QtAssistant in PyQt for Qt v4.2 on MacOS.
--	Added the NoDefaultCopyCtor class annotation.
--	[ed57b3a6fd1c]
--
--2006-10-21  phil  <phil>
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Fixed a Python 2.4/2.5 change that was missed. Added
--	sip.setdeleted().
--	[2db4a119d6c6]
--
--2006-10-20  phil  <phil>
--
--	* doc/sipref.txt, lib/siputils.py, specs/hurd-g++, specs/solaris-cc:
--	Platform portability fixes from Ulli. Fix for conditional includes
--	in spec files from Ulli. Qt4 module include directories are now
--	searched before the main Qt4 include directory. Handle the change in
--	debug libraries in Qt v4.2.
--	[3f72b2b88460]
--
--2006-10-15  phil  <phil>
--
--	* sipgen/parser.y:
--	Allow virtual signals if the NoEmitters option is set.
--	[6657a8d15171]
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Fixed a bug where the first argument to a global comparison operator
--	was mishandled if it was a pointer rather than a reference.
--	[5c5c0d5f6b65]
--
--2006-10-13  phil  <phil>
--
--	* siplib/siplib.c:
--	Improved the previous fix for the incorrect ctor exception.
--	[3d9f787fedf8]
--
--2006-10-08  phil  <phil>
--
--	* lib/siputils.py, siplib/siplib.c:
--	Fixed bug where handwritten traverse and clear code wasn't being
--	called for derived classes. Fixed an incorrect Python exception
--	raised when a C++ exception is thrown by a ctor. The build system
--	now displayed an error if a non-framework build of Python is used on
--	MacOS. Untested fix for building a static module with MinGW.
--	[9c60ee47e4d5]
--
--2006-10-07  phil  <phil>
--
--	* lib/siputils.py:
--	Build system fixes for Qt v4.2.0 based on a patch from Matt Newell.
--	[e7f12b65d105]
--
--2006-09-30  phil  <phil>
--
--	* lib/siputils.py:
--	Fixes for building QtTest on Windows.
--	[a8b3716e682a]
--
--2006-09-23  phil  <phil>
--
--	* lib/siputils.py, sipgen/parser.y:
--	Taught the build system about QtTest. Fixed a bug in the handling of
--	namespaces split across multiple header files.
--	[89b8c6c6b8c6]
--
--	* TODO, doc/sipref.txt, siplib/siplib.c:
--	Added support for hooking into the C++ dtor from Python by
--	implementing __dtor__() from a patch by Jean Jacques Lecler.
--	[38da61ef1711]
--
--	* NEWS, doc/sipref.txt, siplib/siplib.c:
--	Added sip.delete() (based on a patch from Jean Jacques Lecler) and
--	sip.isdeleted().
--	[8946500be6fa]
--
--	* doc/sipref.txt, sipgen/export.c, sipgen/main.c, sipgen/sip.h:
--	Removed the -n flag to sip now I think I've decided how to change
--	code completion in QScintilla.
--	[69cb56ba58f1]
--
--2006-09-22  phil  <phil>
--
--	* sipgen/parser.y:
--	Backed out the check that abstract methods are virtual - because
--	they don't have to be.
--	[1c753a1e011a]
--
--2006-09-17  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c:
--	Added support for pure virtual dtors. Fixed a bug where abstract
--	operators weren't flagging the class as being abstract.
--	[867e6aa1d499]
--
--2006-09-03  phil  <phil>
--
--	* sipgen/gencode.c, siplib/siplib.c:
--	Defeated a GCC v4 warning message on generated code.
--	[be5889f172fb]
--
--2006-08-17  phil  <phil>
--
--	* sipgen/gencode.c:
--	Minor code generation formatting tidyups.
--	[c4397d6c3aca]
--
--	* siplib/sip.h, siplib/siplib.c, specs/linux-lsb:
--	Added argument type checking to sipRegisterIntTypes().
--	[aa1a3cf373d0]
--
--2006-08-16  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Added sipRegisterIntTypes() to the private Qt support API so that
--	PyQt4 can implement Q_ENUMS and Q_FLAGS.
--	[0909d2f2b376]
--
--2006-08-05  phil  <phil>
--
--	* lib/siputils.py:
--	Added support for QAxContainer in the build system.
--	[5ddf72d045fb]
--
--2006-07-19  phil  <phil>
--
--	* lib/configure.py, lib/siputils.py, specs/hurd-g++, specs/linux-pgcc,
--	specs/solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
--	specs/solaris-g++-64, specs/win32-icc, specs/win32-msvc,
--	specs/win32-msvc.net, specs/win32-msvc2005:
--	Updated the spec files from Qt v4.1.4. Added (completely untested)
--	support for embedding manifests for MSVC v8.
--	[db5efb4cac5b]
--
--2006-07-16  phil  <phil>
--
--	* doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
--	More Python v2.5 changes.
--	[d54e5c462956]
--
--2006-07-15  phil  <phil>
--
--	* siplib/objmap.c, siplib/sip.h, siplib/siplib.c:
--	The sip module will now build against Python v2.5. (The 64 bit
--	changes still need to be done.)
--	[00cc5cf214cf]
--
--2006-07-08  phil  <phil>
--
--	* lib/configure.py:
--	Fixed the use of sys.lib in configure.py.
--	[a10f12367272]
--
--2006-07-06  phil  <phil>
--
--	* lib/configure.py:
--	configure.py uses sys.lib if it is defined (for some 64 bit Linux
--	distros).
--	[0dbaacd9a231]
--
--2006-07-04  phil  <phil>
--
--	* sipgen/gencode.c:
--	Always call a dtor if there is one, even if we can't see how the
--	instance could have been created.
--	[47bb2a6a914a]
--
--2006-07-01  phil  <phil>
--
--	* sipgen/export.c:
--	Fixed default arguments and C++ scoped names in the new API file
--	handling.
--	[6909ffb3bb65]
--
--2006-06-30  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/export.c, sipgen/gencode.c,
--	sipgen/genxml.c, sipgen/main.c, sipgen/sip.h, sipgen/sipgen.sbf:
--	Added the -n command line option (possibly only temporarily).
--	Changed the API generation so that it is more complete and uses
--	Python types rather than C/C++ types.
--	[1cd867db4c66]
--
--2006-06-29  phil  <phil>
--
--	* lib/configure.py:
--	Added sip_config_args to sipconfig.py. Added __hex__() to
--	sip.voidptr.
--	[d60d22ffda1c]
--
--	* NEWS, doc/sipref.txt, lib/configure.py, siplib/siplib.c:
--	
--	[16c887e1169c]
--
--2006-06-19  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	More warning fixes from Ulli.
--	[4ba06471ee46]
--
--2006-06-17  phil  <phil>
--
--	* sipgen/gencode.c:
--	Changed the explicit C linkage to retain the benefit of using
--	static.
--	[b2f02ca5a819]
--
--2006-06-13  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y:
--	Signals and slots are now const char * rather than char *.
--	[a43a225ba180]
--
--2006-06-10  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, siplib/sip.h,
--	siplib/siplib.c:
--	Fixed the implementation of /TransferBack/ for virtuals. Changed all
--	API arguments that take a format string from char * to const char *
--	for Solaris. Used explicit C linkage for all generated function
--	calls when genarting C++. (May need more work in this area.)
--	[2d05ea691d29]
--
--2006-06-06  phil  <phil>
--
--	* sipgen/genxml.c:
--	Changed the XML handling of opaque classes.
--	[86888971690a]
--
--2006-06-05  phil  <phil>
--
--	* sipgen/genxml.c:
--	Added support for opaque classes to the XML.
--	[427fc4186f14]
--
--2006-06-03  phil  <phil>
--
--	* sipgen/gencode.c:
--	More XML generation changes.
--	[b204d646b580]
--
--2006-05-31  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
--	More XML generation changes.
--	[91acee878afd]
--
--2006-05-30  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/parser.y, sipgen/sip.h:
--	More XML generation changes.
--	[7d79341cfc58]
--
--2006-05-28  phil  <phil>
--
--	* sipgen/genxml.c:
--	More XML generation changes.
--	[a95f90a9f6d2]
--
--2006-05-25  phil  <phil>
--
--	* sipgen/genxml.c, siplib/qtlib.c:
--	Fixed bug disconnecting Python signals.
--	[7a44ec54ef69]
--
--2006-05-20  phil  <phil>
--
--	* sipgen/genxml.c:
--	More XML generation changes.
--	[7e8538e5e080]
--
--	* sipgen/genxml.c, sipgen/transform.c:
--	Backed out the change that treated "char" and "char *" as equivalent
--	when comparing Python signatures. (The former is different to the
--	latter if it appears first.)
--	[f411eb8c010c]
--
--2006-05-18  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
--	More XML generation changes.
--	[e42fe590a33c]
--
--2006-05-16  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h, sipgen/transform.c:
--	Tightened up on detecting clashing Python signatures involving
--	strings and longs. Changes to the XML file generation.
--	[180930e69638]
--
--2006-05-13  phil  <phil>
--
--	* siplib/siplib.c:
--	Removed some Python API calls made after the interpreter is known to
--	have gone.
--	[dc80be8d888f]
--
--	* siplib/siplib.c:
--	Fixed a sip module bug that meant that the Python API might be
--	called after the interpreter had gone.
--	[a9470b7f1479]
--
--	* sipgen/gencode.c:
--	Fixed code generation bug with abstract operators.
--	[473bd3cea296]
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h:
--	Added %UnitCode.
--	[2f3ad3e3a582]
--
--2006-05-11  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
--	siplib/siplib.c:
--	Added sipExportSymbol() and sipImportSymbol(). Bumped the API
--	version number to 3.2.
--	[ee671f33f9a8]
--
--2006-05-08  phil  <phil>
--
--	* sipgen/heap.c:
--	Removed (hopefully) two new warning messages.
--	[a347b1964dd2]
--
--2006-05-07  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h:
--	Added support for %ExportedHeaderCode.
--	[1fc6cbb5421c]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
--	Fixed bug in handling of virtuals with different Python and C++
--	signatures.
--	[7c64bcb52e90]
--
--2006-05-05  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/heap.c,
--	sipgen/lexer.l, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Fixes for compiler warnings and a couple of minor bugs from Ulli.
--	Deprecated %SIPNoEmitters and replaced it with %SIPOptions. Added
--	the RegisterTypes option so that appropriate classes are registered
--	with Qt automatically when needed - so PyQt4 doesn't need to
--	implement qRegisterMetaType().
--	[b80581e367f3]
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
--	Fixed some compiler warnings.
--	[5c4467450cbe]
--
--2006-05-01  phil  <phil>
--
--	* sipgen/genxml.c, sipgen/transform.c:
--	More work on the XML generation.
--	[cb5eec12561a]
--
--2006-04-30  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/genxml.c, sipgen/main.c, sipgen/sip.h,
--	sipgen/sipgen.sbf:
--	Added the -m flag to generate the XML representation of the Pythonic
--	API.
--	[57d825e6a61f]
--
--2006-04-28  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
--	Replaced long long with PY_LONG_LONG for MSVC 6.
--	[19dc39dffac6]
--
--2006-04-27  phil  <phil>
--
--	* lib/siputils.py, sipgen/parser.y:
--	Fixed bug in handling multiple instances of the same namespace. The
--	build system allows Apple's Python to be used if there is also a
--	later python.org installation. MacOS modules are now bundles rather
--	than dynamic libraries and can now be loaded by Pythons from
--	python.org. Released as v4.4.3.
--	[809972a88944]
--
--2006-04-21  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed the previous const mapped type fix.
--	[1a5385651af1]
--
--2006-04-20  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Fixed the GUI enabled interpreter in sipconfig.create_wrapper() for
--	MacOS. Fixed static const mapped types.
--	[def8fea45725]
--
--2006-04-18  phil  <phil>
--
--	* doc/sipref.txt, lib/configure.py, lib/siputils.py:
--	Fixed the build system for when sys.prefix != sys.exec_prefix.
--	[83449c4ab4f2]
--
--2006-04-16  phil  <phil>
--
--	* doc/sipref.txt, lib/siputils.py:
--	Added the export_all argument to the ModuleMakefile constructor of
--	the build system so that exports can be handled on a per module
--	basis. This is needed to get around a (not properly understood)
--	problem with modules that wrap C++ exceptions.
--	[89709d0957bd]
--
--2006-04-15  phil  <phil>
--
--	* lib/siputils.py, siplib/qtlib.c, specs/hurd-g++, specs/solaris-cc:
--	The build system now complains if a property is used in a spec file
--	when no properties have been defined. Removed Qt specific properties
--	from the solaris-cc and hurd-g++ spec files. Fixed the disconnecting
--	of short-circuited signals.
--	[0c4ee0a3db80]
--
--2006-04-08  phil  <phil>
--
--	* lib/siputils.py:
--	Fixed the build system to better support frameworks on MacOS.
--	[864b17931a7b]
--
--2006-04-07  phil  <phil>
--
--	* doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
--	Made sure that all uses of sipMappedType * in the API are const.
--	[0d3533b681e3]
--
--2006-04-06  phil  <phil>
--
--	* lib/siputils.py:
--	The sipconfig module now uses qt_data_dir (if set) to find the qmake
--	spec files.
--	[2f81428640de]
--
--2006-04-05  phil  <phil>
--
--	* NEWS, TODO, sipgen/parser.y, sipgen/transform.c:
--	Merged v4.4.1 into the trunk. SIP now properly detects duplicate
--	Python signatures.
--	[9c53b26de67b]
--
--2006-04-02  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed a regression in the handling of __dict__.
--	[33a17c1ed42d]
--
--2006-04-01  phil  <phil>
--
--	* siplib/sip.h, siplib/siplib.c:
--	Make the sip module's support for long long and unsigned long long
--	conditional on HAVE_LONG_LONG so that it will build with older
--	compilers.
--	[e655c6a8a748]
--
--2006-03-29  phil  <phil>
--
--	* NEWS, sipgen/gencode.c:
--	Removed extraneous brackets in generated code.
--	[a64c7cdb2ee9]
--
--2006-03-28  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed some C++ code wrongly appearing in C modules.
--	[7e80756dae4d]
--
--2006-03-25  phil  <phil>
--
--	* NEWS, sipgen/parser.y:
--	Fixed a regression in the handling of namespaces.
--	[7a22e2205ba9]
--
--2006-03-24  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c:
--	Documented sipModule and sipModuleDict as being available to
--	%PostInitialisationCode. Released as v4.4.
--	[8acdabcf6a08] [4.4]
--
--2006-03-21  phil  <phil>
--
--	* doc/sipref.txt, lib/sipdistutils.py, siplib/sip.h, siplib/siplib.c:
--	Applied patch for sipdistuils.py from Giovanni. Documented
--	sipConvertFromNamedEnum(). Wrapped types now define __reduce_ex__
--	and __reduce__ attributes set to None so that pickle knows they
--	can't be pickled.
--	[94694c47891e]
--
--2006-03-20  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed the special handling of the __dict__ attribute so that it
--	doesn't apply to Python sub-classes of wrapped classes.
--	[6835562cf526]
--
--2006-03-19  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h,
--	siplib/siplib.c, siplib/threads.c:
--	Documentation tweaks. Generate sipSelf for ctor %MethodCode now that
--	it's existence is documented. Fixed a second place where slots with
--	no underlying C++ instance might be invoked.
--	[ba7b9c9371e1]
--
--2006-03-17  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Removed __unicode__ from the documentation. Fixed a bug with virtual
--	methods that returned a reference to a type that had
--	%ConvertToTypeCode.
--	[6dc8ddba43ed]
--
--2006-03-15  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h, siplib/siplib.c:
--	Removal of a now redundant error message. Fixed a leaking weak
--	reference object. Another attempt at fixing calling slots where the
--	underlying C++ instance has disappeared.
--	[8f7b10cbc372]
--
--2006-03-14  phil  <phil>
--
--	* lib/siputils.py, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
--	sipgen/transform.c:
--	More const void * fixes. Fixed bug with building debug modules using
--	MinGW. Fixed feature where too many names were being generated from
--	imported modules. SIP now handles nested imports properly and
--	doesn't require all modules to be explcitly imported.
--	[f7b3774f05bf]
--
--2006-03-13  phil  <phil>
--
--	* build.py, doc/sipref.txt, lib/README.Fink, lib/siputils.py,
--	sipgen/parser.y:
--	Build system changes to support MacOS properly. Fixed crash when
--	%TypeHeaderCode was used outside of a scope.
--	[fc9cf357273b]
--
--2006-03-12  phil  <phil>
--
--	* TODO, sipgen/gencode.c:
--	Fixed calls to sipConvertFromVoidPtr() with a const argument.
--	[1d20b7ddf5b7]
--
--2006-03-11  phil  <phil>
--
--	* lib/siputils.py:
--	Minor changes to sipconfig.py for PyQt4's pyqtconfig.py.
--	[5c35ed3d0e90]
--
--	* lib/siputils.py, sipgen/parser.y:
--	Fixed handling of generating code for the version before the first
--	%Timeline version.
--	[3ffe3ddaa678]
--
--2006-03-08  phil  <phil>
--
--	* siplib/qtlib.c:
--	Fixed a bug in the handling of QVariant * and PyObject * signal
--	arguments.
--	[c04f60565120]
--
--2006-03-06  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a regression in handling of enums defined in an imported
--	module.
--	[305954bab24d]
--
--	* sipgen/gencode.c:
--	Fixed bug in handling the typedef void hack.
--	[f5ec81faf924]
--
--2006-03-05  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
--	siplib/siplib.c:
--	Fixed bug with abstract classes with %ConvertToSubClassCode.
--	Reimplemented namspaces split across modules so that there is a
--	single namespace implemented in the original module.
--	[e04e87b70f29]
--
--	* sipgen/transform.c:
--	Fixed missing #include for classes that aren't an immediate parent.
--	[5f28954fe478]
--
--2006-03-04  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed a regression in the wrappers around protected methods.
--	[65fc03434a16]
--
--	* siplib/qtlib.c:
--	Suppressed the exception about the underlying object disappearing
--	when calling a Python slot. This is because we don't automatically
--	disconnect Python slots.
--	[5a90239b615c]
--
--2006-03-02  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
--	siplib/siplib.c:
--	Added sipLong_AsUnsignedLong() to work around a bug in
--	PyLong_AsUnsignedLong().
--	[ae6bdfc7d774]
--
--2006-02-26  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed bug in handling class arguments with /Out/ specified.
--	[a39d9d9a8d5a]
--
--	* lib/siputils.py, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y:
--	Recognise NULL as a synonym for 0. Some build system changes for
--	Cygwin. Fixed the deletion of temporary instances in catch clauses.
--	[1b9e30dd13fb]
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/qtlib.c,
--	siplib/sip.h:
--	SIP now treats signed char as a type distinct from char.
--	[01500c239ace]
--
--	* sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
--	siplib/sip.h, siplib/siplib.c:
--	Tore up the recent changes for handling cross module namespaces. A
--	namespace is now defined in each module it is used. That makes
--	things easier to implement and should be less confusing for the
--	user. The API and data structures should now be stable.
--	[02277356e12c]
--
--2006-02-25  phil  <phil>
--
--	* sipgen/parser.y:
--	Fixed bug in handling of variables introduced in the previous
--	commit.
--	[aadd2d0daa3e]
--
--	* sipgen/gencode.c, sipgen/parser.y:
--	Added support for variables defined in namespaces defined in other
--	modules.
--	[a1210912bb6c]
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Completed the support for enums in namespaces originating in other
--	modules.
--	[590dbde2e463]
--
--2006-02-21  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
--	Added the 't' and 'u' format characters to sipParseArgs(),
--	sipParseResult(), sipCallMethod() and sipBuildResult(). unsigned and
--	unsigned short are now implemented as Python long objects instead of
--	integer objects.
--	[f8c047d7f8df]
--
--2006-02-19  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
--	Implemented disconnects for universal signals.
--	[6cd1a4dc4e73]
--
--2006-02-18  phil  <phil>
--
--	* sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
--	Implemented support for signal arguments of type PyObject *.
--	Implemented support for shortcircuited Python signals (ie. just the
--	name without arguments) that will only work with other
--	shortcircuited Python signals and Python slots - bit don't need to
--	do any conversions between Python and C++.
--	[6748c4088281]
--
--2006-02-17  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Fixed bug in the implementation of /TransferBack/ in virtual
--	handlers. Fixed bug in methods with a void result and a single /Out/
--	argument that was a mapped type or class.
--	[f6486c697de5]
--
--2006-02-16  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Fixed bug in generating code that called sipCallMethod(). Updated
--	the documentation where it was still referring to the legacy type
--	convertors.
--	[acdd622dba74]
--
--	* sipgen/gencode.c:
--	Fixed bug in generated legacy mapped type convertor names.
--	[8424561f0d54]
--
--2006-02-15  phil  <phil>
--
--	* sipgen/gencode.c:
--	Fixed bug that could easily result in deleting non-heap instances.
--	[9ab37451f8f0]
--
--2006-02-13  phil  <phil>
--
--	* doc/sipref.txt, lib/siputils.py:
--	Fixes to PythonModuleMakefile.
--	[684799b183d5]
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c,
--	siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
--	Renamed the new sipCheckConvert functions to sipForceConvert
--	functions. Added the 'B', 'C' and 'D' format character to
--	sipBuildResult() and sipCallMethod(). Removed the 'L' format
--	character from sipBuildResult() and sipCallMethod(). Added
--	sipConvertFromInstance(), sipConvertFromNewInstance() and
--	sipConvertFromMappedType().
--	[f6324b7c7ab1]
--
--2006-02-12  phil  <phil>
--
--	* NEWS, TODO, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	siplib/sip.h, siplib/siplib.c, siplib/threads.c:
--	Overhauled how %ConvertToTypeCode should be written - detail below.
--	(Still need to overhaul %ConvertFromTypeCode.) Added
--	sipCanConvertToInstance(), sipConvertToInstance(),
--	sipCheckConvertToInstance() and sipReleaseInstance(). Added
--	sipCanConvertToMappedType(), sipConvertToMappedType(),
--	sipCheckConvertToMappedType(), sipReleaseMappedType() and
--	sipFindMappedType(). Changed the order of the arguments to
--	sipConvertToCppTransfer(). Added the 'C' and 'D' format characters
--	to sipParseResult(). Changed the meaning of the 'J' and 'M' format
--	characters in sipParseArgs(). Removed the sipConvertTo_*()
--	functions. Removed sipConvertToCppTransfer(). Took all of the None
--	handling out of %ConvertToTypeCode.
--	[7122e755a332]
--
--2006-01-28  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Fixed the support for __hash__.
--	[f57b38d29839]
--
--2006-01-26  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
--	sipgen/parser.y, sipgen/sip.h, siplib/qtlib.c, siplib/sip.h,
--	siplib/sipint.h:
--	Added %SIPNoEmitters to stop SIP generating signal emitters for a
--	module and any module that imports it. Changed the signal/slot
--	support so that Python signals can be implemented with proxies.
--	[ebc0499b0e99]
--
--2006-01-20  phil  <phil>
--
--	* sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
--	Fixed a bug in sipTransferTo() that caused some objects to be
--	garbage collected while ownership was being transferred. Check that
--	abstract methods are only ever called as bound methods.
--	[7f66705a98e7]
--
--2006-01-19  phil  <phil>
--
--	* doc/sipref.txt, siplib/siplib.c:
--	Updated the documentation for sipConnectRx(). The __dict__ attribute
--	of a wrapper type now returns a regular dictionary rather than a
--	proxy (because PyDict_Next() doesn't iterate over proxies).
--	[b7b57265c54c]
--
--2006-01-14  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed the searching of signal types.
--	[d24efdbe5952]
--
--2006-01-11  phil  <phil>
--
--	* siplib/siplib.c:
--	The previous fix wasn't quite so trivial.
--	[a598de0cf451]
--
--	* siplib/siplib.c:
--	Added missing function prototype.
--	[5d6320a5e0a1]
--
--2006-01-10  phil  <phil>
--
--	* NEWS, doc/sipref.txt, lib/siputils.py, sipgen/gencode.c,
--	sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
--	siplib/siplib.c:
--	Fixed code generation bugs in new virtual handling code that was
--	triggered by PyKDE. Build system changes for MinGW. Added support
--	for constrained bools. Generate code to wrap static enum instances
--	with inline code rather than through tables (as is done with class
--	instances) for Windows.
--	[48a76f76e9b8]
--
--2006-01-09  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y:
--	Changed the signatures of sipForceConvertTo_*() and
--	sipConvertFrom_*() back to their SIP 4.3 versions, deprecated them,
--	and introduced the Transfer variants.
--	[422ea1e3fee9]
--
--	* NEWS, doc/sipref.txt, lib/configure.py, lib/siputils.py:
--	More build system changes for Windows. Added the platform macro to
--	sipconfig.py. The default Windows platform Python 2.4 and later is
--	now win32-msvc.net rather than win32-msvc.
--	[e9d83bea0e38]
--
--2006-01-08  phil  <phil>
--
--	* lib/configure.py, lib/siputils.py:
--	Various build system changes needed by PyQt4 on Windows.
--	[dcbf196c14bb]
--
--2006-01-07  phil  <phil>
--
--	* lib/LICENSE.short, lib/configure.py, lib/sipdistutils.py,
--	lib/siputils.py, specs/aix-g++, specs/aix-g++-64, specs/aix-xlc,
--	specs/aix-xlc-64, specs/darwin-g++, specs/freebsd-g++,
--	specs/freebsd-g++34, specs/freebsd-g++40, specs/freebsd-icc, specs
--	/hpux-acc, specs/hpux-acc-64, specs/hpux-acc-o64, specs/hpux-g++,
--	specs/hpux-g++-64, specs/hpuxi-acc, specs/hpuxi-acc-32, specs/hpuxi-
--	acc-64, specs/hurd-g++, specs/irix-cc, specs/irix-cc-64,
--	specs/irix-g++, specs/irix-g++-64, specs/linux-cxx, specs/linux-
--	ecc-64, specs/linux-g++, specs/linux-g++-32, specs/linux-g++-64,
--	specs/linux-icc, specs/linux-kcc, specs/linux-kylix, specs/linux-
--	pgcc, specs/lynxos-g++, specs/macx-g++, specs/macx-mwerks, specs
--	/macx-pbuilder, specs/macx-xcode, specs/macx-xlc, specs/netbsd-g++,
--	specs/openbsd-g++, specs/qnx-g++, specs/sco-cc, specs/sco-g++, specs
--	/solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
--	specs/solaris-g++-64, specs/tru64-cxx, specs/tru64-g++, specs
--	/unixware-cc, specs/unixware-g++, specs/win32-borland,
--	specs/win32-g++, specs/win32-icc, specs/win32-msvc,
--	specs/win32-msvc.net, specs/win32-msvc2005:
--	Updated the spec files from Qt v4.1. Added support for the $$()
--	method of accessing environment variables in qmake spec files.
--	sipdistutils.py fix from Giovanni. Changes to the build system for
--	the slightly different macro names on Windows.
--	[5030a64bab73]
--
--2006-01-04  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/transform.c:
--	Added support for the /NoDerived/ annotation.
--	[496e87667614]
--
--2006-01-03  phil  <phil>
--
--	* siplib/siplib.c:
--	Fixed bug in handling of delayed dtors.
--	[9ad8378e1bbd]
--
--2006-01-02  phil  <phil>
--
--	* sipgen/transform.c:
--	Fixed another bug with the new handling of virtual function calls
--	(where re-implementations from another module weren't picked up).
--	[b4a5f97c4acd]
--
--2005-12-30  phil  <phil>
--
--	* sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
--	Fixed bugs with the new handling of virtuals that caused recursions.
--	[e15093e5d260]
--
--2005-12-29  phil  <phil>
--
--	* lib/siputils.py:
--	Taught the build system about the QtAssistantClient library.
--	[ef92ee748d4c]
--
--	* sipgen/gencode.c:
--	Fixed bugs related to global operators with an enum as the first
--	argument.
--	[2379d714c099]
--
--2005-12-28  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
--	siplib/siplib.c:
--	Added sipConvertToCppTransfer(). Changed the signatures for the type
--	convertor functions. Added the 'L' format character to
--	sipBuildResult() and sipCallMethod().
--	[2bf4d76eefe2]
--
--2005-12-27  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
--	sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
--	Added support for the /DelayDtor/ class annotation to control the
--	order of dtor calls when the interpreter exits. Fixed bugs with cast
--	operators.
--	[5a03f38f92c7]
--
--2005-12-26  phil  <phil>
--
--	* doc/sipref.txt, sipgen/gencode.c:
--	Fixed a documentation bug. Slightly changed the declaration of the
--	sipProtectVirt wrappers.
--	[bc65dd63ac7d]
--
--2005-12-24  phil  <phil>
--
--	* NEWS, doc/sipref.txt, sipgen/gencode.c:
--	Class methods called as class.method(self, ...) is now equivalent to
--	this->class::method(...). Class methods called as self.method(...)
--	is now equivalent to this->method(...). Introduced sipSelfWasArg and
--	the sipProtectVirt wrappers in order to support the above.
--	[d49dc239a2d7]
--
--2005-12-22  phil  <phil>
--
--	* siplib/qtlib.c, siplib/siplib.c:
--	SIP no longer complains if a slot to be disconnected isn't actually
--	connected (and hopes Qt will then behave appropriately).
--	[7e93c92ec9b9]
--
--2005-12-19  phil  <phil>
--
--	* sipgen/parser.y:
--	Backed out the recent change that ignored abstract specifications if
--	the methods wasn't virtual.
--	[72f23df36c23]
--
--	* doc/sipref.txt, lib/siputils.py:
--	Various changes to the build system to better support Qt v4.
--	[0a793291a2db]
--
--2005-12-18  phil  <phil>
--
--	* NEWS, doc/sipref.txt, lib/siputils.py:
--	Added the PythonModuleMakefile class and create_wrapper() function
--	to the build system.
--	[70cd55448b1c]
--
--2005-12-15  phil  <phil>
--
--	* .repoman, NEWS, build.py, doc/sipref.txt, sipgen/main.c,
--	siplib/qtlib.c, siplib/qtlib.cpp, siplib/sip.h:
--	Internally renamed qtlib.cpp to qtlib.c. Small changes to the
--	internal build system caused by the move to SVN. Removed SIP_BUILD
--	from sip.h.
--	[efe612146497]
--
--2005-12-14  phil  <phil>
--
--	* .repoman, NEWS, TODO, build.py, custom/custom.c, custom/customw.c,
--	custom/mkcustom.py, doc/default.css, doc/sipref.txt, lib/LICENSE,
--	lib/LICENSE.short, lib/README, lib/README.Fink, lib/README.HP-UX,
--	lib/THANKS, lib/configure.py, lib/sipdistutils.py, lib/siputils.py,
--	sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l, sipgen/main.c,
--	sipgen/parser.y, sipgen/sip.h, sipgen/sipgen.sbf,
--	sipgen/transform.c, siplib/bool.cpp, siplib/objmap.c,
--	siplib/qtlib.cpp, siplib/sip.h, siplib/sipint.h, siplib/siplib.c,
--	siplib/siplib.sbf, siplib/threads.c, specs/aix-g++,
--	specs/aix-g++-64, specs/aix-xlc, specs/aix-xlc-64, specs/bsdi-g++,
--	specs/cygwin-g++, specs/darwin-g++, specs/dgux-g++,
--	specs/freebsd-g++, specs/freebsd-g++34, specs/freebsd-icc, specs
--	/hpux-acc, specs/hpux-acc-64, specs/hpux-acc-o64, specs/hpux-cc,
--	specs/hpux-g++, specs/hpux-g++-64, specs/hpuxi-acc-32, specs/hpuxi-
--	acc-64, specs/hurd-g++, specs/irix-cc, specs/irix-cc-64, specs/irix-
--	cc-o32, specs/irix-g++, specs/linux-cxx, specs/linux-ecc-64,
--	specs/linux-g++, specs/linux-g++-64, specs/linux-icc, specs/linux-
--	kcc, specs/linux-kylix, specs/linux-pgcc, specs/lynxos-g++,
--	specs/macx-g++, specs/macx-mwerks, specs/macx-pbuilder, specs/macx-
--	xlc, specs/netbsd-g++, specs/openbsd-g++, specs/qnx-g++, specs
--	/reliant-cds, specs/reliant-cds-64, specs/sco-cc, specs/sco-g++,
--	specs/solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
--	specs/solaris-g++-64, specs/tru64-cxx, specs/tru64-g++, specs
--	/unixware-cc, specs/unixware-g++, specs/win32-borland,
--	specs/win32-g++, specs/win32-icc, specs/win32-msvc,
--	specs/win32-msvc.net, specs/win32-msvc2005, specs/win32-watcom:
--	Initial import of sip from CVS
--	[1fd77e66a56d]
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/configure.py sip/configure.py
---- ./sip-4.19.12.orig/configure.py	2018-07-05 05:55:19.000000000 -0400
-+++ sip/configure.py	2018-09-18 18:12:23.643053242 -0400
-@@ -30,8 +30,8 @@
- 
- 
- # Initialise the globals.
--sip_version = 0x04130c
--sip_version_str = "4.19.12"
-+sip_version = 0x04ffff
-+sip_version_str = "4.255.255"
- py_version = sys.hexversion >> 8
- py_platform = sys.platform
- plat_py_site_dir = None
-@@ -46,6 +46,7 @@
- sip_inc_dir = ''
- sip_root_dir = ''
- sip_module_dir = ''
-+sip_module_dest_dir = ''
- sip_sip_dir = ''
- pyi_dir = ''
- sysroot = ''
-@@ -185,7 +186,7 @@
-         siputils.inform("The sip.h header file will be installed in %s." % sip_inc_dir)
- 
-     if not opts.no_module:
--        siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dir))
-+        siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dest_dir))
- 
-     if opts.pyi:
-         siputils.inform("The sip.pyi stub file will be installed in %s." % pyi_dir)
-@@ -302,30 +303,35 @@
-     cfg.set_build_macros(macros)
- 
-     all_installs = []
--    installs = []
-+    top_installs = []
-+    gen_installs = []
-     subdirs = []
- 
-     if not opts.no_tools:
-         subdirs.append('sipgen')
--        installs.append(
-+        top_installs.append(
-                 (["sipconfig.py", os.path.join(src_dir, "sipdistutils.py")],
-                         cfg.sip_root_dir))
-+        gen_installs.append(
-+                (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
- 
-     if not opts.no_module:
-         subdirs.append('siplib')
- 
--    all_installs += installs
-+    all_installs.extend(top_installs)
-+    all_installs.extend(gen_installs)
- 
-     # The command to run to generate the dist-info directory.
-     mk_distinfo = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                 'mk_distinfo.py')
--    distinfo_dir = os.path.join(cfg.sip_root_dir,
-+    distinfo_dir = os.path.join(cfg.sip_module_dir,
-             '%s-%s.dist-info' % (sip_module_name.replace('.', '_'),
-                     sip_version_str))
--    run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (sys.executable,
--            mk_distinfo, distinfo_dir)
- 
-     if opts.use_qmake:
-+        run_mk_distinfo = '%s %s \\\"$(INSTALL_ROOT)\\\" %s installed.txt' % (
-+                sys.executable, mk_distinfo, distinfo_dir)
-+
-         sipconfig.inform("Creating top level .pro file...")
- 
-         pro = open("sip.pro", "w")
-@@ -333,8 +339,9 @@
-         pro.write("TEMPLATE = subdirs\n")
-         pro.write("SUBDIRS = %s\n" % " ".join(subdirs))
- 
--        if installs:
--            files, path = installs
-+        if top_installs:
-+            # There will only be one element.
-+            files, path = top_installs[0]
-             pro.write("\n")
-             pro.write("build_system.files = %s\n" % " ".join(files))
-             pro.write("build_system.path = %s\n" % quote(path))
-@@ -343,22 +350,25 @@
-         if opts.distinfo:
-             pro.write("\n")
-             pro.write("distinfo.extra = %s\n" % run_mk_distinfo)
--            pro.write("distinfo.path = %s\n" % quote(cfg.sip_root_dir))
-+            pro.write("distinfo.path = %s\n" % quote(cfg.sip_module_dir))
-             pro.write("INSTALLS += distinfo\n")
- 
-         pro.close()
-     else:
-+        run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (
-+                sys.executable, mk_distinfo, distinfo_dir)
-+
-         sipconfig.inform("Creating top level Makefile...")
- 
-         # Note that mk_distinfo.py won't exist if we are building from the
-         # repository.
-         if opts.distinfo and os.path.isfile(mk_distinfo):
--            installs.append((run_mk_distinfo, None))
-+            top_installs.append((run_mk_distinfo, None))
- 
-         sipconfig.ParentMakefile(
-             configuration=cfg,
-             subdirs=subdirs,
--            installs=installs
-+            installs=top_installs
-         ).generate()
- 
-     if opts.use_qmake:
-@@ -390,6 +400,14 @@
-         pro.write("HEADERS = %s\n" % " ".join(
-                 [qmake_quote(h) for h in headers]))
- 
-+        if gen_installs:
-+            # There will only be one element.
-+            files, path = gen_installs[0]
-+            pro.write("\n")
-+            pro.write("sip_h.files = %s\n" % " ".join(files))
-+            pro.write("sip_h.path = %s\n" % quote(path))
-+            pro.write("INSTALLS += sip_h\n")
-+
-         pro.close()
-     else:
-         sipconfig.inform("Creating sip code generator Makefile...")
-@@ -399,6 +417,7 @@
-             build_file=os.path.join(src_dir, "sipgen", "sipgen.sbf"),
-             dir="sipgen",
-             install_dir=os.path.dirname(cfg.sip_bin),
-+            installs=gen_installs,
-             console=1,
-             warnings=1,
-             universal=opts.universal,
-@@ -406,7 +425,7 @@
-             deployment_target=opts.deployment_target
-         ).generate()
- 
--    # The code generator installs.
-+    # The implied code generator installs.
-     if not opts.no_tools:
-         sip_dir, sip_exe = os.path.split(cfg.sip_bin)
-         if sys.platform == 'win32':
-@@ -417,18 +436,18 @@
-     # The module installs.
-     module_installs=[]
- 
--    if not opts.no_tools:
--        module_installs.append(
--                (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
--
-     if opts.pyi:
-         module_installs.append((os.path.join(src_dir, 'sip.pyi'), pyi_dir))
- 
-     all_installs.extend(module_installs)
- 
-     if not opts.no_module:
--        mod_ext = '.pyd' if sys.platform == 'win32' else '.so'
--        all_installs.append(('sip' + mod_ext, cfg.sip_module_dir))
-+        if sys.platform == 'win32':
-+            mod = 'sip.lib' if opts.static else 'sip.pyd'
-+        else:
-+            mod = 'libsip.a' if opts.static else 'sip.so'
-+
-+        all_installs.append((mod, sip_module_dest_dir))
- 
-     if opts.use_qmake:
-         sipconfig.inform("Creating sip module .pro file...")
-@@ -453,7 +472,11 @@
- 
-         if sip_module_name != 'sip':
-             pro.write("\n")
--            pro.write('DEFINES += SIP_MODULE_NAME=\\\\\\"%s\\\\\\"\n' % sip_module_name)
-+            pro.write('DEFINES += SIP_MODULE_NAME=%s\n' % sip_module_name)
-+
-+            base_name = sip_module_name.split('.')[-1]
-+            if base_name != 'sip':
-+                pro.write('DEFINES += SIP_MODULE_BASENAME=%s\n' % base_name)
- 
-         if not opts.static:
-             # These only need to be correct for Windows.
-@@ -485,7 +508,7 @@
- """ % (debug_suffix, link_lib_dir))
- 
-         pro.write("\n")
--        pro.write("target.path = %s\n" % cfg.sip_module_dir)
-+        pro.write("target.path = %s\n" % sip_module_dest_dir)
-         pro.write("INSTALLS += target\n")
- 
-         if opts.pyi:
-@@ -494,12 +517,6 @@
-             pro.write("sip_pyi.path = %s\n" % pyi_dir)
-             pro.write("INSTALLS += sip_pyi\n")
- 
--        if not opts.no_tools:
--            pro.write("\n")
--            pro.write("sip_h.files = sip.h\n")
--            pro.write("sip_h.path = %s\n" % cfg.sip_inc_dir)
--            pro.write("INSTALLS += sip_h\n")
--
-         c_sources = get_sources("siplib", "*.c")
-         cpp_sources = get_sources("siplib", "*.cpp")
-         pro.write("\n")
-@@ -521,7 +538,7 @@
-             configuration=cfg,
-             build_file=os.path.join(src_dir, "siplib", "siplib.sbf"),
-             dir="siplib",
--            install_dir=cfg.sip_module_dir,
-+            install_dir=sip_module_dest_dir,
-             installs=module_installs,
-             console=1,
-             warnings=1,
-@@ -533,8 +550,11 @@
-         )
- 
-         if sip_module_name != 'sip':
--            makefile.DEFINES.append(
--                    'SIP_MODULE_NAME=\\"%s\\"' % sip_module_name)
-+            makefile.DEFINES.append('SIP_MODULE_NAME=%s' % sip_module_name)
-+
-+            base_name = sip_module_name.split('.')[-1]
-+            if base_name != 'sip':
-+                makefile.DEFINES.append('SIP_MODULE_BASENAME=%s' % base_name)
- 
-         if src_dir != build_dir:
-             src_siplib_dir = os.path.join(src_dir, "siplib")
-@@ -908,7 +928,7 @@
-     global plat_bin_dir, plat_py_conf_inc_dir, plat_py_inc_dir
-     global plat_py_lib_dir, plat_py_site_dir, plat_sip_dir
-     global sip_bin_dir, sip_inc_dir, sip_root_dir, sip_module_dir, sip_sip_dir
--    global pyi_dir
-+    global sip_module_dest_dir, sip_module_name, pyi_dir
- 
-     # Set defaults.
-     sip_bin_dir = plat_bin_dir
-@@ -941,7 +961,9 @@
-     if opts.destdir is not None:
-         sip_root_dir = opts.destdir
- 
--    global sip_module_name
-+    # The module directory might have been set in a configuration file.
-+    if not sip_module_dir:
-+        sip_module_dir = sip_root_dir
- 
-     sip_module_name = opts.sip_module
- 
-@@ -949,10 +971,10 @@
- 
-     if len(module_path) > 1:
-         del module_path[-1]
--        module_path.insert(0, sip_root_dir)
--        sip_module_dir = os.path.join(*module_path)
-+        module_path.insert(0, sip_module_dir)
-+        sip_module_dest_dir = os.path.join(*module_path)
-     else:
--        sip_module_dir = sip_root_dir
-+        sip_module_dest_dir = sip_module_dir
- 
-     # Override from the command line.
-     if opts.platform is not None:
-@@ -970,7 +992,7 @@
-     if opts.pyidir is not None:
-         pyi_dir = opts.pyidir
-     else:
--        pyi_dir = sip_module_dir
-+        pyi_dir = sip_module_dest_dir
- 
-     # Get the platform specific macros for building.
-     macros = siputils.parse_build_macros(
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/configure.py.in sip/configure.py.in
---- ./sip-4.19.12.orig/configure.py.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/configure.py.in	2018-09-18 18:00:57.923048048 -0400
-@@ -0,0 +1,1031 @@
-+# This script handles the SIP configuration and generates the Makefiles.
-+#
-+# Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
-+#
-+# This file is part of SIP.
-+#
-+# This copy of SIP is licensed for use under the terms of the SIP License
-+# Agreement.  See the file LICENSE for more details.
-+#
-+# This copy of SIP may also used under the terms of the GNU General Public
-+# License v2 or v3 as published by the Free Software Foundation which can be
-+# found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
-+#
-+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+
-+
-+import sys
-+import os
-+import glob
-+import optparse
-+from distutils import sysconfig
-+
-+try:
-+    from importlib import invalidate_caches
-+except ImportError:
-+    invalidate_caches = lambda: None
-+
-+import siputils
-+
-+
-+# Initialise the globals.
-+sip_version = 0x at RM_HEXVERSION@
-+sip_version_str = "@RM_RELEASE@"
-+py_version = sys.hexversion >> 8
-+py_platform = sys.platform
-+plat_py_site_dir = None
-+plat_py_inc_dir = None
-+plat_py_venv_inc_dir = None
-+plat_py_conf_inc_dir = None
-+plat_py_lib_dir = None
-+plat_sip_dir = None
-+plat_bin_dir = None
-+platform_specs = []
-+sip_bin_dir = ''
-+sip_inc_dir = ''
-+sip_root_dir = ''
-+sip_module_dir = ''
-+sip_module_dest_dir = ''
-+sip_sip_dir = ''
-+pyi_dir = ''
-+sysroot = ''
-+src_dir = os.path.dirname(os.path.abspath(__file__))
-+sip_module_name = None
-+build_platform = None
-+
-+# Constants.
-+DEFAULT_MACOSX_ARCH = 'i386 ppc'
-+MACOSX_SDK_DIRS = ('/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs', '/Developer/SDKs')
-+
-+# The names of build macros extracted from the platform specific configuration
-+# files.
-+build_macro_names = [
-+    "DEFINES", "CONFIG",
-+    "CC",
-+    "CFLAGS",
-+    "CFLAGS_RELEASE", "CFLAGS_DEBUG",
-+    "CFLAGS_CONSOLE", "CFLAGS_SHLIB", "CFLAGS_APP", "CFLAGS_THREAD",
-+    "CFLAGS_MT", "CFLAGS_MT_DBG", "CFLAGS_MT_DLL", "CFLAGS_MT_DLLDBG",
-+    "CFLAGS_EXCEPTIONS_ON", "CFLAGS_EXCEPTIONS_OFF",
-+    "CFLAGS_RTTI_ON", "CFLAGS_RTTI_OFF",
-+    "CFLAGS_STL_ON", "CFLAGS_STL_OFF",
-+    "CFLAGS_WARN_ON", "CFLAGS_WARN_OFF",
-+    "CHK_DIR_EXISTS", "COPY",
-+    "CXX",
-+    "CXXFLAGS",
-+    "CXXFLAGS_RELEASE", "CXXFLAGS_DEBUG",
-+    "CXXFLAGS_CONSOLE", "CXXFLAGS_SHLIB", "CXXFLAGS_APP", "CXXFLAGS_THREAD",
-+    "CXXFLAGS_MT", "CXXFLAGS_MT_DBG", "CXXFLAGS_MT_DLL", "CXXFLAGS_MT_DLLDBG",
-+    "CXXFLAGS_EXCEPTIONS_ON", "CXXFLAGS_EXCEPTIONS_OFF",
-+    "CXXFLAGS_RTTI_ON", "CXXFLAGS_RTTI_OFF",
-+    "CXXFLAGS_STL_ON", "CXXFLAGS_STL_OFF",
-+    "CXXFLAGS_WARN_ON", "CXXFLAGS_WARN_OFF",
-+    "DEL_FILE",
-+    "EXTENSION_SHLIB", "EXTENSION_PLUGIN",
-+    "INCDIR", "INCDIR_X11", "INCDIR_OPENGL",
-+    "LIBS_CORE", "LIBS_GUI", "LIBS_NETWORK", "LIBS_OPENGL", "LIBS_WEBKIT",
-+    "LINK", "LINK_SHLIB", "AIX_SHLIB", "LINK_SHLIB_CMD",
-+    "LFLAGS", "LFLAGS_CONSOLE", "LFLAGS_CONSOLE_DLL", "LFLAGS_DEBUG",
-+    "LFLAGS_DLL",
-+    "LFLAGS_PLUGIN", "LFLAGS_RELEASE", "LFLAGS_SHLIB", "LFLAGS_SONAME",
-+    "LFLAGS_THREAD", "LFLAGS_WINDOWS", "LFLAGS_WINDOWS_DLL", "LFLAGS_OPENGL",
-+    "LIBDIR", "LIBDIR_X11", "LIBDIR_OPENGL",
-+    "LIBS", "LIBS_CONSOLE", "LIBS_RT",
-+    "LIBS_RTMT", "LIBS_THREAD", "LIBS_WINDOWS", "LIBS_X11",
-+    "MAKEFILE_GENERATOR",
-+    "MKDIR",
-+    "RPATH", "LFLAGS_RPATH",
-+    "AR", "RANLIB", "LIB", "STRIP"
-+]
-+
-+
-+def show_platforms():
-+    """Display the different platform/compilers.
-+    """
-+    sys.stdout.write("""
-+The following platform/compiler configurations are supported:
-+
-+""")
-+
-+    platform_specs.sort()
-+    sys.stdout.write(siputils.format(", ".join(platform_specs), leftmargin=2))
-+    sys.stdout.write("\n\n")
-+
-+
-+def show_macros():
-+    """Display the different build macros.
-+    """
-+    sys.stdout.write("""
-+The following options may be used to adjust the compiler configuration:
-+
-+""")
-+
-+    build_macro_names.sort()
-+    sys.stdout.write(siputils.format(", ".join(build_macro_names), leftmargin=2))
-+    sys.stdout.write("\n\n")
-+
-+
-+def set_build_platform():
-+    """ Initialise the build platform. """
-+
-+    global build_platform
-+
-+    # Set the platform specific default specification.
-+    platdefaults = {
-+        "aix":          "aix-xlc",
-+        "bsd":          "bsdi-g++",
-+        "cygwin":       "cygwin-g++",
-+        "darwin":       "macx-g++",
-+        "dgux":         "dgux-g++",
-+        "freebsd":      "freebsd-g++",
-+        "gnu":          "hurd-g++",
-+        "hp-ux":        "hpux-acc",
-+        "irix":         "irix-cc",
-+        "linux":        "linux-g++",
-+        "lynxos":       "lynxos-g++",
-+        "netbsd":       "netbsd-g++",
-+        "openbsd":      "openbsd-g++",
-+        "openunix":     "unixware-cc",
-+        "osf1":         "tru64-cxx",
-+        "qnx":          "qnx-g++",
-+        "reliantunix":  "reliant-cds",
-+        "sco_sv":       "sco-cc",
-+        "sinix":        "reliant-cds",
-+        "sunos5":       "solaris-cc",
-+        "ultrix":       "ultrix-g++",
-+        "unix_sv":      "unixware-g++",
-+        "unixware":     "unixware-cc"
-+    }
-+
-+    build_platform = "none"
-+
-+    if py_platform == "win32":
-+        if py_version >= 0x030500:
-+            build_platform = "win32-msvc2015"
-+        elif py_version >= 0x030300:
-+            build_platform = "win32-msvc2010"
-+        elif py_version >= 0x020600:
-+            build_platform = "win32-msvc2008"
-+        elif py_version >= 0x020400:
-+            build_platform = "win32-msvc.net"
-+        else:
-+            build_platform = "win32-msvc"
-+    else:
-+        for pd in list(platdefaults.keys()):
-+            if py_platform[:len(pd)] == pd:
-+                build_platform = platdefaults[pd]
-+                break
-+
-+
-+def inform_user():
-+    """ Tell the user the option values that are going to be used. """
-+
-+    if not opts.no_tools:
-+        siputils.inform("The SIP code generator will be installed in %s." % sip_bin_dir)
-+        siputils.inform("The sip.h header file will be installed in %s." % sip_inc_dir)
-+
-+    if not opts.no_module:
-+        siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dest_dir))
-+
-+    if opts.pyi:
-+        siputils.inform("The sip.pyi stub file will be installed in %s." % pyi_dir)
-+
-+    if opts.static:
-+        siputils.inform("The %s module will be built as a static library." % sip_module_name)
-+
-+    siputils.inform("The default directory to install .sip files in is %s." % sip_sip_dir)
-+
-+    if opts.use_qmake is None:
-+        siputils.inform("The platform/compiler configuration is %s." % build_platform)
-+
-+    if opts.arch:
-+        siputils.inform("MacOS/X binaries will be created for %s." % (", ".join(opts.arch.split())))
-+
-+    if opts.universal:
-+        siputils.inform("MacOS/X universal binaries will be created using %s." % opts.universal)
-+
-+    if opts.deployment_target:
-+        siputils.inform("MacOS/X deployment target is %s." % opts.deployment_target)
-+
-+
-+def set_platform_directories():
-+    """ Initialise the global variables relating to platform-specific
-+    directories.
-+    """
-+    global plat_py_site_dir, plat_py_inc_dir, plat_py_venv_inc_dir
-+    global plat_py_conf_inc_dir, plat_bin_dir, plat_py_lib_dir, plat_sip_dir
-+
-+    # We trust distutils for some stuff.
-+    plat_py_site_dir = sysconfig.get_python_lib(plat_specific=1)
-+    plat_py_inc_dir = sysconfig.get_python_inc()
-+    plat_py_venv_inc_dir = sysconfig.get_python_inc(prefix=sys.prefix)
-+    plat_py_conf_inc_dir = os.path.dirname(sysconfig.get_config_h_filename())
-+
-+    if sys.platform == "win32":
-+        bin_dir = sys.exec_prefix
-+
-+        try:
-+            # Python v3.3 and later.
-+            base_prefix = sys.base_prefix
-+
-+            if sys.exec_prefix != sys.base_exec_prefix:
-+                bin_dir += '\\Scripts'
-+
-+        except AttributeError:
-+            try:
-+                # virtualenv for Python v2.
-+                base_prefix = sys.real_prefix
-+                bin_dir += '\\Scripts'
-+
-+            except AttributeError:
-+                # We can't detect the base prefix in Python v3 prior to v3.3.
-+                base_prefix = sys.prefix
-+
-+        plat_py_lib_dir = base_prefix + "\\libs"
-+        plat_bin_dir = bin_dir
-+        plat_sip_dir = sys.prefix + "\\sip"
-+    else:
-+        lib_dir = sysconfig.get_python_lib(plat_specific=1, standard_lib=1)
-+
-+        plat_py_lib_dir = lib_dir + "/config"
-+        plat_bin_dir = sys.exec_prefix + "/bin"
-+        plat_sip_dir = sys.prefix + "/share/sip"
-+
-+
-+def create_config(module, template, macros):
-+    """Create the SIP configuration module so that it can be imported by build
-+    scripts.
-+
-+    module is the module file name.
-+    template is the template file name.
-+    macros is the dictionary of build macros.
-+    """
-+    siputils.inform("Creating %s..." % module)
-+
-+    content = {
-+        "sip_config_args":  sys.argv[1:],
-+        "sip_version":      sip_version,
-+        "sip_version_str":  sip_version_str,
-+        "platform":         build_platform,
-+        "sip_bin":          os.path.join(sip_bin_dir, "sip"),
-+        "sip_inc_dir":      sip_inc_dir,
-+        "sip_root_dir":     sip_root_dir,
-+        "sip_module_dir":   sip_module_dir,
-+        "default_bin_dir":  plat_bin_dir,
-+        "default_mod_dir":  plat_py_site_dir,
-+        "default_sip_dir":  sip_sip_dir,
-+        "py_version":       py_version,
-+        "py_inc_dir":       plat_py_inc_dir,
-+        "py_conf_inc_dir":  plat_py_conf_inc_dir,
-+        "py_lib_dir":       plat_py_lib_dir,
-+        "universal":        opts.universal,
-+        "arch":             opts.arch,
-+        "deployment_target":    opts.deployment_target,
-+        "qt_framework":     0
-+    }
-+
-+    siputils.create_config_module(module, template, content, macros)
-+
-+
-+def create_makefiles(macros):
-+    """Create the Makefiles.
-+
-+    macros is the dictionary of platform specific build macros.
-+    """
-+    # Bootstrap.  Make sure we get the right one.
-+    sys.path.insert(0, os.path.curdir)
-+    invalidate_caches()
-+    import sipconfig
-+
-+    cfg = sipconfig.Configuration()
-+
-+    cfg.set_build_macros(macros)
-+
-+    all_installs = []
-+    top_installs = []
-+    gen_installs = []
-+    subdirs = []
-+
-+    if not opts.no_tools:
-+        subdirs.append('sipgen')
-+        top_installs.append(
-+                (["sipconfig.py", os.path.join(src_dir, "sipdistutils.py")],
-+                        cfg.sip_root_dir))
-+        gen_installs.append(
-+                (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
-+
-+    if not opts.no_module:
-+        subdirs.append('siplib')
-+
-+    all_installs.extend(top_installs)
-+    all_installs.extend(gen_installs)
-+
-+    # The command to run to generate the dist-info directory.
-+    mk_distinfo = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-+                'mk_distinfo.py')
-+    distinfo_dir = os.path.join(cfg.sip_module_dir,
-+            '%s-%s.dist-info' % (sip_module_name.replace('.', '_'),
-+                    sip_version_str))
-+
-+    if opts.use_qmake:
-+        run_mk_distinfo = '%s %s \\\"$(INSTALL_ROOT)\\\" %s installed.txt' % (
-+                sys.executable, mk_distinfo, distinfo_dir)
-+
-+        sipconfig.inform("Creating top level .pro file...")
-+
-+        pro = open("sip.pro", "w")
-+
-+        pro.write("TEMPLATE = subdirs\n")
-+        pro.write("SUBDIRS = %s\n" % " ".join(subdirs))
-+
-+        if top_installs:
-+            # There will only be one element.
-+            files, path = top_installs[0]
-+            pro.write("\n")
-+            pro.write("build_system.files = %s\n" % " ".join(files))
-+            pro.write("build_system.path = %s\n" % quote(path))
-+            pro.write("INSTALLS += build_system\n")
-+
-+        if opts.distinfo:
-+            pro.write("\n")
-+            pro.write("distinfo.extra = %s\n" % run_mk_distinfo)
-+            pro.write("distinfo.path = %s\n" % quote(cfg.sip_module_dir))
-+            pro.write("INSTALLS += distinfo\n")
-+
-+        pro.close()
-+    else:
-+        run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (
-+                sys.executable, mk_distinfo, distinfo_dir)
-+
-+        sipconfig.inform("Creating top level Makefile...")
-+
-+        # Note that mk_distinfo.py won't exist if we are building from the
-+        # repository.
-+        if opts.distinfo and os.path.isfile(mk_distinfo):
-+            top_installs.append((run_mk_distinfo, None))
-+
-+        sipconfig.ParentMakefile(
-+            configuration=cfg,
-+            subdirs=subdirs,
-+            installs=top_installs
-+        ).generate()
-+
-+    if opts.use_qmake:
-+        sipconfig.inform("Creating sip code generator .pro file...")
-+
-+        pro = open(os.path.join("sipgen", "sipgen.pro"), "w")
-+
-+        pro.write("TEMPLATE = app\n")
-+        pro.write("TARGET = sip\n")
-+        pro.write("CONFIG -= qt app_bundle\n")
-+        pro.write("CONFIG += warn_on exceptions_off console %s\n" % (
-+                ("debug" if opts.debug else "release")))
-+
-+        pro.write("\n")
-+        pro.write("# Work around QTBUG-39300.\n")
-+        pro.write("CONFIG -= android_install\n")
-+
-+        pro.write("\n")
-+        pro.write("target.path = %s\n" % os.path.dirname(cfg.sip_bin))
-+        pro.write("INSTALLS += target\n")
-+
-+        c_sources = get_sources("sipgen", "*.c")
-+        pro.write("\n")
-+        pro.write("SOURCES = %s\n" % " ".join(
-+                [qmake_quote(s) for s in c_sources]))
-+
-+        headers = get_sources("sipgen", "*.h")
-+        pro.write("\n")
-+        pro.write("HEADERS = %s\n" % " ".join(
-+                [qmake_quote(h) for h in headers]))
-+
-+        if gen_installs:
-+            # There will only be one element.
-+            files, path = gen_installs[0]
-+            pro.write("\n")
-+            pro.write("sip_h.files = %s\n" % " ".join(files))
-+            pro.write("sip_h.path = %s\n" % quote(path))
-+            pro.write("INSTALLS += sip_h\n")
-+
-+        pro.close()
-+    else:
-+        sipconfig.inform("Creating sip code generator Makefile...")
-+
-+        sipconfig.ProgramMakefile(
-+            configuration=cfg,
-+            build_file=os.path.join(src_dir, "sipgen", "sipgen.sbf"),
-+            dir="sipgen",
-+            install_dir=os.path.dirname(cfg.sip_bin),
-+            installs=gen_installs,
-+            console=1,
-+            warnings=1,
-+            universal=opts.universal,
-+            arch=opts.arch,
-+            deployment_target=opts.deployment_target
-+        ).generate()
-+
-+    # The implied code generator installs.
-+    if not opts.no_tools:
-+        sip_dir, sip_exe = os.path.split(cfg.sip_bin)
-+        if sys.platform == 'win32':
-+            sip_exe += '.exe'
-+
-+        all_installs.append((sip_exe, sip_dir))
-+
-+    # The module installs.
-+    module_installs=[]
-+
-+    if opts.pyi:
-+        module_installs.append((os.path.join(src_dir, 'sip.pyi'), pyi_dir))
-+
-+    all_installs.extend(module_installs)
-+
-+    if not opts.no_module:
-+        if sys.platform == 'win32':
-+            mod = 'sip.lib' if opts.static else 'sip.pyd'
-+        else:
-+            mod = 'libsip.a' if opts.static else 'sip.so'
-+
-+        all_installs.append((mod, sip_module_dest_dir))
-+
-+    if opts.use_qmake:
-+        sipconfig.inform("Creating sip module .pro file...")
-+
-+        pro = open(os.path.join("siplib", "siplib.pro"), "w")
-+
-+        pro.write("TEMPLATE = lib\n")
-+        pro.write("TARGET = sip\n")
-+        pro.write("CONFIG -= qt\n")
-+        pro.write("CONFIG += warn_on exceptions_off %s %s\n" % (
-+                ("staticlib" if opts.static else "plugin plugin_bundle"),
-+                ("debug" if opts.debug else "release")))
-+
-+        pro.write("\n")
-+        pro.write("# Work around QTBUG-39300.\n")
-+        pro.write("CONFIG -= android_install\n")
-+
-+        pro.write("\n")
-+        pro.write("INCLUDEPATH += %s\n" % cfg.py_inc_dir)
-+        if cfg.py_conf_inc_dir != cfg.py_inc_dir:
-+            pro.write("INCLUDEPATH += %s\n" % cfg.py_conf_inc_dir)
-+
-+        if sip_module_name != 'sip':
-+            pro.write("\n")
-+            pro.write('DEFINES += SIP_MODULE_NAME=%s\n' % sip_module_name)
-+
-+            base_name = sip_module_name.split('.')[-1]
-+            if base_name != 'sip':
-+                pro.write('DEFINES += SIP_MODULE_BASENAME=%s\n' % base_name)
-+
-+        if not opts.static:
-+            # These only need to be correct for Windows.
-+            debug_suffix = "_d" if opts.debug else ""
-+            link_lib_dir = quote("-L" + cfg.py_lib_dir)
-+
-+            pro.write("""
-+win32 {
-+    PY_MODULE = sip%s.pyd
-+    PY_MODULE_SRC = $(DESTDIR_TARGET)
-+
-+    LIBS += %s
-+} else {
-+    PY_MODULE = sip.so
-+
-+    macx {
-+        PY_MODULE_SRC = $(TARGET).plugin/Contents/MacOS/$(TARGET)
-+
-+        QMAKE_LFLAGS += "-undefined dynamic_lookup"
-+    } else {
-+        PY_MODULE_SRC = $(TARGET)
-+    }
-+}
-+
-+QMAKE_POST_LINK = $(COPY_FILE) $$PY_MODULE_SRC $$PY_MODULE
-+
-+target.CONFIG = no_check_exist
-+target.files = $$PY_MODULE
-+""" % (debug_suffix, link_lib_dir))
-+
-+        pro.write("\n")
-+        pro.write("target.path = %s\n" % sip_module_dest_dir)
-+        pro.write("INSTALLS += target\n")
-+
-+        if opts.pyi:
-+            pro.write("\n")
-+            pro.write("sip_pyi.files = sip.pyi\n")
-+            pro.write("sip_pyi.path = %s\n" % pyi_dir)
-+            pro.write("INSTALLS += sip_pyi\n")
-+
-+        c_sources = get_sources("siplib", "*.c")
-+        cpp_sources = get_sources("siplib", "*.cpp")
-+        pro.write("\n")
-+        pro.write("SOURCES = %s\n" % " ".join(
-+                [qmake_quote(s) for s in c_sources + cpp_sources]))
-+
-+        headers = get_sources("siplib", "*.h")
-+        pro.write("\n")
-+        pro.write("HEADERS = %s\n" % " ".join(
-+                [qmake_quote(h) for h in headers]))
-+
-+        pro.close()
-+    else:
-+        sipconfig.inform("Creating sip module Makefile...")
-+
-+        build_dir = os.getcwd()
-+
-+        makefile = sipconfig.ModuleMakefile(
-+            configuration=cfg,
-+            build_file=os.path.join(src_dir, "siplib", "siplib.sbf"),
-+            dir="siplib",
-+            install_dir=sip_module_dest_dir,
-+            installs=module_installs,
-+            console=1,
-+            warnings=1,
-+            static=opts.static,
-+            debug=opts.debug,
-+            universal=opts.universal,
-+            arch=opts.arch,
-+            deployment_target=opts.deployment_target
-+        )
-+
-+        if sip_module_name != 'sip':
-+            makefile.DEFINES.append('SIP_MODULE_NAME=%s' % sip_module_name)
-+
-+            base_name = sip_module_name.split('.')[-1]
-+            if base_name != 'sip':
-+                makefile.DEFINES.append('SIP_MODULE_BASENAME=%s' % base_name)
-+
-+        if src_dir != build_dir:
-+            src_siplib_dir = os.path.join(src_dir, "siplib")
-+            makefile.extra_include_dirs.append(src_siplib_dir)
-+            makefile.extra_source_dirs.append(src_siplib_dir)
-+
-+        makefile.generate()
-+
-+    # Create the file containing all installed files.
-+    if opts.distinfo:
-+        installed = open('installed.txt', 'w')
-+
-+        for sources, dst in all_installs:
-+            if not isinstance(sources, (list, tuple)):
-+                sources = [sources]
-+
-+            for src in sources:
-+                installed.write(
-+                        os.path.join(dst, os.path.basename(src)) + '\n')
-+
-+        installed.close()
-+
-+
-+def get_sources(sources_dir, ext):
-+    """ Get the quoted files with the specified extension from a directory. """
-+
-+    return [quote(f) for f in glob.glob(os.path.join(src_dir, sources_dir, ext))]
-+
-+
-+def quote(path):
-+    """ Return a path that is quoted if necessary. """
-+
-+    if ' ' in path:
-+        path = '"' + path + '"'
-+
-+    return path
-+
-+
-+def qmake_quote(path):
-+    """ Return a path quoted for qmake if it contains spaces.  path is the
-+    path.
-+    """
-+
-+    if ' ' in path:
-+        path = '$$quote(%s)' % path
-+
-+    return path
-+
-+
-+# Look out for recursive definitions.
-+_extrapolating = []
-+
-+def _get_configuration_value(config, name, default=None):
-+    """ Get a configuration value while extrapolating. """
-+
-+    value = config.get(name)
-+    if value is None:
-+        if default is None:
-+            siputils.error("Configuration file references non-existent name '%s'." % name)
-+
-+        return default
-+
-+    parts = value.split('%(', 1)
-+    while len(parts) == 2:
-+        prefix, tail = parts
-+
-+        parts = tail.split(')', 1)
-+        if len(parts) != 2:
-+            siputils.error("Configuration file contains unterminated extrapolated name '%s'." % tail)
-+
-+        xtra_name, suffix = parts
-+
-+        if xtra_name in _extrapolating:
-+            siputils.error("Configuration file contains a recursive reference to '%s'." % xtra_name)
-+
-+        _extrapolating.append(xtra_name)
-+        xtra_value = _get_configuration_value(config, xtra_name)
-+        _extrapolating.pop()
-+
-+        value = prefix + xtra_value + suffix
-+
-+        parts = value.split('%(', 1)
-+
-+    return value
-+
-+
-+def update_from_configuration_file(config_file):
-+    """ Update a number of globals from values read from a configuration file.
-+    """
-+
-+    siputils.inform("Reading configuration from %s..." % config_file)
-+
-+    config = {}
-+
-+    # Read the file into the dict.
-+    cfg = open(config_file)
-+    line_nr = 0
-+
-+    for l in cfg:
-+        line_nr += 1
-+
-+        # Strip comments and blank lines.
-+        l = l.split('#')[0].strip()
-+        if l == '':
-+            continue
-+
-+        parts = l.split('=', 1)
-+        if len(parts) == 2:
-+            name = parts[0].strip()
-+            value = parts[1].strip()
-+        else:
-+            name = value = ''
-+
-+        if name == '' or value == '':
-+            siputils.error("%s:%d: Invalid line." % (config_file, line_nr))
-+
-+        config[name] = value
-+        last_name = name
-+
-+    cfg.close()
-+
-+    # Enforce the presets.
-+    version = siputils.version_to_string(py_version).split('.')
-+    config['py_major'] = version[0]
-+    config['py_minor'] = version[1]
-+    config['sysroot'] = sysroot
-+
-+    # Override the relevant values.
-+    global py_platform, plat_py_conf_inc_dir, plat_py_inc_dir, plat_py_lib_dir
-+    global sip_bin_dir, sip_inc_dir, sip_module_dir, sip_sip_dir
-+
-+    py_platform = _get_configuration_value(config, 'py_platform', py_platform)
-+    plat_py_inc_dir = _get_configuration_value(config, 'py_inc_dir',
-+            plat_py_inc_dir)
-+    plat_py_lib_dir = _get_configuration_value(config, 'py_pylib_dir',
-+            plat_py_lib_dir)
-+
-+    # The pyconfig.h directory defaults to the Python.h directory.
-+    plat_py_conf_inc_dir = _get_configuration_value(config, 'py_conf_inc_dir',
-+            plat_py_inc_dir)
-+
-+    sip_bin_dir = _get_configuration_value(config, 'sip_bin_dir', sip_bin_dir)
-+    sip_module_dir = _get_configuration_value(config, 'sip_module_dir',
-+            sip_module_dir)
-+
-+    # Note that this defaults to any 'py_inc_dir' specified in the
-+    # configuration file.
-+    sip_inc_dir = _get_configuration_value(config, 'sip_inc_dir',
-+            plat_py_inc_dir)
-+
-+    # Note that this is only used when creating sipconfig.py.
-+    sip_sip_dir = _get_configuration_value(config, 'sip_sip_dir', sip_sip_dir)
-+
-+
-+def create_optparser(sdk_dir):
-+    """Create the parser for the command line.
-+    """
-+    def store_abspath(option, opt_str, value, parser):
-+        setattr(parser.values, option.dest, os.path.abspath(value))
-+
-+    def store_abspath_dir(option, opt_str, value, parser):
-+        if not os.path.isdir(value):
-+            raise optparse.OptionValueError("'%s' is not a directory" % value)
-+        setattr(parser.values, option.dest, os.path.abspath(value))
-+
-+    def store_abspath_file(option, opt_str, value, parser):
-+        if not os.path.isfile(value):
-+            raise optparse.OptionValueError("'%s' is not a file" % value)
-+        setattr(parser.values, option.dest, os.path.abspath(value))
-+
-+    def store_version(option, opt_str, value, parser):
-+        version = siputils.version_from_string(value)
-+        if version is None:
-+            raise optparse.OptionValueError(
-+                    "'%s' is not a valid version number" % value)
-+        setattr(parser.values, option.dest, version)
-+
-+    p = optparse.OptionParser(usage="python %prog [opts] [macro=value] "
-+            "[macro+=value]", version=sip_version_str)
-+
-+    # Note: we don't use %default to be compatible with Python 2.3.
-+    p.add_option("-k", "--static", action="store_true", default=False,
-+            dest="static", help="build the SIP module as a static library")
-+    p.add_option("-p", "--platform", action="store", type="string",
-+            metavar="PLATFORM", dest="platform", help="the platform/compiler "
-+                    "configuration [default: %s]" % build_platform)
-+    p.add_option("-u", "--debug", action="store_true", default=False,
-+            help="build with debugging symbols")
-+    p.add_option("--sip-module", action="store", default="sip", type="string",
-+            metavar="NAME", dest="sip_module", help="the package.module name "
-+            "of the sip module [default: sip]")
-+    p.add_option("--configuration", dest='config_file', type='string',
-+            action='callback', callback=store_abspath_file, metavar="FILE",
-+            help="FILE contains the target configuration")
-+    p.add_option("--target-py-version", dest='target_py_version',
-+            type='string', action='callback', callback=store_version,
-+            metavar="VERSION",
-+            help="the major.minor version of the target Python [default: "
-+                    "%s]" % siputils.version_to_string(py_version, parts=2))
-+    p.add_option("--sysroot", dest='sysroot', type='string', action='callback',
-+            callback=store_abspath_dir, metavar="DIR",
-+            help="DIR is the target system root directory")
-+    p.add_option("--no-module", action="store_true", default=False,
-+            dest="no_module", help="disable the installation of the sip "
-+            "module [default: enabled]")
-+    p.add_option("--no-tools", action="store_true", default=False,
-+            dest="no_tools", help="disable the building of the code generator "
-+            "and the installation of the build system [default: enabled]")
-+    p.add_option("--use-qmake", action="store_true", default=False,
-+            dest="use_qmake", help="generate qmake .pro files instead of "
-+            "Makefiles")
-+
-+    if sys.platform == 'darwin':
-+        # Get the latest SDK to use as the default.
-+        sdks = glob.glob(sdk_dir + '/MacOSX*.sdk')
-+        if len(sdks) > 0:
-+            sdks.sort()
-+            _, default_sdk = os.path.split(sdks[-1])
-+        else:
-+            default_sdk = 'MacOSX10.4u.sdk'
-+
-+        g = optparse.OptionGroup(p, title="MacOS X Configuration")
-+        g.add_option("--arch", action="append", default=[], dest="arch",
-+                choices=["i386", "x86_64", "ppc"],
-+                help="build for architecture ARCH")
-+        g.add_option("--deployment-target", action="store", default='',
-+                metavar="VERSION", dest="deployment_target",
-+                help="set the value of the MACOSX_DEPLOYMENT_TARGET "
-+                        "environment variable in generated Makefiles")
-+        g.add_option("-n", "--universal", action="store_true", default=False,
-+                dest="universal",
-+                help="build the SIP code generator and module as universal "
-+                        "binaries")
-+        g.add_option("-s", "--sdk", action="store", default=default_sdk,
-+                type="string", metavar="SDK", dest="sdk",
-+                help="the name of the SDK used when building universal "
-+                        "binaries [default: %s]" % default_sdk)
-+        p.add_option_group(g)
-+
-+    # Querying.
-+    g = optparse.OptionGroup(p, title="Query")
-+    g.add_option("--show-platforms", action="store_true", default=False,
-+            dest="show_platforms", help="show the list of supported "
-+            "platform/compiler configurations")
-+    g.add_option("--show-build-macros", action="store_true", default=False,
-+            dest="show_build_macros", help="show the list of supported build "
-+            "macros")
-+    p.add_option_group(g)
-+
-+    # Installation.
-+    g = optparse.OptionGroup(p, title="Installation")
-+    g.add_option("-b", "--bindir", action="callback", type="string",
-+            metavar="DIR", dest="sipbindir", callback=store_abspath,
-+            help="where the SIP code generator will be installed [default: "
-+                    "%s]" % plat_bin_dir)
-+    g.add_option("-d", "--destdir", action="callback", type="string",
-+            metavar="DIR", dest="destdir", callback=store_abspath,
-+            help="where the SIP module will be installed [default: "
-+                    "%s]" % plat_py_site_dir)
-+    g.add_option("-e", "--incdir", action="callback", type="string",
-+            metavar="DIR", dest="sipincdir", callback=store_abspath,
-+            help="where the SIP header file will be installed [default: "
-+                    "%s]" % plat_py_venv_inc_dir)
-+    g.add_option("-v", "--sipdir", action="callback", type="string",
-+            metavar="DIR", dest="sipsipdir", callback=store_abspath,
-+            help="where .sip files are normally installed [default: "
-+                    "%s]" % plat_sip_dir)
-+    g.add_option("--no-dist-info", action="store_false", default=True,
-+            dest="distinfo",
-+            help="do not install the dist-info directory")
-+    g.add_option("--no-stubs", "--no-pyi", action="store_false", default=True,
-+            dest="pyi",
-+            help="do not install the sip.pyi stub file")
-+    g.add_option("--stubsdir", "--pyidir", action="callback", type="string",
-+            metavar="DIR", dest="pyidir", callback=store_abspath,
-+            help="where the sip.pyi stub file will be installed [default: "
-+                    "%s]" % plat_py_site_dir)
-+    p.add_option_group(g)
-+
-+    return p
-+
-+
-+def main(argv):
-+    """Create the configuration module module.
-+
-+    argv is the list of command line arguments.
-+    """
-+    siputils.inform("This is SIP %s for Python %s on %s." % (sip_version_str, sys.version.split()[0], sys.platform))
-+
-+    global py_version, build_platform
-+
-+    if py_version < 0x020300:
-+        siputils.error("This version of SIP requires Python v2.3 or later.")
-+
-+    # Basic initialisation.
-+    set_platform_directories()
-+    set_build_platform()
-+
-+    # Build up the list of valid specs.
-+    for s in os.listdir(os.path.join(src_dir, "specs")):
-+        platform_specs.append(s)
-+
-+    # Determine the directory containing the default OS/X SDK.
-+    if sys.platform == 'darwin':
-+        for sdk_dir in MACOSX_SDK_DIRS:
-+            if os.path.isdir(sdk_dir):
-+                break
-+        else:
-+            sdk_dir = MACOSX_SDK_DIRS[0]
-+    else:
-+        sdk_dir = ''
-+
-+    # Parse the command line.
-+    global opts
-+
-+    p = create_optparser(sdk_dir)
-+    opts, args = p.parse_args()
-+
-+    # Override defaults that affect subsequent configuration.
-+    if opts.target_py_version is not None:
-+        py_version = opts.target_py_version
-+
-+    if opts.sysroot is not None:
-+        global sysroot
-+        sysroot = opts.sysroot
-+
-+    # Make sure MacOS specific options get initialised.
-+    if sys.platform != 'darwin':
-+        opts.universal = ''
-+        opts.arch = []
-+        opts.sdk = ''
-+        opts.deployment_target = ''
-+
-+    # Handle the query options.
-+    if opts.show_platforms or opts.show_build_macros:
-+        if opts.show_platforms:
-+            show_platforms()
-+
-+        if opts.show_build_macros:
-+            show_macros()
-+
-+        sys.exit()
-+
-+    # Convert the list 'arch' option to a string.  Multiple architectures
-+    # imply a universal binary.
-+    if len(opts.arch) > 1:
-+        opts.universal = True
-+
-+    opts.arch = ' '.join(opts.arch)
-+
-+    # Convert the boolean 'universal' option to a string.
-+    if opts.universal:
-+        if '/' in opts.sdk:
-+            opts.universal = os.path.abspath(opts.sdk)
-+        else:
-+            opts.universal = sdk_dir + '/' + opts.sdk
-+
-+        if not os.path.isdir(opts.universal):
-+            siputils.error("Unable to find the SDK directory %s. Use the --sdk flag to specify the name of the SDK or its full path." % opts.universal)
-+
-+        if opts.arch == '':
-+            opts.arch = DEFAULT_MACOSX_ARCH
-+    else:
-+        opts.universal = ''
-+
-+    # No sip module also implies no stubs.
-+    if opts.no_module:
-+        opts.pyi = False
-+
-+    # Apply the overrides from any configuration file.
-+    global plat_bin_dir, plat_py_conf_inc_dir, plat_py_inc_dir
-+    global plat_py_lib_dir, plat_py_site_dir, plat_sip_dir
-+    global sip_bin_dir, sip_inc_dir, sip_root_dir, sip_module_dir, sip_sip_dir
-+    global sip_module_dest_dir, sip_module_name, pyi_dir
-+
-+    # Set defaults.
-+    sip_bin_dir = plat_bin_dir
-+    sip_inc_dir = plat_py_venv_inc_dir
-+    sip_root_dir = plat_py_site_dir
-+    sip_sip_dir = plat_sip_dir
-+
-+    if opts.config_file is not None:
-+        update_from_configuration_file(opts.config_file)
-+    elif sysroot != '':
-+        def apply_sysroot(d):
-+            if d.startswith(sys.prefix):
-+                d = sysroot + d[len(sys.prefix):]
-+
-+            return d
-+
-+        plat_bin_dir = apply_sysroot(plat_bin_dir)
-+        plat_py_conf_inc_dir = apply_sysroot(plat_py_conf_inc_dir)
-+        plat_py_inc_dir = apply_sysroot(plat_py_inc_dir)
-+        plat_py_lib_dir = apply_sysroot(plat_py_lib_dir)
-+        plat_py_site_dir = apply_sysroot(plat_py_site_dir)
-+        plat_sip_dir = apply_sysroot(plat_sip_dir)
-+
-+        sip_bin_dir = apply_sysroot(sip_bin_dir)
-+        sip_inc_dir = apply_sysroot(sip_inc_dir)
-+        sip_root_dir = apply_sysroot(sip_root_dir)
-+        sip_sip_dir = apply_sysroot(sip_sip_dir)
-+
-+    # Fix the name of the sip module.
-+    if opts.destdir is not None:
-+        sip_root_dir = opts.destdir
-+
-+    # The module directory might have been set in a configuration file.
-+    if not sip_module_dir:
-+        sip_module_dir = sip_root_dir
-+
-+    sip_module_name = opts.sip_module
-+
-+    module_path = sip_module_name.split(".")
-+
-+    if len(module_path) > 1:
-+        del module_path[-1]
-+        module_path.insert(0, sip_module_dir)
-+        sip_module_dest_dir = os.path.join(*module_path)
-+    else:
-+        sip_module_dest_dir = sip_module_dir
-+
-+    # Override from the command line.
-+    if opts.platform is not None:
-+        build_platform = opts.platform
-+
-+    if opts.sipbindir is not None:
-+        sip_bin_dir = opts.sipbindir
-+
-+    if opts.sipincdir is not None:
-+        sip_inc_dir = opts.sipincdir
-+
-+    if opts.sipsipdir is not None:
-+        sip_sip_dir = opts.sipsipdir
-+
-+    if opts.pyidir is not None:
-+        pyi_dir = opts.pyidir
-+    else:
-+        pyi_dir = sip_module_dest_dir
-+
-+    # Get the platform specific macros for building.
-+    macros = siputils.parse_build_macros(
-+            os.path.join(src_dir, "specs", build_platform), build_macro_names,
-+            args)
-+
-+    if macros is None:
-+        siputils.error("Unsupported macro name specified. Use the --show-build-macros flag to see a list of supported macros.")
-+        sys.exit(2)
-+
-+    # Tell the user what's been found.
-+    inform_user()
-+
-+    # Install the configuration module.
-+    create_config("sipconfig.py", os.path.join(src_dir, "siputils.py"),
-+            macros)
-+
-+    # Create the Makefiles.
-+    create_makefiles(macros)
-+
-+
-+###############################################################################
-+# The script starts here.
-+###############################################################################
-+
-+if __name__ == "__main__":
-+    try:
-+        main(sys.argv)
-+    except SystemExit:
-+        raise
-+    except:
-+        sys.stderr.write(
-+"""An internal error occured.  Please report all the output from the program,
-+including the following traceback, to support at riverbankcomputing.com.
-+""")
-+        raise
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/METADATA.in sip/METADATA.in
---- ./sip-4.19.12.orig/METADATA.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/METADATA.in	2018-09-18 17:52:23.267544161 -0400
-@@ -0,0 +1,81 @@
-+Metadata-Version: 1.1
-+Name: PyQt5_sip
-+Version: @RB_VERSION@
-+Summary: Python extension module support for PyQt5
-+Home-page: https://www.riverbankcomputing.com/software/sip/
-+Author: Riverbank Computing Limited
-+Author-email: info at riverbankcomputing.com
-+Platform: UNIX
-+Platform: OS X
-+Platform: Windows
-+Platform: iOS
-+Platform: Android
-+
-+SIP - A Python Extension Module Generator for C and C++ Libraries
-+=================================================================
-+
-+What is SIP?
-+------------
-+
-+One of the features of Python that makes it so powerful is the ability to take
-+existing libraries, written in C or C++, and make them available as Python
-+extension modules.  Such extension modules are often called bindings for the
-+library.
-+
-+SIP is a tool that makes it very easy to create Python bindings for C and C++
-+libraries.  It was originally developed to create PyQt, the Python bindings for
-+the Qt toolkit, but can be used to create bindings for any C or C++ library.
-+
-+SIP comprises a code generator and a Python module. The code generator
-+processes a set of specification files and generates C or C++ code which is
-+then compiled to create the bindings extension module.  The Python module
-+provides support functions to the automatically generated code.  Normally a
-+package containing SIP generated bindings includes a private copy of the
-+Python module.
-+
-+The specification files contain a description of the interface of the C or C++
-+library, i.e. the classes, methods, functions and variables.  The format of a
-+specification file is almost identical to a C or C++ header file, so much so
-+that the easiest way of creating a specification file is to edit the
-+corresponding header file.
-+
-+SIP makes it easy to exploit existing C or C++ libraries in a productive
-+interpretive programming environment.  SIP also makes it easy to take a Python
-+application (maybe a prototype) and selectively implement parts of the
-+application (maybe for performance reasons) in C or C++.
-+
-+
-+Author
-+------
-+
-+SIP is copyright (c) Riverbank Computing Limited.  Its homepage is
-+https://www.riverbankcomputing.com/software/sip/.
-+
-+Support may be obtained from the PyQt mailing list at
-+https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
-+
-+
-+License
-+-------
-+
-+SIP is released under the GPL v2, GPL v3 licenses, and under a license similar
-+to the BSD license.
-+
-+
-+Installation
-+------------
-+
-+SIP source packages can be dowloaded from
-+https://www.riverbankcomputing.com/software/sip/download/.
-+
-+Wheels containing the private copy of the Python module for PyQt5 for 32 and
-+64-bit Windows, 64-bit macOS and 64-bit Linux can be installed from PyPI::
-+
-+    pip3 install PyQt5_sip
-+
-+
-+Documentation
-+-------------
-+
-+The documentation for the latest release can be found
-+`here <http://pyqt.sourceforge.net/Docs/sip4/>`__.
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/mk_distinfo.py sip/mk_distinfo.py
---- ./sip-4.19.12.orig/mk_distinfo.py	2018-07-04 12:00:06.000000000 -0400
-+++ sip/mk_distinfo.py	1969-12-31 19:00:00.000000000 -0500
-@@ -1,120 +0,0 @@
--# This script handles the creation of the PEP 376 .dist-info directory for a
--# package.
--#
--# Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
--#
--# This script is distributed under the terms of the GNU General Public License
--# v3 as published by the Free Software Foundation.
--#
--# This script is supplied WITHOUT ANY WARRANTY; without even the implied
--# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
--
--
--import base64
--import hashlib
--import os
--import shutil
--import sys
--
--
--def error(message):
--    """ Display an error message and terminate. """
--
--    sys.stderr.write(message + '\n')
--    sys.exit(1)
--
--
--# Parse the command line.
--if len(sys.argv) != 4:
--    error("usage: {0} prefix dist-info installed".format(sys.argv[0]))
--
--prefix_dir = sys.argv[1]
--distinfo_dir = sys.argv[2]
--installed_fn = sys.argv[3]
--
--# Read the list of installed files.
--installed_f = open(installed_fn)
--installed = installed_f.read().strip().split('\n')
--installed_f.close()
--
--# The prefix directory corresponds to DESTDIR or INSTALL_ROOT.
--real_distinfo_dir = prefix_dir + distinfo_dir
--
--# Remove any existing dist-info directory and create an empty one.
--if os.path.exists(real_distinfo_dir):
--    try:
--        shutil.rmtree(real_distinfo_dir)
--    except:
--        error("unable to delete existing {0}".format(real_distinfo_dir))
--
--try:
--    os.mkdir(real_distinfo_dir)
--except:
--    error("unable to create {0}".format(real_distinfo_dir))
--
--# Create the INSTALLER file.  We pretend that pip was the installer.
--installer_fn = os.path.join(distinfo_dir, 'INSTALLER')
--installer_f = open(prefix_dir + installer_fn, 'w')
--installer_f.write('pip\n')
--installer_f.close()
--
--installed.append(installer_fn)
--
--# Create the METADATA file.
--METADATA = '''Metadata-Version: 1.1
--Name: {0}
--Version: {1}
--'''
--
--distinfo_path, distinfo_base = os.path.split(distinfo_dir)
--pkg_name, version = os.path.splitext(distinfo_base)[0].split('-')
--
--metadata_fn = os.path.join(distinfo_dir, 'METADATA')
--metadata_f = open(prefix_dir + metadata_fn, 'w')
--metadata_f.write(METADATA.format(pkg_name, version))
--metadata_f.close()
--
--installed.append(metadata_fn)
--
--# Create the RECORD file.
--record_fn = os.path.join(distinfo_dir, 'RECORD')
--record_f = open(prefix_dir + record_fn, 'w')
--
--for name in installed:
--    native_name = prefix_dir + name.replace('/', os.sep)
--    if os.path.isdir(native_name):
--        all_fns = []
--
--        for root, dirs, files in os.walk(native_name):
--            for f in files:
--                all_fns.append(os.path.join(root, f).replace(os.sep, '/'))
--
--            if '__pycache__' in dirs:
--                dirs.remove('__pycache__')
--    else:
--        all_fns = [prefix_dir + name]
--
--    for fn in all_fns:
--        real_distinfo_path = prefix_dir + distinfo_path
--
--        if fn.startswith(real_distinfo_path):
--            fn_name = fn[len(real_distinfo_path) + 1:].replace('\\', '/')
--        elif fn.startswith(prefix_dir + sys.prefix):
--            fn_name = os.path.relpath(
--                    fn, real_distinfo_path).replace('\\', '/')
--        else:
--            fn_name = fn[len(prefix_dir):]
--
--        fn_f = open(fn, 'rb')
--        data = fn_f.read()
--        fn_f.close()
--
--        digest = base64.urlsafe_b64encode(
--                hashlib.sha256(data).digest()).rstrip(b'=').decode('ascii')
--
--        record_f.write(
--                '{0},sha256={1},{2}\n'.format(fn_name, digest, len(data)))
--
--record_f.write('{0}/RECORD,,\n'.format(distinfo_base))
--
--record_f.close()
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/rb-product sip/rb-product
---- ./sip-4.19.12.orig/rb-product	1969-12-31 19:00:00.000000000 -0500
-+++ sip/rb-product	2018-09-18 17:52:23.269544132 -0400
-@@ -0,0 +1 @@
-+sip
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/Roadmap.rst sip/Roadmap.rst
---- ./sip-4.19.12.orig/Roadmap.rst	1969-12-31 19:00:00.000000000 -0500
-+++ sip/Roadmap.rst	2018-09-18 17:52:23.268544146 -0400
-@@ -0,0 +1,75 @@
-+SIP v5 Roadmap
-+==============
-+
-+The next major release of SIP will be v5 and is currently being planned.
-+
-+The major focus of v5 will be to:
-+
-+- eliminate inconsistencies in the syntax of specification files
-+
-+- fill in some gaps in the C/C++ support
-+
-+- restructure, refactor and rewrite the code as appropriate to ensure that it
-+  is easy to test, maintain and enhance over the long term.
-+
-+There is no plan to introduce any significant new functionality.
-+
-+Any feedback on the roadmap is very welcome.
-+
-+
-+Migration from SIP v4 to v5
-+---------------------------
-+
-+SIP v4.19.x will be the final series of SIP v4 releases.  All features that
-+will be removed in SIP v5 will trigger a deprecation warning.  These will be
-+Use of the old syntax will trigger deprecation warning messages.  These will be
-+disabled by default and will be enabled by passing the ``-w`` command line
-+option to the code generator.
-+
-+A set of specification files that does not trigger any deprecation warnings
-+with SIP v4.19.x should work unchanged with SIP v5.
-+
-+
-+Roadmap
-+-------
-+
-+Here we list specific changes that are planned.  Note that no changes are
-+planned for the ``sip`` extension module.
-+
-+- The syntax of directives will be revised to follow a standard pattern that
-+  supports arguments and sub-directives in a consistent manner.
-+
-+- All directives will behave consistently when enclosed in ``%If``/``%End``
-+  blocks.
-+
-+- Support will be added for fixed sized arrays of any type.
-+
-+- Support for optionally detecting overflows when converting from Python
-+  integers to C/C++ types will be investigated.
-+
-+- Invalid annotations will trigger an error message rather than being silently
-+  ignored.
-+
-+- Error messages will be improved and will always include a reference to the
-+  originating file and line number.
-+
-+- Support for the generation of QScintilla API files will be removed.  A
-+  utility to create these files from the XML export file will be added to
-+  QScintilla.
-+
-+- The code generator's ``-I`` command line option will support Windows style
-+  path names.
-+
-+- The code generator may be extended using plugins.
-+
-+- All PyQt specific support will be removed and implemented in appropriate
-+  plugins that will be distributed as part of PyQt.
-+
-+- The design of the code generator will allow for the implementation of plugins
-+  to support generating bindings for languages other than Python.
-+
-+- The code generator will be reimplemented using Python v3.  It will be able to
-+  be used as a standalone application or a package.
-+
-+- The build system will be removed.  SIP itself will be distributed as a
-+  ``distutils`` package.
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/export.c sip/sipgen/export.c
---- ./sip-4.19.12.orig/sipgen/export.c	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sipgen/export.c	2018-09-24 13:12:20.671276115 -0400
-@@ -1,7 +1,7 @@
- /*
-  * The XML and API file generator module for SIP.
-  *
-- * Copyright (c) 2015 Riverbank Computing Limited <info at riverbankcomputing.com>
-+ * Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
-  *
-  * This file is part of SIP.
-  *
-@@ -34,32 +34,34 @@
- 
- static void apiEnums(sipSpec *pt, moduleDef *mod, classDef *scope, FILE *fp);
- static void apiVars(sipSpec *pt, moduleDef *mod, classDef *scope, FILE *fp);
--static int apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
--        int sec, FILE *fp);
--static int apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
--        overDef *od, int sec, FILE *fp);
-+static void apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
-+        FILE *fp);
-+static void apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        overDef *od, FILE *fp);
- static int apiArgument(sipSpec *pt, argDef *ad, int out, int need_comma,
--        int sec, int names, int defaults, int in_str, FILE *fp);
-+        int names, int defaults, int in_str, FILE *fp);
- static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp);
- static void xmlEnums(sipSpec *pt, moduleDef *mod, classDef *scope, int indent,
-         FILE *fp);
- static void xmlVars(sipSpec *pt, moduleDef *mod, classDef *scope, int indent,
-         FILE *fp);
--static void xmlFunction(sipSpec *pt, classDef *scope, memberDef *md,
--        overDef *oloads, int indent, FILE *fp);
--static int xmlCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
-+static void xmlFunction(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        memberDef *md, overDef *oloads, int indent, FILE *fp);
-+static void xmlCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
-         int indent, FILE *fp);
--static int xmlOverload(sipSpec *pt, classDef *scope, memberDef *md,
--        overDef *od, classDef *xtnds, int stat, int sec, int indent, FILE *fp);
-+static void xmlOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        memberDef *md, overDef *od, classDef *xtnds, int stat, int indent,
-+        FILE *fp);
- static void xmlCppSignature(FILE *fp, overDef *od);
--static void xmlArgument(sipSpec *pt, argDef *ad, const char *dir, int res_xfer,
--        int sec, int indent, FILE *fp);
--static void xmlType(sipSpec *pt, argDef *ad, int sec, FILE *fp);
-+static void xmlArgument(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
-+        KwArgs kwargs, int res_xfer, int indent, FILE *fp);
-+static void xmlType(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
-+        KwArgs kwargs, FILE *fp);
- static void xmlIndent(int indent, FILE *fp);
--static const char *dirAttribute(argDef *ad);
--static const char *pyType(sipSpec *pt, argDef *ad, int sec, classDef **scope);
--static int exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
--        int sec, int names, int defaults, int in_str, int is_signal);
-+static void xmlRealName(scopedNameDef *fqcname, FILE *fp);
-+static const char *pyType(sipSpec *pt, argDef *ad, classDef **scope);
-+static void exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
-+        int names, int defaults, int in_str, int is_signal);
- 
- 
- /*
-@@ -86,8 +88,7 @@
-         if (od->common->slot != no_slot)
-             continue;
- 
--        if (apiOverload(pt, mod, NULL, od, FALSE, fp))
--            apiOverload(pt, mod, NULL, od, TRUE, fp);
-+        apiOverload(pt, mod, NULL, od, fp);
-     }
- 
-     for (cd = pt->classes; cd != NULL; cd = cd->next)
-@@ -108,8 +109,7 @@
-             if (isPrivateCtor(ct))
-                 continue;
- 
--            if (apiCtor(pt, mod, cd, ct, FALSE, fp))
--                apiCtor(pt, mod, cd, ct, TRUE, fp);
-+            apiCtor(pt, mod, cd, ct, fp);
-         }
- 
-         for (od = cd->overs; od != NULL; od = od->next)
-@@ -120,8 +120,7 @@
-             if (od->common->slot != no_slot)
-                 continue;
- 
--            if (apiOverload(pt, mod, cd, od, FALSE, fp))
--                apiOverload(pt, mod, cd, od, TRUE, fp);
-+            apiOverload(pt, mod, cd, od, fp);
-         }
-     }
- 
-@@ -132,10 +131,10 @@
- /*
-  * Generate an API ctor.
-  */
--static int apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
--        int sec, FILE *fp)
-+static void apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
-+        FILE *fp)
- {
--    int need_sec = FALSE, need_comma, a;
-+    int need_comma, a;
- 
-     /* Do the callable type form. */
-     fprintf(fp, "%s.", mod->name);
-@@ -148,11 +147,8 @@
-     {
-         argDef *ad = &ct->pysig.args[a];
- 
--        need_comma = apiArgument(pt, ad, FALSE, need_comma, sec, TRUE, TRUE,
--                FALSE, fp);
--
--        if (ad->atype == rxcon_type || ad->atype == rxdis_type)
--            need_sec = TRUE;
-+        need_comma = apiArgument(pt, ad, FALSE, need_comma, TRUE, TRUE, FALSE,
-+                fp);
-     }
- 
-     fprintf(fp, ")\n");
-@@ -163,12 +159,10 @@
-     fprintf(fp, ".__init__?%d(self", CLASS_ID);
- 
-     for (a = 0; a < ct->pysig.nrArgs; ++a)
--        apiArgument(pt, &ct->pysig.args[a], FALSE, TRUE, sec, TRUE, TRUE,
--                FALSE, fp);
-+        apiArgument(pt, &ct->pysig.args[a], FALSE, TRUE, TRUE, TRUE, FALSE,
-+                fp);
- 
-     fprintf(fp, ")\n");
--
--    return need_sec;
- }
- 
- 
-@@ -231,21 +225,16 @@
- /*
-  * Generate a single API overload.
-  */
--static int apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
--        overDef *od, int sec, FILE *fp)
-+static void apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        overDef *od, FILE *fp)
- {
--    int need_sec;
--
-     fprintf(fp, "%s.", mod->name);
-     prScopedPythonName(fp, scope, od->common->pyname->text);
-     fprintf(fp, "?%d", METHOD_ID);
- 
--    need_sec = exportPythonSignature(pt, fp, &od->pysig, sec, TRUE, TRUE,
--            FALSE, FALSE);
-+    exportPythonSignature(pt, fp, &od->pysig, TRUE, TRUE, FALSE, FALSE);
- 
-     fprintf(fp, "\n");
--
--    return need_sec;
- }
- 
- 
-@@ -253,7 +242,7 @@
-  * Generate the API for an argument.
-  */
- static int apiArgument(sipSpec *pt, argDef *ad, int out, int need_comma,
--        int sec, int names, int defaults, int in_str, FILE *fp)
-+        int names, int defaults, int in_str, FILE *fp)
- {
-     const char *tname;
-     classDef *tscope;
-@@ -261,10 +250,7 @@
-     if (isArraySize(ad))
-         return need_comma;
- 
--    if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
--        return need_comma;
--
--    if ((tname = pyType(pt, ad, sec, &tscope)) == NULL)
-+    if ((tname = pyType(pt, ad, &tscope)) == NULL)
-         return need_comma;
- 
-     if (need_comma)
-@@ -327,7 +313,7 @@
-     xmlVars(pt, mod, NULL, 1, fp);
- 
-     for (md = mod->othfuncs; md != NULL; md = md->next)
--        xmlFunction(pt, NULL, md, mod->overs, 1, fp);
-+        xmlFunction(pt, mod, NULL, md, mod->overs, 1, fp);
- 
-     fprintf(fp, "</Module>\n");
- 
-@@ -336,6 +322,26 @@
- 
- 
- /*
-+ * Generate a 'realname' attribute containing a fully qualified C/C++ name.
-+ */
-+static void xmlRealName(scopedNameDef *fqcname, FILE *fp)
-+{
-+    const char *sep = "";
-+    scopedNameDef *snd;
-+
-+    fprintf(fp, " realname=\"");
-+
-+    for (snd = removeGlobalScope(fqcname); snd != NULL; snd = snd->next)
-+    {
-+        fprintf(fp, "%s%s", sep, snd->name);
-+        sep = "::";
-+    }
-+
-+    fprintf(fp, "\"");
-+}
-+
-+
-+/*
-  * Generate the XML for a class.
-  */
- static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp)
-@@ -358,9 +364,11 @@
-     {
-         xmlIndent(indent++, fp);
-         fprintf(fp, "<Class name=\"");
--        prScopedPythonName(fp, cd->ecd, cd->pyname->text);
-+        restPyClass(cd, FALSE, fp);
-         fprintf(fp, "\"");
- 
-+        xmlRealName(classFQCName(cd), fp);
-+
-         if (cd->picklecode != NULL)
-             fprintf(fp, " pickle=\"1\"");
- 
-@@ -384,7 +392,7 @@
-                 if (cl != cd->supers)
-                     fprintf(fp, " ");
- 
--                prScopedPythonName(fp, cl->cd->ecd, cl->cd->pyname->text);
-+                restPyClass(cl->cd, TRUE, fp);
-             }
- 
-             fprintf(fp, "\"");
-@@ -398,15 +406,14 @@
-         if (isPrivateCtor(ct))
-             continue;
- 
--        if (xmlCtor(pt, cd, ct, FALSE, indent, fp))
--            xmlCtor(pt, cd, ct, TRUE, indent, fp);
-+        xmlCtor(pt, mod, cd, ct, indent, fp);
-     }
- 
-     xmlEnums(pt, mod, cd, indent, fp);
-     xmlVars(pt, mod, cd, indent, fp);
- 
-     for (md = cd->members; md != NULL; md = md->next)
--        xmlFunction(pt, cd, md, cd->overs, indent, fp);
-+        xmlFunction(pt, mod, cd, md, cd->overs, indent, fp);
- 
-     if (!isHiddenNamespace(cd))
-     {
-@@ -438,15 +445,22 @@
- 
-             xmlIndent(indent++, fp);
-             fprintf(fp, "<Enum name=\"");
--            prScopedPythonName(fp, ed->ecd, ed->pyname->text);
--            fprintf(fp, "\">\n");
-+            restPyEnum(ed, FALSE, fp);
-+            fprintf(fp, "\"");
-+
-+            xmlRealName(ed->fqcname, fp);
-+
-+            fprintf(fp, ">\n");
- 
-             for (emd = ed->members; emd != NULL; emd = emd->next)
-             {
-                 xmlIndent(indent, fp);
--                fprintf(fp, "<EnumMember name=\"");
--                prScopedPythonName(fp, ed->ecd, emd->pyname->text);
--                fprintf(fp, "\"/>\n");
-+                fprintf(fp, "<EnumMember name=\"%s\"", emd->pyname->text);
-+
-+                if (strcmp(emd->pyname->text, emd->cname) != 0)
-+                    fprintf(fp, " realname=\"%s\"", emd->cname);
-+
-+                fprintf(fp, "/>\n");
-             }
- 
-             xmlIndent(--indent, fp);
-@@ -495,7 +509,7 @@
-         if (isStaticVar(vd))
-             fprintf(fp, " static=\"1\"");
- 
--        xmlType(pt, &vd->type, FALSE, fp);
-+        xmlType(pt, mod, &vd->type, FALSE, NoKwArgs, fp);
-         fprintf(fp, "/>\n");
-     }
- }
-@@ -504,10 +518,10 @@
- /*
-  * Generate the XML for a ctor.
-  */
--static int xmlCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
-+static void xmlCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
-         int indent, FILE *fp)
- {
--    int a, need_sec;
-+    int a;
- 
-     xmlIndent(indent++, fp);
-     fprintf(fp, "<Function name=\"");
-@@ -518,38 +532,34 @@
-     if (ct->pysig.nrArgs == 0)
-     {
-         fprintf(fp, "/>\n");
--        return FALSE;
-+        return;
-     }
- 
-     fprintf(fp, ">\n");
- 
--    need_sec = FALSE;
--
-     for (a = 0; a < ct->pysig.nrArgs; ++a)
-     {
-         argDef *ad = &ct->pysig.args[a];
- 
--        xmlArgument(pt, ad, dirAttribute(ad), FALSE, sec, indent, fp);
-+        if (isInArg(ad))
-+            xmlArgument(pt, mod, ad, FALSE, ct->kwargs, FALSE, indent, fp);
- 
--        if (ad->atype == rxcon_type || ad->atype == rxdis_type)
--            need_sec = TRUE;
-+        if (isOutArg(ad))
-+            xmlArgument(pt, mod, ad, TRUE, ct->kwargs, FALSE, indent, fp);
-     }
- 
-     xmlIndent(--indent, fp);
-     fprintf(fp, "</Function>\n");
--
--    return need_sec;
- }
- 
- 
- /*
-  * Generate the XML for a function.
-  */
--static void xmlFunction(sipSpec *pt, classDef *scope, memberDef *md,
--        overDef *oloads, int indent, FILE *fp)
-+static void xmlFunction(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        memberDef *md, overDef *oloads, int indent, FILE *fp)
- {
-     overDef *od;
--    const char *default_str = "default=\"1\" ";
- 
-     for (od = oloads; od != NULL; od = od->next)
-     {
-@@ -564,14 +574,33 @@
- 
-         if (isSignal(od))
-         {
--            xmlIndent(indent, fp);
--            fprintf(fp, "<Signal %sname=\"", default_str);
-+            int a;
-+
-+            xmlIndent(indent++, fp);
-+            fprintf(fp, "<Signal name=\"");
-             prScopedPythonName(fp, scope, md->pyname->text);
--            fprintf(fp, "\" sig=\"");
--            xmlCppSignature(fp, od);
--            fprintf(fp, "\"/>\n");
-+            /* TODO: add the C++ signature. */
-+            /* fprintf(fp, "\" sig=\""); */
-+            /* xmlCppSignature(fp, od); */
- 
--            default_str = "";
-+            /* Handle the trivial case. */
-+            if (od->pysig.nrArgs == 0)
-+            {
-+                fprintf(fp, "\"/>\n");
-+                continue;
-+            }
-+
-+            fprintf(fp, "\">\n");
-+
-+            for (a = 0; a < od->pysig.nrArgs; ++a)
-+            {
-+                argDef *ad = &od->pysig.args[a];
-+
-+                xmlArgument(pt, mod, ad, FALSE, od->kwargs, FALSE, indent, fp);
-+            }
-+
-+            xmlIndent(--indent, fp);
-+            fprintf(fp, "</Signal>\n");
- 
-             continue;
-         }
-@@ -585,8 +614,7 @@
-             isstat = FALSE;
-         }
- 
--        if (xmlOverload(pt, scope, md, od, xtnds, isstat, FALSE, indent, fp))
--            xmlOverload(pt, scope, md, od, xtnds, isstat, TRUE, indent, fp);
-+        xmlOverload(pt, mod, scope, md, od, xtnds, isstat, indent, fp);
-     }
- }
- 
-@@ -594,10 +622,11 @@
- /*
-  * Generate the XML for an overload.
-  */
--static int xmlOverload(sipSpec *pt, classDef *scope, memberDef *md,
--        overDef *od, classDef *xtnds, int stat, int sec, int indent, FILE *fp)
-+static void xmlOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
-+        memberDef *md, overDef *od, classDef *xtnds, int stat, int indent,
-+        FILE *fp)
- {
--    int a, need_sec, no_res;
-+    int a, no_res;
- 
-     xmlIndent(indent++, fp);
-     fprintf(fp, "<Function name=\"");
-@@ -635,16 +664,14 @@
-     if (no_res && od->pysig.nrArgs == 0)
-     {
-         fprintf(fp, "/>\n");
--        return FALSE;
-+        return;
-     }
- 
-     fprintf(fp, ">\n");
- 
-     if (!no_res)
--        xmlArgument(pt, &od->pysig.result, "out", isResultTransferredBack(od),
--                FALSE, indent, fp);
--
--    need_sec = FALSE;
-+        xmlArgument(pt, mod, &od->pysig.result, TRUE, NoKwArgs,
-+                isResultTransferredBack(od), indent, fp);
- 
-     for (a = 0; a < od->pysig.nrArgs; ++a)
-     {
-@@ -654,16 +681,15 @@
-         if (isNumberSlot(md) && a == 0 && od->pysig.nrArgs == 2)
-             continue;
- 
--        xmlArgument(pt, ad, dirAttribute(ad), FALSE, sec, indent, fp);
-+        if (isInArg(ad))
-+            xmlArgument(pt, mod, ad, FALSE, od->kwargs, FALSE, indent, fp);
- 
--        if (ad->atype == rxcon_type || ad->atype == rxdis_type)
--            need_sec = TRUE;
-+        if (isOutArg(ad))
-+            xmlArgument(pt, mod, ad, TRUE, od->kwargs, FALSE, indent, fp);
-     }
- 
-     xmlIndent(--indent, fp);
-     fprintf(fp, "</Function>\n");
--
--    return need_sec;
- }
- 
- 
-@@ -679,65 +705,35 @@
- 
- 
- /*
-- * Convert an arguments direction to an XML attribute value.
-- */
--static const char *dirAttribute(argDef *ad)
--{
--    if (isInArg(ad))
--    {
--        if (isOutArg(ad))
--            return "inout";
--
--        return NULL;
--    }
--
--    return "out";
--}
--
--
--/*
-  * Generate the XML for an argument.
-  */
--static void xmlArgument(sipSpec *pt, argDef *ad, const char *dir, int res_xfer,
--        int sec, int indent, FILE *fp)
-+static void xmlArgument(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
-+        KwArgs kwargs, int res_xfer, int indent, FILE *fp)
- {
-     if (isArraySize(ad))
-         return;
- 
--    if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
--        return;
--
-     xmlIndent(indent, fp);
--    fprintf(fp, "<Argument");
--    xmlType(pt, ad, sec, fp);
-+    fprintf(fp, "<%s", (out ? "Return" : "Argument"));
-+    xmlType(pt, mod, ad, out, kwargs, fp);
- 
--    if (dir != NULL)
--        fprintf(fp, " dir=\"%s\"", dir);
-+    if (!out)
-+    {
-+        if (isAllowNone(ad))
-+            fprintf(fp, " allownone=\"1\"");
- 
--    if (isAllowNone(ad))
--        fprintf(fp, " allownone=\"1\"");
-+        if (isDisallowNone(ad))
-+            fprintf(fp, " disallownone=\"1\"");
- 
--    if (isDisallowNone(ad))
--        fprintf(fp, " disallownone=\"1\"");
-+        if (isTransferred(ad))
-+            fprintf(fp, " transfer=\"to\"");
-+        else if (isThisTransferred(ad))
-+            fprintf(fp, " transfer=\"this\"");
-+    }
- 
--    if (isTransferred(ad))
--        fprintf(fp, " transfer=\"to\"");
--    else if (isThisTransferred(ad))
--        fprintf(fp, " transfer=\"this\"");
--    else if (res_xfer || isTransferredBack(ad))
-+    if (res_xfer || isTransferredBack(ad))
-         fprintf(fp, " transfer=\"back\"");
- 
--    /*
--     * Handle the default value, but ignore it if it is an output only
--     * argument.
--     */
--    if (ad->defval && (dir == NULL || strcmp(dir, "out") != 0))
--    {
--        prcode(fp, " default=\"");
--        prDefaultValue(ad, FALSE, fp);
--        prcode(fp, "\"");
--    }
--
-     fprintf(fp, "/>\n");
- }
- 
-@@ -745,73 +741,68 @@
- /*
-  * Generate the XML for a type.
-  */
--static void xmlType(sipSpec *pt, argDef *ad, int sec, FILE *fp)
-+static void xmlType(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
-+        KwArgs kwargs, FILE *fp)
- {
--    const char *type_type = NULL, *type_name;
-+    const char *type_name;
-     classDef *type_scope;
-+    typeHintDef *thd;
- 
-     fprintf(fp, " typename=\"");
- 
--    switch (ad->atype)
-+    /* Handle the argument name. */
-+    if (!out && ad->name != NULL)
-     {
--    case class_type:
--        type_type = (isOpaque(ad->u.cd) ? "opaque" : "class");
--        break;
--
--    case enum_type:
--        if (ad->u.ed->pyname != NULL)
--            type_type = "enum";
--        break;
--
--    case rxcon_type:
--    case rxdis_type:
--        if (!sec)
--            type_type = "class";
--        break;
-+        if (kwargs == AllKwArgs || (kwargs == OptionalKwArgs && ad->defval != NULL))
-+            fprintf(fp, "%s: ", ad->name->text);
-+    }
- 
--    case qobject_type:
--        type_type = "class";
--        break;
-+    /* Use any explicit type hint unless the argument is constrained. */
-+    thd = (out ? ad->typehint_out : (isConstrained(ad) ? NULL : ad->typehint_in));
- 
--    case slotcon_type:
--    case slotdis_type:
-+    if (thd != NULL)
-+    {
-+        pyiTypeHint(pt, thd, mod, out, NULL, FALSE, TRUE, fp);
-+    }
-+    else
-+    {
-+        switch (ad->atype)
-         {
--            int a;
--
--            prcode(fp, "SLOT(");
--
--            for (a = 0; a < ad->u.sa->nrArgs; ++a)
--            {
--                if (a > 0)
--                    prcode(fp, ", ");
-+        case class_type:
-+            restPyClass(ad->u.cd, TRUE, fp);
-+            break;
- 
--                prcode(fp, "%M%B%M", &ad->u.sa->args[a]);
--            }
-+        case enum_type:
-+            if (ad->u.ed->pyname != NULL)
-+                restPyEnum(ad->u.ed, TRUE, fp);
-+            else
-+                fprintf(fp, "int");
- 
--            prcode(fp, ")");
--        }
-+            break;
- 
--        break;
-+        case qobject_type:
-+            restPyClass(pt->qobject_cd, TRUE, fp);
-+            break;
- 
--    case mapped_type:
--        type_type = "mappedtype";
--        break;
-+        case mapped_type:
-+            /* There would normally be a type hint. */
-+            fprintf(fp, "unknown-type");
-+            break;
- 
--    /* Suppress a compiler warning. */
--    default:
--        ;
-+        default:
-+            if ((type_name = pyType(pt, ad, &type_scope)) != NULL)
-+                prScopedPythonName(fp, type_scope, type_name);
-+        }
-     }
- 
--    if ((type_name = pyType(pt, ad, sec, &type_scope)) != NULL)
--        prScopedPythonName(fp, type_scope, type_name);
-+    if (!out && ad->name != NULL && ad->defval != NULL)
-+    {
-+        fprintf(fp, " = ");
-+        /* TODO: use reST references where appropriate. */
-+        prDefaultValue(ad, FALSE, fp);
-+    }
- 
-     fprintf(fp, "\"");
--
--    if (type_type != NULL)
--        fprintf(fp, " typetype=\"%s\"", type_type);
--
--    if (ad->name != NULL)
--        fprintf(fp, " name=\"%s\"", ad->name->text);
- }
- 
- 
-@@ -828,7 +819,7 @@
- /*
-  * Get the Python representation of a type.
-  */
--static const char *pyType(sipSpec *pt, argDef *ad, int sec, classDef **scope)
-+static const char *pyType(sipSpec *pt, argDef *ad, classDef **scope)
- {
-     const char *type_name;
- 
-@@ -947,23 +938,6 @@
-             type_name = "int";
-         break;
- 
--    case signal_type:
--        type_name = "SIGNAL()";
--        break;
--
--    case slot_type:
--        type_name = "SLOT()";
--        break;
--
--    case rxcon_type:
--    case rxdis_type:
--        if (sec)
--            type_name = "callable";
--        else
--            type_name = "QObject";
--
--        break;
--
-     case qobject_type:
-         type_name = "QObject";
-         break;
-@@ -1046,11 +1020,6 @@
-         type_name = "...";
-         break;
- 
--    case slotcon_type:
--    case anyslot_type:
--        type_name = "SLOT()";
--        break;
--
-     default:
-         type_name = NULL;
-     }
-@@ -1062,10 +1031,10 @@
- /*
-  * Generate a Python signature.
-  */
--static int exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
--        int sec, int names, int defaults, int in_str, int is_signal)
-+static void exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
-+        int names, int defaults, int in_str, int is_signal)
- {
--    int need_sec = FALSE, need_comma = FALSE, is_res, nr_out, a;
-+    int need_comma = FALSE, is_res, nr_out, a;
- 
-     if (is_signal)
-     {
-@@ -1089,11 +1058,8 @@
-         if (!isInArg(ad))
-             continue;
- 
--        need_comma = apiArgument(pt, ad, FALSE, need_comma, sec, names,
--                defaults, in_str, fp);
--
--        if (ad->atype == rxcon_type || ad->atype == rxdis_type)
--            need_sec = TRUE;
-+        need_comma = apiArgument(pt, ad, FALSE, need_comma, names, defaults,
-+                in_str, fp);
-     }
- 
-     if (is_signal)
-@@ -1118,7 +1084,7 @@
-             fprintf(fp, "(");
- 
-         if (is_res)
--            need_comma = apiArgument(pt, &sd->result, TRUE, FALSE, sec, FALSE,
-+            need_comma = apiArgument(pt, &sd->result, TRUE, FALSE, FALSE,
-                     FALSE, in_str, fp);
-         else
-             need_comma = FALSE;
-@@ -1129,13 +1095,43 @@
- 
-             if (isOutArg(ad))
-                 /* We don't want the name in the result tuple. */
--                need_comma = apiArgument(pt, ad, TRUE, need_comma, sec, FALSE,
-+                need_comma = apiArgument(pt, ad, TRUE, need_comma, FALSE,
-                         FALSE, in_str, fp);
-         }
- 
-         if ((is_res && nr_out > 0) || nr_out > 1)
-             fprintf(fp, ")");
-     }
-+}
- 
--    return need_sec;
-+
-+/*
-+ * Generate a fully qualified class name optionally as a reST reference.
-+ */
-+void restPyClass(classDef *cd, int as_ref, FILE *fp)
-+{
-+    if (as_ref)
-+        fprintf(fp, ":sip:class:`~");
-+
-+    fprintf(fp, "%s.", cd->iff->module->fullname->text);
-+    prScopedPythonName(fp, cd->ecd, cd->pyname->text);
-+
-+    if (as_ref)
-+        fprintf(fp, "`");
-+}
-+
-+
-+/*
-+ * Generate a fully qualified enum name optionally as a reST reference.
-+ */
-+void restPyEnum(enumDef *ed, int as_ref, FILE *fp)
-+{
-+    if (as_ref)
-+        fprintf(fp, ":sip:enum:`~");
-+
-+    fprintf(fp, "%s.", ed->module->fullname->text);
-+    prScopedPythonName(fp, ed->ecd, ed->pyname->text);
-+
-+    if (as_ref)
-+        fprintf(fp, "`");
- }
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/lexer.c sip/sipgen/lexer.c
---- ./sip-4.19.12.orig/sipgen/lexer.c	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/lexer.c	2018-09-18 18:12:23.334057750 -0400
-@@ -1,6 +1,6 @@
--#line 2 "sip-4.19.12/sipgen/lexer.c"
-+#line 2 "sipgen/lexer.c"
- 
--#line 4 "sip-4.19.12/sipgen/lexer.c"
-+#line 4 "sipgen/lexer.c"
- 
- #define  YY_INT_ALIGNED short int
- 
-@@ -8,8 +8,8 @@
- 
- #define FLEX_SCANNER
- #define YY_FLEX_MAJOR_VERSION 2
--#define YY_FLEX_MINOR_VERSION 5
--#define YY_FLEX_SUBMINOR_VERSION 35
-+#define YY_FLEX_MINOR_VERSION 6
-+#define YY_FLEX_SUBMINOR_VERSION 1
- #if YY_FLEX_SUBMINOR_VERSION > 0
- #define FLEX_BETA
- #endif
-@@ -47,7 +47,6 @@
- typedef uint16_t flex_uint16_t;
- typedef int32_t flex_int32_t;
- typedef uint32_t flex_uint32_t;
--typedef uint64_t flex_uint64_t;
- #else
- typedef signed char flex_int8_t;
- typedef short int flex_int16_t;
-@@ -55,7 +54,6 @@
- typedef unsigned char flex_uint8_t; 
- typedef unsigned short int flex_uint16_t;
- typedef unsigned int flex_uint32_t;
--#endif /* ! C99 */
- 
- /* Limits of integral types. */
- #ifndef INT8_MIN
-@@ -86,27 +84,17 @@
- #define UINT32_MAX             (4294967295U)
- #endif
- 
--#endif /* ! FLEXINT_H */
--
--#ifdef __cplusplus
--
--/* The "const" storage-class-modifier is valid. */
--#define YY_USE_CONST
--
--#else	/* ! __cplusplus */
--
--/* C99 requires __STDC__ to be defined as 1. */
--#if defined (__STDC__)
--
--#define YY_USE_CONST
-+#endif /* ! C99 */
- 
--#endif	/* defined (__STDC__) */
--#endif	/* ! __cplusplus */
-+#endif /* ! FLEXINT_H */
- 
--#ifdef YY_USE_CONST
-+/* TODO: this is always defined, so inline it */
- #define yyconst const
-+
-+#if defined(__GNUC__) && __GNUC__ >= 3
-+#define yynoreturn __attribute__((__noreturn__))
- #else
--#define yyconst
-+#define yynoreturn
- #endif
- 
- /* Returned upon end-of-file. */
-@@ -142,7 +130,15 @@
- 
- /* Size of default input buffer. */
- #ifndef YY_BUF_SIZE
-+#ifdef __ia64__
-+/* On IA-64, the buffer size is 16k, not 8k.
-+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
-+ * Ditto for the __ia64__ case accordingly.
-+ */
-+#define YY_BUF_SIZE 32768
-+#else
- #define YY_BUF_SIZE 16384
-+#endif /* __ia64__ */
- #endif
- 
- /* The state buf must be large enough to hold one state per character in the main buffer.
-@@ -159,7 +155,7 @@
- typedef size_t yy_size_t;
- #endif
- 
--extern yy_size_t yyleng;
-+extern int yyleng;
- 
- extern FILE *yyin, *yyout;
- 
-@@ -168,13 +164,14 @@
- #define EOB_ACT_LAST_MATCH 2
- 
-     #define YY_LESS_LINENO(n)
-+    #define YY_LINENO_REWIND_TO(ptr)
-     
- /* Return all but the first "n" matched characters back to the input stream. */
- #define yyless(n) \
- 	do \
- 		{ \
- 		/* Undo effects of setting up yytext. */ \
--        int yyless_macro_arg = (n); \
-+        yy_size_t yyless_macro_arg = (n); \
-         YY_LESS_LINENO(yyless_macro_arg);\
- 		*yy_cp = (yy_hold_char); \
- 		YY_RESTORE_YY_MORE_OFFSET \
-@@ -197,12 +194,12 @@
- 	/* Size of input buffer in bytes, not including room for EOB
- 	 * characters.
- 	 */
--	yy_size_t yy_buf_size;
-+	int yy_buf_size;
- 
- 	/* Number of characters read into yy_ch_buf, not including EOB
- 	 * characters.
- 	 */
--	yy_size_t yy_n_chars;
-+	int yy_n_chars;
- 
- 	/* Whether we "own" the buffer - i.e., we know we created it,
- 	 * and can realloc() it to grow it, and should free() it to
-@@ -253,7 +250,7 @@
- /* Stack of input buffers. */
- static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
- static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
--static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
- 
- /* We provide macros for accessing buffer states in case in the
-  * future we want to put the buffer states in a more general
-@@ -272,11 +269,11 @@
- 
- /* yy_hold_char holds the character lost when yytext is formed. */
- static char yy_hold_char;
--static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
--yy_size_t yyleng;
-+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-+int yyleng;
- 
- /* Points to current character in buffer. */
--static char *yy_c_buf_p = (char *) 0;
-+static char *yy_c_buf_p = NULL;
- static int yy_init = 0;		/* whether we need to initialize */
- static int yy_start = 0;	/* start state number */
- 
-@@ -301,7 +298,7 @@
- 
- YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
- YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
--YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
-+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
- 
- void *yyalloc (yy_size_t  );
- void *yyrealloc (void *,yy_size_t  );
-@@ -335,7 +332,7 @@
- 
- typedef unsigned char YY_CHAR;
- 
--FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-+FILE *yyin = NULL, *yyout = NULL;
- 
- typedef int yy_state_type;
- 
-@@ -344,19 +341,22 @@
- int yylineno = 1;
- 
- extern char *yytext;
-+#ifdef yytext_ptr
-+#undef yytext_ptr
-+#endif
- #define yytext_ptr yytext
- 
- static yy_state_type yy_get_previous_state (void );
- static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
- static int yy_get_next_buffer (void );
--static void yy_fatal_error (yyconst char msg[]  );
-+static void yynoreturn yy_fatal_error (yyconst char* msg  );
- 
- /* Done after the current pattern has been matched and before the
-  * corresponding action - sets up yytext.
-  */
- #define YY_DO_BEFORE_ACTION \
- 	(yytext_ptr) = yy_bp; \
--	yyleng = (yy_size_t) (yy_cp - yy_bp); \
-+	yyleng = (int) (yy_cp - yy_bp); \
- 	(yy_hold_char) = *yy_cp; \
- 	*yy_cp = '\0'; \
- 	(yy_c_buf_p) = yy_cp;
-@@ -509,7 +509,7 @@
-       131,  113,    0,  113,    0,  113,    7,  113,  101,    0
-     } ;
- 
--static yyconst flex_int32_t yy_ec[256] =
-+static yyconst YY_CHAR yy_ec[256] =
-     {   0,
-         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
-@@ -541,7 +541,7 @@
-         1,    1,    1,    1,    1
-     } ;
- 
--static yyconst flex_int32_t yy_meta[70] =
-+static yyconst YY_CHAR yy_meta[70] =
-     {   0,
-         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-         1,    3,    3,    3,    4,    4,    1,    4,    4,    4,
-@@ -552,7 +552,7 @@
-         3,    3,    3,    3,    3,    3,    3,    3,    1
-     } ;
- 
--static yyconst flex_int16_t yy_base[1239] =
-+static yyconst flex_uint16_t yy_base[1239] =
-     {   0,
-         0,   68, 2823,   69,   70,   73,   75,   75, 2817,   80,
-      2824, 2827, 2827, 2827,   73,   82,   77,   87,   77,  128,
-@@ -832,7 +832,7 @@
-      1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230
-     } ;
- 
--static yyconst flex_int16_t yy_nxt[2897] =
-+static yyconst flex_uint16_t yy_nxt[2897] =
-     {   0,
-        12,   13,   14,   13,   15,   12,   16,   12,   12,   12,
-        12,   17,   18,   19,   20,   21,   22,   23,   23,   23,
-@@ -1492,7 +1492,7 @@
- #define YY_MORE_ADJ 0
- #define YY_RESTORE_YY_MORE_OFFSET
- char *yytext;
--#line 1 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 1 "sipgen/metasrc/lexer.l"
- /*
-  * The SIP lexer.
-  *
-@@ -1510,7 +1510,7 @@
-  * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  */
--#line 20 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 20 "sipgen/metasrc/lexer.l"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -1560,7 +1560,7 @@
- 
- 
- 
--#line 1564 "sip-4.19.12/sipgen/lexer.c"
-+#line 1564 "sipgen/lexer.c"
- 
- #define INITIAL 0
- #define code 1
-@@ -1597,19 +1597,19 @@
- 
- FILE *yyget_in (void );
- 
--void yyset_in  (FILE * in_str  );
-+void yyset_in  (FILE * _in_str  );
- 
- FILE *yyget_out (void );
- 
--void yyset_out  (FILE * out_str  );
-+void yyset_out  (FILE * _out_str  );
- 
--yy_size_t yyget_leng (void );
-+			int yyget_leng (void );
- 
- char *yyget_text (void );
- 
- int yyget_lineno (void );
- 
--void yyset_lineno (int line_number  );
-+void yyset_lineno (int _line_number  );
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -1623,8 +1623,12 @@
- #endif
- #endif
- 
-+#ifndef YY_NO_UNPUT
-+    
-     static void yyunput (int c,char *buf_ptr  );
-     
-+#endif
-+
- #ifndef yytext_ptr
- static void yy_flex_strncpy (char *,yyconst char *,int );
- #endif
-@@ -1647,7 +1651,7 @@
-         static int yy_start_stack_depth = 0;
-         static int *yy_start_stack = NULL;
-     
--    static void yy_push_state (int new_state );
-+    static void yy_push_state (int _new_state );
-     
-     static void yy_pop_state (void );
-     
-@@ -1655,7 +1659,12 @@
-     
- /* Amount of stuff to slurp up with each read. */
- #ifndef YY_READ_BUF_SIZE
-+#ifdef __ia64__
-+/* On IA-64, the buffer size is 16k, not 8k */
-+#define YY_READ_BUF_SIZE 16384
-+#else
- #define YY_READ_BUF_SIZE 8192
-+#endif /* __ia64__ */
- #endif
- 
- /* Copy whatever the last rule matched to the standard output. */
-@@ -1663,7 +1672,7 @@
- /* This used to be an fputs(), but since the string might contain NUL's,
-  * we now use fwrite().
-  */
--#define ECHO fwrite( yytext, yyleng, 1, yyout )
-+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
- #endif
- 
- /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
-@@ -1674,7 +1683,7 @@
- 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
- 		{ \
- 		int c = '*'; \
--		yy_size_t n; \
-+		int n; \
- 		for ( n = 0; n < max_size && \
- 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- 			buf[n] = (char) c; \
-@@ -1687,7 +1696,7 @@
- 	else \
- 		{ \
- 		errno=0; \
--		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-+		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
- 			{ \
- 			if( errno != EINTR) \
- 				{ \
-@@ -1742,7 +1751,7 @@
- 
- /* Code executed at the end of each rule. */
- #ifndef YY_BREAK
--#define YY_BREAK break;
-+#define YY_BREAK /*LINTED*/break;
- #endif
- 
- #define YY_RULE_SETUP \
-@@ -1755,15 +1764,10 @@
-  */
- YY_DECL
- {
--	register yy_state_type yy_current_state;
--	register char *yy_cp, *yy_bp;
--	register int yy_act;
-+	yy_state_type yy_current_state;
-+	char *yy_cp, *yy_bp;
-+	int yy_act;
-     
--#line 74 "sip-4.19.12/sipgen/metasrc/lexer.l"
--
--
--#line 1766 "sip-4.19.12/sipgen/lexer.c"
--
- 	if ( !(yy_init) )
- 		{
- 		(yy_init) = 1;
-@@ -1790,7 +1794,13 @@
- 		yy_load_buffer_state( );
- 		}
- 
--	while ( 1 )		/* loops until end-of-file is reached */
-+	{
-+#line 74 "sipgen/metasrc/lexer.l"
-+
-+
-+#line 1802 "sipgen/lexer.c"
-+
-+	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
- 		{
- 		yy_cp = (yy_c_buf_p);
- 
-@@ -1807,7 +1817,7 @@
- yy_match:
- 		do
- 			{
--			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-+			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
- 			if ( yy_accept[yy_current_state] )
- 				{
- 				(yy_last_accepting_state) = yy_current_state;
-@@ -1819,7 +1829,7 @@
- 				if ( yy_current_state >= 1231 )
- 					yy_c = yy_meta[(unsigned int) yy_c];
- 				}
--			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
- 			++yy_cp;
- 			}
- 		while ( yy_base[yy_current_state] != 2827 );
-@@ -1848,527 +1858,527 @@
- 
- case 1:
- YY_RULE_SETUP
--#line 76 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 76 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_API;}
- 	YY_BREAK
- case 2:
- YY_RULE_SETUP
--#line 77 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 77 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_AUTOPYNAME;}
- 	YY_BREAK
- case 3:
- YY_RULE_SETUP
--#line 78 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 78 "sipgen/metasrc/lexer.l"
- {return TK_CMODULE;}
- 	YY_BREAK
- case 4:
- YY_RULE_SETUP
--#line 79 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 79 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_COMPOMODULE;}
- 	YY_BREAK
- case 5:
- YY_RULE_SETUP
--#line 80 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 80 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_CONSMODULE;}
- 	YY_BREAK
- case 6:
- YY_RULE_SETUP
--#line 81 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 81 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_DEFDOCSTRFMT;}
- 	YY_BREAK
- case 7:
- YY_RULE_SETUP
--#line 82 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 82 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_DEFDOCSTRSIG;}
- 	YY_BREAK
- case 8:
- YY_RULE_SETUP
--#line 83 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 83 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_DEFENCODING;}
- 	YY_BREAK
- case 9:
- YY_RULE_SETUP
--#line 84 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 84 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_DEFMETATYPE;}
- 	YY_BREAK
- case 10:
- YY_RULE_SETUP
--#line 85 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 85 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_DEFSUPERTYPE;}
- 	YY_BREAK
- case 11:
- YY_RULE_SETUP
--#line 86 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 86 "sipgen/metasrc/lexer.l"
- {return TK_END;}
- 	YY_BREAK
- case 12:
- YY_RULE_SETUP
--#line 87 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 87 "sipgen/metasrc/lexer.l"
- {BEGIN INITIAL; return TK_END;}
- 	YY_BREAK
- case 13:
- YY_RULE_SETUP
--#line 88 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 88 "sipgen/metasrc/lexer.l"
- {return TK_EXCEPTION;}
- 	YY_BREAK
- case 14:
- YY_RULE_SETUP
--#line 89 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 89 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_FEATURE;}
- 	YY_BREAK
- case 15:
- YY_RULE_SETUP
--#line 90 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 90 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_HIDE_NS;}
- 	YY_BREAK
- case 16:
- YY_RULE_SETUP
--#line 91 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 91 "sipgen/metasrc/lexer.l"
- {return TK_IF;}
- 	YY_BREAK
- case 17:
- YY_RULE_SETUP
--#line 92 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 92 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_IMPORT;}
- 	YY_BREAK
- case 18:
- YY_RULE_SETUP
--#line 93 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 93 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_INCLUDE;}
- 	YY_BREAK
- case 19:
- YY_RULE_SETUP
--#line 94 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 94 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_LICENSE;}
- 	YY_BREAK
- case 20:
- YY_RULE_SETUP
--#line 95 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 95 "sipgen/metasrc/lexer.l"
- {return TK_MAPPEDTYPE;}
- 	YY_BREAK
- case 21:
- YY_RULE_SETUP
--#line 96 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 96 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_MODULE;}
- 	YY_BREAK
- case 22:
- YY_RULE_SETUP
--#line 97 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 97 "sipgen/metasrc/lexer.l"
- {return TK_OPTINCLUDE;}
- 	YY_BREAK
- case 23:
- YY_RULE_SETUP
--#line 98 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 98 "sipgen/metasrc/lexer.l"
- {return TK_PLATFORMS;}
- 	YY_BREAK
- case 24:
- YY_RULE_SETUP
--#line 99 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 99 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_PLUGIN;}
- 	YY_BREAK
- case 25:
- YY_RULE_SETUP
--#line 100 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 100 "sipgen/metasrc/lexer.l"
- {BEGIN directive_start; return TK_PROPERTY;}
- 	YY_BREAK
- case 26:
- YY_RULE_SETUP
--#line 101 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 101 "sipgen/metasrc/lexer.l"
- {return TK_TIMELINE;}
- 	YY_BREAK
- case 27:
- YY_RULE_SETUP
--#line 103 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 103 "sipgen/metasrc/lexer.l"
- {return TK_CLASS;}
- 	YY_BREAK
- case 28:
- YY_RULE_SETUP
--#line 104 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 104 "sipgen/metasrc/lexer.l"
- {return TK_STRUCT;}
- 	YY_BREAK
- case 29:
- YY_RULE_SETUP
--#line 105 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 105 "sipgen/metasrc/lexer.l"
- {return TK_PUBLIC;}
- 	YY_BREAK
- case 30:
- YY_RULE_SETUP
--#line 106 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 106 "sipgen/metasrc/lexer.l"
- {return TK_PROTECTED;}
- 	YY_BREAK
- case 31:
- YY_RULE_SETUP
--#line 107 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 107 "sipgen/metasrc/lexer.l"
- {return TK_PRIVATE;}
- 	YY_BREAK
- case 32:
- YY_RULE_SETUP
--#line 108 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 108 "sipgen/metasrc/lexer.l"
- {return TK_SIGNALS;}
- 	YY_BREAK
- case 33:
- YY_RULE_SETUP
--#line 109 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 109 "sipgen/metasrc/lexer.l"
- {return TK_SIGNALS;}
- 	YY_BREAK
- case 34:
- YY_RULE_SETUP
--#line 110 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 110 "sipgen/metasrc/lexer.l"
- {return TK_SIGNAL_METHOD;}
- 	YY_BREAK
- case 35:
- YY_RULE_SETUP
--#line 111 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 111 "sipgen/metasrc/lexer.l"
- {return TK_SLOTS;}
- 	YY_BREAK
- case 36:
- YY_RULE_SETUP
--#line 112 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 112 "sipgen/metasrc/lexer.l"
- {return TK_SLOTS;}
- 	YY_BREAK
- case 37:
- YY_RULE_SETUP
--#line 113 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 113 "sipgen/metasrc/lexer.l"
- {return TK_SLOT_METHOD;}
- 	YY_BREAK
- case 38:
- YY_RULE_SETUP
--#line 114 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 114 "sipgen/metasrc/lexer.l"
- {return TK_CHAR;}
- 	YY_BREAK
- case 39:
- YY_RULE_SETUP
--#line 115 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 115 "sipgen/metasrc/lexer.l"
- {return TK_WCHAR_T;}
- 	YY_BREAK
- case 40:
- YY_RULE_SETUP
--#line 116 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 116 "sipgen/metasrc/lexer.l"
- {return TK_BOOL;}
- 	YY_BREAK
- case 41:
- YY_RULE_SETUP
--#line 117 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 117 "sipgen/metasrc/lexer.l"
- {return TK_SHORT;}
- 	YY_BREAK
- case 42:
- YY_RULE_SETUP
--#line 118 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 118 "sipgen/metasrc/lexer.l"
- {return TK_INT;}
- 	YY_BREAK
- case 43:
- YY_RULE_SETUP
--#line 119 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 119 "sipgen/metasrc/lexer.l"
- {return TK_LONG;}
- 	YY_BREAK
- case 44:
- YY_RULE_SETUP
--#line 120 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 120 "sipgen/metasrc/lexer.l"
- {return TK_FLOAT;}
- 	YY_BREAK
- case 45:
- YY_RULE_SETUP
--#line 121 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 121 "sipgen/metasrc/lexer.l"
- {return TK_DOUBLE;}
- 	YY_BREAK
- case 46:
- YY_RULE_SETUP
--#line 122 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 122 "sipgen/metasrc/lexer.l"
- {return TK_VOID;}
- 	YY_BREAK
- case 47:
- YY_RULE_SETUP
--#line 123 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 123 "sipgen/metasrc/lexer.l"
- {return TK_VIRTUAL;}
- 	YY_BREAK
- case 48:
- YY_RULE_SETUP
--#line 124 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 124 "sipgen/metasrc/lexer.l"
- {return TK_ENUM;}
- 	YY_BREAK
- case 49:
- YY_RULE_SETUP
--#line 125 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 125 "sipgen/metasrc/lexer.l"
- {return TK_SIGNED;}
- 	YY_BREAK
- case 50:
- YY_RULE_SETUP
--#line 126 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 126 "sipgen/metasrc/lexer.l"
- {return TK_UNSIGNED;}
- 	YY_BREAK
- case 51:
- YY_RULE_SETUP
--#line 127 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 127 "sipgen/metasrc/lexer.l"
- {return TK_CONST;}
- 	YY_BREAK
- case 52:
- YY_RULE_SETUP
--#line 128 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 128 "sipgen/metasrc/lexer.l"
- {return TK_STATIC;}
- 	YY_BREAK
- case 53:
- YY_RULE_SETUP
--#line 129 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 129 "sipgen/metasrc/lexer.l"
- {return TK_TRUE_VALUE;}
- 	YY_BREAK
- case 54:
- YY_RULE_SETUP
--#line 130 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 130 "sipgen/metasrc/lexer.l"
- {return TK_FALSE_VALUE;}
- 	YY_BREAK
- case 55:
- YY_RULE_SETUP
--#line 131 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 131 "sipgen/metasrc/lexer.l"
- {return TK_NULL_VALUE;}
- 	YY_BREAK
- case 56:
- YY_RULE_SETUP
--#line 132 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 132 "sipgen/metasrc/lexer.l"
- {return TK_TYPEDEF;}
- 	YY_BREAK
- case 57:
- YY_RULE_SETUP
--#line 133 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 133 "sipgen/metasrc/lexer.l"
- {return TK_NAMESPACE;}
- 	YY_BREAK
- case 58:
- YY_RULE_SETUP
--#line 134 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 134 "sipgen/metasrc/lexer.l"
- {return TK_OPERATOR;}
- 	YY_BREAK
- case 59:
- YY_RULE_SETUP
--#line 135 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 135 "sipgen/metasrc/lexer.l"
- {return TK_THROW;}
- 	YY_BREAK
- case 60:
- YY_RULE_SETUP
--#line 136 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 136 "sipgen/metasrc/lexer.l"
- {return TK_EXPLICIT;}
- 	YY_BREAK
- case 61:
- YY_RULE_SETUP
--#line 137 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 137 "sipgen/metasrc/lexer.l"
- {return TK_TEMPLATE;}
- 	YY_BREAK
- case 62:
- YY_RULE_SETUP
--#line 138 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 138 "sipgen/metasrc/lexer.l"
- {return TK_FINAL;}
- 	YY_BREAK
- case 63:
- YY_RULE_SETUP
--#line 139 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 139 "sipgen/metasrc/lexer.l"
- {return TK_SCOPE;}
- 	YY_BREAK
- case 64:
- YY_RULE_SETUP
--#line 140 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 140 "sipgen/metasrc/lexer.l"
- {return TK_LOGICAL_OR;}
- 	YY_BREAK
- case 65:
- YY_RULE_SETUP
--#line 141 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 141 "sipgen/metasrc/lexer.l"
- {return TK_PYOBJECT;}
- 	YY_BREAK
- case 66:
- YY_RULE_SETUP
--#line 142 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 142 "sipgen/metasrc/lexer.l"
- {return TK_PYTUPLE;}
- 	YY_BREAK
- case 67:
- YY_RULE_SETUP
--#line 143 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 143 "sipgen/metasrc/lexer.l"
- {return TK_PYLIST;}
- 	YY_BREAK
- case 68:
- YY_RULE_SETUP
--#line 144 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 144 "sipgen/metasrc/lexer.l"
- {return TK_PYDICT;}
- 	YY_BREAK
- case 69:
- YY_RULE_SETUP
--#line 145 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 145 "sipgen/metasrc/lexer.l"
- {return TK_PYCALLABLE;}
- 	YY_BREAK
- case 70:
- YY_RULE_SETUP
--#line 146 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 146 "sipgen/metasrc/lexer.l"
- {return TK_PYSLICE;}
- 	YY_BREAK
- case 71:
- YY_RULE_SETUP
--#line 147 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 147 "sipgen/metasrc/lexer.l"
- {return TK_PYTYPE;}
- 	YY_BREAK
- case 72:
- YY_RULE_SETUP
--#line 148 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 148 "sipgen/metasrc/lexer.l"
- {return TK_PYBUFFER;}
- 	YY_BREAK
- case 73:
- YY_RULE_SETUP
--#line 149 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 149 "sipgen/metasrc/lexer.l"
- {return TK_SIPSIGNAL;}
- 	YY_BREAK
- case 74:
- YY_RULE_SETUP
--#line 150 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 150 "sipgen/metasrc/lexer.l"
- {return TK_SIPSLOT;}
- 	YY_BREAK
- case 75:
- YY_RULE_SETUP
--#line 151 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 151 "sipgen/metasrc/lexer.l"
- {return TK_SIPANYSLOT;}
- 	YY_BREAK
- case 76:
- YY_RULE_SETUP
--#line 152 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 152 "sipgen/metasrc/lexer.l"
- {return TK_SIPRXCON;}
- 	YY_BREAK
- case 77:
- YY_RULE_SETUP
--#line 153 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 153 "sipgen/metasrc/lexer.l"
- {return TK_SIPRXDIS;}
- 	YY_BREAK
- case 78:
- YY_RULE_SETUP
--#line 154 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 154 "sipgen/metasrc/lexer.l"
- {return TK_SIPSLOTCON;}
- 	YY_BREAK
- case 79:
- YY_RULE_SETUP
--#line 155 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 155 "sipgen/metasrc/lexer.l"
- {return TK_SIPSLOTDIS;}
- 	YY_BREAK
- case 80:
- YY_RULE_SETUP
--#line 156 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 156 "sipgen/metasrc/lexer.l"
- {return TK_SIPSSIZET;}
- 	YY_BREAK
- case 81:
- YY_RULE_SETUP
--#line 157 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 157 "sipgen/metasrc/lexer.l"
- {return TK_QOBJECT;}
- 	YY_BREAK
- case 82:
- YY_RULE_SETUP
--#line 158 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 158 "sipgen/metasrc/lexer.l"
- {return TK_ELLIPSIS;}
- 	YY_BREAK
- case 83:
- YY_RULE_SETUP
--#line 160 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 160 "sipgen/metasrc/lexer.l"
- {return TK_FORMAT;}
- 	YY_BREAK
- case 84:
- YY_RULE_SETUP
--#line 161 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 161 "sipgen/metasrc/lexer.l"
- {return TK_GET;}
- 	YY_BREAK
- case 85:
- YY_RULE_SETUP
--#line 162 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 162 "sipgen/metasrc/lexer.l"
- {return TK_ID;}
- 	YY_BREAK
- case 86:
- YY_RULE_SETUP
--#line 163 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 163 "sipgen/metasrc/lexer.l"
- {return TK_KWARGS;}
- 	YY_BREAK
- case 87:
- YY_RULE_SETUP
--#line 164 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 164 "sipgen/metasrc/lexer.l"
- {return TK_LANGUAGE;}
- 	YY_BREAK
- case 88:
- YY_RULE_SETUP
--#line 165 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 165 "sipgen/metasrc/lexer.l"
- {return TK_LICENSEE;}
- 	YY_BREAK
- case 89:
- YY_RULE_SETUP
--#line 166 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 166 "sipgen/metasrc/lexer.l"
- {return TK_NAME;}
- 	YY_BREAK
- case 90:
- YY_RULE_SETUP
--#line 167 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 167 "sipgen/metasrc/lexer.l"
- {return TK_OPTIONAL;}
- 	YY_BREAK
- case 91:
- YY_RULE_SETUP
--#line 168 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 168 "sipgen/metasrc/lexer.l"
- {return TK_ORDER;}
- 	YY_BREAK
- case 92:
- YY_RULE_SETUP
--#line 169 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 169 "sipgen/metasrc/lexer.l"
- {return TK_REMOVELEADING;}
- 	YY_BREAK
- case 93:
- YY_RULE_SETUP
--#line 170 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 170 "sipgen/metasrc/lexer.l"
- {return TK_SET;}
- 	YY_BREAK
- case 94:
- YY_RULE_SETUP
--#line 171 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 171 "sipgen/metasrc/lexer.l"
- {return TK_SIGNATURE;}
- 	YY_BREAK
- case 95:
- YY_RULE_SETUP
--#line 172 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 172 "sipgen/metasrc/lexer.l"
- {return TK_TIMESTAMP;}
- 	YY_BREAK
- case 96:
- YY_RULE_SETUP
--#line 173 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 173 "sipgen/metasrc/lexer.l"
- {return TK_TYPE;}
- 	YY_BREAK
- case 97:
- YY_RULE_SETUP
--#line 174 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 174 "sipgen/metasrc/lexer.l"
- {return TK_USEARGNAMES;}
- 	YY_BREAK
- case 98:
- YY_RULE_SETUP
--#line 175 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 175 "sipgen/metasrc/lexer.l"
- {return TK_USELIMITEDAPI;}
- 	YY_BREAK
- case 99:
- YY_RULE_SETUP
--#line 176 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 176 "sipgen/metasrc/lexer.l"
- {return TK_ALLRAISEPYEXC;}
- 	YY_BREAK
- case 100:
- YY_RULE_SETUP
--#line 177 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 177 "sipgen/metasrc/lexer.l"
- {return TK_CALLSUPERINIT;}
- 	YY_BREAK
- case 101:
- YY_RULE_SETUP
--#line 178 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 178 "sipgen/metasrc/lexer.l"
- {return TK_DEFERRORHANDLER;}
- 	YY_BREAK
- case 102:
- YY_RULE_SETUP
--#line 179 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 179 "sipgen/metasrc/lexer.l"
- {return TK_VERSION;}
- 	YY_BREAK
- case 103:
- YY_RULE_SETUP
--#line 181 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 181 "sipgen/metasrc/lexer.l"
- {return TK_TRUE_VALUE;}
- 	YY_BREAK
- case 104:
- YY_RULE_SETUP
--#line 182 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 182 "sipgen/metasrc/lexer.l"
- {return TK_FALSE_VALUE;}
- 	YY_BREAK
- case 105:
- YY_RULE_SETUP
--#line 185 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 185 "sipgen/metasrc/lexer.l"
- {
-     /* Ignore whitespace. */
-     ;
-@@ -2376,7 +2386,7 @@
- 	YY_BREAK
- case 106:
- YY_RULE_SETUP
--#line 190 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 190 "sipgen/metasrc/lexer.l"
- {
-     /*
-      * Maintain the parenthesis depth so that we don't enter the 'code' state
-@@ -2391,7 +2401,7 @@
- 	YY_BREAK
- case 107:
- YY_RULE_SETUP
--#line 202 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 202 "sipgen/metasrc/lexer.l"
- {
-     /* Maintain the parenthesis depth. */
-     --parenDepth;
-@@ -2404,7 +2414,7 @@
- case 108:
- /* rule 108 can match eol */
- YY_RULE_SETUP
--#line 211 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 211 "sipgen/metasrc/lexer.l"
- {
-     /* Maintain the line number. */
-     ++inputFileStack[currentFile].sloc.linenr;
-@@ -2417,7 +2427,7 @@
- 	YY_BREAK
- case 109:
- YY_RULE_SETUP
--#line 221 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 221 "sipgen/metasrc/lexer.l"
- {
-     /* Ignore C++ style comments. */
-     ;
-@@ -2425,7 +2435,7 @@
- 	YY_BREAK
- case 110:
- YY_RULE_SETUP
--#line 227 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 227 "sipgen/metasrc/lexer.l"
- {
-     /* A signed decimal number. */
-     yylval.number = strtol(yytext,NULL,0);
-@@ -2434,7 +2444,7 @@
- 	YY_BREAK
- case 111:
- YY_RULE_SETUP
--#line 234 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 234 "sipgen/metasrc/lexer.l"
- {
-     /* A floating point number. */
-     yylval.real = strtod(yytext,NULL);
-@@ -2443,7 +2453,7 @@
- 	YY_BREAK
- case 112:
- YY_RULE_SETUP
--#line 241 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 241 "sipgen/metasrc/lexer.l"
- {
-     /* An unsigned hexadecimal number. */
-     yylval.number = strtol(yytext,NULL,16);
-@@ -2452,7 +2462,7 @@
- 	YY_BREAK
- case 113:
- YY_RULE_SETUP
--#line 248 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 248 "sipgen/metasrc/lexer.l"
- {
-     /* An identifier name. */
-     yylval.text = sipStrdup(yytext);
-@@ -2461,7 +2471,7 @@
- 	YY_BREAK
- case 114:
- YY_RULE_SETUP
--#line 255 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 255 "sipgen/metasrc/lexer.l"
- {
-     /* A relative pathname. */
-     yylval.text = sipStrdup(yytext);
-@@ -2471,7 +2481,7 @@
- case 115:
- /* rule 115 can match eol */
- YY_RULE_SETUP
--#line 262 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 262 "sipgen/metasrc/lexer.l"
- {
-     /* A double-quoted string. */
-     char ch, *dp, *sp;
-@@ -2510,7 +2520,7 @@
- case 116:
- /* rule 116 can match eol */
- YY_RULE_SETUP
--#line 298 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 298 "sipgen/metasrc/lexer.l"
- {
-     /* A single-quoted character. */
-     if (strlen(yytext) != 3)
-@@ -2523,7 +2533,7 @@
- 	YY_BREAK
- case 117:
- YY_RULE_SETUP
--#line 309 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 309 "sipgen/metasrc/lexer.l"
- {
-     /* Ignore C-style comments. */
-     yy_push_state(ccomment);
-@@ -2532,28 +2542,28 @@
- case 118:
- /* rule 118 can match eol */
- YY_RULE_SETUP
--#line 313 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 313 "sipgen/metasrc/lexer.l"
- {
-     ++inputFileStack[currentFile].sloc.linenr;
- }
- 	YY_BREAK
- case 119:
- YY_RULE_SETUP
--#line 316 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 316 "sipgen/metasrc/lexer.l"
- {
-     yy_pop_state();
- }
- 	YY_BREAK
- case 120:
- YY_RULE_SETUP
--#line 319 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 319 "sipgen/metasrc/lexer.l"
- {
-     ;
- }
- 	YY_BREAK
- case 121:
- YY_RULE_SETUP
--#line 324 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 324 "sipgen/metasrc/lexer.l"
- {
-     /* The software license. */
-     codeIdx = 0;
-@@ -2562,7 +2572,7 @@
- 	YY_BREAK
- case 122:
- YY_RULE_SETUP
--#line 330 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 330 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a from-type code block. */
-     codeIdx = 0;
-@@ -2571,7 +2581,7 @@
- 	YY_BREAK
- case 123:
- YY_RULE_SETUP
--#line 336 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 336 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a to-type code block. */
-     codeIdx = 0;
-@@ -2580,7 +2590,7 @@
- 	YY_BREAK
- case 124:
- YY_RULE_SETUP
--#line 342 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 342 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a to-sub-class code block. */
-     codeIdx = 0;
-@@ -2589,7 +2599,7 @@
- 	YY_BREAK
- case 125:
- YY_RULE_SETUP
--#line 348 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 348 "sipgen/metasrc/lexer.l"
- {
-     /* The start of an exported header code block. */
-     codeIdx = 0;
-@@ -2598,7 +2608,7 @@
- 	YY_BREAK
- case 126:
- YY_RULE_SETUP
--#line 354 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 354 "sipgen/metasrc/lexer.l"
- {
-     /* The start of part of an extract. */
-     codeIdx = 0;
-@@ -2610,7 +2620,7 @@
- 	YY_BREAK
- case 127:
- YY_RULE_SETUP
--#line 363 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 363 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a module header code block. */
-     codeIdx = 0;
-@@ -2619,7 +2629,7 @@
- 	YY_BREAK
- case 128:
- YY_RULE_SETUP
--#line 369 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 369 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a type header code block. */
-     codeIdx = 0;
-@@ -2628,7 +2638,7 @@
- 	YY_BREAK
- case 129:
- YY_RULE_SETUP
--#line 375 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 375 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a pre-initialisation code block. */
-     codeIdx = 0;
-@@ -2637,7 +2647,7 @@
- 	YY_BREAK
- case 130:
- YY_RULE_SETUP
--#line 381 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 381 "sipgen/metasrc/lexer.l"
- {
-     /* The start of an initialisation code block. */
-     codeIdx = 0;
-@@ -2646,7 +2656,7 @@
- 	YY_BREAK
- case 131:
- YY_RULE_SETUP
--#line 387 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 387 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a post-initialisation code block. */
-     codeIdx = 0;
-@@ -2655,7 +2665,7 @@
- 	YY_BREAK
- case 132:
- YY_RULE_SETUP
--#line 393 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 393 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a class finalisation code block. */
-     codeIdx = 0;
-@@ -2664,7 +2674,7 @@
- 	YY_BREAK
- case 133:
- YY_RULE_SETUP
--#line 399 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 399 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a unit code block. */
-     codeIdx = 0;
-@@ -2673,7 +2683,7 @@
- 	YY_BREAK
- case 134:
- YY_RULE_SETUP
--#line 405 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 405 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a unit post-include code block. */
-     codeIdx = 0;
-@@ -2682,7 +2692,7 @@
- 	YY_BREAK
- case 135:
- YY_RULE_SETUP
--#line 411 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 411 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a module code block. */
-     codeIdx = 0;
-@@ -2691,7 +2701,7 @@
- 	YY_BREAK
- case 136:
- YY_RULE_SETUP
--#line 417 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 417 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a type code block. */
-     codeIdx = 0;
-@@ -2700,7 +2710,7 @@
- 	YY_BREAK
- case 137:
- YY_RULE_SETUP
--#line 423 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 423 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a C++ method code block. */
-     codeIdx = 0;
-@@ -2709,7 +2719,7 @@
- 	YY_BREAK
- case 138:
- YY_RULE_SETUP
--#line 429 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 429 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a C++ code block to insert before the MethodCode. */
-     codeIdx = 0;
-@@ -2718,7 +2728,7 @@
- 	YY_BREAK
- case 139:
- YY_RULE_SETUP
--#line 435 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 435 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a C++ virtual call code block. */
-     codeIdx = 0;
-@@ -2727,7 +2737,7 @@
- 	YY_BREAK
- case 140:
- YY_RULE_SETUP
--#line 441 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 441 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a C++ virtual code block. */
-     codeIdx = 0;
-@@ -2736,7 +2746,7 @@
- 	YY_BREAK
- case 141:
- YY_RULE_SETUP
--#line 447 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 447 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a traverse code block. */
-     codeIdx = 0;
-@@ -2745,7 +2755,7 @@
- 	YY_BREAK
- case 142:
- YY_RULE_SETUP
--#line 453 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 453 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a clear code block. */
-     codeIdx = 0;
-@@ -2754,7 +2764,7 @@
- 	YY_BREAK
- case 143:
- YY_RULE_SETUP
--#line 459 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 459 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a get buffer code block. */
-     codeIdx = 0;
-@@ -2763,7 +2773,7 @@
- 	YY_BREAK
- case 144:
- YY_RULE_SETUP
--#line 465 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 465 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a release buffer code block. */
-     codeIdx = 0;
-@@ -2772,7 +2782,7 @@
- 	YY_BREAK
- case 145:
- YY_RULE_SETUP
--#line 471 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 471 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a read buffer code block. */
-     codeIdx = 0;
-@@ -2781,7 +2791,7 @@
- 	YY_BREAK
- case 146:
- YY_RULE_SETUP
--#line 477 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 477 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a write buffer code block. */
-     codeIdx = 0;
-@@ -2790,7 +2800,7 @@
- 	YY_BREAK
- case 147:
- YY_RULE_SETUP
--#line 483 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 483 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a segment count code block. */
-     codeIdx = 0;
-@@ -2799,7 +2809,7 @@
- 	YY_BREAK
- case 148:
- YY_RULE_SETUP
--#line 489 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 489 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a char buffer code block. */
-     codeIdx = 0;
-@@ -2808,7 +2818,7 @@
- 	YY_BREAK
- case 149:
- YY_RULE_SETUP
--#line 495 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 495 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a create instance code block. */
-     codeIdx = 0;
-@@ -2817,7 +2827,7 @@
- 	YY_BREAK
- case 150:
- YY_RULE_SETUP
--#line 501 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 501 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a pickle code block. */
-     codeIdx = 0;
-@@ -2826,7 +2836,7 @@
- 	YY_BREAK
- case 151:
- YY_RULE_SETUP
--#line 507 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 507 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a pre-Python code block. */
-     deprecated("%PrePythonCode is deprecated");
-@@ -2837,7 +2847,7 @@
- 	YY_BREAK
- case 152:
- YY_RULE_SETUP
--#line 515 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 515 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a raise Python exception code block. */
-     codeIdx = 0;
-@@ -2846,7 +2856,7 @@
- 	YY_BREAK
- case 153:
- YY_RULE_SETUP
--#line 521 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 521 "sipgen/metasrc/lexer.l"
- {
-     /* The start of an exported type hint code block. */
-     codeIdx = 0;
-@@ -2855,7 +2865,7 @@
- 	YY_BREAK
- case 154:
- YY_RULE_SETUP
--#line 527 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 527 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a type hint code block. */
-     codeIdx = 0;
-@@ -2864,7 +2874,7 @@
- 	YY_BREAK
- case 155:
- YY_RULE_SETUP
--#line 533 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 533 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a docstring block. */
-     codeIdx = 0;
-@@ -2876,7 +2886,7 @@
- 	YY_BREAK
- case 156:
- YY_RULE_SETUP
--#line 542 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 542 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a documentation block. */
-     deprecated("%Doc is deprecated, use %Extract instead");
-@@ -2887,7 +2897,7 @@
- 	YY_BREAK
- case 157:
- YY_RULE_SETUP
--#line 550 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 550 "sipgen/metasrc/lexer.l"
- {
-     /* The start of an exported documentation block. */
-     deprecated("%ExportedDoc is deprecated, use %Extract instead");
-@@ -2898,7 +2908,7 @@
- 	YY_BREAK
- case 158:
- YY_RULE_SETUP
--#line 558 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 558 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a Makefile code block. */
-     deprecated("%Makefile is deprecated");
-@@ -2909,7 +2919,7 @@
- 	YY_BREAK
- case 159:
- YY_RULE_SETUP
--#line 566 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 566 "sipgen/metasrc/lexer.l"
- {
-     /* The start of an access code block. */
-     codeIdx = 0;
-@@ -2918,7 +2928,7 @@
- 	YY_BREAK
- case 160:
- YY_RULE_SETUP
--#line 572 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 572 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a get code block. */
-     codeIdx = 0;
-@@ -2927,7 +2937,7 @@
- 	YY_BREAK
- case 161:
- YY_RULE_SETUP
--#line 578 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 578 "sipgen/metasrc/lexer.l"
- {
-     /* The start of a set code block. */
-     codeIdx = 0;
-@@ -2936,7 +2946,7 @@
- 	YY_BREAK
- case 162:
- YY_RULE_SETUP
--#line 584 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 584 "sipgen/metasrc/lexer.l"
- {
-     /* The start of part of a virtual error handler. */
-     codeIdx = 0;
-@@ -2948,7 +2958,7 @@
- 	YY_BREAK
- case 163:
- YY_RULE_SETUP
--#line 593 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 593 "sipgen/metasrc/lexer.l"
- {
-     /* The end of a code block. */
-     BEGIN INITIAL;
-@@ -2959,7 +2969,7 @@
- case 164:
- /* rule 164 can match eol */
- YY_RULE_SETUP
--#line 600 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 600 "sipgen/metasrc/lexer.l"
- {
-     /* The end of a code line . */
-     struct inputFile *ifp;
-@@ -2981,7 +2991,7 @@
- 	YY_BREAK
- case 165:
- YY_RULE_SETUP
--#line 619 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 619 "sipgen/metasrc/lexer.l"
- {
-     /* The contents of a code line. */
-     if (codeIdx == MAX_CODE_LINE_LENGTH)
-@@ -2992,7 +3002,7 @@
- 	YY_BREAK
- case 166:
- YY_RULE_SETUP
--#line 627 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 627 "sipgen/metasrc/lexer.l"
- {
-     /* Anything else is returned as is. */
-     return yytext[0];
-@@ -3000,10 +3010,10 @@
- 	YY_BREAK
- case 167:
- YY_RULE_SETUP
--#line 632 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 632 "sipgen/metasrc/lexer.l"
- ECHO;
- 	YY_BREAK
--#line 3007 "sip-4.19.12/sipgen/lexer.c"
-+#line 3017 "sipgen/lexer.c"
- case YY_STATE_EOF(INITIAL):
- case YY_STATE_EOF(code):
- case YY_STATE_EOF(ccomment):
-@@ -3138,6 +3148,7 @@
- 			"fatal flex scanner internal error--no action found" );
- 	} /* end of action switch */
- 		} /* end of scanning one token */
-+	} /* end of user's declarations */
- } /* end of yylex */
- 
- /* yy_get_next_buffer - try to read in a new buffer
-@@ -3149,9 +3160,9 @@
-  */
- static int yy_get_next_buffer (void)
- {
--    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
--	register char *source = (yytext_ptr);
--	register int number_to_move, i;
-+    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-+	char *source = (yytext_ptr);
-+	yy_size_t number_to_move, i;
- 	int ret_val;
- 
- 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-@@ -3180,7 +3191,7 @@
- 	/* Try to read more data. */
- 
- 	/* First move last chars to start of buffer. */
--	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-+	number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
- 
- 	for ( i = 0; i < number_to_move; ++i )
- 		*(dest++) = *(source++);
-@@ -3193,21 +3204,21 @@
- 
- 	else
- 		{
--			yy_size_t num_to_read =
-+			int num_to_read =
- 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
- 
- 		while ( num_to_read <= 0 )
- 			{ /* Not enough room in the buffer - grow it. */
- 
- 			/* just a shorter name for the current buffer */
--			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
- 
- 			int yy_c_buf_p_offset =
- 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
- 
- 			if ( b->yy_is_our_buffer )
- 				{
--				yy_size_t new_size = b->yy_buf_size * 2;
-+				int new_size = b->yy_buf_size * 2;
- 
- 				if ( new_size <= 0 )
- 					b->yy_buf_size += b->yy_buf_size / 8;
-@@ -3216,11 +3227,11 @@
- 
- 				b->yy_ch_buf = (char *)
- 					/* Include room in for 2 EOB chars. */
--					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-+					yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2)  );
- 				}
- 			else
- 				/* Can't grow it, we don't own it. */
--				b->yy_ch_buf = 0;
-+				b->yy_ch_buf = NULL;
- 
- 			if ( ! b->yy_ch_buf )
- 				YY_FATAL_ERROR(
-@@ -3262,10 +3273,10 @@
- 	else
- 		ret_val = EOB_ACT_CONTINUE_SCAN;
- 
--	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-+	if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
- 		/* Extend the array by 50%, plus the number we really need. */
--		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
--		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-+		int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size  );
- 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
- 	}
-@@ -3283,15 +3294,15 @@
- 
-     static yy_state_type yy_get_previous_state (void)
- {
--	register yy_state_type yy_current_state;
--	register char *yy_cp;
-+	yy_state_type yy_current_state;
-+	char *yy_cp;
-     
- 	yy_current_state = (yy_start);
- 	yy_current_state += YY_AT_BOL();
- 
- 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
- 		{
--		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-+		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- 		if ( yy_accept[yy_current_state] )
- 			{
- 			(yy_last_accepting_state) = yy_current_state;
-@@ -3303,7 +3314,7 @@
- 			if ( yy_current_state >= 1231 )
- 				yy_c = yy_meta[(unsigned int) yy_c];
- 			}
--		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
- 		}
- 
- 	return yy_current_state;
-@@ -3316,10 +3327,10 @@
-  */
-     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
- {
--	register int yy_is_jam;
--    	register char *yy_cp = (yy_c_buf_p);
-+	int yy_is_jam;
-+    	char *yy_cp = (yy_c_buf_p);
- 
--	register YY_CHAR yy_c = 1;
-+	YY_CHAR yy_c = 1;
- 	if ( yy_accept[yy_current_state] )
- 		{
- 		(yy_last_accepting_state) = yy_current_state;
-@@ -3331,15 +3342,17 @@
- 		if ( yy_current_state >= 1231 )
- 			yy_c = yy_meta[(unsigned int) yy_c];
- 		}
--	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
- 	yy_is_jam = (yy_current_state == 1230);
- 
--	return yy_is_jam ? 0 : yy_current_state;
-+		return yy_is_jam ? 0 : yy_current_state;
- }
- 
--    static void yyunput (int c, register char * yy_bp )
-+#ifndef YY_NO_UNPUT
-+
-+    static void yyunput (int c, char * yy_bp )
- {
--	register char *yy_cp;
-+	char *yy_cp;
-     
-     yy_cp = (yy_c_buf_p);
- 
-@@ -3349,10 +3362,10 @@
- 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- 		{ /* need to shift things up to make room */
- 		/* +2 for EOB chars. */
--		register yy_size_t number_to_move = (yy_n_chars) + 2;
--		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-+		int number_to_move = (yy_n_chars) + 2;
-+		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
- 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
--		register char *source =
-+		char *source =
- 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
- 
- 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-@@ -3361,7 +3374,7 @@
- 		yy_cp += (int) (dest - source);
- 		yy_bp += (int) (dest - source);
- 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
--			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-+			(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
- 
- 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-@@ -3374,6 +3387,8 @@
- 	(yy_c_buf_p) = yy_cp;
- }
- 
-+#endif
-+
- #ifndef YY_NO_INPUT
- #ifdef __cplusplus
-     static int yyinput (void)
-@@ -3398,7 +3413,7 @@
- 
- 		else
- 			{ /* need more input */
--			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
-+			int offset = (yy_c_buf_p) - (yytext_ptr);
- 			++(yy_c_buf_p);
- 
- 			switch ( yy_get_next_buffer(  ) )
-@@ -3530,7 +3545,7 @@
- 	/* yy_ch_buf has to be 2 characters longer than the size given because
- 	 * we need to put in 2 end-of-buffer characters.
- 	 */
--	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
-+	b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2)  );
- 	if ( ! b->yy_ch_buf )
- 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
- 
-@@ -3560,10 +3575,6 @@
- 	yyfree((void *) b  );
- }
- 
--#ifndef __cplusplus
--extern int isatty (int );
--#endif /* __cplusplus */
--    
- /* Initializes or reinitializes a buffer.
-  * This function is sometimes called more than once on the same buffer,
-  * such as during a yyrestart() or at EOF.
-@@ -3676,7 +3687,7 @@
-  */
- static void yyensure_buffer_stack (void)
- {
--	yy_size_t num_to_alloc;
-+	int num_to_alloc;
-     
- 	if (!(yy_buffer_stack)) {
- 
-@@ -3684,7 +3695,7 @@
- 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
- 		 * immediate realloc on the next call.
-          */
--		num_to_alloc = 1;
-+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
- 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
- 								(num_to_alloc * sizeof(struct yy_buffer_state*)
- 								);
-@@ -3701,7 +3712,7 @@
- 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
- 
- 		/* Increase the buffer to prepare for a possible push. */
--		int grow_size = 8 /* arbitrary grow size */;
-+		yy_size_t grow_size = 8 /* arbitrary grow size */;
- 
- 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
- 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-@@ -3731,16 +3742,16 @@
- 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
- 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
- 		/* They forgot to leave room for the EOB's. */
--		return 0;
-+		return NULL;
- 
- 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
- 	if ( ! b )
- 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
- 
--	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-+	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
- 	b->yy_buf_pos = b->yy_ch_buf = base;
- 	b->yy_is_our_buffer = 0;
--	b->yy_input_file = 0;
-+	b->yy_input_file = NULL;
- 	b->yy_n_chars = b->yy_buf_size;
- 	b->yy_is_interactive = 0;
- 	b->yy_at_bol = 1;
-@@ -3763,24 +3774,25 @@
- YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
- {
-     
--	return yy_scan_bytes(yystr,strlen(yystr) );
-+	return yy_scan_bytes(yystr,(int) strlen(yystr) );
- }
- 
- /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
-  * scan from a @e copy of @a bytes.
-- * @param bytes the byte buffer to scan
-- * @param len the number of bytes in the buffer pointed to by @a bytes.
-+ * @param yybytes the byte buffer to scan
-+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
-  * 
-  * @return the newly allocated buffer state object.
-  */
--YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
-+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
- {
- 	YY_BUFFER_STATE b;
- 	char *buf;
--	yy_size_t n, i;
-+	yy_size_t n;
-+	yy_size_t i;
-     
- 	/* Get memory for full buffer, including space for trailing EOB's. */
--	n = _yybytes_len + 2;
-+	n = (yy_size_t) _yybytes_len + 2;
- 	buf = (char *) yyalloc(n  );
- 	if ( ! buf )
- 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-@@ -3802,14 +3814,14 @@
- 	return b;
- }
- 
--    static void yy_push_state (int  new_state )
-+    static void yy_push_state (int  _new_state )
- {
-     	if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
- 		{
- 		yy_size_t new_size;
- 
- 		(yy_start_stack_depth) += YY_START_STACK_INCR;
--		new_size = (yy_start_stack_depth) * sizeof( int );
-+		new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
- 
- 		if ( ! (yy_start_stack) )
- 			(yy_start_stack) = (int *) yyalloc(new_size  );
-@@ -3823,7 +3835,7 @@
- 
- 	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
- 
--	BEGIN(new_state);
-+	BEGIN(_new_state);
- }
- 
-     static void yy_pop_state  (void)
-@@ -3843,9 +3855,9 @@
- #define YY_EXIT_FAILURE 2
- #endif
- 
--static void yy_fatal_error (yyconst char* msg )
-+static void yynoreturn yy_fatal_error (yyconst char* msg )
- {
--    	(void) fprintf( stderr, "%s\n", msg );
-+			(void) fprintf( stderr, "%s\n", msg );
- 	exit( YY_EXIT_FAILURE );
- }
- 
-@@ -3856,7 +3868,7 @@
- 	do \
- 		{ \
- 		/* Undo effects of setting up yytext. */ \
--        int yyless_macro_arg = (n); \
-+        yy_size_t yyless_macro_arg = (n); \
-         YY_LESS_LINENO(yyless_macro_arg);\
- 		yytext[yyleng] = (yy_hold_char); \
- 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
-@@ -3896,7 +3908,7 @@
- /** Get the length of the current token.
-  * 
-  */
--yy_size_t yyget_leng  (void)
-+int yyget_leng  (void)
- {
-         return yyleng;
- }
-@@ -3911,29 +3923,29 @@
- }
- 
- /** Set the current line number.
-- * @param line_number
-+ * @param _line_number line number
-  * 
-  */
--void yyset_lineno (int  line_number )
-+void yyset_lineno (int  _line_number )
- {
-     
--    yylineno = line_number;
-+    yylineno = _line_number;
- }
- 
- /** Set the input stream. This does not discard the current
-  * input buffer.
-- * @param in_str A readable stream.
-+ * @param _in_str A readable stream.
-  * 
-  * @see yy_switch_to_buffer
-  */
--void yyset_in (FILE *  in_str )
-+void yyset_in (FILE *  _in_str )
- {
--        yyin = in_str ;
-+        yyin = _in_str ;
- }
- 
--void yyset_out (FILE *  out_str )
-+void yyset_out (FILE *  _out_str )
- {
--        yyout = out_str ;
-+        yyout = _out_str ;
- }
- 
- int yyget_debug  (void)
-@@ -3941,9 +3953,9 @@
-         return yy_flex_debug;
- }
- 
--void yyset_debug (int  bdebug )
-+void yyset_debug (int  _bdebug )
- {
--        yy_flex_debug = bdebug ;
-+        yy_flex_debug = _bdebug ;
- }
- 
- static int yy_init_globals (void)
-@@ -3952,10 +3964,10 @@
-      * This function is called from yylex_destroy(), so don't allocate here.
-      */
- 
--    (yy_buffer_stack) = 0;
-+    (yy_buffer_stack) = NULL;
-     (yy_buffer_stack_top) = 0;
-     (yy_buffer_stack_max) = 0;
--    (yy_c_buf_p) = (char *) 0;
-+    (yy_c_buf_p) = NULL;
-     (yy_init) = 0;
-     (yy_start) = 0;
- 
-@@ -3968,8 +3980,8 @@
-     yyin = stdin;
-     yyout = stdout;
- #else
--    yyin = (FILE *) 0;
--    yyout = (FILE *) 0;
-+    yyin = NULL;
-+    yyout = NULL;
- #endif
- 
-     /* For future reference: Set errno on error, since we are called by
-@@ -4011,7 +4023,8 @@
- #ifndef yytext_ptr
- static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
- {
--	register int i;
-+		
-+	int i;
- 	for ( i = 0; i < n; ++i )
- 		s1[i] = s2[i];
- }
-@@ -4020,7 +4033,7 @@
- #ifdef YY_NEED_STRLEN
- static int yy_flex_strlen (yyconst char * s )
- {
--	register int n;
-+	int n;
- 	for ( n = 0; s[n]; ++n )
- 		;
- 
-@@ -4030,11 +4043,12 @@
- 
- void *yyalloc (yy_size_t  size )
- {
--	return (void *) malloc( size );
-+			return malloc(size);
- }
- 
- void *yyrealloc  (void * ptr, yy_size_t  size )
- {
-+		
- 	/* The cast to (char *) in the following accommodates both
- 	 * implementations that use char* generic pointers, and those
- 	 * that use void* generic pointers.  It works with the latter
-@@ -4042,17 +4056,17 @@
- 	 * any pointer type to void*, and deal with argument conversions
- 	 * as though doing an assignment.
- 	 */
--	return (void *) realloc( (char *) ptr, size );
-+	return realloc(ptr, size);
- }
- 
- void yyfree (void * ptr )
- {
--	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
-+			free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
- }
- 
- #define YYTABLES_NAME "yytables"
- 
--#line 632 "sip-4.19.12/sipgen/metasrc/lexer.l"
-+#line 632 "sipgen/metasrc/lexer.l"
- 
- 
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/metasrc/parser.y sip/sipgen/metasrc/parser.y
---- ./sip-4.19.12.orig/sipgen/metasrc/parser.y	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sipgen/metasrc/parser.y	2018-09-24 13:12:20.673276084 -0400
-@@ -7586,7 +7586,7 @@
-     if (getDeprecated(optflgs))
-         setIsDeprecated(od);
- 
--    if (!isPrivate(od) && !isSignal(od) && (od->common->slot == no_slot || od->common->slot == call_slot))
-+    if (!isPrivate(od) && (od->common->slot == no_slot || od->common->slot == call_slot))
-     {
-         od->kwargs = keywordArgs(mod, optflgs, &od->pysig, hasProtected(od->common));
- 
-@@ -7598,7 +7598,7 @@
-          * we need to make sure that any other overloads' keyword argument
-          * names are marked as used.
-          */
--        if (isProtected(od) && !inMainModule())
-+        if (!isSignal(od) && isProtected(od) && !inMainModule())
-         {
-             overDef *kwod;
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/parser.c sip/sipgen/parser.c
---- ./sip-4.19.12.orig/sipgen/parser.c	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/parser.c	2018-09-18 18:12:23.641053271 -0400
-@@ -1,14 +1,13 @@
--/* A Bison parser, made by GNU Bison 2.3.  */
-+/* A Bison parser, made by GNU Bison 3.0.4.  */
- 
--/* Skeleton implementation for Bison's Yacc-like parsers in C
-+/* Bison implementation for Yacc-like parsers in C
- 
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
--   Free Software Foundation, Inc.
-+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
-+   This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 2, or (at your option)
--   any later version.
-+   the Free Software Foundation, either version 3 of the License, or
-+   (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-@@ -16,9 +15,7 @@
-    GNU General Public License for more details.
- 
-    You should have received a copy of the GNU General Public License
--   along with this program; if not, write to the Free Software
--   Foundation, Inc., 51 Franklin Street, Fifth Floor,
--   Boston, MA 02110-1301, USA.  */
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
- 
- /* As a special exception, you may create a larger work that contains
-    part or all of the Bison parser skeleton and distribute that work
-@@ -47,7 +44,7 @@
- #define YYBISON 1
- 
- /* Bison version.  */
--#define YYBISON_VERSION "2.3"
-+#define YYBISON_VERSION "3.0.4"
- 
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
-@@ -55,324 +52,17 @@
- /* Pure parsers.  */
- #define YYPURE 0
- 
--/* Using locations.  */
--#define YYLSP_NEEDED 0
--
--
-+/* Push parsers.  */
-+#define YYPUSH 0
- 
--/* Tokens.  */
--#ifndef YYTOKENTYPE
--# define YYTOKENTYPE
--   /* Put the tokens into the symbol table, so that GDB and other debuggers
--      know about them.  */
--   enum yytokentype {
--     TK_API = 258,
--     TK_AUTOPYNAME = 259,
--     TK_DEFDOCSTRFMT = 260,
--     TK_DEFDOCSTRSIG = 261,
--     TK_DEFENCODING = 262,
--     TK_PLUGIN = 263,
--     TK_VIRTERRORHANDLER = 264,
--     TK_EXPTYPEHINTCODE = 265,
--     TK_TYPEHINTCODE = 266,
--     TK_DOCSTRING = 267,
--     TK_DOC = 268,
--     TK_EXPORTEDDOC = 269,
--     TK_EXTRACT = 270,
--     TK_MAKEFILE = 271,
--     TK_ACCESSCODE = 272,
--     TK_GETCODE = 273,
--     TK_SETCODE = 274,
--     TK_PREINITCODE = 275,
--     TK_INITCODE = 276,
--     TK_POSTINITCODE = 277,
--     TK_FINALCODE = 278,
--     TK_UNITCODE = 279,
--     TK_UNITPOSTINCLUDECODE = 280,
--     TK_MODCODE = 281,
--     TK_TYPECODE = 282,
--     TK_PREPYCODE = 283,
--     TK_COPYING = 284,
--     TK_MAPPEDTYPE = 285,
--     TK_CODELINE = 286,
--     TK_IF = 287,
--     TK_END = 288,
--     TK_NAME_VALUE = 289,
--     TK_PATH_VALUE = 290,
--     TK_STRING_VALUE = 291,
--     TK_VIRTUALCATCHERCODE = 292,
--     TK_TRAVERSECODE = 293,
--     TK_CLEARCODE = 294,
--     TK_GETBUFFERCODE = 295,
--     TK_RELEASEBUFFERCODE = 296,
--     TK_READBUFFERCODE = 297,
--     TK_WRITEBUFFERCODE = 298,
--     TK_SEGCOUNTCODE = 299,
--     TK_CHARBUFFERCODE = 300,
--     TK_PICKLECODE = 301,
--     TK_VIRTUALCALLCODE = 302,
--     TK_METHODCODE = 303,
--     TK_PREMETHODCODE = 304,
--     TK_INSTANCECODE = 305,
--     TK_FROMTYPE = 306,
--     TK_TOTYPE = 307,
--     TK_TOSUBCLASS = 308,
--     TK_INCLUDE = 309,
--     TK_OPTINCLUDE = 310,
--     TK_IMPORT = 311,
--     TK_EXPHEADERCODE = 312,
--     TK_MODHEADERCODE = 313,
--     TK_TYPEHEADERCODE = 314,
--     TK_MODULE = 315,
--     TK_CMODULE = 316,
--     TK_CONSMODULE = 317,
--     TK_COMPOMODULE = 318,
--     TK_CLASS = 319,
--     TK_STRUCT = 320,
--     TK_PUBLIC = 321,
--     TK_PROTECTED = 322,
--     TK_PRIVATE = 323,
--     TK_SIGNALS = 324,
--     TK_SIGNAL_METHOD = 325,
--     TK_SLOTS = 326,
--     TK_SLOT_METHOD = 327,
--     TK_BOOL = 328,
--     TK_SHORT = 329,
--     TK_INT = 330,
--     TK_LONG = 331,
--     TK_FLOAT = 332,
--     TK_DOUBLE = 333,
--     TK_CHAR = 334,
--     TK_WCHAR_T = 335,
--     TK_VOID = 336,
--     TK_PYOBJECT = 337,
--     TK_PYTUPLE = 338,
--     TK_PYLIST = 339,
--     TK_PYDICT = 340,
--     TK_PYCALLABLE = 341,
--     TK_PYSLICE = 342,
--     TK_PYTYPE = 343,
--     TK_PYBUFFER = 344,
--     TK_VIRTUAL = 345,
--     TK_ENUM = 346,
--     TK_SIGNED = 347,
--     TK_UNSIGNED = 348,
--     TK_SCOPE = 349,
--     TK_LOGICAL_OR = 350,
--     TK_CONST = 351,
--     TK_STATIC = 352,
--     TK_SIPSIGNAL = 353,
--     TK_SIPSLOT = 354,
--     TK_SIPANYSLOT = 355,
--     TK_SIPRXCON = 356,
--     TK_SIPRXDIS = 357,
--     TK_SIPSLOTCON = 358,
--     TK_SIPSLOTDIS = 359,
--     TK_SIPSSIZET = 360,
--     TK_NUMBER_VALUE = 361,
--     TK_REAL_VALUE = 362,
--     TK_TYPEDEF = 363,
--     TK_NAMESPACE = 364,
--     TK_TIMELINE = 365,
--     TK_PLATFORMS = 366,
--     TK_FEATURE = 367,
--     TK_LICENSE = 368,
--     TK_QCHAR_VALUE = 369,
--     TK_TRUE_VALUE = 370,
--     TK_FALSE_VALUE = 371,
--     TK_NULL_VALUE = 372,
--     TK_OPERATOR = 373,
--     TK_THROW = 374,
--     TK_QOBJECT = 375,
--     TK_EXCEPTION = 376,
--     TK_RAISECODE = 377,
--     TK_VIRTERRORCODE = 378,
--     TK_EXPLICIT = 379,
--     TK_TEMPLATE = 380,
--     TK_FINAL = 381,
--     TK_ELLIPSIS = 382,
--     TK_DEFMETATYPE = 383,
--     TK_DEFSUPERTYPE = 384,
--     TK_PROPERTY = 385,
--     TK_HIDE_NS = 386,
--     TK_FORMAT = 387,
--     TK_GET = 388,
--     TK_ID = 389,
--     TK_KWARGS = 390,
--     TK_LANGUAGE = 391,
--     TK_LICENSEE = 392,
--     TK_NAME = 393,
--     TK_OPTIONAL = 394,
--     TK_ORDER = 395,
--     TK_REMOVELEADING = 396,
--     TK_SET = 397,
--     TK_SIGNATURE = 398,
--     TK_TIMESTAMP = 399,
--     TK_TYPE = 400,
--     TK_USEARGNAMES = 401,
--     TK_USELIMITEDAPI = 402,
--     TK_ALLRAISEPYEXC = 403,
--     TK_CALLSUPERINIT = 404,
--     TK_DEFERRORHANDLER = 405,
--     TK_VERSION = 406
--   };
--#endif
--/* Tokens.  */
--#define TK_API 258
--#define TK_AUTOPYNAME 259
--#define TK_DEFDOCSTRFMT 260
--#define TK_DEFDOCSTRSIG 261
--#define TK_DEFENCODING 262
--#define TK_PLUGIN 263
--#define TK_VIRTERRORHANDLER 264
--#define TK_EXPTYPEHINTCODE 265
--#define TK_TYPEHINTCODE 266
--#define TK_DOCSTRING 267
--#define TK_DOC 268
--#define TK_EXPORTEDDOC 269
--#define TK_EXTRACT 270
--#define TK_MAKEFILE 271
--#define TK_ACCESSCODE 272
--#define TK_GETCODE 273
--#define TK_SETCODE 274
--#define TK_PREINITCODE 275
--#define TK_INITCODE 276
--#define TK_POSTINITCODE 277
--#define TK_FINALCODE 278
--#define TK_UNITCODE 279
--#define TK_UNITPOSTINCLUDECODE 280
--#define TK_MODCODE 281
--#define TK_TYPECODE 282
--#define TK_PREPYCODE 283
--#define TK_COPYING 284
--#define TK_MAPPEDTYPE 285
--#define TK_CODELINE 286
--#define TK_IF 287
--#define TK_END 288
--#define TK_NAME_VALUE 289
--#define TK_PATH_VALUE 290
--#define TK_STRING_VALUE 291
--#define TK_VIRTUALCATCHERCODE 292
--#define TK_TRAVERSECODE 293
--#define TK_CLEARCODE 294
--#define TK_GETBUFFERCODE 295
--#define TK_RELEASEBUFFERCODE 296
--#define TK_READBUFFERCODE 297
--#define TK_WRITEBUFFERCODE 298
--#define TK_SEGCOUNTCODE 299
--#define TK_CHARBUFFERCODE 300
--#define TK_PICKLECODE 301
--#define TK_VIRTUALCALLCODE 302
--#define TK_METHODCODE 303
--#define TK_PREMETHODCODE 304
--#define TK_INSTANCECODE 305
--#define TK_FROMTYPE 306
--#define TK_TOTYPE 307
--#define TK_TOSUBCLASS 308
--#define TK_INCLUDE 309
--#define TK_OPTINCLUDE 310
--#define TK_IMPORT 311
--#define TK_EXPHEADERCODE 312
--#define TK_MODHEADERCODE 313
--#define TK_TYPEHEADERCODE 314
--#define TK_MODULE 315
--#define TK_CMODULE 316
--#define TK_CONSMODULE 317
--#define TK_COMPOMODULE 318
--#define TK_CLASS 319
--#define TK_STRUCT 320
--#define TK_PUBLIC 321
--#define TK_PROTECTED 322
--#define TK_PRIVATE 323
--#define TK_SIGNALS 324
--#define TK_SIGNAL_METHOD 325
--#define TK_SLOTS 326
--#define TK_SLOT_METHOD 327
--#define TK_BOOL 328
--#define TK_SHORT 329
--#define TK_INT 330
--#define TK_LONG 331
--#define TK_FLOAT 332
--#define TK_DOUBLE 333
--#define TK_CHAR 334
--#define TK_WCHAR_T 335
--#define TK_VOID 336
--#define TK_PYOBJECT 337
--#define TK_PYTUPLE 338
--#define TK_PYLIST 339
--#define TK_PYDICT 340
--#define TK_PYCALLABLE 341
--#define TK_PYSLICE 342
--#define TK_PYTYPE 343
--#define TK_PYBUFFER 344
--#define TK_VIRTUAL 345
--#define TK_ENUM 346
--#define TK_SIGNED 347
--#define TK_UNSIGNED 348
--#define TK_SCOPE 349
--#define TK_LOGICAL_OR 350
--#define TK_CONST 351
--#define TK_STATIC 352
--#define TK_SIPSIGNAL 353
--#define TK_SIPSLOT 354
--#define TK_SIPANYSLOT 355
--#define TK_SIPRXCON 356
--#define TK_SIPRXDIS 357
--#define TK_SIPSLOTCON 358
--#define TK_SIPSLOTDIS 359
--#define TK_SIPSSIZET 360
--#define TK_NUMBER_VALUE 361
--#define TK_REAL_VALUE 362
--#define TK_TYPEDEF 363
--#define TK_NAMESPACE 364
--#define TK_TIMELINE 365
--#define TK_PLATFORMS 366
--#define TK_FEATURE 367
--#define TK_LICENSE 368
--#define TK_QCHAR_VALUE 369
--#define TK_TRUE_VALUE 370
--#define TK_FALSE_VALUE 371
--#define TK_NULL_VALUE 372
--#define TK_OPERATOR 373
--#define TK_THROW 374
--#define TK_QOBJECT 375
--#define TK_EXCEPTION 376
--#define TK_RAISECODE 377
--#define TK_VIRTERRORCODE 378
--#define TK_EXPLICIT 379
--#define TK_TEMPLATE 380
--#define TK_FINAL 381
--#define TK_ELLIPSIS 382
--#define TK_DEFMETATYPE 383
--#define TK_DEFSUPERTYPE 384
--#define TK_PROPERTY 385
--#define TK_HIDE_NS 386
--#define TK_FORMAT 387
--#define TK_GET 388
--#define TK_ID 389
--#define TK_KWARGS 390
--#define TK_LANGUAGE 391
--#define TK_LICENSEE 392
--#define TK_NAME 393
--#define TK_OPTIONAL 394
--#define TK_ORDER 395
--#define TK_REMOVELEADING 396
--#define TK_SET 397
--#define TK_SIGNATURE 398
--#define TK_TIMESTAMP 399
--#define TK_TYPE 400
--#define TK_USEARGNAMES 401
--#define TK_USELIMITEDAPI 402
--#define TK_ALLRAISEPYEXC 403
--#define TK_CALLSUPERINIT 404
--#define TK_DEFERRORHANDLER 405
--#define TK_VERSION 406
-+/* Pull parsers.  */
-+#define YYPULL 1
- 
- 
- 
- 
- /* Copy the first part of user declarations.  */
--#line 19 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 19 "sipgen/metasrc/parser.y" /* yacc.c:339  */
- 
- #include <stdlib.h>
- #include <string.h>
-@@ -556,11 +246,15 @@
- static void checkEllipsis(signatureDef *sd);
- static scopedNameDef *fullyQualifiedName(scopedNameDef *snd);
- 
-+#line 250 "sipgen/parser.c" /* yacc.c:339  */
- 
--/* Enabling traces.  */
--#ifndef YYDEBUG
--# define YYDEBUG 0
--#endif
-+# ifndef YY_NULLPTR
-+#  if defined __cplusplus && 201103L <= __cplusplus
-+#   define YY_NULLPTR nullptr
-+#  else
-+#   define YY_NULLPTR 0
-+#  endif
-+# endif
- 
- /* Enabling verbose error messages.  */
- #ifdef YYERROR_VERBOSE
-@@ -570,15 +264,332 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--/* Enabling the token table.  */
--#ifndef YYTOKEN_TABLE
--# define YYTOKEN_TABLE 0
-+/* In a future release of Bison, this section will be replaced
-+   by #include "parser.h".  */
-+#ifndef YY_YY_SIPGEN_PARSER_H_INCLUDED
-+# define YY_YY_SIPGEN_PARSER_H_INCLUDED
-+/* Debug traces.  */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+#if YYDEBUG
-+extern int yydebug;
- #endif
- 
-+/* Token type.  */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+  enum yytokentype
-+  {
-+    TK_API = 258,
-+    TK_AUTOPYNAME = 259,
-+    TK_DEFDOCSTRFMT = 260,
-+    TK_DEFDOCSTRSIG = 261,
-+    TK_DEFENCODING = 262,
-+    TK_PLUGIN = 263,
-+    TK_VIRTERRORHANDLER = 264,
-+    TK_EXPTYPEHINTCODE = 265,
-+    TK_TYPEHINTCODE = 266,
-+    TK_DOCSTRING = 267,
-+    TK_DOC = 268,
-+    TK_EXPORTEDDOC = 269,
-+    TK_EXTRACT = 270,
-+    TK_MAKEFILE = 271,
-+    TK_ACCESSCODE = 272,
-+    TK_GETCODE = 273,
-+    TK_SETCODE = 274,
-+    TK_PREINITCODE = 275,
-+    TK_INITCODE = 276,
-+    TK_POSTINITCODE = 277,
-+    TK_FINALCODE = 278,
-+    TK_UNITCODE = 279,
-+    TK_UNITPOSTINCLUDECODE = 280,
-+    TK_MODCODE = 281,
-+    TK_TYPECODE = 282,
-+    TK_PREPYCODE = 283,
-+    TK_COPYING = 284,
-+    TK_MAPPEDTYPE = 285,
-+    TK_CODELINE = 286,
-+    TK_IF = 287,
-+    TK_END = 288,
-+    TK_NAME_VALUE = 289,
-+    TK_PATH_VALUE = 290,
-+    TK_STRING_VALUE = 291,
-+    TK_VIRTUALCATCHERCODE = 292,
-+    TK_TRAVERSECODE = 293,
-+    TK_CLEARCODE = 294,
-+    TK_GETBUFFERCODE = 295,
-+    TK_RELEASEBUFFERCODE = 296,
-+    TK_READBUFFERCODE = 297,
-+    TK_WRITEBUFFERCODE = 298,
-+    TK_SEGCOUNTCODE = 299,
-+    TK_CHARBUFFERCODE = 300,
-+    TK_PICKLECODE = 301,
-+    TK_VIRTUALCALLCODE = 302,
-+    TK_METHODCODE = 303,
-+    TK_PREMETHODCODE = 304,
-+    TK_INSTANCECODE = 305,
-+    TK_FROMTYPE = 306,
-+    TK_TOTYPE = 307,
-+    TK_TOSUBCLASS = 308,
-+    TK_INCLUDE = 309,
-+    TK_OPTINCLUDE = 310,
-+    TK_IMPORT = 311,
-+    TK_EXPHEADERCODE = 312,
-+    TK_MODHEADERCODE = 313,
-+    TK_TYPEHEADERCODE = 314,
-+    TK_MODULE = 315,
-+    TK_CMODULE = 316,
-+    TK_CONSMODULE = 317,
-+    TK_COMPOMODULE = 318,
-+    TK_CLASS = 319,
-+    TK_STRUCT = 320,
-+    TK_PUBLIC = 321,
-+    TK_PROTECTED = 322,
-+    TK_PRIVATE = 323,
-+    TK_SIGNALS = 324,
-+    TK_SIGNAL_METHOD = 325,
-+    TK_SLOTS = 326,
-+    TK_SLOT_METHOD = 327,
-+    TK_BOOL = 328,
-+    TK_SHORT = 329,
-+    TK_INT = 330,
-+    TK_LONG = 331,
-+    TK_FLOAT = 332,
-+    TK_DOUBLE = 333,
-+    TK_CHAR = 334,
-+    TK_WCHAR_T = 335,
-+    TK_VOID = 336,
-+    TK_PYOBJECT = 337,
-+    TK_PYTUPLE = 338,
-+    TK_PYLIST = 339,
-+    TK_PYDICT = 340,
-+    TK_PYCALLABLE = 341,
-+    TK_PYSLICE = 342,
-+    TK_PYTYPE = 343,
-+    TK_PYBUFFER = 344,
-+    TK_VIRTUAL = 345,
-+    TK_ENUM = 346,
-+    TK_SIGNED = 347,
-+    TK_UNSIGNED = 348,
-+    TK_SCOPE = 349,
-+    TK_LOGICAL_OR = 350,
-+    TK_CONST = 351,
-+    TK_STATIC = 352,
-+    TK_SIPSIGNAL = 353,
-+    TK_SIPSLOT = 354,
-+    TK_SIPANYSLOT = 355,
-+    TK_SIPRXCON = 356,
-+    TK_SIPRXDIS = 357,
-+    TK_SIPSLOTCON = 358,
-+    TK_SIPSLOTDIS = 359,
-+    TK_SIPSSIZET = 360,
-+    TK_NUMBER_VALUE = 361,
-+    TK_REAL_VALUE = 362,
-+    TK_TYPEDEF = 363,
-+    TK_NAMESPACE = 364,
-+    TK_TIMELINE = 365,
-+    TK_PLATFORMS = 366,
-+    TK_FEATURE = 367,
-+    TK_LICENSE = 368,
-+    TK_QCHAR_VALUE = 369,
-+    TK_TRUE_VALUE = 370,
-+    TK_FALSE_VALUE = 371,
-+    TK_NULL_VALUE = 372,
-+    TK_OPERATOR = 373,
-+    TK_THROW = 374,
-+    TK_QOBJECT = 375,
-+    TK_EXCEPTION = 376,
-+    TK_RAISECODE = 377,
-+    TK_VIRTERRORCODE = 378,
-+    TK_EXPLICIT = 379,
-+    TK_TEMPLATE = 380,
-+    TK_FINAL = 381,
-+    TK_ELLIPSIS = 382,
-+    TK_DEFMETATYPE = 383,
-+    TK_DEFSUPERTYPE = 384,
-+    TK_PROPERTY = 385,
-+    TK_HIDE_NS = 386,
-+    TK_FORMAT = 387,
-+    TK_GET = 388,
-+    TK_ID = 389,
-+    TK_KWARGS = 390,
-+    TK_LANGUAGE = 391,
-+    TK_LICENSEE = 392,
-+    TK_NAME = 393,
-+    TK_OPTIONAL = 394,
-+    TK_ORDER = 395,
-+    TK_REMOVELEADING = 396,
-+    TK_SET = 397,
-+    TK_SIGNATURE = 398,
-+    TK_TIMESTAMP = 399,
-+    TK_TYPE = 400,
-+    TK_USEARGNAMES = 401,
-+    TK_USELIMITEDAPI = 402,
-+    TK_ALLRAISEPYEXC = 403,
-+    TK_CALLSUPERINIT = 404,
-+    TK_DEFERRORHANDLER = 405,
-+    TK_VERSION = 406
-+  };
-+#endif
-+/* Tokens.  */
-+#define TK_API 258
-+#define TK_AUTOPYNAME 259
-+#define TK_DEFDOCSTRFMT 260
-+#define TK_DEFDOCSTRSIG 261
-+#define TK_DEFENCODING 262
-+#define TK_PLUGIN 263
-+#define TK_VIRTERRORHANDLER 264
-+#define TK_EXPTYPEHINTCODE 265
-+#define TK_TYPEHINTCODE 266
-+#define TK_DOCSTRING 267
-+#define TK_DOC 268
-+#define TK_EXPORTEDDOC 269
-+#define TK_EXTRACT 270
-+#define TK_MAKEFILE 271
-+#define TK_ACCESSCODE 272
-+#define TK_GETCODE 273
-+#define TK_SETCODE 274
-+#define TK_PREINITCODE 275
-+#define TK_INITCODE 276
-+#define TK_POSTINITCODE 277
-+#define TK_FINALCODE 278
-+#define TK_UNITCODE 279
-+#define TK_UNITPOSTINCLUDECODE 280
-+#define TK_MODCODE 281
-+#define TK_TYPECODE 282
-+#define TK_PREPYCODE 283
-+#define TK_COPYING 284
-+#define TK_MAPPEDTYPE 285
-+#define TK_CODELINE 286
-+#define TK_IF 287
-+#define TK_END 288
-+#define TK_NAME_VALUE 289
-+#define TK_PATH_VALUE 290
-+#define TK_STRING_VALUE 291
-+#define TK_VIRTUALCATCHERCODE 292
-+#define TK_TRAVERSECODE 293
-+#define TK_CLEARCODE 294
-+#define TK_GETBUFFERCODE 295
-+#define TK_RELEASEBUFFERCODE 296
-+#define TK_READBUFFERCODE 297
-+#define TK_WRITEBUFFERCODE 298
-+#define TK_SEGCOUNTCODE 299
-+#define TK_CHARBUFFERCODE 300
-+#define TK_PICKLECODE 301
-+#define TK_VIRTUALCALLCODE 302
-+#define TK_METHODCODE 303
-+#define TK_PREMETHODCODE 304
-+#define TK_INSTANCECODE 305
-+#define TK_FROMTYPE 306
-+#define TK_TOTYPE 307
-+#define TK_TOSUBCLASS 308
-+#define TK_INCLUDE 309
-+#define TK_OPTINCLUDE 310
-+#define TK_IMPORT 311
-+#define TK_EXPHEADERCODE 312
-+#define TK_MODHEADERCODE 313
-+#define TK_TYPEHEADERCODE 314
-+#define TK_MODULE 315
-+#define TK_CMODULE 316
-+#define TK_CONSMODULE 317
-+#define TK_COMPOMODULE 318
-+#define TK_CLASS 319
-+#define TK_STRUCT 320
-+#define TK_PUBLIC 321
-+#define TK_PROTECTED 322
-+#define TK_PRIVATE 323
-+#define TK_SIGNALS 324
-+#define TK_SIGNAL_METHOD 325
-+#define TK_SLOTS 326
-+#define TK_SLOT_METHOD 327
-+#define TK_BOOL 328
-+#define TK_SHORT 329
-+#define TK_INT 330
-+#define TK_LONG 331
-+#define TK_FLOAT 332
-+#define TK_DOUBLE 333
-+#define TK_CHAR 334
-+#define TK_WCHAR_T 335
-+#define TK_VOID 336
-+#define TK_PYOBJECT 337
-+#define TK_PYTUPLE 338
-+#define TK_PYLIST 339
-+#define TK_PYDICT 340
-+#define TK_PYCALLABLE 341
-+#define TK_PYSLICE 342
-+#define TK_PYTYPE 343
-+#define TK_PYBUFFER 344
-+#define TK_VIRTUAL 345
-+#define TK_ENUM 346
-+#define TK_SIGNED 347
-+#define TK_UNSIGNED 348
-+#define TK_SCOPE 349
-+#define TK_LOGICAL_OR 350
-+#define TK_CONST 351
-+#define TK_STATIC 352
-+#define TK_SIPSIGNAL 353
-+#define TK_SIPSLOT 354
-+#define TK_SIPANYSLOT 355
-+#define TK_SIPRXCON 356
-+#define TK_SIPRXDIS 357
-+#define TK_SIPSLOTCON 358
-+#define TK_SIPSLOTDIS 359
-+#define TK_SIPSSIZET 360
-+#define TK_NUMBER_VALUE 361
-+#define TK_REAL_VALUE 362
-+#define TK_TYPEDEF 363
-+#define TK_NAMESPACE 364
-+#define TK_TIMELINE 365
-+#define TK_PLATFORMS 366
-+#define TK_FEATURE 367
-+#define TK_LICENSE 368
-+#define TK_QCHAR_VALUE 369
-+#define TK_TRUE_VALUE 370
-+#define TK_FALSE_VALUE 371
-+#define TK_NULL_VALUE 372
-+#define TK_OPERATOR 373
-+#define TK_THROW 374
-+#define TK_QOBJECT 375
-+#define TK_EXCEPTION 376
-+#define TK_RAISECODE 377
-+#define TK_VIRTERRORCODE 378
-+#define TK_EXPLICIT 379
-+#define TK_TEMPLATE 380
-+#define TK_FINAL 381
-+#define TK_ELLIPSIS 382
-+#define TK_DEFMETATYPE 383
-+#define TK_DEFSUPERTYPE 384
-+#define TK_PROPERTY 385
-+#define TK_HIDE_NS 386
-+#define TK_FORMAT 387
-+#define TK_GET 388
-+#define TK_ID 389
-+#define TK_KWARGS 390
-+#define TK_LANGUAGE 391
-+#define TK_LICENSEE 392
-+#define TK_NAME 393
-+#define TK_OPTIONAL 394
-+#define TK_ORDER 395
-+#define TK_REMOVELEADING 396
-+#define TK_SET 397
-+#define TK_SIGNATURE 398
-+#define TK_TIMESTAMP 399
-+#define TK_TYPE 400
-+#define TK_USEARGNAMES 401
-+#define TK_USELIMITEDAPI 402
-+#define TK_ALLRAISEPYEXC 403
-+#define TK_CALLSUPERINIT 404
-+#define TK_DEFERRORHANDLER 405
-+#define TK_VERSION 406
-+
-+/* Value type.  */
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
--typedef union YYSTYPE
--#line 203 "sip-4.19.12/sipgen/metasrc/parser.y"
-+
-+union YYSTYPE
- {
-+#line 203 "sipgen/metasrc/parser.y" /* yacc.c:355  */
-+
-     char            qchar;
-     char            *text;
-     long            number;
-@@ -621,22 +632,25 @@
-     variableCfg     variable;
-     vehCfg          veh;
-     int             token;
--}
--/* Line 193 of yacc.c.  */
--#line 627 "sip-4.19.12/sipgen/parser.c"
--	YYSTYPE;
--# define yystype YYSTYPE /* obsolescent; will be withdrawn */
--# define YYSTYPE_IS_DECLARED 1
-+
-+#line 637 "sipgen/parser.c" /* yacc.c:355  */
-+};
-+
-+typedef union YYSTYPE YYSTYPE;
- # define YYSTYPE_IS_TRIVIAL 1
-+# define YYSTYPE_IS_DECLARED 1
- #endif
- 
- 
-+extern YYSTYPE yylval;
- 
--/* Copy the second part of user declarations.  */
-+int yyparse (void);
- 
-+#endif /* !YY_YY_SIPGEN_PARSER_H_INCLUDED  */
- 
--/* Line 216 of yacc.c.  */
--#line 640 "sip-4.19.12/sipgen/parser.c"
-+/* Copy the second part of user declarations.  */
-+
-+#line 654 "sipgen/parser.c" /* yacc.c:358  */
- 
- #ifdef short
- # undef short
-@@ -650,11 +664,8 @@
- 
- #ifdef YYTYPE_INT8
- typedef YYTYPE_INT8 yytype_int8;
--#elif (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
--typedef signed char yytype_int8;
- #else
--typedef short int yytype_int8;
-+typedef signed char yytype_int8;
- #endif
- 
- #ifdef YYTYPE_UINT16
-@@ -674,8 +685,7 @@
- #  define YYSIZE_T __SIZE_TYPE__
- # elif defined size_t
- #  define YYSIZE_T size_t
--# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
-+# elif ! defined YYSIZE_T
- #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
- #  define YYSIZE_T size_t
- # else
-@@ -689,39 +699,68 @@
- # if defined YYENABLE_NLS && YYENABLE_NLS
- #  if ENABLE_NLS
- #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
--#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
- #  endif
- # endif
- # ifndef YY_
--#  define YY_(msgid) msgid
-+#  define YY_(Msgid) Msgid
-+# endif
-+#endif
-+
-+#ifndef YY_ATTRIBUTE
-+# if (defined __GNUC__                                               \
-+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-+# else
-+#  define YY_ATTRIBUTE(Spec) /* empty */
-+# endif
-+#endif
-+
-+#ifndef YY_ATTRIBUTE_PURE
-+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-+#endif
-+
-+#ifndef YY_ATTRIBUTE_UNUSED
-+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-+#endif
-+
-+#if !defined _Noreturn \
-+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-+# if defined _MSC_VER && 1200 <= _MSC_VER
-+#  define _Noreturn __declspec (noreturn)
-+# else
-+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
- # endif
- #endif
- 
- /* Suppress unused-variable warnings by "using" E.  */
- #if ! defined lint || defined __GNUC__
--# define YYUSE(e) ((void) (e))
-+# define YYUSE(E) ((void) (E))
- #else
--# define YYUSE(e) /* empty */
-+# define YYUSE(E) /* empty */
- #endif
- 
--/* Identity function, used to suppress warnings about constant conditions.  */
--#ifndef lint
--# define YYID(n) (n)
--#else
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
--static int
--YYID (int i)
-+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-+    _Pragma ("GCC diagnostic push") \
-+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-+    _Pragma ("GCC diagnostic pop")
- #else
--static int
--YYID (i)
--    int i;
-+# define YY_INITIAL_VALUE(Value) Value
- #endif
--{
--  return i;
--}
-+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-+#endif
-+#ifndef YY_INITIAL_VALUE
-+# define YY_INITIAL_VALUE(Value) /* Nothing. */
- #endif
- 
-+
- #if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
-@@ -739,11 +778,11 @@
- #    define alloca _alloca
- #   else
- #    define YYSTACK_ALLOC alloca
--#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
-+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
- #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#     ifndef _STDLIB_H
--#      define _STDLIB_H 1
-+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-+#     ifndef EXIT_SUCCESS
-+#      define EXIT_SUCCESS 0
- #     endif
- #    endif
- #   endif
-@@ -751,8 +790,8 @@
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning.  */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+   /* Pacify GCC's 'empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
- #  ifndef YYSTACK_ALLOC_MAXIMUM
-     /* The OS might guarantee only one guard page at the bottom of the stack,
-        and a page size can be as small as 4096 bytes.  So we cannot safely
-@@ -766,25 +805,23 @@
- #  ifndef YYSTACK_ALLOC_MAXIMUM
- #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
- #  endif
--#  if (defined __cplusplus && ! defined _STDLIB_H \
-+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-        && ! ((defined YYMALLOC || defined malloc) \
--	     && (defined YYFREE || defined free)))
-+             && (defined YYFREE || defined free)))
- #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   ifndef _STDLIB_H
--#    define _STDLIB_H 1
-+#   ifndef EXIT_SUCCESS
-+#    define EXIT_SUCCESS 0
- #   endif
- #  endif
- #  ifndef YYMALLOC
- #   define YYMALLOC malloc
--#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
-+#   if ! defined malloc && ! defined EXIT_SUCCESS
- void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
- #   endif
- #  endif
- #  ifndef YYFREE
- #   define YYFREE free
--#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
-+#   if ! defined free && ! defined EXIT_SUCCESS
- void free (void *); /* INFRINGES ON USER NAME SPACE */
- #   endif
- #  endif
-@@ -794,14 +831,14 @@
- 
- #if (! defined yyoverflow \
-      && (! defined __cplusplus \
--	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  yytype_int16 yyss;
--  YYSTYPE yyvs;
--  };
-+  yytype_int16 yyss_alloc;
-+  YYSTYPE yyvs_alloc;
-+};
- 
- /* The size of the maximum gap between one aligned stack and the next.  */
- # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-@@ -812,42 +849,46 @@
-      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
--/* Copy COUNT objects from FROM to TO.  The source and destination do
--   not overlap.  */
--# ifndef YYCOPY
--#  if defined __GNUC__ && 1 < __GNUC__
--#   define YYCOPY(To, From, Count) \
--      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
--#  else
--#   define YYCOPY(To, From, Count)		\
--      do					\
--	{					\
--	  YYSIZE_T yyi;				\
--	  for (yyi = 0; yyi < (Count); yyi++)	\
--	    (To)[yyi] = (From)[yyi];		\
--	}					\
--      while (YYID (0))
--#  endif
--# endif
-+# define YYCOPY_NEEDED 1
- 
- /* Relocate STACK from its old location to the new one.  The
-    local variables YYSIZE and YYSTACKSIZE give the old and new number of
-    elements in the stack, and YYPTR gives the new location of the
-    stack.  Advance YYPTR to a properly aligned location for the next
-    stack.  */
--# define YYSTACK_RELOCATE(Stack)					\
--    do									\
--      {									\
--	YYSIZE_T yynewbytes;						\
--	YYCOPY (&yyptr->Stack, Stack, yysize);				\
--	Stack = &yyptr->Stack;						\
--	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
--	yyptr += yynewbytes / sizeof (*yyptr);				\
--      }									\
--    while (YYID (0))
-+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-+    do                                                                  \
-+      {                                                                 \
-+        YYSIZE_T yynewbytes;                                            \
-+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-+        Stack = &yyptr->Stack_alloc;                                    \
-+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-+        yyptr += yynewbytes / sizeof (*yyptr);                          \
-+      }                                                                 \
-+    while (0)
- 
- #endif
- 
-+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-+/* Copy COUNT objects from SRC to DST.  The source and destination do
-+   not overlap.  */
-+# ifndef YYCOPY
-+#  if defined __GNUC__ && 1 < __GNUC__
-+#   define YYCOPY(Dst, Src, Count) \
-+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-+#  else
-+#   define YYCOPY(Dst, Src, Count)              \
-+      do                                        \
-+        {                                       \
-+          YYSIZE_T yyi;                         \
-+          for (yyi = 0; yyi < (Count); yyi++)   \
-+            (Dst)[yyi] = (Src)[yyi];            \
-+        }                                       \
-+      while (0)
-+#  endif
-+# endif
-+#endif /* !YYCOPY_NEEDED */
-+
- /* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  4
- /* YYLAST -- Last index in YYTABLE.  */
-@@ -859,17 +900,19 @@
- #define YYNNTS  254
- /* YYNRULES -- Number of rules.  */
- #define YYNRULES  594
--/* YYNRULES -- Number of states.  */
-+/* YYNSTATES -- Number of states.  */
- #define YYNSTATES  1042
- 
--/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-+   by yylex, with out-of-bounds checking.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   406
- 
--#define YYTRANSLATE(YYX)						\
-+#define YYTRANSLATE(YYX)                                                \
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
--/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-+   as returned by yylex, without out-of-bounds checking.  */
- static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -916,250 +959,7 @@
- };
- 
- #if YYDEBUG
--/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
--   YYRHS.  */
--static const yytype_uint16 yyprhs[] =
--{
--       0,     0,     3,     5,     8,     9,    12,    14,    16,    18,
--      20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
--      40,    42,    44,    46,    48,    50,    52,    54,    56,    58,
--      60,    62,    64,    66,    68,    70,    72,    74,    76,    78,
--      80,    82,    84,    86,    88,    90,    92,    94,    96,    98,
--     100,   102,   104,   106,   108,   110,   112,   115,   117,   121,
--     123,   127,   131,   134,   136,   140,   142,   146,   150,   153,
--     155,   159,   161,   165,   169,   172,   174,   178,   180,   184,
--     188,   192,   194,   198,   200,   204,   208,   211,   214,   218,
--     220,   224,   228,   232,   238,   239,   243,   248,   250,   253,
--     255,   257,   259,   261,   264,   265,   271,   272,   279,   284,
--     286,   289,   291,   293,   295,   297,   300,   303,   305,   307,
--     309,   324,   325,   331,   332,   336,   338,   341,   342,   348,
--     350,   353,   355,   358,   360,   364,   366,   370,   374,   375,
--     381,   383,   386,   388,   389,   395,   397,   400,   404,   409,
--     411,   415,   417,   421,   422,   424,   428,   430,   434,   438,
--     442,   446,   450,   453,   455,   459,   461,   465,   469,   472,
--     474,   478,   480,   484,   488,   491,   493,   497,   499,   503,
--     507,   511,   513,   517,   519,   523,   527,   528,   533,   535,
--     538,   540,   542,   544,   548,   550,   554,   556,   560,   564,
--     565,   570,   572,   575,   577,   579,   581,   585,   589,   590,
--     594,   598,   600,   604,   608,   612,   616,   620,   624,   628,
--     632,   636,   640,   641,   646,   648,   651,   653,   655,   657,
--     659,   661,   663,   664,   666,   669,   671,   675,   677,   681,
--     685,   689,   692,   695,   697,   701,   703,   707,   711,   712,
--     715,   716,   719,   720,   723,   726,   729,   732,   735,   738,
--     741,   744,   747,   750,   753,   756,   759,   762,   765,   768,
--     771,   774,   777,   780,   783,   786,   789,   792,   795,   798,
--     801,   804,   807,   810,   814,   816,   820,   824,   828,   829,
--     831,   835,   837,   841,   845,   849,   850,   852,   856,   858,
--     862,   864,   868,   872,   876,   881,   884,   886,   889,   890,
--     900,   901,   903,   905,   906,   908,   909,   911,   912,   914,
--     916,   919,   921,   923,   928,   929,   931,   932,   935,   936,
--     939,   941,   945,   947,   949,   951,   953,   955,   957,   958,
--     960,   962,   964,   966,   968,   970,   974,   975,   979,   982,
--     984,   986,   990,   992,   994,   996,   998,  1003,  1005,  1007,
--    1009,  1011,  1013,  1015,  1016,  1018,  1022,  1029,  1042,  1043,
--    1044,  1053,  1054,  1058,  1063,  1064,  1065,  1074,  1075,  1078,
--    1080,  1084,  1087,  1088,  1090,  1092,  1094,  1095,  1099,  1100,
--    1102,  1105,  1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,
--    1123,  1125,  1127,  1129,  1131,  1133,  1135,  1137,  1139,  1141,
--    1143,  1145,  1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,
--    1164,  1167,  1170,  1174,  1178,  1182,  1185,  1189,  1193,  1195,
--    1199,  1203,  1207,  1211,  1212,  1217,  1219,  1222,  1224,  1226,
--    1228,  1230,  1232,  1233,  1235,  1248,  1249,  1253,  1255,  1267,
--    1268,  1269,  1276,  1277,  1278,  1286,  1287,  1289,  1307,  1315,
--    1333,  1350,  1352,  1354,  1356,  1358,  1360,  1362,  1364,  1366,
--    1369,  1372,  1375,  1378,  1381,  1384,  1387,  1390,  1393,  1396,
--    1400,  1404,  1406,  1409,  1412,  1414,  1417,  1420,  1423,  1425,
--    1428,  1429,  1431,  1432,  1434,  1435,  1438,  1439,  1443,  1445,
--    1449,  1451,  1455,  1457,  1463,  1465,  1467,  1468,  1471,  1472,
--    1475,  1476,  1479,  1480,  1483,  1485,  1486,  1488,  1492,  1497,
--    1502,  1507,  1511,  1515,  1522,  1529,  1533,  1536,  1537,  1541,
--    1542,  1546,  1548,  1549,  1553,  1555,  1557,  1559,  1560,  1564,
--    1566,  1575,  1576,  1580,  1582,  1585,  1587,  1589,  1592,  1595,
--    1598,  1603,  1607,  1611,  1612,  1614,  1615,  1619,  1622,  1624,
--    1629,  1632,  1635,  1637,  1639,  1642,  1644,  1646,  1649,  1652,
--    1656,  1658,  1660,  1662,  1665,  1668,  1670,  1672,  1674,  1676,
--    1678,  1680,  1682,  1684,  1686,  1688,  1690,  1692,  1694,  1696,
--    1700,  1701,  1706,  1707,  1709
--};
--
--/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
--static const yytype_int16 yyrhs[] =
--{
--     175,     0,    -1,   176,    -1,   175,   176,    -1,    -1,   177,
--     178,    -1,   269,    -1,   255,    -1,   262,    -1,   192,    -1,
--     291,    -1,   279,    -1,   283,    -1,   284,    -1,   200,    -1,
--     230,    -1,   222,    -1,   226,    -1,   239,    -1,   180,    -1,
--     184,    -1,   188,    -1,   243,    -1,   247,    -1,   251,    -1,
--     292,    -1,   293,    -1,   306,    -1,   308,    -1,   309,    -1,
--     310,    -1,   311,    -1,   312,    -1,   313,    -1,   314,    -1,
--     315,    -1,   317,    -1,   318,    -1,   328,    -1,   332,    -1,
--     210,    -1,   212,    -1,   196,    -1,   179,    -1,   234,    -1,
--     238,    -1,   218,    -1,   358,    -1,   364,    -1,   361,    -1,
--     204,    -1,   357,    -1,   335,    -1,   392,    -1,   416,    -1,
--     294,    -1,     5,   181,    -1,    36,    -1,   152,   182,   153,
--      -1,   183,    -1,   182,   154,   183,    -1,   138,   155,    36,
--      -1,     6,   185,    -1,    36,    -1,   152,   186,   153,    -1,
--     187,    -1,   186,   154,   187,    -1,   138,   155,    36,    -1,
--       7,   189,    -1,    36,    -1,   152,   190,   153,    -1,   191,
--      -1,   190,   154,   191,    -1,   138,   155,    36,    -1,     8,
--     193,    -1,    34,    -1,   152,   194,   153,    -1,   195,    -1,
--     194,   154,   195,    -1,   138,   155,    34,    -1,     9,   197,
--     333,    -1,    34,    -1,   152,   198,   153,    -1,   199,    -1,
--     198,   154,   199,    -1,   138,   155,    34,    -1,     3,   201,
--      -1,    34,   106,    -1,   152,   202,   153,    -1,   203,    -1,
--     202,   154,   203,    -1,   138,   155,   381,    -1,   151,   155,
--     106,    -1,   121,   351,   205,   397,   206,    -1,    -1,   152,
--     351,   153,    -1,   156,   207,   157,   158,    -1,   208,    -1,
--     207,   208,    -1,   234,    -1,   238,    -1,   209,    -1,   294,
--      -1,   122,   333,    -1,    -1,    30,   424,   397,   211,   214,
--      -1,    -1,   363,    30,   424,   397,   213,   214,    -1,   156,
--     215,   157,   158,    -1,   216,    -1,   215,   216,    -1,   234,
--      -1,   238,    -1,   294,    -1,   307,    -1,    51,   333,    -1,
--      52,   333,    -1,   303,    -1,   335,    -1,   217,    -1,    97,
--     420,    34,   152,   405,   153,   394,   426,   397,   389,   158,
--     327,   403,   402,    -1,    -1,   109,    34,   219,   220,   158,
--      -1,    -1,   156,   221,   157,    -1,   179,    -1,   221,   179,
--      -1,    -1,   111,   223,   156,   224,   157,    -1,   225,    -1,
--     224,   225,    -1,    34,    -1,   112,   227,    -1,    34,    -1,
--     152,   228,   153,    -1,   229,    -1,   228,   154,   229,    -1,
--     138,   155,   381,    -1,    -1,   110,   231,   156,   232,   157,
--      -1,   233,    -1,   232,   233,    -1,    34,    -1,    -1,    32,
--     152,   235,   237,   153,    -1,    34,    -1,   159,    34,    -1,
--     236,    95,    34,    -1,   236,    95,   159,    34,    -1,   236,
--      -1,   339,   160,   339,    -1,    33,    -1,   113,   240,   397,
--      -1,    -1,    36,    -1,   152,   241,   153,    -1,   242,    -1,
--     241,   154,   242,    -1,   145,   155,    36,    -1,   137,   155,
--      36,    -1,   143,   155,    36,    -1,   144,   155,    36,    -1,
--     128,   244,    -1,   277,    -1,   152,   245,   153,    -1,   246,
--      -1,   245,   154,   246,    -1,   138,   155,   277,    -1,   129,
--     248,    -1,   277,    -1,   152,   249,   153,    -1,   250,    -1,
--     249,   154,   250,    -1,   138,   155,   277,    -1,   131,   252,
--      -1,   351,    -1,   152,   253,   153,    -1,   254,    -1,   253,
--     154,   254,    -1,   138,   155,   351,    -1,    62,   256,   259,
--      -1,   277,    -1,   152,   257,   153,    -1,   258,    -1,   257,
--     154,   258,    -1,   138,   155,   277,    -1,    -1,   156,   260,
--     157,   158,    -1,   261,    -1,   260,   261,    -1,   234,    -1,
--     238,    -1,   323,    -1,    63,   263,   266,    -1,   277,    -1,
--     152,   264,   153,    -1,   265,    -1,   264,   154,   265,    -1,
--     138,   155,   277,    -1,    -1,   156,   267,   157,   158,    -1,
--     268,    -1,   267,   268,    -1,   234,    -1,   238,    -1,   323,
--      -1,    60,   270,   274,    -1,    61,   277,   278,    -1,    -1,
--     277,   271,   278,    -1,   152,   272,   153,    -1,   273,    -1,
--     272,   154,   273,    -1,   135,   155,    36,    -1,   136,   155,
--      36,    -1,   138,   155,   277,    -1,   146,   155,   354,    -1,
--     147,   155,   354,    -1,   148,   155,   354,    -1,   149,   155,
--     354,    -1,   150,   155,    34,    -1,   151,   155,   106,    -1,
--      -1,   156,   275,   157,   158,    -1,   276,    -1,   275,   276,
--      -1,   234,    -1,   238,    -1,   319,    -1,   323,    -1,    34,
--      -1,    35,    -1,    -1,   106,    -1,    54,   280,    -1,    35,
--      -1,   152,   281,   153,    -1,   282,    -1,   281,   154,   282,
--      -1,   138,   155,    35,    -1,   139,   155,   354,    -1,    55,
--      35,    -1,    56,   285,    -1,    35,    -1,   152,   286,   153,
--      -1,   287,    -1,   286,   154,   287,    -1,   138,   155,    35,
--      -1,    -1,    17,   333,    -1,    -1,    18,   333,    -1,    -1,
--      19,   333,    -1,    29,   333,    -1,    57,   333,    -1,    58,
--     333,    -1,    59,   333,    -1,    38,   333,    -1,    39,   333,
--      -1,    40,   333,    -1,    41,   333,    -1,    42,   333,    -1,
--      43,   333,    -1,    44,   333,    -1,    45,   333,    -1,    50,
--     333,    -1,    46,   333,    -1,    23,   333,    -1,    26,   333,
--      -1,    27,   333,    -1,    20,   333,    -1,    21,   333,    -1,
--      22,   333,    -1,    24,   333,    -1,    25,   333,    -1,    28,
--     333,    -1,    10,   333,    -1,    11,   333,    -1,    11,   333,
--      -1,    13,   333,    -1,    14,   333,    -1,     4,   320,    -1,
--     152,   321,   153,    -1,   322,    -1,   321,   154,   322,    -1,
--     141,   155,    36,    -1,    12,   324,   333,    -1,    -1,    36,
--      -1,   152,   325,   153,    -1,   326,    -1,   325,   154,   326,
--      -1,   132,   155,    36,    -1,   143,   155,    36,    -1,    -1,
--     323,    -1,    15,   329,   333,    -1,    34,    -1,   152,   330,
--     153,    -1,   331,    -1,   330,   154,   331,    -1,   134,   155,
--      34,    -1,   140,   155,   106,    -1,    16,    35,   338,   333,
--      -1,   334,    33,    -1,    31,    -1,   334,    31,    -1,    -1,
--      91,   337,   339,   397,   336,   156,   340,   157,   158,    -1,
--      -1,    64,    -1,    65,    -1,    -1,    35,    -1,    -1,    34,
--      -1,    -1,   341,    -1,   342,    -1,   341,   342,    -1,   234,
--      -1,   238,    -1,    34,   344,   397,   343,    -1,    -1,   154,
--      -1,    -1,   155,   349,    -1,    -1,   155,   346,    -1,   349,
--      -1,   346,   347,   349,    -1,   160,    -1,   161,    -1,   162,
--      -1,   163,    -1,   164,    -1,   165,    -1,    -1,   159,    -1,
--     166,    -1,   160,    -1,   161,    -1,   162,    -1,   164,    -1,
--     350,   348,   355,    -1,    -1,   152,   351,   153,    -1,    94,
--     352,    -1,   352,    -1,   353,    -1,   352,    94,   353,    -1,
--      34,    -1,   115,    -1,   116,    -1,   351,    -1,   424,   152,
--     356,   153,    -1,   107,    -1,   106,    -1,   354,    -1,   117,
--      -1,    36,    -1,   114,    -1,    -1,   346,    -1,   356,   154,
--     346,    -1,   108,   420,    34,   397,   158,   327,    -1,   108,
--     420,   152,   162,    34,   153,   152,   425,   153,   397,   158,
--     327,    -1,    -1,    -1,    65,   351,   359,   367,   397,   360,
--     371,   158,    -1,    -1,   363,   362,   364,    -1,   125,   167,
--     425,   168,    -1,    -1,    -1,    64,   351,   365,   367,   397,
--     366,   371,   158,    -1,    -1,   169,   368,    -1,   369,    -1,
--     368,   154,   369,    -1,   370,   351,    -1,    -1,    66,    -1,
--      67,    -1,    68,    -1,    -1,   156,   372,   157,    -1,    -1,
--     373,    -1,   372,   373,    -1,   234,    -1,   238,    -1,   218,
--      -1,   358,    -1,   364,    -1,   361,    -1,   204,    -1,   357,
--      -1,   335,    -1,   374,    -1,   323,    -1,   307,    -1,   294,
--      -1,   295,    -1,   296,    -1,   297,    -1,   298,    -1,   299,
--      -1,   300,    -1,   301,    -1,   302,    -1,   303,    -1,   304,
--      -1,   305,    -1,   316,    -1,   384,    -1,   383,    -1,   408,
--      -1,    53,   333,    -1,    52,   333,    -1,    51,   333,    -1,
--      66,   382,   169,    -1,    67,   382,   169,    -1,    68,   382,
--     169,    -1,    69,   169,    -1,   130,   375,   378,    -1,   152,
--     376,   153,    -1,   377,    -1,   376,   154,   377,    -1,   133,
--     155,    34,    -1,   138,   155,   381,    -1,   142,   155,    34,
--      -1,    -1,   156,   379,   157,   158,    -1,   380,    -1,   379,
--     380,    -1,   234,    -1,   238,    -1,   323,    -1,    34,    -1,
--      36,    -1,    -1,    71,    -1,   391,   166,    34,   152,   153,
--     426,   396,   397,   158,   403,   402,   404,    -1,    -1,   124,
--     385,   386,    -1,   386,    -1,    34,   152,   405,   153,   426,
--     397,   387,   158,   327,   403,   402,    -1,    -1,    -1,   170,
--     388,   152,   405,   153,   171,    -1,    -1,    -1,   170,   390,
--     420,   152,   405,   153,   171,    -1,    -1,    90,    -1,   420,
--      34,   152,   405,   153,   394,   395,   426,   396,   397,   389,
--     158,   327,   403,   402,   404,   401,    -1,   420,   118,   155,
--     152,   420,   153,   158,    -1,   420,   118,   393,   152,   405,
--     153,   394,   395,   426,   396,   397,   389,   158,   403,   402,
--     404,   401,    -1,   118,   420,   152,   405,   153,   394,   395,
--     426,   396,   397,   389,   158,   403,   402,   404,   401,    -1,
--     161,    -1,   160,    -1,   162,    -1,   163,    -1,   172,    -1,
--     164,    -1,   165,    -1,   173,    -1,   167,   167,    -1,   168,
--     168,    -1,   161,   155,    -1,   160,   155,    -1,   162,   155,
--      -1,   163,   155,    -1,   172,   155,    -1,   164,   155,    -1,
--     165,   155,    -1,   173,   155,    -1,   167,   167,   155,    -1,
--     168,   168,   155,    -1,   166,    -1,   152,   153,    -1,   170,
--     171,    -1,   167,    -1,   167,   155,    -1,   155,   155,    -1,
--     159,   155,    -1,   168,    -1,   168,   155,    -1,    -1,    96,
--      -1,    -1,   126,    -1,    -1,   155,   106,    -1,    -1,   163,
--     398,   163,    -1,   399,    -1,   398,   154,   399,    -1,    34,
--      -1,    34,   155,   400,    -1,   277,    -1,    34,   169,   278,
--     160,   278,    -1,    36,    -1,   106,    -1,    -1,    47,   333,
--      -1,    -1,    48,   333,    -1,    -1,    49,   333,    -1,    -1,
--      37,   333,    -1,   406,    -1,    -1,   407,    -1,   406,   154,
--     407,    -1,    98,   339,   397,   345,    -1,    99,   339,   397,
--     345,    -1,   100,   339,   397,   345,    -1,   101,   339,   397,
--      -1,   102,   339,   397,    -1,   103,   152,   405,   153,   339,
--     397,    -1,   104,   152,   405,   153,   339,   397,    -1,   120,
--     339,   397,    -1,   421,   345,    -1,    -1,    70,   409,   411,
--      -1,    -1,    72,   410,   411,    -1,   411,    -1,    -1,    97,
--     412,   413,    -1,   413,    -1,   414,    -1,   416,    -1,    -1,
--      90,   415,   392,    -1,   392,    -1,   420,    34,   397,   417,
--     158,   288,   289,   290,    -1,    -1,   156,   418,   157,    -1,
--     419,    -1,   418,   419,    -1,   234,    -1,   238,    -1,    17,
--     333,    -1,    18,   333,    -1,    19,   333,    -1,    96,   424,
--     423,   422,    -1,   424,   423,   422,    -1,   420,   339,   397,
--      -1,    -1,   164,    -1,    -1,   423,   162,    96,    -1,   423,
--     162,    -1,   351,    -1,   351,   167,   425,   168,    -1,    65,
--     351,    -1,    93,    74,    -1,    74,    -1,    93,    -1,    93,
--      75,    -1,    75,    -1,    76,    -1,    93,    76,    -1,    76,
--      76,    -1,    93,    76,    76,    -1,    77,    -1,    78,    -1,
--      73,    -1,    92,    79,    -1,    93,    79,    -1,    79,    -1,
--      80,    -1,    81,    -1,    82,    -1,    83,    -1,    84,    -1,
--      85,    -1,    86,    -1,    87,    -1,    88,    -1,    89,    -1,
--     105,    -1,   127,    -1,   420,    -1,   425,   154,   420,    -1,
--      -1,   119,   152,   427,   153,    -1,    -1,   351,    -1,   427,
--     154,   351,    -1
--};
--
--/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
- static const yytype_uint16 yyrline[] =
- {
-        0,   576,   576,   577,   580,   580,   599,   600,   601,   602,
-@@ -1225,7 +1025,7 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+#if YYDEBUG || YYERROR_VERBOSE || 0
- /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
-@@ -1268,7 +1068,7 @@
-   "TK_CALLSUPERINIT", "TK_DEFERRORHANDLER", "TK_VERSION", "'('", "')'",
-   "','", "'='", "'{'", "'}'", "';'", "'!'", "'-'", "'+'", "'*'", "'/'",
-   "'&'", "'|'", "'~'", "'<'", "'>'", "':'", "'['", "']'", "'%'", "'^'",
--  "$accept", "specification", "statement", "@1", "modstatement",
-+  "$accept", "specification", "statement", "$@1", "modstatement",
-   "nsstatement", "defdocstringfmt", "defdocstringfmt_args",
-   "defdocstringfmt_arg_list", "defdocstringfmt_arg", "defdocstringsig",
-   "defdocstringsig_args", "defdocstringsig_arg_list",
-@@ -1278,13 +1078,13 @@
-   "veh_arg_list", "veh_arg", "api", "api_args", "api_arg_list", "api_arg",
-   "exception", "baseexception", "exception_body",
-   "exception_body_directives", "exception_body_directive", "raisecode",
--  "mappedtype", "@2", "mappedtypetmpl", "@3", "mtdefinition", "mtbody",
--  "mtline", "mtfunction", "namespace", "@4", "optnsbody", "nsbody",
--  "platforms", "@5", "platformlist", "platform", "feature", "feature_args",
--  "feature_arg_list", "feature_arg", "timeline", "@6", "qualifierlist",
--  "qualifiername", "ifstart", "@7", "oredqualifiers", "qualifiers",
--  "ifend", "license", "license_args", "license_arg_list", "license_arg",
--  "defmetatype", "defmetatype_args", "defmetatype_arg_list",
-+  "mappedtype", "$@2", "mappedtypetmpl", "$@3", "mtdefinition", "mtbody",
-+  "mtline", "mtfunction", "namespace", "$@4", "optnsbody", "nsbody",
-+  "platforms", "$@5", "platformlist", "platform", "feature",
-+  "feature_args", "feature_arg_list", "feature_arg", "timeline", "$@6",
-+  "qualifierlist", "qualifiername", "ifstart", "$@7", "oredqualifiers",
-+  "qualifiers", "ifend", "license", "license_args", "license_arg_list",
-+  "license_arg", "defmetatype", "defmetatype_args", "defmetatype_arg_list",
-   "defmetatype_arg", "defsupertype", "defsupertype_args",
-   "defsupertype_arg_list", "defsupertype_arg", "hiddenns", "hiddenns_args",
-   "hiddenns_arg_list", "hiddenns_arg", "consmodule", "consmodule_args",
-@@ -1292,7 +1092,7 @@
-   "consmodule_body_directives", "consmodule_body_directive", "compmodule",
-   "compmodule_args", "compmodule_arg_list", "compmodule_arg",
-   "compmodule_body", "compmodule_body_directives",
--  "compmodule_body_directive", "module", "module_args", "@8",
-+  "compmodule_body_directive", "module", "module_args", "$@8",
-   "module_arg_list", "module_arg", "module_body", "module_body_directives",
-   "module_body_directive", "dottedname", "optnumber", "include",
-   "include_args", "include_arg_list", "include_arg", "optinclude",
-@@ -1307,31 +1107,31 @@
-   "autopyname_args", "autopyname_arg_list", "autopyname_arg", "docstring",
-   "docstring_args", "docstring_arg_list", "docstring_arg", "optdocstring",
-   "extract", "extract_args", "extract_arg_list", "extract_arg", "makefile",
--  "codeblock", "codelines", "enum", "@9", "optenumkey", "optfilename",
-+  "codeblock", "codelines", "enum", "$@9", "optenumkey", "optfilename",
-   "optname", "optenumbody", "enumbody", "enumline", "optcomma",
-   "optenumassign", "optassign", "expr", "binop", "optunop", "value",
-   "optcast", "scopedname", "scopednamehead", "scopepart", "bool_value",
--  "simplevalue", "exprlist", "typedef", "struct", "@10", "@11",
--  "classtmpl", "@12", "template", "class", "@13", "@14", "superclasses",
-+  "simplevalue", "exprlist", "typedef", "struct", "$@10", "$@11",
-+  "classtmpl", "$@12", "template", "class", "$@13", "$@14", "superclasses",
-   "superlist", "superclass", "class_access", "optclassbody", "classbody",
-   "classline", "property", "property_args", "property_arg_list",
-   "property_arg", "property_body", "property_body_directives",
-   "property_body_directive", "name_or_string", "optslot", "dtor", "ctor",
--  "@15", "simplector", "optctorsig", "@16", "optsig", "@17", "optvirtual",
--  "function", "operatorname", "optconst", "optfinal", "optabstract",
--  "optflags", "flaglist", "flag", "flagvalue", "virtualcallcode",
--  "methodcode", "premethodcode", "virtualcatchercode", "arglist",
--  "rawarglist", "argvalue", "varmember", "@18", "@19", "simple_varmem",
--  "@20", "varmem", "member", "@21", "variable", "variable_body",
--  "variable_body_directives", "variable_body_directive", "cpptype",
--  "argtype", "optref", "deref", "basetype", "cpptypelist", "optexceptions",
--  "exceptionlist", 0
-+  "$@15", "simplector", "optctorsig", "$@16", "optsig", "$@17",
-+  "optvirtual", "function", "operatorname", "optconst", "optfinal",
-+  "optabstract", "optflags", "flaglist", "flag", "flagvalue",
-+  "virtualcallcode", "methodcode", "premethodcode", "virtualcatchercode",
-+  "arglist", "rawarglist", "argvalue", "varmember", "$@18", "$@19",
-+  "simple_varmem", "$@20", "varmem", "member", "$@21", "variable",
-+  "variable_body", "variable_body_directives", "variable_body_directive",
-+  "cpptype", "argtype", "optref", "deref", "basetype", "cpptypelist",
-+  "optexceptions", "exceptionlist", YY_NULLPTR
- };
- #endif
- 
- # ifdef YYPRINT
--/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
--   token YYLEX-NUM.  */
-+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-+   (internal) symbol number NUM (which must be that of a token).  */
- static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-@@ -1355,282 +1155,18 @@
- };
- # endif
- 
--/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const yytype_uint16 yyr1[] =
--{
--       0,   174,   175,   175,   177,   176,   178,   178,   178,   178,
--     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
--     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
--     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
--     178,   178,   178,   178,   179,   179,   179,   179,   179,   179,
--     179,   179,   179,   179,   179,   179,   180,   181,   181,   182,
--     182,   183,   184,   185,   185,   186,   186,   187,   188,   189,
--     189,   190,   190,   191,   192,   193,   193,   194,   194,   195,
--     196,   197,   197,   198,   198,   199,   200,   201,   201,   202,
--     202,   203,   203,   204,   205,   205,   206,   207,   207,   208,
--     208,   208,   208,   209,   211,   210,   213,   212,   214,   215,
--     215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
--     217,   219,   218,   220,   220,   221,   221,   223,   222,   224,
--     224,   225,   226,   227,   227,   228,   228,   229,   231,   230,
--     232,   232,   233,   235,   234,   236,   236,   236,   236,   237,
--     237,   238,   239,   240,   240,   240,   241,   241,   242,   242,
--     242,   242,   243,   244,   244,   245,   245,   246,   247,   248,
--     248,   249,   249,   250,   251,   252,   252,   253,   253,   254,
--     255,   256,   256,   257,   257,   258,   259,   259,   260,   260,
--     261,   261,   261,   262,   263,   263,   264,   264,   265,   266,
--     266,   267,   267,   268,   268,   268,   269,   269,   271,   270,
--     270,   272,   272,   273,   273,   273,   273,   273,   273,   273,
--     273,   273,   274,   274,   275,   275,   276,   276,   276,   276,
--     277,   277,   278,   278,   279,   280,   280,   281,   281,   282,
--     282,   283,   284,   285,   285,   286,   286,   287,   288,   288,
--     289,   289,   290,   290,   291,   292,   293,   294,   295,   296,
--     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
--     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
--     317,   318,   319,   320,   321,   321,   322,   323,   324,   324,
--     324,   325,   325,   326,   326,   327,   327,   328,   329,   329,
--     330,   330,   331,   331,   332,   333,   334,   334,   336,   335,
--     337,   337,   337,   338,   338,   339,   339,   340,   340,   341,
--     341,   342,   342,   342,   343,   343,   344,   344,   345,   345,
--     346,   346,   347,   347,   347,   347,   347,   347,   348,   348,
--     348,   348,   348,   348,   348,   349,   350,   350,   351,   351,
--     352,   352,   353,   354,   354,   355,   355,   355,   355,   355,
--     355,   355,   355,   356,   356,   356,   357,   357,   359,   360,
--     358,   362,   361,   363,   365,   366,   364,   367,   367,   368,
--     368,   369,   370,   370,   370,   370,   371,   371,   372,   372,
--     372,   373,   373,   373,   373,   373,   373,   373,   373,   373,
--     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
--     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
--     373,   373,   373,   373,   373,   373,   374,   375,   376,   376,
--     377,   377,   377,   378,   378,   379,   379,   380,   380,   380,
--     381,   381,   382,   382,   383,   385,   384,   384,   386,   387,
--     388,   387,   389,   390,   389,   391,   391,   392,   392,   392,
--     392,   393,   393,   393,   393,   393,   393,   393,   393,   393,
--     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
--     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
--     394,   394,   395,   395,   396,   396,   397,   397,   398,   398,
--     399,   399,   400,   400,   400,   400,   401,   401,   402,   402,
--     403,   403,   404,   404,   405,   406,   406,   406,   407,   407,
--     407,   407,   407,   407,   407,   407,   407,   409,   408,   410,
--     408,   408,   412,   411,   411,   413,   413,   415,   414,   414,
--     416,   417,   417,   418,   418,   419,   419,   419,   419,   419,
--     420,   420,   421,   422,   422,   423,   423,   423,   424,   424,
--     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
--     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
--     424,   424,   424,   424,   424,   424,   424,   424,   425,   425,
--     426,   426,   427,   427,   427
--};
-+#define YYPACT_NINF -848
- 
--/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const yytype_uint8 yyr2[] =
--{
--       0,     2,     1,     2,     0,     2,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     2,     1,     3,     1,
--       3,     3,     2,     1,     3,     1,     3,     3,     2,     1,
--       3,     1,     3,     3,     2,     1,     3,     1,     3,     3,
--       3,     1,     3,     1,     3,     3,     2,     2,     3,     1,
--       3,     3,     3,     5,     0,     3,     4,     1,     2,     1,
--       1,     1,     1,     2,     0,     5,     0,     6,     4,     1,
--       2,     1,     1,     1,     1,     2,     2,     1,     1,     1,
--      14,     0,     5,     0,     3,     1,     2,     0,     5,     1,
--       2,     1,     2,     1,     3,     1,     3,     3,     0,     5,
--       1,     2,     1,     0,     5,     1,     2,     3,     4,     1,
--       3,     1,     3,     0,     1,     3,     1,     3,     3,     3,
--       3,     3,     2,     1,     3,     1,     3,     3,     2,     1,
--       3,     1,     3,     3,     2,     1,     3,     1,     3,     3,
--       3,     1,     3,     1,     3,     3,     0,     4,     1,     2,
--       1,     1,     1,     3,     1,     3,     1,     3,     3,     0,
--       4,     1,     2,     1,     1,     1,     3,     3,     0,     3,
--       3,     1,     3,     3,     3,     3,     3,     3,     3,     3,
--       3,     3,     0,     4,     1,     2,     1,     1,     1,     1,
--       1,     1,     0,     1,     2,     1,     3,     1,     3,     3,
--       3,     2,     2,     1,     3,     1,     3,     3,     0,     2,
--       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
--       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
--       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
--       2,     2,     2,     3,     1,     3,     3,     3,     0,     1,
--       3,     1,     3,     3,     3,     0,     1,     3,     1,     3,
--       1,     3,     3,     3,     4,     2,     1,     2,     0,     9,
--       0,     1,     1,     0,     1,     0,     1,     0,     1,     1,
--       2,     1,     1,     4,     0,     1,     0,     2,     0,     2,
--       1,     3,     1,     1,     1,     1,     1,     1,     0,     1,
--       1,     1,     1,     1,     1,     3,     0,     3,     2,     1,
--       1,     3,     1,     1,     1,     1,     4,     1,     1,     1,
--       1,     1,     1,     0,     1,     3,     6,    12,     0,     0,
--       8,     0,     3,     4,     0,     0,     8,     0,     2,     1,
--       3,     2,     0,     1,     1,     1,     0,     3,     0,     1,
--       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
--       2,     2,     3,     3,     3,     2,     3,     3,     1,     3,
--       3,     3,     3,     0,     4,     1,     2,     1,     1,     1,
--       1,     1,     0,     1,    12,     0,     3,     1,    11,     0,
--       0,     6,     0,     0,     7,     0,     1,    17,     7,    17,
--      16,     1,     1,     1,     1,     1,     1,     1,     1,     2,
--       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
--       3,     1,     2,     2,     1,     2,     2,     2,     1,     2,
--       0,     1,     0,     1,     0,     2,     0,     3,     1,     3,
--       1,     3,     1,     5,     1,     1,     0,     2,     0,     2,
--       0,     2,     0,     2,     1,     0,     1,     3,     4,     4,
--       4,     3,     3,     6,     6,     3,     2,     0,     3,     0,
--       3,     1,     0,     3,     1,     1,     1,     0,     3,     1,
--       8,     0,     3,     1,     2,     1,     1,     2,     2,     2,
--       4,     3,     3,     0,     1,     0,     3,     2,     1,     4,
--       2,     2,     1,     1,     2,     1,     1,     2,     2,     3,
--       1,     1,     1,     2,     2,     1,     1,     1,     1,     1,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
--       0,     4,     0,     1,     3
--};
-+#define yypact_value_is_default(Yystate) \
-+  (!!((Yystate) == (-848)))
- 
--/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
--   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
--   means the default is an error.  */
--static const yytype_uint16 yydefact[] =
--{
--       4,     4,     2,     0,     1,     3,     0,     0,     0,     0,
--       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
--       0,     0,     0,     0,     0,     0,     0,     0,   151,   352,
--       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
--       0,     0,   572,   562,   565,   566,   570,   571,   575,   576,
--     577,   578,   579,   580,   581,   582,   583,   584,   585,   310,
--       0,   563,     0,     0,   586,     0,     0,   138,   127,     0,
--     153,     0,     0,     0,   587,     0,     0,     0,     5,    43,
--      19,    20,    21,     9,    42,    14,    50,    40,    41,    46,
--      16,    17,    15,    44,    45,    18,    22,    23,    24,     7,
--       8,     6,    11,    12,    13,    10,    25,    26,    55,    27,
--      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
--      38,    39,    52,   558,   349,   350,    51,    47,    49,   371,
--      48,    53,    54,     0,   555,     0,     0,    86,    57,     0,
--      56,    63,     0,    62,    69,     0,    68,    75,     0,    74,
--      81,     0,     0,   306,   277,     0,   278,   280,   281,   298,
--       0,     0,   313,   271,   272,   273,   274,   275,   269,   276,
--     254,     0,   496,   143,   235,     0,   234,   241,   243,     0,
--     242,   255,   256,   257,   230,   231,     0,   222,   208,   232,
--       0,   186,   181,     0,   199,   194,   374,   368,   568,   311,
--     312,   315,   573,   561,   564,   567,   574,   348,   555,     0,
--     121,     0,     0,   133,     0,   132,   154,     0,   496,     0,
--      94,     0,     0,   162,   163,     0,   168,   169,     0,   174,
--     175,     0,     0,     0,     0,   496,     0,   553,    87,     0,
--       0,     0,    89,     0,     0,    59,     0,     0,    65,     0,
--       0,    71,     0,     0,    77,     0,     0,    83,    80,   307,
--     305,     0,     0,     0,   300,   297,   314,     0,   560,     0,
--     104,   315,     0,     0,     0,   237,     0,     0,   245,     0,
--       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
--       0,   206,   232,   233,   207,     0,     0,   183,     0,   180,
--       0,     0,   196,     0,   193,   377,   377,   316,   496,   569,
--     553,   496,     0,   123,     0,     0,     0,     0,   135,     0,
--       0,     0,     0,     0,   156,   152,   515,     0,   496,   588,
--       0,     0,     0,   165,     0,     0,   171,     0,     0,   177,
--       0,   351,   496,   372,   515,   541,     0,     0,     0,   462,
--     461,   463,   464,   466,   467,   481,   484,   488,     0,   465,
--     468,     0,   557,   554,   551,     0,     0,    88,     0,     0,
--      58,     0,     0,    64,     0,     0,    70,     0,     0,    76,
--       0,     0,    82,     0,     0,     0,   299,     0,   304,   500,
--       0,   498,     0,   145,     0,   149,     0,     0,     0,     0,
--     236,     0,     0,   244,     0,     0,     0,     0,     0,     0,
--       0,     0,     0,     0,   210,     0,     0,   288,   226,   227,
--       0,   224,   228,   229,   209,     0,   182,     0,   190,   191,
--       0,   188,   192,     0,   195,     0,   203,   204,     0,   201,
--     205,   382,   496,   496,   308,   550,     0,     0,     0,     0,
--     142,     0,   140,   131,     0,   129,     0,   134,     0,     0,
--       0,     0,     0,   155,     0,   315,   315,   315,   315,   315,
--       0,     0,   315,     0,   514,   516,   315,   328,     0,     0,
--       0,   373,     0,   164,     0,     0,   170,     0,     0,   176,
--       0,   559,   106,     0,     0,     0,   482,     0,   486,   487,
--     472,   471,   473,   474,   476,   477,   485,   469,   489,   470,
--     483,   475,   478,   515,   556,   440,   441,    91,    92,    90,
--      61,    60,    67,    66,    73,    72,    79,    78,    85,    84,
--     302,   303,   301,     0,     0,   497,     0,   105,   146,     0,
--     144,   315,   239,   353,   354,   240,   238,   247,   246,   213,
--     214,   215,   216,   217,   218,   219,   220,   221,   212,     0,
--     282,   289,     0,     0,     0,   225,   185,   184,     0,   189,
--     198,   197,     0,   202,   383,   384,   385,   378,   379,     0,
--     375,   369,     0,   295,     0,   125,     0,   371,   122,   139,
--     141,   128,   130,   137,   136,   159,   160,   161,   158,   157,
--     496,   496,   496,   496,   496,   515,   515,   496,   490,     0,
--     496,   346,   526,    95,     0,    93,   589,   167,   166,   173,
--     172,   179,   178,     0,   490,     0,     0,     0,   545,   546,
--       0,   543,   248,     0,   479,   480,     0,   230,   504,   505,
--     502,   501,   499,     0,     0,     0,     0,     0,     0,   109,
--     119,   111,   112,   113,   117,   114,   118,   147,     0,   150,
--       0,     0,   284,     0,     0,     0,   291,   287,   223,   187,
--     200,   382,   381,   386,   386,   317,   296,   366,     0,   124,
--     126,   328,   328,   328,   521,   522,     0,     0,   525,   491,
--     492,   517,   552,     0,   329,   330,   338,     0,     0,    97,
--     101,    99,   100,   102,   107,   492,   547,   548,   549,   542,
--     544,     0,   250,     0,   490,   232,   270,   266,   115,   116,
--       0,     0,   110,   148,     0,   283,     0,     0,     0,   290,
--       0,   380,   388,     0,     0,   326,   321,   322,     0,   318,
--     319,     0,   518,   519,   520,   315,   315,   493,   590,     0,
--     332,   333,   334,   335,   336,   337,   346,   339,   341,   342,
--     343,   344,   340,     0,   103,     0,    98,   590,   249,     0,
--     252,   458,   492,     0,     0,   108,   286,   285,   293,   294,
--     292,     0,     0,   352,     0,     0,     0,     0,     0,     0,
--       0,     0,     0,     0,     0,     0,   442,   442,   442,     0,
--     527,   529,   537,   532,   445,     0,   397,   393,   391,   392,
--     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
--     413,   414,   402,   415,   401,   399,   398,   394,   396,   395,
--     455,   389,   400,   417,   416,   447,     0,   539,   418,   531,
--     534,   535,   536,   376,   370,   346,   496,     0,   320,     0,
--     496,   496,     0,   494,   347,   331,   361,   358,   357,   362,
--     360,   355,   359,   345,     0,    96,   494,   251,     0,   540,
--     590,   232,   515,   279,   268,   515,   258,   259,   260,   261,
--     262,   263,   264,   265,   267,   421,   420,   419,   443,     0,
--       0,     0,   425,     0,     0,     0,     0,     0,     0,   433,
--     387,   390,     0,   327,   324,   309,   496,   523,   524,   592,
--       0,   496,   346,   496,   253,   494,   503,     0,     0,   422,
--     423,   424,   537,   528,   530,   538,     0,   533,     0,   446,
--       0,     0,     0,     0,   428,     0,   426,     0,   325,   323,
--       0,   593,     0,   495,   452,   364,     0,   452,   496,   490,
--     590,     0,     0,     0,     0,   427,     0,   437,   438,   439,
--       0,   435,     0,   295,   591,     0,   453,     0,   356,   346,
--       0,   452,   590,   496,   430,   431,   432,   429,     0,   436,
--     590,   367,   594,     0,   510,   365,   295,     0,   496,   449,
--     434,   494,     0,     0,   508,   510,   510,   452,   450,     0,
--     496,   515,   511,     0,   512,   508,   508,     0,     0,   295,
--       0,     0,   509,     0,   506,   512,   512,   295,   515,   510,
--     510,     0,   513,     0,   460,   506,   506,   510,     0,   508,
--     508,   454,   507,   457,   459,   508,     0,   448,   512,   120,
--     451,   444
--};
-+#define YYTABLE_NINF -561
- 
--/* YYDEFGOTO[NTERM-NUM].  */
--static const yytype_int16 yydefgoto[] =
--{
--      -1,     1,     2,     3,    78,    79,    80,   140,   244,   245,
--      81,   143,   247,   248,    82,   146,   250,   251,    83,   149,
--     253,   254,    84,   152,   256,   257,    85,   137,   241,   242,
--      86,   328,   615,   698,   699,   700,    87,   392,    88,   623,
--     537,   648,   649,   650,    89,   313,   449,   586,    90,   212,
--     454,   455,    91,   215,   317,   318,    92,   211,   451,   452,
--      93,   271,   395,   396,    94,    95,   218,   323,   324,    96,
--     223,   332,   333,    97,   226,   335,   336,    98,   229,   338,
--     339,    99,   191,   296,   297,   299,   430,   431,   100,   194,
--     301,   302,   304,   438,   439,   101,   187,   292,   288,   289,
--     291,   420,   421,   188,   294,   102,   176,   274,   275,   103,
--     104,   180,   277,   278,   712,   770,   869,   105,   106,   107,
--     108,   811,   812,   813,   814,   815,   816,   817,   818,   654,
--     820,   821,   109,   655,   110,   111,   112,   113,   114,   115,
--     116,   117,   823,   118,   119,   422,   560,   661,   662,   676,
--     563,   665,   666,   677,   120,   161,   263,   264,   121,   154,
--     155,   122,   582,   201,   267,   308,   738,   739,   740,   939,
--     846,   612,   694,   756,   763,   695,   696,   123,   124,   125,
--     545,   863,   946,   126,   127,   306,   674,   128,   234,   587,
--     130,   305,   673,   442,   577,   578,   579,   733,   830,   831,
--     832,   899,   933,   934,   936,   960,   961,   517,   889,   833,
--     834,   897,   835,   999,  1008,   967,   983,   836,   837,   361,
--     690,   748,   911,   270,   390,   391,   641,  1024,  1004,   994,
--    1014,   473,   474,   475,   838,   893,   894,   839,   896,   840,
--     841,   895,   842,   495,   630,   631,   476,   477,   364,   237,
--     134,   330,   853,   942
--};
-+#define yytable_value_is_error(Yytable_value) \
-+  0
- 
--/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
--   STATE-NUM.  */
--#define YYPACT_NINF -848
-+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-+     STATE-NUM.  */
- static const yytype_int16 yypact[] =
- {
-     -848,   264,  -848,  1011,  -848,  -848,    67,    30,    64,    89,
-@@ -1740,7 +1276,119 @@
-     -848,  -848
- };
- 
--/* YYPGOTO[NTERM-NUM].  */
-+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-+     Performed when YYTABLE does not specify something else to do.  Zero
-+     means the default is an error.  */
-+static const yytype_uint16 yydefact[] =
-+{
-+       4,     4,     2,     0,     1,     3,     0,     0,     0,     0,
-+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-+       0,     0,     0,     0,     0,     0,     0,     0,   151,   352,
-+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-+       0,     0,   572,   562,   565,   566,   570,   571,   575,   576,
-+     577,   578,   579,   580,   581,   582,   583,   584,   585,   310,
-+       0,   563,     0,     0,   586,     0,     0,   138,   127,     0,
-+     153,     0,     0,     0,   587,     0,     0,     0,     5,    43,
-+      19,    20,    21,     9,    42,    14,    50,    40,    41,    46,
-+      16,    17,    15,    44,    45,    18,    22,    23,    24,     7,
-+       8,     6,    11,    12,    13,    10,    25,    26,    55,    27,
-+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-+      38,    39,    52,   558,   349,   350,    51,    47,    49,   371,
-+      48,    53,    54,     0,   555,     0,     0,    86,    57,     0,
-+      56,    63,     0,    62,    69,     0,    68,    75,     0,    74,
-+      81,     0,     0,   306,   277,     0,   278,   280,   281,   298,
-+       0,     0,   313,   271,   272,   273,   274,   275,   269,   276,
-+     254,     0,   496,   143,   235,     0,   234,   241,   243,     0,
-+     242,   255,   256,   257,   230,   231,     0,   222,   208,   232,
-+       0,   186,   181,     0,   199,   194,   374,   368,   568,   311,
-+     312,   315,   573,   561,   564,   567,   574,   348,   555,     0,
-+     121,     0,     0,   133,     0,   132,   154,     0,   496,     0,
-+      94,     0,     0,   162,   163,     0,   168,   169,     0,   174,
-+     175,     0,     0,     0,     0,   496,     0,   553,    87,     0,
-+       0,     0,    89,     0,     0,    59,     0,     0,    65,     0,
-+       0,    71,     0,     0,    77,     0,     0,    83,    80,   307,
-+     305,     0,     0,     0,   300,   297,   314,     0,   560,     0,
-+     104,   315,     0,     0,     0,   237,     0,     0,   245,     0,
-+       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
-+       0,   206,   232,   233,   207,     0,     0,   183,     0,   180,
-+       0,     0,   196,     0,   193,   377,   377,   316,   496,   569,
-+     553,   496,     0,   123,     0,     0,     0,     0,   135,     0,
-+       0,     0,     0,     0,   156,   152,   515,     0,   496,   588,
-+       0,     0,     0,   165,     0,     0,   171,     0,     0,   177,
-+       0,   351,   496,   372,   515,   541,     0,     0,     0,   462,
-+     461,   463,   464,   466,   467,   481,   484,   488,     0,   465,
-+     468,     0,   557,   554,   551,     0,     0,    88,     0,     0,
-+      58,     0,     0,    64,     0,     0,    70,     0,     0,    76,
-+       0,     0,    82,     0,     0,     0,   299,     0,   304,   500,
-+       0,   498,     0,   145,     0,   149,     0,     0,     0,     0,
-+     236,     0,     0,   244,     0,     0,     0,     0,     0,     0,
-+       0,     0,     0,     0,   210,     0,     0,   288,   226,   227,
-+       0,   224,   228,   229,   209,     0,   182,     0,   190,   191,
-+       0,   188,   192,     0,   195,     0,   203,   204,     0,   201,
-+     205,   382,   496,   496,   308,   550,     0,     0,     0,     0,
-+     142,     0,   140,   131,     0,   129,     0,   134,     0,     0,
-+       0,     0,     0,   155,     0,   315,   315,   315,   315,   315,
-+       0,     0,   315,     0,   514,   516,   315,   328,     0,     0,
-+       0,   373,     0,   164,     0,     0,   170,     0,     0,   176,
-+       0,   559,   106,     0,     0,     0,   482,     0,   486,   487,
-+     472,   471,   473,   474,   476,   477,   485,   469,   489,   470,
-+     483,   475,   478,   515,   556,   440,   441,    91,    92,    90,
-+      61,    60,    67,    66,    73,    72,    79,    78,    85,    84,
-+     302,   303,   301,     0,     0,   497,     0,   105,   146,     0,
-+     144,   315,   239,   353,   354,   240,   238,   247,   246,   213,
-+     214,   215,   216,   217,   218,   219,   220,   221,   212,     0,
-+     282,   289,     0,     0,     0,   225,   185,   184,     0,   189,
-+     198,   197,     0,   202,   383,   384,   385,   378,   379,     0,
-+     375,   369,     0,   295,     0,   125,     0,   371,   122,   139,
-+     141,   128,   130,   137,   136,   159,   160,   161,   158,   157,
-+     496,   496,   496,   496,   496,   515,   515,   496,   490,     0,
-+     496,   346,   526,    95,     0,    93,   589,   167,   166,   173,
-+     172,   179,   178,     0,   490,     0,     0,     0,   545,   546,
-+       0,   543,   248,     0,   479,   480,     0,   230,   504,   505,
-+     502,   501,   499,     0,     0,     0,     0,     0,     0,   109,
-+     119,   111,   112,   113,   117,   114,   118,   147,     0,   150,
-+       0,     0,   284,     0,     0,     0,   291,   287,   223,   187,
-+     200,   382,   381,   386,   386,   317,   296,   366,     0,   124,
-+     126,   328,   328,   328,   521,   522,     0,     0,   525,   491,
-+     492,   517,   552,     0,   329,   330,   338,     0,     0,    97,
-+     101,    99,   100,   102,   107,   492,   547,   548,   549,   542,
-+     544,     0,   250,     0,   490,   232,   270,   266,   115,   116,
-+       0,     0,   110,   148,     0,   283,     0,     0,     0,   290,
-+       0,   380,   388,     0,     0,   326,   321,   322,     0,   318,
-+     319,     0,   518,   519,   520,   315,   315,   493,   590,     0,
-+     332,   333,   334,   335,   336,   337,   346,   339,   341,   342,
-+     343,   344,   340,     0,   103,     0,    98,   590,   249,     0,
-+     252,   458,   492,     0,     0,   108,   286,   285,   293,   294,
-+     292,     0,     0,   352,     0,     0,     0,     0,     0,     0,
-+       0,     0,     0,     0,     0,     0,   442,   442,   442,     0,
-+     527,   529,   537,   532,   445,     0,   397,   393,   391,   392,
-+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
-+     413,   414,   402,   415,   401,   399,   398,   394,   396,   395,
-+     455,   389,   400,   417,   416,   447,     0,   539,   418,   531,
-+     534,   535,   536,   376,   370,   346,   496,     0,   320,     0,
-+     496,   496,     0,   494,   347,   331,   361,   358,   357,   362,
-+     360,   355,   359,   345,     0,    96,   494,   251,     0,   540,
-+     590,   232,   515,   279,   268,   515,   258,   259,   260,   261,
-+     262,   263,   264,   265,   267,   421,   420,   419,   443,     0,
-+       0,     0,   425,     0,     0,     0,     0,     0,     0,   433,
-+     387,   390,     0,   327,   324,   309,   496,   523,   524,   592,
-+       0,   496,   346,   496,   253,   494,   503,     0,     0,   422,
-+     423,   424,   537,   528,   530,   538,     0,   533,     0,   446,
-+       0,     0,     0,     0,   428,     0,   426,     0,   325,   323,
-+       0,   593,     0,   495,   452,   364,     0,   452,   496,   490,
-+     590,     0,     0,     0,     0,   427,     0,   437,   438,   439,
-+       0,   435,     0,   295,   591,     0,   453,     0,   356,   346,
-+       0,   452,   590,   496,   430,   431,   432,   429,     0,   436,
-+     590,   367,   594,     0,   510,   365,   295,     0,   496,   449,
-+     434,   494,     0,     0,   508,   510,   510,   452,   450,     0,
-+     496,   515,   511,     0,   512,   508,   508,     0,     0,   295,
-+       0,     0,   509,     0,   506,   512,   512,   295,   515,   510,
-+     510,     0,   513,     0,   460,   506,   506,   510,     0,   508,
-+     508,   454,   507,   457,   459,   508,     0,   448,   512,   120,
-+     451,   444
-+};
-+
-+  /* YYPGOTO[NTERM-NUM].  */
- static const yytype_int16 yypgoto[] =
- {
-     -848,  -848,   761,  -848,  -848,  -397,  -848,  -848,  -848,   427,
-@@ -1771,11 +1419,40 @@
-      -10,  -204,  -732,  -848
- };
- 
--/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
--   positive, shift that token.  If negative, reduce the rule which
--   number is the opposite.  If zero, do what YYDEFACT says.
--   If YYTABLE_NINF, syntax error.  */
--#define YYTABLE_NINF -561
-+  /* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int16 yydefgoto[] =
-+{
-+      -1,     1,     2,     3,    78,    79,    80,   140,   244,   245,
-+      81,   143,   247,   248,    82,   146,   250,   251,    83,   149,
-+     253,   254,    84,   152,   256,   257,    85,   137,   241,   242,
-+      86,   328,   615,   698,   699,   700,    87,   392,    88,   623,
-+     537,   648,   649,   650,    89,   313,   449,   586,    90,   212,
-+     454,   455,    91,   215,   317,   318,    92,   211,   451,   452,
-+      93,   271,   395,   396,    94,    95,   218,   323,   324,    96,
-+     223,   332,   333,    97,   226,   335,   336,    98,   229,   338,
-+     339,    99,   191,   296,   297,   299,   430,   431,   100,   194,
-+     301,   302,   304,   438,   439,   101,   187,   292,   288,   289,
-+     291,   420,   421,   188,   294,   102,   176,   274,   275,   103,
-+     104,   180,   277,   278,   712,   770,   869,   105,   106,   107,
-+     108,   811,   812,   813,   814,   815,   816,   817,   818,   654,
-+     820,   821,   109,   655,   110,   111,   112,   113,   114,   115,
-+     116,   117,   823,   118,   119,   422,   560,   661,   662,   676,
-+     563,   665,   666,   677,   120,   161,   263,   264,   121,   154,
-+     155,   122,   582,   201,   267,   308,   738,   739,   740,   939,
-+     846,   612,   694,   756,   763,   695,   696,   123,   124,   125,
-+     545,   863,   946,   126,   127,   306,   674,   128,   234,   587,
-+     130,   305,   673,   442,   577,   578,   579,   733,   830,   831,
-+     832,   899,   933,   934,   936,   960,   961,   517,   889,   833,
-+     834,   897,   835,   999,  1008,   967,   983,   836,   837,   361,
-+     690,   748,   911,   270,   390,   391,   641,  1024,  1004,   994,
-+    1014,   473,   474,   475,   838,   893,   894,   839,   896,   840,
-+     841,   895,   842,   495,   630,   631,   476,   477,   364,   237,
-+     134,   330,   853,   942
-+};
-+
-+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-+     positive, shift that token.  If negative, reduce the rule whose
-+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
- static const yytype_int16 yytable[] =
- {
-      156,   157,   158,   133,   493,   163,   164,   165,   166,   167,
-@@ -2108,8 +1785,8 @@
-       -1,   127
- };
- 
--/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
--   symbol of state STATE-NUM.  */
-+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-+     symbol of state STATE-NUM.  */
- static const yytype_uint16 yystos[] =
- {
-        0,   175,   176,   177,     0,   176,     3,     5,     6,     7,
-@@ -2219,95 +1896,171 @@
-      171,   404
- };
- 
--#define yyerrok		(yyerrstatus = 0)
--#define yyclearin	(yychar = YYEMPTY)
--#define YYEMPTY		(-2)
--#define YYEOF		0
-+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-+static const yytype_uint16 yyr1[] =
-+{
-+       0,   174,   175,   175,   177,   176,   178,   178,   178,   178,
-+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
-+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
-+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
-+     178,   178,   178,   178,   179,   179,   179,   179,   179,   179,
-+     179,   179,   179,   179,   179,   179,   180,   181,   181,   182,
-+     182,   183,   184,   185,   185,   186,   186,   187,   188,   189,
-+     189,   190,   190,   191,   192,   193,   193,   194,   194,   195,
-+     196,   197,   197,   198,   198,   199,   200,   201,   201,   202,
-+     202,   203,   203,   204,   205,   205,   206,   207,   207,   208,
-+     208,   208,   208,   209,   211,   210,   213,   212,   214,   215,
-+     215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-+     217,   219,   218,   220,   220,   221,   221,   223,   222,   224,
-+     224,   225,   226,   227,   227,   228,   228,   229,   231,   230,
-+     232,   232,   233,   235,   234,   236,   236,   236,   236,   237,
-+     237,   238,   239,   240,   240,   240,   241,   241,   242,   242,
-+     242,   242,   243,   244,   244,   245,   245,   246,   247,   248,
-+     248,   249,   249,   250,   251,   252,   252,   253,   253,   254,
-+     255,   256,   256,   257,   257,   258,   259,   259,   260,   260,
-+     261,   261,   261,   262,   263,   263,   264,   264,   265,   266,
-+     266,   267,   267,   268,   268,   268,   269,   269,   271,   270,
-+     270,   272,   272,   273,   273,   273,   273,   273,   273,   273,
-+     273,   273,   274,   274,   275,   275,   276,   276,   276,   276,
-+     277,   277,   278,   278,   279,   280,   280,   281,   281,   282,
-+     282,   283,   284,   285,   285,   286,   286,   287,   288,   288,
-+     289,   289,   290,   290,   291,   292,   293,   294,   295,   296,
-+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-+     317,   318,   319,   320,   321,   321,   322,   323,   324,   324,
-+     324,   325,   325,   326,   326,   327,   327,   328,   329,   329,
-+     330,   330,   331,   331,   332,   333,   334,   334,   336,   335,
-+     337,   337,   337,   338,   338,   339,   339,   340,   340,   341,
-+     341,   342,   342,   342,   343,   343,   344,   344,   345,   345,
-+     346,   346,   347,   347,   347,   347,   347,   347,   348,   348,
-+     348,   348,   348,   348,   348,   349,   350,   350,   351,   351,
-+     352,   352,   353,   354,   354,   355,   355,   355,   355,   355,
-+     355,   355,   355,   356,   356,   356,   357,   357,   359,   360,
-+     358,   362,   361,   363,   365,   366,   364,   367,   367,   368,
-+     368,   369,   370,   370,   370,   370,   371,   371,   372,   372,
-+     372,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-+     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-+     373,   373,   373,   373,   373,   373,   374,   375,   376,   376,
-+     377,   377,   377,   378,   378,   379,   379,   380,   380,   380,
-+     381,   381,   382,   382,   383,   385,   384,   384,   386,   387,
-+     388,   387,   389,   390,   389,   391,   391,   392,   392,   392,
-+     392,   393,   393,   393,   393,   393,   393,   393,   393,   393,
-+     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
-+     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
-+     394,   394,   395,   395,   396,   396,   397,   397,   398,   398,
-+     399,   399,   400,   400,   400,   400,   401,   401,   402,   402,
-+     403,   403,   404,   404,   405,   406,   406,   406,   407,   407,
-+     407,   407,   407,   407,   407,   407,   407,   409,   408,   410,
-+     408,   408,   412,   411,   411,   413,   413,   415,   414,   414,
-+     416,   417,   417,   418,   418,   419,   419,   419,   419,   419,
-+     420,   420,   421,   422,   422,   423,   423,   423,   424,   424,
-+     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
-+     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
-+     424,   424,   424,   424,   424,   424,   424,   424,   425,   425,
-+     426,   426,   427,   427,   427
-+};
- 
--#define YYACCEPT	goto yyacceptlab
--#define YYABORT		goto yyabortlab
--#define YYERROR		goto yyerrorlab
-+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-+static const yytype_uint8 yyr2[] =
-+{
-+       0,     2,     1,     2,     0,     2,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     2,     1,     3,     1,
-+       3,     3,     2,     1,     3,     1,     3,     3,     2,     1,
-+       3,     1,     3,     3,     2,     1,     3,     1,     3,     3,
-+       3,     1,     3,     1,     3,     3,     2,     2,     3,     1,
-+       3,     3,     3,     5,     0,     3,     4,     1,     2,     1,
-+       1,     1,     1,     2,     0,     5,     0,     6,     4,     1,
-+       2,     1,     1,     1,     1,     2,     2,     1,     1,     1,
-+      14,     0,     5,     0,     3,     1,     2,     0,     5,     1,
-+       2,     1,     2,     1,     3,     1,     3,     3,     0,     5,
-+       1,     2,     1,     0,     5,     1,     2,     3,     4,     1,
-+       3,     1,     3,     0,     1,     3,     1,     3,     3,     3,
-+       3,     3,     2,     1,     3,     1,     3,     3,     2,     1,
-+       3,     1,     3,     3,     2,     1,     3,     1,     3,     3,
-+       3,     1,     3,     1,     3,     3,     0,     4,     1,     2,
-+       1,     1,     1,     3,     1,     3,     1,     3,     3,     0,
-+       4,     1,     2,     1,     1,     1,     3,     3,     0,     3,
-+       3,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-+       3,     3,     0,     4,     1,     2,     1,     1,     1,     1,
-+       1,     1,     0,     1,     2,     1,     3,     1,     3,     3,
-+       3,     2,     2,     1,     3,     1,     3,     3,     0,     2,
-+       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
-+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-+       2,     2,     2,     3,     1,     3,     3,     3,     0,     1,
-+       3,     1,     3,     3,     3,     0,     1,     3,     1,     3,
-+       1,     3,     3,     3,     4,     2,     1,     2,     0,     9,
-+       0,     1,     1,     0,     1,     0,     1,     0,     1,     1,
-+       2,     1,     1,     4,     0,     1,     0,     2,     0,     2,
-+       1,     3,     1,     1,     1,     1,     1,     1,     0,     1,
-+       1,     1,     1,     1,     1,     3,     0,     3,     2,     1,
-+       1,     3,     1,     1,     1,     1,     4,     1,     1,     1,
-+       1,     1,     1,     0,     1,     3,     6,    12,     0,     0,
-+       8,     0,     3,     4,     0,     0,     8,     0,     2,     1,
-+       3,     2,     0,     1,     1,     1,     0,     3,     0,     1,
-+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-+       2,     2,     3,     3,     3,     2,     3,     3,     1,     3,
-+       3,     3,     3,     0,     4,     1,     2,     1,     1,     1,
-+       1,     1,     0,     1,    12,     0,     3,     1,    11,     0,
-+       0,     6,     0,     0,     7,     0,     1,    17,     7,    17,
-+      16,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-+       3,     1,     2,     2,     1,     2,     2,     2,     1,     2,
-+       0,     1,     0,     1,     0,     2,     0,     3,     1,     3,
-+       1,     3,     1,     5,     1,     1,     0,     2,     0,     2,
-+       0,     2,     0,     2,     1,     0,     1,     3,     4,     4,
-+       4,     3,     3,     6,     6,     3,     2,     0,     3,     0,
-+       3,     1,     0,     3,     1,     1,     1,     0,     3,     1,
-+       8,     0,     3,     1,     2,     1,     1,     2,     2,     2,
-+       4,     3,     3,     0,     1,     0,     3,     2,     1,     4,
-+       2,     2,     1,     1,     2,     1,     1,     2,     2,     3,
-+       1,     1,     1,     2,     2,     1,     1,     1,     1,     1,
-+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
-+       0,     4,     0,     1,     3
-+};
- 
- 
--/* Like YYERROR except do call yyerror.  This remains here temporarily
--   to ease the transition to the new meaning of YYERROR, for GCC.
--   Once GCC version 2 has supplanted version 1, this can go.  */
-+#define yyerrok         (yyerrstatus = 0)
-+#define yyclearin       (yychar = YYEMPTY)
-+#define YYEMPTY         (-2)
-+#define YYEOF           0
-+
-+#define YYACCEPT        goto yyacceptlab
-+#define YYABORT         goto yyabortlab
-+#define YYERROR         goto yyerrorlab
- 
--#define YYFAIL		goto yyerrlab
- 
- #define YYRECOVERING()  (!!yyerrstatus)
- 
--#define YYBACKUP(Token, Value)					\
--do								\
--  if (yychar == YYEMPTY && yylen == 1)				\
--    {								\
--      yychar = (Token);						\
--      yylval = (Value);						\
--      yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK (1);						\
--      goto yybackup;						\
--    }								\
--  else								\
--    {								\
-+#define YYBACKUP(Token, Value)                                  \
-+do                                                              \
-+  if (yychar == YYEMPTY)                                        \
-+    {                                                           \
-+      yychar = (Token);                                         \
-+      yylval = (Value);                                         \
-+      YYPOPSTACK (yylen);                                       \
-+      yystate = *yyssp;                                         \
-+      goto yybackup;                                            \
-+    }                                                           \
-+  else                                                          \
-+    {                                                           \
-       yyerror (YY_("syntax error: cannot back up")); \
--      YYERROR;							\
--    }								\
--while (YYID (0))
--
--
--#define YYTERROR	1
--#define YYERRCODE	256
--
--
--/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
--   If N is 0, then set CURRENT to the empty location which ends
--   the previous symbol: RHS[0] (always defined).  */
--
--#define YYRHSLOC(Rhs, K) ((Rhs)[K])
--#ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)				\
--    do									\
--      if (YYID (N))                                                    \
--	{								\
--	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
--	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
--	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
--	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
--	}								\
--      else								\
--	{								\
--	  (Current).first_line   = (Current).last_line   =		\
--	    YYRHSLOC (Rhs, 0).last_line;				\
--	  (Current).first_column = (Current).last_column =		\
--	    YYRHSLOC (Rhs, 0).last_column;				\
--	}								\
--    while (YYID (0))
--#endif
--
--
--/* YY_LOCATION_PRINT -- Print the location on the stream.
--   This macro was not mandated originally: define only if we know
--   we won't break user code: when these are the locations we know.  */
--
--#ifndef YY_LOCATION_PRINT
--# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
--#  define YY_LOCATION_PRINT(File, Loc)			\
--     fprintf (File, "%d.%d-%d.%d",			\
--	      (Loc).first_line, (Loc).first_column,	\
--	      (Loc).last_line,  (Loc).last_column)
--# else
--#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
--# endif
--#endif
-+      YYERROR;                                                  \
-+    }                                                           \
-+while (0)
- 
-+/* Error token number */
-+#define YYTERROR        1
-+#define YYERRCODE       256
- 
--/* YYLEX -- calling `yylex' with the right arguments.  */
- 
--#ifdef YYLEX_PARAM
--# define YYLEX yylex (YYLEX_PARAM)
--#else
--# define YYLEX yylex ()
--#endif
- 
- /* Enable debugging if requested.  */
- #if YYDEBUG
-@@ -2317,54 +2070,46 @@
- #  define YYFPRINTF fprintf
- # endif
- 
--# define YYDPRINTF(Args)			\
--do {						\
--  if (yydebug)					\
--    YYFPRINTF Args;				\
--} while (YYID (0))
-+# define YYDPRINTF(Args)                        \
-+do {                                            \
-+  if (yydebug)                                  \
-+    YYFPRINTF Args;                             \
-+} while (0)
- 
--# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
--do {									  \
--  if (yydebug)								  \
--    {									  \
--      YYFPRINTF (stderr, "%s ", Title);					  \
--      yy_symbol_print (stderr,						  \
--		  Type, Value); \
--      YYFPRINTF (stderr, "\n");						  \
--    }									  \
--} while (YYID (0))
-+/* This macro is provided for backward compatibility. */
-+#ifndef YY_LOCATION_PRINT
-+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+#endif
- 
- 
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-+do {                                                                      \
-+  if (yydebug)                                                            \
-+    {                                                                     \
-+      YYFPRINTF (stderr, "%s ", Title);                                   \
-+      yy_symbol_print (stderr,                                            \
-+                  Type, Value); \
-+      YYFPRINTF (stderr, "\n");                                           \
-+    }                                                                     \
-+} while (0)
-+
-+
-+/*----------------------------------------.
-+| Print this symbol's value on YYOUTPUT.  |
-+`----------------------------------------*/
- 
--/*ARGSUSED*/
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static void
- yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
--#else
--static void
--yy_symbol_value_print (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE const * const yyvaluep;
--#endif
- {
-+  FILE *yyo = yyoutput;
-+  YYUSE (yyo);
-   if (!yyvaluep)
-     return;
- # ifdef YYPRINT
-   if (yytype < YYNTOKENS)
-     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
--# else
--  YYUSE (yyoutput);
- # endif
--  switch (yytype)
--    {
--      default:
--	break;
--    }
-+  YYUSE (yytype);
- }
- 
- 
-@@ -2372,22 +2117,11 @@
- | Print this symbol on YYOUTPUT.  |
- `--------------------------------*/
- 
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static void
- yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
--#else
--static void
--yy_symbol_print (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE const * const yyvaluep;
--#endif
- {
--  if (yytype < YYNTOKENS)
--    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+  YYFPRINTF (yyoutput, "%s %s (",
-+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
- 
-   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-   YYFPRINTF (yyoutput, ")");
-@@ -2398,66 +2132,54 @@
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
--static void
--yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
--#else
- static void
--yy_stack_print (bottom, top)
--    yytype_int16 *bottom;
--    yytype_int16 *top;
--#endif
-+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (; bottom <= top; ++bottom)
--    YYFPRINTF (stderr, " %d", *bottom);
-+  for (; yybottom <= yytop; yybottom++)
-+    {
-+      int yybot = *yybottom;
-+      YYFPRINTF (stderr, " %d", yybot);
-+    }
-   YYFPRINTF (stderr, "\n");
- }
- 
--# define YY_STACK_PRINT(Bottom, Top)				\
--do {								\
--  if (yydebug)							\
--    yy_stack_print ((Bottom), (Top));				\
--} while (YYID (0))
-+# define YY_STACK_PRINT(Bottom, Top)                            \
-+do {                                                            \
-+  if (yydebug)                                                  \
-+    yy_stack_print ((Bottom), (Top));                           \
-+} while (0)
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
--#else
--static void
--yy_reduce_print (yyvsp, yyrule)
--    YYSTYPE *yyvsp;
--    int yyrule;
--#endif
-+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
- {
-+  unsigned long int yylno = yyrline[yyrule];
-   int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned long int yylno = yyrline[yyrule];
-   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
--	     yyrule - 1, yylno);
-+             yyrule - 1, yylno);
-   /* The symbols being reduced.  */
-   for (yyi = 0; yyi < yynrhs; yyi++)
-     {
--      fprintf (stderr, "   $%d = ", yyi + 1);
--      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
--		       &(yyvsp[(yyi + 1) - (yynrhs)])
--		       		       );
--      fprintf (stderr, "\n");
-+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr,
-+                       yystos[yyssp[yyi + 1 - yynrhs]],
-+                       &(yyvsp[(yyi + 1) - (yynrhs)])
-+                                              );
-+      YYFPRINTF (stderr, "\n");
-     }
- }
- 
--# define YY_REDUCE_PRINT(Rule)		\
--do {					\
--  if (yydebug)				\
--    yy_reduce_print (yyvsp, Rule); \
--} while (YYID (0))
-+# define YY_REDUCE_PRINT(Rule)          \
-+do {                                    \
-+  if (yydebug)                          \
-+    yy_reduce_print (yyssp, yyvsp, Rule); \
-+} while (0)
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
-@@ -2471,7 +2193,7 @@
- 
- 
- /* YYINITDEPTH -- initial size of the parser's stacks.  */
--#ifndef	YYINITDEPTH
-+#ifndef YYINITDEPTH
- # define YYINITDEPTH 200
- #endif
- 
-@@ -2486,7 +2208,6 @@
- # define YYMAXDEPTH 10000
- #endif
- 
--
- 
- #if YYERROR_VERBOSE
- 
-@@ -2495,15 +2216,8 @@
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
- yystrlen (const char *yystr)
--#else
--static YYSIZE_T
--yystrlen (yystr)
--    const char *yystr;
--#endif
- {
-   YYSIZE_T yylen;
-   for (yylen = 0; yystr[yylen]; yylen++)
-@@ -2519,16 +2233,8 @@
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static char *
- yystpcpy (char *yydest, const char *yysrc)
--#else
--static char *
--yystpcpy (yydest, yysrc)
--    char *yydest;
--    const char *yysrc;
--#endif
- {
-   char *yyd = yydest;
-   const char *yys = yysrc;
-@@ -2558,27 +2264,27 @@
-       char const *yyp = yystr;
- 
-       for (;;)
--	switch (*++yyp)
--	  {
--	  case '\'':
--	  case ',':
--	    goto do_not_strip_quotes;
-+        switch (*++yyp)
-+          {
-+          case '\'':
-+          case ',':
-+            goto do_not_strip_quotes;
- 
--	  case '\\':
--	    if (*++yyp != '\\')
--	      goto do_not_strip_quotes;
--	    /* Fall through.  */
--	  default:
--	    if (yyres)
--	      yyres[yyn] = *yyp;
--	    yyn++;
--	    break;
-+          case '\\':
-+            if (*++yyp != '\\')
-+              goto do_not_strip_quotes;
-+            /* Fall through.  */
-+          default:
-+            if (yyres)
-+              yyres[yyn] = *yyp;
-+            yyn++;
-+            break;
- 
--	  case '"':
--	    if (yyres)
--	      yyres[yyn] = '\0';
--	    return yyn;
--	  }
-+          case '"':
-+            if (yyres)
-+              yyres[yyn] = '\0';
-+            return yyn;
-+          }
-     do_not_strip_quotes: ;
-     }
- 
-@@ -2589,211 +2295,209 @@
- }
- # endif
- 
--/* Copy into YYRESULT an error message about the unexpected token
--   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
--   including the terminating null byte.  If YYRESULT is null, do not
--   copy anything; just return the number of bytes that would be
--   copied.  As a special case, return 0 if an ordinary "syntax error"
--   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
--   size calculation.  */
--static YYSIZE_T
--yysyntax_error (char *yyresult, int yystate, int yychar)
-+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-+   about the unexpected token YYTOKEN for the state stack whose top is
-+   YYSSP.
-+
-+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-+   not large enough to hold the message.  In that case, also set
-+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-+   required number of bytes is too large to store.  */
-+static int
-+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-+                yytype_int16 *yyssp, int yytoken)
- {
--  int yyn = yypact[yystate];
-+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-+  YYSIZE_T yysize = yysize0;
-+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+  /* Internationalized format string. */
-+  const char *yyformat = YY_NULLPTR;
-+  /* Arguments of yyformat. */
-+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+  /* Number of reported tokens (one for the "unexpected", one per
-+     "expected"). */
-+  int yycount = 0;
- 
--  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
--    return 0;
--  else
-+  /* There are many possibilities here to consider:
-+     - If this state is a consistent state with a default action, then
-+       the only way this function was invoked is if the default action
-+       is an error action.  In that case, don't check for expected
-+       tokens because there are none.
-+     - The only way there can be no lookahead present (in yychar) is if
-+       this state is a consistent state with a default action.  Thus,
-+       detecting the absence of a lookahead is sufficient to determine
-+       that there is no unexpected or expected token to report.  In that
-+       case, just report a simple "syntax error".
-+     - Don't assume there isn't a lookahead just because this state is a
-+       consistent state with a default action.  There might have been a
-+       previous inconsistent state, consistent state with a non-default
-+       action, or user semantic action that manipulated yychar.
-+     - Of course, the expected token list depends on states to have
-+       correct lookahead information, and it depends on the parser not
-+       to perform extra reductions after fetching a lookahead from the
-+       scanner and before detecting a syntax error.  Thus, state merging
-+       (from LALR or IELR) and default reductions corrupt the expected
-+       token list.  However, the list is correct for canonical LR with
-+       one exception: it will still contain any token that will not be
-+       accepted due to an error action in a later state.
-+  */
-+  if (yytoken != YYEMPTY)
-     {
--      int yytype = YYTRANSLATE (yychar);
--      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
--      YYSIZE_T yysize = yysize0;
--      YYSIZE_T yysize1;
--      int yysize_overflow = 0;
--      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
--      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
--      int yyx;
--
--# if 0
--      /* This is so xgettext sees the translatable formats that are
--	 constructed on the fly.  */
--      YY_("syntax error, unexpected %s");
--      YY_("syntax error, unexpected %s, expecting %s");
--      YY_("syntax error, unexpected %s, expecting %s or %s");
--      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
--      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
--# endif
--      char *yyfmt;
--      char const *yyf;
--      static char const yyunexpected[] = "syntax error, unexpected %s";
--      static char const yyexpecting[] = ", expecting %s";
--      static char const yyor[] = " or %s";
--      char yyformat[sizeof yyunexpected
--		    + sizeof yyexpecting - 1
--		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
--		       * (sizeof yyor - 1))];
--      char const *yyprefix = yyexpecting;
--
--      /* Start YYX at -YYN if negative to avoid negative indexes in
--	 YYCHECK.  */
--      int yyxbegin = yyn < 0 ? -yyn : 0;
--
--      /* Stay within bounds of both yycheck and yytname.  */
--      int yychecklim = YYLAST - yyn + 1;
--      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--      int yycount = 1;
--
--      yyarg[0] = yytname[yytype];
--      yyfmt = yystpcpy (yyformat, yyunexpected);
-+      int yyn = yypact[*yyssp];
-+      yyarg[yycount++] = yytname[yytoken];
-+      if (!yypact_value_is_default (yyn))
-+        {
-+          /* Start YYX at -YYN if negative to avoid negative indexes in
-+             YYCHECK.  In other words, skip the first -YYN actions for
-+             this state because they are default actions.  */
-+          int yyxbegin = yyn < 0 ? -yyn : 0;
-+          /* Stay within bounds of both yycheck and yytname.  */
-+          int yychecklim = YYLAST - yyn + 1;
-+          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+          int yyx;
- 
--      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--	  {
--	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
--	      {
--		yycount = 1;
--		yysize = yysize0;
--		yyformat[sizeof yyunexpected - 1] = '\0';
--		break;
--	      }
--	    yyarg[yycount++] = yytname[yyx];
--	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
--	    yysize_overflow |= (yysize1 < yysize);
--	    yysize = yysize1;
--	    yyfmt = yystpcpy (yyfmt, yyprefix);
--	    yyprefix = yyor;
--	  }
-+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-+                && !yytable_value_is_error (yytable[yyx + yyn]))
-+              {
-+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+                  {
-+                    yycount = 1;
-+                    yysize = yysize0;
-+                    break;
-+                  }
-+                yyarg[yycount++] = yytname[yyx];
-+                {
-+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-+                  if (! (yysize <= yysize1
-+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+                    return 2;
-+                  yysize = yysize1;
-+                }
-+              }
-+        }
-+    }
- 
--      yyf = YY_(yyformat);
--      yysize1 = yysize + yystrlen (yyf);
--      yysize_overflow |= (yysize1 < yysize);
--      yysize = yysize1;
-+  switch (yycount)
-+    {
-+# define YYCASE_(N, S)                      \
-+      case N:                               \
-+        yyformat = S;                       \
-+      break
-+      YYCASE_(0, YY_("syntax error"));
-+      YYCASE_(1, YY_("syntax error, unexpected %s"));
-+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-+# undef YYCASE_
-+    }
- 
--      if (yysize_overflow)
--	return YYSIZE_MAXIMUM;
-+  {
-+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+      return 2;
-+    yysize = yysize1;
-+  }
- 
--      if (yyresult)
--	{
--	  /* Avoid sprintf, as that infringes on the user's name space.
--	     Don't have undefined behavior even if the translation
--	     produced a string with the wrong number of "%s"s.  */
--	  char *yyp = yyresult;
--	  int yyi = 0;
--	  while ((*yyp = *yyf) != '\0')
--	    {
--	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
--		{
--		  yyp += yytnamerr (yyp, yyarg[yyi++]);
--		  yyf += 2;
--		}
--	      else
--		{
--		  yyp++;
--		  yyf++;
--		}
--	    }
--	}
--      return yysize;
-+  if (*yymsg_alloc < yysize)
-+    {
-+      *yymsg_alloc = 2 * yysize;
-+      if (! (yysize <= *yymsg_alloc
-+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-+      return 1;
-     }
-+
-+  /* Avoid sprintf, as that infringes on the user's name space.
-+     Don't have undefined behavior even if the translation
-+     produced a string with the wrong number of "%s"s.  */
-+  {
-+    char *yyp = *yymsg;
-+    int yyi = 0;
-+    while ((*yyp = *yyformat) != '\0')
-+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-+        {
-+          yyp += yytnamerr (yyp, yyarg[yyi++]);
-+          yyformat += 2;
-+        }
-+      else
-+        {
-+          yyp++;
-+          yyformat++;
-+        }
-+  }
-+  return 0;
- }
- #endif /* YYERROR_VERBOSE */
--
- 
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--/*ARGSUSED*/
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- static void
- yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yydestruct (yymsg, yytype, yyvaluep)
--    const char *yymsg;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
- {
-   YYUSE (yyvaluep);
--
-   if (!yymsg)
-     yymsg = "Deleting";
-   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
--  switch (yytype)
--    {
--
--      default:
--	break;
--    }
-+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-+  YYUSE (yytype);
-+  YY_IGNORE_MAYBE_UNINITIALIZED_END
- }
--
--
--/* Prevent warnings from -Wmissing-prototypes.  */
- 
--#ifdef YYPARSE_PARAM
--#if defined __STDC__ || defined __cplusplus
--int yyparse (void *YYPARSE_PARAM);
--#else
--int yyparse ();
--#endif
--#else /* ! YYPARSE_PARAM */
--#if defined __STDC__ || defined __cplusplus
--int yyparse (void);
--#else
--int yyparse ();
--#endif
--#endif /* ! YYPARSE_PARAM */
- 
- 
- 
--/* The look-ahead symbol.  */
-+/* The lookahead symbol.  */
- int yychar;
- 
--/* The semantic value of the look-ahead symbol.  */
-+/* The semantic value of the lookahead symbol.  */
- YYSTYPE yylval;
--
- /* Number of syntax errors so far.  */
- int yynerrs;
- 
- 
--
- /*----------.
- | yyparse.  |
- `----------*/
- 
--#ifdef YYPARSE_PARAM
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
--int
--yyparse (void *YYPARSE_PARAM)
--#else
--int
--yyparse (YYPARSE_PARAM)
--    void *YYPARSE_PARAM;
--#endif
--#else /* ! YYPARSE_PARAM */
--#if (defined __STDC__ || defined __C99__FUNC__ \
--     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
--#else
--int
--yyparse ()
--
--#endif
--#endif
- {
--  
--  int yystate;
-+    int yystate;
-+    /* Number of tokens to shift before error messages enabled.  */
-+    int yyerrstatus;
-+
-+    /* The stacks and their tools:
-+       'yyss': related to states.
-+       'yyvs': related to semantic values.
-+
-+       Refer to the stacks through separate pointers, to allow yyoverflow
-+       to reallocate them elsewhere.  */
-+
-+    /* The state stack.  */
-+    yytype_int16 yyssa[YYINITDEPTH];
-+    yytype_int16 *yyss;
-+    yytype_int16 *yyssp;
-+
-+    /* The semantic value stack.  */
-+    YYSTYPE yyvsa[YYINITDEPTH];
-+    YYSTYPE *yyvs;
-+    YYSTYPE *yyvsp;
-+
-+    YYSIZE_T yystacksize;
-+
-   int yyn;
-   int yyresult;
--  /* Number of tokens to shift before error messages enabled.  */
--  int yyerrstatus;
--  /* Look-ahead token as an internal (translated) token number.  */
-+  /* Lookahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+  /* The variables used to return semantic value and location from the
-+     action routines.  */
-+  YYSTYPE yyval;
-+
- #if YYERROR_VERBOSE
-   /* Buffer for error messages, and its allocated size.  */
-   char yymsgbuf[128];
-@@ -2801,54 +2505,22 @@
-   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
- #endif
- 
--  /* Three stacks and their tools:
--     `yyss': related to states,
--     `yyvs': related to semantic values,
--     `yyls': related to locations.
--
--     Refer to the stacks thru separate pointers, to allow yyoverflow
--     to reallocate them elsewhere.  */
--
--  /* The state stack.  */
--  yytype_int16 yyssa[YYINITDEPTH];
--  yytype_int16 *yyss = yyssa;
--  yytype_int16 *yyssp;
--
--  /* The semantic value stack.  */
--  YYSTYPE yyvsa[YYINITDEPTH];
--  YYSTYPE *yyvs = yyvsa;
--  YYSTYPE *yyvsp;
--
--
--
- #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
--  YYSIZE_T yystacksize = YYINITDEPTH;
--
--  /* The variables used to return semantic value and location from the
--     action routines.  */
--  YYSTYPE yyval;
--
--
-   /* The number of symbols on the RHS of the reduced rule.
-      Keep to zero when no symbol should be popped.  */
-   int yylen = 0;
- 
-+  yyssp = yyss = yyssa;
-+  yyvsp = yyvs = yyvsa;
-+  yystacksize = YYINITDEPTH;
-+
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-   yystate = 0;
-   yyerrstatus = 0;
-   yynerrs = 0;
--  yychar = YYEMPTY;		/* Cause a token to be read.  */
--
--  /* Initialize stack pointers.
--     Waste one element of value and location stack
--     so that they stay on the same level as the state stack.
--     The wasted elements are never initialized.  */
--
--  yyssp = yyss;
--  yyvsp = yyvs;
--
-+  yychar = YYEMPTY; /* Cause a token to be read.  */
-   goto yysetstate;
- 
- /*------------------------------------------------------------.
-@@ -2869,25 +2541,23 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack.  Use copies of
--	   these so that the &'s don't force the real ones into
--	   memory.  */
--	YYSTYPE *yyvs1 = yyvs;
--	yytype_int16 *yyss1 = yyss;
--
--
--	/* Each stack pointer address is followed by the size of the
--	   data in use in that stack, in bytes.  This used to be a
--	   conditional around just the two extra args, but that might
--	   be undefined if yyoverflow is a macro.  */
--	yyoverflow (YY_("memory exhausted"),
--		    &yyss1, yysize * sizeof (*yyssp),
--		    &yyvs1, yysize * sizeof (*yyvsp),
-+        /* Give user a chance to reallocate the stack.  Use copies of
-+           these so that the &'s don't force the real ones into
-+           memory.  */
-+        YYSTYPE *yyvs1 = yyvs;
-+        yytype_int16 *yyss1 = yyss;
- 
--		    &yystacksize);
-+        /* Each stack pointer address is followed by the size of the
-+           data in use in that stack, in bytes.  This used to be a
-+           conditional around just the two extra args, but that might
-+           be undefined if yyoverflow is a macro.  */
-+        yyoverflow (YY_("memory exhausted"),
-+                    &yyss1, yysize * sizeof (*yyssp),
-+                    &yyvs1, yysize * sizeof (*yyvsp),
-+                    &yystacksize);
- 
--	yyss = yyss1;
--	yyvs = yyvs1;
-+        yyss = yyss1;
-+        yyvs = yyvs1;
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
-@@ -2895,23 +2565,22 @@
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyexhaustedlab;
-+        goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
--	yystacksize = YYMAXDEPTH;
-+        yystacksize = YYMAXDEPTH;
- 
-       {
--	yytype_int16 *yyss1 = yyss;
--	union yyalloc *yyptr =
--	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
--	if (! yyptr)
--	  goto yyexhaustedlab;
--	YYSTACK_RELOCATE (yyss);
--	YYSTACK_RELOCATE (yyvs);
--
-+        yytype_int16 *yyss1 = yyss;
-+        union yyalloc *yyptr =
-+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+        if (! yyptr)
-+          goto yyexhaustedlab;
-+        YYSTACK_RELOCATE (yyss_alloc, yyss);
-+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
- #  undef YYSTACK_RELOCATE
--	if (yyss1 != yyssa)
--	  YYSTACK_FREE (yyss1);
-+        if (yyss1 != yyssa)
-+          YYSTACK_FREE (yyss1);
-       }
- # endif
- #endif /* no yyoverflow */
-@@ -2919,16 +2588,18 @@
-       yyssp = yyss + yysize - 1;
-       yyvsp = yyvs + yysize - 1;
- 
--
-       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
--		  (unsigned long int) yystacksize));
-+                  (unsigned long int) yystacksize));
- 
-       if (yyss + yystacksize - 1 <= yyssp)
--	YYABORT;
-+        YYABORT;
-     }
- 
-   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
- 
-+  if (yystate == YYFINAL)
-+    YYACCEPT;
-+
-   goto yybackup;
- 
- /*-----------.
-@@ -2937,20 +2608,20 @@
- yybackup:
- 
-   /* Do appropriate processing given the current state.  Read a
--     look-ahead token if we need one and don't already have one.  */
-+     lookahead token if we need one and don't already have one.  */
- 
--  /* First try to decide what to do without reference to look-ahead token.  */
-+  /* First try to decide what to do without reference to lookahead token.  */
-   yyn = yypact[yystate];
--  if (yyn == YYPACT_NINF)
-+  if (yypact_value_is_default (yyn))
-     goto yydefault;
- 
--  /* Not known => get a look-ahead token if don't already have one.  */
-+  /* Not known => get a lookahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
--      yychar = YYLEX;
-+      yychar = yylex ();
-     }
- 
-   if (yychar <= YYEOF)
-@@ -2972,29 +2643,27 @@
-   yyn = yytable[yyn];
-   if (yyn <= 0)
-     {
--      if (yyn == 0 || yyn == YYTABLE_NINF)
--	goto yyerrlab;
-+      if (yytable_value_is_error (yyn))
-+        goto yyerrlab;
-       yyn = -yyn;
-       goto yyreduce;
-     }
- 
--  if (yyn == YYFINAL)
--    YYACCEPT;
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
--  /* Shift the look-ahead token.  */
-+  /* Shift the lookahead token.  */
-   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- 
--  /* Discard the shifted token unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
-+  /* Discard the shifted token.  */
-+  yychar = YYEMPTY;
- 
-   yystate = yyn;
-+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-   *++yyvsp = yylval;
-+  YY_IGNORE_MAYBE_UNINITIALIZED_END
- 
-   goto yynewstate;
- 
-@@ -3017,7 +2686,7 @@
-   yylen = yyr2[yyn];
- 
-   /* If YYLEN is nonzero, implement the default value of the action:
--     `$$ = $1'.
-+     '$$ = $1'.
- 
-      Otherwise, the following line sets YYVAL to garbage.
-      This behavior is undocumented and Bison
-@@ -3031,7 +2700,7 @@
-   switch (yyn)
-     {
-         case 4:
--#line 580 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 580 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /*
-              * We don't do these in parserEOF() because the parser is reading
-@@ -3049,10 +2718,11 @@
-                 previousFile = NULL;
-             }
-     }
-+#line 2722 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 55:
--#line 650 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 650 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3061,151 +2731,167 @@
-                 if (scope == NULL)
-                     yyerror("%TypeHeaderCode can only be used in a namespace, class or mapped type");
- 
--                appendCodeBlock(&scope->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->iff->hdrcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 2738 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 56:
--#line 663 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 663 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                currentModule->defdocstringfmt = convertFormat((yyvsp[(2) - (2)].defdocstringfmt).name);
-+                currentModule->defdocstringfmt = convertFormat((yyvsp[0].defdocstringfmt).name);
-         }
-+#line 2747 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 57:
--#line 669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 669 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.defdocstringfmt).name = (yyvsp[(1) - (1)].text);
-+            (yyval.defdocstringfmt).name = (yyvsp[0].text);
-         }
-+#line 2757 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 58:
--#line 674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 674 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defdocstringfmt) = (yyvsp[(2) - (3)].defdocstringfmt);
-+            (yyval.defdocstringfmt) = (yyvsp[-1].defdocstringfmt);
-         }
-+#line 2765 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 60:
--#line 680 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 680 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defdocstringfmt) = (yyvsp[(1) - (3)].defdocstringfmt);
-+            (yyval.defdocstringfmt) = (yyvsp[-2].defdocstringfmt);
- 
--            switch ((yyvsp[(3) - (3)].defdocstringfmt).token)
-+            switch ((yyvsp[0].defdocstringfmt).token)
-             {
--            case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].defdocstringfmt).name; break;
-+            case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[0].defdocstringfmt).name; break;
-             }
-         }
-+#line 2778 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 61:
--#line 690 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 690 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.defdocstringfmt).token = TK_NAME;
- 
--            (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].text);
-+            (yyval.defdocstringfmt).name = (yyvsp[0].text);
-         }
-+#line 2788 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 62:
--#line 697 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 697 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                currentModule->defdocstringsig = convertSignature((yyvsp[(2) - (2)].defdocstringsig).name);
-+                currentModule->defdocstringsig = convertSignature((yyvsp[0].defdocstringsig).name);
-         }
-+#line 2797 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 63:
--#line 703 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 703 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.defdocstringsig).name = (yyvsp[(1) - (1)].text);
-+            (yyval.defdocstringsig).name = (yyvsp[0].text);
-         }
-+#line 2807 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 64:
--#line 708 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 708 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defdocstringsig) = (yyvsp[(2) - (3)].defdocstringsig);
-+            (yyval.defdocstringsig) = (yyvsp[-1].defdocstringsig);
-         }
-+#line 2815 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 66:
--#line 714 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 714 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defdocstringsig) = (yyvsp[(1) - (3)].defdocstringsig);
-+            (yyval.defdocstringsig) = (yyvsp[-2].defdocstringsig);
- 
--            switch ((yyvsp[(3) - (3)].defdocstringsig).token)
-+            switch ((yyvsp[0].defdocstringsig).token)
-             {
--            case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].defdocstringsig).name; break;
-+            case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[0].defdocstringsig).name; break;
-             }
-         }
-+#line 2828 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 67:
--#line 724 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 724 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.defdocstringsig).token = TK_NAME;
- 
--            (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].text);
-+            (yyval.defdocstringsig).name = (yyvsp[0].text);
-         }
-+#line 2838 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 68:
--#line 731 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 731 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
--                if ((currentModule->encoding = convertEncoding((yyvsp[(2) - (2)].defencoding).name)) == no_type)
-+                if ((currentModule->encoding = convertEncoding((yyvsp[0].defencoding).name)) == no_type)
-                     yyerror("The %DefaultEncoding name must be one of \"ASCII\", \"Latin-1\", \"UTF-8\" or \"None\"");
-             }
-         }
-+#line 2850 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 69:
--#line 740 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 740 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.defencoding).name = (yyvsp[(1) - (1)].text);
-+            (yyval.defencoding).name = (yyvsp[0].text);
-         }
-+#line 2860 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 70:
--#line 745 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 745 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defencoding) = (yyvsp[(2) - (3)].defencoding);
-+            (yyval.defencoding) = (yyvsp[-1].defencoding);
-         }
-+#line 2868 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 72:
--#line 751 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 751 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defencoding) = (yyvsp[(1) - (3)].defencoding);
-+            (yyval.defencoding) = (yyvsp[-2].defencoding);
- 
--            switch ((yyvsp[(3) - (3)].defencoding).token)
-+            switch ((yyvsp[0].defencoding).token)
-             {
--            case TK_NAME: (yyval.defencoding).name = (yyvsp[(3) - (3)].defencoding).name; break;
-+            case TK_NAME: (yyval.defencoding).name = (yyvsp[0].defencoding).name; break;
-             }
-         }
-+#line 2881 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 73:
--#line 761 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 761 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.defencoding).token = TK_NAME;
- 
--            (yyval.defencoding).name = (yyvsp[(3) - (3)].text);
-+            (yyval.defencoding).name = (yyvsp[0].text);
-         }
-+#line 2891 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 74:
--#line 768 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 768 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /*
-              * Note that %Plugin is internal in SIP v4.  The current thinking
-@@ -3213,51 +2899,56 @@
-              */
- 
-             if (notSkipping())
--                appendString(&currentSpec->plugins, (yyvsp[(2) - (2)].plugin).name);
-+                appendString(&currentSpec->plugins, (yyvsp[0].plugin).name);
-         }
-+#line 2905 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 75:
--#line 779 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 779 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.plugin).name = (yyvsp[(1) - (1)].text);
-+            (yyval.plugin).name = (yyvsp[0].text);
-         }
-+#line 2915 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 76:
--#line 784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 784 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.plugin) = (yyvsp[(2) - (3)].plugin);
-+            (yyval.plugin) = (yyvsp[-1].plugin);
-         }
-+#line 2923 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 78:
--#line 790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 790 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.plugin) = (yyvsp[(1) - (3)].plugin);
-+            (yyval.plugin) = (yyvsp[-2].plugin);
- 
--            switch ((yyvsp[(3) - (3)].plugin).token)
-+            switch ((yyvsp[0].plugin).token)
-             {
--            case TK_NAME: (yyval.plugin).name = (yyvsp[(3) - (3)].plugin).name; break;
-+            case TK_NAME: (yyval.plugin).name = (yyvsp[0].plugin).name; break;
-             }
-         }
-+#line 2936 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 79:
--#line 800 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 800 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.plugin).token = TK_NAME;
- 
--            (yyval.plugin).name = (yyvsp[(3) - (3)].text);
-+            (yyval.plugin).name = (yyvsp[0].text);
-         }
-+#line 2946 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 80:
--#line 807 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 807 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (3)].veh).name == NULL)
-+            if ((yyvsp[-1].veh).name == NULL)
-                 yyerror("%VirtualErrorHandler must have a 'name' argument");
- 
-             if (notSkipping())
-@@ -3266,7 +2957,7 @@
- 
-                 /* Check there isn't already a handler with the same name. */
-                 for (tailp = &currentSpec->errorhandlers; (veh = *tailp) != NULL; tailp = &veh->next)
--                    if (strcmp(veh->name, (yyvsp[(2) - (3)].veh).name) == 0)
-+                    if (strcmp(veh->name, (yyvsp[-1].veh).name) == 0)
-                         break;
- 
-                 if (veh != NULL)
-@@ -3274,8 +2965,8 @@
- 
-                 veh = sipMalloc(sizeof (virtErrorHandler));
- 
--                veh->name = (yyvsp[(2) - (3)].veh).name;
--                appendCodeBlock(&veh->code, (yyvsp[(3) - (3)].codeb));
-+                veh->name = (yyvsp[-1].veh).name;
-+                appendCodeBlock(&veh->code, (yyvsp[0].codeb));
-                 veh->mod = currentModule;
-                 veh->index = -1;
-                 veh->next = NULL;
-@@ -3283,62 +2974,67 @@
-                 *tailp = veh;
-             }
-         }
-+#line 2978 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 81:
--#line 836 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 836 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.veh).name = (yyvsp[(1) - (1)].text);
-+            (yyval.veh).name = (yyvsp[0].text);
-         }
-+#line 2988 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 82:
--#line 841 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 841 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.veh) = (yyvsp[(2) - (3)].veh);
-+            (yyval.veh) = (yyvsp[-1].veh);
-         }
-+#line 2996 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 84:
--#line 847 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 847 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.veh) = (yyvsp[(1) - (3)].veh);
-+            (yyval.veh) = (yyvsp[-2].veh);
- 
--            switch ((yyvsp[(3) - (3)].veh).token)
-+            switch ((yyvsp[0].veh).token)
-             {
--            case TK_NAME: (yyval.veh).name = (yyvsp[(3) - (3)].veh).name; break;
-+            case TK_NAME: (yyval.veh).name = (yyvsp[0].veh).name; break;
-             }
-         }
-+#line 3009 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 85:
--#line 857 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 857 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.veh).token = TK_NAME;
- 
--            (yyval.veh).name = (yyvsp[(3) - (3)].text);
-+            (yyval.veh).name = (yyvsp[0].text);
-         }
-+#line 3019 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 86:
--#line 864 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 864 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 apiVersionRangeDef *avd;
- 
--                if (findAPI(currentSpec, (yyvsp[(2) - (2)].api).name) != NULL)
-+                if (findAPI(currentSpec, (yyvsp[0].api).name) != NULL)
-                     yyerror("The API name in the %API directive has already been defined");
- 
--                if ((yyvsp[(2) - (2)].api).version < 1)
-+                if ((yyvsp[0].api).version < 1)
-                     yyerror("The version number in the %API directive must be greater than or equal to 1");
- 
-                 avd = sipMalloc(sizeof (apiVersionRangeDef));
- 
--                avd->api_name = cacheName(currentSpec, (yyvsp[(2) - (2)].api).name);
--                avd->from = (yyvsp[(2) - (2)].api).version;
-+                avd->api_name = cacheName(currentSpec, (yyvsp[0].api).name);
-+                avd->from = (yyvsp[0].api).version;
-                 avd->to = -1;
- 
-                 avd->next = currentModule->api_versions;
-@@ -3348,62 +3044,68 @@
-                     setIsUsedName(avd->api_name);
-             }
-         }
-+#line 3048 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 87:
--#line 890 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 890 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
-             deprecated("%API name and version number should be specified using the 'name' and 'version' arguments");
- 
--            (yyval.api).name = (yyvsp[(1) - (2)].text);
--            (yyval.api).version = (yyvsp[(2) - (2)].number);
-+            (yyval.api).name = (yyvsp[-1].text);
-+            (yyval.api).version = (yyvsp[0].number);
-         }
-+#line 3061 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 88:
--#line 898 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 898 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.api) = (yyvsp[(2) - (3)].api);
-+            (yyval.api) = (yyvsp[-1].api);
-         }
-+#line 3069 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 90:
--#line 904 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 904 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.api) = (yyvsp[(1) - (3)].api);
-+            (yyval.api) = (yyvsp[-2].api);
- 
--            switch ((yyvsp[(3) - (3)].api).token)
-+            switch ((yyvsp[0].api).token)
-             {
--            case TK_NAME: (yyval.api).name = (yyvsp[(3) - (3)].api).name; break;
--            case TK_VERSION: (yyval.api).version = (yyvsp[(3) - (3)].api).version; break;
-+            case TK_NAME: (yyval.api).name = (yyvsp[0].api).name; break;
-+            case TK_VERSION: (yyval.api).version = (yyvsp[0].api).version; break;
-             }
-         }
-+#line 3083 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 91:
--#line 915 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 915 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.api).token = TK_NAME;
- 
--            (yyval.api).name = (yyvsp[(3) - (3)].text);
-+            (yyval.api).name = (yyvsp[0].text);
-             (yyval.api).version = 0;
-         }
-+#line 3094 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 92:
--#line 921 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 921 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.api).token = TK_VERSION;
- 
-             (yyval.api).name = NULL;
--            (yyval.api).version = (yyvsp[(3) - (3)].number);
-+            (yyval.api).version = (yyvsp[0].number);
-         }
-+#line 3105 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 93:
--#line 929 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 929 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3416,20 +3118,20 @@
-                 exceptionDef *xd;
-                 const char *pyname;
- 
--                checkAnnos(&(yyvsp[(4) - (5)].optflags), annos);
-+                checkAnnos(&(yyvsp[-1].optflags), annos);
- 
-                 if (currentSpec->genc)
-                     yyerror("%Exception not allowed in a C module");
- 
--                if ((yyvsp[(5) - (5)].exception).raise_code == NULL)
-+                if ((yyvsp[0].exception).raise_code == NULL)
-                     yyerror("%Exception must have a %RaiseCode sub-directive");
- 
--                pyname = getPythonName(currentModule, &(yyvsp[(4) - (5)].optflags), scopedNameTail((yyvsp[(2) - (5)].scpvalp)));
-+                pyname = getPythonName(currentModule, &(yyvsp[-1].optflags), scopedNameTail((yyvsp[-3].scpvalp)));
- 
-                 checkAttributes(currentSpec, currentModule, NULL, NULL,
-                         pyname, FALSE);
- 
--                xd = findException(currentSpec, (yyvsp[(2) - (5)].scpvalp), TRUE);
-+                xd = findException(currentSpec, (yyvsp[-3].scpvalp), TRUE);
- 
-                 if (xd->cd != NULL)
-                     yyerror("%Exception name has already been seen as a class name - it must be defined before being used");
-@@ -3439,28 +3141,30 @@
- 
-                 /* Complete the definition. */
-                 xd->iff->module = currentModule;
--                appendCodeBlock(&xd->iff->hdrcode, (yyvsp[(5) - (5)].exception).type_header_code);
-+                appendCodeBlock(&xd->iff->hdrcode, (yyvsp[0].exception).type_header_code);
-                 xd->pyname = pyname;
--                xd->bibase = (yyvsp[(3) - (5)].exceptionbase).bibase;
--                xd->base = (yyvsp[(3) - (5)].exceptionbase).base;
--                appendCodeBlock(&xd->raisecode, (yyvsp[(5) - (5)].exception).raise_code);
-+                xd->bibase = (yyvsp[-2].exceptionbase).bibase;
-+                xd->base = (yyvsp[-2].exceptionbase).base;
-+                appendCodeBlock(&xd->raisecode, (yyvsp[0].exception).raise_code);
- 
--                if (getOptFlag(&(yyvsp[(4) - (5)].optflags), "Default", bool_flag) != NULL)
-+                if (getOptFlag(&(yyvsp[-1].optflags), "Default", bool_flag) != NULL)
-                     currentModule->defexception = xd;
-             }
-         }
-+#line 3155 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 94:
--#line 976 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 976 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.exceptionbase).bibase = NULL;
-             (yyval.exceptionbase).base = NULL;
-         }
-+#line 3164 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 95:
--#line 980 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 980 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             exceptionDef *xd;
- 
-@@ -3469,13 +3173,13 @@
- 
-             /* See if it is a defined exception. */
-             for (xd = currentSpec->exceptions; xd != NULL; xd = xd->next)
--                if (compareScopedNames(xd->iff->fqcname, (yyvsp[(2) - (3)].scpvalp)) == 0)
-+                if (compareScopedNames(xd->iff->fqcname, (yyvsp[-1].scpvalp)) == 0)
-                 {
-                     (yyval.exceptionbase).base = xd;
-                     break;
-                 }
- 
--            if (xd == NULL && (yyvsp[(2) - (3)].scpvalp)->next == NULL && strncmp((yyvsp[(2) - (3)].scpvalp)->name, "SIP_", 4) == 0)
-+            if (xd == NULL && (yyvsp[-1].scpvalp)->next == NULL && strncmp((yyvsp[-1].scpvalp)->name, "SIP_", 4) == 0)
-             {
-                 /* See if it is a builtin exception. */
- 
-@@ -3556,7 +3260,7 @@
-                 char **cp;
- 
-                 for (cp = builtins; *cp != NULL; ++cp)
--                    if (strcmp((yyvsp[(2) - (3)].scpvalp)->name + 4, *cp) == 0)
-+                    if (strcmp((yyvsp[-1].scpvalp)->name + 4, *cp) == 0)
-                     {
-                         (yyval.exceptionbase).bibase = *cp;
-                         break;
-@@ -3566,49 +3270,54 @@
-             if ((yyval.exceptionbase).bibase == NULL && (yyval.exceptionbase).base == NULL)
-                 yyerror("Unknown exception base type");
-         }
-+#line 3274 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 96:
--#line 1087 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1087 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.exception) = (yyvsp[(2) - (4)].exception);
-+            (yyval.exception) = (yyvsp[-2].exception);
-         }
-+#line 3282 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 98:
--#line 1093 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1093 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.exception) = (yyvsp[(1) - (2)].exception);
-+            (yyval.exception) = (yyvsp[-1].exception);
- 
--            switch ((yyvsp[(2) - (2)].exception).token)
-+            switch ((yyvsp[0].exception).token)
-             {
--            case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[(2) - (2)].exception).raise_code; break;
--            case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[(2) - (2)].exception).type_header_code; break;
-+            case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[0].exception).raise_code; break;
-+            case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[0].exception).type_header_code; break;
-             }
-         }
-+#line 3296 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 99:
--#line 1104 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1104 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.exception).token = TK_IF;
-         }
-+#line 3304 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 100:
--#line 1107 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1107 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.exception).token = TK_END;
-         }
-+#line 3312 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 101:
--#line 1110 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1110 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.exception).token = TK_RAISECODE;
--                (yyval.exception).raise_code = (yyvsp[(1) - (1)].codeb);
-+                (yyval.exception).raise_code = (yyvsp[0].codeb);
-             }
-             else
-             {
-@@ -3618,15 +3327,16 @@
- 
-             (yyval.exception).type_header_code = NULL;
-         }
-+#line 3331 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 102:
--#line 1124 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1124 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.exception).token = TK_TYPEHEADERCODE;
--                (yyval.exception).type_header_code = (yyvsp[(1) - (1)].codeb);
-+                (yyval.exception).type_header_code = (yyvsp[0].codeb);
-             }
-             else
-             {
-@@ -3636,17 +3346,19 @@
- 
-             (yyval.exception).raise_code = NULL;
-         }
-+#line 3350 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 103:
--#line 1140 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1140 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 3358 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 104:
--#line 1145 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1145 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3663,15 +3375,16 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+                checkAnnos(&(yyvsp[0].optflags), annos);
- 
--                currentMappedType = newMappedType(currentSpec, &(yyvsp[(2) - (3)].memArg), &(yyvsp[(3) - (3)].optflags));
-+                currentMappedType = newMappedType(currentSpec, &(yyvsp[-1].memArg), &(yyvsp[0].optflags));
-             }
-         }
-+#line 3384 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 106:
--#line 1168 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1168 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3690,7 +3403,7 @@
-                 mappedTypeTmplDef *mtt;
-                 ifaceFileDef *iff;
- 
--                checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
-+                checkAnnos(&(yyvsp[0].optflags), annos);
- 
-                 if (currentSpec->genc)
-                     yyerror("%MappedType templates not allowed in a C module");
-@@ -3699,32 +3412,32 @@
-                  * Check the template arguments are basic types or simple
-                  * names.
-                  */
--                for (a = 0; a < (yyvsp[(1) - (4)].signature).nrArgs; ++a)
-+                for (a = 0; a < (yyvsp[-3].signature).nrArgs; ++a)
-                 {
--                    argDef *ad = &(yyvsp[(1) - (4)].signature).args[a];
-+                    argDef *ad = &(yyvsp[-3].signature).args[a];
- 
-                     if (ad->atype == defined_type && ad->u.snd->next != NULL)
-                         yyerror("%MappedType template arguments must be simple names");
-                 }
- 
--                if ((yyvsp[(3) - (4)].memArg).atype != template_type)
-+                if ((yyvsp[-1].memArg).atype != template_type)
-                     yyerror("%MappedType template must map a template type");
- 
--                (yyvsp[(3) - (4)].memArg).u.td->fqname  = fullyQualifiedName((yyvsp[(3) - (4)].memArg).u.td->fqname);
-+                (yyvsp[-1].memArg).u.td->fqname  = fullyQualifiedName((yyvsp[-1].memArg).u.td->fqname);
- 
-                 /* Check a template hasn't already been provided. */
-                 for (mtt = currentSpec->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
--                    if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[(3) - (4)].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[(3) - (4)].memArg).u.td->types, TRUE))
-+                    if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[-1].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[-1].memArg).u.td->types, TRUE))
-                         yyerror("%MappedType template for this type has already been defined");
- 
--                (yyvsp[(3) - (4)].memArg).nrderefs = 0;
--                (yyvsp[(3) - (4)].memArg).argflags = 0;
-+                (yyvsp[-1].memArg).nrderefs = 0;
-+                (yyvsp[-1].memArg).argflags = 0;
- 
-                 mtt = sipMalloc(sizeof (mappedTypeTmplDef));
- 
--                mtt->sig = (yyvsp[(1) - (4)].signature);
--                mtt->mt = allocMappedType(currentSpec, &(yyvsp[(3) - (4)].memArg));
--                mappedTypeAnnos(mtt->mt, &(yyvsp[(4) - (4)].optflags));
-+                mtt->sig = (yyvsp[-3].signature);
-+                mtt->mt = allocMappedType(currentSpec, &(yyvsp[-1].memArg));
-+                mappedTypeAnnos(mtt->mt, &(yyvsp[0].optflags));
-                 mtt->next = currentSpec->mappedtypetemplates;
- 
-                 currentSpec->mappedtypetemplates = mtt;
-@@ -3737,10 +3450,11 @@
-                 mtt->mt->iff = iff;
-             }
-         }
-+#line 3454 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 108:
--#line 1235 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1235 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3753,82 +3467,89 @@
-                 currentMappedType = NULL;
-             }
-         }
-+#line 3471 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 113:
--#line 1255 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1255 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[0].codeb));
-         }
-+#line 3480 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 114:
--#line 1259 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1259 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentMappedType->typecode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&currentMappedType->typecode, (yyvsp[0].codeb));
-         }
-+#line 3489 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 115:
--#line 1263 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1263 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 if (currentMappedType->convfromcode != NULL)
-                     yyerror("%MappedType has more than one %ConvertFromTypeCode directive");
- 
--                appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 3503 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 116:
--#line 1272 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1272 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 if (currentMappedType->convtocode != NULL)
-                     yyerror("%MappedType has more than one %ConvertToTypeCode directive");
- 
--                appendCodeBlock(&currentMappedType->convtocode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentMappedType->convtocode, (yyvsp[0].codeb));
-             }
-         }
-+#line 3517 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 117:
--#line 1281 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1281 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 if (currentMappedType->instancecode != NULL)
-                     yyerror("%MappedType has more than one %InstanceCode directive");
- 
--                appendCodeBlock(&currentMappedType->instancecode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&currentMappedType->instancecode, (yyvsp[0].codeb));
-             }
-         }
-+#line 3531 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 120:
--#line 1294 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1294 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
--                applyTypeFlags(currentModule, &(yyvsp[(2) - (14)].memArg), &(yyvsp[(9) - (14)].optflags));
-+                applyTypeFlags(currentModule, &(yyvsp[-12].memArg), &(yyvsp[-5].optflags));
- 
--                (yyvsp[(5) - (14)].signature).result = (yyvsp[(2) - (14)].memArg);
-+                (yyvsp[-9].signature).result = (yyvsp[-12].memArg);
- 
-                 newFunction(currentSpec, currentModule, NULL, NULL,
--                        currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[(3) - (14)].text),
--                        &(yyvsp[(5) - (14)].signature), (yyvsp[(7) - (14)].number), FALSE, &(yyvsp[(9) - (14)].optflags), (yyvsp[(14) - (14)].codeb), NULL, NULL, (yyvsp[(8) - (14)].throwlist), (yyvsp[(10) - (14)].optsignature), (yyvsp[(12) - (14)].docstr),
--                        FALSE, (yyvsp[(13) - (14)].codeb));
-+                        currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[-11].text),
-+                        &(yyvsp[-9].signature), (yyvsp[-7].number), FALSE, &(yyvsp[-5].optflags), (yyvsp[0].codeb), NULL, NULL, (yyvsp[-6].throwlist), (yyvsp[-4].optsignature), (yyvsp[-2].docstr),
-+                        FALSE, (yyvsp[-1].codeb));
-             }
-         }
-+#line 3549 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 121:
--#line 1309 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1309 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("namespace definition not allowed in a C module");
-@@ -3844,17 +3565,18 @@
-                     scope = NULL;
- 
-                 ns = newClass(currentSpec, namespace_iface, NULL,
--                        text2scopedName(scope, (yyvsp[(2) - (2)].text)), NULL, NULL, NULL, NULL);
-+                        text2scopedName(scope, (yyvsp[0].text)), NULL, NULL, NULL, NULL);
- 
-                 pushScope(ns);
- 
-                 sectionFlags = 0;
-             }
-         }
-+#line 3576 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 122:
--#line 1330 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1330 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3869,10 +3591,11 @@
-                 popScope();
-             }
-         }
-+#line 3595 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 127:
--#line 1354 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1354 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3883,10 +3606,11 @@
-                         yyerror("%Platforms has already been defined for this module");
-             }
-         }
-+#line 3610 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 128:
--#line 1364 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1364 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3904,70 +3628,78 @@
-                     yyerror("No more than one of these %Platforms must be specified with the -t flag");
-             }
-         }
-+#line 3632 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 131:
--#line 1387 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1387 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(1) - (1)].text),
-+            newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].text),
-                     platform_qualifier);
-         }
-+#line 3641 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 132:
--#line 1393 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1393 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(2) - (2)].feature).name,
-+            newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].feature).name,
-                     feature_qualifier);
-         }
-+#line 3650 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 133:
--#line 1399 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1399 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.feature).name = (yyvsp[(1) - (1)].text);
-+            (yyval.feature).name = (yyvsp[0].text);
-         }
-+#line 3660 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 134:
--#line 1404 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1404 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.feature) = (yyvsp[(2) - (3)].feature);
-+            (yyval.feature) = (yyvsp[-1].feature);
-         }
-+#line 3668 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 136:
--#line 1410 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1410 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.feature) = (yyvsp[(1) - (3)].feature);
-+            (yyval.feature) = (yyvsp[-2].feature);
- 
--            switch ((yyvsp[(3) - (3)].feature).token)
-+            switch ((yyvsp[0].feature).token)
-             {
--            case TK_NAME: (yyval.feature).name = (yyvsp[(3) - (3)].feature).name; break;
-+            case TK_NAME: (yyval.feature).name = (yyvsp[0].feature).name; break;
-             }
-         }
-+#line 3681 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 137:
--#line 1420 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1420 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.feature).token = TK_NAME;
- 
--            (yyval.feature).name = (yyvsp[(3) - (3)].text);
-+            (yyval.feature).name = (yyvsp[0].text);
-         }
-+#line 3691 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 138:
--#line 1427 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1427 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             currentTimelineOrder = 0;
-         }
-+#line 3699 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 139:
--#line 1430 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1430 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -3989,25 +3721,28 @@
-                 currentModule->nrtimelines++;
-             }
-         }
-+#line 3725 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 142:
--#line 1457 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1457 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             newQualifier(currentModule, currentModule->nrtimelines,
--                    currentTimelineOrder++, TRUE, (yyvsp[(1) - (1)].text), time_qualifier);
-+                    currentTimelineOrder++, TRUE, (yyvsp[0].text), time_qualifier);
-         }
-+#line 3734 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 143:
--#line 1463 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1463 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             currentPlatforms = NULL;
-         }
-+#line 3742 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 144:
--#line 1465 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1465 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (stackPtr >= MAX_NESTED_IF)
-                 yyerror("Internal error: increase the value of MAX_NESTED_IF");
-@@ -4015,102 +3750,110 @@
-             /* Nested %Ifs are implicit logical ands. */
- 
-             if (stackPtr > 0)
--                (yyvsp[(4) - (5)].boolean) = ((yyvsp[(4) - (5)].boolean) && skipStack[stackPtr - 1]);
-+                (yyvsp[-1].boolean) = ((yyvsp[-1].boolean) && skipStack[stackPtr - 1]);
- 
--            skipStack[stackPtr] = (yyvsp[(4) - (5)].boolean);
-+            skipStack[stackPtr] = (yyvsp[-1].boolean);
- 
-             platformStack[stackPtr] = currentPlatforms;
- 
-             ++stackPtr;
-         }
-+#line 3762 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 145:
--#line 1482 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1482 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.boolean) = platOrFeature((yyvsp[(1) - (1)].text), FALSE);
-+            (yyval.boolean) = platOrFeature((yyvsp[0].text), FALSE);
-         }
-+#line 3770 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 146:
--#line 1485 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1485 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.boolean) = platOrFeature((yyvsp[(2) - (2)].text), TRUE);
-+            (yyval.boolean) = platOrFeature((yyvsp[0].text), TRUE);
-         }
-+#line 3778 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 147:
--#line 1488 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1488 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.boolean) = (platOrFeature((yyvsp[(3) - (3)].text), FALSE) || (yyvsp[(1) - (3)].boolean));
-+            (yyval.boolean) = (platOrFeature((yyvsp[0].text), FALSE) || (yyvsp[-2].boolean));
-         }
-+#line 3786 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 148:
--#line 1491 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1491 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.boolean) = (platOrFeature((yyvsp[(4) - (4)].text), TRUE) || (yyvsp[(1) - (4)].boolean));
-+            (yyval.boolean) = (platOrFeature((yyvsp[0].text), TRUE) || (yyvsp[-3].boolean));
-         }
-+#line 3794 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 150:
--#line 1497 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1497 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.boolean) = timePeriod((yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text));
-+            (yyval.boolean) = timePeriod((yyvsp[-2].text), (yyvsp[0].text));
-         }
-+#line 3802 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 151:
--#line 1502 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1502 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (stackPtr-- <= 0)
-                 yyerror("Too many %End directives");
- 
-             currentPlatforms = (stackPtr == 0 ? NULL : platformStack[stackPtr - 1]);
-         }
-+#line 3813 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 152:
--#line 1510 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1510 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             optFlag *of;
- 
--            if ((yyvsp[(3) - (3)].optflags).nrFlags != 0)
-+            if ((yyvsp[0].optflags).nrFlags != 0)
-                 deprecated("%License annotations are deprecated, use arguments instead");
- 
--            if ((yyvsp[(2) - (3)].license).type == NULL)
--                if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Type", string_flag)) != NULL)
--                    (yyvsp[(2) - (3)].license).type = of->fvalue.sval;
-+            if ((yyvsp[-1].license).type == NULL)
-+                if ((of = getOptFlag(&(yyvsp[0].optflags), "Type", string_flag)) != NULL)
-+                    (yyvsp[-1].license).type = of->fvalue.sval;
- 
--            if ((yyvsp[(2) - (3)].license).licensee == NULL)
--                if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Licensee", string_flag)) != NULL)
--                    (yyvsp[(2) - (3)].license).licensee = of->fvalue.sval;
-+            if ((yyvsp[-1].license).licensee == NULL)
-+                if ((of = getOptFlag(&(yyvsp[0].optflags), "Licensee", string_flag)) != NULL)
-+                    (yyvsp[-1].license).licensee = of->fvalue.sval;
- 
--            if ((yyvsp[(2) - (3)].license).signature == NULL)
--                if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Signature", string_flag)) != NULL)
--                    (yyvsp[(2) - (3)].license).signature = of->fvalue.sval;
-+            if ((yyvsp[-1].license).signature == NULL)
-+                if ((of = getOptFlag(&(yyvsp[0].optflags), "Signature", string_flag)) != NULL)
-+                    (yyvsp[-1].license).signature = of->fvalue.sval;
- 
--            if ((yyvsp[(2) - (3)].license).timestamp == NULL)
--                if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Timestamp", string_flag)) != NULL)
--                    (yyvsp[(2) - (3)].license).timestamp = of->fvalue.sval;
-+            if ((yyvsp[-1].license).timestamp == NULL)
-+                if ((of = getOptFlag(&(yyvsp[0].optflags), "Timestamp", string_flag)) != NULL)
-+                    (yyvsp[-1].license).timestamp = of->fvalue.sval;
- 
--            if ((yyvsp[(2) - (3)].license).type == NULL)
-+            if ((yyvsp[-1].license).type == NULL)
-                 yyerror("%License must have a 'type' argument");
- 
-             if (notSkipping())
-             {
-                 currentModule->license = sipMalloc(sizeof (licenseDef));
- 
--                currentModule->license->type = (yyvsp[(2) - (3)].license).type;
--                currentModule->license->licensee = (yyvsp[(2) - (3)].license).licensee;
--                currentModule->license->sig = (yyvsp[(2) - (3)].license).signature;
--                currentModule->license->timestamp = (yyvsp[(2) - (3)].license).timestamp;
-+                currentModule->license->type = (yyvsp[-1].license).type;
-+                currentModule->license->licensee = (yyvsp[-1].license).licensee;
-+                currentModule->license->sig = (yyvsp[-1].license).signature;
-+                currentModule->license->timestamp = (yyvsp[-1].license).timestamp;
-             }
-         }
-+#line 3853 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 153:
--#line 1547 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1547 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
-@@ -4119,241 +3862,264 @@
-             (yyval.license).signature = NULL;
-             (yyval.license).timestamp = NULL;
-         }
-+#line 3866 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 154:
--#line 1555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1555 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.license).type = (yyvsp[(1) - (1)].text);
-+            (yyval.license).type = (yyvsp[0].text);
-             (yyval.license).licensee = NULL;
-             (yyval.license).signature = NULL;
-             (yyval.license).timestamp = NULL;
-         }
-+#line 3877 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 155:
--#line 1561 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1561 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.license) = (yyvsp[(2) - (3)].license);
-+            (yyval.license) = (yyvsp[-1].license);
-         }
-+#line 3885 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 157:
--#line 1567 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1567 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.license) = (yyvsp[(1) - (3)].license);
-+            (yyval.license) = (yyvsp[-2].license);
- 
--            switch ((yyvsp[(3) - (3)].license).token)
-+            switch ((yyvsp[0].license).token)
-             {
--            case TK_TYPE: (yyval.license).type = (yyvsp[(3) - (3)].license).type; break;
--            case TK_LICENSEE: (yyval.license).licensee = (yyvsp[(3) - (3)].license).licensee; break;
--            case TK_SIGNATURE: (yyval.license).signature = (yyvsp[(3) - (3)].license).signature; break;
--            case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[(3) - (3)].license).timestamp; break;
-+            case TK_TYPE: (yyval.license).type = (yyvsp[0].license).type; break;
-+            case TK_LICENSEE: (yyval.license).licensee = (yyvsp[0].license).licensee; break;
-+            case TK_SIGNATURE: (yyval.license).signature = (yyvsp[0].license).signature; break;
-+            case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[0].license).timestamp; break;
-             }
-         }
-+#line 3901 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 158:
--#line 1580 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1580 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.license).token = TK_NAME;
- 
--            (yyval.license).type = (yyvsp[(3) - (3)].text);
-+            (yyval.license).type = (yyvsp[0].text);
-             (yyval.license).licensee = NULL;
-             (yyval.license).signature = NULL;
-             (yyval.license).timestamp = NULL;
-         }
-+#line 3914 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 159:
--#line 1588 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1588 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.license).token = TK_LICENSEE;
- 
-             (yyval.license).type = NULL;
--            (yyval.license).licensee = (yyvsp[(3) - (3)].text);
-+            (yyval.license).licensee = (yyvsp[0].text);
-             (yyval.license).signature = NULL;
-             (yyval.license).timestamp = NULL;
-         }
-+#line 3927 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 160:
--#line 1596 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1596 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.license).token = TK_SIGNATURE;
- 
-             (yyval.license).type = NULL;
-             (yyval.license).licensee = NULL;
--            (yyval.license).signature = (yyvsp[(3) - (3)].text);
-+            (yyval.license).signature = (yyvsp[0].text);
-             (yyval.license).timestamp = NULL;
-         }
-+#line 3940 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 161:
--#line 1604 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1604 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.license).token = TK_TIMESTAMP;
- 
-             (yyval.license).type = NULL;
-             (yyval.license).licensee = NULL;
-             (yyval.license).signature = NULL;
--            (yyval.license).timestamp = (yyvsp[(3) - (3)].text);
-+            (yyval.license).timestamp = (yyvsp[0].text);
-         }
-+#line 3953 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 162:
--#line 1614 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1614 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 if (currentModule->defmetatype != NULL)
-                     yyerror("%DefaultMetatype has already been defined for this module");
- 
--                currentModule->defmetatype = cacheName(currentSpec, (yyvsp[(2) - (2)].defmetatype).name);
-+                currentModule->defmetatype = cacheName(currentSpec, (yyvsp[0].defmetatype).name);
-             }
-         }
-+#line 3967 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 163:
--#line 1625 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1625 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.defmetatype).name = (yyvsp[(1) - (1)].text);
-+            (yyval.defmetatype).name = (yyvsp[0].text);
-         }
-+#line 3977 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 164:
--#line 1630 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1630 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defmetatype) = (yyvsp[(2) - (3)].defmetatype);
-+            (yyval.defmetatype) = (yyvsp[-1].defmetatype);
-         }
-+#line 3985 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 166:
--#line 1636 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1636 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defmetatype) = (yyvsp[(1) - (3)].defmetatype);
-+            (yyval.defmetatype) = (yyvsp[-2].defmetatype);
- 
--            switch ((yyvsp[(3) - (3)].defmetatype).token)
-+            switch ((yyvsp[0].defmetatype).token)
-             {
--            case TK_NAME: (yyval.defmetatype).name = (yyvsp[(3) - (3)].defmetatype).name; break;
-+            case TK_NAME: (yyval.defmetatype).name = (yyvsp[0].defmetatype).name; break;
-             }
-         }
-+#line 3998 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 167:
--#line 1646 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1646 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.defmetatype).token = TK_NAME;
- 
--            (yyval.defmetatype).name = (yyvsp[(3) - (3)].text);
-+            (yyval.defmetatype).name = (yyvsp[0].text);
-         }
-+#line 4008 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 168:
--#line 1653 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1653 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 if (currentModule->defsupertype != NULL)
-                     yyerror("%DefaultSupertype has already been defined for this module");
- 
--                currentModule->defsupertype = cacheName(currentSpec, (yyvsp[(2) - (2)].defsupertype).name);
-+                currentModule->defsupertype = cacheName(currentSpec, (yyvsp[0].defsupertype).name);
-             }
-         }
-+#line 4022 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 169:
--#line 1664 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1664 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.defsupertype).name = (yyvsp[(1) - (1)].text);
-+            (yyval.defsupertype).name = (yyvsp[0].text);
-         }
-+#line 4032 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 170:
--#line 1669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1669 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defsupertype) = (yyvsp[(2) - (3)].defsupertype);
-+            (yyval.defsupertype) = (yyvsp[-1].defsupertype);
-         }
-+#line 4040 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 172:
--#line 1675 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1675 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.defsupertype) = (yyvsp[(1) - (3)].defsupertype);
-+            (yyval.defsupertype) = (yyvsp[-2].defsupertype);
- 
--            switch ((yyvsp[(3) - (3)].defsupertype).token)
-+            switch ((yyvsp[0].defsupertype).token)
-             {
--            case TK_NAME: (yyval.defsupertype).name = (yyvsp[(3) - (3)].defsupertype).name; break;
-+            case TK_NAME: (yyval.defsupertype).name = (yyvsp[0].defsupertype).name; break;
-             }
-         }
-+#line 4053 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 173:
--#line 1685 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1685 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.defsupertype).token = TK_NAME;
- 
--            (yyval.defsupertype).name = (yyvsp[(3) - (3)].text);
-+            (yyval.defsupertype).name = (yyvsp[0].text);
-         }
-+#line 4063 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 174:
--#line 1692 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1692 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 classDef *ns;
- 
-                 ns = newClass(currentSpec, namespace_iface, NULL,
--                        fullyQualifiedName((yyvsp[(2) - (2)].hiddenns).name), NULL, NULL, NULL, NULL);
-+                        fullyQualifiedName((yyvsp[0].hiddenns).name), NULL, NULL, NULL, NULL);
-                 setHiddenNamespace(ns);
-             }
-         }
-+#line 4078 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 175:
--#line 1704 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1704 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.hiddenns).name = (yyvsp[(1) - (1)].scpvalp);
-+            (yyval.hiddenns).name = (yyvsp[0].scpvalp);
-         }
-+#line 4088 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 176:
--#line 1709 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1709 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.hiddenns) = (yyvsp[(2) - (3)].hiddenns);
-+            (yyval.hiddenns) = (yyvsp[-1].hiddenns);
-         }
-+#line 4096 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 178:
--#line 1715 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1715 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.hiddenns) = (yyvsp[(1) - (3)].hiddenns);
-+            (yyval.hiddenns) = (yyvsp[-2].hiddenns);
- 
--            switch ((yyvsp[(3) - (3)].hiddenns).token)
-+            switch ((yyvsp[0].hiddenns).token)
-             {
--            case TK_NAME: (yyval.hiddenns).name = (yyvsp[(3) - (3)].hiddenns).name; break;
-+            case TK_NAME: (yyval.hiddenns).name = (yyvsp[0].hiddenns).name; break;
-             }
-         }
-+#line 4109 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 179:
--#line 1725 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1725 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.hiddenns).token = TK_NAME;
- 
--            (yyval.hiddenns).name = (yyvsp[(3) - (3)].scpvalp);
-+            (yyval.hiddenns).name = (yyvsp[0].scpvalp);
-         }
-+#line 4119 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 180:
--#line 1732 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1732 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("%ConsolidatedModule is deprecated and will not be supported by SIP v5");
- 
-@@ -4366,99 +4132,109 @@
-                 if (currentModule->fullname != NULL)
-                     yyerror("%ConsolidatedModule must appear before any %Module or %CModule directive");
- 
--                setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].consmodule).name);
--                currentModule->docstring = (yyvsp[(3) - (3)].consmodule).docstring;
-+                setModuleName(currentSpec, currentModule, (yyvsp[-1].consmodule).name);
-+                currentModule->docstring = (yyvsp[0].consmodule).docstring;
- 
-                 setIsConsolidated(currentModule);
-             }
-         }
-+#line 4142 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 181:
--#line 1752 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1752 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.consmodule).name = (yyvsp[(1) - (1)].text);
-+            (yyval.consmodule).name = (yyvsp[0].text);
-         }
-+#line 4152 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 182:
--#line 1757 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1757 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.consmodule) = (yyvsp[(2) - (3)].consmodule);
-+            (yyval.consmodule) = (yyvsp[-1].consmodule);
-         }
-+#line 4160 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 184:
--#line 1763 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1763 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.consmodule) = (yyvsp[(1) - (3)].consmodule);
-+            (yyval.consmodule) = (yyvsp[-2].consmodule);
- 
--            switch ((yyvsp[(3) - (3)].consmodule).token)
-+            switch ((yyvsp[0].consmodule).token)
-             {
--            case TK_NAME: (yyval.consmodule).name = (yyvsp[(3) - (3)].consmodule).name; break;
-+            case TK_NAME: (yyval.consmodule).name = (yyvsp[0].consmodule).name; break;
-             }
-         }
-+#line 4173 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 185:
--#line 1773 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1773 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.consmodule).token = TK_NAME;
- 
--            (yyval.consmodule).name = (yyvsp[(3) - (3)].text);
-+            (yyval.consmodule).name = (yyvsp[0].text);
-         }
-+#line 4183 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 186:
--#line 1780 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1780 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.consmodule).token = 0;
-             (yyval.consmodule).docstring = NULL;
-         }
-+#line 4192 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 187:
--#line 1784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1784 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.consmodule) = (yyvsp[(2) - (4)].consmodule);
-+            (yyval.consmodule) = (yyvsp[-2].consmodule);
-         }
-+#line 4200 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 189:
--#line 1790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1790 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.consmodule) = (yyvsp[(1) - (2)].consmodule);
-+            (yyval.consmodule) = (yyvsp[-1].consmodule);
- 
--            switch ((yyvsp[(2) - (2)].consmodule).token)
-+            switch ((yyvsp[0].consmodule).token)
-             {
--            case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[(2) - (2)].consmodule).docstring; break;
-+            case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[0].consmodule).docstring; break;
-             }
-         }
-+#line 4213 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 190:
--#line 1800 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1800 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.consmodule).token = TK_IF;
-         }
-+#line 4221 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 191:
--#line 1803 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1803 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.consmodule).token = TK_END;
-         }
-+#line 4229 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 192:
--#line 1806 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1806 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.consmodule).token = TK_DOCSTRING;
--                (yyval.consmodule).docstring = (yyvsp[(1) - (1)].docstr);
-+                (yyval.consmodule).docstring = (yyvsp[0].docstr);
-             }
-             else
-             {
-@@ -4466,10 +4242,11 @@
-                 (yyval.consmodule).docstring = NULL;
-             }
-         }
-+#line 4246 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 193:
--#line 1820 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1820 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -4480,99 +4257,109 @@
-                 if (currentModule->fullname != NULL)
-                     yyerror("%CompositeModule must appear before any %Module directive");
- 
--                setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].compmodule).name);
--                currentModule->docstring = (yyvsp[(3) - (3)].compmodule).docstring;
-+                setModuleName(currentSpec, currentModule, (yyvsp[-1].compmodule).name);
-+                currentModule->docstring = (yyvsp[0].compmodule).docstring;
- 
-                 setIsComposite(currentModule);
-             }
-         }
-+#line 4267 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 194:
--#line 1838 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1838 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.compmodule).name = (yyvsp[(1) - (1)].text);
-+            (yyval.compmodule).name = (yyvsp[0].text);
-         }
-+#line 4277 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 195:
--#line 1843 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1843 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.compmodule) = (yyvsp[(2) - (3)].compmodule);
-+            (yyval.compmodule) = (yyvsp[-1].compmodule);
-         }
-+#line 4285 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 197:
--#line 1849 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1849 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.compmodule) = (yyvsp[(1) - (3)].compmodule);
-+            (yyval.compmodule) = (yyvsp[-2].compmodule);
- 
--            switch ((yyvsp[(3) - (3)].compmodule).token)
-+            switch ((yyvsp[0].compmodule).token)
-             {
--            case TK_NAME: (yyval.compmodule).name = (yyvsp[(3) - (3)].compmodule).name; break;
-+            case TK_NAME: (yyval.compmodule).name = (yyvsp[0].compmodule).name; break;
-             }
-         }
-+#line 4298 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 198:
--#line 1859 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1859 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.compmodule).token = TK_NAME;
- 
--            (yyval.compmodule).name = (yyvsp[(3) - (3)].text);
-+            (yyval.compmodule).name = (yyvsp[0].text);
-         }
-+#line 4308 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 199:
--#line 1866 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1866 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.compmodule).token = 0;
-             (yyval.compmodule).docstring = NULL;
-         }
-+#line 4317 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 200:
--#line 1870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1870 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.compmodule) = (yyvsp[(2) - (4)].compmodule);
-+            (yyval.compmodule) = (yyvsp[-2].compmodule);
-         }
-+#line 4325 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 202:
--#line 1876 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1876 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.compmodule) = (yyvsp[(1) - (2)].compmodule);
-+            (yyval.compmodule) = (yyvsp[-1].compmodule);
- 
--            switch ((yyvsp[(2) - (2)].compmodule).token)
-+            switch ((yyvsp[0].compmodule).token)
-             {
--            case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[(2) - (2)].compmodule).docstring; break;
-+            case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[0].compmodule).docstring; break;
-             }
-         }
-+#line 4338 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 203:
--#line 1886 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1886 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.compmodule).token = TK_IF;
-         }
-+#line 4346 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 204:
--#line 1889 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1889 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.compmodule).token = TK_END;
-         }
-+#line 4354 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 205:
--#line 1892 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1892 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.compmodule).token = TK_DOCSTRING;
--                (yyval.compmodule).docstring = (yyvsp[(1) - (1)].docstr);
-+                (yyval.compmodule).docstring = (yyvsp[0].docstr);
-             }
-             else
-             {
-@@ -4580,90 +4367,97 @@
-                 (yyval.compmodule).docstring = NULL;
-             }
-         }
-+#line 4371 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 206:
--#line 1906 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1906 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (3)].module).name == NULL)
-+            if ((yyvsp[-1].module).name == NULL)
-                 yyerror("%Module must have a 'name' argument");
- 
-             if (notSkipping())
-                 currentModule = configureModule(currentSpec, currentModule,
--                        currentContext.filename, (yyvsp[(2) - (3)].module).name, (yyvsp[(2) - (3)].module).c_module,
--                        (yyvsp[(2) - (3)].module).kwargs, (yyvsp[(2) - (3)].module).use_arg_names, (yyvsp[(2) - (3)].module).use_limited_api,
--                        (yyvsp[(2) - (3)].module).call_super_init, (yyvsp[(2) - (3)].module).all_raise_py_exc,
--                        (yyvsp[(2) - (3)].module).def_error_handler, (yyvsp[(3) - (3)].module).docstring);
-+                        currentContext.filename, (yyvsp[-1].module).name, (yyvsp[-1].module).c_module,
-+                        (yyvsp[-1].module).kwargs, (yyvsp[-1].module).use_arg_names, (yyvsp[-1].module).use_limited_api,
-+                        (yyvsp[-1].module).call_super_init, (yyvsp[-1].module).all_raise_py_exc,
-+                        (yyvsp[-1].module).def_error_handler, (yyvsp[0].module).docstring);
-         }
-+#line 4387 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 207:
--#line 1917 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1917 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("%CModule is deprecated, use %Module and the 'language' argument instead");
- 
-             if (notSkipping())
-                 currentModule = configureModule(currentSpec, currentModule,
--                        currentContext.filename, (yyvsp[(2) - (3)].text), TRUE, defaultKwArgs,
-+                        currentContext.filename, (yyvsp[-1].text), TRUE, defaultKwArgs,
-                         FALSE, FALSE, -1, FALSE, NULL, NULL);
-         }
-+#line 4400 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 208:
--#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {resetLexerState();}
-+#line 4406 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 209:
--#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(3) - (3)].number) >= 0)
-+            if ((yyvsp[0].number) >= 0)
-                 deprecated("%Module version number should be specified using the 'version' argument");
- 
-             (yyval.module).c_module = FALSE;
-             (yyval.module).kwargs = defaultKwArgs;
--            (yyval.module).name = (yyvsp[(1) - (3)].text);
-+            (yyval.module).name = (yyvsp[-2].text);
-             (yyval.module).use_arg_names = FALSE;
-             (yyval.module).use_limited_api = FALSE;
-             (yyval.module).all_raise_py_exc = FALSE;
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4424 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 210:
--#line 1940 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1940 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.module) = (yyvsp[(2) - (3)].module);
-+            (yyval.module) = (yyvsp[-1].module);
-         }
-+#line 4432 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 212:
--#line 1946 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1946 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.module) = (yyvsp[(1) - (3)].module);
-+            (yyval.module) = (yyvsp[-2].module);
- 
--            switch ((yyvsp[(3) - (3)].module).token)
-+            switch ((yyvsp[0].module).token)
-             {
--            case TK_KWARGS: (yyval.module).kwargs = (yyvsp[(3) - (3)].module).kwargs; break;
--            case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[(3) - (3)].module).c_module; break;
--            case TK_NAME: (yyval.module).name = (yyvsp[(3) - (3)].module).name; break;
--            case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[(3) - (3)].module).use_arg_names; break;
--            case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[(3) - (3)].module).use_limited_api; break;
--            case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].module).all_raise_py_exc; break;
--            case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[(3) - (3)].module).call_super_init; break;
--            case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[(3) - (3)].module).def_error_handler; break;
-+            case TK_KWARGS: (yyval.module).kwargs = (yyvsp[0].module).kwargs; break;
-+            case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[0].module).c_module; break;
-+            case TK_NAME: (yyval.module).name = (yyvsp[0].module).name; break;
-+            case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[0].module).use_arg_names; break;
-+            case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[0].module).use_limited_api; break;
-+            case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[0].module).all_raise_py_exc; break;
-+            case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[0].module).call_super_init; break;
-+            case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[0].module).def_error_handler; break;
-             }
-         }
-+#line 4452 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 213:
--#line 1963 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1963 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_KWARGS;
- 
-             (yyval.module).c_module = FALSE;
--            (yyval.module).kwargs = convertKwArgs((yyvsp[(3) - (3)].text));
-+            (yyval.module).kwargs = convertKwArgs((yyvsp[0].text));
-             (yyval.module).name = NULL;
-             (yyval.module).use_arg_names = FALSE;
-             (yyval.module).use_limited_api = FALSE;
-@@ -4671,16 +4465,17 @@
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4469 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 214:
--#line 1975 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1975 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_LANGUAGE;
- 
--            if (strcmp((yyvsp[(3) - (3)].text), "C++") == 0)
-+            if (strcmp((yyvsp[0].text), "C++") == 0)
-                 (yyval.module).c_module = FALSE;
--            else if (strcmp((yyvsp[(3) - (3)].text), "C") == 0)
-+            else if (strcmp((yyvsp[0].text), "C") == 0)
-                 (yyval.module).c_module = TRUE;
-             else
-                 yyerror("%Module 'language' argument must be either \"C++\" or \"C\"");
-@@ -4693,42 +4488,45 @@
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4492 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 215:
--#line 1993 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1993 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_NAME;
- 
-             (yyval.module).c_module = FALSE;
-             (yyval.module).kwargs = defaultKwArgs;
--            (yyval.module).name = (yyvsp[(3) - (3)].text);
-+            (yyval.module).name = (yyvsp[0].text);
-             (yyval.module).use_arg_names = FALSE;
-             (yyval.module).use_limited_api = FALSE;
-             (yyval.module).all_raise_py_exc = FALSE;
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4509 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 216:
--#line 2005 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2005 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_USEARGNAMES;
- 
-             (yyval.module).c_module = FALSE;
-             (yyval.module).kwargs = defaultKwArgs;
-             (yyval.module).name = NULL;
--            (yyval.module).use_arg_names = (yyvsp[(3) - (3)].boolean);
-+            (yyval.module).use_arg_names = (yyvsp[0].boolean);
-             (yyval.module).use_limited_api = FALSE;
-             (yyval.module).all_raise_py_exc = FALSE;
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4526 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 217:
--#line 2017 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2017 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_USELIMITEDAPI;
- 
-@@ -4736,15 +4534,16 @@
-             (yyval.module).kwargs = defaultKwArgs;
-             (yyval.module).name = NULL;
-             (yyval.module).use_arg_names = FALSE;
--            (yyval.module).use_limited_api = (yyvsp[(3) - (3)].boolean);
-+            (yyval.module).use_limited_api = (yyvsp[0].boolean);
-             (yyval.module).all_raise_py_exc = FALSE;
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4543 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 218:
--#line 2029 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2029 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_ALLRAISEPYEXC;
- 
-@@ -4753,14 +4552,15 @@
-             (yyval.module).name = NULL;
-             (yyval.module).use_arg_names = FALSE;
-             (yyval.module).use_limited_api = FALSE;
--            (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].boolean);
-+            (yyval.module).all_raise_py_exc = (yyvsp[0].boolean);
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4560 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 219:
--#line 2041 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2041 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_CALLSUPERINIT;
- 
-@@ -4770,13 +4570,14 @@
-             (yyval.module).use_arg_names = FALSE;
-             (yyval.module).use_limited_api = FALSE;
-             (yyval.module).all_raise_py_exc = FALSE;
--            (yyval.module).call_super_init = (yyvsp[(3) - (3)].boolean);
-+            (yyval.module).call_super_init = (yyvsp[0].boolean);
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4577 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 220:
--#line 2053 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2053 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_DEFERRORHANDLER;
- 
-@@ -4787,16 +4588,17 @@
-             (yyval.module).use_limited_api = FALSE;
-             (yyval.module).all_raise_py_exc = FALSE;
-             (yyval.module).call_super_init = -1;
--            (yyval.module).def_error_handler = (yyvsp[(3) - (3)].text);
-+            (yyval.module).def_error_handler = (yyvsp[0].text);
-         }
-+#line 4594 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 221:
--#line 2065 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2065 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("%Module version numbers are deprecated and ignored");
- 
--            if ((yyvsp[(3) - (3)].number) < 0)
-+            if ((yyvsp[0].number) < 0)
-                 yyerror("%Module 'version' argument cannot be negative");
- 
-             (yyval.module).token = TK_VERSION;
-@@ -4810,63 +4612,70 @@
-             (yyval.module).call_super_init = -1;
-             (yyval.module).def_error_handler = NULL;
-         }
-+#line 4616 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 222:
--#line 2084 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2084 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = 0;
-             (yyval.module).docstring = NULL;
-         }
-+#line 4625 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 223:
--#line 2088 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2088 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.module) = (yyvsp[(2) - (4)].module);
-+            (yyval.module) = (yyvsp[-2].module);
-         }
-+#line 4633 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 225:
--#line 2094 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2094 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.module) = (yyvsp[(1) - (2)].module);
-+            (yyval.module) = (yyvsp[-1].module);
- 
--            switch ((yyvsp[(2) - (2)].module).token)
-+            switch ((yyvsp[0].module).token)
-             {
--            case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[(2) - (2)].module).docstring; break;
-+            case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[0].module).docstring; break;
-             }
-         }
-+#line 4646 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 226:
--#line 2104 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2104 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_IF;
-         }
-+#line 4654 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 227:
--#line 2107 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2107 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_END;
-         }
-+#line 4662 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 228:
--#line 2110 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2110 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.module).token = TK_AUTOPYNAME;
-         }
-+#line 4670 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 229:
--#line 2113 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2113 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.module).token = TK_DOCSTRING;
--                (yyval.module).docstring = (yyvsp[(1) - (1)].docstr);
-+                (yyval.module).docstring = (yyvsp[0].docstr);
-             }
-             else
-             {
-@@ -4874,10 +4683,11 @@
-                 (yyval.module).docstring = NULL;
-             }
-         }
-+#line 4687 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 231:
--#line 2128 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2128 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /*
-              * The grammar design is a bit broken and this is the easiest way
-@@ -4886,435 +4696,487 @@
- 
-             char *cp;
- 
--            for (cp = (yyvsp[(1) - (1)].text); *cp != '\0'; ++cp)
-+            for (cp = (yyvsp[0].text); *cp != '\0'; ++cp)
-                 if (*cp != '.' && *cp != '_' && !isalnum(*cp))
-                     yyerror("Invalid character in name");
- 
--            (yyval.text) = (yyvsp[(1) - (1)].text);
-+            (yyval.text) = (yyvsp[0].text);
-         }
-+#line 4706 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 232:
--#line 2144 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2144 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = -1;
-         }
-+#line 4714 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 234:
--#line 2150 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2150 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (2)].include).name == NULL)
-+            if ((yyvsp[0].include).name == NULL)
-                 yyerror("%Include must have a 'name' argument");
- 
-             if (notSkipping())
--                parseFile(NULL, (yyvsp[(2) - (2)].include).name, NULL, (yyvsp[(2) - (2)].include).optional);
-+                parseFile(NULL, (yyvsp[0].include).name, NULL, (yyvsp[0].include).optional);
-         }
-+#line 4726 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 235:
--#line 2159 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2159 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.include).name = (yyvsp[(1) - (1)].text);
-+            (yyval.include).name = (yyvsp[0].text);
-             (yyval.include).optional = FALSE;
-         }
-+#line 4737 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 236:
--#line 2165 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2165 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.include) = (yyvsp[(2) - (3)].include);
-+            (yyval.include) = (yyvsp[-1].include);
-         }
-+#line 4745 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 238:
--#line 2171 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2171 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.include) = (yyvsp[(1) - (3)].include);
-+            (yyval.include) = (yyvsp[-2].include);
- 
--            switch ((yyvsp[(3) - (3)].include).token)
-+            switch ((yyvsp[0].include).token)
-             {
--            case TK_NAME: (yyval.include).name = (yyvsp[(3) - (3)].include).name; break;
--            case TK_OPTIONAL: (yyval.include).optional = (yyvsp[(3) - (3)].include).optional; break;
-+            case TK_NAME: (yyval.include).name = (yyvsp[0].include).name; break;
-+            case TK_OPTIONAL: (yyval.include).optional = (yyvsp[0].include).optional; break;
-             }
-         }
-+#line 4759 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 239:
--#line 2182 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2182 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.include).token = TK_NAME;
- 
--            (yyval.include).name = (yyvsp[(3) - (3)].text);
-+            (yyval.include).name = (yyvsp[0].text);
-             (yyval.include).optional = FALSE;
-         }
-+#line 4770 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 240:
--#line 2188 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2188 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.include).token = TK_OPTIONAL;
- 
-             (yyval.include).name = NULL;
--            (yyval.include).optional = (yyvsp[(3) - (3)].boolean);
-+            (yyval.include).optional = (yyvsp[0].boolean);
-         }
-+#line 4781 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 241:
--#line 2196 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2196 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("%OptionalInclude is deprecated, use %Include and the 'optional' argument instead");
- 
-             if (notSkipping())
--                parseFile(NULL, (yyvsp[(2) - (2)].text), NULL, TRUE);
-+                parseFile(NULL, (yyvsp[0].text), NULL, TRUE);
-         }
-+#line 4792 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 242:
--#line 2204 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2204 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                newImport((yyvsp[(2) - (2)].import).name);
-+                newImport((yyvsp[0].import).name);
-         }
-+#line 4801 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 243:
--#line 2210 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2210 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.import).name = (yyvsp[(1) - (1)].text);
-+            (yyval.import).name = (yyvsp[0].text);
-         }
-+#line 4811 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 244:
--#line 2215 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2215 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.import) = (yyvsp[(2) - (3)].import);
-+            (yyval.import) = (yyvsp[-1].import);
-         }
-+#line 4819 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 246:
--#line 2221 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2221 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.import) = (yyvsp[(1) - (3)].import);
-+            (yyval.import) = (yyvsp[-2].import);
- 
--            switch ((yyvsp[(3) - (3)].import).token)
-+            switch ((yyvsp[0].import).token)
-             {
--            case TK_NAME: (yyval.import).name = (yyvsp[(3) - (3)].import).name; break;
-+            case TK_NAME: (yyval.import).name = (yyvsp[0].import).name; break;
-             }
-         }
-+#line 4832 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 247:
--#line 2231 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2231 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.import).token = TK_NAME;
- 
--            (yyval.import).name = (yyvsp[(3) - (3)].text);
-+            (yyval.import).name = (yyvsp[0].text);
-         }
-+#line 4842 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 248:
--#line 2238 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2238 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 4850 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 249:
--#line 2241 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2241 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4858 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 250:
--#line 2246 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2246 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 4866 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 251:
--#line 2249 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2249 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4874 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 252:
--#line 2254 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2254 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 4882 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 253:
--#line 2257 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2257 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4890 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 254:
--#line 2262 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2262 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->copying, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->copying, (yyvsp[0].codeb));
-         }
-+#line 4899 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 255:
--#line 2268 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2268 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[0].codeb));
-         }
-+#line 4908 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 256:
--#line 2274 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2274 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->hdrcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->hdrcode, (yyvsp[0].codeb));
-         }
-+#line 4917 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 257:
--#line 2280 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2280 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4925 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 258:
--#line 2285 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2285 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4933 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 259:
--#line 2290 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2290 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4941 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 260:
--#line 2295 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2295 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4949 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 261:
--#line 2300 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2300 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4957 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 262:
--#line 2305 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2305 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4965 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 263:
--#line 2310 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2310 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4973 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 264:
--#line 2315 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2315 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4981 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 265:
--#line 2320 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2320 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4989 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 266:
--#line 2325 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2325 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 4997 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 267:
--#line 2330 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2330 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 5005 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 268:
--#line 2335 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2335 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 5013 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 269:
--#line 2340 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2340 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->cppcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->cppcode, (yyvsp[0].codeb));
-         }
-+#line 5022 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 270:
--#line 2346 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2346 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 5030 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 271:
--#line 2351 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2351 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->preinitcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->preinitcode, (yyvsp[0].codeb));
-         }
-+#line 5039 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 272:
--#line 2357 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2357 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->initcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->initcode, (yyvsp[0].codeb));
-         }
-+#line 5048 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 273:
--#line 2363 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2363 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->postinitcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->postinitcode, (yyvsp[0].codeb));
-         }
-+#line 5057 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 274:
--#line 2369 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2369 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->unitcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->unitcode, (yyvsp[0].codeb));
-         }
-+#line 5066 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 275:
--#line 2375 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2375 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[0].codeb));
-         }
-+#line 5075 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 276:
--#line 2381 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2381 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Deprecated. */
-         }
-+#line 5083 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 277:
--#line 2386 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2386 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping() && !inMainModule())
--                appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[0].codeb));
-         }
-+#line 5092 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 278:
--#line 2392 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2392 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentModule->typehintcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentModule->typehintcode, (yyvsp[0].codeb));
-         }
-+#line 5101 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 279:
--#line 2398 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2398 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 5109 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 280:
--#line 2403 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2403 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping() && inMainModule())
--                appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
-         }
-+#line 5118 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 281:
--#line 2409 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2409 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
-         }
-+#line 5127 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 282:
--#line 2415 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2415 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                addAutoPyName(currentModule, (yyvsp[(2) - (2)].autopyname).remove_leading);
-+                addAutoPyName(currentModule, (yyvsp[0].autopyname).remove_leading);
-         }
-+#line 5136 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 283:
--#line 2421 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2421 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.autopyname) = (yyvsp[(2) - (3)].autopyname);
-+            (yyval.autopyname) = (yyvsp[-1].autopyname);
-         }
-+#line 5144 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 285:
--#line 2427 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2427 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.autopyname) = (yyvsp[(1) - (3)].autopyname);
-+            (yyval.autopyname) = (yyvsp[-2].autopyname);
- 
--            switch ((yyvsp[(3) - (3)].autopyname).token)
-+            switch ((yyvsp[0].autopyname).token)
-             {
--            case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].autopyname).remove_leading; break;
-+            case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[0].autopyname).remove_leading; break;
-             }
-         }
-+#line 5157 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 286:
--#line 2437 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2437 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.autopyname).token = TK_REMOVELEADING;
- 
--            (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].text);
-+            (yyval.autopyname).remove_leading = (yyvsp[0].text);
-         }
-+#line 5167 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 287:
--#line 2444 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2444 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.docstr) = sipMalloc(sizeof(docstringDef));
- 
--            (yyval.docstr)->signature = (yyvsp[(2) - (3)].docstring).signature;
--            (yyval.docstr)->text = (yyvsp[(3) - (3)].codeb)->frag;
--            free((yyvsp[(3) - (3)].codeb));
-+            (yyval.docstr)->signature = (yyvsp[-1].docstring).signature;
-+            (yyval.docstr)->text = (yyvsp[0].codeb)->frag;
-+            free((yyvsp[0].codeb));
- 
-             /* Format the docstring. */
--            if ((yyvsp[(2) - (3)].docstring).format == deindented)
-+            if ((yyvsp[-1].docstring).format == deindented)
-             {
-                 const char *cp;
-                 char *dp;
-@@ -5388,158 +5250,174 @@
-                 *dp = '\0';
-             }
-         }
-+#line 5254 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 288:
--#line 2528 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2528 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.docstring).format = currentModule->defdocstringfmt;
-             (yyval.docstring).signature = currentModule->defdocstringsig;
-         }
-+#line 5263 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 289:
--#line 2532 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2532 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.docstring).format = convertFormat((yyvsp[(1) - (1)].text));
-+            (yyval.docstring).format = convertFormat((yyvsp[0].text));
-             (yyval.docstring).signature = currentModule->defdocstringsig;
-         }
-+#line 5274 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 290:
--#line 2538 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2538 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.docstring) = (yyvsp[(2) - (3)].docstring);
-+            (yyval.docstring) = (yyvsp[-1].docstring);
-         }
-+#line 5282 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 292:
--#line 2544 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2544 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.docstring) = (yyvsp[(1) - (3)].docstring);
-+            (yyval.docstring) = (yyvsp[-2].docstring);
- 
--            switch ((yyvsp[(3) - (3)].docstring).token)
-+            switch ((yyvsp[0].docstring).token)
-             {
--            case TK_FORMAT: (yyval.docstring).format = (yyvsp[(3) - (3)].docstring).format; break;
--            case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[(3) - (3)].docstring).signature; break;
-+            case TK_FORMAT: (yyval.docstring).format = (yyvsp[0].docstring).format; break;
-+            case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[0].docstring).signature; break;
-             }
-         }
-+#line 5296 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 293:
--#line 2555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2555 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.docstring).token = TK_FORMAT;
- 
--            (yyval.docstring).format = convertFormat((yyvsp[(3) - (3)].text));
-+            (yyval.docstring).format = convertFormat((yyvsp[0].text));
-             (yyval.docstring).signature = currentModule->defdocstringsig;
-         }
-+#line 5307 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 294:
--#line 2561 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2561 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.docstring).token = TK_SIGNATURE;
- 
-             (yyval.docstring).format = currentModule->defdocstringfmt;
--            (yyval.docstring).signature = convertSignature((yyvsp[(3) - (3)].text));
-+            (yyval.docstring).signature = convertSignature((yyvsp[0].text));
-         }
-+#line 5318 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 295:
--#line 2569 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2569 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.docstr) = NULL;
-         }
-+#line 5326 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 297:
--#line 2575 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2575 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (3)].extract).id == NULL)
-+            if ((yyvsp[-1].extract).id == NULL)
-                 yyerror("%Extract must have an 'id' argument");
- 
-             if (notSkipping())
--                addExtractPart(currentSpec, (yyvsp[(2) - (3)].extract).id, (yyvsp[(2) - (3)].extract).order, (yyvsp[(3) - (3)].codeb));
-+                addExtractPart(currentSpec, (yyvsp[-1].extract).id, (yyvsp[-1].extract).order, (yyvsp[0].codeb));
-         }
-+#line 5338 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 298:
--#line 2584 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2584 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             resetLexerState();
- 
--            (yyval.extract).id = (yyvsp[(1) - (1)].text);
-+            (yyval.extract).id = (yyvsp[0].text);
-             (yyval.extract).order = -1;
-         }
-+#line 5349 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 299:
--#line 2590 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2590 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.extract) = (yyvsp[(2) - (3)].extract);
-+            (yyval.extract) = (yyvsp[-1].extract);
-         }
-+#line 5357 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 301:
--#line 2596 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2596 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.extract) = (yyvsp[(1) - (3)].extract);
-+            (yyval.extract) = (yyvsp[-2].extract);
- 
--            switch ((yyvsp[(3) - (3)].extract).token)
-+            switch ((yyvsp[0].extract).token)
-             {
--            case TK_ID: (yyval.extract).id = (yyvsp[(3) - (3)].extract).id; break;
--            case TK_ORDER: (yyval.extract).order = (yyvsp[(3) - (3)].extract).order; break;
-+            case TK_ID: (yyval.extract).id = (yyvsp[0].extract).id; break;
-+            case TK_ORDER: (yyval.extract).order = (yyvsp[0].extract).order; break;
-             }
-         }
-+#line 5371 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 302:
--#line 2607 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2607 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.extract).token = TK_ID;
- 
--            (yyval.extract).id = (yyvsp[(3) - (3)].text);
-+            (yyval.extract).id = (yyvsp[0].text);
-             (yyval.extract).order = -1;
-         }
-+#line 5382 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 303:
--#line 2613 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2613 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.extract).token = TK_ORDER;
- 
--            if ((yyvsp[(3) - (3)].number) < 0)
-+            if ((yyvsp[0].number) < 0)
-                 yyerror("The 'order' of an %Extract directive must not be negative");
- 
-             (yyval.extract).id = NULL;
--            (yyval.extract).order = (yyvsp[(3) - (3)].number);
-+            (yyval.extract).order = (yyvsp[0].number);
-         }
-+#line 5396 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 304:
--#line 2624 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2624 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Deprecated. */
-         }
-+#line 5404 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 307:
--#line 2633 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2633 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(1) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[-1].codeb);
- 
--            append(&(yyval.codeb)->frag, (yyvsp[(2) - (2)].codeb)->frag);
-+            append(&(yyval.codeb)->frag, (yyvsp[0].codeb)->frag);
- 
--            free((yyvsp[(2) - (2)].codeb)->frag);
--            free((yyvsp[(2) - (2)].codeb));
-+            free((yyvsp[0].codeb)->frag);
-+            free((yyvsp[0].codeb));
-         }
-+#line 5417 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 308:
--#line 2643 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2643 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -5550,71 +5428,79 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
-+                checkAnnos(&(yyvsp[0].optflags), annos);
- 
-                 if (sectionFlags != 0 && (sectionFlags & ~(SECT_IS_PUBLIC | SECT_IS_PROT)) != 0)
-                     yyerror("Class enums must be in the public or protected sections");
- 
--                if (currentSpec->genc && (yyvsp[(2) - (4)].boolean))
-+                if (currentSpec->genc && (yyvsp[-2].boolean))
-                     yyerror("Scoped enums not allowed in a C module");
- 
-                 currentEnum = newEnum(currentSpec, currentModule,
--                        currentMappedType, (yyvsp[(3) - (4)].text), &(yyvsp[(4) - (4)].optflags), sectionFlags, (yyvsp[(2) - (4)].boolean));
-+                        currentMappedType, (yyvsp[-1].text), &(yyvsp[0].optflags), sectionFlags, (yyvsp[-2].boolean));
-             }
-         }
-+#line 5444 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 310:
--#line 2667 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2667 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = FALSE;
-         }
-+#line 5452 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 311:
--#line 2670 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2670 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = TRUE;
-         }
-+#line 5460 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 312:
--#line 2673 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2673 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = TRUE;
-         }
-+#line 5468 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 313:
--#line 2678 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2678 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.text) = NULL;
-         }
-+#line 5476 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 314:
--#line 2681 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2681 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.text) = (yyvsp[(1) - (1)].text);
-+            (yyval.text) = (yyvsp[0].text);
-         }
-+#line 5484 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 315:
--#line 2686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2686 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.text) = NULL;
-         }
-+#line 5492 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 316:
--#line 2689 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2689 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.text) = (yyvsp[(1) - (1)].text);
-+            (yyval.text) = (yyvsp[0].text);
-         }
-+#line 5500 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 323:
--#line 2704 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2704 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -5626,15 +5512,15 @@
- 
-                 enumMemberDef *emd, **tail;
- 
--                checkAnnos(&(yyvsp[(3) - (4)].optflags), annos);
-+                checkAnnos(&(yyvsp[-1].optflags), annos);
- 
-                 /* Note that we don't use the assigned value. */
-                 emd = sipMalloc(sizeof (enumMemberDef));
- 
-                 emd->pyname = cacheName(currentSpec,
--                        getPythonName(currentModule, &(yyvsp[(3) - (4)].optflags), (yyvsp[(1) - (4)].text)));
--                emd->cname = (yyvsp[(1) - (4)].text);
--                emd->no_typehint = getNoTypeHint(&(yyvsp[(3) - (4)].optflags));
-+                        getPythonName(currentModule, &(yyvsp[-1].optflags), (yyvsp[-3].text)));
-+                emd->cname = (yyvsp[-3].text);
-+                emd->no_typehint = getNoTypeHint(&(yyvsp[-1].optflags));
-                 emd->ed = currentEnum;
-                 emd->platforms = currentPlatforms;
-                 emd->next = NULL;
-@@ -5652,207 +5538,232 @@
-                     setIsUsedName(emd->pyname);
-             }
-         }
-+#line 5542 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 328:
--#line 2751 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2751 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.valp) = NULL;
-         }
-+#line 5550 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 329:
--#line 2754 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2754 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.valp) = (yyvsp[(2) - (2)].valp);
-+            (yyval.valp) = (yyvsp[0].valp);
-         }
-+#line 5558 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 331:
--#line 2760 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2760 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             valueDef *vd;
-  
--            if ((yyvsp[(1) - (3)].valp) -> vtype == string_value || (yyvsp[(3) - (3)].valp) -> vtype == string_value)
-+            if ((yyvsp[-2].valp) -> vtype == string_value || (yyvsp[0].valp) -> vtype == string_value)
-                 yyerror("Invalid binary operator for string");
-  
-             /* Find the last value in the existing expression. */
-  
--            for (vd = (yyvsp[(1) - (3)].valp); vd -> next != NULL; vd = vd -> next)
-+            for (vd = (yyvsp[-2].valp); vd -> next != NULL; vd = vd -> next)
-                 ;
-  
--            vd -> vbinop = (yyvsp[(2) - (3)].qchar);
--            vd -> next = (yyvsp[(3) - (3)].valp);
-+            vd -> vbinop = (yyvsp[-1].qchar);
-+            vd -> next = (yyvsp[0].valp);
- 
--            (yyval.valp) = (yyvsp[(1) - (3)].valp);
-+            (yyval.valp) = (yyvsp[-2].valp);
-         }
-+#line 5579 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 332:
--#line 2778 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2778 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '-';
-         }
-+#line 5587 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 333:
--#line 2781 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2781 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '+';
-         }
-+#line 5595 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 334:
--#line 2784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2784 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '*';
-         }
-+#line 5603 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 335:
--#line 2787 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2787 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '/';
-         }
-+#line 5611 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 336:
--#line 2790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2790 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '&';
-         }
-+#line 5619 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 337:
--#line 2793 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2793 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '|';
-         }
-+#line 5627 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 338:
--#line 2798 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2798 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '\0';
-         }
-+#line 5635 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 339:
--#line 2801 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2801 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '!';
-         }
-+#line 5643 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 340:
--#line 2804 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2804 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '~';
-         }
-+#line 5651 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 341:
--#line 2807 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2807 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '-';
-         }
-+#line 5659 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 342:
--#line 2810 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2810 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '+';
-         }
-+#line 5667 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 343:
--#line 2813 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2813 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '*';
-         }
-+#line 5675 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 344:
--#line 2816 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2816 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.qchar) = '&';
-         }
-+#line 5683 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 345:
--#line 2821 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2821 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (3)].qchar) != '\0' && (yyvsp[(3) - (3)].value).vtype == string_value)
-+            if ((yyvsp[-1].qchar) != '\0' && (yyvsp[0].value).vtype == string_value)
-                 yyerror("Invalid unary operator for string");
-  
-             /* Convert the value to a simple expression on the heap. */
-             (yyval.valp) = sipMalloc(sizeof (valueDef));
-  
--            *(yyval.valp) = (yyvsp[(3) - (3)].value);
--            (yyval.valp)->vunop = (yyvsp[(2) - (3)].qchar);
-+            *(yyval.valp) = (yyvsp[0].value);
-+            (yyval.valp)->vunop = (yyvsp[-1].qchar);
-             (yyval.valp)->vbinop = '\0';
--            (yyval.valp)->cast = (yyvsp[(1) - (3)].scpvalp);
-+            (yyval.valp)->cast = (yyvsp[-2].scpvalp);
-             (yyval.valp)->next = NULL;
-         }
-+#line 5701 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 346:
--#line 2836 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2836 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.scpvalp) = NULL;
-         }
-+#line 5709 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 347:
--#line 2839 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2839 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.scpvalp) = (yyvsp[(2) - (3)].scpvalp);
-+            (yyval.scpvalp) = (yyvsp[-1].scpvalp);
-         }
-+#line 5717 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 348:
--#line 2844 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2844 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec->genc)
-                 yyerror("Scoped names are not allowed in a C module");
- 
--            (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[(2) - (2)].scpvalp));
-+            (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[0].scpvalp));
-         }
-+#line 5728 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 351:
--#line 2854 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2854 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec->genc)
-                 yyerror("Scoped names are not allowed in a C module");
- 
--            appendScopedName(&(yyvsp[(1) - (3)].scpvalp), (yyvsp[(3) - (3)].scpvalp));
-+            appendScopedName(&(yyvsp[-2].scpvalp), (yyvsp[0].scpvalp));
-         }
-+#line 5739 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 352:
--#line 2862 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2862 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.scpvalp) = text2scopePart((yyvsp[(1) - (1)].text));
-+            (yyval.scpvalp) = text2scopePart((yyvsp[0].text));
-         }
-+#line 5747 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 353:
--#line 2867 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2867 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = TRUE;
-         }
-+#line 5755 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 354:
--#line 2870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2870 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = FALSE;
-         }
-+#line 5763 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 355:
--#line 2875 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2875 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /*
-              * We let the C++ compiler decide if the value is a valid one - no
-@@ -5860,93 +5771,103 @@
-              */
- 
-             (yyval.value).vtype = scoped_value;
--            (yyval.value).u.vscp = (yyvsp[(1) - (1)].scpvalp);
-+            (yyval.value).u.vscp = (yyvsp[0].scpvalp);
-         }
-+#line 5777 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 356:
--#line 2884 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2884 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             fcallDef *fcd;
- 
-             fcd = sipMalloc(sizeof (fcallDef));
--            *fcd = (yyvsp[(3) - (4)].fcall);
--            fcd -> type = (yyvsp[(1) - (4)].memArg);
-+            *fcd = (yyvsp[-1].fcall);
-+            fcd -> type = (yyvsp[-3].memArg);
- 
-             (yyval.value).vtype = fcall_value;
-             (yyval.value).u.fcd = fcd;
-         }
-+#line 5792 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 357:
--#line 2894 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2894 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = real_value;
--            (yyval.value).u.vreal = (yyvsp[(1) - (1)].real);
-+            (yyval.value).u.vreal = (yyvsp[0].real);
-         }
-+#line 5801 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 358:
--#line 2898 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2898 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = numeric_value;
--            (yyval.value).u.vnum = (yyvsp[(1) - (1)].number);
-+            (yyval.value).u.vnum = (yyvsp[0].number);
-         }
-+#line 5810 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 359:
--#line 2902 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2902 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = numeric_value;
--            (yyval.value).u.vnum = (yyvsp[(1) - (1)].boolean);
-+            (yyval.value).u.vnum = (yyvsp[0].boolean);
-         }
-+#line 5819 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 360:
--#line 2906 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2906 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = numeric_value;
-             (yyval.value).u.vnum = 0;
-         }
-+#line 5828 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 361:
--#line 2910 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2910 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = string_value;
--            (yyval.value).u.vstr = (yyvsp[(1) - (1)].text);
-+            (yyval.value).u.vstr = (yyvsp[0].text);
-         }
-+#line 5837 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 362:
--#line 2914 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2914 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.value).vtype = qchar_value;
--            (yyval.value).u.vqchar = (yyvsp[(1) - (1)].qchar);
-+            (yyval.value).u.vqchar = (yyvsp[0].qchar);
-         }
-+#line 5846 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 363:
--#line 2920 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2920 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* No values. */
- 
-             (yyval.fcall).nrArgs = 0;
-         }
-+#line 5856 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 364:
--#line 2925 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2925 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* The single or first expression. */
- 
--            (yyval.fcall).args[0] = (yyvsp[(1) - (1)].valp);
-+            (yyval.fcall).args[0] = (yyvsp[0].valp);
-             (yyval.fcall).nrArgs = 1;
-         }
-+#line 5867 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 365:
--#line 2931 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2931 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Check that it wasn't ...(,expression...). */
- 
-@@ -5955,18 +5876,19 @@
- 
-             /* Check there is room. */
- 
--            if ((yyvsp[(1) - (3)].fcall).nrArgs == MAX_NR_ARGS)
-+            if ((yyvsp[-2].fcall).nrArgs == MAX_NR_ARGS)
-                 yyerror("Internal error - increase the value of MAX_NR_ARGS");
- 
--            (yyval.fcall) = (yyvsp[(1) - (3)].fcall);
-+            (yyval.fcall) = (yyvsp[-2].fcall);
- 
--            (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[(3) - (3)].valp);
-+            (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[0].valp);
-             (yyval.fcall).nrArgs++;
-         }
-+#line 5888 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 366:
--#line 2949 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2949 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -5983,16 +5905,17 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(4) - (6)].optflags), annos);
-+                checkAnnos(&(yyvsp[-2].optflags), annos);
- 
--                applyTypeFlags(currentModule, &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags));
--                newTypedef(currentSpec, currentModule, (yyvsp[(3) - (6)].text), &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags), (yyvsp[(6) - (6)].docstr));
-+                applyTypeFlags(currentModule, &(yyvsp[-4].memArg), &(yyvsp[-2].optflags));
-+                newTypedef(currentSpec, currentModule, (yyvsp[-3].text), &(yyvsp[-4].memArg), &(yyvsp[-2].optflags), (yyvsp[0].docstr));
-             }
-         }
-+#line 5915 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 367:
--#line 2971 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2971 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6011,40 +5934,42 @@
-                 signatureDef *sig;
-                 argDef ftype;
- 
--                checkAnnos(&(yyvsp[(10) - (12)].optflags), annos);
-+                checkAnnos(&(yyvsp[-2].optflags), annos);
- 
--                applyTypeFlags(currentModule, &(yyvsp[(2) - (12)].memArg), &(yyvsp[(10) - (12)].optflags));
-+                applyTypeFlags(currentModule, &(yyvsp[-10].memArg), &(yyvsp[-2].optflags));
- 
-                 memset(&ftype, 0, sizeof (argDef));
- 
-                 /* Create the full signature on the heap. */
-                 sig = sipMalloc(sizeof (signatureDef));
--                *sig = (yyvsp[(8) - (12)].signature);
--                sig->result = (yyvsp[(2) - (12)].memArg);
-+                *sig = (yyvsp[-4].signature);
-+                sig->result = (yyvsp[-10].memArg);
- 
-                 /* Create the full type. */
-                 ftype.atype = function_type;
-                 ftype.nrderefs = 1;
-                 ftype.u.sa = sig;
- 
--                newTypedef(currentSpec, currentModule, (yyvsp[(5) - (12)].text), &ftype, &(yyvsp[(10) - (12)].optflags), (yyvsp[(12) - (12)].docstr));
-+                newTypedef(currentSpec, currentModule, (yyvsp[-7].text), &ftype, &(yyvsp[-2].optflags), (yyvsp[0].docstr));
-             }
-         }
-+#line 5957 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 368:
--#line 3010 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3010 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if (currentSpec -> genc && (yyvsp[(2) - (2)].scpvalp)->next != NULL)
-+            if (currentSpec -> genc && (yyvsp[0].scpvalp)->next != NULL)
-                 yyerror("Namespaces not allowed in a C module");
- 
-             if (notSkipping())
-                 currentSupers = NULL;
-         }
-+#line 5969 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 369:
--#line 3016 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3016 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6074,32 +5999,35 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
-+                checkAnnos(&(yyvsp[0].optflags), annos);
- 
-                 if (currentSpec->genc && currentSupers != NULL)
-                     yyerror("Super-classes not allowed in a C module struct");
- 
--                defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
-+                defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
-                 sectionFlags = SECT_IS_PUBLIC;
-             }
-         }
-+#line 6012 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 370:
--#line 3053 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3053 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
-+                completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
-         }
-+#line 6021 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 371:
--#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentIsTemplate = TRUE;}
-+#line 6027 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 372:
--#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec->genc)
-                 yyerror("Class templates not allowed in a C module");
-@@ -6111,12 +6039,12 @@
-                 /*
-                  * Make sure there is room for the extra class name argument.
-                  */
--                if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+                if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
-                     yyerror("Internal error - increase the value of MAX_NR_ARGS");
- 
-                 tcd = sipMalloc(sizeof (classTmplDef));
--                tcd->sig = (yyvsp[(1) - (3)].signature);
--                tcd->cd = (yyvsp[(3) - (3)].klass);
-+                tcd->sig = (yyvsp[-2].signature);
-+                tcd->cd = (yyvsp[0].klass);
-                 tcd->next = currentSpec->classtemplates;
- 
-                 currentSpec->classtemplates = tcd;
-@@ -6124,17 +6052,19 @@
- 
-             currentIsTemplate = FALSE;
-         }
-+#line 6056 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 373:
--#line 3085 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3085 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.signature) = (yyvsp[(3) - (4)].signature);
-+            (yyval.signature) = (yyvsp[-1].signature);
-         }
-+#line 6064 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 374:
--#line 3090 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3090 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec->genc)
-                 yyerror("Class definition not allowed in a C module");
-@@ -6142,10 +6072,11 @@
-             if (notSkipping())
-                 currentSupers = NULL;
-         }
-+#line 6076 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 375:
--#line 3096 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3096 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6174,30 +6105,32 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
-+                checkAnnos(&(yyvsp[0].optflags), annos);
- 
--                defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
-+                defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
-                 sectionFlags = SECT_IS_PRIVATE;
-             }
-         }
-+#line 6115 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 376:
--#line 3129 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3129 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                (yyval.klass) = completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
-+                (yyval.klass) = completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
-         }
-+#line 6124 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 381:
--#line 3143 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3143 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if (notSkipping() && (yyvsp[(1) - (2)].token) == TK_PUBLIC)
-+            if (notSkipping() && (yyvsp[-1].token) == TK_PUBLIC)
-             {
-                 argDef ad;
-                 classDef *super;
--                scopedNameDef *snd = (yyvsp[(2) - (2)].scpvalp);
-+                scopedNameDef *snd = (yyvsp[0].scpvalp);
- 
-                 /*
-                  * This is a hack to allow typedef'ed classes to be used before
-@@ -6242,52 +6175,59 @@
-                 appendToClassList(&currentSupers, super);
-             }
-         }
-+#line 6179 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 382:
--#line 3195 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3195 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-         (yyval.token) = TK_PUBLIC;
-         }
-+#line 6187 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 383:
--#line 3198 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3198 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-         (yyval.token) = TK_PUBLIC;
-         }
-+#line 6195 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 384:
--#line 3201 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3201 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-         (yyval.token) = TK_PROTECTED;
-         }
-+#line 6203 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 385:
--#line 3204 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3204 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-         (yyval.token) = TK_PRIVATE;
-         }
-+#line 6211 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 386:
--#line 3209 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3209 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = FALSE;
-         }
-+#line 6219 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 387:
--#line 3212 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3212 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.boolean) = TRUE;
-         }
-+#line 6227 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 401:
--#line 3232 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3232 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6296,29 +6236,32 @@
-                 if (scope->docstring != NULL)
-                     yyerror("%Docstring already given for class");
- 
--                scope->docstring = (yyvsp[(1) - (1)].docstr);
-+                scope->docstring = (yyvsp[0].docstr);
-             }
-         }
-+#line 6243 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 402:
--#line 3243 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3243 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentScope()->cppcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&currentScope()->cppcode, (yyvsp[0].codeb));
-         }
-+#line 6252 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 403:
--#line 3247 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3247 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
--                appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[0].codeb));
-         }
-+#line 6261 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 404:
--#line 3251 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3251 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6327,13 +6270,14 @@
-                 if (scope->travcode != NULL)
-                     yyerror("%GCTraverseCode already given for class");
- 
--                appendCodeBlock(&scope->travcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->travcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6277 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 405:
--#line 3262 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3262 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6342,13 +6286,14 @@
-                 if (scope->clearcode != NULL)
-                     yyerror("%GCClearCode already given for class");
- 
--                appendCodeBlock(&scope->clearcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->clearcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6293 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 406:
--#line 3273 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3273 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6357,13 +6302,14 @@
-                 if (scope->getbufcode != NULL)
-                     yyerror("%BIGetBufferCode already given for class");
- 
--                appendCodeBlock(&scope->getbufcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->getbufcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6309 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 407:
--#line 3284 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3284 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6372,13 +6318,14 @@
-                 if (scope->releasebufcode != NULL)
-                     yyerror("%BIReleaseBufferCode already given for class");
- 
--                appendCodeBlock(&scope->releasebufcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->releasebufcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6325 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 408:
--#line 3295 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3295 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6387,13 +6334,14 @@
-                 if (scope->readbufcode != NULL)
-                     yyerror("%BIGetReadBufferCode already given for class");
- 
--                appendCodeBlock(&scope->readbufcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->readbufcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6341 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 409:
--#line 3306 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3306 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6402,13 +6350,14 @@
-                 if (scope->writebufcode != NULL)
-                     yyerror("%BIGetWriteBufferCode already given for class");
- 
--                appendCodeBlock(&scope->writebufcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->writebufcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6357 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 410:
--#line 3317 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3317 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6417,13 +6366,14 @@
-                 if (scope->segcountcode != NULL)
-                     yyerror("%BIGetSegCountCode already given for class");
- 
--                appendCodeBlock(&scope->segcountcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->segcountcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6373 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 411:
--#line 3328 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3328 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6432,13 +6382,14 @@
-                 if (scope->charbufcode != NULL)
-                     yyerror("%BIGetCharBufferCode already given for class");
- 
--                appendCodeBlock(&scope->charbufcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->charbufcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6389 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 412:
--#line 3339 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3339 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6447,13 +6398,14 @@
-                 if (scope->instancecode != NULL)
-                     yyerror("%InstanceCode already given for class");
- 
--                appendCodeBlock(&scope->instancecode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->instancecode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6405 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 413:
--#line 3350 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3350 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6462,13 +6414,14 @@
-                 if (scope->picklecode != NULL)
-                     yyerror("%PickleCode already given for class");
- 
--                appendCodeBlock(&scope->picklecode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->picklecode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6421 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 414:
--#line 3361 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3361 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6477,13 +6430,14 @@
-                 if (scope->finalcode != NULL)
-                     yyerror("%FinalisationCode already given for class");
- 
--                appendCodeBlock(&scope->finalcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->finalcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6437 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 415:
--#line 3372 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3372 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6492,13 +6446,14 @@
-                 if (scope->typehintcode != NULL)
-                     yyerror("%TypeHintCode already given for class");
- 
--                appendCodeBlock(&scope->typehintcode, (yyvsp[(1) - (1)].codeb));
-+                appendCodeBlock(&scope->typehintcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6453 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 419:
--#line 3386 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3386 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6507,13 +6462,14 @@
-                 if (scope->convtosubcode != NULL)
-                     yyerror("Class has more than one %ConvertToSubClassCode directive");
- 
--                appendCodeBlock(&scope->convtosubcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&scope->convtosubcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6469 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 420:
--#line 3397 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3397 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6522,13 +6478,14 @@
-                 if (scope->convtocode != NULL)
-                     yyerror("Class has more than one %ConvertToTypeCode directive");
- 
--                appendCodeBlock(&scope->convtocode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&scope->convtocode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6485 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 421:
--#line 3408 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3408 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6537,46 +6494,50 @@
-                 if (scope->convfromcode != NULL)
-                     yyerror("Class has more than one %ConvertFromTypeCode directive");
- 
--                appendCodeBlock(&scope->convfromcode, (yyvsp[(2) - (2)].codeb));
-+                appendCodeBlock(&scope->convfromcode, (yyvsp[0].codeb));
-             }
-         }
-+#line 6501 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 422:
--#line 3419 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3419 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("public section not allowed in a C module");
- 
-             if (notSkipping())
--                sectionFlags = SECT_IS_PUBLIC | (yyvsp[(2) - (3)].number);
-+                sectionFlags = SECT_IS_PUBLIC | (yyvsp[-1].number);
-         }
-+#line 6513 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 423:
--#line 3426 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3426 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("protected section not allowed in a C module");
- 
-             if (notSkipping())
--                sectionFlags = SECT_IS_PROT | (yyvsp[(2) - (3)].number);
-+                sectionFlags = SECT_IS_PROT | (yyvsp[-1].number);
-         }
-+#line 6525 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 424:
--#line 3433 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3433 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("private section not allowed in a C module");
- 
-             if (notSkipping())
--                sectionFlags = SECT_IS_PRIVATE | (yyvsp[(2) - (3)].number);
-+                sectionFlags = SECT_IS_PRIVATE | (yyvsp[-1].number);
-         }
-+#line 6537 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 425:
--#line 3440 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3440 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("signals section not allowed in a C module");
-@@ -6584,125 +6545,137 @@
-             if (notSkipping())
-                 sectionFlags = SECT_IS_SIGNAL;
-         }
-+#line 6549 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 426:
--#line 3449 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3449 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (3)].property).name == NULL)
-+            if ((yyvsp[-1].property).name == NULL)
-                 yyerror("A %Property directive must have a 'name' argument");
- 
--            if ((yyvsp[(2) - (3)].property).get == NULL)
-+            if ((yyvsp[-1].property).get == NULL)
-                 yyerror("A %Property directive must have a 'get' argument");
- 
-             if (notSkipping())
-                 addProperty(currentSpec, currentModule, currentScope(),
--                        (yyvsp[(2) - (3)].property).name, (yyvsp[(2) - (3)].property).get, (yyvsp[(2) - (3)].property).set, (yyvsp[(3) - (3)].property).docstring);
-+                        (yyvsp[-1].property).name, (yyvsp[-1].property).get, (yyvsp[-1].property).set, (yyvsp[0].property).docstring);
-         }
-+#line 6565 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 427:
--#line 3462 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3462 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.property) = (yyvsp[(2) - (3)].property);
-+            (yyval.property) = (yyvsp[-1].property);
-         }
-+#line 6573 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 429:
--#line 3468 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3468 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.property) = (yyvsp[(1) - (3)].property);
-+            (yyval.property) = (yyvsp[-2].property);
- 
--            switch ((yyvsp[(3) - (3)].property).token)
-+            switch ((yyvsp[0].property).token)
-             {
--            case TK_GET: (yyval.property).get = (yyvsp[(3) - (3)].property).get; break;
--            case TK_NAME: (yyval.property).name = (yyvsp[(3) - (3)].property).name; break;
--            case TK_SET: (yyval.property).set = (yyvsp[(3) - (3)].property).set; break;
-+            case TK_GET: (yyval.property).get = (yyvsp[0].property).get; break;
-+            case TK_NAME: (yyval.property).name = (yyvsp[0].property).name; break;
-+            case TK_SET: (yyval.property).set = (yyvsp[0].property).set; break;
-             }
-         }
-+#line 6588 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 430:
--#line 3480 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3480 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = TK_GET;
- 
--            (yyval.property).get = (yyvsp[(3) - (3)].text);
-+            (yyval.property).get = (yyvsp[0].text);
-             (yyval.property).name = NULL;
-             (yyval.property).set = NULL;
-         }
-+#line 6600 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 431:
--#line 3487 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3487 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = TK_NAME;
- 
-             (yyval.property).get = NULL;
--            (yyval.property).name = (yyvsp[(3) - (3)].text);
-+            (yyval.property).name = (yyvsp[0].text);
-             (yyval.property).set = NULL;
-         }
-+#line 6612 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 432:
--#line 3494 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3494 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = TK_SET;
- 
-             (yyval.property).get = NULL;
-             (yyval.property).name = NULL;
--            (yyval.property).set = (yyvsp[(3) - (3)].text);
-+            (yyval.property).set = (yyvsp[0].text);
-         }
-+#line 6624 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 433:
--#line 3503 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3503 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = 0;
-             (yyval.property).docstring = NULL;
-         }
-+#line 6633 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 434:
--#line 3507 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3507 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.property) = (yyvsp[(2) - (4)].property);
-+            (yyval.property) = (yyvsp[-2].property);
-         }
-+#line 6641 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 436:
--#line 3513 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3513 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.property) = (yyvsp[(1) - (2)].property);
-+            (yyval.property) = (yyvsp[-1].property);
- 
--            switch ((yyvsp[(2) - (2)].property).token)
-+            switch ((yyvsp[0].property).token)
-             {
--            case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[(2) - (2)].property).docstring; break;
-+            case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[0].property).docstring; break;
-             }
-         }
-+#line 6654 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 437:
--#line 3523 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3523 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = TK_IF;
-         }
-+#line 6662 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 438:
--#line 3526 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3526 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.property).token = TK_END;
-         }
-+#line 6670 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 439:
--#line 3529 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3529 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.property).token = TK_DOCSTRING;
--                (yyval.property).docstring = (yyvsp[(1) - (1)].docstr);
-+                (yyval.property).docstring = (yyvsp[0].docstr);
-             }
-             else
-             {
-@@ -6710,24 +6683,27 @@
-                 (yyval.property).docstring = NULL;
-             }
-         }
-+#line 6687 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 442:
--#line 3547 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3547 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = 0;
-         }
-+#line 6695 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 443:
--#line 3550 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3550 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = SECT_IS_SLOT;
-         }
-+#line 6703 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 444:
--#line 3555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3555 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Note that we allow non-virtual dtors in C modules. */
- 
-@@ -6741,22 +6717,22 @@
- 
-                 classDef *cd = currentScope();
- 
--                checkAnnos(&(yyvsp[(8) - (12)].optflags), annos);
-+                checkAnnos(&(yyvsp[-4].optflags), annos);
- 
--                if (strcmp(classBaseName(cd),(yyvsp[(3) - (12)].text)) != 0)
-+                if (strcmp(classBaseName(cd),(yyvsp[-9].text)) != 0)
-                     yyerror("Destructor doesn't have the same name as its class");
- 
-                 if (isDtor(cd))
-                     yyerror("Destructor has already been defined");
- 
--                if (currentSpec -> genc && (yyvsp[(10) - (12)].codeb) == NULL)
-+                if (currentSpec -> genc && (yyvsp[-2].codeb) == NULL)
-                     yyerror("Destructor in C modules must include %MethodCode");
- 
- 
--                appendCodeBlock(&cd->dealloccode, (yyvsp[(10) - (12)].codeb)); /* premethodcode */
--                appendCodeBlock(&cd->dealloccode, (yyvsp[(11) - (12)].codeb)); /* methodcode */
--                appendCodeBlock(&cd->dtorcode, (yyvsp[(12) - (12)].codeb));
--                cd -> dtorexceptions = (yyvsp[(6) - (12)].throwlist);
-+                appendCodeBlock(&cd->dealloccode, (yyvsp[-2].codeb)); /* premethodcode */
-+                appendCodeBlock(&cd->dealloccode, (yyvsp[-1].codeb)); /* methodcode */
-+                appendCodeBlock(&cd->dtorcode, (yyvsp[0].codeb));
-+                cd -> dtorexceptions = (yyvsp[-6].throwlist);
- 
-                 /*
-                  * Note that we don't apply the protected/public hack to dtors
-@@ -6764,9 +6740,9 @@
-                  */
-                 cd->classflags |= sectionFlags;
- 
--                if ((yyvsp[(7) - (12)].number))
-+                if ((yyvsp[-5].number))
-                 {
--                    if (!(yyvsp[(1) - (12)].number))
-+                    if (!(yyvsp[-11].number))
-                         yyerror("Abstract destructor must be virtual");
- 
-                     setIsAbstractClass(cd);
-@@ -6776,7 +6752,7 @@
-                  * The class has a shadow if we have a virtual dtor or some
-                  * dtor code.
-                  */
--                if ((yyvsp[(1) - (12)].number) || (yyvsp[(11) - (12)].codeb) != NULL)
-+                if ((yyvsp[-11].number) || (yyvsp[-1].codeb) != NULL)
-                 {
-                     if (currentSpec -> genc)
-                         yyerror("Virtual destructor or %VirtualCatcherCode not allowed in a C module");
-@@ -6784,21 +6760,23 @@
-                     setNeedsShadow(cd);
-                 }
- 
--                if (getReleaseGIL(&(yyvsp[(8) - (12)].optflags)))
-+                if (getReleaseGIL(&(yyvsp[-4].optflags)))
-                     setIsReleaseGILDtor(cd);
--                else if (getHoldGIL(&(yyvsp[(8) - (12)].optflags)))
-+                else if (getHoldGIL(&(yyvsp[-4].optflags)))
-                     setIsHoldGILDtor(cd);
-             }
-         }
-+#line 6770 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 445:
--#line 3619 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3619 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentCtorIsExplicit = TRUE;}
-+#line 6776 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 448:
--#line 3623 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3623 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Note that we allow ctors in C modules. */
- 
-@@ -6821,11 +6799,11 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(6) - (11)].optflags), annos);
-+                checkAnnos(&(yyvsp[-5].optflags), annos);
- 
-                 if (currentSpec -> genc)
-                 {
--                    if ((yyvsp[(10) - (11)].codeb) == NULL && (yyvsp[(3) - (11)].signature).nrArgs != 0)
-+                    if ((yyvsp[-1].codeb) == NULL && (yyvsp[-8].signature).nrArgs != 0)
-                         yyerror("Constructors with arguments in C modules must include %MethodCode");
- 
-                     if (currentCtorIsExplicit)
-@@ -6835,94 +6813,103 @@
-                 if ((sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE)) == 0)
-                     yyerror("Constructor must be in the public, private or protected sections");
- 
--                newCtor(currentModule, (yyvsp[(1) - (11)].text), sectionFlags, &(yyvsp[(3) - (11)].signature), &(yyvsp[(6) - (11)].optflags), (yyvsp[(11) - (11)].codeb), (yyvsp[(5) - (11)].throwlist), (yyvsp[(7) - (11)].optsignature),
--                        currentCtorIsExplicit, (yyvsp[(9) - (11)].docstr), (yyvsp[(10) - (11)].codeb));
-+                newCtor(currentModule, (yyvsp[-10].text), sectionFlags, &(yyvsp[-8].signature), &(yyvsp[-5].optflags), (yyvsp[0].codeb), (yyvsp[-6].throwlist), (yyvsp[-4].optsignature),
-+                        currentCtorIsExplicit, (yyvsp[-2].docstr), (yyvsp[-1].codeb));
-             }
- 
--            free((yyvsp[(1) - (11)].text));
-+            free((yyvsp[-10].text));
- 
-             currentCtorIsExplicit = FALSE;
-         }
-+#line 6825 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 449:
--#line 3669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3669 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.optsignature) = NULL;
-         }
-+#line 6833 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 450:
--#line 3672 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3672 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             parsingCSignature = TRUE;
-         }
-+#line 6841 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 451:
--#line 3674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3674 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
- 
--            *(yyval.optsignature) = (yyvsp[(4) - (6)].signature);
-+            *(yyval.optsignature) = (yyvsp[-2].signature);
- 
-             parsingCSignature = FALSE;
-         }
-+#line 6853 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 452:
--#line 3683 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3683 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.optsignature) = NULL;
-         }
-+#line 6861 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 453:
--#line 3686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3686 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             parsingCSignature = TRUE;
-         }
-+#line 6869 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 454:
--#line 3688 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3688 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
- 
--            *(yyval.optsignature) = (yyvsp[(5) - (7)].signature);
--            (yyval.optsignature)->result = (yyvsp[(3) - (7)].memArg);
-+            *(yyval.optsignature) = (yyvsp[-2].signature);
-+            (yyval.optsignature)->result = (yyvsp[-4].memArg);
- 
-             parsingCSignature = FALSE;
-         }
-+#line 6882 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 455:
--#line 3698 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3698 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = FALSE;
-         }
-+#line 6890 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 456:
--#line 3701 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3701 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = TRUE;
-         }
-+#line 6898 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 457:
--#line 3706 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3706 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
--                applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(10) - (17)].optflags));
-+                applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-7].optflags));
- 
--                (yyvsp[(4) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
-+                (yyvsp[-13].signature).result = (yyvsp[-16].memArg);
- 
-                 newFunction(currentSpec, currentModule, currentScope(), NULL,
-                         NULL, sectionFlags, currentIsStatic, currentIsSignal,
--                        currentIsSlot, currentOverIsVirt, (yyvsp[(2) - (17)].text), &(yyvsp[(4) - (17)].signature), (yyvsp[(6) - (17)].number), (yyvsp[(9) - (17)].number),
--                        &(yyvsp[(10) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(8) - (17)].throwlist), (yyvsp[(11) - (17)].optsignature), (yyvsp[(13) - (17)].docstr), (yyvsp[(7) - (17)].number), (yyvsp[(14) - (17)].codeb));
-+                        currentIsSlot, currentOverIsVirt, (yyvsp[-15].text), &(yyvsp[-13].signature), (yyvsp[-11].number), (yyvsp[-8].number),
-+                        &(yyvsp[-7].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-9].throwlist), (yyvsp[-6].optsignature), (yyvsp[-4].docstr), (yyvsp[-10].number), (yyvsp[-3].codeb));
-             }
- 
-             currentIsStatic = FALSE;
-@@ -6930,10 +6917,11 @@
-             currentIsSlot = FALSE;
-             currentOverIsVirt = FALSE;
-         }
-+#line 6921 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 458:
--#line 3724 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3724 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /*
-              * It looks like an assignment operator (though we don't bother to
-@@ -6954,10 +6942,11 @@
-             currentIsSlot = FALSE;
-             currentOverIsVirt = FALSE;
-         }
-+#line 6946 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 459:
--#line 3744 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3744 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -6978,23 +6967,23 @@
-                     ns_scope = NULL;
-                 }
- 
--                applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(11) - (17)].optflags));
-+                applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-6].optflags));
- 
-                 /* Handle the unary '+' and '-' operators. */
--                if ((cd != NULL && (yyvsp[(5) - (17)].signature).nrArgs == 0) || (cd == NULL && (yyvsp[(5) - (17)].signature).nrArgs == 1))
-+                if ((cd != NULL && (yyvsp[-12].signature).nrArgs == 0) || (cd == NULL && (yyvsp[-12].signature).nrArgs == 1))
-                 {
--                    if (strcmp((yyvsp[(3) - (17)].text), "__add__") == 0)
--                        (yyvsp[(3) - (17)].text) = "__pos__";
--                    else if (strcmp((yyvsp[(3) - (17)].text), "__sub__") == 0)
--                        (yyvsp[(3) - (17)].text) = "__neg__";
-+                    if (strcmp((yyvsp[-14].text), "__add__") == 0)
-+                        (yyvsp[-14].text) = "__pos__";
-+                    else if (strcmp((yyvsp[-14].text), "__sub__") == 0)
-+                        (yyvsp[-14].text) = "__neg__";
-                 }
- 
--                (yyvsp[(5) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
-+                (yyvsp[-12].signature).result = (yyvsp[-16].memArg);
- 
-                 newFunction(currentSpec, currentModule, cd, ns_scope, NULL,
-                         sectionFlags, currentIsStatic, currentIsSignal,
--                        currentIsSlot, currentOverIsVirt, (yyvsp[(3) - (17)].text), &(yyvsp[(5) - (17)].signature), (yyvsp[(7) - (17)].number), (yyvsp[(10) - (17)].number),
--                        &(yyvsp[(11) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(9) - (17)].throwlist), (yyvsp[(12) - (17)].optsignature), NULL, (yyvsp[(8) - (17)].number), (yyvsp[(14) - (17)].codeb));
-+                        currentIsSlot, currentOverIsVirt, (yyvsp[-14].text), &(yyvsp[-12].signature), (yyvsp[-10].number), (yyvsp[-7].number),
-+                        &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
-             }
- 
-             currentIsStatic = FALSE;
-@@ -7002,22 +6991,23 @@
-             currentIsSlot = FALSE;
-             currentOverIsVirt = FALSE;
-         }
-+#line 6995 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 460:
--#line 3788 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3788 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 char *sname;
-                 classDef *scope = currentScope();
- 
--                if (scope == NULL || (yyvsp[(4) - (16)].signature).nrArgs != 0)
-+                if (scope == NULL || (yyvsp[-12].signature).nrArgs != 0)
-                     yyerror("Operator casts must be specified in a class and have no arguments");
- 
--                applyTypeFlags(currentModule, &(yyvsp[(2) - (16)].memArg), &(yyvsp[(10) - (16)].optflags));
-+                applyTypeFlags(currentModule, &(yyvsp[-14].memArg), &(yyvsp[-6].optflags));
- 
--                switch ((yyvsp[(2) - (16)].memArg).atype)
-+                switch ((yyvsp[-14].memArg).atype)
-                 {
-                 case defined_type:
-                     sname = NULL;
-@@ -7056,12 +7046,12 @@
- 
-                 if (sname != NULL)
-                 {
--                    (yyvsp[(4) - (16)].signature).result = (yyvsp[(2) - (16)].memArg);
-+                    (yyvsp[-12].signature).result = (yyvsp[-14].memArg);
- 
-                     newFunction(currentSpec, currentModule, scope, NULL, NULL,
-                             sectionFlags, currentIsStatic, currentIsSignal,
--                            currentIsSlot, currentOverIsVirt, sname, &(yyvsp[(4) - (16)].signature), (yyvsp[(6) - (16)].number),
--                            (yyvsp[(9) - (16)].number), &(yyvsp[(10) - (16)].optflags), (yyvsp[(14) - (16)].codeb), (yyvsp[(15) - (16)].codeb), (yyvsp[(16) - (16)].codeb), (yyvsp[(8) - (16)].throwlist), (yyvsp[(11) - (16)].optsignature), NULL, (yyvsp[(7) - (16)].number), (yyvsp[(13) - (16)].codeb));
-+                            currentIsSlot, currentOverIsVirt, sname, &(yyvsp[-12].signature), (yyvsp[-10].number),
-+                            (yyvsp[-7].number), &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
-                 }
-                 else
-                 {
-@@ -7069,11 +7059,11 @@
- 
-                     /* Check it doesn't already exist. */
-                     for (al = scope->casts; al != NULL; al = al->next)
--                        if (compareScopedNames((yyvsp[(2) - (16)].memArg).u.snd, al->arg.u.snd) == 0)
-+                        if (compareScopedNames((yyvsp[-14].memArg).u.snd, al->arg.u.snd) == 0)
-                             yyerror("This operator cast has already been specified in this class");
- 
-                     al = sipMalloc(sizeof (argList));
--                    al->arg = (yyvsp[(2) - (16)].memArg);
-+                    al->arg = (yyvsp[-14].memArg);
-                     al->next = scope->casts;
- 
-                     scope->casts = al;
-@@ -7085,260 +7075,303 @@
-             currentIsSlot = FALSE;
-             currentOverIsVirt = FALSE;
-         }
-+#line 7079 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 461:
--#line 3869 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3869 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__add__";}
-+#line 7085 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 462:
--#line 3870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3870 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__sub__";}
-+#line 7091 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 463:
--#line 3871 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3871 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__mul__";}
-+#line 7097 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 464:
--#line 3872 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3872 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__div__";}
-+#line 7103 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 465:
--#line 3873 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3873 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__mod__";}
-+#line 7109 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 466:
--#line 3874 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3874 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__and__";}
-+#line 7115 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 467:
--#line 3875 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3875 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__or__";}
-+#line 7121 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 468:
--#line 3876 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3876 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__xor__";}
-+#line 7127 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 469:
--#line 3877 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3877 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__lshift__";}
-+#line 7133 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 470:
--#line 3878 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3878 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__rshift__";}
-+#line 7139 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 471:
--#line 3879 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3879 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__iadd__";}
-+#line 7145 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 472:
--#line 3880 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3880 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__isub__";}
-+#line 7151 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 473:
--#line 3881 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3881 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__imul__";}
-+#line 7157 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 474:
--#line 3882 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3882 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__idiv__";}
-+#line 7163 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 475:
--#line 3883 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3883 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__imod__";}
-+#line 7169 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 476:
--#line 3884 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3884 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__iand__";}
-+#line 7175 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 477:
--#line 3885 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3885 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__ior__";}
-+#line 7181 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 478:
--#line 3886 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3886 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__ixor__";}
-+#line 7187 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 479:
--#line 3887 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3887 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__ilshift__";}
-+#line 7193 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 480:
--#line 3888 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3888 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__irshift__";}
-+#line 7199 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 481:
--#line 3889 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3889 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__invert__";}
-+#line 7205 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 482:
--#line 3890 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3890 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__call__";}
-+#line 7211 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 483:
--#line 3891 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3891 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__getitem__";}
-+#line 7217 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 484:
--#line 3892 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3892 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__lt__";}
-+#line 7223 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 485:
--#line 3893 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3893 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__le__";}
-+#line 7229 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 486:
--#line 3894 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3894 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__eq__";}
-+#line 7235 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 487:
--#line 3895 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3895 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__ne__";}
-+#line 7241 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 488:
--#line 3896 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3896 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__gt__";}
-+#line 7247 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 489:
--#line 3897 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3897 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {(yyval.text) = "__ge__";}
-+#line 7253 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 490:
--#line 3900 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3900 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = FALSE;
-         }
-+#line 7261 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 491:
--#line 3903 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3903 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = TRUE;
-         }
-+#line 7269 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 492:
--#line 3908 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3908 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = FALSE;
-         }
-+#line 7277 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 493:
--#line 3911 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3911 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = TRUE;
-         }
-+#line 7285 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 494:
--#line 3916 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3916 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = 0;
-         }
-+#line 7293 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 495:
--#line 3919 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3919 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            if ((yyvsp[(2) - (2)].number) != 0)
-+            if ((yyvsp[0].number) != 0)
-                 yyerror("Abstract virtual function '= 0' expected");
- 
-             (yyval.number) = TRUE;
-         }
-+#line 7304 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 496:
--#line 3927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3927 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.optflags).nrFlags = 0;
-         }
-+#line 7312 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 497:
--#line 3930 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3930 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.optflags) = (yyvsp[(2) - (3)].optflags);
-+            (yyval.optflags) = (yyvsp[-1].optflags);
-         }
-+#line 7320 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 498:
--#line 3936 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3936 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.optflags).flags[0] = (yyvsp[(1) - (1)].flag);
-+            (yyval.optflags).flags[0] = (yyvsp[0].flag);
-             (yyval.optflags).nrFlags = 1;
-         }
-+#line 7329 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 499:
--#line 3940 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3940 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Check there is room. */
- 
--            if ((yyvsp[(1) - (3)].optflags).nrFlags == MAX_NR_FLAGS)
-+            if ((yyvsp[-2].optflags).nrFlags == MAX_NR_FLAGS)
-                 yyerror("Too many optional flags");
- 
--            (yyval.optflags) = (yyvsp[(1) - (3)].optflags);
-+            (yyval.optflags) = (yyvsp[-2].optflags);
- 
--            (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[(3) - (3)].flag);
-+            (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[0].flag);
-         }
-+#line 7344 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 500:
--#line 3952 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3952 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.flag).ftype = bool_flag;
--            (yyval.flag).fname = (yyvsp[(1) - (1)].text);
-+            (yyval.flag).fname = (yyvsp[0].text);
-         }
-+#line 7353 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 501:
--#line 3956 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3956 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.flag) = (yyvsp[(3) - (3)].flag);
--            (yyval.flag).fname = (yyvsp[(1) - (3)].text);
-+            (yyval.flag) = (yyvsp[0].flag);
-+            (yyval.flag).fname = (yyvsp[-2].text);
-         }
-+#line 7362 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 502:
--#line 3962 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3962 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.flag).ftype = (strchr((yyvsp[(1) - (1)].text), '.') != NULL) ? dotted_name_flag : name_flag;
--            (yyval.flag).fvalue.sval = (yyvsp[(1) - (1)].text);
-+            (yyval.flag).ftype = (strchr((yyvsp[0].text), '.') != NULL) ? dotted_name_flag : name_flag;
-+            (yyval.flag).fvalue.sval = (yyvsp[0].text);
-         }
-+#line 7371 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 503:
--#line 3966 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3966 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             apiVersionRangeDef *avd;
-             int from, to;
-@@ -7346,106 +7379,117 @@
-             (yyval.flag).ftype = api_range_flag;
- 
-             /* Check that the API is known. */
--            if ((avd = findAPI(currentSpec, (yyvsp[(1) - (5)].text))) == NULL)
-+            if ((avd = findAPI(currentSpec, (yyvsp[-4].text))) == NULL)
-                 yyerror("unknown API name in API annotation");
- 
-             if (inMainModule())
-                 setIsUsedName(avd->api_name);
- 
-             /* Unbounded values are represented by 0. */
--            if ((from = (yyvsp[(3) - (5)].number)) < 0)
-+            if ((from = (yyvsp[-2].number)) < 0)
-                 from = 0;
- 
--            if ((to = (yyvsp[(5) - (5)].number)) < 0)
-+            if ((to = (yyvsp[0].number)) < 0)
-                 to = 0;
- 
-             (yyval.flag).fvalue.aval = convertAPIRange(currentModule, avd->api_name,
-                     from, to);
-         }
-+#line 7399 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 504:
--#line 3989 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3989 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.flag).ftype = string_flag;
--            (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[(1) - (1)].text));
-+            (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[0].text));
-         }
-+#line 7408 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 505:
--#line 3993 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3993 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.flag).ftype = integer_flag;
--            (yyval.flag).fvalue.ival = (yyvsp[(1) - (1)].number);
-+            (yyval.flag).fvalue.ival = (yyvsp[0].number);
-         }
-+#line 7417 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 506:
--#line 3999 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3999 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 7425 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 507:
--#line 4002 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4002 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 7433 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 508:
--#line 4007 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4007 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 7441 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 509:
--#line 4010 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4010 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 7449 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 510:
--#line 4015 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4015 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 7457 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 511:
--#line 4018 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4018 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 7465 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 512:
--#line 4023 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4023 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.codeb) = NULL;
-         }
-+#line 7473 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 513:
--#line 4026 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4026 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+            (yyval.codeb) = (yyvsp[0].codeb);
-         }
-+#line 7481 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 514:
--#line 4031 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4031 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
- 
-             nrrxcon = nrrxdis = nrslotcon = nrslotdis = nrarray = nrarraysize = 0;
- 
--            for (a = 0; a < (yyvsp[(1) - (1)].signature).nrArgs; ++a)
-+            for (a = 0; a < (yyvsp[0].signature).nrArgs; ++a)
-             {
--                argDef *ad = &(yyvsp[(1) - (1)].signature).args[a];
-+                argDef *ad = &(yyvsp[0].signature).args[a];
- 
-                 switch (ad -> atype)
-                 {
-@@ -7486,104 +7530,111 @@
-             if (nrarray != nrarraysize || nrarray > 1)
-                 yyerror("/Array/ and /ArraySize/ must both be given and at most once");
- 
--            (yyval.signature) = (yyvsp[(1) - (1)].signature);
-+            (yyval.signature) = (yyvsp[0].signature);
-         }
-+#line 7536 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 515:
--#line 4083 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4083 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* No arguments. */
- 
-             (yyval.signature).nrArgs = 0;
-         }
-+#line 7546 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 516:
--#line 4088 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4088 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* The single or first argument. */
- 
--            (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
-+            (yyval.signature).args[0] = (yyvsp[0].memArg);
-             (yyval.signature).nrArgs = 1;
-         }
-+#line 7557 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 517:
--#line 4094 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4094 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Check that it wasn't ...(,arg...). */
--            if ((yyvsp[(1) - (3)].signature).nrArgs == 0)
-+            if ((yyvsp[-2].signature).nrArgs == 0)
-                 yyerror("First argument of the list is missing");
- 
-             /*
-              * If this argument has no default value, then the
-              * previous one mustn't either.
-              */
--            if ((yyvsp[(3) - (3)].memArg).defval == NULL && (yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].defval != NULL)
-+            if ((yyvsp[0].memArg).defval == NULL && (yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].defval != NULL)
-                 yyerror("Compulsory argument given after optional argument");
- 
-             /* Check there is room. */
--            if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+            if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
-                 yyerror("Internal error - increase the value of MAX_NR_ARGS");
- 
--            (yyval.signature) = (yyvsp[(1) - (3)].signature);
-+            (yyval.signature) = (yyvsp[-2].signature);
- 
--            (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
-+            (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
-             (yyval.signature).nrArgs++;
-         }
-+#line 7583 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 518:
--#line 4117 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4117 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_SIGNAL is deprecated\n");
--            checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SIGNAL has no annotations");
-+            checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SIGNAL has no annotations");
- 
-             (yyval.memArg).atype = signal_type;
-             (yyval.memArg).argflags = ARG_IS_CONST;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
--            (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+            (yyval.memArg).defval = (yyvsp[0].valp);
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7600 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 519:
--#line 4129 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4129 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_SLOT is deprecated\n");
--            checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SLOT has no annotations");
-+            checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SLOT has no annotations");
- 
-             (yyval.memArg).atype = slot_type;
-             (yyval.memArg).argflags = ARG_IS_CONST;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
--            (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+            (yyval.memArg).defval = (yyvsp[0].valp);
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7617 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 520:
--#line 4141 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4141 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_ANYSLOT is deprecated\n");
--            checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_ANYSLOT has no annotations");
-+            checkNoAnnos(&(yyvsp[-1].optflags), "SIP_ANYSLOT has no annotations");
- 
-             (yyval.memArg).atype = anyslot_type;
-             (yyval.memArg).argflags = ARG_IS_CONST;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
--            (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+            (yyval.memArg).defval = (yyvsp[0].valp);
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7634 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 521:
--#line 4153 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4153 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             const char *annos[] = {
-                 "SingleShot",
-@@ -7591,120 +7642,130 @@
-             };
- 
-             deprecated("SIP_RXOBJ_CON is deprecated\n");
--            checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+            checkAnnos(&(yyvsp[0].optflags), annos);
- 
-             (yyval.memArg).atype = rxcon_type;
-             (yyval.memArg).argflags = 0;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "SingleShot", bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags), "SingleShot", bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_SINGLE_SHOT;
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7658 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 522:
--#line 4172 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4172 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_RXOBJ_DIS is deprecated\n");
--            checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_RXOBJ_DIS has no annotations");
-+            checkNoAnnos(&(yyvsp[0].optflags), "SIP_RXOBJ_DIS has no annotations");
- 
-             (yyval.memArg).atype = rxdis_type;
-             (yyval.memArg).argflags = 0;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7674 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 523:
--#line 4183 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4183 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_SLOT_CON is deprecated\n");
--            checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_CON has no annotations");
-+            checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_CON has no annotations");
- 
-             (yyval.memArg).atype = slotcon_type;
-             (yyval.memArg).argflags = ARG_IS_CONST;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- 
--            memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
--            (yyvsp[(3) - (6)].signature).result.atype = void_type;
-+            memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
-+            (yyvsp[-3].signature).result.atype = void_type;
- 
-             (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
--            *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
-+            *(yyval.memArg).u.sa = (yyvsp[-3].signature);
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7696 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 524:
--#line 4200 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4200 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_SLOT_DIS is deprecated\n");
--            checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_DIS has no annotations");
-+            checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_DIS has no annotations");
- 
-             (yyval.memArg).atype = slotdis_type;
-             (yyval.memArg).argflags = ARG_IS_CONST;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- 
--            memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
--            (yyvsp[(3) - (6)].signature).result.atype = void_type;
-+            memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
-+            (yyvsp[-3].signature).result.atype = void_type;
- 
-             (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
--            *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
-+            *(yyval.memArg).u.sa = (yyvsp[-3].signature);
- 
-             currentSpec -> sigslots = TRUE;
-         }
-+#line 7718 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 525:
--#line 4217 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4217 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             deprecated("SIP_QOBJECT is deprecated\n");
--            checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_QOBJECT has no annotations");
-+            checkNoAnnos(&(yyvsp[0].optflags), "SIP_QOBJECT has no annotations");
- 
-             (yyval.memArg).atype = qobject_type;
-             (yyval.memArg).argflags = 0;
-             (yyval.memArg).nrderefs = 0;
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-         }
-+#line 7732 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 526:
--#line 4226 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4226 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.memArg) = (yyvsp[(1) - (2)].memArg);
--            (yyval.memArg).defval = (yyvsp[(2) - (2)].valp);
-+            (yyval.memArg) = (yyvsp[-1].memArg);
-+            (yyval.memArg).defval = (yyvsp[0].valp);
-         }
-+#line 7741 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 527:
--#line 4233 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4233 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentIsSignal = TRUE;}
-+#line 7747 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 529:
--#line 4234 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4234 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentIsSlot = TRUE;}
-+#line 7753 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 532:
--#line 4239 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4239 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentIsStatic = TRUE;}
-+#line 7759 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 537:
--#line 4249 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4249 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {currentOverIsVirt = TRUE;}
-+#line 7765 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 540:
--#line 4253 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4253 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-@@ -7719,99 +7780,105 @@
-                     NULL
-                 };
- 
--                checkAnnos(&(yyvsp[(3) - (8)].optflags), annos);
-+                checkAnnos(&(yyvsp[-5].optflags), annos);
- 
--                if ((yyvsp[(6) - (8)].codeb) != NULL)
-+                if ((yyvsp[-2].codeb) != NULL)
-                 {
--                    if ((yyvsp[(4) - (8)].variable).access_code != NULL)
-+                    if ((yyvsp[-4].variable).access_code != NULL)
-                         yyerror("%AccessCode already defined");
- 
--                    (yyvsp[(4) - (8)].variable).access_code = (yyvsp[(6) - (8)].codeb);
-+                    (yyvsp[-4].variable).access_code = (yyvsp[-2].codeb);
- 
-                     deprecated("%AccessCode should be used as a sub-directive");
-                 }
- 
--                if ((yyvsp[(7) - (8)].codeb) != NULL)
-+                if ((yyvsp[-1].codeb) != NULL)
-                 {
--                    if ((yyvsp[(4) - (8)].variable).get_code != NULL)
-+                    if ((yyvsp[-4].variable).get_code != NULL)
-                         yyerror("%GetCode already defined");
- 
--                    (yyvsp[(4) - (8)].variable).get_code = (yyvsp[(7) - (8)].codeb);
-+                    (yyvsp[-4].variable).get_code = (yyvsp[-1].codeb);
- 
-                     deprecated("%GetCode should be used as a sub-directive");
-                 }
- 
--                if ((yyvsp[(8) - (8)].codeb) != NULL)
-+                if ((yyvsp[0].codeb) != NULL)
-                 {
--                    if ((yyvsp[(4) - (8)].variable).set_code != NULL)
-+                    if ((yyvsp[-4].variable).set_code != NULL)
-                         yyerror("%SetCode already defined");
- 
--                    (yyvsp[(4) - (8)].variable).set_code = (yyvsp[(8) - (8)].codeb);
-+                    (yyvsp[-4].variable).set_code = (yyvsp[0].codeb);
- 
-                     deprecated("%SetCode should be used as a sub-directive");
-                 }
- 
--                newVar(currentSpec, currentModule, (yyvsp[(2) - (8)].text), currentIsStatic, &(yyvsp[(1) - (8)].memArg),
--                        &(yyvsp[(3) - (8)].optflags), (yyvsp[(4) - (8)].variable).access_code, (yyvsp[(4) - (8)].variable).get_code, (yyvsp[(4) - (8)].variable).set_code,
-+                newVar(currentSpec, currentModule, (yyvsp[-6].text), currentIsStatic, &(yyvsp[-7].memArg),
-+                        &(yyvsp[-5].optflags), (yyvsp[-4].variable).access_code, (yyvsp[-4].variable).get_code, (yyvsp[-4].variable).set_code,
-                         sectionFlags);
-             }
- 
-             currentIsStatic = FALSE;
-         }
-+#line 7823 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 541:
--#line 4308 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4308 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.variable).token = 0;
-             (yyval.variable).access_code = NULL;
-             (yyval.variable).get_code = NULL;
-             (yyval.variable).set_code = NULL;
-         }
-+#line 7834 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 542:
--#line 4314 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4314 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.variable) = (yyvsp[(2) - (3)].variable);
-+            (yyval.variable) = (yyvsp[-1].variable);
-         }
-+#line 7842 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 544:
--#line 4320 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4320 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.variable) = (yyvsp[(1) - (2)].variable);
-+            (yyval.variable) = (yyvsp[-1].variable);
- 
--            switch ((yyvsp[(2) - (2)].variable).token)
-+            switch ((yyvsp[0].variable).token)
-             {
--            case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[(2) - (2)].variable).access_code; break;
--            case TK_GETCODE: (yyval.variable).get_code = (yyvsp[(2) - (2)].variable).get_code; break;
--            case TK_SETCODE: (yyval.variable).set_code = (yyvsp[(2) - (2)].variable).set_code; break;
-+            case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[0].variable).access_code; break;
-+            case TK_GETCODE: (yyval.variable).get_code = (yyvsp[0].variable).get_code; break;
-+            case TK_SETCODE: (yyval.variable).set_code = (yyvsp[0].variable).set_code; break;
-             }
-         }
-+#line 7857 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 545:
--#line 4332 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4332 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.variable).token = TK_IF;
-         }
-+#line 7865 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 546:
--#line 4335 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4335 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.variable).token = TK_END;
-         }
-+#line 7873 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 547:
--#line 4338 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4338 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.variable).token = TK_ACCESSCODE;
--                (yyval.variable).access_code = (yyvsp[(2) - (2)].codeb);
-+                (yyval.variable).access_code = (yyvsp[0].codeb);
-             }
-             else
-             {
-@@ -7822,15 +7889,16 @@
-             (yyval.variable).get_code = NULL;
-             (yyval.variable).set_code = NULL;
-         }
-+#line 7893 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 548:
--#line 4353 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4353 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.variable).token = TK_GETCODE;
--                (yyval.variable).get_code = (yyvsp[(2) - (2)].codeb);
-+                (yyval.variable).get_code = (yyvsp[0].codeb);
-             }
-             else
-             {
-@@ -7841,15 +7909,16 @@
-             (yyval.variable).access_code = NULL;
-             (yyval.variable).set_code = NULL;
-         }
-+#line 7913 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 549:
--#line 4368 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4368 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (notSkipping())
-             {
-                 (yyval.variable).token = TK_SETCODE;
--                (yyval.variable).set_code = (yyvsp[(2) - (2)].codeb);
-+                (yyval.variable).set_code = (yyvsp[0].codeb);
-             }
-             else
-             {
-@@ -7860,35 +7929,38 @@
-             (yyval.variable).access_code = NULL;
-             (yyval.variable).get_code = NULL;
-         }
-+#line 7933 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 550:
--#line 4385 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4385 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.memArg) = (yyvsp[(2) - (4)].memArg);
--            add_derefs(&(yyval.memArg), &(yyvsp[(3) - (4)].memArg));
--            (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[(4) - (4)].number);
-+            (yyval.memArg) = (yyvsp[-2].memArg);
-+            add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
-+            (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[0].number);
-         }
-+#line 7943 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 551:
--#line 4390 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4390 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
--            add_derefs(&(yyval.memArg), &(yyvsp[(2) - (3)].memArg));
--            (yyval.memArg).argflags |= (yyvsp[(3) - (3)].number);
-+            (yyval.memArg) = (yyvsp[-2].memArg);
-+            add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
-+            (yyval.memArg).argflags |= (yyvsp[0].number);
- 
-             /* PyObject * is a synonym for SIP_PYOBJECT. */
--            if ((yyvsp[(1) - (3)].memArg).atype == defined_type && strcmp((yyvsp[(1) - (3)].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[(1) - (3)].memArg).u.snd->next == NULL && (yyvsp[(2) - (3)].memArg).nrderefs == 1 && (yyvsp[(3) - (3)].number) == 0)
-+            if ((yyvsp[-2].memArg).atype == defined_type && strcmp((yyvsp[-2].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[-2].memArg).u.snd->next == NULL && (yyvsp[-1].memArg).nrderefs == 1 && (yyvsp[0].number) == 0)
-             {
-                 (yyval.memArg).atype = pyobject_type;
-                 (yyval.memArg).nrderefs = 0;
-             }
-         }
-+#line 7960 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 552:
--#line 4404 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4404 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             const char *annos[] = {
-                 "AllowNone",
-@@ -7919,54 +7991,54 @@
- 
-             optFlag *of;
- 
--            checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+            checkAnnos(&(yyvsp[0].optflags), annos);
- 
--            (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
--            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+            (yyval.memArg) = (yyvsp[-2].memArg);
-+            (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- 
--            handleKeepReference(&(yyvsp[(3) - (3)].optflags), &(yyval.memArg), currentModule);
-+            handleKeepReference(&(yyvsp[0].optflags), &(yyval.memArg), currentModule);
- 
--            if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
-+            if ((of = getOptFlag(&(yyvsp[0].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
-                 if (((yyval.memArg).scopes_stripped = of->fvalue.ival) <= 0)
-                     yyerror("/ScopesStripped/ must be greater than 0");
- 
--            if (getAllowNone(&(yyvsp[(3) - (3)].optflags)))
-+            if (getAllowNone(&(yyvsp[0].optflags)))
-                 (yyval.memArg).argflags |= ARG_ALLOW_NONE;
- 
--            if (getDisallowNone(&(yyvsp[(3) - (3)].optflags)))
-+            if (getDisallowNone(&(yyvsp[0].optflags)))
-                 (yyval.memArg).argflags |= ARG_DISALLOW_NONE;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"GetWrapper",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"GetWrapper",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_GET_WRAPPER;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Array",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"Array",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_ARRAY;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"ArraySize",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"ArraySize",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_ARRAY_SIZE;
- 
--            if (getTransfer(&(yyvsp[(3) - (3)].optflags)))
-+            if (getTransfer(&(yyvsp[0].optflags)))
-                 (yyval.memArg).argflags |= ARG_XFERRED;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferThis",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"TransferThis",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_THIS_XFERRED;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferBack",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"TransferBack",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_XFERRED_BACK;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"In",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"In",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_IN;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Out",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"Out",bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_OUT;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "ResultSize", bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags), "ResultSize", bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_RESULT_SIZE;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "NoCopy", bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags), "NoCopy", bool_flag) != NULL)
-                 (yyval.memArg).argflags |= ARG_NO_COPY;
- 
--            if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Constrained",bool_flag) != NULL)
-+            if (getOptFlag(&(yyvsp[0].optflags),"Constrained",bool_flag) != NULL)
-             {
-                 (yyval.memArg).argflags |= ARG_CONSTRAINED;
- 
-@@ -7994,78 +8066,86 @@
-                 }
-             }
- 
--            applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[(3) - (3)].optflags));
--            (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[(3) - (3)].optflags));
-+            applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[0].optflags));
-+            (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[0].optflags));
-         }
-+#line 8073 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 553:
--#line 4514 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4514 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.number) = 0;
-         }
-+#line 8081 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 554:
--#line 4517 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4517 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec -> genc)
-                 yyerror("References not allowed in a C module");
- 
-             (yyval.number) = ARG_IS_REF;
-         }
-+#line 8092 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 555:
--#line 4525 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4525 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.memArg).nrderefs = 0;
-         }
-+#line 8100 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 556:
--#line 4528 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4528 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (3)].memArg), TRUE);
-+            add_new_deref(&(yyval.memArg), &(yyvsp[-2].memArg), TRUE);
-         }
-+#line 8108 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 557:
--#line 4531 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4531 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
--            add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (2)].memArg), FALSE);
-+            add_new_deref(&(yyval.memArg), &(yyvsp[-1].memArg), FALSE);
-         }
-+#line 8116 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 558:
--#line 4536 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4536 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = defined_type;
--            (yyval.memArg).u.snd = (yyvsp[(1) - (1)].scpvalp);
-+            (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
- 
-             /* Try and resolve typedefs as early as possible. */
-             resolveAnyTypedef(currentSpec, &(yyval.memArg));
-         }
-+#line 8129 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 559:
--#line 4544 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4544 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             templateDef *td;
- 
-             td = sipMalloc(sizeof(templateDef));
--            td->fqname = (yyvsp[(1) - (4)].scpvalp);
--            td->types = (yyvsp[(3) - (4)].signature);
-+            td->fqname = (yyvsp[-3].scpvalp);
-+            td->types = (yyvsp[-1].signature);
- 
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = template_type;
-             (yyval.memArg).u.td = td;
-         }
-+#line 8145 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 560:
--#line 4555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4555 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
- 
-@@ -8073,321 +8153,366 @@
-             if (currentSpec -> genc)
-             {
-                 (yyval.memArg).atype = defined_type;
--                (yyval.memArg).u.snd = (yyvsp[(2) - (2)].scpvalp);
-+                (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
-             }
-             else
-             {
-                 (yyval.memArg).atype = struct_type;
--                (yyval.memArg).u.sname = (yyvsp[(2) - (2)].scpvalp);
-+                (yyval.memArg).u.sname = (yyvsp[0].scpvalp);
-             }
-         }
-+#line 8165 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 561:
--#line 4570 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4570 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ushort_type;
-         }
-+#line 8174 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 562:
--#line 4574 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4574 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = short_type;
-         }
-+#line 8183 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 563:
--#line 4578 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4578 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = uint_type;
-         }
-+#line 8192 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 564:
--#line 4582 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4582 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = uint_type;
-         }
-+#line 8201 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 565:
--#line 4586 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4586 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = int_type;
-         }
-+#line 8210 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 566:
--#line 4590 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4590 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = long_type;
-         }
-+#line 8219 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 567:
--#line 4594 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4594 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ulong_type;
-         }
-+#line 8228 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 568:
--#line 4598 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4598 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = longlong_type;
-         }
-+#line 8237 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 569:
--#line 4602 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4602 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ulonglong_type;
-         }
-+#line 8246 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 570:
--#line 4606 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4606 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = float_type;
-         }
-+#line 8255 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 571:
--#line 4610 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4610 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = double_type;
-         }
-+#line 8264 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 572:
--#line 4614 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4614 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = bool_type;
-         }
-+#line 8273 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 573:
--#line 4618 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4618 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = sstring_type;
-         }
-+#line 8282 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 574:
--#line 4622 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4622 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ustring_type;
-         }
-+#line 8291 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 575:
--#line 4626 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4626 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = string_type;
-         }
-+#line 8300 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 576:
--#line 4630 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4630 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = wstring_type;
-         }
-+#line 8309 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 577:
--#line 4634 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4634 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = void_type;
-         }
-+#line 8318 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 578:
--#line 4638 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4638 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pyobject_type;
-         }
-+#line 8327 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 579:
--#line 4642 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4642 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pytuple_type;
-         }
-+#line 8336 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 580:
--#line 4646 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4646 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pylist_type;
-         }
-+#line 8345 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 581:
--#line 4650 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4650 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pydict_type;
-         }
-+#line 8354 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 582:
--#line 4654 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4654 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pycallable_type;
-         }
-+#line 8363 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 583:
--#line 4658 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4658 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pyslice_type;
-         }
-+#line 8372 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 584:
--#line 4662 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4662 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pytype_type;
-         }
-+#line 8381 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 585:
--#line 4666 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4666 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = pybuffer_type;
-         }
-+#line 8390 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 586:
--#line 4670 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4670 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ssize_type;
-         }
-+#line 8399 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 587:
--#line 4674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4674 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             memset(&(yyval.memArg), 0, sizeof (argDef));
-             (yyval.memArg).atype = ellipsis_type;
-         }
-+#line 8408 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 588:
--#line 4680 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4680 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* The single or first type. */
- 
--            (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
-+            (yyval.signature).args[0] = (yyvsp[0].memArg);
-             (yyval.signature).nrArgs = 1;
-         }
-+#line 8419 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 589:
--#line 4686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4686 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Check there is nothing after an ellipsis. */
--            if ((yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].atype == ellipsis_type)
-+            if ((yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].atype == ellipsis_type)
-                 yyerror("An ellipsis must be at the end of the argument list");
- 
-             /* Check there is room. */
--            if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+            if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
-                 yyerror("Internal error - increase the value of MAX_NR_ARGS");
- 
--            (yyval.signature) = (yyvsp[(1) - (3)].signature);
-+            (yyval.signature) = (yyvsp[-2].signature);
- 
--            (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
-+            (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
-             (yyval.signature).nrArgs++;
-         }
-+#line 8438 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 590:
--#line 4702 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4702 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             (yyval.throwlist) = NULL;
-         }
-+#line 8446 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 591:
--#line 4705 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4705 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             if (currentSpec->genc)
-                 yyerror("Exceptions not allowed in a C module");
- 
--            (yyval.throwlist) = (yyvsp[(3) - (4)].throwlist);
-+            (yyval.throwlist) = (yyvsp[-1].throwlist);
-         }
-+#line 8457 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 592:
--#line 4713 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4713 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Empty list so use a blank. */
- 
-             (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
-             (yyval.throwlist) -> nrArgs = 0;
-         }
-+#line 8468 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 593:
--#line 4719 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4719 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* The only or first exception. */
- 
-             (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
-             (yyval.throwlist) -> nrArgs = 1;
--            (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[(1) - (1)].scpvalp), FALSE);
-+            (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
-         }
-+#line 8480 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
-   case 594:
--#line 4726 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4726 "sipgen/metasrc/parser.y" /* yacc.c:1646  */
-     {
-             /* Check that it wasn't ...(,arg...). */
- 
--            if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == 0)
-+            if ((yyvsp[-2].throwlist) -> nrArgs == 0)
-                 yyerror("First exception of throw specifier is missing");
- 
-             /* Check there is room. */
- 
--            if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == MAX_NR_ARGS)
-+            if ((yyvsp[-2].throwlist) -> nrArgs == MAX_NR_ARGS)
-                 yyerror("Internal error - increase the value of MAX_NR_ARGS");
- 
--            (yyval.throwlist) = (yyvsp[(1) - (3)].throwlist);
--            (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[(3) - (3)].scpvalp), FALSE);
-+            (yyval.throwlist) = (yyvsp[-2].throwlist);
-+            (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
-         }
-+#line 8499 "sipgen/parser.c" /* yacc.c:1646  */
-     break;
- 
- 
--/* Line 1267 of yacc.c.  */
--#line 8389 "sip-4.19.12/sipgen/parser.c"
-+#line 8503 "sipgen/parser.c" /* yacc.c:1646  */
-       default: break;
-     }
-+  /* User semantic actions sometimes alter yychar, and that requires
-+     that yytoken be updated with the new translation.  We take the
-+     approach of translating immediately before every use of yytoken.
-+     One alternative is translating here after every semantic action,
-+     but that translation would be missed if the semantic action invokes
-+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-+     incorrect destructor might then be invoked immediately.  In the
-+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-+     to an incorrect destructor call or verbose syntax error message
-+     before the lookahead is translated.  */
-   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
-   YYPOPSTACK (yylen);
-@@ -8396,8 +8521,7 @@
- 
-   *++yyvsp = yyval;
- 
--
--  /* Now `shift' the result of the reduction.  Determine what state
-+  /* Now 'shift' the result of the reduction.  Determine what state
-      that goes to, based on the state we popped back to and the rule
-      number reduced by.  */
- 
-@@ -8412,10 +8536,14 @@
-   goto yynewstate;
- 
- 
--/*------------------------------------.
--| yyerrlab -- here on detecting error |
--`------------------------------------*/
-+/*--------------------------------------.
-+| yyerrlab -- here on detecting error.  |
-+`--------------------------------------*/
- yyerrlab:
-+  /* Make sure we have latest lookahead translation.  See comments at
-+     user semantic actions for why this is necessary.  */
-+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-+
-   /* If not already recovering from an error, report this error.  */
-   if (!yyerrstatus)
-     {
-@@ -8423,37 +8551,36 @@
- #if ! YYERROR_VERBOSE
-       yyerror (YY_("syntax error"));
- #else
-+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-+                                        yyssp, yytoken)
-       {
--	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
--	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
--	  {
--	    YYSIZE_T yyalloc = 2 * yysize;
--	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
--	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
--	    if (yymsg != yymsgbuf)
--	      YYSTACK_FREE (yymsg);
--	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
--	    if (yymsg)
--	      yymsg_alloc = yyalloc;
--	    else
--	      {
--		yymsg = yymsgbuf;
--		yymsg_alloc = sizeof yymsgbuf;
--	      }
--	  }
--
--	if (0 < yysize && yysize <= yymsg_alloc)
--	  {
--	    (void) yysyntax_error (yymsg, yystate, yychar);
--	    yyerror (yymsg);
--	  }
--	else
--	  {
--	    yyerror (YY_("syntax error"));
--	    if (yysize != 0)
--	      goto yyexhaustedlab;
--	  }
-+        char const *yymsgp = YY_("syntax error");
-+        int yysyntax_error_status;
-+        yysyntax_error_status = YYSYNTAX_ERROR;
-+        if (yysyntax_error_status == 0)
-+          yymsgp = yymsg;
-+        else if (yysyntax_error_status == 1)
-+          {
-+            if (yymsg != yymsgbuf)
-+              YYSTACK_FREE (yymsg);
-+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-+            if (!yymsg)
-+              {
-+                yymsg = yymsgbuf;
-+                yymsg_alloc = sizeof yymsgbuf;
-+                yysyntax_error_status = 2;
-+              }
-+            else
-+              {
-+                yysyntax_error_status = YYSYNTAX_ERROR;
-+                yymsgp = yymsg;
-+              }
-+          }
-+        yyerror (yymsgp);
-+        if (yysyntax_error_status == 2)
-+          goto yyexhaustedlab;
-       }
-+# undef YYSYNTAX_ERROR
- #endif
-     }
- 
-@@ -8461,24 +8588,24 @@
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse look-ahead token after an
--	 error, discard it.  */
-+      /* If just tried and failed to reuse lookahead token after an
-+         error, discard it.  */
- 
-       if (yychar <= YYEOF)
--	{
--	  /* Return failure if at end of input.  */
--	  if (yychar == YYEOF)
--	    YYABORT;
--	}
-+        {
-+          /* Return failure if at end of input.  */
-+          if (yychar == YYEOF)
-+            YYABORT;
-+        }
-       else
--	{
--	  yydestruct ("Error: discarding",
--		      yytoken, &yylval);
--	  yychar = YYEMPTY;
--	}
-+        {
-+          yydestruct ("Error: discarding",
-+                      yytoken, &yylval);
-+          yychar = YYEMPTY;
-+        }
-     }
- 
--  /* Else will try to reuse look-ahead token after shifting the error
-+  /* Else will try to reuse lookahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -8494,7 +8621,7 @@
-   if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
- 
--  /* Do not reclaim the symbols of the rule which action triggered
-+  /* Do not reclaim the symbols of the rule whose action triggered
-      this YYERROR.  */
-   YYPOPSTACK (yylen);
-   yylen = 0;
-@@ -8507,38 +8634,37 @@
- | yyerrlab1 -- common code for both syntax error and YYERROR.  |
- `-------------------------------------------------------------*/
- yyerrlab1:
--  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
-+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
- 
-   for (;;)
-     {
-       yyn = yypact[yystate];
--      if (yyn != YYPACT_NINF)
--	{
--	  yyn += YYTERROR;
--	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
--	    {
--	      yyn = yytable[yyn];
--	      if (0 < yyn)
--		break;
--	    }
--	}
-+      if (!yypact_value_is_default (yyn))
-+        {
-+          yyn += YYTERROR;
-+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-+            {
-+              yyn = yytable[yyn];
-+              if (0 < yyn)
-+                break;
-+            }
-+        }
- 
-       /* Pop the current state because it cannot handle the error token.  */
-       if (yyssp == yyss)
--	YYABORT;
-+        YYABORT;
- 
- 
-       yydestruct ("Error: popping",
--		  yystos[yystate], yyvsp);
-+                  yystos[yystate], yyvsp);
-       YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
- 
--  if (yyn == YYFINAL)
--    YYACCEPT;
--
-+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-   *++yyvsp = yylval;
-+  YY_IGNORE_MAYBE_UNINITIALIZED_END
- 
- 
-   /* Shift the error token.  */
-@@ -8562,7 +8688,7 @@
-   yyresult = 1;
-   goto yyreturn;
- 
--#ifndef yyoverflow
-+#if !defined yyoverflow || YYERROR_VERBOSE
- /*-------------------------------------------------.
- | yyexhaustedlab -- memory exhaustion comes here.  |
- `-------------------------------------------------*/
-@@ -8573,17 +8699,22 @@
- #endif
- 
- yyreturn:
--  if (yychar != YYEOF && yychar != YYEMPTY)
--     yydestruct ("Cleanup: discarding lookahead",
--		 yytoken, &yylval);
--  /* Do not reclaim the symbols of the rule which action triggered
-+  if (yychar != YYEMPTY)
-+    {
-+      /* Make sure we have latest lookahead translation.  See comments at
-+         user semantic actions for why this is necessary.  */
-+      yytoken = YYTRANSLATE (yychar);
-+      yydestruct ("Cleanup: discarding lookahead",
-+                  yytoken, &yylval);
-+    }
-+  /* Do not reclaim the symbols of the rule whose action triggered
-      this YYABORT or YYACCEPT.  */
-   YYPOPSTACK (yylen);
-   YY_STACK_PRINT (yyss, yyssp);
-   while (yyssp != yyss)
-     {
-       yydestruct ("Cleanup: popping",
--		  yystos[*yyssp], yyvsp);
-+                  yystos[*yyssp], yyvsp);
-       YYPOPSTACK (1);
-     }
- #ifndef yyoverflow
-@@ -8594,12 +8725,9 @@
-   if (yymsg != yymsgbuf)
-     YYSTACK_FREE (yymsg);
- #endif
--  /* Make sure YYID is used.  */
--  return YYID (yyresult);
-+  return yyresult;
- }
--
--
--#line 4742 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4742 "sipgen/metasrc/parser.y" /* yacc.c:1906  */
- 
- 
- 
-@@ -13483,4 +13611,3 @@
-         if (sd->args[a].atype == ellipsis_type && a < sd->nrArgs - 1)
-             yyerror("An ellipsis must be at the end of the argument list if /NoArgParser/ is not specified");
- }
--
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/parser.h sip/sipgen/parser.h
---- ./sip-4.19.12.orig/sipgen/parser.h	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/parser.h	2018-09-18 18:12:23.642053256 -0400
-@@ -1,14 +1,13 @@
--/* A Bison parser, made by GNU Bison 2.3.  */
-+/* A Bison parser, made by GNU Bison 3.0.4.  */
- 
--/* Skeleton interface for Bison's Yacc-like parsers in C
-+/* Bison interface for Yacc-like parsers in C
- 
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
--   Free Software Foundation, Inc.
-+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
- 
--   This program is free software; you can redistribute it and/or modify
-+   This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 2, or (at your option)
--   any later version.
-+   the Free Software Foundation, either version 3 of the License, or
-+   (at your option) any later version.
- 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-@@ -16,9 +15,7 @@
-    GNU General Public License for more details.
- 
-    You should have received a copy of the GNU General Public License
--   along with this program; if not, write to the Free Software
--   Foundation, Inc., 51 Franklin Street, Fifth Floor,
--   Boston, MA 02110-1301, USA.  */
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
- 
- /* As a special exception, you may create a larger work that contains
-    part or all of the Bison parser skeleton and distribute that work
-@@ -33,162 +30,171 @@
-    This special exception was added by the Free Software Foundation in
-    version 2.2 of Bison.  */
- 
--/* Tokens.  */
-+#ifndef YY_YY_SIPGEN_PARSER_H_INCLUDED
-+# define YY_YY_SIPGEN_PARSER_H_INCLUDED
-+/* Debug traces.  */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+#if YYDEBUG
-+extern int yydebug;
-+#endif
-+
-+/* Token type.  */
- #ifndef YYTOKENTYPE
- # define YYTOKENTYPE
--   /* Put the tokens into the symbol table, so that GDB and other debuggers
--      know about them.  */
--   enum yytokentype {
--     TK_API = 258,
--     TK_AUTOPYNAME = 259,
--     TK_DEFDOCSTRFMT = 260,
--     TK_DEFDOCSTRSIG = 261,
--     TK_DEFENCODING = 262,
--     TK_PLUGIN = 263,
--     TK_VIRTERRORHANDLER = 264,
--     TK_EXPTYPEHINTCODE = 265,
--     TK_TYPEHINTCODE = 266,
--     TK_DOCSTRING = 267,
--     TK_DOC = 268,
--     TK_EXPORTEDDOC = 269,
--     TK_EXTRACT = 270,
--     TK_MAKEFILE = 271,
--     TK_ACCESSCODE = 272,
--     TK_GETCODE = 273,
--     TK_SETCODE = 274,
--     TK_PREINITCODE = 275,
--     TK_INITCODE = 276,
--     TK_POSTINITCODE = 277,
--     TK_FINALCODE = 278,
--     TK_UNITCODE = 279,
--     TK_UNITPOSTINCLUDECODE = 280,
--     TK_MODCODE = 281,
--     TK_TYPECODE = 282,
--     TK_PREPYCODE = 283,
--     TK_COPYING = 284,
--     TK_MAPPEDTYPE = 285,
--     TK_CODELINE = 286,
--     TK_IF = 287,
--     TK_END = 288,
--     TK_NAME_VALUE = 289,
--     TK_PATH_VALUE = 290,
--     TK_STRING_VALUE = 291,
--     TK_VIRTUALCATCHERCODE = 292,
--     TK_TRAVERSECODE = 293,
--     TK_CLEARCODE = 294,
--     TK_GETBUFFERCODE = 295,
--     TK_RELEASEBUFFERCODE = 296,
--     TK_READBUFFERCODE = 297,
--     TK_WRITEBUFFERCODE = 298,
--     TK_SEGCOUNTCODE = 299,
--     TK_CHARBUFFERCODE = 300,
--     TK_PICKLECODE = 301,
--     TK_VIRTUALCALLCODE = 302,
--     TK_METHODCODE = 303,
--     TK_PREMETHODCODE = 304,
--     TK_INSTANCECODE = 305,
--     TK_FROMTYPE = 306,
--     TK_TOTYPE = 307,
--     TK_TOSUBCLASS = 308,
--     TK_INCLUDE = 309,
--     TK_OPTINCLUDE = 310,
--     TK_IMPORT = 311,
--     TK_EXPHEADERCODE = 312,
--     TK_MODHEADERCODE = 313,
--     TK_TYPEHEADERCODE = 314,
--     TK_MODULE = 315,
--     TK_CMODULE = 316,
--     TK_CONSMODULE = 317,
--     TK_COMPOMODULE = 318,
--     TK_CLASS = 319,
--     TK_STRUCT = 320,
--     TK_PUBLIC = 321,
--     TK_PROTECTED = 322,
--     TK_PRIVATE = 323,
--     TK_SIGNALS = 324,
--     TK_SIGNAL_METHOD = 325,
--     TK_SLOTS = 326,
--     TK_SLOT_METHOD = 327,
--     TK_BOOL = 328,
--     TK_SHORT = 329,
--     TK_INT = 330,
--     TK_LONG = 331,
--     TK_FLOAT = 332,
--     TK_DOUBLE = 333,
--     TK_CHAR = 334,
--     TK_WCHAR_T = 335,
--     TK_VOID = 336,
--     TK_PYOBJECT = 337,
--     TK_PYTUPLE = 338,
--     TK_PYLIST = 339,
--     TK_PYDICT = 340,
--     TK_PYCALLABLE = 341,
--     TK_PYSLICE = 342,
--     TK_PYTYPE = 343,
--     TK_PYBUFFER = 344,
--     TK_VIRTUAL = 345,
--     TK_ENUM = 346,
--     TK_SIGNED = 347,
--     TK_UNSIGNED = 348,
--     TK_SCOPE = 349,
--     TK_LOGICAL_OR = 350,
--     TK_CONST = 351,
--     TK_STATIC = 352,
--     TK_SIPSIGNAL = 353,
--     TK_SIPSLOT = 354,
--     TK_SIPANYSLOT = 355,
--     TK_SIPRXCON = 356,
--     TK_SIPRXDIS = 357,
--     TK_SIPSLOTCON = 358,
--     TK_SIPSLOTDIS = 359,
--     TK_SIPSSIZET = 360,
--     TK_NUMBER_VALUE = 361,
--     TK_REAL_VALUE = 362,
--     TK_TYPEDEF = 363,
--     TK_NAMESPACE = 364,
--     TK_TIMELINE = 365,
--     TK_PLATFORMS = 366,
--     TK_FEATURE = 367,
--     TK_LICENSE = 368,
--     TK_QCHAR_VALUE = 369,
--     TK_TRUE_VALUE = 370,
--     TK_FALSE_VALUE = 371,
--     TK_NULL_VALUE = 372,
--     TK_OPERATOR = 373,
--     TK_THROW = 374,
--     TK_QOBJECT = 375,
--     TK_EXCEPTION = 376,
--     TK_RAISECODE = 377,
--     TK_VIRTERRORCODE = 378,
--     TK_EXPLICIT = 379,
--     TK_TEMPLATE = 380,
--     TK_FINAL = 381,
--     TK_ELLIPSIS = 382,
--     TK_DEFMETATYPE = 383,
--     TK_DEFSUPERTYPE = 384,
--     TK_PROPERTY = 385,
--     TK_HIDE_NS = 386,
--     TK_FORMAT = 387,
--     TK_GET = 388,
--     TK_ID = 389,
--     TK_KWARGS = 390,
--     TK_LANGUAGE = 391,
--     TK_LICENSEE = 392,
--     TK_NAME = 393,
--     TK_OPTIONAL = 394,
--     TK_ORDER = 395,
--     TK_REMOVELEADING = 396,
--     TK_SET = 397,
--     TK_SIGNATURE = 398,
--     TK_TIMESTAMP = 399,
--     TK_TYPE = 400,
--     TK_USEARGNAMES = 401,
--     TK_USELIMITEDAPI = 402,
--     TK_ALLRAISEPYEXC = 403,
--     TK_CALLSUPERINIT = 404,
--     TK_DEFERRORHANDLER = 405,
--     TK_VERSION = 406
--   };
-+  enum yytokentype
-+  {
-+    TK_API = 258,
-+    TK_AUTOPYNAME = 259,
-+    TK_DEFDOCSTRFMT = 260,
-+    TK_DEFDOCSTRSIG = 261,
-+    TK_DEFENCODING = 262,
-+    TK_PLUGIN = 263,
-+    TK_VIRTERRORHANDLER = 264,
-+    TK_EXPTYPEHINTCODE = 265,
-+    TK_TYPEHINTCODE = 266,
-+    TK_DOCSTRING = 267,
-+    TK_DOC = 268,
-+    TK_EXPORTEDDOC = 269,
-+    TK_EXTRACT = 270,
-+    TK_MAKEFILE = 271,
-+    TK_ACCESSCODE = 272,
-+    TK_GETCODE = 273,
-+    TK_SETCODE = 274,
-+    TK_PREINITCODE = 275,
-+    TK_INITCODE = 276,
-+    TK_POSTINITCODE = 277,
-+    TK_FINALCODE = 278,
-+    TK_UNITCODE = 279,
-+    TK_UNITPOSTINCLUDECODE = 280,
-+    TK_MODCODE = 281,
-+    TK_TYPECODE = 282,
-+    TK_PREPYCODE = 283,
-+    TK_COPYING = 284,
-+    TK_MAPPEDTYPE = 285,
-+    TK_CODELINE = 286,
-+    TK_IF = 287,
-+    TK_END = 288,
-+    TK_NAME_VALUE = 289,
-+    TK_PATH_VALUE = 290,
-+    TK_STRING_VALUE = 291,
-+    TK_VIRTUALCATCHERCODE = 292,
-+    TK_TRAVERSECODE = 293,
-+    TK_CLEARCODE = 294,
-+    TK_GETBUFFERCODE = 295,
-+    TK_RELEASEBUFFERCODE = 296,
-+    TK_READBUFFERCODE = 297,
-+    TK_WRITEBUFFERCODE = 298,
-+    TK_SEGCOUNTCODE = 299,
-+    TK_CHARBUFFERCODE = 300,
-+    TK_PICKLECODE = 301,
-+    TK_VIRTUALCALLCODE = 302,
-+    TK_METHODCODE = 303,
-+    TK_PREMETHODCODE = 304,
-+    TK_INSTANCECODE = 305,
-+    TK_FROMTYPE = 306,
-+    TK_TOTYPE = 307,
-+    TK_TOSUBCLASS = 308,
-+    TK_INCLUDE = 309,
-+    TK_OPTINCLUDE = 310,
-+    TK_IMPORT = 311,
-+    TK_EXPHEADERCODE = 312,
-+    TK_MODHEADERCODE = 313,
-+    TK_TYPEHEADERCODE = 314,
-+    TK_MODULE = 315,
-+    TK_CMODULE = 316,
-+    TK_CONSMODULE = 317,
-+    TK_COMPOMODULE = 318,
-+    TK_CLASS = 319,
-+    TK_STRUCT = 320,
-+    TK_PUBLIC = 321,
-+    TK_PROTECTED = 322,
-+    TK_PRIVATE = 323,
-+    TK_SIGNALS = 324,
-+    TK_SIGNAL_METHOD = 325,
-+    TK_SLOTS = 326,
-+    TK_SLOT_METHOD = 327,
-+    TK_BOOL = 328,
-+    TK_SHORT = 329,
-+    TK_INT = 330,
-+    TK_LONG = 331,
-+    TK_FLOAT = 332,
-+    TK_DOUBLE = 333,
-+    TK_CHAR = 334,
-+    TK_WCHAR_T = 335,
-+    TK_VOID = 336,
-+    TK_PYOBJECT = 337,
-+    TK_PYTUPLE = 338,
-+    TK_PYLIST = 339,
-+    TK_PYDICT = 340,
-+    TK_PYCALLABLE = 341,
-+    TK_PYSLICE = 342,
-+    TK_PYTYPE = 343,
-+    TK_PYBUFFER = 344,
-+    TK_VIRTUAL = 345,
-+    TK_ENUM = 346,
-+    TK_SIGNED = 347,
-+    TK_UNSIGNED = 348,
-+    TK_SCOPE = 349,
-+    TK_LOGICAL_OR = 350,
-+    TK_CONST = 351,
-+    TK_STATIC = 352,
-+    TK_SIPSIGNAL = 353,
-+    TK_SIPSLOT = 354,
-+    TK_SIPANYSLOT = 355,
-+    TK_SIPRXCON = 356,
-+    TK_SIPRXDIS = 357,
-+    TK_SIPSLOTCON = 358,
-+    TK_SIPSLOTDIS = 359,
-+    TK_SIPSSIZET = 360,
-+    TK_NUMBER_VALUE = 361,
-+    TK_REAL_VALUE = 362,
-+    TK_TYPEDEF = 363,
-+    TK_NAMESPACE = 364,
-+    TK_TIMELINE = 365,
-+    TK_PLATFORMS = 366,
-+    TK_FEATURE = 367,
-+    TK_LICENSE = 368,
-+    TK_QCHAR_VALUE = 369,
-+    TK_TRUE_VALUE = 370,
-+    TK_FALSE_VALUE = 371,
-+    TK_NULL_VALUE = 372,
-+    TK_OPERATOR = 373,
-+    TK_THROW = 374,
-+    TK_QOBJECT = 375,
-+    TK_EXCEPTION = 376,
-+    TK_RAISECODE = 377,
-+    TK_VIRTERRORCODE = 378,
-+    TK_EXPLICIT = 379,
-+    TK_TEMPLATE = 380,
-+    TK_FINAL = 381,
-+    TK_ELLIPSIS = 382,
-+    TK_DEFMETATYPE = 383,
-+    TK_DEFSUPERTYPE = 384,
-+    TK_PROPERTY = 385,
-+    TK_HIDE_NS = 386,
-+    TK_FORMAT = 387,
-+    TK_GET = 388,
-+    TK_ID = 389,
-+    TK_KWARGS = 390,
-+    TK_LANGUAGE = 391,
-+    TK_LICENSEE = 392,
-+    TK_NAME = 393,
-+    TK_OPTIONAL = 394,
-+    TK_ORDER = 395,
-+    TK_REMOVELEADING = 396,
-+    TK_SET = 397,
-+    TK_SIGNATURE = 398,
-+    TK_TIMESTAMP = 399,
-+    TK_TYPE = 400,
-+    TK_USEARGNAMES = 401,
-+    TK_USELIMITEDAPI = 402,
-+    TK_ALLRAISEPYEXC = 403,
-+    TK_CALLSUPERINIT = 404,
-+    TK_DEFERRORHANDLER = 405,
-+    TK_VERSION = 406
-+  };
- #endif
- /* Tokens.  */
- #define TK_API 258
-@@ -341,13 +347,13 @@
- #define TK_DEFERRORHANDLER 405
- #define TK_VERSION 406
- 
--
--
--
-+/* Value type.  */
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
--typedef union YYSTYPE
--#line 203 "sip-4.19.12/sipgen/metasrc/parser.y"
-+
-+union YYSTYPE
- {
-+#line 203 "sipgen/metasrc/parser.y" /* yacc.c:1909  */
-+
-     char            qchar;
-     char            *text;
-     long            number;
-@@ -390,14 +396,18 @@
-     variableCfg     variable;
-     vehCfg          veh;
-     int             token;
--}
--/* Line 1529 of yacc.c.  */
--#line 396 "sip-4.19.12/sipgen/parser.h"
--	YYSTYPE;
--# define yystype YYSTYPE /* obsolescent; will be withdrawn */
--# define YYSTYPE_IS_DECLARED 1
-+
-+#line 401 "sipgen/parser.h" /* yacc.c:1909  */
-+};
-+
-+typedef union YYSTYPE YYSTYPE;
- # define YYSTYPE_IS_TRIVIAL 1
-+# define YYSTYPE_IS_DECLARED 1
- #endif
- 
-+
- extern YYSTYPE yylval;
- 
-+int yyparse (void);
-+
-+#endif /* !YY_YY_SIPGEN_PARSER_H_INCLUDED  */
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h sip/sipgen/sip.h
---- ./sip-4.19.12.orig/sipgen/sip.h	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/sip.h	2018-09-18 18:12:23.643053242 -0400
-@@ -27,8 +27,8 @@
- /*
-  * Define the SIP version number.
-  */
--#define SIP_VERSION         0x04130c
--#define SIP_VERSION_STR     "4.19.12"
-+#define SIP_VERSION         0x04ffff
-+#define SIP_VERSION_STR     "4.255.255"
- 
- 
- #ifdef TRUE
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h.in sip/sipgen/sip.h.in
---- ./sip-4.19.12.orig/sipgen/sip.h.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/sipgen/sip.h.in	2018-09-24 13:12:20.674276069 -0400
-@@ -0,0 +1,1653 @@
-+/*
-+ * The main header file for SIP.
-+ *
-+ * Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
-+ *
-+ * This file is part of SIP.
-+ *
-+ * This copy of SIP is licensed for use under the terms of the SIP License
-+ * Agreement.  See the file LICENSE for more details.
-+ *
-+ * This copy of SIP may also used under the terms of the GNU General Public
-+ * License v2 or v3 as published by the Free Software Foundation which can be
-+ * found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
-+ *
-+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+ */
-+
-+
-+#ifndef SIP_H
-+#define SIP_H
-+
-+#include <stdio.h>
-+#include <sys/types.h>
-+
-+
-+/*
-+ * Define the SIP version number.
-+ */
-+#define SIP_VERSION         0x at RM_HEXVERSION@
-+#define SIP_VERSION_STR     "@RM_RELEASE@"
-+
-+
-+#ifdef TRUE
-+#undef TRUE
-+#endif
-+
-+#ifdef FALSE
-+#undef FALSE
-+#endif
-+
-+#define TRUE    1
-+#define FALSE   0
-+
-+
-+/* Some convenient compiler extensions. */
-+
-+#if defined(__GNUC__)
-+#define SIP_NORETURN    __attribute__((__noreturn__))
-+#define SIP_UNUSED      __attribute__((__unused__))
-+#elif defined(_MSC_VER)
-+#define SIP_NORETURN    __declspec(noreturn)
-+#endif
-+
-+#if !defined(SIP_NORETURN)
-+#define SIP_NORETURN
-+#endif
-+#if !defined(SIP_UNUSED)
-+#define SIP_UNUSED
-+#endif
-+
-+
-+#define DEFAULT_OFILE_EXT   ".o"    /* Default object file extension. */
-+
-+#define MAX_NR_ARGS         20      /* Max. nr. args. to a function or template. */
-+#define MAX_NR_DEREFS       5       /* Max. nr. type derefences. */
-+
-+
-+/* For convenience. */
-+
-+#define classBaseName(cd)   scopedNameTail((cd)->iff->fqcname)
-+#define classFQCName(cd)    ((cd)->iff->fqcname)
-+
-+/* Return the Python scope corresponding to a C/C++ scope. */
-+#define pyScope(c)          ((c) != NULL && isHiddenNamespace(c) ? NULL : (c))
-+
-+
-+/* Handle module flags. */
-+
-+#define MOD_HAS_DELAYED_DTORS   0x0001  /* It has a class with a delayed dtor. */
-+#define MOD_IS_CONSOLIDATED     0x0002  /* It is a consolidated module. */
-+#define MOD_IS_COMPOSITE        0x0004  /* It is a composite module. */
-+#define MOD_IS_TRANSFORMED      0x0008  /* It's types have been transformed. */
-+#define MOD_USE_ARG_NAMES       0x0010  /* Use real argument names. */
-+#define MOD_USE_LIMITED_API     0x0020  /* Use the limited API. */
-+#define MOD_ALL_RAISE_PY_EXC    0x0040  /* All callable raise a Python exception. */
-+#define MOD_SUPER_INIT_NO       0x0080  /* Don't call super().__init__(). */
-+#define MOD_SUPER_INIT_YES      0x0100  /* Call super().__init__(). */
-+#define MOD_SUPER_INIT_UNDEF    0x0000  /* Calling super().__init__() is undefined. */
-+#define MOD_SUPER_INIT_MASK     0x0180  /* The mask for the above flags. */
-+#define MOD_SETTING_IMPORTS     0x0200  /* Imports are being set. */
-+
-+#define hasDelayedDtors(m)  ((m)->modflags & MOD_HAS_DELAYED_DTORS)
-+#define setHasDelayedDtors(m)   ((m)->modflags |= MOD_HAS_DELAYED_DTORS)
-+#define isConsolidated(m)   ((m)->modflags & MOD_IS_CONSOLIDATED)
-+#define setIsConsolidated(m)    ((m)->modflags |= MOD_IS_CONSOLIDATED)
-+#define isComposite(m)      ((m)->modflags & MOD_IS_COMPOSITE)
-+#define setIsComposite(m)   ((m)->modflags |= MOD_IS_COMPOSITE)
-+#define isContainer(m)      ((m)->modflags & (MOD_IS_CONSOLIDATED | MOD_IS_COMPOSITE))
-+#define setIsTransformed(m) ((m)->modflags |= MOD_IS_TRANSFORMED)
-+#define isTransformed(m)    ((m)->modflags & MOD_IS_TRANSFORMED)
-+#define setUseArgNames(m)   ((m)->modflags |= MOD_USE_ARG_NAMES)
-+#define useArgNames(m)      ((m)->modflags & MOD_USE_ARG_NAMES)
-+#define setUseLimitedAPI(m) ((m)->modflags |= MOD_USE_LIMITED_API)
-+#define useLimitedAPI(m)    ((m)->modflags & MOD_USE_LIMITED_API)
-+#define setAllRaisePyException(m)   ((m)->modflags |= MOD_ALL_RAISE_PY_EXC)
-+#define allRaisePyException(m)  ((m)->modflags & MOD_ALL_RAISE_PY_EXC)
-+#define setCallSuperInitNo(m)   ((m)->modflags = ((m)->modflags & ~MOD_SUPER_INIT_MASK) | MOD_SUPER_INIT_NO)
-+#define setCallSuperInitYes(m)  ((m)->modflags = ((m)->modflags & ~MOD_SUPER_INIT_MASK) | MOD_SUPER_INIT_YES)
-+#define isCallSuperInitYes(m)   (((m)->modflags & MOD_SUPER_INIT_MASK) == MOD_SUPER_INIT_YES)
-+#define isCallSuperInitUndefined(m) (((m)->modflags & MOD_SUPER_INIT_MASK) == MOD_SUPER_INIT_UNDEF)
-+#define settingImports(m)   ((m)->modflags & MOD_SETTING_IMPORTS)
-+#define setSettingImports(m)    ((m)->modflags |= MOD_SETTING_IMPORTS)
-+#define resetSettingImports(m)  ((m)->modflags &= ~MOD_SETTING_IMPORTS)
-+
-+
-+/* Handle section flags. */
-+
-+#define SECT_IS_PUBLIC      0x01        /* It is public. */
-+#define SECT_IS_PROT        0x02        /* It is protected. */
-+#define SECT_IS_PRIVATE     0x04        /* It is private. */
-+#define SECT_IS_SLOT        0x08        /* It is a slot. */
-+#define SECT_IS_SIGNAL      0x10        /* It is a signal. */
-+#define SECT_MASK           0x1f        /* The mask of all flags. */
-+
-+
-+/* Handle class flags.  These are combined with the section flags. */
-+
-+#define CLASS_HAS_SIGSLOTS  0x00000200  /* It has signals or slots. */
-+#define CLASS_IS_ABSTRACT   0x00000400  /* It is an abstract class. */
-+#define CLASS_HAS_SHADOW    0x00000800  /* It is has a shadow class. */
-+#define CLASS_IS_OPAQUE     0x00001000  /* It is opaque. */
-+#define CLASS_HAS_VAR_HANDLERS  0x00002000  /* It has variable handlers. */
-+#define CLASS_DTOR_RELEASE_GIL  0x00004000  /* The dtor releases the GIL. */
-+#define CLASS_IS_PROTECTED  0x00008000  /* It is protected. */
-+#define CLASS_IS_PROTECTED_SAV  0x00010000  /* It is protected (saved). */
-+#define CLASS_IS_INCOMPLETE 0x00020000  /* The specification is incomplete. */
-+#define CLASS_CAN_CREATE    0x00040000  /* It has usable ctors. */
-+#define CLASS_IS_EXTERNAL   0x00080000  /* It is external. */
-+#define CLASS_IS_DELAYED_DTOR   0x00100000  /* The dtor is delayed. */
-+#define CLASS_NO_DEFAULT_CTORS  0x00200000  /* Don't create default ctors. */
-+#define CLASS_QOBJECT_SUB   0x00400000  /* It is derived from QObject. */
-+#define CLASS_DTOR_HOLD_GIL 0x00800000  /* The dtor holds the GIL. */
-+#define CLASS_ASSIGN_HELPER 0x01000000  /* Generate an assignment helper. */
-+#define CLASS_NO_QMETAOBJECT    0x02000000  /* It has no QMetaObject. */
-+#define CLASS_IS_TEMPLATE   0x04000000  /* It is a template class. */
-+#define CLASS_IS_DEPRECATED 0x08000000  /* It is deprecated. */
-+#define CLASS_CANNOT_COPY   0x10000000  /* It cannot be copied. */
-+#define CLASS_CANNOT_ASSIGN 0x20000000  /* It cannot be assigned. */
-+#define CLASS_ALLOW_NONE    0x40000000  /* The class will handle None. */
-+#define CLASS_HAS_NONLAZY   0x80000000  /* The class has non-lazy methods. */
-+
-+#define hasSigSlots(cd)     ((cd)->classflags & CLASS_HAS_SIGSLOTS)
-+#define setHasSigSlots(cd)  ((cd)->classflags |= CLASS_HAS_SIGSLOTS)
-+#define isAbstractClass(cd) ((cd)->classflags & CLASS_IS_ABSTRACT)
-+#define setIsAbstractClass(cd)  ((cd)->classflags |= CLASS_IS_ABSTRACT)
-+#define hasShadow(cd)       ((cd)->classflags & CLASS_HAS_SHADOW)
-+#define setHasShadow(cd)    ((cd)->classflags |= CLASS_HAS_SHADOW)
-+#define resetHasShadow(cd)  ((cd)->classflags &= ~CLASS_HAS_SHADOW)
-+#define isOpaque(cd)        ((cd)->classflags & CLASS_IS_OPAQUE)
-+#define setIsOpaque(cd)     ((cd)->classflags |= CLASS_IS_OPAQUE)
-+#define hasVarHandlers(cd)  ((cd)->classflags & CLASS_HAS_VAR_HANDLERS)
-+#define setHasVarHandlers(cd)   ((cd)->classflags |= CLASS_HAS_VAR_HANDLERS)
-+#define isProtectedClass(cd)    ((cd)->classflags & CLASS_IS_PROTECTED)
-+#define setIsProtectedClass(cd) ((cd)->classflags |= CLASS_IS_PROTECTED)
-+#define resetIsProtectedClass(cd)   ((cd)->classflags &= ~CLASS_IS_PROTECTED)
-+#define wasProtectedClass(cd)   ((cd)->classflags & CLASS_IS_PROTECTED_SAV)
-+#define setWasProtectedClass(cd)    ((cd)->classflags |= CLASS_IS_PROTECTED_SAV)
-+#define resetWasProtectedClass(cd)  ((cd)->classflags &= ~CLASS_IS_PROTECTED_SAV)
-+#define isReleaseGILDtor(cd)    ((cd)->classflags & CLASS_DTOR_RELEASE_GIL)
-+#define setIsReleaseGILDtor(cd) ((cd)->classflags |= CLASS_DTOR_RELEASE_GIL)
-+#define isIncomplete(cd)    ((cd)->classflags & CLASS_IS_INCOMPLETE)
-+#define setIsIncomplete(cd) ((cd)->classflags |= CLASS_IS_INCOMPLETE)
-+#define canCreate(cd)       ((cd)->classflags & CLASS_CAN_CREATE)
-+#define setCanCreate(cd)    ((cd)->classflags |= CLASS_CAN_CREATE)
-+#define resetCanCreate(cd)  ((cd)->classflags &= ~CLASS_CAN_CREATE)
-+#define isExternal(cd)      ((cd)->classflags & CLASS_IS_EXTERNAL)
-+#define setIsExternal(cd)   ((cd)->classflags |= CLASS_IS_EXTERNAL)
-+#define isDelayedDtor(cd)   ((cd)->classflags & CLASS_IS_DELAYED_DTOR)
-+#define setIsDelayedDtor(cd)    ((cd)->classflags |= CLASS_IS_DELAYED_DTOR)
-+#define noDefaultCtors(cd)  ((cd)->classflags & CLASS_NO_DEFAULT_CTORS)
-+#define setNoDefaultCtors(cd)   ((cd)->classflags |= CLASS_NO_DEFAULT_CTORS)
-+#define isQObjectSubClass(cd)   ((cd)->classflags & CLASS_QOBJECT_SUB)
-+#define setIsQObjectSubClass(cd)    ((cd)->classflags |= CLASS_QOBJECT_SUB)
-+#define isHoldGILDtor(cd)   ((cd)->classflags & CLASS_DTOR_HOLD_GIL)
-+#define setIsHoldGILDtor(cd) ((cd)->classflags |= CLASS_DTOR_HOLD_GIL)
-+#define assignmentHelper(cd) ((cd)->classflags & CLASS_ASSIGN_HELPER)
-+#define setAssignmentHelper(cd) ((cd)->classflags |= CLASS_ASSIGN_HELPER)
-+#define noPyQtQMetaObject(cd)   ((cd)->classflags & CLASS_NO_QMETAOBJECT)
-+#define setPyQtNoQMetaObject(cd)    ((cd)->classflags |= CLASS_NO_QMETAOBJECT)
-+#define isTemplateClass(cd) ((cd)->classflags & CLASS_IS_TEMPLATE)
-+#define setIsTemplateClass(cd)  ((cd)->classflags |= CLASS_IS_TEMPLATE)
-+#define resetIsTemplateClass(cd)    ((cd)->classflags &= ~CLASS_IS_TEMPLATE)
-+#define isDeprecatedClass(cd)   ((cd)->classflags & CLASS_IS_DEPRECATED)
-+#define setIsDeprecatedClass(cd)    ((cd)->classflags |= CLASS_IS_DEPRECATED)
-+#define cannotCopy(cd)      ((cd)->classflags & CLASS_CANNOT_COPY)
-+#define setCannotCopy(cd)   ((cd)->classflags |= CLASS_CANNOT_COPY)
-+#define cannotAssign(cd)    ((cd)->classflags & CLASS_CANNOT_ASSIGN)
-+#define setCannotAssign(cd) ((cd)->classflags |= CLASS_CANNOT_ASSIGN)
-+#define classHandlesNone(cd)    ((cd)->classflags & CLASS_ALLOW_NONE)
-+#define setClassHandlesNone(cd) ((cd)->classflags |= CLASS_ALLOW_NONE)
-+#define hasNonlazyMethod(cd)    ((cd)->classflags & CLASS_HAS_NONLAZY)
-+#define setHasNonlazyMethod(cd) ((cd)->classflags |= CLASS_HAS_NONLAZY)
-+
-+#define isPublicDtor(cd)    ((cd)->classflags & SECT_IS_PUBLIC)
-+#define setIsPublicDtor(cd) ((cd)->classflags |= SECT_IS_PUBLIC)
-+#define isProtectedDtor(cd) ((cd)->classflags & SECT_IS_PROT)
-+#define isPrivateDtor(cd)   ((cd)->classflags & SECT_IS_PRIVATE)
-+
-+#define isDtor(cd)          ((cd)->classflags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE))
-+
-+
-+/* Handle the second group of class flags. */
-+
-+#define CLASS2_TMPL_ARG     0x01        /* The class is a template argument. */
-+#define CLASS2_MIXIN        0x02        /* The class is a mixin. */
-+#define CLASS2_EXPORT_DERIVED   0x04    /* Export the derived class declaration. */
-+#define CLASS2_HIDDEN_NS    0x08        /* The namespace is hidden. */
-+#define CLASS2_USE_TMPL_NAME    0x10    /* Use the template name. */
-+#define CLASS2_NEEDS_SHADOW 0x20        /* The class needs a shadow class. */
-+
-+#define isTemplateArg(cd)   ((cd)->classflags2 & CLASS2_TMPL_ARG)
-+#define setTemplateArg(cd)  ((cd)->classflags2 |= CLASS2_TMPL_ARG)
-+#define resetTemplateArg(cd)    ((cd)->classflags2 &= ~CLASS2_TMPL_ARG)
-+#define isMixin(cd)         ((cd)->classflags2 & CLASS2_MIXIN)
-+#define setMixin(cd)        ((cd)->classflags2 |= CLASS2_MIXIN)
-+#define isExportDerived(cd) ((cd)->classflags2 & CLASS2_EXPORT_DERIVED)
-+#define setExportDerived(cd)    ((cd)->classflags2 |= CLASS2_EXPORT_DERIVED)
-+#define isHiddenNamespace(cd)   ((cd)->classflags2 & CLASS2_HIDDEN_NS)
-+#define setHiddenNamespace(cd)  ((cd)->classflags2 |= CLASS2_HIDDEN_NS)
-+#define useTemplateName(cd) ((cd)->classflags2 & CLASS2_USE_TMPL_NAME)
-+#define setUseTemplateName(cd)  ((cd)->classflags2 |= CLASS2_USE_TMPL_NAME)
-+#define needsShadow(cd)      ((cd)->classflags & CLASS2_NEEDS_SHADOW)
-+#define setNeedsShadow(cd)   ((cd)->classflags |= CLASS2_NEEDS_SHADOW)
-+
-+
-+/* Handle ctor flags.  These are combined with the section flags. */
-+
-+#define CTOR_RELEASE_GIL    0x00000100  /* The ctor releases the GIL. */
-+#define CTOR_EXPLICIT       0x00000200  /* The ctor is explicit. */
-+#define CTOR_CAST           0x00000400  /* The ctor is a cast. */
-+#define CTOR_HOLD_GIL       0x00000800  /* The ctor holds the GIL. */
-+#define CTOR_XFERRED        0x00001000  /* Ownership is transferred. */
-+#define CTOR_IS_DEPRECATED  0x00002000  /* The ctor is deprecated. */
-+#define CTOR_RAISES_PY_EXC  0x00004000  /* It raises a Python exception. */
-+
-+#define isPublicCtor(c)     ((c)->ctorflags & SECT_IS_PUBLIC)
-+#define setIsPublicCtor(c)  ((c)->ctorflags |= SECT_IS_PUBLIC)
-+#define isProtectedCtor(c)  ((c)->ctorflags & SECT_IS_PROT)
-+#define setIsProtectedCtor(c)   ((c)->ctorflags |= SECT_IS_PROT)
-+#define isPrivateCtor(c)    ((c)->ctorflags & SECT_IS_PRIVATE)
-+#define setIsPrivateCtor(c) ((c)->ctorflags |= SECT_IS_PRIVATE)
-+
-+#define isReleaseGILCtor(c) ((c)->ctorflags & CTOR_RELEASE_GIL)
-+#define setIsReleaseGILCtor(c)  ((c)->ctorflags |= CTOR_RELEASE_GIL)
-+#define isExplicitCtor(c)   ((c)->ctorflags & CTOR_EXPLICIT)
-+#define setIsExplicitCtor(c)    ((c)->ctorflags |= CTOR_EXPLICIT)
-+#define isCastCtor(c)       ((c)->ctorflags & CTOR_CAST)
-+#define isHoldGILCtor(c)    ((c)->ctorflags & CTOR_HOLD_GIL)
-+#define setIsHoldGILCtor(c) ((c)->ctorflags |= CTOR_HOLD_GIL)
-+#define isResultTransferredCtor(c)  ((c)->ctorflags & CTOR_XFERRED)
-+#define setIsResultTransferredCtor(c)   ((c)->ctorflags |= CTOR_XFERRED)
-+#define isDeprecatedCtor(c) ((c)->ctorflags & CTOR_IS_DEPRECATED)
-+#define setIsDeprecatedCtor(c)  ((c)->ctorflags |= CTOR_IS_DEPRECATED)
-+#define raisesPyExceptionCtor(c)    ((c)->ctorflags & CTOR_RAISES_PY_EXC)
-+#define setRaisesPyExceptionCtor(c) ((c)->ctorflags |= CTOR_RAISES_PY_EXC)
-+
-+
-+/* Handle member flags. */
-+
-+#define MEMBR_NUMERIC       0x0001      /* It is a numeric slot. */
-+#define MEMBR_SEQUENCE      0x0002      /* It is a sequnce slot. */
-+#define MEMBR_NO_ARG_PARSER 0x0004      /* Don't generate an argument parser. */
-+#define MEMBR_NOT_VERSIONED 0x0008      /* There is an unversioned overload. */
-+#define MEMBR_KEYWORD_ARGS  0x0010      /* It allows keyword arguments. */
-+#define MEMBR_HAS_PROTECTED 0x0011      /* It has a protected overload. */
-+
-+#define isNumeric(m)        ((m)->memberflags & MEMBR_NUMERIC)
-+#define setIsNumeric(m)     ((m)->memberflags |= MEMBR_NUMERIC)
-+#define isSequence(m)       ((m)->memberflags & MEMBR_SEQUENCE)
-+#define setIsSequence(m)    ((m)->memberflags |= MEMBR_SEQUENCE)
-+#define noArgParser(m)      ((m)->memberflags & MEMBR_NO_ARG_PARSER)
-+#define setNoArgParser(m)   ((m)->memberflags |= MEMBR_NO_ARG_PARSER)
-+#define notVersioned(m)     ((m)->memberflags & MEMBR_NOT_VERSIONED)
-+#define setNotVersioned(m)  ((m)->memberflags |= MEMBR_NOT_VERSIONED)
-+#define useKeywordArgs(m)   ((m)->memberflags & MEMBR_KEYWORD_ARGS)
-+#define setUseKeywordArgs(m)    ((m)->memberflags |= MEMBR_KEYWORD_ARGS)
-+#define hasProtected(m)     ((m)->memberflags & MEMBR_HAS_PROTECTED)
-+#define setHasProtected(m)  ((m)->memberflags |= MEMBR_HAS_PROTECTED)
-+
-+
-+/* Handle enum flags.  These are combined with the section flags. */
-+
-+#define ENUM_WAS_PROT       0x00000100  /* It was defined as protected. */
-+#define ENUM_NO_SCOPE       0x00000200  /* Omit the member scopes. */
-+#define ENUM_NEEDS_ENUM     0x00000400  /* The module needs it. */
-+#define ENUM_SCOPED         0x00000800  /* A C++0x11 scoped enum. */
-+
-+#define isProtectedEnum(e)  ((e)->enumflags & SECT_IS_PROT)
-+#define setIsProtectedEnum(e)   ((e)->enumflags |= SECT_IS_PROT)
-+#define resetIsProtectedEnum(e) ((e)->enumflags &= ~SECT_IS_PROT)
-+
-+#define wasProtectedEnum(e) ((e)->enumflags & ENUM_WAS_PROT)
-+#define setWasProtectedEnum(e)  ((e)->enumflags |= ENUM_WAS_PROT)
-+#define resetWasProtectedEnum(e)    ((e)->enumflags &= ~ENUM_WAS_PROT)
-+#define isNoScope(e)        ((e)->enumflags & ENUM_NO_SCOPE)
-+#define setIsNoScope(e)     ((e)->enumflags |= ENUM_NO_SCOPE)
-+#define needsEnum(e)        ((e)->enumflags & ENUM_NEEDS_ENUM)
-+#define setNeedsEnum(e)     ((e)->enumflags |= ENUM_NEEDS_ENUM)
-+#define isScopedEnum(e)     ((e)->enumflags & ENUM_SCOPED)
-+#define setIsScopedEnum(e)  ((e)->enumflags |= ENUM_SCOPED)
-+
-+
-+/* Handle hierarchy flags. */
-+
-+#define HIER_IS_DUPLICATE   0x0001      /* It is a super class duplicate. */
-+#define HIER_HAS_DUPLICATE  0x0002      /* It has a super class duplicate. */
-+#define HIER_BEING_SET      0x0004      /* The MRO is being set. */
-+
-+#define isDuplicateSuper(m) ((m)->mroflags & HIER_IS_DUPLICATE)
-+#define setIsDuplicateSuper(m)  ((m)->mroflags |= HIER_IS_DUPLICATE)
-+#define hasDuplicateSuper(m)    ((m)->mroflags & HIER_HAS_DUPLICATE)
-+#define setHasDuplicateSuper(m) ((m)->mroflags |= HIER_HAS_DUPLICATE)
-+#define hierBeingSet(m)     ((m)->mroflags & HIER_BEING_SET)
-+#define setHierBeingSet(m)  ((m)->mroflags |= HIER_BEING_SET)
-+#define resetHierBeingSet(m)    ((m)->mroflags &= ~HIER_BEING_SET)
-+
-+
-+/* Handle overload flags.  These are combined with the section flags. */
-+
-+#define OVER_IS_VIRTUAL     0x00000100  /* It is virtual. */
-+#define OVER_IS_ABSTRACT    0x00000200  /* It is abstract. */
-+#define OVER_IS_CONST       0x00000400  /* It is a const function. */
-+#define OVER_IS_STATIC      0x00000800  /* It is a static function. */
-+#define OVER_IS_AUTOGEN     0x00001000  /* It is auto-generated. */
-+#define OVER_IS_NEW_THREAD  0x00002000  /* It is in a new thread. */
-+#define OVER_IS_FACTORY     0x00004000  /* It is a factory method. */
-+#define OVER_XFERRED_BACK   0x00008000  /* Ownership is transferred back. */
-+#define OVER_XFERRED        0x00010000  /* Ownership is transferred. */
-+#define OVER_IS_VIRTUAL_REIMP   0x00020000  /* It is a re-implementation of a virtual. */
-+#define OVER_DONT_DEREF_SELF    0x00040000  /* For comparison operators, don't dereference self. */
-+#define OVER_HOLD_GIL       0x00080000  /* The function holds the GIL. */
-+#define OVER_RELEASE_GIL    0x00100000  /* The function releases the GIL. */
-+#define OVER_THIS_XFERRED   0x00200000  /* Ownership of this is transferred. */
-+#define OVER_IS_GLOBAL      0x00400000  /* It is a global operator. */
-+#define OVER_IS_COMPLEMENTARY   0x00800000  /* It is a complementary operator. */
-+#define OVER_IS_DEPRECATED  0x01000000  /* It is deprecated. */
-+#define OVER_REALLY_PROT    0x02000000  /* It really is protected. */
-+#define OVER_IS_DELATTR     0x04000000  /* It is __delattr__. */
-+#define OVER_RAISES_PY_EXC  0x08000000  /* It raises a Python exception. */
-+#define OVER_NO_ERROR_HANDLER   0x10000000  /* It doesn't use a virtual error handler. */
-+#define OVER_ABORT_ON_EXC   0x20000000  /* It aborts on an exception. */
-+#define OVER_IS_FINAL       0x40000000  /* It is a final method. */
-+
-+#define isPublic(o)         ((o)->overflags & SECT_IS_PUBLIC)
-+#define setIsPublic(o)      ((o)->overflags |= SECT_IS_PUBLIC)
-+#define isProtected(o)      ((o)->overflags & SECT_IS_PROT)
-+#define setIsProtected(o)   ((o)->overflags |= SECT_IS_PROT)
-+#define isPrivate(o)        ((o)->overflags & SECT_IS_PRIVATE)
-+#define setIsPrivate(o)     ((o)->overflags |= SECT_IS_PRIVATE)
-+#define isSlot(o)           ((o)->overflags & SECT_IS_SLOT)
-+#define setIsSlot(o)        ((o)->overflags |= SECT_IS_SLOT)
-+#define resetIsSlot(o)      ((o)->overflags &= ~SECT_IS_SLOT)
-+#define isSignal(o)         ((o)->overflags & SECT_IS_SIGNAL)
-+#define setIsSignal(o)      ((o)->overflags |= SECT_IS_SIGNAL)
-+#define resetIsSignal(o)    ((o)->overflags &= ~SECT_IS_SIGNAL)
-+
-+#define isVirtual(o)        ((o)->overflags & OVER_IS_VIRTUAL)
-+#define setIsVirtual(o)     ((o)->overflags |= OVER_IS_VIRTUAL)
-+#define resetIsVirtual(o)   ((o)->overflags &= ~OVER_IS_VIRTUAL)
-+#define isAbstract(o)       ((o)->overflags & OVER_IS_ABSTRACT)
-+#define setIsAbstract(o)    ((o)->overflags |= OVER_IS_ABSTRACT)
-+#define isConst(o)          ((o)->overflags & OVER_IS_CONST)
-+#define setIsConst(o)       ((o)->overflags |= OVER_IS_CONST)
-+#define isStatic(o)         ((o)->overflags & OVER_IS_STATIC)
-+#define setIsStatic(o)      ((o)->overflags |= OVER_IS_STATIC)
-+#define isAutoGen(o)        ((o)->overflags & OVER_IS_AUTOGEN)
-+#define setIsAutoGen(o)     ((o)->overflags |= OVER_IS_AUTOGEN)
-+#define resetIsAutoGen(o)   ((o)->overflags &= ~OVER_IS_AUTOGEN)
-+#define isNewThread(o)      ((o)->overflags & OVER_IS_NEW_THREAD)
-+#define setIsNewThread(o)   ((o)->overflags |= OVER_IS_NEW_THREAD)
-+#define isFactory(o)        ((o)->overflags & OVER_IS_FACTORY)
-+#define setIsFactory(o)     ((o)->overflags |= OVER_IS_FACTORY)
-+#define isResultTransferredBack(o)  ((o)->overflags & OVER_XFERRED_BACK)
-+#define setIsResultTransferredBack(o)   ((o)->overflags |= OVER_XFERRED_BACK)
-+#define isResultTransferred(o)  ((o)->overflags & OVER_XFERRED)
-+#define setIsResultTransferred(o)   ((o)->overflags |= OVER_XFERRED)
-+#define isVirtualReimp(o)   ((o)->overflags & OVER_IS_VIRTUAL_REIMP)
-+#define setIsVirtualReimp(o)    ((o)->overflags |= OVER_IS_VIRTUAL_REIMP)
-+#define dontDerefSelf(o)    ((o)->overflags & OVER_DONT_DEREF_SELF)
-+#define setDontDerefSelf(o) ((o)->overflags |= OVER_DONT_DEREF_SELF)
-+#define isHoldGIL(o)        ((o)->overflags & OVER_HOLD_GIL)
-+#define setIsHoldGIL(o)     ((o)->overflags |= OVER_HOLD_GIL)
-+#define isReleaseGIL(o)     ((o)->overflags & OVER_RELEASE_GIL)
-+#define setIsReleaseGIL(o)  ((o)->overflags |= OVER_RELEASE_GIL)
-+#define isThisTransferredMeth(o)    ((o)->overflags & OVER_THIS_XFERRED)
-+#define setIsThisTransferredMeth(o) ((o)->overflags |= OVER_THIS_XFERRED)
-+#define isGlobal(o)         ((o)->overflags & OVER_IS_GLOBAL)
-+#define setIsGlobal(o)      ((o)->overflags |= OVER_IS_GLOBAL)
-+#define isComplementary(o)  ((o)->overflags & OVER_IS_COMPLEMENTARY)
-+#define setIsComplementary(o)   ((o)->overflags |= OVER_IS_COMPLEMENTARY)
-+#define isDeprecated(o)     ((o)->overflags & OVER_IS_DEPRECATED)
-+#define setIsDeprecated(o)  ((o)->overflags |= OVER_IS_DEPRECATED)
-+#define isReallyProtected(o)    ((o)->overflags & OVER_REALLY_PROT)
-+#define setIsReallyProtected(o) ((o)->overflags |= OVER_REALLY_PROT)
-+#define isDelattr(o)        ((o)->overflags & OVER_IS_DELATTR)
-+#define setIsDelattr(o)     ((o)->overflags |= OVER_IS_DELATTR)
-+#define raisesPyException(o)    ((o)->overflags & OVER_RAISES_PY_EXC)
-+#define setRaisesPyException(o) ((o)->overflags |= OVER_RAISES_PY_EXC)
-+#define noErrorHandler(o)   ((o)->overflags & OVER_NO_ERROR_HANDLER)
-+#define setNoErrorHandler(o)    ((o)->overflags |= OVER_NO_ERROR_HANDLER)
-+#define abortOnException(o)     ((o)->overflags & OVER_ABORT_ON_EXC)
-+#define setAbortOnException(o)  ((o)->overflags |= OVER_ABORT_ON_EXC)
-+#define isFinal(o)          ((o)->overflags & OVER_IS_FINAL)
-+#define setIsFinal(o)       ((o)->overflags |= OVER_IS_FINAL)
-+
-+
-+/* Handle variable flags. */
-+
-+#define VAR_IS_STATIC       0x01    /* It is a static variable. */
-+#define VAR_NEEDS_HANDLER   0x02    /* The variable needs a handler. */
-+#define VAR_NO_SETTER       0x04    /* The variable has no setter. */
-+
-+#define isStaticVar(v)      ((v)->varflags & VAR_IS_STATIC)
-+#define setIsStaticVar(v)   ((v)->varflags |= VAR_IS_STATIC)
-+#define needsHandler(v)     ((v)->varflags & VAR_NEEDS_HANDLER)
-+#define setNeedsHandler(v)  ((v)->varflags |= VAR_NEEDS_HANDLER)
-+#define noSetter(v)         ((v)->varflags & VAR_NO_SETTER)
-+#define setNoSetter(v)      ((v)->varflags |= VAR_NO_SETTER)
-+
-+
-+/* Handle argument flags. */
-+
-+#define ARG_IS_REF          0x00000001  /* It is a reference. */
-+#define ARG_IS_CONST        0x00000002  /* It is a const. */
-+#define ARG_XFERRED         0x00000004  /* Ownership is transferred. */
-+#define ARG_THIS_XFERRED    0x00000008  /* Ownership of this is transferred. */
-+#define ARG_XFERRED_BACK    0x00000010  /* Ownership is transferred back. */
-+#define ARG_ARRAY           0x00000020  /* Used as an array. */
-+#define ARG_ARRAY_SIZE      0x00000040  /* Used as an array size. */
-+#define ARG_ALLOW_NONE      0x00000080  /* Allow None as a value. */
-+#define ARG_GET_WRAPPER     0x00000100  /* Get the wrapper object. */
-+#define ARG_IN              0x00000200  /* It passes an argument. */
-+#define ARG_OUT             0x00000400  /* It returns a result. */
-+#define ARG_CONSTRAINED     0x00000800  /* Suppress type conversion. */
-+#define ARG_SINGLE_SHOT     0x00001000  /* The slot is only ever fired once. */
-+#define ARG_RESULT_SIZE     0x00002000  /* It defines the result size. */
-+#define ARG_KEEP_REF        0x00004000  /* Keep a reference. */
-+#define ARG_NO_COPY         0x00008000  /* Disable copying of const refs. */
-+#define ARG_DISALLOW_NONE   0x00010000  /* Disallow None as a value. */
-+
-+#define isReference(a)      ((a)->argflags & ARG_IS_REF)
-+#define setIsReference(a)   ((a)->argflags |= ARG_IS_REF)
-+#define resetIsReference(a) ((a)->argflags &= ~ARG_IS_REF)
-+#define isConstArg(a)       ((a)->argflags & ARG_IS_CONST)
-+#define setIsConstArg(a)    ((a)->argflags |= ARG_IS_CONST)
-+#define resetIsConstArg(a)  ((a)->argflags &= ~ARG_IS_CONST)
-+#define isTransferred(a)    ((a)->argflags & ARG_XFERRED)
-+#define setIsTransferred(a) ((a)->argflags |= ARG_XFERRED)
-+#define isThisTransferred(a)    ((a)->argflags & ARG_THIS_XFERRED)
-+#define setIsThisTransferred(a) ((a)->argflags |= ARG_THIS_XFERRED)
-+#define isTransferredBack(a)    ((a)->argflags & ARG_XFERRED_BACK)
-+#define setIsTransferredBack(a) ((a)->argflags |= ARG_XFERRED_BACK)
-+#define isArray(a)          ((a)->argflags & ARG_ARRAY)
-+#define setArray(a)         ((a)->argflags |= ARG_ARRAY)
-+#define isArraySize(a)      ((a)->argflags & ARG_ARRAY_SIZE)
-+#define setArraySize(a)     ((a)->argflags |= ARG_ARRAY_SIZE)
-+#define isAllowNone(a)      ((a)->argflags & ARG_ALLOW_NONE)
-+#define setAllowNone(a)     ((a)->argflags |= ARG_ALLOW_NONE)
-+#define isGetWrapper(a)     ((a)->argflags & ARG_GET_WRAPPER)
-+#define setGetWrapper(a)    ((a)->argflags |= ARG_GET_WRAPPER)
-+#define isInArg(a)          ((a)->argflags & ARG_IN)
-+#define setIsInArg(a)       ((a)->argflags |= ARG_IN)
-+#define isOutArg(a)         ((a)->argflags & ARG_OUT)
-+#define setIsOutArg(a)      ((a)->argflags |= ARG_OUT)
-+#define isConstrained(a)    ((a)->argflags & ARG_CONSTRAINED)
-+#define setIsConstrained(a) ((a)->argflags |= ARG_CONSTRAINED)
-+#define resetIsConstrained(a)   ((a)->argflags &= ~ARG_CONSTRAINED)
-+#define isSingleShot(a)     ((a)->argflags & ARG_SINGLE_SHOT)
-+#define isResultSize(a)     ((a)->argflags & ARG_RESULT_SIZE)
-+#define setResultSize(a)    ((a)->argflags |= ARG_RESULT_SIZE)
-+#define keepReference(a)    ((a)->argflags & ARG_KEEP_REF)
-+#define setKeepReference(a) ((a)->argflags |= ARG_KEEP_REF)
-+#define noCopy(a)           ((a)->argflags & ARG_NO_COPY)
-+#define setNoCopy(a)        ((a)->argflags |= ARG_NO_COPY)
-+#define isDisallowNone(a)   ((a)->argflags & ARG_DISALLOW_NONE)
-+#define setDisallowNone(a)  ((a)->argflags |= ARG_DISALLOW_NONE)
-+
-+
-+/* Handle name flags. */
-+
-+#define NAME_IS_USED        0x01    /* It is used in the main module. */
-+#define NAME_IS_SUBSTR      0x02    /* It is a substring of another. */
-+
-+#define isUsedName(n)       ((n)->nameflags & NAME_IS_USED)
-+#define setIsUsedName(n)    ((n)->nameflags |= NAME_IS_USED)
-+#define resetIsUsedName(n)  ((n)->nameflags &= ~NAME_IS_USED)
-+#define isSubstring(n)      ((n)->nameflags & NAME_IS_SUBSTR)
-+#define setIsSubstring(n)   ((n)->nameflags |= NAME_IS_SUBSTR)
-+
-+
-+/* Handle virtual handler flags. */
-+
-+#define VH_TRANSFERS        0x01    /* It transfers ownership of the result. */
-+#define VH_ABORT_ON_EXC     0x02    /* It aborts on an exception. */
-+
-+#define isTransferVH(vh)    ((vh)->vhflags & VH_TRANSFERS)
-+#define setIsTransferVH(vh) ((vh)->vhflags |= VH_TRANSFERS)
-+#define abortOnExceptionVH(vh)  ((vh)->vhflags & VH_ABORT_ON_EXC)
-+#define setAbortOnExceptionVH(vh)   ((vh)->vhflags |= VH_ABORT_ON_EXC)
-+
-+
-+/* Handle mapped type flags. */
-+
-+#define MT_NO_RELEASE       0x01    /* Do not generate a release function. */
-+#define MT_ALLOW_NONE       0x02    /* The mapped type will handle None. */
-+
-+#define noRelease(mt)       ((mt)->mtflags & MT_NO_RELEASE)
-+#define setNoRelease(mt)    ((mt)->mtflags |= MT_NO_RELEASE)
-+#define handlesNone(mt)     ((mt)->mtflags & MT_ALLOW_NONE)
-+#define setHandlesNone(mt)  ((mt)->mtflags |= MT_ALLOW_NONE)
-+
-+
-+/* Handle typedef flags. */
-+
-+#define TD_NO_TYPE_NAME     0x01    /* Do not use the typedef name. */
-+
-+#define noTypeName(td)      ((td)->tdflags & TD_NO_TYPE_NAME)
-+#define setNoTypeName(td)   ((td)->tdflags |= TD_NO_TYPE_NAME)
-+
-+
-+/* Warning categories. */
-+typedef enum {
-+    ParserWarning,
-+    DeprecationWarning
-+} Warning;
-+
-+
-+/* Docstring formatting. */
-+typedef enum {
-+    raw,
-+    deindented
-+} Format;
-+
-+
-+/* Docstring signature positioning. */
-+typedef enum {
-+    discarded,
-+    prepended,
-+    appended
-+} Signature;
-+
-+
-+/* Levels of keyword argument support. */
-+typedef enum {
-+    NoKwArgs = 0,
-+    AllKwArgs,
-+    OptionalKwArgs
-+} KwArgs;
-+
-+
-+/* Slot types. */
-+typedef enum {
-+    str_slot,
-+    int_slot,
-+    long_slot,
-+    float_slot,
-+    len_slot,
-+    contains_slot,
-+    add_slot,
-+    concat_slot,
-+    sub_slot,
-+    mul_slot,
-+    repeat_slot,
-+    div_slot,
-+    mod_slot,
-+    floordiv_slot,
-+    truediv_slot,
-+    and_slot,
-+    or_slot,
-+    xor_slot,
-+    lshift_slot,
-+    rshift_slot,
-+    iadd_slot,
-+    iconcat_slot,
-+    isub_slot,
-+    imul_slot,
-+    irepeat_slot,
-+    idiv_slot,
-+    imod_slot,
-+    ifloordiv_slot,
-+    itruediv_slot,
-+    iand_slot,
-+    ior_slot,
-+    ixor_slot,
-+    ilshift_slot,
-+    irshift_slot,
-+    invert_slot,
-+    call_slot,
-+    getitem_slot,
-+    setitem_slot,
-+    delitem_slot,
-+    lt_slot,
-+    le_slot,
-+    eq_slot,
-+    ne_slot,
-+    gt_slot,
-+    ge_slot,
-+    cmp_slot,
-+    bool_slot,
-+    neg_slot,
-+    pos_slot,
-+    abs_slot,
-+    repr_slot,
-+    hash_slot,
-+    index_slot,
-+    iter_slot,
-+    next_slot,
-+    setattr_slot,
-+    delattr_slot,       /* This is local to the parser. */
-+    matmul_slot,
-+    imatmul_slot,
-+    await_slot,
-+    aiter_slot,
-+    anext_slot,
-+    no_slot
-+} slotType;
-+
-+
-+/*
-+ * Argument types.  Always add new ones at the end because the numeric values
-+ * can appear in generated code.
-+ */
-+typedef enum {
-+    no_type,
-+    defined_type,
-+    class_type,
-+    struct_type,
-+    void_type,
-+    enum_type,
-+    template_type,
-+    signal_type,
-+    slot_type,
-+    rxcon_type,
-+    rxdis_type,
-+    slotcon_type,
-+    slotdis_type,
-+    ustring_type,
-+    string_type,
-+    short_type,
-+    ushort_type,
-+    cint_type,
-+    int_type,
-+    uint_type,
-+    long_type,
-+    ulong_type,
-+    float_type,
-+    cfloat_type,
-+    double_type,
-+    cdouble_type,
-+    bool_type,
-+    mapped_type,
-+    pyobject_type,
-+    pytuple_type,
-+    pylist_type,
-+    pydict_type,
-+    pycallable_type,
-+    pyslice_type,
-+    qobject_type,
-+    function_type,
-+    pytype_type,
-+    ellipsis_type,
-+    longlong_type,
-+    ulonglong_type,
-+    anyslot_type,
-+    cbool_type,
-+    sstring_type,
-+    wstring_type,
-+    fake_void_type,
-+    ssize_type,
-+    ascii_string_type,
-+    latin1_string_type,
-+    utf8_string_type,
-+    byte_type,
-+    sbyte_type,
-+    ubyte_type,
-+    capsule_type,
-+    pybuffer_type
-+} argType;
-+
-+
-+/* Value types. */
-+typedef enum {
-+    qchar_value,
-+    string_value,
-+    numeric_value,
-+    real_value,
-+    scoped_value,
-+    fcall_value
-+} valueType;
-+
-+
-+/* Version types. */
-+typedef enum {
-+    time_qualifier,
-+    platform_qualifier,
-+    feature_qualifier
-+} qualType;
-+
-+
-+/* Interface file types. */
-+typedef enum {
-+    exception_iface,
-+    mappedtype_iface,
-+    namespace_iface,
-+    class_iface
-+} ifaceFileType;
-+
-+
-+/* Type hint parse status. */
-+typedef enum {
-+    needs_parsing,
-+    being_parsed,
-+    parsed
-+} typeHintParseStatus;
-+
-+
-+/* Type hint node type. */
-+typedef enum {
-+    typing_node,
-+    class_node,
-+    enum_node,
-+    brackets_node,
-+    other_node
-+} typeHintNodeType;
-+
-+
-+/* A location in a .sip source file. */
-+typedef struct {
-+    int linenr;                         /* The line number. */
-+    const char *name;                   /* The filename. */
-+} sourceLocation;
-+
-+
-+/* A software license. */
-+typedef struct {
-+    const char *type;                   /* The license type. */
-+    const char *licensee;               /* The licensee. */
-+    const char *timestamp;              /* The timestamp. */
-+    const char *sig;                    /* The signature. */
-+} licenseDef;
-+
-+
-+/* A version qualifier. */
-+typedef struct _qualDef {
-+    const char *name;                   /* The qualifier name. */
-+    qualType qtype;                     /* The qualifier type. */
-+    struct _moduleDef *module;          /* The defining module. */
-+    int line;                           /* Timeline if it is a time. */
-+    int order;                          /* Order if it is a time. */
-+    int default_enabled;                /* Enabled by default. */
-+    struct _qualDef *next;              /* Next in the list. */
-+} qualDef;
-+
-+
-+/* A platform. */
-+typedef struct _platformDef {
-+    struct _qualDef *qualifier;         /* The platform qualifier. */
-+    struct _platformDef *next;          /* Next in the list. */
-+} platformDef;
-+
-+
-+/* A scoped name. */
-+typedef struct _scopedNameDef {
-+    char *name;                         /* The name. */
-+    struct _scopedNameDef *next;        /* Next in the scope list. */
-+} scopedNameDef;
-+
-+
-+/* A name. */
-+typedef struct _nameDef {
-+    int nameflags;                      /* The name flags. */
-+    const char *text;                   /* The text of the name. */
-+    size_t len;                         /* The length of the name. */
-+    size_t offset;                      /* The offset in the string pool. */
-+    struct _nameDef *next;              /* Next in the list. */
-+} nameDef;
-+
-+
-+/* A literal code block. */
-+typedef struct _codeBlock {
-+    char *frag;                         /* The code itself. */
-+    const char *filename;               /* The original file. */
-+    int linenr;                         /* The line in the file. */
-+} codeBlock;
-+
-+
-+/* A list of literal code blocks. */
-+typedef struct _codeBlockList {
-+    codeBlock *block;                   /* The code block. */
-+    struct _codeBlockList *next;        /* The next in the list. */
-+} codeBlockList;
-+
-+
-+/* The arguments to a throw specifier. */
-+typedef struct _throwArgs {
-+    int nrArgs;                         /* The number of arguments. */
-+    struct _exceptionDef *args[MAX_NR_ARGS];    /* The arguments. */
-+} throwArgs;
-+
-+
-+/* An exception. */
-+typedef struct _exceptionDef {
-+    int exceptionnr;                    /* The exception number. */
-+    int needed;                         /* The module needs it. */
-+    struct _ifaceFileDef *iff;          /* The interface file. */
-+    const char *pyname;                 /* The exception Python name. */
-+    struct _classDef *cd;               /* The exception class. */
-+    char *bibase;                       /* The builtin base exception. */
-+    struct _exceptionDef *base;         /* The defined base exception. */
-+    codeBlockList *raisecode;           /* Raise exception code. */
-+    struct _exceptionDef *next;         /* The next in the list. */
-+} exceptionDef;
-+
-+
-+/* A value. */
-+typedef struct _valueDef {
-+    valueType vtype;                    /* The type. */
-+    char vunop;                         /* Any unary operator. */
-+    char vbinop;                        /* Any binary operator. */
-+    scopedNameDef *cast;                /* Any cast. */
-+    union {
-+        char vqchar;                    /* Quoted character value. */
-+        long vnum;                      /* Numeric value. */
-+        double vreal;                   /* Real value. */
-+        char *vstr;                     /* String value. */
-+        scopedNameDef *vscp;            /* Scoped value. */
-+        struct _fcallDef *fcd;          /* Function call. */
-+    } u;
-+    struct _valueDef *next;             /* Next in the expression. */
-+} valueDef;
-+
-+
-+/* A member function argument (or result). */
-+typedef struct {
-+    argType atype;                      /* The type. */
-+    nameDef *name;                      /* The name. */
-+    const char *doctype;                /* The documented type. */
-+    struct _typeHintDef *typehint_in;   /* The PEP 484 input type hint. */
-+    struct _typeHintDef *typehint_out;  /* The PEP 484 output type hint. */
-+    const char *typehint_value;         /* The type hint value. */
-+    int argflags;                       /* The argument flags. */
-+    int nrderefs;                       /* Nr. of dereferences. */
-+    int derefs[MAX_NR_DEREFS];          /* The const for each dereference. */
-+    valueDef *defval;                   /* The default value. */
-+    int scopes_stripped;                /* Nr. of scopes to be stripped. */
-+    int key;                            /* The optional /KeepReference/ key. */
-+    struct _typedefDef *original_type;  /* The original type if typedef'd. */
-+    union {
-+        struct _signatureDef *sa;       /* If it is a function. */
-+        struct _templateDef *td;        /* If it is a template. */
-+        struct _scopedNameDef *snd;     /* If it is a defined type. */
-+        struct _classDef *cd;           /* If it is a class. */
-+        struct _enumDef *ed;            /* If it is an enum. */
-+        struct _scopedNameDef *sname;   /* If it is a struct. */
-+        struct _mappedTypeDef *mtd;     /* If it is a mapped type. */
-+        struct _scopedNameDef *cap;     /* If it is a capsule. */
-+    } u;
-+} argDef;
-+
-+
-+/* An entry in a linked argument list. */
-+typedef struct _argList {
-+    argDef arg;                         /* The argument itself. */
-+    struct _argList *next;              /* Next in the list. */
-+} argList;
-+
-+
-+/* A function call. */
-+typedef struct _fcallDef {
-+    argDef type;                        /* The type. */
-+    int nrArgs;                         /* The number of arguments. */
-+    struct _valueDef *args[MAX_NR_ARGS];    /* The arguments. */
-+} fcallDef;
-+
-+
-+/* An API version range definition. */
-+typedef struct _apiVersionRangeDef {
-+    nameDef *api_name;                  /* The API name. */
-+    int from;                           /* The lower bound. */
-+    int to;                             /* The upper bound. */
-+    int index;                          /* The range index. */
-+    struct _apiVersionRangeDef *next;   /* The next in the list. */
-+} apiVersionRangeDef;
-+
-+
-+/* A virtual error handler. */
-+typedef struct _virtErrorHandler {
-+    const char *name;                   /* The name of the handler. */
-+    codeBlockList *code;                /* The handler code. */
-+    struct _moduleDef *mod;             /* The defining module. */
-+    int index;                          /* The index within the module. */
-+    struct _virtErrorHandler *next;     /* The next in the list. */
-+} virtErrorHandler;
-+
-+
-+/* A parsed PEP 484 compliant type hint. */
-+typedef struct _typeHintDef {
-+    typeHintParseStatus status;         /* The state of the type hint parse. */
-+    char *raw_hint;                     /* The raw hint. */
-+    struct _typeHintNodeDef *root;      /* The root of parsed nodes. */
-+} typeHintDef;
-+
-+
-+/* A node of a parsed type hint. */
-+typedef struct _typeHintNodeDef {
-+    typeHintNodeType type;              /* The type of the node. */
-+    union {
-+        const char *name;               /* For typing objects and others. */
-+        struct _classDef *cd;           /* For class nodes. */
-+        struct _enumDef *ed;            /* For enum nodes. */
-+    } u;
-+    struct _typeHintNodeDef *children;  /* The list of children. */
-+    struct _typeHintNodeDef *next;      /* The next sibling. */
-+} typeHintNodeDef;
-+
-+
-+/* An explicit docstring. */
-+typedef struct _docstringDef {
-+    Signature signature;                /* How the signature should be positioned. */
-+    char *text;                         /* The text of the docstring. */
-+} docstringDef;
-+
-+
-+/* A module definition. */
-+typedef struct _moduleDef {
-+    nameDef *fullname;                  /* The full module name. */
-+    const char *name;                   /* The module base name. */
-+    docstringDef *docstring;            /* The docstring. */
-+    apiVersionRangeDef *api_versions;   /* The defined APIs. */
-+    apiVersionRangeDef *api_ranges;     /* The list of API version ranges. */
-+    int modflags;                       /* The module flags. */
-+    KwArgs kwargs;                      /* The style of keyword argument support. */
-+    struct _memberDef *othfuncs;        /* List of other functions. */
-+    struct _overDef *overs;             /* Global overloads. */
-+    Format defdocstringfmt;             /* The default docstring format. */
-+    Signature defdocstringsig;          /* The default docstring signature. */
-+    argType encoding;                   /* The default string encoding. */
-+    nameDef *defmetatype;               /* The optional default meta-type. */
-+    nameDef *defsupertype;              /* The optional default super-type. */
-+    struct _exceptionDef *defexception; /* The default exception. */
-+    codeBlockList *hdrcode;             /* Header code. */
-+    codeBlockList *cppcode;             /* Global C++ code. */
-+    codeBlockList *copying;             /* Software license. */
-+    codeBlockList *preinitcode;         /* Pre-initialisation code. */
-+    codeBlockList *initcode;            /* Initialisation code. */
-+    codeBlockList *postinitcode;        /* Post-initialisation code. */
-+    codeBlockList *unitcode;            /* Compilation unit code. */
-+    codeBlockList *unitpostinccode;     /* Compilation unit post-include code. */
-+    codeBlockList *typehintcode;        /* Type hint code. */
-+    const char *virt_error_handler;     /* The virtual error handler. */
-+    int parts;                          /* The number of parts generated. */
-+    const char *file;                   /* The filename. */
-+    qualDef *qualifiers;                /* The list of qualifiers. */
-+    argDef *needed_types;               /* The array of needed types. */
-+    int nr_needed_types;                /* The number of needed types. */
-+    int nrtimelines;                    /* The nr. of timelines. */
-+    int nrexceptions;                   /* The nr. of exceptions. */
-+    int nrtypedefs;                     /* The nr. of typedefs. */
-+    int nrvirterrorhandlers;            /* The nr. of virtual error handlers. */
-+    int next_key;                       /* The next key to allocate. */
-+    licenseDef *license;                /* The software license. */
-+    struct _classDef *proxies;          /* The list of proxy classes. */
-+    struct _moduleDef *container;       /* The container module, if any. */
-+    struct _ifaceFileList *used;        /* Interface files used. */
-+    struct _moduleListDef *allimports;  /* The list of all imports. */
-+    struct _moduleListDef *imports;     /* The list of direct imports. */
-+    struct _autoPyNameDef *autopyname;  /* The Python naming rules. */
-+    struct _moduleDef *next;            /* Next in the list. */
-+} moduleDef;
-+
-+
-+/* An entry in a linked module list. */
-+typedef struct _moduleListDef {
-+    moduleDef *module;                  /* The module itself. */
-+    struct _moduleListDef *next;        /* The next in the list. */
-+} moduleListDef;
-+
-+
-+/* An interface file definition. */
-+typedef struct _ifaceFileDef {
-+    nameDef *name;                      /* The name. */
-+    int needed;                         /* The main module needs it. */
-+    apiVersionRangeDef *api_range;      /* The optional API version range. */
-+    struct _ifaceFileDef *first_alt;    /* The first alternate API. */
-+    struct _ifaceFileDef *next_alt;     /* The next alternate API. */
-+    ifaceFileType type;                 /* Interface file type. */
-+    int ifacenr;                        /* The index into the types table. */
-+    scopedNameDef *fqcname;             /* The fully qualified C++ name. */
-+    moduleDef *module;                  /* The owning module. */
-+    codeBlockList *hdrcode;             /* Header code. */
-+    const char *file_extension;         /* The optional file extension. */
-+    struct _ifaceFileList *used;        /* Interface files used. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _ifaceFileDef *next;         /* Next in the list. */
-+} ifaceFileDef;
-+
-+
-+/* An entry in a linked interface file list. */
-+
-+typedef struct _ifaceFileList {
-+    ifaceFileDef *iff;                  /* The interface file itself. */
-+    struct _ifaceFileList *next;        /* Next in the list. */
-+} ifaceFileList;
-+
-+
-+/* A mapped type. */
-+typedef struct _mappedTypeDef {
-+    int mtflags;                        /* The mapped type flags. */
-+    argDef type;                        /* The type being mapped. */
-+    nameDef *pyname;                    /* The Python name. */
-+    nameDef *cname;                     /* The C/C++ name. */
-+    const char *doctype;                /* The documented type. */
-+    typeHintDef *typehint_in;           /* The PEP 484 input type hint. */
-+    typeHintDef *typehint_out;          /* The PEP 484 output type hint. */
-+    const char *typehint_value;         /* The type hint value. */
-+    ifaceFileDef *iff;                  /* The interface file. */
-+    struct _memberDef *members;         /* The static member functions. */
-+    struct _overDef *overs;             /* The static overloads. */
-+    codeBlockList *instancecode;        /* Create instance code. */
-+    codeBlockList *typecode;            /* Type code. */
-+    codeBlockList *convfromcode;        /* Convert from C++ code. */
-+    codeBlockList *convtocode;          /* Convert to C++ code. */
-+    struct _mappedTypeDef *real;        /* The original definition. */
-+    struct _mappedTypeDef *next;        /* Next in the list. */
-+} mappedTypeDef;
-+
-+
-+/* A function signature. */
-+typedef struct _signatureDef {
-+    argDef result;                      /* The result. */
-+    int nrArgs;                         /* The number of arguments. */
-+    argDef args[MAX_NR_ARGS];           /* The arguments. */
-+} signatureDef;
-+
-+
-+/* A list of function signatures. */
-+typedef struct _signatureList {
-+    struct _signatureDef *sd;           /* The signature. */
-+    struct _signatureList *next;        /* Next in the list. */
-+} signatureList;
-+
-+
-+/* A template type. */
-+typedef struct _templateDef {
-+    scopedNameDef *fqname;              /* The name. */
-+    signatureDef types;                 /* The types. */
-+} templateDef;
-+
-+
-+/* A list of virtual handlers. */
-+typedef struct _virtHandlerDef {
-+    int virthandlernr;                  /* The nr. of the virtual handler. */
-+    int vhflags;                        /* The virtual handler flags. */
-+    signatureDef *pysig;                /* The Python signature. */
-+    signatureDef *cppsig;               /* The C++ signature. */
-+    codeBlockList *virtcode;            /* Virtual handler code. */
-+    virtErrorHandler *veh;              /* The virtual error handler. */
-+    struct _virtHandlerDef *next;       /* Next in the list. */
-+} virtHandlerDef;
-+
-+
-+/* A typedef definition. */
-+typedef struct _typedefDef {
-+    int tdflags;                        /* The typedef flags. */
-+    scopedNameDef *fqname;              /* The fully qualified name. */
-+    struct _classDef *ecd;              /* The enclosing class. */
-+    moduleDef *module;                  /* The owning module. */
-+    argDef type;                        /* The actual type. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _typedefDef *next;           /* Next in the list. */
-+} typedefDef;
-+
-+
-+/* A variable definition. */
-+typedef struct _varDef {
-+    scopedNameDef *fqcname;             /* The fully qualified C/C++ name. */
-+    nameDef *pyname;                    /* The variable Python name. */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    struct _classDef *ecd;              /* The enclosing class. */
-+    moduleDef *module;                  /* The owning module. */
-+    int varflags;                       /* The variable flags. */
-+    argDef type;                        /* The actual type. */
-+    codeBlockList *accessfunc;          /* The access function. */
-+    codeBlockList *getcode;             /* The get code. */
-+    codeBlockList *setcode;             /* The set code. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _varDef *next;               /* Next in the list. */
-+} varDef;
-+
-+
-+/* A property definition. */
-+typedef struct _propertyDef {
-+    nameDef *name;                      /* The property name. */
-+    docstringDef *docstring;            /* The docstring. */
-+    const char *get;                    /* The name of the getter method. */
-+    const char *set;                    /* The name of the setter method. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _propertyDef *next;          /* Next in the list. */
-+} propertyDef;
-+
-+
-+/* An overloaded member function definition. */
-+typedef struct _overDef {
-+    sourceLocation sloc;                /* The source location. */
-+    char *cppname;                      /* The C++ name. */
-+    docstringDef *docstring;            /* The docstring. */
-+    int overflags;                      /* The overload flags. */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    int pyqt_signal_hack;               /* The PyQt signal hack. */
-+    KwArgs kwargs;                      /* The keyword argument support. */
-+    struct _memberDef *common;          /* Common parts. */
-+    apiVersionRangeDef *api_range;      /* The optional API version range. */
-+    signatureDef pysig;                 /* The Python signature. */
-+    signatureDef *cppsig;               /* The C++ signature. */
-+    throwArgs *exceptions;              /* The exceptions. */
-+    codeBlockList *methodcode;          /* Method code. */
-+    codeBlockList *premethodcode;       /* Code to insert before the method code. */
-+    codeBlockList *virtcallcode;        /* Virtual call code. */
-+    codeBlockList *virtcode;            /* Virtual handler code. */
-+    char *prehook;                      /* The pre-hook name. */
-+    char *posthook;                     /* The post-hook name. */
-+    const char *virt_error_handler;     /* The virtual error handler. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _overDef *next;              /* Next in the list. */
-+} overDef;
-+
-+
-+/* An overloaded constructor definition. */
-+typedef struct _ctorDef {
-+    docstringDef *docstring;            /* The docstring. */
-+    int ctorflags;                      /* The ctor flags. */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    KwArgs kwargs;                      /* The keyword argument support. */
-+    apiVersionRangeDef *api_range;      /* The optional API version range. */
-+    signatureDef pysig;                 /* The Python signature. */
-+    signatureDef *cppsig;               /* The C++ signature, NULL if /NoDerived/. */
-+    throwArgs *exceptions;              /* The exceptions. */
-+    codeBlockList *methodcode;          /* Method code. */
-+    codeBlockList *premethodcode;       /* Code to insert before the method code. */
-+    char *prehook;                      /* The pre-hook name. */
-+    char *posthook;                     /* The post-hook name. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _ctorDef *next;              /* Next in the list. */
-+} ctorDef;
-+
-+
-+/* An enumerated type member definition. */
-+typedef struct _enumMemberDef {
-+    nameDef *pyname;                    /* The Python name. */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    char *cname;                        /* The C/C++ name. */
-+    struct _enumDef *ed;                /* The enclosing enum. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _enumMemberDef *next;        /* Next in the list. */
-+} enumMemberDef;
-+
-+
-+/* An enumerated type definition. */
-+typedef struct _enumDef {
-+    int enumflags;                      /* The enum flags. */
-+    scopedNameDef *fqcname;             /* The C/C++ name (may be NULL). */
-+    nameDef *cname;                     /* The C/C++ name (may be NULL). */
-+    nameDef *pyname;                    /* The Python name (may be NULL). */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    struct _enumDef *first_alt;         /* The first alternate API. */
-+    struct _enumDef *next_alt;          /* The next alternate API. */
-+    int enumnr;                         /* The enum number. */
-+    int enum_idx;                       /* The enum index within the module. */
-+    struct _classDef *ecd;              /* The enclosing class, if any. */
-+    struct _mappedTypeDef *emtd;        /* The enclosing mapped type, if any. */
-+    moduleDef *module;                  /* The owning module. */
-+    enumMemberDef *members;             /* The list of members. */
-+    struct _memberDef *slots;           /* The list of slots. */
-+    struct _overDef *overs;             /* The list of slot overloads. */
-+    platformDef *platforms;             /* The platforms. */
-+    struct _enumDef *next;              /* Next in the list. */
-+} enumDef;
-+
-+
-+/* An member function definition. */
-+typedef struct _memberDef {
-+    nameDef *pyname;                    /* The Python name. */
-+    int memberflags;                    /* The member flags. */
-+    int membernr;                       /* The index in the method table. */
-+    slotType slot;                      /* The slot type. */
-+    moduleDef *module;                  /* The owning module. */
-+    struct _ifaceFileDef *ns_scope;     /* The scope if it has been moved. */
-+    struct _memberDef *next;            /* Next in the list. */
-+} memberDef;
-+
-+
-+/* A list of visible member functions. */
-+typedef struct _visibleList {
-+    memberDef *m;                       /* The member definition. */
-+    struct _classDef *cd;               /* The class. */
-+    struct _visibleList *next;          /* Next in the list. */
-+} visibleList;
-+
-+
-+/* An entry in a linked class list. */
-+typedef struct _classList {
-+    struct _classDef *cd;               /* The class itself. */
-+    struct _classList *next;            /* Next in the list. */
-+} classList;
-+
-+
-+/* A virtual overload definition. */
-+typedef struct _virtOverDef {
-+    overDef *od;                        /* The overload. */
-+    virtHandlerDef *virthandler;        /* The virtual handler. */
-+    struct _virtOverDef *next;          /* Next in the list. */
-+} virtOverDef;
-+
-+
-+/* A class that appears in a class's hierarchy. */
-+typedef struct _mroDef {
-+    struct _classDef *cd;               /* The class. */
-+    int mroflags;                       /* The hierarchy flags. */
-+    struct _mroDef *next;               /* The next in the list. */
-+} mroDef;
-+
-+
-+/* A class definition. */
-+typedef struct _classDef {
-+    docstringDef *docstring;            /* The class docstring. */
-+    unsigned classflags;                /* The class flags. */
-+    unsigned classflags2;               /* The class flags, part 2. */
-+    int pyqt_flags;                     /* The PyQt specific flags. */
-+    const char *pyqt_interface;         /* The Qt interface name. */
-+    nameDef *pyname;                    /* The Python name. */
-+    int no_typehint;                    /* The type hint will be suppressed. */
-+    ifaceFileDef *iff;                  /* The interface file. */
-+    struct _classDef *ecd;              /* The enclosing scope. */
-+    struct _classDef *real;             /* The real class if this is a proxy or extender. */
-+    classList *supers;                  /* The parent classes. */
-+    mroDef *mro;                        /* The super-class hierarchy. */
-+    nameDef *metatype;                  /* The meta-type. */
-+    nameDef *supertype;                 /* The super-type. */
-+    templateDef *td;                    /* The instantiated template. */
-+    ctorDef *ctors;                     /* The constructors. */
-+    ctorDef *defctor;                   /* The default ctor. */
-+    codeBlockList *dealloccode;         /* Handwritten dealloc code. */
-+    codeBlockList *dtorcode;            /* Handwritten dtor code. */
-+    throwArgs *dtorexceptions;          /* The dtor exceptions. */
-+    memberDef *members;                 /* The member functions. */
-+    overDef *overs;                     /* The overloads. */
-+    argList *casts;                     /* The operator casts. */
-+    virtOverDef *vmembers;              /* The virtual members. */
-+    visibleList *visible;               /* The visible members. */
-+    codeBlockList *cppcode;             /* Class C++ code. */
-+    codeBlockList *convtosubcode;       /* Convert to sub C++ code. */
-+    struct _classDef *subbase;          /* Sub-class base class. */
-+    codeBlockList *instancecode;        /* Create instance code. */
-+    codeBlockList *convtocode;          /* Convert to C++ code. */
-+    codeBlockList *convfromcode;        /* Convert from C++ code. */
-+    codeBlockList *travcode;            /* Traverse code. */
-+    codeBlockList *clearcode;           /* Clear code. */
-+    codeBlockList *getbufcode;          /* Get buffer code (Python v3). */
-+    codeBlockList *releasebufcode;      /* Release buffer code (Python v3). */
-+    codeBlockList *readbufcode;         /* Read buffer code (Python v2). */
-+    codeBlockList *writebufcode;        /* Write buffer code (Python v2). */
-+    codeBlockList *segcountcode;        /* Segment count code (Python v2). */
-+    codeBlockList *charbufcode;         /* Character buffer code (Python v2). */
-+    codeBlockList *picklecode;          /* Pickle code. */
-+    codeBlockList *finalcode;           /* Finalisation code. */
-+    codeBlockList *typehintcode;        /* Type hint code. */
-+    propertyDef *properties;            /* The properties. */
-+    const char *virt_error_handler;     /* The virtual error handler. */
-+    typeHintDef *typehint_in;           /* The PEP 484 input type hint. */
-+    typeHintDef *typehint_out;          /* The PEP 484 output type hint. */
-+    const char *typehint_value;         /* The type hint value. */
-+    struct _classDef *next;             /* Next in the list. */
-+} classDef;
-+
-+
-+/* A class template definition. */
-+typedef struct _classTmplDef {
-+    signatureDef sig;                   /* The template arguments. */
-+    classDef *cd;                       /* The class itself. */
-+    struct _classTmplDef *next;         /* The next in the list. */
-+} classTmplDef;
-+
-+
-+/* A mapped type template definition. */
-+typedef struct _mappedTypeTmplDef {
-+    signatureDef sig;                   /* The template arguments. */
-+    mappedTypeDef *mt;                  /* The mapped type itself. */
-+    struct _mappedTypeTmplDef *next;    /* The next in the list. */
-+} mappedTypeTmplDef;
-+
-+
-+/* The extracts for an identifier. */
-+typedef struct _extractDef {
-+    const char *id;                     /* The identifier. */
-+    struct _extractPartDef *parts;      /* The ordered list of parts. */
-+    struct _extractDef *next;           /* The next in the list. */
-+} extractDef;
-+
-+
-+/* Part of an extract for an identifier. */
-+typedef struct _extractPartDef {
-+    int order;                          /* The order of the part. */
-+    codeBlock *part;                    /* The part itself. */
-+    struct _extractPartDef *next;       /* The next in the list. */
-+} extractPartDef;
-+
-+
-+/* A rule for automatic Python naming. */
-+typedef struct _autoPyNameDef {
-+    const char *remove_leading;         /* Leading string to remove. */
-+    struct _autoPyNameDef *next;        /* The next in the list. */
-+} autoPyNameDef;
-+
-+
-+/* The parse tree corresponding to the specification file. */
-+typedef struct {
-+    moduleDef *module;                  /* The module being generated. */
-+    moduleDef *modules;                 /* The list of modules. */
-+    nameDef *namecache;                 /* The name cache. */
-+    ifaceFileDef *ifacefiles;           /* The list of interface files. */
-+    classDef *classes;                  /* The list of classes. */
-+    classTmplDef *classtemplates;       /* The list of class templates. */
-+    exceptionDef *exceptions;           /* The list of exceptions. */
-+    mappedTypeDef *mappedtypes;         /* The mapped types. */
-+    mappedTypeTmplDef *mappedtypetemplates; /* The list of mapped type templates. */
-+    enumDef *enums;                     /* List of enums. */
-+    varDef *vars;                       /* List of variables. */
-+    typedefDef *typedefs;               /* List of typedefs. */
-+    int nrvirthandlers;                 /* The number of virtual handlers. */
-+    virtHandlerDef *virthandlers;       /* The virtual handlers. */
-+    virtErrorHandler *errorhandlers;    /* The list of virtual error handlers. */
-+    codeBlockList *exphdrcode;          /* Exported header code. */
-+    codeBlockList *exptypehintcode;     /* Exported type hint code. */
-+    codeBlockList *docs;                /* Documentation. */
-+    classDef *qobject_cd;               /* QObject class, NULL if none. */
-+    int sigslots;                       /* Set if signals or slots are used. */
-+    int genc;                           /* Set if we are generating C code. */
-+    struct _stringList *plugins;        /* The list of plugins. */
-+    struct _extractDef *extracts;       /* The list of extracts. */
-+} sipSpec;
-+
-+
-+/* A list of strings. */
-+typedef struct _stringList {
-+    const char *s;                      /* The string. */
-+    struct _stringList *next;           /* The next in the list. */
-+} stringList;
-+
-+
-+/* File specific context information for the parser. */
-+typedef struct _parserContext {
-+    const char *filename;               /* The %Import or %Include filename. */
-+    int ifdepth;                        /* The depth of nested if's. */
-+    moduleDef *prevmod;                 /* The previous module. */
-+} parserContext;
-+
-+
-+extern char *sipVersion;                /* The version of SIP. */
-+extern stringList *includeDirList;      /* The include directory list for SIP files. */
-+
-+
-+void parse(sipSpec *, FILE *, char *, int, stringList *, stringList *,
-+        stringList *, KwArgs, int);
-+void parserEOF(const char *,parserContext *);
-+void transform(sipSpec *, int);
-+void generateCode(sipSpec *, char *, char *, char *, const char *, int, int,
-+        int, int, stringList *needed_qualifiers, stringList *, const char *,
-+        int, int, const char *);
-+void generateExtracts(sipSpec *pt, const stringList *extracts);
-+void addExtractPart(sipSpec *pt, const char *id, int order, codeBlock *part);
-+void generateAPI(sipSpec *pt, moduleDef *mod, const char *apiFile);
-+void generateXML(sipSpec *pt, moduleDef *mod, const char *xmlFile);
-+void generateTypeHints(sipSpec *pt, moduleDef *mod, const char *pyiFile);
-+void generateExpression(valueDef *vd, int in_str, FILE *fp);
-+void warning(Warning w, const char *fmt, ...);
-+void deprecated(const char *msg);
-+SIP_NORETURN void fatal(const char *fmt,...);
-+void fatalScopedName(scopedNameDef *);
-+void fatalStart();
-+void getSourceLocation(sourceLocation *slp);
-+int setInputFile(FILE *open_fp, parserContext *pc, int optional);
-+void resetLexerState();
-+void *sipMalloc(size_t n);
-+void *sipCalloc(size_t nr, size_t n);
-+char *sipStrdup(const char *);
-+char *concat(const char *, ...);
-+void append(char **, const char *);
-+void appendToIfaceFileList(ifaceFileList **ifflp, ifaceFileDef *iff);
-+int selectedQualifier(stringList *needed_qualifiers, qualDef *qd);
-+int excludedFeature(stringList *,qualDef *);
-+int sameSignature(signatureDef *,signatureDef *,int);
-+int sameTemplateSignature(signatureDef *tmpl_sd, signatureDef *args_sd,
-+        int deep);
-+int compareScopedNames(scopedNameDef *snd1, scopedNameDef *snd2);
-+int sameBaseType(argDef *,argDef *);
-+char *scopedNameTail(scopedNameDef *);
-+scopedNameDef *copyScopedName(scopedNameDef *);
-+void appendScopedName(scopedNameDef **,scopedNameDef *);
-+void freeScopedName(scopedNameDef *);
-+void appendToClassList(classList **,classDef *);
-+void appendCodeBlockList(codeBlockList **headp, codeBlockList *cbl);
-+void prcode(FILE *fp, const char *fmt, ...);
-+void prCopying(FILE *fp, moduleDef *mod, const char *comment);
-+void prOverloadName(FILE *fp, overDef *od);
-+void prOverloadDecl(FILE *fp, ifaceFileDef *scope, overDef *od, int defval);
-+void prDefaultValue(argDef *ad, int in_str, FILE *fp);
-+void prScopedPythonName(FILE *fp, classDef *scope, const char *pyname);
-+void searchTypedefs(sipSpec *pt, scopedNameDef *snd, argDef *ad);
-+int isZeroArgSlot(memberDef *md);
-+int isIntReturnSlot(memberDef *md);
-+int isSSizeReturnSlot(memberDef *md);
-+int isLongReturnSlot(memberDef *md);
-+int isVoidReturnSlot(memberDef *md);
-+int isNumberSlot(memberDef *md);
-+int isInplaceNumberSlot(memberDef *md);
-+int isRichCompareSlot(memberDef *md);
-+mappedTypeDef *allocMappedType(sipSpec *pt, argDef *type);
-+void appendString(stringList **headp, const char *s);
-+void appendTypeStrings(scopedNameDef *ename, signatureDef *patt, signatureDef *src, signatureDef *known, scopedNameDef **names, scopedNameDef **values);
-+codeBlockList *templateCode(sipSpec *pt, ifaceFileList **used,
-+        codeBlockList *ocbl, scopedNameDef *names, scopedNameDef *values);
-+ifaceFileDef *findIfaceFile(sipSpec *pt, moduleDef *mod,
-+        scopedNameDef *fqname, ifaceFileType iftype,
-+        apiVersionRangeDef *api_range, argDef *ad);
-+int pluginPyQt4(sipSpec *pt);
-+int pluginPyQt5(sipSpec *pt);
-+SIP_NORETURN void yyerror(char *);
-+void yywarning(char *);
-+int yylex();
-+nameDef *cacheName(sipSpec *pt, const char *name);
-+scopedNameDef *encodedTemplateName(templateDef *td);
-+apiVersionRangeDef *findAPI(sipSpec *pt, const char *name);
-+memberDef *findMethod(classDef *cd, const char *name);
-+typeHintDef *newTypeHint(char *raw_hint);
-+int isPyKeyword(const char *word);
-+void getDefaultImplementation(sipSpec *pt, argType atype, classDef **cdp,
-+        mappedTypeDef **mtdp);
-+char *templateString(const char *src, scopedNameDef *names,
-+        scopedNameDef *values);
-+int inDefaultAPI(sipSpec *pt, apiVersionRangeDef *range);
-+int hasImplicitOverloads(signatureDef *sd);
-+void dsCtor(sipSpec *pt, classDef *cd, ctorDef *ct, int sec, FILE *fp);
-+void dsOverload(sipSpec *pt, overDef *od, int is_method, int sec, FILE *fp);
-+scopedNameDef *getFQCNameOfType(argDef *ad);
-+scopedNameDef *removeGlobalScope(scopedNameDef *snd);
-+void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
-+        ifaceFileList *defined, int pep484, int rest, FILE *fp);
-+void restPyClass(classDef *cd, int as_ref, FILE *fp);
-+void restPyEnum(enumDef *ed, int as_ref, FILE *fp);
-+
-+
-+/* These are only here because bison publically references them. */
-+
-+/* Represent a set of option flags. */
-+
-+#define MAX_NR_FLAGS    5
-+
-+typedef enum {
-+    bool_flag,
-+    string_flag,
-+    name_flag,
-+    opt_name_flag,
-+    dotted_name_flag,
-+    integer_flag,
-+    opt_integer_flag,
-+    api_range_flag
-+} flagType;
-+
-+typedef struct {
-+    const char *fname;                  /* The flag name. */
-+    flagType ftype;                     /* The flag type. */
-+    union {                             /* The flag value. */
-+        char *sval;                     /* A string value. */
-+        long ival;                      /* An integer value. */
-+        apiVersionRangeDef *aval;       /* An API range value. */
-+    } fvalue;
-+} optFlag;
-+
-+typedef struct {
-+    int nrFlags;                        /* The number of flags. */
-+    optFlag flags[MAX_NR_FLAGS];        /* Each flag. */
-+} optFlags;
-+
-+
-+/* These represent the configuration of different directives. */
-+
-+/* %API */
-+typedef struct _apiCfg {
-+    int token;
-+    const char *name;
-+    int version;
-+} apiCfg;
-+
-+/* %AutoPyName */
-+typedef struct _autoPyNameCfg {
-+    int token;
-+    const char *remove_leading;
-+} autoPyNameCfg;
-+
-+/* %CompositeModule */
-+typedef struct _compModuleCfg {
-+    int token;
-+    const char *name;
-+    docstringDef *docstring;
-+} compModuleCfg;
-+
-+/* %ConsolidatedModule */
-+typedef struct _consModuleCfg {
-+    int token;
-+    const char *name;
-+    docstringDef *docstring;
-+} consModuleCfg;
-+
-+/* %DefaultDocstringFormat */
-+typedef struct _defDocstringFmtCfg {
-+    int token;
-+    const char *name;
-+} defDocstringFmtCfg;
-+
-+/* %DefaultDocstringSignature */
-+typedef struct _defDocstringSigCfg {
-+    int token;
-+    const char *name;
-+} defDocstringSigCfg;
-+
-+/* %DefaultEncoding */
-+typedef struct _defEncodingCfg {
-+    int token;
-+    const char *name;
-+} defEncodingCfg;
-+
-+/* %DefaultMetatype */
-+typedef struct _defMetatypeCfg {
-+    int token;
-+    const char *name;
-+} defMetatypeCfg;
-+
-+/* %DefaultSupertype */
-+typedef struct _defSupertypeCfg {
-+    int token;
-+    const char *name;
-+} defSupertypeCfg;
-+
-+/* %Docstring */
-+typedef struct _docstringCfg {
-+    int token;
-+    Format format;
-+    Signature signature;
-+} docstringCfg;
-+
-+/* %Exception */
-+typedef struct _exceptionCfg {
-+    int token;
-+    codeBlock *type_header_code;
-+    codeBlock *raise_code;
-+} exceptionCfg;
-+
-+/* %Extract */
-+typedef struct _extractCfg {
-+    int token;
-+    const char *id;
-+    int order;
-+} extractCfg;
-+
-+/* %Feature */
-+typedef struct _featureCfg {
-+    int token;
-+    const char *name;
-+} featureCfg;
-+
-+/* %HiddenNamespace */
-+typedef struct _hiddenNsCfg {
-+    int token;
-+    scopedNameDef *name;
-+} hiddenNsCfg;
-+
-+/* %Import */
-+typedef struct _importCfg {
-+    int token;
-+    const char *name;
-+} importCfg;
-+
-+/* %Include */
-+typedef struct _includeCfg {
-+    int token;
-+    const char *name;
-+    int optional;
-+} includeCfg;
-+
-+/* %License */
-+typedef struct _licenseCfg {
-+    int token;
-+    const char *type;
-+    const char *licensee;
-+    const char *signature;
-+    const char *timestamp;
-+} licenseCfg;
-+
-+/* %Module and its sub-directives. */
-+typedef struct _moduleCfg {
-+    int token;
-+    int c_module;
-+    KwArgs kwargs;
-+    const char *name;
-+    int use_arg_names;
-+    int use_limited_api;
-+    int all_raise_py_exc;
-+    int call_super_init;
-+    const char *def_error_handler;
-+    docstringDef *docstring;
-+} moduleCfg;
-+
-+/* %Plugin */
-+typedef struct _pluginCfg {
-+    int token;
-+    const char *name;
-+} pluginCfg;
-+
-+/* %Property */
-+typedef struct _propertyCfg {
-+    int token;
-+    const char *get;
-+    const char *name;
-+    const char *set;
-+    docstringDef *docstring;
-+} propertyCfg;
-+
-+/* Variable sub-directives. */
-+typedef struct _variableCfg {
-+    int token;
-+    codeBlock *access_code;
-+    codeBlock *get_code;
-+    codeBlock *set_code;
-+} variableCfg;
-+
-+/* %VirtualErrorHandler */
-+typedef struct _vehCfg {
-+    int token;
-+    const char *name;
-+} vehCfg;
-+
-+#endif
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/transform.c sip/sipgen/transform.c
---- ./sip-4.19.12.orig/sipgen/transform.c	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sipgen/transform.c	2018-09-24 13:12:20.694275757 -0400
-@@ -89,7 +89,8 @@
- static classDef *findAltClassImplementation(sipSpec *pt, mappedTypeDef *mtd);
- static ifaceFileDef *getIfaceFile(argDef *ad);
- static ifaceFileDef *getIfaceFileForEnum(enumDef *ed);
--static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type);
-+static void instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod,
-+        mappedTypeTmplDef *mtt, argDef *type);
- static classDef *getProxy(moduleDef *mod, classDef *cd);
- static int generatingCodeForModule(sipSpec *pt, moduleDef *mod);
- static void checkAssignmentHelper(sipSpec *pt, classDef *cd);
-@@ -3040,9 +3041,7 @@
-             for (mtt = pt->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
-                 if (compareScopedNames(mtt->mt->type.u.td->fqname, type->u.td->fqname) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &type->u.td->types, TRUE))
-                 {
--                    type->u.mtd = instantiateMappedTypeTemplate(pt, mod, mtt, type);
--                    type->atype = mapped_type;
--
-+                    instantiateMappedTypeTemplate(pt, mod, mtt, type);
-                     break;
-                 }
-         }
-@@ -3144,9 +3143,10 @@
- 
- 
- /*
-- * Instantiate a mapped type template and return it.
-+ * Instantiate a mapped type template.
-  */
--static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type)
-+static void instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod,
-+        mappedTypeTmplDef *mtt, argDef *type)
- {
-     scopedNameDef *type_names, *type_values;
-     mappedTypeDef *mtd;
-@@ -3201,7 +3201,13 @@
- 
-     mtd = copyTemplateType(mtd, type);
- 
--    return mtd;
-+    /* Replace the template with the mapped type. */
-+    type->atype = mapped_type;
-+    type->typehint_in = mtd->typehint_in;
-+    type->typehint_out = mtd->typehint_out;
-+    type->typehint_value = mtd->typehint_value;
-+
-+    type->u.mtd = mtd;
- }
- 
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/type_hints.c sip/sipgen/type_hints.c
---- ./sip-4.19.12.orig/sipgen/type_hints.c	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sipgen/type_hints.c	2018-09-24 13:12:20.695275742 -0400
-@@ -57,10 +57,8 @@
-         ifaceFileList *defined, KwArgs kwargs, int pep484, FILE *fp);
- static void pyiType(sipSpec *pt, moduleDef *mod, argDef *ad, int out, int sec,
-         ifaceFileList *defined, int pep484, FILE *fp);
--static void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
--        ifaceFileList *defined, int pep484, FILE *fp);
- static void pyiTypeHintNode(typeHintNodeDef *node, moduleDef *mod,
--        ifaceFileList *defined, int pep484, FILE *fp);
-+        ifaceFileList *defined, int pep484, int rest, FILE *fp);
- static void prIndent(int indent, FILE *fp);
- static int separate(int first, int indent, FILE *fp);
- static void prClassRef(classDef *cd, moduleDef *mod, ifaceFileList *defined,
-@@ -956,7 +954,7 @@
- 
-     if (thd != NULL)
-     {
--        pyiTypeHint(pt, thd, mod, out, defined, pep484, fp);
-+        pyiTypeHint(pt, thd, mod, out, defined, pep484, FALSE, fp);
-         return;
-     }
- 
-@@ -1415,13 +1413,13 @@
- /*
-  * Generate a type hint from a /TypeHint/ annotation.
-  */
--static void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
--        ifaceFileList *defined, int pep484, FILE *fp)
-+void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
-+        ifaceFileList *defined, int pep484, int rest, FILE *fp)
- {
-     parseTypeHint(pt, thd, out);
- 
-     if (thd->root != NULL)
--        pyiTypeHintNode(thd->root, mod, defined, pep484, fp);
-+        pyiTypeHintNode(thd->root, mod, defined, pep484, rest, fp);
-     else
-         maybeAnyObject(thd->raw_hint, pep484, fp);
- }
-@@ -1431,7 +1429,7 @@
-  * Generate a single node of a type hint.
-  */
- static void pyiTypeHintNode(typeHintNodeDef *node, moduleDef *mod,
--        ifaceFileList *defined, int pep484, FILE *fp)
-+        ifaceFileList *defined, int pep484, int rest, FILE *fp)
- {
-     switch (node->type)
-     {
-@@ -1452,7 +1450,7 @@
- 
-                 need_comma = TRUE;
- 
--                pyiTypeHintNode(thnd, mod, defined, pep484, fp);
-+                pyiTypeHintNode(thnd, mod, defined, pep484, rest, fp);
-             }
- 
-             fprintf(fp, "]");
-@@ -1461,11 +1459,19 @@
-         break;
- 
-     case class_node:
--        prClassRef(node->u.cd, mod, defined, pep484, fp);
-+        if (rest)
-+            restPyClass(node->u.cd, TRUE, fp);
-+        else
-+            prClassRef(node->u.cd, mod, defined, pep484, fp);
-+
-         break;
- 
-     case enum_node:
--        prEnumRef(node->u.ed, mod, defined, pep484, fp);
-+        if (rest)
-+            restPyEnum(node->u.ed, TRUE, fp);
-+        else
-+            prEnumRef(node->u.ed, mod, defined, pep484, fp);
-+
-         break;
- 
-     case brackets_node:
-@@ -1702,7 +1708,7 @@
- 
- 
- /*
-- * Flatten an unions in a list of nodes.
-+ * Flatten any unions in a list of nodes.
-  */
- static typeHintNodeDef *flatten_unions(typeHintNodeDef *nodes)
- {
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/sip.h sip/siplib/sip.h
---- ./sip-4.19.12.orig/siplib/sip.h	2018-07-05 05:55:19.000000000 -0400
-+++ sip/siplib/sip.h	2018-09-18 18:12:23.643053242 -0400
-@@ -54,8 +54,8 @@
- /*
-  * Define the SIP version number.
-  */
--#define SIP_VERSION         0x04130c
--#define SIP_VERSION_STR     "4.19.12"
-+#define SIP_VERSION         0x04ffff
-+#define SIP_VERSION_STR     "4.255.255"
- 
- 
- /*
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/sip.h.in sip/siplib/sip.h.in
---- ./sip-4.19.12.orig/siplib/sip.h.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/siplib/sip.h.in	2018-09-18 17:52:23.290543826 -0400
-@@ -0,0 +1,2169 @@
-+/*
-+ * The SIP module interface.
-+ *
-+ * Copyright (c) 2018 Riverbank Computing Limited <info at riverbankcomputing.com>
-+ *
-+ * This file is part of SIP.
-+ *
-+ * This copy of SIP is licensed for use under the terms of the SIP License
-+ * Agreement.  See the file LICENSE for more details.
-+ *
-+ * This copy of SIP may also used under the terms of the GNU General Public
-+ * License v2 or v3 as published by the Free Software Foundation which can be
-+ * found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
-+ *
-+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+ */
-+
-+
-+#ifndef _SIP_H
-+#define _SIP_H
-+
-+
-+/*
-+ * This gets round a problem with Qt's moc and Python v2.3.  Strictly speaking
-+ * it's a Qt problem but later versions of Python include a fix for it so we
-+ * might as well too.
-+ */
-+#undef slots
-+
-+
-+#include <Python.h>
-+
-+/*
-+ * There is a mis-feature somewhere with the Borland compiler.  This works
-+ * around it.
-+ */
-+#if defined(__BORLANDC__)
-+#include <rpc.h>
-+#endif
-+
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* Sanity check on the Python version. */
-+#if PY_VERSION_HEX < 0x02030000
-+#error "This version of SIP requires Python v2.3 or later"
-+#endif
-+
-+
-+/*
-+ * Define the SIP version number.
-+ */
-+#define SIP_VERSION         0x at RM_HEXVERSION@
-+#define SIP_VERSION_STR     "@RM_RELEASE@"
-+
-+
-+/*
-+ * Define the current API version number.  SIP must handle modules with the
-+ * same major number and with the same or earlier minor number.  Whenever
-+ * members are added to non-embedded data structures they must be appended and
-+ * the minor number incremented.  Whenever data structure members are removed
-+ * or their offset changed then the major number must be incremented and the
-+ * minor number set * to 0.
-+ *
-+ * History:
-+ *
-+ * 12.5 Replaced the sipConvertFromSliceObject() macro with
-+ *      sip_api_convert_from_slice_object() in the public API.
-+ *
-+ * 12.4 Added sip_api_instance_destroyed_ex() to the private API.
-+ *
-+ * 12.3 Added SIP_TYPE_SCOPED_ENUM to the sipTypeDef flags.
-+ *      Added sip_api_convert_to_enum() to the public API.
-+ *      Added sip_api_convert_to_bool() to the public API.
-+ *      Added sip_api_long_as_char(), sip_api_long_as_signed_char(),
-+ *      sip_api_long_as_unsigned_char(), sip_api_long_as_short(),
-+ *      sip_api_long_as_unsigned_short(), sip_api_long_as_int(),
-+ *      sip_api_long_as_unsigned_int(), sip_api_long_as_long(),
-+ *      sip_api_long_as_unsigned_long(), sip_api_long_as_long_long(),
-+ *      sip_api_long_as_unsigned_long_long() to the public API.
-+ *      Deprecated sip_api_can_convert_to_enum().
-+ *
-+ * 12.2 Added sip_api_print_object() to the public API.
-+ *      Renamed sip_api_common_dtor() to sip_api_instance_destroyed() and added
-+ *      it to the public API.
-+ *      Added sipEventType and sip_api_register_event_handler() to the public
-+ *      API.
-+ *
-+ * 12.1 Added sip_api_enable_gc() to the public API.
-+ *
-+ * 12.0 Added SIP_TYPE_LIMITED_API to the sipTypeDef flags.
-+ *      Added sip_api_py_type_dict() and sip_api_py_type_name() to the public
-+ *      API.
-+ *      Added sip_api_set_new_user_type_handler() to the public API.
-+ *      Added sip_api_is_user_type() to the public API.
-+ *      Added sip_api_set_type_user_data() and sip_api_get_type_user_data() to
-+ *      the public API.
-+ *      Added sip_api_set_user_object() and sip_api_get_user_object() to the
-+ *      public API.
-+ *      Added sip_api_get_method() and sip_api_from_method() to the public API.
-+ *      Added sip_api_get_c_function() to the public API.
-+ *      Added sip_api_get_date() and sip_api_from_date() to the public API.
-+ *      Added sip_api_get_datetime() and sip_api_from_datetime() to the public
-+ *      API.
-+ *      Added sip_api_get_time() and sip_api_from_time() to the public API.
-+ *      Added sip_api_get_frame() to the public API.
-+ *      Added sip_api_check_plugin_for_type() to the public API.
-+ *      Added sip_api_unicode_new(), sip_api_unicode_write() and
-+ *      sip_api_unicode_data() to the public API.
-+ *      Added sip_api_get_buffer_info() and sip_api_relese_buffer_info() to the
-+ *      public API.
-+ *      Added sip_api_call_procedure_method() to the public API.
-+ *      Added sip_api_is_owned_by_python() to the private API.
-+ *      Added sip_api_is_derived_class() to the private API.
-+ *      Removed the im_version member from sipImportedModuleDef.
-+ *      Removed the im_module member from sipImportedModuleDef.
-+ *      Removed the em_version member from sipExportedModuleDef.
-+ *      Removed the em_virthandlers member from sipExportedModuleDef.
-+ *      Re-ordered the API functions.
-+ *
-+ * 11.3 Added sip_api_get_interpreter() to the public API.
-+ *
-+ * 11.2 Added sip_api_get_reference() to the private API.
-+ *
-+ * 11.1 Added sip_api_invoke_slot_ex().
-+ *
-+ * 11.0 Added the pyqt5QtSignal and pyqt5ClassTypeDef structures.
-+ *      Removed qt_interface from pyqt4ClassTypeDef.
-+ *      Added hack to pyqt4QtSignal.
-+ *
-+ * 10.1 Added ctd_final to sipClassTypeDef.
-+ *      Added ctd_init_mixin to sipClassTypeDef.
-+ *      Added sip_api_get_mixin_address() to the public API.
-+ *      Added sip_api_convert_from_new_pytype() to the public API.
-+ *      Added sip_api_convert_to_array() to the public API.
-+ *      Added sip_api_convert_to_typed_array() to the public API.
-+ *      Added sip_api_register_proxy_resolver() to the public API.
-+ *      Added sip_api_init_mixin() to the private API.
-+ *      Added qt_interface to pyqt4ClassTypeDef.
-+ *
-+ * 10.0 Added sip_api_set_destroy_on_exit().
-+ *      Added sip_api_enable_autoconversion().
-+ *      Removed sip_api_call_error_handler_old().
-+ *      Removed sip_api_start_thread().
-+ *
-+ * 9.2  Added sip_gilstate_t and SIP_RELEASE_GIL to the public API.
-+ *      Renamed sip_api_call_error_handler() to
-+ *      sip_api_call_error_handler_old().
-+ *      Added the new sip_api_call_error_handler() to the private API.
-+ *
-+ * 9.1  Added the capsule type.
-+ *      Added the 'z' format character to sip_api_build_result().
-+ *      Added the 'z', '!' and '$' format characters to
-+ *      sip_api_parse_result_ex().
-+ *
-+ * 9.0  Changed the sipVariableGetterFunc signature.
-+ *      Added sip_api_parse_result_ex() to the private API.
-+ *      Added sip_api_call_error_handler() to the private API.
-+ *      Added em_virterrorhandlers to sipExportedModuleDef.
-+ *      Re-ordered the API functions.
-+ *
-+ * 8.1  Revised the sipVariableDef structure.
-+ *      sip_api_get_address() is now part of the public API.
-+ *
-+ * 8.0  Changed the size of the sipSimpleWrapper structure.
-+ *      Added sip_api_get_address().
-+ *
-+ * 7.1  Added the 'H' format character to sip_api_parse_result().
-+ *      Deprecated the 'D' format character of sip_api_parse_result().
-+ *
-+ * 7.0  Added sip_api_parse_kwd_args().
-+ *      Added sipErrorState, sip_api_add_exception().
-+ *      The type initialisation function is now passed a dictionary of keyword
-+ *      arguments.
-+ *      All argument parsers now update a set of error messages rather than an
-+ *      argument count.
-+ *      The signatures of sip_api_no_function() and sip_api_no_method() have
-+ *      changed.
-+ *      Added ctd_docstring to sipClassTypeDef.
-+ *      Added vf_docstring to sipVersionedFunctionDef.
-+ *
-+ * 6.0  Added the sipContainerDef structure to define the contents of a class
-+ *      or mapped type.  Restructured sipClassDef and sipMappedTypeDef
-+ *      accordingly.
-+ *      Added the 'r' format character to sip_api_parse_args().
-+ *      Added the 'r' format character to sip_api_call_method() and
-+ *      sip_api_build_result().
-+ *      Added the assignment, array and copy allocation helpers.
-+ *
-+ * 5.0  Added sip_api_is_api_enabled().
-+ *      Renamed the td_version_nr member of sipTypeDef to be int and where -1
-+ *      indicates it is not versioned.
-+ *      Added the em_versions member to sipExportedModuleDef.
-+ *      Added the em_versioned_functions member to sipExportedModuleDef.
-+ *
-+ * 4.0  Much refactoring.
-+ *
-+ * 3.8  Added sip_api_register_qt_metatype() and sip_api_deprecated().
-+ *      Added qt_register_meta_type() to the Qt support API.
-+ *      The C/C++ names of enums and types are now always defined in the
-+ *      relevant structures and don't default to the Python name.
-+ *      Added the 'XE' format characters to sip_api_parse_args().
-+ *
-+ * 3.7  Added sip_api_convert_from_const_void_ptr(),
-+ *      sip_api_convert_from_void_ptr_and_size() and
-+ *      sip_api_convert_from_const_void_ptr_and_size().
-+ *      Added the 'g' and 'G' format characters (to replace the now deprecated
-+ *      'a' and 'A' format characters) to sip_api_build_result(),
-+ *      sip_api_call_method() and sip_api_parse_result().
-+ *      Added the 'k' and 'K' format characters (to replace the now deprecated
-+ *      'a' and 'A' format characters) to sip_api_parse_args().
-+ *      Added sip_api_invoke_slot().
-+ *      Added sip_api_parse_type().
-+ *      Added sip_api_is_exact_wrapped_type().
-+ *      Added the td_assign and td_qt fields to the sipTypeDef structure.
-+ *      Added the mt_assign field to the sipMappedType structure.
-+ *
-+ * 3.6  Added the 'g' format character to sip_api_parse_args().
-+ *
-+ * 3.5  Added the td_pickle field to the sipTypeDef structure.
-+ *      Added sip_api_transfer_break().
-+ *
-+ * 3.4  Added qt_find_connection() to the Qt support API.
-+ *      Added sip_api_string_as_char(), sip_api_unicode_as_wchar(),
-+ *      sip_api_unicode_as_wstring(), sip_api_find_class(),
-+ *      sip_api_find_named_enum() and sip_api_parse_signature().
-+ *      Added the 'A', 'w' and 'x' format characters to sip_api_parse_args(),
-+ *      sip_api_parse_result(), sip_api_build_result() and
-+ *      sip_api_call_method().
-+ *
-+ * 3.3  Added sip_api_register_int_types().
-+ *
-+ * 3.2  Added sip_api_export_symbol() and sip_api_import_symbol().
-+ *
-+ * 3.1  Added sip_api_add_mapped_type_instance().
-+ *
-+ * 3.0  Moved the Qt support out of the sip module and into PyQt.  This is
-+ *      such a dramatic change that there is no point in attempting to maintain
-+ *      backwards compatibility.
-+ *
-+ * 2.0  Added the td_flags field to the sipTypeDef structure.
-+ *      Added the first_child, sibling_next, sibling_prev and parent fields to
-+ *      the sipWrapper structure.
-+ *      Added the td_traverse and td_clear fields to the sipTypeDef structure.
-+ *      Added the em_api_minor field to the sipExportedModuleDef structure.
-+ *      Added sip_api_bad_operator_arg().
-+ *      Added sip_api_wrapper_check().
-+ *
-+ * 1.1  Added support for __pos__ and __abs__.
-+ *
-+ * 1.0  Removed all deprecated parts of the API.
-+ *      Removed the td_proxy field from the sipTypeDef structure.
-+ *      Removed the create proxy function from the 'q' and 'y' format
-+ *      characters to sip_api_parse_args().
-+ *      Removed sip_api_emit_to_slot().
-+ *      Reworked the enum related structures.
-+ *
-+ * 0.2  Added the 'H' format character to sip_api_parse_args().
-+ *
-+ * 0.1  Added sip_api_add_class_instance().
-+ *      Added the 't' format character to sip_api_parse_args().
-+ *      Deprecated the 'J' and 'K' format characters to sip_api_parse_result().
-+ *
-+ * 0.0  Original version.
-+ */
-+#define SIP_API_MAJOR_NR    12
-+#define SIP_API_MINOR_NR    5
-+
-+
-+/*
-+ * Qt includes this typedef and its meta-object system explicitly converts
-+ * types to uint.  If these correspond to signal arguments then that conversion
-+ * is exposed.  Therefore SIP generates code that uses it.  This definition is
-+ * for the cases that SIP is generating non-Qt related bindings with compilers
-+ * that don't include it themselves (i.e. MSVC).
-+ */
-+typedef unsigned int uint;
-+
-+
-+/* Some Python compatibility stuff. */
-+#if PY_VERSION_HEX >= 0x02050000
-+
-+#define SIP_SSIZE_T         Py_ssize_t
-+#define SIP_SSIZE_T_FORMAT  "%zd"
-+
-+#define SIP_MLNAME_CAST(s)  (s)
-+#define SIP_MLDOC_CAST(s)   (s)
-+#define SIP_TPNAME_CAST(s)  (s)
-+
-+#else
-+
-+#define SIP_SSIZE_T         int
-+#define SIP_SSIZE_T_FORMAT  "%d"
-+
-+#define SIP_MLNAME_CAST(s)  ((char *)(s))
-+#define SIP_MLDOC_CAST(s)   ((char *)(s))
-+#define SIP_TPNAME_CAST(s)  ((char *)(s))
-+
-+#endif
-+
-+#if PY_MAJOR_VERSION >= 3
-+
-+#define SIPLong_Check       PyLong_Check
-+#define SIPLong_FromLong    PyLong_FromLong
-+#define SIPLong_AsLong      PyLong_AsLong
-+
-+#define SIPBytes_Check      PyBytes_Check
-+#define SIPBytes_FromString PyBytes_FromString
-+#define SIPBytes_FromStringAndSize  PyBytes_FromStringAndSize
-+#define SIPBytes_AsString   PyBytes_AsString
-+#define SIPBytes_Size       PyBytes_Size
-+#define SIPBytes_AS_STRING  PyBytes_AS_STRING
-+#define SIPBytes_GET_SIZE   PyBytes_GET_SIZE
-+
-+#if PY_MINOR_VERSION >= 1
-+#define SIP_USE_PYCAPSULE
-+#endif
-+
-+#if PY_MINOR_VERSION < 2
-+#define SIP_SUPPORT_PYCOBJECT
-+#endif
-+
-+#else
-+
-+#define SIPLong_Check       PyInt_Check
-+#define SIPLong_FromLong    PyInt_FromLong
-+#define SIPLong_AsLong      PyInt_AsLong
-+
-+#define SIPBytes_Check      PyString_Check
-+#define SIPBytes_FromString PyString_FromString
-+#define SIPBytes_FromStringAndSize  PyString_FromStringAndSize
-+#define SIPBytes_AsString   PyString_AsString
-+#define SIPBytes_Size       PyString_Size
-+#define SIPBytes_AS_STRING  PyString_AS_STRING
-+#define SIPBytes_GET_SIZE   PyString_GET_SIZE
-+
-+#if PY_MINOR_VERSION >= 7
-+#define SIP_USE_PYCAPSULE
-+#endif
-+
-+#define SIP_SUPPORT_PYCOBJECT
-+
-+#endif
-+
-+#if !defined(Py_REFCNT)
-+#define Py_REFCNT(ob)       (((PyObject*)(ob))->ob_refcnt)
-+#endif
-+
-+#if !defined(Py_TYPE)
-+#define Py_TYPE(ob)         (((PyObject*)(ob))->ob_type)
-+#endif
-+
-+#if !defined(PyVarObject_HEAD_INIT)
-+#define PyVarObject_HEAD_INIT(type, size)   PyObject_HEAD_INIT(type) size,
-+#endif
-+
-+
-+#if defined(SIP_USE_PYCAPSULE)
-+#define SIPCapsule_FromVoidPtr(p, n)    PyCapsule_New((p), (n), NULL)
-+#define SIPCapsule_AsVoidPtr(p, n)      PyCapsule_GetPointer((p), (n))
-+#else
-+#define SIPCapsule_FromVoidPtr(p, n)    sipConvertFromVoidPtr((p))
-+#define SIPCapsule_AsVoidPtr(p, n)      sipConvertToVoidPtr((p))
-+#endif
-+
-+
-+/*
-+ * The mask that can be passed to sipTrace().
-+ */
-+#define SIP_TRACE_CATCHERS  0x0001
-+#define SIP_TRACE_CTORS     0x0002
-+#define SIP_TRACE_DTORS     0x0004
-+#define SIP_TRACE_INITS     0x0008
-+#define SIP_TRACE_DEALLOCS  0x0010
-+#define SIP_TRACE_METHODS   0x0020
-+
-+
-+/*
-+ * Hide some thread dependent stuff.
-+ */
-+#ifdef WITH_THREAD
-+typedef PyGILState_STATE sip_gilstate_t;
-+#define SIP_RELEASE_GIL(gs) PyGILState_Release(gs);
-+#define SIP_BLOCK_THREADS   {PyGILState_STATE sipGIL = PyGILState_Ensure();
-+#define SIP_UNBLOCK_THREADS PyGILState_Release(sipGIL);}
-+#else
-+typedef int sip_gilstate_t;
-+#define SIP_RELEASE_GIL(gs)
-+#define SIP_BLOCK_THREADS
-+#define SIP_UNBLOCK_THREADS
-+#endif
-+
-+
-+/*
-+ * Forward declarations of types.
-+ */
-+struct _sipBufferDef;
-+typedef struct _sipBufferDef sipBufferDef;
-+
-+struct _sipBufferInfoDef;
-+typedef struct _sipBufferInfoDef sipBufferInfoDef;
-+
-+struct _sipCFunctionDef;
-+typedef struct _sipCFunctionDef sipCFunctionDef;
-+
-+struct _sipDateDef;
-+typedef struct _sipDateDef sipDateDef;
-+
-+struct _sipEnumTypeObject;
-+typedef struct _sipEnumTypeObject sipEnumTypeObject;
-+
-+struct _sipMethodDef;
-+typedef struct _sipMethodDef sipMethodDef;
-+
-+struct _sipSimpleWrapper;
-+typedef struct _sipSimpleWrapper sipSimpleWrapper;
-+
-+struct _sipTimeDef;
-+typedef struct _sipTimeDef sipTimeDef;
-+
-+struct _sipTypeDef;
-+typedef struct _sipTypeDef sipTypeDef;
-+
-+struct _sipWrapperType;
-+typedef struct _sipWrapperType sipWrapperType;
-+
-+struct _sipWrapper;
-+typedef struct _sipWrapper sipWrapper;
-+
-+
-+/*
-+ * The different events a handler can be registered for.
-+ */
-+typedef enum
-+{
-+    sipEventWrappedInstance,    /* After wrapping a C/C++ instance. */
-+    sipEventCollectingWrapper,  /* When garbage collecting a wrapper object. */
-+    sipEventNrEvents
-+} sipEventType;
-+
-+/*
-+ * The event handlers.
-+ */
-+typedef void (*sipWrappedInstanceEventHandler)(void *sipCpp);
-+typedef void (*sipCollectingWrapperEventHandler)(sipSimpleWrapper *sipSelf);
-+
-+
-+/*
-+ * The operation an access function is being asked to perform.
-+ */
-+typedef enum
-+{
-+    UnguardedPointer,   /* Return the unguarded pointer. */
-+    GuardedPointer,     /* Return the guarded pointer, ie. 0 if it has gone. */
-+    ReleaseGuard        /* Release the guard, if any. */
-+} AccessFuncOp;
-+
-+
-+/*
-+ * Some convenient function pointers.
-+ */
-+typedef void *(*sipInitFunc)(sipSimpleWrapper *, PyObject *, PyObject *,
-+        PyObject **, PyObject **, PyObject **);
-+typedef int (*sipFinalFunc)(PyObject *, void *, PyObject *, PyObject **);
-+typedef void *(*sipAccessFunc)(sipSimpleWrapper *, AccessFuncOp);
-+typedef int (*sipTraverseFunc)(void *, visitproc, void *);
-+typedef int (*sipClearFunc)(void *);
-+#if PY_MAJOR_VERSION >= 3
-+typedef int (*sipGetBufferFuncLimited)(PyObject *, void *, sipBufferDef *);
-+typedef void (*sipReleaseBufferFuncLimited)(PyObject *, void *);
-+#if !defined(Py_LIMITED_API)
-+typedef int (*sipGetBufferFunc)(PyObject *, void *, Py_buffer *, int);
-+typedef void (*sipReleaseBufferFunc)(PyObject *, void *, Py_buffer *);
-+#endif
-+#else
-+typedef SIP_SSIZE_T (*sipBufferFunc)(PyObject *, void *, SIP_SSIZE_T, void **);
-+typedef SIP_SSIZE_T (*sipSegCountFunc)(PyObject *, void *, SIP_SSIZE_T *);
-+#endif
-+typedef void (*sipDeallocFunc)(sipSimpleWrapper *);
-+typedef void *(*sipCastFunc)(void *, const sipTypeDef *);
-+typedef const sipTypeDef *(*sipSubClassConvertFunc)(void **);
-+typedef int (*sipConvertToFunc)(PyObject *, void **, int *, PyObject *);
-+typedef PyObject *(*sipConvertFromFunc)(void *, PyObject *);
-+typedef void (*sipVirtErrorHandlerFunc)(sipSimpleWrapper *, sip_gilstate_t);
-+typedef int (*sipVirtHandlerFunc)(sip_gilstate_t, sipVirtErrorHandlerFunc,
-+        sipSimpleWrapper *, PyObject *, ...);
-+typedef void (*sipAssignFunc)(void *, SIP_SSIZE_T, void *);
-+typedef void *(*sipArrayFunc)(SIP_SSIZE_T);
-+typedef void *(*sipCopyFunc)(const void *, SIP_SSIZE_T);
-+typedef void (*sipReleaseFunc)(void *, int);
-+typedef PyObject *(*sipPickleFunc)(void *);
-+typedef int (*sipAttrGetterFunc)(const sipTypeDef *, PyObject *);
-+typedef PyObject *(*sipVariableGetterFunc)(void *, PyObject *, PyObject *);
-+typedef int (*sipVariableSetterFunc)(void *, PyObject *, PyObject *);
-+typedef void *(*sipProxyResolverFunc)(void *);
-+typedef int (*sipNewUserTypeFunc)(sipWrapperType *);
-+
-+
-+#if !defined(Py_LIMITED_API) || PY_VERSION_HEX < 0x03020000
-+/*
-+ * The meta-type of a wrapper type.
-+ */
-+struct _sipWrapperType {
-+    /*
-+     * The super-metatype.  This must be first in the structure so that it can
-+     * be cast to a PyTypeObject *.
-+     */
-+    PyHeapTypeObject super;
-+
-+    /* Set if the type is a user implemented Python sub-class. */
-+    unsigned wt_user_type : 1;
-+
-+    /* Set if the type's dictionary contains all lazy attributes. */
-+    unsigned wt_dict_complete : 1;
-+
-+    /* Unused and available for future use. */
-+    unsigned wt_unused : 30;
-+
-+    /* The generated type structure. */
-+    sipTypeDef *wt_td;
-+
-+    /* The list of init extenders. */
-+    struct _sipInitExtenderDef *wt_iextend;
-+
-+    /* The handler called whenever a new user type has been created. */
-+    sipNewUserTypeFunc wt_new_user_type_handler;
-+
-+    /*
-+     * For the user to use.  Note that any data structure will leak if the
-+     * type is garbage collected.
-+     */
-+    void *wt_user_data;
-+};
-+
-+
-+/*
-+ * The type of a simple C/C++ wrapper object.
-+ */
-+struct _sipSimpleWrapper {
-+    PyObject_HEAD
-+
-+    /*
-+     * The data, initially a pointer to the C/C++ object, as interpreted by the
-+     * access function.
-+     */
-+    void *data;
-+
-+    /* The optional access function. */
-+    sipAccessFunc access_func;
-+
-+    /* Object flags. */
-+    unsigned sw_flags;
-+
-+    /* The optional dictionary of extra references keyed by argument number. */
-+    PyObject *extra_refs;
-+
-+    /* For the user to use. */
-+    PyObject *user;
-+
-+    /* The instance dictionary. */
-+    PyObject *dict;
-+
-+    /* The main instance if this is a mixin. */
-+    PyObject *mixin_main;
-+
-+    /* Next object at this address. */
-+    struct _sipSimpleWrapper *next;
-+};
-+
-+
-+/*
-+ * The type of a C/C++ wrapper object that supports parent/child relationships.
-+ */
-+struct _sipWrapper {
-+    /* The super-type. */
-+    sipSimpleWrapper super;
-+
-+    /* First child object. */
-+    struct _sipWrapper *first_child;
-+
-+    /* Next sibling. */
-+    struct _sipWrapper *sibling_next;
-+
-+    /* Previous sibling. */
-+    struct _sipWrapper *sibling_prev;
-+
-+    /* Owning object. */
-+    struct _sipWrapper *parent;
-+};
-+
-+
-+/*
-+ * The meta-type of an enum type.  (This is exposed only to support the
-+ * deprecated sipConvertFromNamedEnum() macro.)
-+ */
-+struct _sipEnumTypeObject {
-+    /*
-+     * The super-metatype.  This must be first in the structure so that it can
-+     * be cast to a PyTypeObject *.
-+     */
-+    PyHeapTypeObject super;
-+
-+    /* The generated type structure. */
-+    struct _sipTypeDef *type;
-+};
-+#endif
-+
-+
-+/*
-+ * The information describing an encoded type ID.
-+ */
-+typedef struct _sipEncodedTypeDef {
-+    /* The type number. */
-+    unsigned sc_type : 16;
-+
-+    /* The module number (255 for this one). */
-+    unsigned sc_module : 8;
-+
-+    /* A context specific flag. */
-+    unsigned sc_flag : 1;
-+} sipEncodedTypeDef;
-+
-+
-+/*
-+ * The information describing an enum member.
-+ */
-+typedef struct _sipEnumMemberDef {
-+    /* The member name. */
-+    const char *em_name;
-+
-+    /* The member value. */
-+    int em_val;
-+
-+    /* The member enum, -ve if anonymous. */
-+    int em_enum;
-+} sipEnumMemberDef;
-+
-+
-+/*
-+ * The information describing static instances.
-+ */
-+typedef struct _sipInstancesDef {
-+    /* The types. */
-+    struct _sipTypeInstanceDef *id_type;
-+
-+    /* The void *. */
-+    struct _sipVoidPtrInstanceDef *id_voidp;
-+
-+    /* The chars. */
-+    struct _sipCharInstanceDef *id_char;
-+
-+    /* The strings. */
-+    struct _sipStringInstanceDef *id_string;
-+
-+    /* The ints. */
-+    struct _sipIntInstanceDef *id_int;
-+
-+    /* The longs. */
-+    struct _sipLongInstanceDef *id_long;
-+
-+    /* The unsigned longs. */
-+    struct _sipUnsignedLongInstanceDef *id_ulong;
-+
-+    /* The long longs. */
-+    struct _sipLongLongInstanceDef *id_llong;
-+
-+    /* The unsigned long longs. */
-+    struct _sipUnsignedLongLongInstanceDef *id_ullong;
-+
-+    /* The doubles. */
-+    struct _sipDoubleInstanceDef *id_double;
-+} sipInstancesDef;
-+
-+
-+/*
-+ * The information describing a type initialiser extender.
-+ */
-+typedef struct _sipInitExtenderDef {
-+    /* The API version range index. */
-+    int ie_api_range;
-+
-+    /* The extender function. */
-+    sipInitFunc ie_extender;
-+
-+    /* The class being extended. */
-+    sipEncodedTypeDef ie_class;
-+
-+    /* The next extender for this class. */
-+    struct _sipInitExtenderDef *ie_next;
-+} sipInitExtenderDef;
-+
-+
-+/*
-+ * The information describing a sub-class convertor.
-+ */
-+typedef struct _sipSubClassConvertorDef {
-+    /* The convertor. */
-+    sipSubClassConvertFunc scc_convertor;
-+
-+    /* The encoded base type. */
-+    sipEncodedTypeDef scc_base;
-+
-+    /* The base type. */
-+    struct _sipTypeDef *scc_basetype;
-+} sipSubClassConvertorDef;
-+
-+
-+/*
-+ * The structure populated by %BIGetBufferCode when the limited API is enabled.
-+ */
-+struct _sipBufferDef {
-+    /* The address of the buffer. */
-+    void *bd_buffer;
-+
-+    /* The length of the buffer. */
-+    SIP_SSIZE_T bd_length;
-+
-+    /* Set if the buffer is read-only. */
-+    int bd_readonly;
-+};
-+
-+
-+/*
-+ * The structure describing a Python buffer.
-+ */
-+struct _sipBufferInfoDef {
-+    /* This is internal to sip. */
-+    void *bi_internal;
-+
-+    /* The address of the buffer. */
-+    void *bi_buf;
-+
-+    /* A reference to the object implementing the buffer interface. */
-+    PyObject *bi_obj;
-+
-+    /* The length of the buffer in bytes. */
-+    SIP_SSIZE_T bi_len;
-+
-+    /* The number of dimensions. */
-+    int bi_ndim;
-+
-+    /* The format of each element of the buffer. */
-+    char *bi_format;
-+};
-+
-+
-+/*
-+ * The structure describing a Python C function.
-+ */
-+struct _sipCFunctionDef {
-+    /* The C function. */
-+    PyMethodDef *cf_function;
-+
-+    /* The optional bound object. */
-+    PyObject *cf_self;
-+};
-+
-+
-+/*
-+ * The structure describing a Python method.
-+ */
-+struct _sipMethodDef {
-+    /* The function that implements the method. */
-+    PyObject *pm_function;
-+
-+    /* The bound object. */
-+    PyObject *pm_self;
-+
-+#if PY_MAJOR_VERSION < 3
-+    /* The class. */
-+    PyObject *pm_class;
-+#endif
-+};
-+
-+
-+/*
-+ * The structure describing a Python date.
-+ */
-+struct _sipDateDef {
-+    /* The year. */
-+    int pd_year;
-+
-+    /* The month (1-12). */
-+    int pd_month;
-+
-+    /* The day (1-31). */
-+    int pd_day;
-+};
-+
-+
-+/*
-+ * The structure describing a Python time.
-+ */
-+struct _sipTimeDef {
-+    /* The hour (0-23). */
-+    int pt_hour;
-+
-+    /* The minute (0-59). */
-+    int pt_minute;
-+
-+    /* The second (0-59). */
-+    int pt_second;
-+
-+    /* The microsecond (0-999999). */
-+    int pt_microsecond;
-+};
-+
-+
-+/*
-+ * The different error states of handwritten code.
-+ */
-+typedef enum {
-+    sipErrorNone,       /* There is no error. */
-+    sipErrorFail,       /* The error is a failure. */
-+    sipErrorContinue    /* It may not apply if a later operation succeeds. */
-+} sipErrorState;
-+
-+
-+/*
-+ * The different Python slot types.  New slots must be added to the end,
-+ * otherwise the major version of the internal ABI must be changed.
-+ */
-+typedef enum {
-+    str_slot,           /* __str__ */
-+    int_slot,           /* __int__ */
-+#if PY_MAJOR_VERSION < 3
-+    long_slot,          /* __long__ */
-+#endif
-+    float_slot,         /* __float__ */
-+    len_slot,           /* __len__ */
-+    contains_slot,      /* __contains__ */
-+    add_slot,           /* __add__ for number */
-+    concat_slot,        /* __add__ for sequence types */
-+    sub_slot,           /* __sub__ */
-+    mul_slot,           /* __mul__ for number types */
-+    repeat_slot,        /* __mul__ for sequence types */
-+    div_slot,           /* __div__ */
-+    mod_slot,           /* __mod__ */
-+    floordiv_slot,      /* __floordiv__ */
-+    truediv_slot,       /* __truediv__ */
-+    and_slot,           /* __and__ */
-+    or_slot,            /* __or__ */
-+    xor_slot,           /* __xor__ */
-+    lshift_slot,        /* __lshift__ */
-+    rshift_slot,        /* __rshift__ */
-+    iadd_slot,          /* __iadd__ for number types */
-+    iconcat_slot,       /* __iadd__ for sequence types */
-+    isub_slot,          /* __isub__ */
-+    imul_slot,          /* __imul__ for number types */
-+    irepeat_slot,       /* __imul__ for sequence types */
-+    idiv_slot,          /* __idiv__ */
-+    imod_slot,          /* __imod__ */
-+    ifloordiv_slot,     /* __ifloordiv__ */
-+    itruediv_slot,      /* __itruediv__ */
-+    iand_slot,          /* __iand__ */
-+    ior_slot,           /* __ior__ */
-+    ixor_slot,          /* __ixor__ */
-+    ilshift_slot,       /* __ilshift__ */
-+    irshift_slot,       /* __irshift__ */
-+    invert_slot,        /* __invert__ */
-+    call_slot,          /* __call__ */
-+    getitem_slot,       /* __getitem__ */
-+    setitem_slot,       /* __setitem__ */
-+    delitem_slot,       /* __delitem__ */
-+    lt_slot,            /* __lt__ */
-+    le_slot,            /* __le__ */
-+    eq_slot,            /* __eq__ */
-+    ne_slot,            /* __ne__ */
-+    gt_slot,            /* __gt__ */
-+    ge_slot,            /* __ge__ */
-+#if PY_MAJOR_VERSION < 3
-+    cmp_slot,           /* __cmp__ */
-+#endif
-+    bool_slot,          /* __bool__, __nonzero__ */
-+    neg_slot,           /* __neg__ */
-+    repr_slot,          /* __repr__ */
-+    hash_slot,          /* __hash__ */
-+    pos_slot,           /* __pos__ */
-+    abs_slot,           /* __abs__ */
-+#if PY_VERSION_HEX >= 0x02050000
-+    index_slot,         /* __index__ */
-+#endif
-+    iter_slot,          /* __iter__ */
-+    next_slot,          /* __next__ */
-+    setattr_slot,       /* __setattr__, __delattr__ */
-+    matmul_slot,        /* __matmul__ (for Python v3.5 and later) */
-+    imatmul_slot,       /* __imatmul__ (for Python v3.5 and later) */
-+    await_slot,         /* __await__ (for Python v3.5 and later) */
-+    aiter_slot,         /* __aiter__ (for Python v3.5 and later) */
-+    anext_slot,         /* __anext__ (for Python v3.5 and later) */
-+} sipPySlotType;
-+
-+
-+/*
-+ * The information describing a Python slot function.
-+ */
-+typedef struct _sipPySlotDef {
-+    /* The function. */
-+    void *psd_func;
-+
-+    /* The type. */
-+    sipPySlotType psd_type;
-+} sipPySlotDef;
-+
-+
-+/*
-+ * The information describing a Python slot extender.
-+ */
-+typedef struct _sipPySlotExtenderDef {
-+    /* The function. */
-+    void *pse_func;
-+
-+    /* The type. */
-+    sipPySlotType pse_type;
-+
-+    /* The encoded class. */
-+    sipEncodedTypeDef pse_class;
-+} sipPySlotExtenderDef;
-+
-+
-+/*
-+ * The information describing a typedef.
-+ */
-+typedef struct _sipTypedefDef {
-+    /* The typedef name. */
-+    const char *tdd_name;
-+
-+    /* The typedef value. */
-+    const char *tdd_type_name;
-+} sipTypedefDef;
-+
-+
-+/*
-+ * The information describing a variable or property.
-+ */
-+
-+typedef enum
-+{
-+    PropertyVariable,       /* A property. */
-+    InstanceVariable,       /* An instance variable. */
-+    ClassVariable           /* A class (i.e. static) variable. */
-+} sipVariableType;
-+
-+typedef struct _sipVariableDef {
-+    /* The type of variable. */
-+    sipVariableType vd_type;
-+
-+    /* The name. */
-+    const char *vd_name;
-+
-+    /*
-+     * The getter.  If this is a variable (rather than a property) then the
-+     * actual type is sipVariableGetterFunc.
-+     */
-+    PyMethodDef *vd_getter;
-+
-+    /*
-+     * The setter.  If this is a variable (rather than a property) then the
-+     * actual type is sipVariableSetterFunc.  It is NULL if the property cannot
-+     * be set or the variable is const.
-+     */
-+    PyMethodDef *vd_setter;
-+
-+    /* The property deleter. */
-+    PyMethodDef *vd_deleter;
-+
-+    /* The docstring. */
-+    const char *vd_docstring;
-+} sipVariableDef;
-+
-+
-+/*
-+ * The information describing a type, either a C++ class (or C struct), a C++
-+ * namespace, a mapped type or a named enum.
-+ */
-+struct _sipTypeDef {
-+    /* The version range index, -1 if the type isn't versioned. */
-+    int td_version;
-+
-+    /* The next version of this type. */
-+    struct _sipTypeDef *td_next_version;
-+
-+    /*
-+     * The module, 0 if the type hasn't been initialised.
-+     */
-+    struct _sipExportedModuleDef *td_module;
-+
-+    /* Type flags, see the sipType*() macros. */
-+    int td_flags;
-+
-+    /* The C/C++ name of the type. */
-+    int td_cname;
-+
-+    /*
-+     * The Python type object.  This needs to be a union until we remove the
-+     * deprecated sipClass_* macros.
-+     */
-+    union {
-+        PyTypeObject *td_py_type;
-+        sipWrapperType *td_wrapper_type;
-+    } u;
-+
-+    /* Any additional fixed data generated by a plugin. */
-+    void *td_plugin_data;
-+};
-+
-+
-+/*
-+ * The information describing a container (ie. a class, namespace or a mapped
-+ * type).
-+ */
-+typedef struct _sipContainerDef {
-+    /*
-+     * The Python name of the type, -1 if this is a namespace extender (in the
-+     * context of a class) or doesn't require a namespace (in the context of a
-+     * mapped type). */
-+    int cod_name;
-+
-+    /*
-+     * The scoping type or the namespace this is extending if it is a namespace
-+     * extender.
-+     */
-+    sipEncodedTypeDef cod_scope;
-+
-+    /* The number of lazy methods. */
-+    int cod_nrmethods;
-+
-+    /* The table of lazy methods. */
-+    PyMethodDef *cod_methods;
-+
-+    /* The number of lazy enum members. */
-+    int cod_nrenummembers;
-+
-+    /* The table of lazy enum members. */
-+    sipEnumMemberDef *cod_enummembers;
-+
-+    /* The number of variables. */
-+    int cod_nrvariables;
-+
-+    /* The table of variables. */
-+    sipVariableDef *cod_variables;
-+
-+    /* The static instances. */
-+    sipInstancesDef cod_instances;
-+} sipContainerDef;
-+
-+
-+/*
-+ * The information describing a C++ class (or C struct) or a C++ namespace.
-+ */
-+typedef struct _sipClassTypeDef {
-+    /* The base type information. */
-+    sipTypeDef ctd_base;
-+
-+    /* The container information. */
-+    sipContainerDef ctd_container;
-+
-+    /* The docstring. */
-+    const char *ctd_docstring;
-+
-+    /*
-+     * The meta-type name, -1 to use the meta-type of the first super-type
-+     * (normally sipWrapperType).
-+     */
-+    int ctd_metatype;
-+
-+    /* The super-type name, -1 to use sipWrapper. */
-+    int ctd_supertype;
-+
-+    /* The super-types. */
-+    sipEncodedTypeDef *ctd_supers;
-+
-+    /* The table of Python slots. */
-+    sipPySlotDef *ctd_pyslots;
-+
-+    /* The initialisation function. */
-+    sipInitFunc ctd_init;
-+
-+    /* The traverse function. */
-+    sipTraverseFunc ctd_traverse;
-+
-+    /* The clear function. */
-+    sipClearFunc ctd_clear;
-+
-+#if PY_MAJOR_VERSION >= 3
-+    /* The get buffer function. */
-+#if defined(Py_LIMITED_API)
-+    sipGetBufferFuncLimited ctd_getbuffer;
-+#else
-+    sipGetBufferFunc ctd_getbuffer;
-+#endif
-+
-+    /* The release buffer function. */
-+#if defined(Py_LIMITED_API)
-+    sipReleaseBufferFuncLimited ctd_releasebuffer;
-+#else
-+    sipReleaseBufferFunc ctd_releasebuffer;
-+#endif
-+#else
-+    /* The read buffer function. */
-+    sipBufferFunc ctd_readbuffer;
-+
-+    /* The write buffer function. */
-+    sipBufferFunc ctd_writebuffer;
-+
-+    /* The segment count function. */
-+    sipSegCountFunc ctd_segcount;
-+
-+    /* The char buffer function. */
-+    sipBufferFunc ctd_charbuffer;
-+#endif
-+
-+    /* The deallocation function. */
-+    sipDeallocFunc ctd_dealloc;
-+
-+    /* The optional assignment function. */
-+    sipAssignFunc ctd_assign;
-+
-+    /* The optional array allocation function. */
-+    sipArrayFunc ctd_array;
-+
-+    /* The optional copy function. */
-+    sipCopyFunc ctd_copy;
-+
-+    /* The release function, 0 if a C struct. */
-+    sipReleaseFunc ctd_release;
-+
-+    /* The cast function, 0 if a C struct. */
-+    sipCastFunc ctd_cast;
-+
-+    /* The optional convert to function. */
-+    sipConvertToFunc ctd_cto;
-+
-+    /* The optional convert from function. */
-+    sipConvertFromFunc ctd_cfrom;
-+
-+    /* The next namespace extender. */
-+    struct _sipClassTypeDef *ctd_nsextender;
-+
-+    /* The pickle function. */
-+    sipPickleFunc ctd_pickle;
-+
-+    /* The finalisation function. */
-+    sipFinalFunc ctd_final;
-+
-+    /* The mixin initialisation function. */
-+    initproc ctd_init_mixin;
-+} sipClassTypeDef;
-+
-+
-+/*
-+ * The information describing a mapped type.
-+ */
-+typedef struct _sipMappedTypeDef {
-+    /* The base type information. */
-+    sipTypeDef mtd_base;
-+
-+    /* The container information. */
-+    sipContainerDef mtd_container;
-+
-+    /* The optional assignment function. */
-+    sipAssignFunc mtd_assign;
-+
-+    /* The optional array allocation function. */
-+    sipArrayFunc mtd_array;
-+
-+    /* The optional copy function. */
-+    sipCopyFunc mtd_copy;
-+
-+    /* The optional release function. */
-+    sipReleaseFunc mtd_release;
-+
-+    /* The convert to function. */
-+    sipConvertToFunc mtd_cto;
-+
-+    /* The convert from function. */
-+    sipConvertFromFunc mtd_cfrom;
-+} sipMappedTypeDef;
-+
-+
-+/*
-+ * The information describing a named enum.
-+ */
-+typedef struct _sipEnumTypeDef {
-+    /* The base type information. */
-+    sipTypeDef etd_base;
-+
-+    /* The Python name of the enum. */
-+    int etd_name;
-+
-+    /* The scoping type, -1 if it is defined at the module level. */
-+    int etd_scope;
-+
-+    /* The Python slots. */
-+    struct _sipPySlotDef *etd_pyslots;
-+} sipEnumTypeDef;
-+
-+
-+/*
-+ * The information describing an external type.
-+ */
-+typedef struct _sipExternalTypeDef {
-+    /* The index into the type table. */
-+    int et_nr;
-+
-+    /* The name of the type. */
-+    const char *et_name;
-+} sipExternalTypeDef;
-+
-+
-+/*
-+ * The information describing a mapped class.  This (and anything that uses it)
-+ * is deprecated.
-+ */
-+typedef sipTypeDef sipMappedType;
-+
-+
-+/*
-+ * Defines an entry in the module specific list of delayed dtor calls.
-+ */
-+typedef struct _sipDelayedDtor {
-+    /* The C/C++ instance. */
-+    void *dd_ptr;
-+
-+    /* The class name. */
-+    const char *dd_name;
-+
-+    /* Non-zero if dd_ptr is a derived class instance. */
-+    int dd_isderived;
-+
-+    /* Next in the list. */
-+    struct _sipDelayedDtor *dd_next;
-+} sipDelayedDtor;
-+
-+
-+/*
-+ * Defines an entry in the table of global functions all of whose overloads
-+ * are versioned (so their names can't be automatically added to the module
-+ * dictionary).
-+ */
-+typedef struct _sipVersionedFunctionDef {
-+    /* The name, -1 marks the end of the table. */
-+    int vf_name;
-+
-+    /* The function itself. */
-+    PyCFunction vf_function;
-+
-+    /* The METH_* flags. */
-+    int vf_flags;
-+
-+    /* The docstring. */
-+    const char *vf_docstring;
-+
-+    /* The API version range index. */
-+    int vf_api_range;
-+} sipVersionedFunctionDef;
-+
-+
-+/*
-+ * Defines a virtual error handler.
-+ */
-+typedef struct _sipVirtErrorHandlerDef {
-+    /* The name of the handler. */
-+    const char *veh_name;
-+
-+    /* The handler function. */
-+    sipVirtErrorHandlerFunc veh_handler;
-+} sipVirtErrorHandlerDef;
-+
-+
-+/*
-+ * Defines a type imported from another module.
-+ */
-+typedef union _sipImportedTypeDef {
-+    /* The type name before the module is imported. */
-+    const char *it_name;
-+
-+    /* The type after the module is imported. */
-+    sipTypeDef *it_td;
-+} sipImportedTypeDef;
-+
-+
-+/*
-+ * Defines a virtual error handler imported from another module.
-+ */
-+typedef union _sipImportedVirtErrorHandlerDef {
-+    /* The handler name before the module is imported. */
-+    const char *iveh_name;
-+
-+    /* The handler after the module is imported. */
-+    sipVirtErrorHandlerFunc iveh_handler;
-+} sipImportedVirtErrorHandlerDef;
-+
-+
-+/*
-+ * Defines an exception imported from another module.
-+ */
-+typedef union _sipImportedExceptionDef {
-+    /* The exception name before the module is imported. */
-+    const char *iexc_name;
-+
-+    /* The exception object after the module is imported. */
-+    PyObject *iexc_object;
-+} sipImportedExceptionDef;
-+
-+
-+/*
-+ * The information describing an imported module.
-+ */
-+typedef struct _sipImportedModuleDef {
-+    /* The module name. */
-+    const char *im_name;
-+
-+    /* The types imported from the module. */
-+    sipImportedTypeDef *im_imported_types;
-+
-+    /* The virtual error handlers imported from the module. */
-+    sipImportedVirtErrorHandlerDef *im_imported_veh;
-+
-+    /* The exceptions imported from the module. */
-+    sipImportedExceptionDef *im_imported_exceptions;
-+} sipImportedModuleDef;
-+
-+
-+/*
-+ * The main client module structure.
-+ */
-+typedef struct _sipExportedModuleDef {
-+    /* The next in the list. */
-+    struct _sipExportedModuleDef *em_next;
-+
-+    /* The SIP API minor version number. */
-+    unsigned em_api_minor;
-+
-+    /* The module name. */
-+    int em_name;
-+
-+    /* The module name as an object. */
-+    PyObject *em_nameobj;
-+
-+    /* The string pool. */
-+    const char *em_strings;
-+
-+    /* The imported modules. */
-+    sipImportedModuleDef *em_imports;
-+
-+    /* The optional Qt support API. */
-+    struct _sipQtAPI *em_qt_api;
-+
-+    /* The number of types. */
-+    int em_nrtypes;
-+
-+    /* The table of types. */
-+    sipTypeDef **em_types;
-+
-+    /* The table of external types. */
-+    sipExternalTypeDef *em_external;
-+
-+    /* The number of members in global enums. */
-+    int em_nrenummembers;
-+
-+    /* The table of members in global enums. */
-+    sipEnumMemberDef *em_enummembers;
-+
-+    /* The number of typedefs. */
-+    int em_nrtypedefs;
-+
-+    /* The table of typedefs. */
-+    sipTypedefDef *em_typedefs;
-+
-+    /* The table of virtual error handlers. */
-+    sipVirtErrorHandlerDef *em_virterrorhandlers;
-+
-+    /* The sub-class convertors. */
-+    sipSubClassConvertorDef *em_convertors;
-+
-+    /* The static instances. */
-+    sipInstancesDef em_instances;
-+
-+    /* The license. */
-+    struct _sipLicenseDef *em_license;
-+
-+    /* The table of exception types. */
-+    PyObject **em_exceptions;
-+
-+    /* The table of Python slot extenders. */
-+    sipPySlotExtenderDef *em_slotextend;
-+
-+    /* The table of initialiser extenders. */
-+    sipInitExtenderDef *em_initextend;
-+
-+    /* The delayed dtor handler. */
-+    void (*em_delayeddtors)(const sipDelayedDtor *);
-+
-+    /* The list of delayed dtors. */
-+    sipDelayedDtor *em_ddlist;
-+
-+    /*
-+     * The array of API version definitions.  Each definition takes up 3
-+     * elements.  If the third element of a 3-tuple is negative then the first
-+     * two elements define an API and its default version.  All such
-+     * definitions will appear at the end of the array.  If the first element
-+     * of a 3-tuple is negative then that is the last element of the array.
-+     */
-+    int *em_versions;
-+
-+    /* The optional table of versioned functions. */
-+    sipVersionedFunctionDef *em_versioned_functions;
-+} sipExportedModuleDef;
-+
-+
-+/*
-+ * The information describing a license to be added to a dictionary.
-+ */
-+typedef struct _sipLicenseDef {
-+    /* The type of license. */
-+    const char *lc_type;
-+
-+    /* The licensee. */
-+    const char *lc_licensee;
-+
-+    /* The timestamp. */
-+    const char *lc_timestamp;
-+
-+    /* The signature. */
-+    const char *lc_signature;
-+} sipLicenseDef;
-+
-+
-+/*
-+ * The information describing a void pointer instance to be added to a
-+ * dictionary.
-+ */
-+typedef struct _sipVoidPtrInstanceDef {
-+    /* The void pointer name. */
-+    const char *vi_name;
-+
-+    /* The void pointer value. */
-+    void *vi_val;
-+} sipVoidPtrInstanceDef;
-+
-+
-+/*
-+ * The information describing a char instance to be added to a dictionary.
-+ */
-+typedef struct _sipCharInstanceDef {
-+    /* The char name. */
-+    const char *ci_name;
-+
-+    /* The char value. */
-+    char ci_val;
-+
-+    /* The encoding used, either 'A', 'L', '8' or 'N'. */
-+    char ci_encoding;
-+} sipCharInstanceDef;
-+
-+
-+/*
-+ * The information describing a string instance to be added to a dictionary.
-+ * This is also used as a hack to add (or fix) other types rather than add a
-+ * new table type and so requiring a new major version of the API.
-+ */
-+typedef struct _sipStringInstanceDef {
-+    /* The string name. */
-+    const char *si_name;
-+
-+    /* The string value. */
-+    const char *si_val;
-+
-+    /*
-+     * The encoding used, either 'A', 'L', '8' or 'N'.  'w' and 'W' are also
-+     * used to support the fix for wchar_t.
-+     */
-+    char si_encoding;
-+} sipStringInstanceDef;
-+
-+
-+/*
-+ * The information describing an int instance to be added to a dictionary.
-+ */
-+typedef struct _sipIntInstanceDef {
-+    /* The int name. */
-+    const char *ii_name;
-+
-+    /* The int value. */
-+    int ii_val;
-+} sipIntInstanceDef;
-+
-+
-+/*
-+ * The information describing a long instance to be added to a dictionary.
-+ */
-+typedef struct _sipLongInstanceDef {
-+    /* The long name. */
-+    const char *li_name;
-+
-+    /* The long value. */
-+    long li_val;
-+} sipLongInstanceDef;
-+
-+
-+/*
-+ * The information describing an unsigned long instance to be added to a
-+ * dictionary.
-+ */
-+typedef struct _sipUnsignedLongInstanceDef {
-+    /* The unsigned long name. */
-+    const char *uli_name;
-+
-+    /* The unsigned long value. */
-+    unsigned long uli_val;
-+} sipUnsignedLongInstanceDef;
-+
-+
-+/*
-+ * The information describing a long long instance to be added to a dictionary.
-+ */
-+typedef struct _sipLongLongInstanceDef {
-+    /* The long long name. */
-+    const char *lli_name;
-+
-+    /* The long long value. */
-+#if defined(HAVE_LONG_LONG)
-+    PY_LONG_LONG lli_val;
-+#else
-+    long lli_val;
-+#endif
-+} sipLongLongInstanceDef;
-+
-+
-+/*
-+ * The information describing an unsigned long long instance to be added to a
-+ * dictionary.
-+ */
-+typedef struct _sipUnsignedLongLongInstanceDef {
-+    /* The unsigned long long name. */
-+    const char *ulli_name;
-+
-+    /* The unsigned long long value. */
-+#if defined(HAVE_LONG_LONG)
-+    unsigned PY_LONG_LONG ulli_val;
-+#else
-+    unsigned long ulli_val;
-+#endif
-+} sipUnsignedLongLongInstanceDef;
-+
-+
-+/*
-+ * The information describing a double instance to be added to a dictionary.
-+ */
-+typedef struct _sipDoubleInstanceDef {
-+    /* The double name. */
-+    const char *di_name;
-+
-+    /* The double value. */
-+    double di_val;
-+} sipDoubleInstanceDef;
-+
-+
-+/*
-+ * The information describing a class or enum instance to be added to a
-+ * dictionary.
-+ */
-+typedef struct _sipTypeInstanceDef {
-+    /* The type instance name. */
-+    const char *ti_name;
-+
-+    /* The actual instance. */
-+    void *ti_ptr;
-+
-+    /* A pointer to the generated type. */
-+    struct _sipTypeDef **ti_type;
-+
-+    /* The wrapping flags. */
-+    int ti_flags;
-+} sipTypeInstanceDef;
-+
-+
-+/*
-+ * Define a mapping between a wrapped type identified by a string and the
-+ * corresponding Python type.  This is deprecated.
-+ */
-+typedef struct _sipStringTypeClassMap {
-+    /* The type as a string. */
-+    const char *typeString;
-+
-+    /* A pointer to the Python type. */
-+    struct _sipWrapperType **pyType;
-+} sipStringTypeClassMap;
-+
-+
-+/*
-+ * Define a mapping between a wrapped type identified by an integer and the
-+ * corresponding Python type.  This is deprecated.
-+ */
-+typedef struct _sipIntTypeClassMap {
-+    /* The type as an integer. */
-+    int typeInt;
-+
-+    /* A pointer to the Python type. */
-+    struct _sipWrapperType **pyType;
-+} sipIntTypeClassMap;
-+
-+
-+/*
-+ * A Python method's component parts.  This allows us to re-create the method
-+ * without changing the reference counts of the components.
-+ */
-+typedef struct _sipPyMethod {
-+    /* The function. */
-+    PyObject *mfunc;
-+
-+    /* Self if it is a bound method. */
-+    PyObject *mself;
-+
-+#if PY_MAJOR_VERSION < 3
-+    /* The class. */
-+    PyObject *mclass;
-+#endif
-+} sipPyMethod;
-+
-+
-+/*
-+ * A slot (in the Qt, rather than Python, sense).
-+ */
-+typedef struct _sipSlot {
-+    /* Name if a Qt or Python signal. */
-+    char *name;
-+
-+    /* Signal or Qt slot object. */
-+    PyObject *pyobj;
-+
-+    /* Python slot method, pyobj is NULL. */
-+    sipPyMethod meth;
-+
-+    /* A weak reference to the slot, Py_True if pyobj has an extra reference. */
-+    PyObject *weakSlot;
-+} sipSlot;
-+
-+
-+/*
-+ * The API exported by the SIP module, ie. pointers to all the data and
-+ * functions that can be used by generated code.
-+ */
-+typedef struct _sipAPIDef {
-+    /*
-+     * This must be the first entry and it's signature must not change so that
-+     * version number mismatches can be detected and reported.
-+     */
-+    int (*api_export_module)(sipExportedModuleDef *client, unsigned api_major,
-+            unsigned api_minor, void *unused);
-+
-+    /*
-+     * The following are part of the public API.
-+     */
-+    PyTypeObject *api_simplewrapper_type;
-+    PyTypeObject *api_wrapper_type;
-+    PyTypeObject *api_wrappertype_type;
-+    PyTypeObject *api_voidptr_type;
-+
-+    void (*api_bad_catcher_result)(PyObject *method);
-+    void (*api_bad_length_for_slice)(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen);
-+    PyObject *(*api_build_result)(int *isErr, const char *fmt, ...);
-+    PyObject *(*api_call_method)(int *isErr, PyObject *method, const char *fmt,
-+            ...);
-+    void (*api_call_procedure_method)(sip_gilstate_t, sipVirtErrorHandlerFunc,
-+            sipSimpleWrapper *, PyObject *, const char *, ...);
-+    PyObject *(*api_connect_rx)(PyObject *txObj, const char *sig,
-+            PyObject *rxObj, const char *slot, int type);
-+    SIP_SSIZE_T (*api_convert_from_sequence_index)(SIP_SSIZE_T idx,
-+            SIP_SSIZE_T len);
-+    int (*api_can_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
-+            int flags);
-+    void *(*api_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
-+            PyObject *transferObj, int flags, int *statep, int *iserrp);
-+    void *(*api_force_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
-+            PyObject *transferObj, int flags, int *statep, int *iserrp);
-+
-+    /*
-+     * The following are deprecated parts of the public API.
-+     */
-+    int (*api_can_convert_to_enum)(PyObject *pyObj, const sipTypeDef *td);
-+
-+    /*
-+     * The following are part of the public API.
-+     */
-+    void (*api_release_type)(void *cpp, const sipTypeDef *td, int state);
-+    PyObject *(*api_convert_from_type)(void *cpp, const sipTypeDef *td,
-+            PyObject *transferObj);
-+    PyObject *(*api_convert_from_new_type)(void *cpp, const sipTypeDef *td,
-+            PyObject *transferObj);
-+    PyObject *(*api_convert_from_enum)(int eval, const sipTypeDef *td);
-+    int (*api_get_state)(PyObject *transferObj);
-+    PyObject *(*api_disconnect_rx)(PyObject *txObj, const char *sig,
-+            PyObject *rxObj, const char *slot);
-+    void (*api_free)(void *mem);
-+    PyObject *(*api_get_pyobject)(void *cppPtr, const sipTypeDef *td);
-+    void *(*api_malloc)(size_t nbytes);
-+    int (*api_parse_result)(int *isErr, PyObject *method, PyObject *res,
-+            const char *fmt, ...);
-+    void (*api_trace)(unsigned mask, const char *fmt, ...);
-+    void (*api_transfer_back)(PyObject *self);
-+    void (*api_transfer_to)(PyObject *self, PyObject *owner);
-+    void (*api_transfer_break)(PyObject *self);
-+    unsigned long (*api_long_as_unsigned_long)(PyObject *o);
-+    PyObject *(*api_convert_from_void_ptr)(void *val);
-+    PyObject *(*api_convert_from_const_void_ptr)(const void *val);
-+    PyObject *(*api_convert_from_void_ptr_and_size)(void *val,
-+            SIP_SSIZE_T size);
-+    PyObject *(*api_convert_from_const_void_ptr_and_size)(const void *val,
-+            SIP_SSIZE_T size);
-+    void *(*api_convert_to_void_ptr)(PyObject *obj);
-+    int (*api_export_symbol)(const char *name, void *sym);
-+    void *(*api_import_symbol)(const char *name);
-+    const sipTypeDef *(*api_find_type)(const char *type);
-+    int (*api_register_py_type)(PyTypeObject *type);
-+    const sipTypeDef *(*api_type_from_py_type_object)(PyTypeObject *py_type);
-+    const sipTypeDef *(*api_type_scope)(const sipTypeDef *td);
-+    const char *(*api_resolve_typedef)(const char *name);
-+    int (*api_register_attribute_getter)(const sipTypeDef *td,
-+            sipAttrGetterFunc getter);
-+    int (*api_is_api_enabled)(const char *name, int from, int to);
-+    sipErrorState (*api_bad_callable_arg)(int arg_nr, PyObject *arg);
-+    void *(*api_get_address)(struct _sipSimpleWrapper *w);
-+    void (*api_set_destroy_on_exit)(int);
-+    int (*api_enable_autoconversion)(const sipTypeDef *td, int enable);
-+    void *(*api_get_mixin_address)(struct _sipSimpleWrapper *w,
-+            const sipTypeDef *td);
-+    PyObject *(*api_convert_from_new_pytype)(void *cpp, PyTypeObject *py_type,
-+            sipWrapper *owner, sipSimpleWrapper **selfp, const char *fmt, ...);
-+    PyObject *(*api_convert_to_typed_array)(void *data, const sipTypeDef *td,
-+            const char *format, size_t stride, SIP_SSIZE_T len, int flags);
-+    PyObject *(*api_convert_to_array)(void *data, const char *format,
-+            SIP_SSIZE_T len, int flags);
-+    int (*api_register_proxy_resolver)(const sipTypeDef *td,
-+            sipProxyResolverFunc resolver);
-+    PyInterpreterState *(*api_get_interpreter)();
-+    sipNewUserTypeFunc (*api_set_new_user_type_handler)(const sipTypeDef *,
-+            sipNewUserTypeFunc);
-+    void (*api_set_type_user_data)(sipWrapperType *, void *);
-+    void *(*api_get_type_user_data)(const sipWrapperType *);
-+    PyObject *(*api_py_type_dict)(const PyTypeObject *);
-+    const char *(*api_py_type_name)(const PyTypeObject *);
-+    int (*api_get_method)(PyObject *, sipMethodDef *);
-+    PyObject *(*api_from_method)(const sipMethodDef *);
-+    int (*api_get_c_function)(PyObject *, sipCFunctionDef *);
-+    int (*api_get_date)(PyObject *, sipDateDef *);
-+    PyObject *(*api_from_date)(const sipDateDef *);
-+    int (*api_get_datetime)(PyObject *, sipDateDef *, sipTimeDef *);
-+    PyObject *(*api_from_datetime)(const sipDateDef *, const sipTimeDef *);
-+    int (*api_get_time)(PyObject *, sipTimeDef *);
-+    PyObject *(*api_from_time)(const sipTimeDef *);
-+    int (*api_is_user_type)(const sipWrapperType *);
-+    struct _frame *(*api_get_frame)(int);
-+    int (*api_check_plugin_for_type)(const sipTypeDef *, const char *);
-+    PyObject *(*api_unicode_new)(SIP_SSIZE_T, unsigned, int *, void **);
-+    void (*api_unicode_write)(int, void *, int, unsigned);
-+    void *(*api_unicode_data)(PyObject *, int *, SIP_SSIZE_T *);
-+    int (*api_get_buffer_info)(PyObject *, sipBufferInfoDef *);
-+    void (*api_release_buffer_info)(sipBufferInfoDef *);
-+    PyObject *(*api_get_user_object)(const sipSimpleWrapper *);
-+    void (*api_set_user_object)(sipSimpleWrapper *, PyObject *);
-+
-+    /*
-+     * The following are not part of the public API.
-+     */
-+    int (*api_init_module)(sipExportedModuleDef *client, PyObject *mod_dict);
-+    int (*api_parse_args)(PyObject **parseErrp, PyObject *sipArgs,
-+            const char *fmt, ...);
-+    int (*api_parse_pair)(PyObject **parseErrp, PyObject *arg0, PyObject *arg1,
-+            const char *fmt, ...);
-+
-+    /*
-+     * The following are part of the public API.
-+     */
-+    void (*api_instance_destroyed)(sipSimpleWrapper *sipSelf);
-+
-+    /*
-+     * The following are not part of the public API.
-+     */
-+    void (*api_no_function)(PyObject *parseErr, const char *func,
-+            const char *doc);
-+    void (*api_no_method)(PyObject *parseErr, const char *scope,
-+            const char *method, const char *doc);
-+    void (*api_abstract_method)(const char *classname, const char *method);
-+    void (*api_bad_class)(const char *classname);
-+    void *(*api_get_cpp_ptr)(sipSimpleWrapper *w, const sipTypeDef *td);
-+    void *(*api_get_complex_cpp_ptr)(sipSimpleWrapper *w);
-+    PyObject *(*api_is_py_method)(sip_gilstate_t *gil, char *pymc,
-+            sipSimpleWrapper *sipSelf, const char *cname, const char *mname);
-+    void (*api_call_hook)(const char *hookname);
-+    void (*api_end_thread)(void);
-+    void (*api_raise_unknown_exception)(void);
-+    void (*api_raise_type_exception)(const sipTypeDef *td, void *ptr);
-+    int (*api_add_type_instance)(PyObject *dict, const char *name,
-+            void *cppPtr, const sipTypeDef *td);
-+    void (*api_bad_operator_arg)(PyObject *self, PyObject *arg,
-+            sipPySlotType st);
-+    PyObject *(*api_pyslot_extend)(sipExportedModuleDef *mod, sipPySlotType st,
-+            const sipTypeDef *type, PyObject *arg0, PyObject *arg1);
-+    void (*api_add_delayed_dtor)(sipSimpleWrapper *w);
-+    char (*api_bytes_as_char)(PyObject *obj);
-+    const char *(*api_bytes_as_string)(PyObject *obj);
-+    char (*api_string_as_ascii_char)(PyObject *obj);
-+    const char *(*api_string_as_ascii_string)(PyObject **obj);
-+    char (*api_string_as_latin1_char)(PyObject *obj);
-+    const char *(*api_string_as_latin1_string)(PyObject **obj);
-+    char (*api_string_as_utf8_char)(PyObject *obj);
-+    const char *(*api_string_as_utf8_string)(PyObject **obj);
-+#if defined(HAVE_WCHAR_H)
-+    wchar_t (*api_unicode_as_wchar)(PyObject *obj);
-+    wchar_t *(*api_unicode_as_wstring)(PyObject *obj);
-+#else
-+    int (*api_unicode_as_wchar)(PyObject *obj);
-+    int *(*api_unicode_as_wstring)(PyObject *obj);
-+#endif
-+    int (*api_deprecated)(const char *classname, const char *method);
-+    void (*api_keep_reference)(PyObject *self, int key, PyObject *obj);
-+    int (*api_parse_kwd_args)(PyObject **parseErrp, PyObject *sipArgs,
-+            PyObject *sipKwdArgs, const char **kwdlist, PyObject **unused,
-+            const char *fmt, ...);
-+    void (*api_add_exception)(sipErrorState es, PyObject **parseErrp);
-+    int (*api_parse_result_ex)(sip_gilstate_t, sipVirtErrorHandlerFunc,
-+            sipSimpleWrapper *, PyObject *method, PyObject *res,
-+            const char *fmt, ...);
-+    void (*api_call_error_handler)(sipVirtErrorHandlerFunc,
-+            sipSimpleWrapper *, sip_gilstate_t);
-+    int (*api_init_mixin)(PyObject *self, PyObject *args, PyObject *kwds,
-+            const sipClassTypeDef *ctd);
-+    PyObject *(*api_get_reference)(PyObject *self, int key);
-+    int (*api_is_owned_by_python)(sipSimpleWrapper *);
-+    int (*api_is_derived_class)(sipSimpleWrapper *);
-+
-+    /*
-+     * The following may be used by Qt support code but no other handwritten
-+     * code.
-+     */
-+    void (*api_free_sipslot)(sipSlot *slot);
-+    int (*api_same_slot)(const sipSlot *sp, PyObject *rxObj, const char *slot);
-+    void *(*api_convert_rx)(sipWrapper *txSelf, const char *sigargs,
-+            PyObject *rxObj, const char *slot, const char **memberp,
-+            int flags);
-+    PyObject *(*api_invoke_slot)(const sipSlot *slot, PyObject *sigargs);
-+    PyObject *(*api_invoke_slot_ex)(const sipSlot *slot, PyObject *sigargs,
-+            int check_receiver);
-+    int (*api_save_slot)(sipSlot *sp, PyObject *rxObj, const char *slot);
-+    void (*api_clear_any_slot_reference)(sipSlot *slot);
-+    int (*api_visit_slot)(sipSlot *slot, visitproc visit, void *arg);
-+
-+    /*
-+     * The following are deprecated parts of the public API.
-+     */
-+    PyTypeObject *(*api_find_named_enum)(const char *type);
-+    const sipMappedType *(*api_find_mapped_type)(const char *type);
-+    sipWrapperType *(*api_find_class)(const char *type);
-+    sipWrapperType *(*api_map_int_to_class)(int typeInt,
-+            const sipIntTypeClassMap *map, int maplen);
-+    sipWrapperType *(*api_map_string_to_class)(const char *typeString,
-+            const sipStringTypeClassMap *map, int maplen);
-+
-+    /*
-+     * The following are part of the public API.
-+     */
-+    int (*api_enable_gc)(int enable);
-+    void (*api_print_object)(PyObject *o);
-+    int (*api_register_event_handler)(sipEventType type, const sipTypeDef *td,
-+            void *handler);
-+    int (*api_convert_to_enum)(PyObject *obj, const sipTypeDef *td);
-+    int (*api_convert_to_bool)(PyObject *obj);
-+    int (*api_enable_overflow_checking)(int enable);
-+    char (*api_long_as_char)(PyObject *o);
-+    signed char (*api_long_as_signed_char)(PyObject *o);
-+    unsigned char (*api_long_as_unsigned_char)(PyObject *o);
-+    short (*api_long_as_short)(PyObject *o);
-+    unsigned short (*api_long_as_unsigned_short)(PyObject *o);
-+    int (*api_long_as_int)(PyObject *o);
-+    unsigned int (*api_long_as_unsigned_int)(PyObject *o);
-+    long (*api_long_as_long)(PyObject *o);
-+#if defined(HAVE_LONG_LONG)
-+    PY_LONG_LONG (*api_long_as_long_long)(PyObject *o);
-+    unsigned PY_LONG_LONG (*api_long_as_unsigned_long_long)(PyObject *o);
-+#else
-+    void *api_long_as_long_long;
-+    void *api_long_as_unsigned_long_long;
-+#endif
-+
-+    /*
-+     * The following are not part of the public API.
-+     */
-+    void (*api_instance_destroyed_ex)(sipSimpleWrapper **sipSelfp);
-+
-+    /*
-+     * The following are part of the public API.
-+     */
-+    int (*api_convert_from_slice_object)(PyObject *slice, SIP_SSIZE_T length,
-+            SIP_SSIZE_T *start, SIP_SSIZE_T *stop, SIP_SSIZE_T *step,
-+            SIP_SSIZE_T *slicelength);
-+} sipAPIDef;
-+
-+
-+/*
-+ * The API implementing the optional Qt support.
-+ */
-+typedef struct _sipQtAPI {
-+    sipTypeDef **qt_qobject;
-+    void *(*qt_create_universal_signal)(void *, const char **);
-+    void *(*qt_find_universal_signal)(void *, const char **);
-+    void *(*qt_create_universal_slot)(struct _sipWrapper *, const char *,
-+            PyObject *, const char *, const char **, int);
-+    void (*qt_destroy_universal_slot)(void *);
-+    void *(*qt_find_slot)(void *, const char *, PyObject *, const char *,
-+            const char **);
-+    int (*qt_connect)(void *, const char *, void *, const char *, int);
-+    int (*qt_disconnect)(void *, const char *, void *, const char *);
-+    int (*qt_same_name)(const char *, const char *);
-+    sipSlot *(*qt_find_sipslot)(void *, void **);
-+    int (*qt_emit_signal)(PyObject *, const char *, PyObject *);
-+    int (*qt_connect_py_signal)(PyObject *, const char *, PyObject *,
-+            const char *);
-+    void (*qt_disconnect_py_signal)(PyObject *, const char *, PyObject *,
-+            const char *);
-+} sipQtAPI;
-+
-+
-+/*
-+ * These are flags that can be passed to sipCanConvertToType(),
-+ * sipConvertToType() and sipForceConvertToType().
-+ */
-+#define SIP_NOT_NONE        0x01    /* Disallow None. */
-+#define SIP_NO_CONVERTORS   0x02    /* Disable any type convertors. */
-+
-+
-+/*
-+ * These are flags that can be passed to sipConvertToArray().  These are held
-+ * in sw_flags.
-+ */
-+#define SIP_READ_ONLY       0x01    /* The array is read-only. */
-+#define SIP_OWNS_MEMORY     0x02    /* The array owns its memory. */
-+
-+
-+/*
-+ * These are the state flags returned by %ConvertToTypeCode.  Note that the
-+ * values share the same "flagspace" as the contents of sw_flags.
-+ */
-+#define SIP_TEMPORARY       0x01    /* A temporary instance. */
-+#define SIP_DERIVED_CLASS   0x02    /* The instance is derived. */
-+
-+
-+/*
-+ * These flags are specific to the Qt support API.
-+ */
-+#define SIP_SINGLE_SHOT     0x01    /* The connection is single shot. */
-+
-+
-+/*
-+ * Useful macros, not part of the public API.
-+ */
-+
-+/* These are held in sw_flags. */
-+#define SIP_INDIRECT        0x0004  /* If there is a level of indirection. */
-+#define SIP_ACCFUNC         0x0008  /* If there is an access function. */
-+#define SIP_NOT_IN_MAP      0x0010  /* If Python object is not in the map. */
-+
-+#if !defined(Py_LIMITED_API) || PY_VERSION_HEX < 0x03020000
-+#define SIP_PY_OWNED        0x0020  /* If owned by Python. */
-+#define SIP_SHARE_MAP       0x0040  /* If the map slot might be occupied. */
-+#define SIP_CPP_HAS_REF     0x0080  /* If C/C++ has a reference. */
-+#define SIP_POSSIBLE_PROXY  0x0100  /* If there might be a proxy slot. */
-+#define SIP_ALIAS           0x0200  /* If it is an alias. */
-+#define SIP_CREATED         0x0400  /* If the C/C++ object has been created. */
-+
-+#define sipIsDerived(sw)    ((sw)->sw_flags & SIP_DERIVED_CLASS)
-+#define sipIsIndirect(sw)   ((sw)->sw_flags & SIP_INDIRECT)
-+#define sipIsAccessFunc(sw) ((sw)->sw_flags & SIP_ACCFUNC)
-+#define sipNotInMap(sw)     ((sw)->sw_flags & SIP_NOT_IN_MAP)
-+#define sipSetNotInMap(sw)  ((sw)->sw_flags |= SIP_NOT_IN_MAP)
-+#define sipIsPyOwned(sw)    ((sw)->sw_flags & SIP_PY_OWNED)
-+#define sipSetPyOwned(sw)   ((sw)->sw_flags |= SIP_PY_OWNED)
-+#define sipResetPyOwned(sw) ((sw)->sw_flags &= ~SIP_PY_OWNED)
-+#define sipCppHasRef(sw)    ((sw)->sw_flags & SIP_CPP_HAS_REF)
-+#define sipSetCppHasRef(sw) ((sw)->sw_flags |= SIP_CPP_HAS_REF)
-+#define sipResetCppHasRef(sw)   ((sw)->sw_flags &= ~SIP_CPP_HAS_REF)
-+#define sipPossibleProxy(sw)    ((sw)->sw_flags & SIP_POSSIBLE_PROXY)
-+#define sipSetPossibleProxy(sw) ((sw)->sw_flags |= SIP_POSSIBLE_PROXY)
-+#define sipIsAlias(sw)      ((sw)->sw_flags & SIP_ALIAS)
-+#define sipWasCreated(sw)   ((sw)->sw_flags & SIP_CREATED)
-+#endif
-+
-+#define SIP_TYPE_TYPE_MASK  0x0007  /* The type type mask. */
-+#define SIP_TYPE_CLASS      0x0000  /* If the type is a C++ class. */
-+#define SIP_TYPE_NAMESPACE  0x0001  /* If the type is a C++ namespace. */
-+#define SIP_TYPE_MAPPED     0x0002  /* If the type is a mapped type. */
-+#define SIP_TYPE_ENUM       0x0003  /* If the type is a named enum. */
-+#define SIP_TYPE_SCOPED_ENUM    0x0004  /* If the type is a scoped enum. */
-+#define SIP_TYPE_ABSTRACT   0x0008  /* If the type is abstract. */
-+#define SIP_TYPE_SCC        0x0010  /* If the type is subject to sub-class convertors. */
-+#define SIP_TYPE_ALLOW_NONE 0x0020  /* If the type can handle None. */
-+#define SIP_TYPE_STUB       0x0040  /* If the type is a stub. */
-+#define SIP_TYPE_NONLAZY    0x0080  /* If the type has a non-lazy method. */
-+#define SIP_TYPE_SUPER_INIT 0x0100  /* If the instance's super init should be called. */
-+#define SIP_TYPE_LIMITED_API    0x0200  /* Use the limited API.  If this is more generally required it may need to be moved to the module definition. */
-+
-+
-+/*
-+ * The following are part of the public API.
-+ */
-+#define sipTypeIsClass(td)  (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_CLASS)
-+#define sipTypeIsNamespace(td)  (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_NAMESPACE)
-+#define sipTypeIsMapped(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_MAPPED)
-+#define sipTypeIsEnum(td)   (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_ENUM)
-+#define sipTypeIsScopedEnum(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_SCOPED_ENUM)
-+#define sipTypeAsPyTypeObject(td)   ((td)->u.td_py_type)
-+#define sipTypeName(td)     sipNameFromPool((td)->td_module, (td)->td_cname)
-+#define sipTypePluginData(td)   ((td)->td_plugin_data)
-+
-+
-+/*
-+ * Note that this was never actually documented as being part of the public
-+ * API.  It is now deprecated.  sipIsUserType() should be used instead.
-+ */
-+#define sipIsExactWrappedType(wt)   (sipTypeAsPyTypeObject((wt)->wt_td) == (PyTypeObject *)(wt))
-+
-+
-+/*
-+ * The following are deprecated parts of the public API.
-+ */
-+#define sipClassName(w)     PyString_FromString(Py_TYPE(w)->tp_name)
-+
-+
-+/*
-+ * The following are not part of the public API.
-+ */
-+#define sipTypeIsAbstract(td)   ((td)->td_flags & SIP_TYPE_ABSTRACT)
-+#define sipTypeHasSCC(td)   ((td)->td_flags & SIP_TYPE_SCC)
-+#define sipTypeAllowNone(td)    ((td)->td_flags & SIP_TYPE_ALLOW_NONE)
-+#define sipTypeIsStub(td)   ((td)->td_flags & SIP_TYPE_STUB)
-+#define sipTypeSetStub(td)  ((td)->td_flags |= SIP_TYPE_STUB)
-+#define sipTypeHasNonlazyMethod(td) ((td)->td_flags & SIP_TYPE_NONLAZY)
-+#define sipTypeCallSuperInit(td)    ((td)->td_flags & SIP_TYPE_SUPER_INIT)
-+#define sipTypeUseLimitedAPI(td)    ((td)->td_flags & SIP_TYPE_LIMITED_API)
-+
-+/*
-+ * Get various names from the string pool for various data types.
-+ */
-+#define sipNameFromPool(em, mr) (&((em)->em_strings)[(mr)])
-+#define sipNameOfModule(em)     sipNameFromPool((em), (em)->em_name)
-+#define sipPyNameOfContainer(cod, td)   sipNameFromPool((td)->td_module, (cod)->cod_name)
-+#define sipPyNameOfEnum(etd)    sipNameFromPool((etd)->etd_base.td_module, (etd)->etd_name)
-+
-+
-+/*
-+ * The following are PyQt4-specific extensions.  In SIP v5 they will be pushed
-+ * out to a plugin supplied by PyQt4.
-+ */
-+
-+/*
-+ * The description of a Qt signal for PyQt4.
-+ */
-+typedef struct _pyqt4QtSignal {
-+    /* The C++ name and signature of the signal. */
-+    const char *signature;
-+
-+    /* The optional docstring. */
-+    const char *docstring;
-+
-+    /*
-+     * If the signal is an overload of regular methods then this points to the
-+     * code that implements those methods.
-+     */
-+    PyMethodDef *non_signals;
-+
-+    /*
-+     * The hack to apply when built against Qt5:
-+     *
-+     * 0 - no hack
-+     * 1 - add an optional None
-+     * 2 - add an optional []
-+     * 3 - add an optional False
-+     */
-+    int hack;
-+} pyqt4QtSignal;
-+
-+
-+/*
-+ * This is the PyQt4-specific extension to the generated class type structure.
-+ */
-+typedef struct _pyqt4ClassPluginDef {
-+    /* A pointer to the QObject sub-class's staticMetaObject class variable. */
-+    const void *static_metaobject;
-+
-+    /*
-+     * A set of flags.  At the moment only bit 0 is used to say if the type is
-+     * derived from QFlags.
-+     */
-+    unsigned flags;
-+
-+    /*
-+     * The table of signals emitted by the type.  These are grouped by signal
-+     * name.
-+     */
-+    const pyqt4QtSignal *qt_signals;
-+} pyqt4ClassPluginDef;
-+
-+
-+/*
-+ * The following are PyQt5-specific extensions.  In SIP v5 they will be pushed
-+ * out to a plugin supplied by PyQt5.
-+ */
-+
-+/*
-+ * The description of a Qt signal for PyQt5.
-+ */
-+typedef int (*pyqt5EmitFunc)(void *, PyObject *);
-+
-+typedef struct _pyqt5QtSignal {
-+    /* The normalised C++ name and signature of the signal. */
-+    const char *signature;
-+
-+    /* The optional docstring. */
-+    const char *docstring;
-+
-+    /*
-+     * If the signal is an overload of regular methods then this points to the
-+     * code that implements those methods.
-+     */
-+    PyMethodDef *non_signals;
-+
-+    /*
-+     * If the signal has optional arguments then this function will implement
-+     * emit() for the signal.
-+     */
-+    pyqt5EmitFunc emitter;
-+} pyqt5QtSignal;
-+
-+
-+/*
-+ * This is the PyQt5-specific extension to the generated class type structure.
-+ */
-+typedef struct _pyqt5ClassPluginDef {
-+    /* A pointer to the QObject sub-class's staticMetaObject class variable. */
-+    const void *static_metaobject;
-+
-+    /*
-+     * A set of flags.  At the moment only bit 0 is used to say if the type is
-+     * derived from QFlags.
-+     */
-+    unsigned flags;
-+
-+    /*
-+     * The table of signals emitted by the type.  These are grouped by signal
-+     * name.
-+     */
-+    const pyqt5QtSignal *qt_signals;
-+
-+    /* The name of the interface that the class defines. */
-+    const char *qt_interface;
-+} pyqt5ClassPluginDef;
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+
-+#endif
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/siplib.c sip/siplib/siplib.c
---- ./sip-4.19.12.orig/siplib/siplib.c	2018-07-05 05:54:58.000000000 -0400
-+++ sip/siplib/siplib.c	2018-09-18 18:00:57.928047976 -0400
-@@ -39,13 +39,22 @@
- 
- 
- /*
-- * The qualified name of the sip module.  The qualified name should be defined
-- * in the compiler invocation when creating a package-specific copy.
-+ * The qualified and base names of the sip module.  These should be defined in
-+ * the compiler invocation when creating a package-specific copy.
-  */
- #if !defined(SIP_MODULE_NAME)
--#define SIP_MODULE_NAME     "sip"
-+#define SIP_MODULE_NAME     sip
-+#endif
-+
-+#if !defined(SIP_MODULE_BASENAME)
-+#define SIP_MODULE_BASENAME sip
- #endif
- 
-+#define STRINGIFY_EX(s)     #s
-+#define STRINGIFY(s)        STRINGIFY_EX(s)
-+
-+#define SIP_MODULE_NAME_STR     STRINGIFY(SIP_MODULE_NAME)
-+#define SIP_MODULE_BASENAME_STR STRINGIFY(SIP_MODULE_BASENAME)
- 
- /*
-  * The Python metatype for a C++ wrapper type.  We inherit everything from the
-@@ -1023,19 +1032,24 @@
-  * The Python module initialisation function.
-  */
- #if PY_MAJOR_VERSION >= 3
--#define SIP_MODULE_ENTRY        PyInit_sip
-+#define SIP_MODULE_ENTRY_PREFIX PyInit_
- #define SIP_MODULE_TYPE         PyObject *
- #define SIP_MODULE_DISCARD(m)   Py_DECREF(m)
- #define SIP_FATAL(s)            return NULL
- #define SIP_MODULE_RETURN(m)    return (m)
- #else
--#define SIP_MODULE_ENTRY        initsip
-+#define SIP_MODULE_ENTRY_PREFIX init
- #define SIP_MODULE_TYPE         void
- #define SIP_MODULE_DISCARD(m)
- #define SIP_FATAL(s)            Py_FatalError(s)
- #define SIP_MODULE_RETURN(m)
- #endif
- 
-+#define CONCAT_EX(PREFIX, NAME) PREFIX ## NAME
-+#define CONCAT(PREFIX, NAME)    CONCAT_EX(PREFIX, NAME)
-+
-+#define SIP_MODULE_ENTRY        CONCAT(SIP_MODULE_ENTRY_PREFIX, SIP_MODULE_BASENAME)
-+
- #if defined(SIP_STATIC_MODULE)
- SIP_MODULE_TYPE SIP_MODULE_ENTRY(void)
- #else
-@@ -1069,7 +1083,7 @@
- #if PY_MAJOR_VERSION >= 3
-     static PyModuleDef module_def = {
-         PyModuleDef_HEAD_INIT,
--        SIP_MODULE_NAME,        /* m_name */
-+        SIP_MODULE_NAME_STR,    /* m_name */
-         NULL,                   /* m_doc */
-         -1,                     /* m_size */
-         methods,                /* m_methods */
-@@ -1099,13 +1113,13 @@
-     sipWrapperType_Type.tp_base = &PyType_Type;
- 
-     if (PyType_Ready(&sipWrapperType_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.wrappertype type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.wrappertype type");
- 
-     if (PyType_Ready((PyTypeObject *)&sipSimpleWrapper_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.simplewrapper type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.simplewrapper type");
- 
-     if (sip_api_register_py_type((PyTypeObject *)&sipSimpleWrapper_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to register sip.simplewrapper type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to register sip.simplewrapper type");
- 
- #if defined(STACKLESS)
-     sipWrapper_Type.super.tp_base = (PyTypeObject *)&sipSimpleWrapper_Type;
-@@ -1116,33 +1130,33 @@
- #endif
- 
-     if (PyType_Ready((PyTypeObject *)&sipWrapper_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.wrapper type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.wrapper type");
- 
-     if (PyType_Ready(&sipMethodDescr_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.methoddescriptor type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.methoddescriptor type");
- 
-     if (PyType_Ready(&sipVariableDescr_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.variabledescriptor type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.variabledescriptor type");
- 
-     sipEnumType_Type.tp_base = &PyType_Type;
- 
-     if (PyType_Ready(&sipEnumType_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.enumtype type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.enumtype type");
- 
-     if (PyType_Ready(&sipVoidPtr_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.voidptr type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.voidptr type");
- 
-     if (PyType_Ready(&sipArray_Type) < 0)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.array type");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.array type");
- 
- #if PY_MAJOR_VERSION >= 3
-     mod = PyModule_Create(&module_def);
- #else
--    mod = Py_InitModule(SIP_MODULE_NAME, methods);
-+    mod = Py_InitModule(SIP_MODULE_NAME_STR, methods);
- #endif
- 
-     if (mod == NULL)
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip module");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip module");
- 
-     mod_dict = PyModule_GetDict(mod);
- 
-@@ -1153,12 +1167,12 @@
-     if (type_unpickler == NULL || enum_unpickler == NULL)
-     {
-         SIP_MODULE_DISCARD(mod);
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to get pickle helpers");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to get pickle helpers");
-     }
- 
-     /* Publish the SIP API. */
- #if defined(SIP_USE_PYCAPSULE)
--    obj = PyCapsule_New((void *)&sip_api, SIP_MODULE_NAME "._C_API", NULL);
-+    obj = PyCapsule_New((void *)&sip_api, SIP_MODULE_NAME_STR "._C_API", NULL);
- #else
-     obj = PyCObject_FromVoidPtr((void *)&sip_api, NULL);
- #endif
-@@ -1166,7 +1180,7 @@
-     if (obj == NULL)
-     {
-         SIP_MODULE_DISCARD(mod);
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to create _C_API object");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to create _C_API object");
-     }
- 
-     rc = PyDict_SetItemString(mod_dict, "_C_API", obj);
-@@ -1175,20 +1189,20 @@
-     if (rc < 0)
-     {
-         SIP_MODULE_DISCARD(mod);
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to add _C_API object to module dictionary");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to add _C_API object to module dictionary");
-     }
- 
-     /* These will always be needed. */
-     if (objectify("__init__", &init_name) < 0)
-     {
-         SIP_MODULE_DISCARD(mod);
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to objectify '__init__'");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to objectify '__init__'");
-     }
- 
-     if ((empty_tuple = PyTuple_New(0)) == NULL)
-     {
-         SIP_MODULE_DISCARD(mod);
--        SIP_FATAL(SIP_MODULE_NAME ": Failed to create empty tuple");
-+        SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to create empty tuple");
-     }
- 
-     /* Add the SIP version number, but don't worry about errors. */
-@@ -1248,7 +1262,7 @@
-      * Also install the package-specific module at the top level for backwards
-      * compatibility.
-      */
--    if (strcmp(SIP_MODULE_NAME, "sip") != 0)
-+    if (strcmp(SIP_MODULE_NAME_STR, "sip") != 0 && strcmp(SIP_MODULE_BASENAME_STR, "sip") == 0)
-     {
-         PyObject *modules = PySys_GetObject("modules");
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/command_line.rst sip/sphinx/command_line.rst
---- ./sip-4.19.12.orig/sphinx/command_line.rst	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sphinx/command_line.rst	2018-09-18 18:00:57.928047976 -0400
-@@ -115,10 +115,9 @@
- 
-     .. versionadded:: 4.19.9
- 
--    The qualified name of the private copy of the :mod:`sip` module.  It should
--    be of the form ``package.sip``.  See also the
--    :option:`--sip-module <configure.py --sip-module>` option of the
--    installation script.
-+    The fully qualified name of the private copy of the :mod:`sip` module.
-+    See also the :option:`--sip-module <configure.py --sip-module>` option of
-+    the installation script.
- 
- .. cmdoption:: -o
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/conf.py sip/sphinx/conf.py
---- ./sip-4.19.12.orig/sphinx/conf.py	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sphinx/conf.py	1969-12-31 19:00:00.000000000 -0500
-@@ -1,139 +0,0 @@
--# -*- coding: utf-8 -*-
--#
--# SIP documentation build configuration file, created by
--# sphinx-quickstart on Sat May 30 14:28:55 2009.
--#
--# This file is execfile()d with the current directory set to its containing dir.
--#
--# Note that not all possible configuration values are present in this
--# autogenerated file.
--#
--# All configuration values have a default; values that are commented out
--# serve to show the default.
--
--import datetime
--import os
--import sys
--
--# If extensions (or modules to document with autodoc) are in another directory,
--# add these directories to sys.path here. If the directory is relative to the
--# documentation root, use os.path.abspath to make it absolute, like shown here.
--#sys.path.append(os.path.abspath('.'))
--
--# -- General configuration -----------------------------------------------------
--
--# Add any Sphinx extension module names here, as strings. They can be extensions
--# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
--#extensions = []
--
--# Add any paths that contain templates here, relative to this directory.
--templates_path = ['templates']
--
--# The suffix of source filenames.
--source_suffix = '.rst'
--
--# The encoding of source files.
--#source_encoding = 'utf-8'
--
--# The master toctree document.
--master_doc = 'index'
--
--# General information about the project.
--project = 'SIP'
--copyright = '{0} Riverbank Computing Limited'.format(
--        datetime.date.today().year)
--
--# The version info for the project you're documenting, acts as replacement for
--# |version| and |release|, also used in various other places throughout the
--# built documents.
--#
--# The short X.Y version.
--version = '4.19.12'
--# The full version, including alpha/beta/rc tags.
--release = '4.19.12'
--
--# The language for content autogenerated by Sphinx. Refer to documentation
--# for a list of supported languages.
--#language = None
--
--# There are two options for replacing |today|: either, you set today to some
--# non-false value, then it is used:
--#today = ''
--# Else, today_fmt is used as the format for a strftime call.
--#today_fmt = '%B %d, %Y'
--
--# List of patterns, relative to source directory, that match files and
--# directories to ignore when looking for source files.
--exclude_patterns = ['html']
--
--# The reST default role (used for this markup: `text`) to use for all documents.
--#default_role = None
--
--# If true, '()' will be appended to :func: etc. cross-reference text.
--#add_function_parentheses = True
--
--# If true, the current module name will be prepended to all description
--# unit titles (such as .. function::).
--#add_module_names = True
--
--# If true, sectionauthor and moduleauthor directives will be shown in the
--# output. They are ignored by default.
--#show_authors = False
--
--# The name of the Pygments (syntax highlighting) style to use.
--pygments_style = 'sphinx'
--
--# A list of ignored prefixes for module index sorting.
--#modindex_common_prefix = []
--
--
--# -- Options for HTML output ---------------------------------------------------
--
--# The theme to use for HTML and HTML Help pages.
--html_theme = 'riverbank'
--
--# Add any paths that contain custom themes here, relative to this directory.
--html_theme_path = ['.']
--
--# The name for this set of Sphinx documents.  If None, it defaults to
--# "<project> v<release> documentation".
--html_title = "%s v%s Reference Guide" % (project, release)
--
--# Output file base name for HTML help builder.
--htmlhelp_basename = 'SIPdoc'
--
--
--# -- Project-specific extensions -----------------------------------------------
--
--def setup(app):
--    """ Define roles specific to SIP. """
--
--    app.add_description_unit('argument-annotation', 'aanno',
--            indextemplate='single: %s (argument annotation)')
--
--    app.add_description_unit('class-annotation', 'canno',
--            indextemplate='single: %s (class annotation)')
--
--    app.add_description_unit('enum-annotation', 'eanno',
--            indextemplate='single: %s (enum annotation)')
--
--    app.add_description_unit('exception-annotation', 'xanno',
--            indextemplate='single: %s (exception annotation)')
--
--    app.add_description_unit('function-annotation', 'fanno',
--            indextemplate='single: %s (function annotation)')
--
--    app.add_description_unit('mapped-type-annotation', 'manno',
--            indextemplate='single: %s (mapped type annotation)')
--
--    app.add_description_unit('typedef-annotation', 'tanno',
--            indextemplate='single: %s (typedef annotation)')
--
--    app.add_description_unit('variable-annotation', 'vanno',
--            indextemplate='single: %s (variable annotation)')
--
--    app.add_description_unit('directive', 'directive',
--            indextemplate='single: %s (directive)')
--
--    app.add_description_unit('sip-type', 'stype',
--            indextemplate='single: %s (SIP type)')
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/conf.py.in sip/sphinx/conf.py.in
---- ./sip-4.19.12.orig/sphinx/conf.py.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/sphinx/conf.py.in	2018-09-18 17:52:23.310543535 -0400
-@@ -0,0 +1,139 @@
-+# -*- coding: utf-8 -*-
-+#
-+# SIP documentation build configuration file, created by
-+# sphinx-quickstart on Sat May 30 14:28:55 2009.
-+#
-+# This file is execfile()d with the current directory set to its containing dir.
-+#
-+# Note that not all possible configuration values are present in this
-+# autogenerated file.
-+#
-+# All configuration values have a default; values that are commented out
-+# serve to show the default.
-+
-+import datetime
-+import os
-+import sys
-+
-+# If extensions (or modules to document with autodoc) are in another directory,
-+# add these directories to sys.path here. If the directory is relative to the
-+# documentation root, use os.path.abspath to make it absolute, like shown here.
-+#sys.path.append(os.path.abspath('.'))
-+
-+# -- General configuration -----------------------------------------------------
-+
-+# Add any Sphinx extension module names here, as strings. They can be extensions
-+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-+#extensions = []
-+
-+# Add any paths that contain templates here, relative to this directory.
-+templates_path = ['templates']
-+
-+# The suffix of source filenames.
-+source_suffix = '.rst'
-+
-+# The encoding of source files.
-+#source_encoding = 'utf-8'
-+
-+# The master toctree document.
-+master_doc = 'index'
-+
-+# General information about the project.
-+project = 'SIP'
-+copyright = '{0} Riverbank Computing Limited'.format(
-+        datetime.date.today().year)
-+
-+# The version info for the project you're documenting, acts as replacement for
-+# |version| and |release|, also used in various other places throughout the
-+# built documents.
-+#
-+# The short X.Y version.
-+version = '@RM_VERSION@'
-+# The full version, including alpha/beta/rc tags.
-+release = '@RM_RELEASE@'
-+
-+# The language for content autogenerated by Sphinx. Refer to documentation
-+# for a list of supported languages.
-+#language = None
-+
-+# There are two options for replacing |today|: either, you set today to some
-+# non-false value, then it is used:
-+#today = ''
-+# Else, today_fmt is used as the format for a strftime call.
-+#today_fmt = '%B %d, %Y'
-+
-+# List of patterns, relative to source directory, that match files and
-+# directories to ignore when looking for source files.
-+exclude_patterns = ['html']
-+
-+# The reST default role (used for this markup: `text`) to use for all documents.
-+#default_role = None
-+
-+# If true, '()' will be appended to :func: etc. cross-reference text.
-+#add_function_parentheses = True
-+
-+# If true, the current module name will be prepended to all description
-+# unit titles (such as .. function::).
-+#add_module_names = True
-+
-+# If true, sectionauthor and moduleauthor directives will be shown in the
-+# output. They are ignored by default.
-+#show_authors = False
-+
-+# The name of the Pygments (syntax highlighting) style to use.
-+pygments_style = 'sphinx'
-+
-+# A list of ignored prefixes for module index sorting.
-+#modindex_common_prefix = []
-+
-+
-+# -- Options for HTML output ---------------------------------------------------
-+
-+# The theme to use for HTML and HTML Help pages.
-+html_theme = 'riverbank'
-+
-+# Add any paths that contain custom themes here, relative to this directory.
-+html_theme_path = ['.']
-+
-+# The name for this set of Sphinx documents.  If None, it defaults to
-+# "<project> v<release> documentation".
-+html_title = "%s v%s Reference Guide" % (project, release)
-+
-+# Output file base name for HTML help builder.
-+htmlhelp_basename = 'SIPdoc'
-+
-+
-+# -- Project-specific extensions -----------------------------------------------
-+
-+def setup(app):
-+    """ Define roles specific to SIP. """
-+
-+    app.add_description_unit('argument-annotation', 'aanno',
-+            indextemplate='single: %s (argument annotation)')
-+
-+    app.add_description_unit('class-annotation', 'canno',
-+            indextemplate='single: %s (class annotation)')
-+
-+    app.add_description_unit('enum-annotation', 'eanno',
-+            indextemplate='single: %s (enum annotation)')
-+
-+    app.add_description_unit('exception-annotation', 'xanno',
-+            indextemplate='single: %s (exception annotation)')
-+
-+    app.add_description_unit('function-annotation', 'fanno',
-+            indextemplate='single: %s (function annotation)')
-+
-+    app.add_description_unit('mapped-type-annotation', 'manno',
-+            indextemplate='single: %s (mapped type annotation)')
-+
-+    app.add_description_unit('typedef-annotation', 'tanno',
-+            indextemplate='single: %s (typedef annotation)')
-+
-+    app.add_description_unit('variable-annotation', 'vanno',
-+            indextemplate='single: %s (variable annotation)')
-+
-+    app.add_description_unit('directive', 'directive',
-+            indextemplate='single: %s (directive)')
-+
-+    app.add_description_unit('sip-type', 'stype',
-+            indextemplate='single: %s (SIP type)')
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/installation.rst sip/sphinx/installation.rst
---- ./sip-4.19.12.orig/sphinx/installation.rst	2018-07-05 05:54:58.000000000 -0400
-+++ sip/sphinx/installation.rst	2018-09-18 18:00:57.928047976 -0400
-@@ -160,11 +160,10 @@
- 
- .. cmdoption:: --sip-module <NAME>
- 
--    The :mod:`sip` module will be created with the name ``<NAME>`` rather than
--    the default ``sip``.  ``<NAME>`` should be of the form ``package.sip``.
--    See :ref:`ref-private-sip` for how to use this to create a private copy of
--    the :mod:`sip` module.  Also see the :option:`-n <sip -n>` option of the
--    code generator.
-+    The :mod:`sip` module will be created with the fully qualified name
-+    ``<NAME>`` rather than the default ``sip``.  See :ref:`ref-private-sip` for
-+    how to use this to create a private copy of the :mod:`sip` module.  Also
-+    see the :option:`-n <sip -n>` option of the code generator.
- 
- .. cmdoption:: --sysroot <DIR>
- 
-@@ -264,7 +263,7 @@
- To get around this problem you can build a private copy of the :mod:`sip`
- module that installed as part of your package.  To do this you use the
- :option:`--sip-module <configure.py --sip-module>` option to specify the fully
--qualified package name of your private copy.  You can also use the
-+qualified name of your private copy.  You can also use the
- :option:`--no-tools <configure.py --no-tools>` option to specify that nothing
- else but the :mod:`sip` module is installed.
- 
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/introduction.rst sip/sphinx/introduction.rst
---- ./sip-4.19.12.orig/sphinx/introduction.rst	2018-07-05 05:55:19.000000000 -0400
-+++ sip/sphinx/introduction.rst	1969-12-31 19:00:00.000000000 -0500
-@@ -1,193 +0,0 @@
--Introduction
--============
--
--This is the reference guide for SIP 4.19.12.  SIP is a tool for
--automatically generating `Python <https://www.python.org>`__ bindings for C and
--C++ libraries.  SIP was originally developed in 1998 for
--`PyQt <https://www.riverbankcomputing.com/software/pyqt>`__ - the Python
--bindings for the Qt GUI toolkit - but is suitable for generating bindings for
--any C or C++ library.
--
--This version of SIP generates bindings for Python v2.3 or later, including
--Python v3.
--
--There are many other similar tools available.  One of the original such tools
--is `SWIG <http://www.swig.org>`__ and, in fact, SIP is so called because it
--started out as a small SWIG.  Unlike SWIG, SIP is specifically designed for
--bringing together Python and C/C++ and goes to great lengths to make the
--integration as tight as possible.
--
--The homepage for SIP is https://www.riverbankcomputing.com/software/sip.  Here
--you will always find the latest stable version and the latest version of this
--documentation.
--
--SIP can also be downloaded from the
--`Mercurial <https://www.mercurial-scm.org>`__ repository at
--https://www.riverbankcomputing.com/hg/sip.
--
--
--License
---------
--
--SIP is licensed under similar terms as Python itself.  SIP is also licensed
--under the GPL (both v2 and v3).  It is your choice as to which license you
--use.  If you choose the GPL then any bindings you create must be distributed
--under the terms of the GPL.
--
--
--Features
----------
--
--SIP, and the bindings it produces, have the following features:
--
--- bindings are fast to load and minimise memory consumption especially when
--  only a small sub-set of a large library is being used
--
--- automatic conversion between standard Python and C/C++ data types
--
--- overloading of functions and methods with different argument signatures
--
--- support for Python's keyword argument syntax
--
--- support for both explicitly specified and automatically generated docstrings
--
--- access to a C++ class's protected methods
--
--- the ability to define a Python class that is a sub-class of a C++ class,
--  including abstract C++ classes
--
--- Python sub-classes can implement the :meth:`__dtor__` method which will be
--  called from the C++ class's virtual destructor
--
--- support for ordinary C++ functions, class methods, static class methods,
--  virtual class methods and abstract class methods
--
--- the ability to re-implement C++ virtual and abstract methods in Python
--
--- support for global and class variables
--
--- support for global and class operators
--
--- support for C++ namespaces
--
--- support for C++ templates
--
--- support for C++ exceptions and wrapping them as Python exceptions
--
--- the automatic generation of complementary rich comparison slots
--
--- support for deprecation warnings
--
--- the ability to define mappings between C++ classes and similar Python data
--  types that are automatically invoked
--
--- the ability to automatically exploit any available run time type information
--  to ensure that the class of a Python instance object matches the class of the
--  corresponding C++ instance
--
--- the ability to change the type and meta-type of the Python object used to
--  wrap a C/C++ data type
--
--- full support of the Python global interpreter lock, including the ability to
--  specify that a C++ function of method may block, therefore allowing the lock
--  to be released and other Python threads to run
--
--- support for consolidated modules where the generated wrapper code for a
--  number of related modules may be included in a single, possibly private,
--  module
--
--- support for the concept of ownership of a C++ instance (i.e. what part of the
--  code is responsible for calling the instance's destructor) and how the
--  ownership may change during the execution of an application
--
--- the ability to generate bindings for a C++ class library that itself is built
--  on another C++ class library which also has had bindings generated so that
--  the different bindings integrate and share code properly
--
--- a sophisticated versioning system that allows the full lifetime of a C++
--  class library, including any platform specific or optional features, to be
--  described in a single set of specification files 
--
--- support for the automatic generation of PEP 484 type hint stub files
--
--- the ability to include documentation in the specification files which can be
--  extracted and subsequently processed by external tools
--
--- the ability to include copyright notices and licensing information in the
--  specification files that is automatically included in all generated source
--  code
--
--- a build system, written in Python, that you can extend to configure, compile
--  and install your own bindings without worrying about platform specific issues
--
--- support for building your extensions using distutils
--
--- SIP, and the bindings it produces, runs under UNIX, Linux, Windows, MacOS/X,
--  Android and iOS.
--
--
--SIP Components
----------------
--
--SIP comprises a number of different components.
--
--- The SIP code generator (:program:`sip`).  This processes :file:`.sip`
--  specification files and generates C or C++ bindings.  It is covered in detail
--  in :ref:`ref-using`.
--
--- The SIP header file (:file:`sip.h`).  This contains definitions and data
--  structures needed by the generated C and C++ code.
--
--- The SIP module (:file:`sip.so` or :file:`sip.pyd`).  This is a Python
--  extension module that is imported automatically by SIP generated bindings and
--  provides them with some common utility functions.  Historically the module
--  was installed in the Python installation's ``site-packages`` directory where
--  it was imported by any extension module that needed it, for example
--  :mod:`PyQt4` and :mod:`PyQt5`.  However this approach introduces dependencies
--  between otherwise unrelated packages.  The preferred approach is for each
--  package to include it's own private copy of the module that is installed in
--  the root directory of the package as described in :ref:`ref-private-sip`.
--  See also :ref:`ref-python-api`.
--
--- The SIP build system (:file:`sipconfig.py`).  This is a pure Python module
--  that is created when SIP is configured and encapsulates all the necessary
--  information about your system including relevant directory names, compiler
--  and linker flags, and version numbers.  It also includes several Python
--  classes and functions which help you write configuration scripts for your own
--  bindings.  It is covered in detail in :ref:`ref-build-system`.
--
--- The SIP distutils extension (:file:`sipdistutils.py`).  This is a distutils
--  extension that can be used to build your extension modules using distutils
--  and is an alternative to writing configuration scripts with the SIP build
--  system.  This can be as simple as adding your .sip files to the list of files
--  needed to build the extension module.  It is covered in detail in
--  :ref:`ref-distutils`.
--
--
--Preparing for SIP v5
----------------------
--
--The syntax of a SIP specification file will change in SIP v5.  The command line
--options to the SIP code generator will also change.  In order to help users
--manage the transition the following approach will be adopted.
--
--- Where possible, all incompatible changes will be first implemented in SIP v4.
--
--- When an incompatible change is implemented, the old syntax will be deprecated
--  (with a warning message) but will be supported for the lifetime of v4.
--
--- The use of the :option:`--sip-module <configure.py --sip-module>` option to
--  build a private copy of the SIP module will be compulsory.
--
--
--Qt Support
------------
--
--SIP has specific support for the creation of bindings for the Qt application
--toolkit from The Qt Company..
--
--The SIP code generator understands the signal/slot type safe callback mechanism
--that Qt uses to connect objects together.  This allows applications to define
--new Python signals, and allows any Python callable object to be used as a slot.
--
--SIP itself does not require Qt to be installed.
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/introduction.rst.in sip/sphinx/introduction.rst.in
---- ./sip-4.19.12.orig/sphinx/introduction.rst.in	1969-12-31 19:00:00.000000000 -0500
-+++ sip/sphinx/introduction.rst.in	2018-09-18 17:52:23.312543505 -0400
-@@ -0,0 +1,193 @@
-+Introduction
-+============
-+
-+This is the reference guide for SIP @RM_RELEASE at .  SIP is a tool for
-+automatically generating `Python <https://www.python.org>`__ bindings for C and
-+C++ libraries.  SIP was originally developed in 1998 for
-+`PyQt <https://www.riverbankcomputing.com/software/pyqt>`__ - the Python
-+bindings for the Qt GUI toolkit - but is suitable for generating bindings for
-+any C or C++ library.
-+
-+This version of SIP generates bindings for Python v2.3 or later, including
-+Python v3.
-+
-+There are many other similar tools available.  One of the original such tools
-+is `SWIG <http://www.swig.org>`__ and, in fact, SIP is so called because it
-+started out as a small SWIG.  Unlike SWIG, SIP is specifically designed for
-+bringing together Python and C/C++ and goes to great lengths to make the
-+integration as tight as possible.
-+
-+The homepage for SIP is https://www.riverbankcomputing.com/software/sip.  Here
-+you will always find the latest stable version and the latest version of this
-+documentation.
-+
-+SIP can also be downloaded from the
-+`Mercurial <https://www.mercurial-scm.org>`__ repository at
-+https://www.riverbankcomputing.com/hg/sip.
-+
-+
-+License
-+-------
-+
-+SIP is licensed under similar terms as Python itself.  SIP is also licensed
-+under the GPL (both v2 and v3).  It is your choice as to which license you
-+use.  If you choose the GPL then any bindings you create must be distributed
-+under the terms of the GPL.
-+
-+
-+Features
-+--------
-+
-+SIP, and the bindings it produces, have the following features:
-+
-+- bindings are fast to load and minimise memory consumption especially when
-+  only a small sub-set of a large library is being used
-+
-+- automatic conversion between standard Python and C/C++ data types
-+
-+- overloading of functions and methods with different argument signatures
-+
-+- support for Python's keyword argument syntax
-+
-+- support for both explicitly specified and automatically generated docstrings
-+
-+- access to a C++ class's protected methods
-+
-+- the ability to define a Python class that is a sub-class of a C++ class,
-+  including abstract C++ classes
-+
-+- Python sub-classes can implement the :meth:`__dtor__` method which will be
-+  called from the C++ class's virtual destructor
-+
-+- support for ordinary C++ functions, class methods, static class methods,
-+  virtual class methods and abstract class methods
-+
-+- the ability to re-implement C++ virtual and abstract methods in Python
-+
-+- support for global and class variables
-+
-+- support for global and class operators
-+
-+- support for C++ namespaces
-+
-+- support for C++ templates
-+
-+- support for C++ exceptions and wrapping them as Python exceptions
-+
-+- the automatic generation of complementary rich comparison slots
-+
-+- support for deprecation warnings
-+
-+- the ability to define mappings between C++ classes and similar Python data
-+  types that are automatically invoked
-+
-+- the ability to automatically exploit any available run time type information
-+  to ensure that the class of a Python instance object matches the class of the
-+  corresponding C++ instance
-+
-+- the ability to change the type and meta-type of the Python object used to
-+  wrap a C/C++ data type
-+
-+- full support of the Python global interpreter lock, including the ability to
-+  specify that a C++ function of method may block, therefore allowing the lock
-+  to be released and other Python threads to run
-+
-+- support for consolidated modules where the generated wrapper code for a
-+  number of related modules may be included in a single, possibly private,
-+  module
-+
-+- support for the concept of ownership of a C++ instance (i.e. what part of the
-+  code is responsible for calling the instance's destructor) and how the
-+  ownership may change during the execution of an application
-+
-+- the ability to generate bindings for a C++ class library that itself is built
-+  on another C++ class library which also has had bindings generated so that
-+  the different bindings integrate and share code properly
-+
-+- a sophisticated versioning system that allows the full lifetime of a C++
-+  class library, including any platform specific or optional features, to be
-+  described in a single set of specification files 
-+
-+- support for the automatic generation of PEP 484 type hint stub files
-+
-+- the ability to include documentation in the specification files which can be
-+  extracted and subsequently processed by external tools
-+
-+- the ability to include copyright notices and licensing information in the
-+  specification files that is automatically included in all generated source
-+  code
-+
-+- a build system, written in Python, that you can extend to configure, compile
-+  and install your own bindings without worrying about platform specific issues
-+
-+- support for building your extensions using distutils
-+
-+- SIP, and the bindings it produces, runs under UNIX, Linux, Windows, MacOS/X,
-+  Android and iOS.
-+
-+
-+SIP Components
-+--------------
-+
-+SIP comprises a number of different components.
-+
-+- The SIP code generator (:program:`sip`).  This processes :file:`.sip`
-+  specification files and generates C or C++ bindings.  It is covered in detail
-+  in :ref:`ref-using`.
-+
-+- The SIP header file (:file:`sip.h`).  This contains definitions and data
-+  structures needed by the generated C and C++ code.
-+
-+- The SIP module (:file:`sip.so` or :file:`sip.pyd`).  This is a Python
-+  extension module that is imported automatically by SIP generated bindings and
-+  provides them with some common utility functions.  Historically the module
-+  was installed in the Python installation's ``site-packages`` directory where
-+  it was imported by any extension module that needed it, for example
-+  :mod:`PyQt4` and :mod:`PyQt5`.  However this approach introduces dependencies
-+  between otherwise unrelated packages.  The preferred approach is for each
-+  package to include it's own private copy of the module that is installed in
-+  the root directory of the package as described in :ref:`ref-private-sip`.
-+  See also :ref:`ref-python-api`.
-+
-+- The SIP build system (:file:`sipconfig.py`).  This is a pure Python module
-+  that is created when SIP is configured and encapsulates all the necessary
-+  information about your system including relevant directory names, compiler
-+  and linker flags, and version numbers.  It also includes several Python
-+  classes and functions which help you write configuration scripts for your own
-+  bindings.  It is covered in detail in :ref:`ref-build-system`.
-+
-+- The SIP distutils extension (:file:`sipdistutils.py`).  This is a distutils
-+  extension that can be used to build your extension modules using distutils
-+  and is an alternative to writing configuration scripts with the SIP build
-+  system.  This can be as simple as adding your .sip files to the list of files
-+  needed to build the extension module.  It is covered in detail in
-+  :ref:`ref-distutils`.
-+
-+
-+Preparing for SIP v5
-+--------------------
-+
-+The syntax of a SIP specification file will change in SIP v5.  The command line
-+options to the SIP code generator will also change.  In order to help users
-+manage the transition the following approach will be adopted.
-+
-+- Where possible, all incompatible changes will be first implemented in SIP v4.
-+
-+- When an incompatible change is implemented, the old syntax will be deprecated
-+  (with a warning message) but will be supported for the lifetime of v4.
-+
-+- The use of the :option:`--sip-module <configure.py --sip-module>` option to
-+  build a private copy of the SIP module will be compulsory.
-+
-+
-+Qt Support
-+----------
-+
-+SIP has specific support for the creation of bindings for the Qt application
-+toolkit from The Qt Company..
-+
-+The SIP code generator understands the signal/slot type safe callback mechanism
-+that Qt uses to connect objects together.  This allows applications to define
-+new Python signals, and allows any Python callable object to be used as a slot.
-+
-+SIP itself does not require Qt to be installed.
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/mk.sh sip/test/int_convertors/mk.sh
---- ./sip-4.19.12.orig/test/int_convertors/mk.sh	1969-12-31 19:00:00.000000000 -0500
-+++ sip/test/int_convertors/mk.sh	2018-09-18 17:52:23.314543476 -0400
-@@ -0,0 +1,23 @@
-+PYTHON=3.6
-+PYTHON_ARCH="$PYTHON"m
-+#PYTHON=2.7
-+#PYTHON_ARCH=$PYTHON
-+
-+QT=5.9.2
-+QT_SHORT=5.9.2
-+
-+PYROOT=/Library/Frameworks/Python.framework/Versions/$PYTHON
-+
-+QTROOT=$HOME/bob/Qt$QT/$QT_SHORT/clang_64
-+
-+# Run sip.
-+$PYROOT/bin/sip -c . -j 1 test.sip
-+#$PYROOT/bin/sip -c . -j 1 -t Qt_5_9_1 -t WS_MACX -I $PYROOT/share/sip/PyQt5 test.sip
-+
-+# Compile C++.
-+c++ -c -pipe -fPIC -Os -w -I. -I$PYROOT/include/python"$PYTHON_ARCH" -o siptestpart0.o siptestpart0.cpp
-+#c++ -c -pipe -fPIC -Os -w -std=gnu++11 -F$QTROOT/lib -I. -I$PYROOT/include/python"$PYTHON_ARCH" -I$QTROOT/lib/QtCore.framework/Headers -o siptestpart0.o siptestpart0.cpp
-+
-+# Link C++.
-+c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o test.so siptestpart0.o
-+#c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o test.so siptestpart0.o -F$QTROOT/lib -framework QtCore
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/run_test.py sip/test/int_convertors/run_test.py
---- ./sip-4.19.12.orig/test/int_convertors/run_test.py	1969-12-31 19:00:00.000000000 -0500
-+++ sip/test/int_convertors/run_test.py	2018-09-18 17:52:23.315543462 -0400
-@@ -0,0 +1,1845 @@
-+import sys
-+import unittest
-+
-+from sip import enableoverflowchecking
-+
-+from test import Test
-+
-+
-+# The exception raised by a virtual re-implementation.
-+_exc = None
-+
-+# The saved exception hook.
-+_old_hook = None
-+
-+
-+def _hook(xtype, xvalue, xtb):
-+    """ The replacement exceptionhook. """
-+
-+    global _exc
-+
-+    # Save the exception for later.
-+    _exc = xvalue
-+
-+
-+def install_hook():
-+    """ Install an exception hook that will remember exceptions raised by
-+    virtual re-implementations.
-+    """
-+
-+    global _exc, _old_hook
-+
-+    # Clear the saved exception.
-+    _exc = None
-+
-+    # Save the old hook and install the new one.
-+    _old_hook = sys.excepthook
-+    sys.excepthook = _hook
-+
-+
-+def uninstall_hook():
-+    """ Restore the original exception hook and re-raise any exception raised
-+    by a virtual re-implementation.
-+    """
-+
-+    sys.excepthook = _old_hook
-+
-+    if _exc is not None:
-+        raise _exc
-+
-+
-+class InvalidFixture(Test):
-+    """ A fixture for testing invalid values. """
-+
-+    def scoped_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return 10
-+
-+    def named_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def bool_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def signed_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def unsigned_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def unsigned_short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def unsigned_int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def unsigned_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+    def unsigned_long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return '0'
-+
-+
-+class ScopedEnumFixture(Test):
-+    """ A fixture for testing scoped enum values. """
-+
-+    def scoped_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return Test.Scoped.scoped
-+
-+
-+class NamedEnumFixture(Test):
-+    """ A fixture for testing named enum values. """
-+
-+    def __init__(self, value):
-+        """ Initialise the object. """
-+
-+        super().__init__()
-+
-+        self._value = value
-+
-+    def named_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self._value
-+
-+
-+class BoolFixture(Test):
-+    """ A fixture for testing valid boolean values. """
-+
-+    def __init__(self, value):
-+        """ Initialise the object. """
-+
-+        super().__init__()
-+
-+        self._value = value
-+
-+    def bool_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self._value
-+
-+
-+class LimitsFixture(Test):
-+    """ The base test fixture for those implementing a range of values. """
-+
-+    def __init__(self, limits):
-+        """ Initialise the object. """
-+
-+        super().__init__()
-+
-+        self.limits = limits
-+
-+
-+class ValidLowerFixture(LimitsFixture):
-+    """ A fixture for testing the lower bound of non-overflowing signed values.
-+    """
-+
-+    def char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.CHAR_LOWER
-+
-+    def signed_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SIGNED_CHAR_LOWER
-+
-+    def short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SHORT_LOWER
-+
-+    def int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.INT_LOWER
-+
-+    def long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LOWER
-+
-+    def long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LONG_LOWER
-+
-+
-+class ValidUpperFixture(LimitsFixture):
-+    """ A fixture for testing the upper bound of non-overflowing values.
-+    """
-+
-+    def char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.CHAR_UPPER
-+
-+    def signed_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SIGNED_CHAR_UPPER
-+
-+    def short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SHORT_UPPER
-+
-+    def int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.INT_UPPER
-+
-+    def long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_UPPER
-+
-+    def long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LONG_UPPER
-+
-+    def unsigned_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_CHAR_UPPER
-+
-+    def unsigned_short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_SHORT_UPPER
-+
-+    def unsigned_int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_INT_UPPER
-+
-+    def unsigned_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_LONG_UPPER
-+
-+    def unsigned_long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_LONG_LONG_UPPER
-+
-+
-+class OverflowLowerFixture(LimitsFixture):
-+    """ A fixture for testing the lower bound of overflowing signed values. """
-+
-+    def char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.CHAR_LOWER - 1
-+
-+    def signed_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SIGNED_CHAR_LOWER - 1
-+
-+    def short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SHORT_LOWER - 1
-+
-+    def int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.INT_LOWER - 1
-+
-+    def long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LOWER - 1
-+
-+    def long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LONG_LOWER - 1
-+
-+
-+class OverflowUpperFixture(LimitsFixture):
-+    """ A fixture for testing the upper bound of overflowing values. """
-+
-+    def char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.CHAR_UPPER + 1
-+
-+    def signed_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SIGNED_CHAR_UPPER + 1
-+
-+    def short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.SHORT_UPPER + 1
-+
-+    def int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.INT_UPPER + 1
-+
-+    def long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_UPPER + 1
-+
-+    def long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.LONG_LONG_UPPER + 1
-+
-+    def unsigned_char_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_CHAR_UPPER + 1
-+
-+    def unsigned_short_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_SHORT_UPPER + 1
-+
-+    def unsigned_int_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_INT_UPPER + 1
-+
-+    def unsigned_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_LONG_UPPER + 1
-+
-+    def unsigned_long_long_virt(self):
-+        """ Re-implemented to return the fixture-specific value. """
-+
-+        return self.limits.UNSIGNED_LONG_LONG_UPPER + 1
-+
-+
-+class TestScopedEnumConvertors(unittest.TestCase):
-+    """ This tests the scoped enum convertors with valid values. """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.fixture = ScopedEnumFixture()
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        del self.fixture
-+
-+    def test_scoped_get_member(self):
-+        """ scoped enum virtual result with a member value. """
-+
-+        self.assertIs(self.fixture.scoped_get(), Test.Scoped.scoped)
-+
-+    def test_scoped_set_member(self):
-+        """ scoped enum function argument with a member value. """
-+
-+        self.fixture.scoped_set(Test.Scoped.scoped)
-+
-+    def test_scoped_var_member(self):
-+        """ scoped enum instance variable with a member value. """
-+
-+        self.fixture.scoped_var = Test.Scoped.scoped
-+
-+
-+class TestNamedEnumConvertors(unittest.TestCase):
-+    """ This tests the named enum convertors with valid values. """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.member_fixture = NamedEnumFixture(Test.named)
-+        self.int_fixture = NamedEnumFixture(0)
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        del self.member_fixture
-+        del self.int_fixture
-+
-+    def test_named_get_member(self):
-+        """ named enum virtual result with a member value. """
-+
-+        self.assertEqual(self.member_fixture.named_get(), Test.named)
-+
-+    def test_named_set_member(self):
-+        """ named enum function argument with a member value. """
-+
-+        self.member_fixture.named_set(Test.named)
-+
-+    def test_named_var_member(self):
-+        """ named enum instance variable with a member value. """
-+
-+        self.member_fixture.named_var = Test.named
-+
-+    def test_named_overload_set(self):
-+        """ overloaded named enum function argument. """
-+
-+        self.member_fixture.named_overload_set(Test.named)
-+        self.assertIs(self.member_fixture.named_overload, True)
-+
-+    def test_named_get_int(self):
-+        """ named enum virtual result with an integer value. """
-+
-+        self.assertEqual(self.int_fixture.named_get(), 0)
-+
-+    def test_named_set_int(self):
-+        """ named enum function argument with an integer value. """
-+
-+        self.int_fixture.named_set(0)
-+
-+    def test_named_var_int(self):
-+        """ named enum instance variable with an integer value. """
-+
-+        self.int_fixture.named_var = 0
-+
-+
-+class TestBoolConvertors(unittest.TestCase):
-+    """ This tests the bool convertors with valid values. """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.true_fixture = BoolFixture(True)
-+        self.false_fixture = BoolFixture(False)
-+        self.nonzero_fixture = BoolFixture(-1)
-+        self.zero_fixture = BoolFixture(0)
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        del self.true_fixture
-+        del self.false_fixture
-+        del self.nonzero_fixture
-+        del self.zero_fixture
-+
-+    def test_bool_get_true(self):
-+        """ bool virtual result with a True value. """
-+
-+        self.assertIs(self.true_fixture.bool_get(), True)
-+
-+    def test_bool_set_true(self):
-+        """ bool function argument with a True value. """
-+
-+        self.true_fixture.bool_set(True)
-+
-+    def test_bool_var_true(self):
-+        """ bool instance variable with a True value. """
-+
-+        self.true_fixture.bool_var = True
-+
-+    def test_bool_get_false(self):
-+        """ bool virtual result with a True value. """
-+
-+        self.assertIs(self.false_fixture.bool_get(), False)
-+
-+    def test_bool_set_false(self):
-+        """ bool function argument with a False value. """
-+
-+        self.false_fixture.bool_set(False)
-+
-+    def test_bool_var_false(self):
-+        """ bool instance variable with a False value. """
-+
-+        self.false_fixture.bool_var = False
-+
-+    def test_bool_get_nonzero(self):
-+        """ bool virtual result with a non-zero value. """
-+
-+        self.assertIs(self.nonzero_fixture.bool_get(), True)
-+
-+    def test_bool_set_nonzero(self):
-+        """ bool function argument with a non-zero value. """
-+
-+        self.nonzero_fixture.bool_set(-1)
-+
-+    def test_bool_var_nonzero(self):
-+        """ bool instance variable with a non-zero value. """
-+
-+        self.nonzero_fixture.bool_var = -1
-+
-+    def test_bool_get_zero(self):
-+        """ bool virtual result with a zero value. """
-+
-+        self.assertIs(self.zero_fixture.bool_get(), False)
-+
-+    def test_bool_set_zero(self):
-+        """ bool function argument with a zero value. """
-+
-+        self.zero_fixture.bool_set(0)
-+
-+    def test_bool_var_zero(self):
-+        """ bool instance variable with a zero value. """
-+
-+        self.zero_fixture.bool_var = 0
-+
-+
-+class TestIntConvertors(unittest.TestCase):
-+    """ This tests the integer convertors with valid values. """
-+
-+    @classmethod
-+    def setUpClass(cls):
-+        """ Set up a test case. """
-+
-+        # Compute the various test values based on the native sizes.
-+        cls.CHAR_LOWER = Test.char_lower()
-+        cls.CHAR_UPPER = Test.char_upper()
-+        cls.SIGNED_CHAR_LOWER, cls.SIGNED_CHAR_UPPER = cls._signed_bounds(
-+                Test.signed_char_sizeof())
-+        cls.SHORT_LOWER, cls.SHORT_UPPER = cls._signed_bounds(
-+                Test.short_sizeof())
-+        cls.INT_LOWER, cls.INT_UPPER = cls._signed_bounds(Test.int_sizeof())
-+        cls.LONG_LOWER, cls.LONG_UPPER = cls._signed_bounds(Test.long_sizeof())
-+        cls.LONG_LONG_LOWER, cls.LONG_LONG_UPPER = cls._signed_bounds(
-+                Test.long_long_sizeof())
-+        cls.UNSIGNED_CHAR_UPPER = cls._unsigned_upper_bound(
-+                Test.unsigned_char_sizeof())
-+        cls.UNSIGNED_SHORT_UPPER = cls._unsigned_upper_bound(
-+                Test.unsigned_short_sizeof())
-+        cls.UNSIGNED_INT_UPPER = cls._unsigned_upper_bound(
-+                Test.unsigned_int_sizeof())
-+        cls.UNSIGNED_LONG_UPPER = cls._unsigned_upper_bound(
-+                Test.unsigned_long_sizeof())
-+        cls.UNSIGNED_LONG_LONG_UPPER = cls._unsigned_upper_bound(
-+                Test.unsigned_long_long_sizeof())
-+
-+    @staticmethod
-+    def _signed_bounds(nrbytes):
-+        """ Return the range of values for a number of bytes representing a
-+        signed value.
-+        """
-+
-+        v = 1 << ((nrbytes * 8) - 1)
-+
-+        return -v, v - 1
-+
-+    @staticmethod
-+    def _unsigned_upper_bound(nrbytes):
-+        """ Return the upper bound for a number of bytes representing an
-+        unsigned value.
-+        """
-+
-+        return (1 << (nrbytes * 8)) - 1
-+
-+
-+class TestInvalidValues(TestIntConvertors):
-+    """ This tests the integer, boolean and enum convertors with invalid
-+    values.
-+    """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.fixture = InvalidFixture()
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        del self.fixture
-+
-+    def test_scoped_get(self):
-+        """ scoped enum virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.scoped_get()
-+            uninstall_hook()
-+
-+    def test_scoped_set(self):
-+        """ scoped enum function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.scoped_set(10)
-+
-+    def test_scoped_var(self):
-+        """ scoped enum instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.scoped_var = 10
-+
-+    def test_named_get(self):
-+        """ named enum virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.named_get()
-+            uninstall_hook()
-+
-+    def test_named_set(self):
-+        """ named enum function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.named_set('0')
-+
-+    def test_named_var(self):
-+        """ named enum instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.named_var = '0'
-+
-+    def test_bool_get(self):
-+        """ bool virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.bool_get()
-+            uninstall_hook()
-+
-+    def test_bool_set(self):
-+        """ bool function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.bool_set('0')
-+
-+    def test_bool_var(self):
-+        """ bool instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.bool_var = '0'
-+
-+    def test_char_get(self):
-+        """ char virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.char_get()
-+            uninstall_hook()
-+
-+    def test_char_set(self):
-+        """ char function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.char_set('0')
-+
-+    def test_char_var(self):
-+        """ char instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.char_var = '0'
-+
-+    def test_signed_char_get(self):
-+        """ signed char virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.signed_char_get()
-+            uninstall_hook()
-+
-+    def test_signed_char_set(self):
-+        """ signed char function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.signed_char_set('0')
-+
-+    def test_signed_char_var(self):
-+        """ signed char instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.signed_char_var = '0'
-+
-+    def test_short_get(self):
-+        """ short virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.short_get()
-+            uninstall_hook()
-+
-+    def test_short_set(self):
-+        """ short function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.short_set('0')
-+
-+    def test_short_var(self):
-+        """ short instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.short_var = '0'
-+
-+    def test_int_get(self):
-+        """ int virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.int_get()
-+            uninstall_hook()
-+
-+    def test_int_set(self):
-+        """ int function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.int_set('0')
-+
-+    def test_int_var(self):
-+        """ int instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.int_var = '0'
-+
-+    def test_long_get(self):
-+        """ long virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.long_get()
-+            uninstall_hook()
-+
-+    def test_long_set(self):
-+        """ long function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.long_set('0')
-+
-+    def test_long_var(self):
-+        """ long instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.long_var = '0'
-+
-+    def test_long_long_get(self):
-+        """ long long virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.long_long_get()
-+            uninstall_hook()
-+
-+    def test_long_long_set(self):
-+        """ long long function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.long_long_set('0')
-+
-+    def test_long_long_var(self):
-+        """ long long instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.long_long_var = '0'
-+
-+    def test_unsigned_char_get(self):
-+        """ unsigned char virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.unsigned_char_get()
-+            uninstall_hook()
-+
-+    def test_unsigned_char_set(self):
-+        """ unsigned char function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_char_set('0')
-+
-+    def test_unsigned_char_var(self):
-+        """ unsigned char instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_char_var = '0'
-+
-+    def test_unsigned_short_get(self):
-+        """ unsigned short virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.unsigned_short_get()
-+            uninstall_hook()
-+
-+    def test_unsigned_short_set(self):
-+        """ unsigned short function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_short_set('0')
-+
-+    def test_unsigned_short_var(self):
-+        """ unsigned short instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_short_var = '0'
-+
-+    def test_unsigned_int_get(self):
-+        """ unsigned int virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.unsigned_int_get()
-+            uninstall_hook()
-+
-+    def test_unsigned_int_set(self):
-+        """ unsigned int function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_int_set('0')
-+
-+    def test_unsigned_int_var(self):
-+        """ unsigned int instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_int_var = '0'
-+
-+    def test_unsigned_long_get(self):
-+        """ unsigned long virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.unsigned_long_get()
-+            uninstall_hook()
-+
-+    def test_unsigned_long_set(self):
-+        """ unsigned long function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_long_set('0')
-+
-+    def test_unsigned_long_var(self):
-+        """ unsigned long instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_long_var = '0'
-+
-+    def test_unsigned_long_long_get(self):
-+        """ unsigned long long virtual result. """
-+
-+        with self.assertRaises(TypeError):
-+            install_hook()
-+            self.fixture.unsigned_long_long_get()
-+            uninstall_hook()
-+
-+    def test_unsigned_long_long_set(self):
-+        """ unsigned long long function argument. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_long_long_set('0')
-+
-+    def test_unsigned_long_long_var(self):
-+        """ unsigned long long instance variable. """
-+
-+        with self.assertRaises(TypeError):
-+            self.fixture.unsigned_long_long_var = '0'
-+
-+
-+class TestValidValues(TestIntConvertors):
-+    """ This tests the integer convertors with valid values. """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.lower_fixture = ValidLowerFixture(self)
-+        self.upper_fixture = ValidUpperFixture(self)
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        del self.lower_fixture
-+        del self.upper_fixture
-+
-+    def test_char_get_lower(self):
-+        """ char virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.char_get(), self.CHAR_LOWER)
-+
-+    def test_char_get_upper(self):
-+        """ char virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.char_get(), self.CHAR_UPPER)
-+
-+    def test_char_set_lower(self):
-+        """ char function argument lower bound. """
-+
-+        self.lower_fixture.char_set(self.CHAR_LOWER)
-+
-+    def test_char_set_upper(self):
-+        """ char function argument upper bound. """
-+
-+        self.upper_fixture.char_set(self.CHAR_UPPER)
-+
-+    def test_char_var_lower(self):
-+        """ char instance variable lower bound. """
-+
-+        self.lower_fixture.char_var = self.CHAR_LOWER
-+
-+    def test_char_var_upper(self):
-+        """ char instance variable upper bound. """
-+
-+        self.upper_fixture.char_var = self.CHAR_UPPER
-+
-+    def test_signed_char_get_lower(self):
-+        """ signed char virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.signed_char_get(),
-+                self.SIGNED_CHAR_LOWER)
-+
-+    def test_signed_char_get_upper(self):
-+        """ signed char virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.signed_char_get(),
-+                self.SIGNED_CHAR_UPPER)
-+
-+    def test_signed_char_set_lower(self):
-+        """ signed char function argument lower bound. """
-+
-+        self.lower_fixture.signed_char_set(self.SIGNED_CHAR_LOWER)
-+
-+    def test_signed_char_set_upper(self):
-+        """ signed char function argument upper bound. """
-+
-+        self.upper_fixture.signed_char_set(self.SIGNED_CHAR_UPPER)
-+
-+    def test_signed_char_var_lower(self):
-+        """ signed char instance variable lower bound. """
-+
-+        self.lower_fixture.signed_char_var = self.SIGNED_CHAR_LOWER
-+
-+    def test_signed_char_var_upper(self):
-+        """ signed char instance variable upper bound. """
-+
-+        self.upper_fixture.signed_char_var = self.SIGNED_CHAR_UPPER
-+
-+    def test_short_get_lower(self):
-+        """ short virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.short_get(), self.SHORT_LOWER)
-+
-+    def test_short_get_upper(self):
-+        """ short virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.short_get(), self.SHORT_UPPER)
-+
-+    def test_short_set_lower(self):
-+        """ short function argument lower bound. """
-+
-+        self.lower_fixture.short_set(self.SHORT_LOWER)
-+
-+    def test_short_set_upper(self):
-+        """ short function argument upper bound. """
-+
-+        self.upper_fixture.short_set(self.SHORT_UPPER)
-+
-+    def test_short_var_lower(self):
-+        """ short instance variable lower bound. """
-+
-+        self.lower_fixture.short_var = self.SHORT_LOWER
-+
-+    def test_short_var_upper(self):
-+        """ short instance variable upper bound. """
-+
-+        self.upper_fixture.short_var = self.SHORT_UPPER
-+
-+    def test_int_get_lower(self):
-+        """ int virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.int_get(), self.INT_LOWER)
-+
-+    def test_int_get_upper(self):
-+        """ int virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.int_get(), self.INT_UPPER)
-+
-+    def test_int_set_lower(self):
-+        """ int function argument lower bound. """
-+
-+        self.lower_fixture.int_set(self.INT_LOWER)
-+
-+    def test_int_set_upper(self):
-+        """ int function argument upper bound. """
-+
-+        self.upper_fixture.int_set(self.INT_UPPER)
-+
-+    def test_int_var_lower(self):
-+        """ int instance variable lower bound. """
-+
-+        self.lower_fixture.int_var = self.INT_LOWER
-+
-+    def test_int_var_upper(self):
-+        """ int instance variable upper bound. """
-+
-+        self.upper_fixture.int_var = self.INT_UPPER
-+
-+    def test_long_get_lower(self):
-+        """ long virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.long_get(), self.LONG_LOWER)
-+
-+    def test_long_get_upper(self):
-+        """ long virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.long_get(), self.LONG_UPPER)
-+
-+    def test_long_set_lower(self):
-+        """ long function argument lower bound. """
-+
-+        self.lower_fixture.long_set(self.LONG_LOWER)
-+
-+    def test_long_set_upper(self):
-+        """ long function argument upper bound. """
-+
-+        self.upper_fixture.long_set(self.LONG_UPPER)
-+
-+    def test_long_var_lower(self):
-+        """ long instance variable lower bound. """
-+
-+        self.lower_fixture.long_var = self.LONG_LOWER
-+
-+    def test_long_var_upper(self):
-+        """ long instance variable upper bound. """
-+
-+        self.upper_fixture.long_var = self.LONG_UPPER
-+
-+    def test_long_long_get_lower(self):
-+        """ long long virtual result lower bound. """
-+
-+        self.assertEqual(self.lower_fixture.long_long_get(),
-+                self.LONG_LONG_LOWER)
-+
-+    def test_long_long_get_upper(self):
-+        """ long long virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.long_long_get(),
-+                self.LONG_LONG_UPPER)
-+
-+    def test_long_long_set_lower(self):
-+        """ long long function argument lower bound. """
-+
-+        self.lower_fixture.long_long_set(self.LONG_LONG_LOWER)
-+
-+    def test_long_long_set_upper(self):
-+        """ long long function argument upper bound. """
-+
-+        self.upper_fixture.long_long_set(self.LONG_LONG_UPPER)
-+
-+    def test_long_long_var_lower(self):
-+        """ long long instance variable lower bound. """
-+
-+        self.lower_fixture.long_long_var = self.LONG_LONG_LOWER
-+
-+    def test_long_long_var_upper(self):
-+        """ long long instance variable upper bound. """
-+
-+        self.upper_fixture.long_long_var = self.LONG_LONG_UPPER
-+
-+    def test_unsigned_char_get_upper(self):
-+        """ unsigned char virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.unsigned_char_get(),
-+                self.UNSIGNED_CHAR_UPPER)
-+
-+    def test_unsigned_char_set_upper(self):
-+        """ unsigned char function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_char_set(self.UNSIGNED_CHAR_UPPER)
-+
-+    def test_unsigned_char_var_upper(self):
-+        """ unsigned char instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_char_var = self.UNSIGNED_CHAR_UPPER
-+
-+    def test_unsigned_short_get_upper(self):
-+        """ unsigned short virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.unsigned_short_get(),
-+                self.UNSIGNED_SHORT_UPPER)
-+
-+    def test_unsigned_short_set_upper(self):
-+        """ unsigned short function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_short_set(self.UNSIGNED_SHORT_UPPER)
-+
-+    def test_unsigned_short_var_upper(self):
-+        """ unsigned short instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_short_var = self.UNSIGNED_SHORT_UPPER
-+
-+    def test_unsigned_int_get_upper(self):
-+        """ unsigned int virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.unsigned_int_get(),
-+                self.UNSIGNED_INT_UPPER)
-+
-+    def test_unsigned_int_set_upper(self):
-+        """ unsigned int function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_int_set(self.UNSIGNED_INT_UPPER)
-+
-+    def test_unsigned_int_var_upper(self):
-+        """ unsigned int instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_int_var = self.UNSIGNED_INT_UPPER
-+
-+    def test_unsigned_long_get_upper(self):
-+        """ unsigned long virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.unsigned_long_get(),
-+                self.UNSIGNED_LONG_UPPER)
-+
-+    def test_unsigned_long_set_upper(self):
-+        """ unsigned long function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_long_set(self.UNSIGNED_LONG_UPPER)
-+
-+    def test_unsigned_long_var_upper(self):
-+        """ unsigned long instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_long_var = self.UNSIGNED_LONG_UPPER
-+
-+    def test_unsigned_long_long_get_upper(self):
-+        """ unsigned long long virtual result upper bound. """
-+
-+        self.assertEqual(self.upper_fixture.unsigned_long_long_get(),
-+                self.UNSIGNED_LONG_LONG_UPPER)
-+
-+    def test_unsigned_long_long_set_upper(self):
-+        """ unsigned long long function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_long_long_set(
-+                self.UNSIGNED_LONG_LONG_UPPER)
-+
-+    def test_unsigned_long_long_var_upper(self):
-+        """ unsigned long long instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_long_long_var = self.UNSIGNED_LONG_LONG_UPPER
-+
-+
-+class TestNoOverflowChecking(TestIntConvertors):
-+    """ This tests the integer convertors with overflowing values with overflow
-+    checking disabled.
-+    """
-+
-+    @staticmethod
-+    def _long_long_is_long():
-+        """ Return True if (unsigned) long long is the same size as (unsigned)
-+        long.
-+        """
-+
-+        return Test.long_long_sizeof() == Test.long_sizeof()
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        self.lower_fixture = OverflowLowerFixture(self)
-+        self.upper_fixture = OverflowUpperFixture(self)
-+
-+        self.was_enabled = enableoverflowchecking(False)
-+
-+    def tearDown(self):
-+        """ Tidy up after a test. """
-+
-+        enableoverflowchecking(self.was_enabled)
-+
-+        del self.lower_fixture
-+        del self.upper_fixture
-+
-+    def test_char_get_lower(self):
-+        """ char virtual result lower bound. """
-+
-+        install_hook()
-+        self.lower_fixture.char_get()
-+        uninstall_hook()
-+
-+    def test_char_get_upper(self):
-+        """ char virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.char_get()
-+        uninstall_hook()
-+
-+    def test_char_set_lower(self):
-+        """ char function argument lower bound. """
-+
-+        self.lower_fixture.char_set(self.CHAR_LOWER - 1)
-+
-+    def test_char_set_upper(self):
-+        """ char function argument upper bound. """
-+
-+        self.upper_fixture.char_set(self.CHAR_UPPER + 1)
-+
-+    def test_char_var_lower(self):
-+        """ char instance variable lower bound. """
-+
-+        self.lower_fixture.char_var = self.CHAR_LOWER - 1
-+
-+    def test_char_var_upper(self):
-+        """ char instance variable upper bound. """
-+
-+        self.upper_fixture.char_var = self.CHAR_UPPER + 1
-+
-+    def test_signed_char_get_lower(self):
-+        """ signed char virtual result lower bound. """
-+
-+        install_hook()
-+        self.lower_fixture.signed_char_get()
-+        uninstall_hook()
-+
-+    def test_signed_char_get_upper(self):
-+        """ signed char virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.signed_char_get()
-+        uninstall_hook()
-+
-+    def test_signed_char_set_lower(self):
-+        """ signed char function argument lower bound. """
-+
-+        self.lower_fixture.signed_char_set(self.SIGNED_CHAR_LOWER - 1)
-+
-+    def test_signed_char_set_upper(self):
-+        """ signed char function argument upper bound. """
-+
-+        self.upper_fixture.signed_char_set(self.SIGNED_CHAR_UPPER + 1)
-+
-+    def test_signed_char_var_lower(self):
-+        """ signed char instance variable lower bound. """
-+
-+        self.lower_fixture.signed_char_var = self.SIGNED_CHAR_LOWER - 1
-+
-+    def test_signed_char_var_upper(self):
-+        """ signed char instance variable upper bound. """
-+
-+        self.upper_fixture.signed_char_var = self.SIGNED_CHAR_UPPER + 1
-+
-+    def test_short_get_lower(self):
-+        """ short virtual result lower bound. """
-+
-+        install_hook()
-+        self.lower_fixture.short_get()
-+        uninstall_hook()
-+
-+    def test_short_get_upper(self):
-+        """ short virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.short_get()
-+        uninstall_hook()
-+
-+    def test_short_set_lower(self):
-+        """ short function argument lower bound. """
-+
-+        self.lower_fixture.short_set(self.SHORT_LOWER - 1)
-+
-+    def test_short_set_upper(self):
-+        """ short function argument upper bound. """
-+
-+        self.upper_fixture.short_set(self.SHORT_UPPER + 1)
-+
-+    def test_short_var_lower(self):
-+        """ short instance variable lower bound. """
-+
-+        self.lower_fixture.short_var = self.SHORT_LOWER - 1
-+
-+    def test_short_var_upper(self):
-+        """ short instance variable upper bound. """
-+
-+        self.upper_fixture.short_var = self.SHORT_UPPER + 1
-+
-+    def test_int_get_lower(self):
-+        """ int virtual result lower bound. """
-+
-+        install_hook()
-+        self.lower_fixture.int_get()
-+        uninstall_hook()
-+
-+    def test_int_get_upper(self):
-+        """ int virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.int_get()
-+        uninstall_hook()
-+
-+    def test_int_set_lower(self):
-+        """ int function argument lower bound. """
-+
-+        self.lower_fixture.int_set(self.INT_LOWER - 1)
-+
-+    def test_int_set_upper(self):
-+        """ int function argument upper bound. """
-+
-+        self.upper_fixture.int_set(self.INT_UPPER + 1)
-+
-+    def test_int_var_lower(self):
-+        """ int instance variable lower bound. """
-+
-+        self.lower_fixture.int_var = self.INT_LOWER - 1
-+
-+    def test_int_var_upper(self):
-+        """ int instance variable upper bound. """
-+
-+        self.upper_fixture.int_var = self.INT_UPPER + 1
-+
-+    def test_long_get_lower(self):
-+        """ long virtual result lower bound. """
-+
-+        install_hook()
-+        self.lower_fixture.long_get()
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                uninstall_hook()
-+        else:
-+            uninstall_hook()
-+
-+    def test_long_get_upper(self):
-+        """ long virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.long_get()
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                uninstall_hook()
-+        else:
-+            uninstall_hook()
-+
-+    def test_long_set_lower(self):
-+        """ long function argument lower bound. """
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                self.lower_fixture.long_set(self.LONG_LOWER - 1)
-+        else:
-+            self.lower_fixture.long_set(self.LONG_LOWER - 1)
-+
-+    def test_long_set_upper(self):
-+        """ long function argument upper bound. """
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                self.upper_fixture.long_set(self.LONG_UPPER + 1)
-+        else:
-+            self.upper_fixture.long_set(self.LONG_UPPER + 1)
-+
-+    def test_long_var_lower(self):
-+        """ long instance variable lower bound. """
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                self.lower_fixture.long_var = self.LONG_LOWER - 1
-+        else:
-+            self.lower_fixture.long_var = self.LONG_LOWER - 1
-+
-+    def test_long_var_upper(self):
-+        """ long instance variable upper bound. """
-+
-+        if self._long_long_is_long():
-+            # To maintain compatibility with older versions of SIP this
-+            # overflows even with overflow checking disabled.
-+            with self.assertRaises(OverflowError):
-+                self.upper_fixture.long_var = self.LONG_UPPER + 1
-+        else:
-+            self.upper_fixture.long_var = self.LONG_UPPER + 1
-+
-+    def test_long_long_get_lower(self):
-+        """ long long virtual result lower bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            install_hook()
-+            self.lower_fixture.long_long_get()
-+            uninstall_hook()
-+
-+    def test_long_long_get_upper(self):
-+        """ long long virtual result upper bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            install_hook()
-+            self.upper_fixture.long_long_get()
-+            uninstall_hook()
-+
-+    def test_long_long_set_lower(self):
-+        """ long long function argument lower bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            self.lower_fixture.long_long_set(self.LONG_LONG_LOWER - 1)
-+
-+    def test_long_long_set_upper(self):
-+        """ long long function argument upper bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            self.upper_fixture.long_long_set(self.LONG_LONG_UPPER + 1)
-+
-+    def test_long_long_var_lower(self):
-+        """ long long instance variable lower bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            self.lower_fixture.long_long_var = self.LONG_LONG_LOWER - 1
-+
-+    def test_long_long_var_upper(self):
-+        """ long long instance variable upper bound. """
-+
-+        # To maintain compatibility with older versions of SIP this overflows
-+        # even with overflow checking disabled.
-+        with self.assertRaises(OverflowError):
-+            self.upper_fixture.long_long_var = self.LONG_LONG_UPPER + 1
-+
-+    def test_unsigned_char_get_upper(self):
-+        """ unsigned char virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.unsigned_char_get()
-+        uninstall_hook()
-+
-+    def test_unsigned_char_set_upper(self):
-+        """ unsigned char function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_char_set(self.UNSIGNED_CHAR_UPPER + 1)
-+
-+    def test_unsigned_char_var_upper(self):
-+        """ unsigned char instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_char_var = self.UNSIGNED_CHAR_UPPER + 1
-+
-+    def test_unsigned_short_get_upper(self):
-+        """ unsigned short virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.unsigned_short_get()
-+        uninstall_hook()
-+
-+    def test_unsigned_short_set_upper(self):
-+        """ unsigned short function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_short_set(self.UNSIGNED_SHORT_UPPER + 1)
-+
-+    def test_unsigned_short_var_upper(self):
-+        """ unsigned short instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_short_var = self.UNSIGNED_SHORT_UPPER + 1
-+
-+    def test_unsigned_int_get_upper(self):
-+        """ unsigned int virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.unsigned_int_get()
-+        uninstall_hook()
-+
-+    def test_unsigned_int_set_upper(self):
-+        """ unsigned int function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_int_set(self.UNSIGNED_INT_UPPER + 1)
-+
-+    def test_unsigned_int_var_upper(self):
-+        """ unsigned int instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_int_var = self.UNSIGNED_INT_UPPER + 1
-+
-+    def test_unsigned_long_get_upper(self):
-+        """ unsigned long virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.unsigned_long_get()
-+        uninstall_hook()
-+
-+    def test_unsigned_long_set_upper(self):
-+        """ unsigned long function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_long_set(self.UNSIGNED_LONG_UPPER + 1)
-+
-+    def test_unsigned_long_var_upper(self):
-+        """ unsigned long instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_long_var = self.UNSIGNED_LONG_UPPER + 1
-+
-+    def test_unsigned_long_long_get_upper(self):
-+        """ unsigned long long virtual result upper bound. """
-+
-+        install_hook()
-+        self.upper_fixture.unsigned_long_long_get()
-+        uninstall_hook()
-+
-+    def test_unsigned_long_long_set_upper(self):
-+        """ unsigned long long function argument upper bound. """
-+
-+        self.upper_fixture.unsigned_long_long_set(
-+                self.UNSIGNED_LONG_LONG_UPPER + 1)
-+
-+    def test_unsigned_long_long_var_upper(self):
-+        """ unsigned long long instance variable upper bound. """
-+
-+        self.upper_fixture.unsigned_long_long_var = self.UNSIGNED_LONG_LONG_UPPER + 1
-+
-+
-+class TestOverflowChecking(TestNoOverflowChecking):
-+    """ This tests the integer convertors with overflowing values with overflow
-+    checking enabled.
-+    """
-+
-+    def setUp(self):
-+        """ Set up a test. """
-+
-+        super().setUp()
-+
-+        enableoverflowchecking(True)
-+
-+    def test_char_get_lower(self):
-+        """ char virtual result lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_get_lower()
-+
-+    def test_char_get_upper(self):
-+        """ char virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_get_upper()
-+
-+    def test_char_set_lower(self):
-+        """ char function argument lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_set_lower()
-+
-+    def test_char_set_upper(self):
-+        """ char function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_set_upper()
-+
-+    def test_char_var_lower(self):
-+        """ char instance variable lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_var_lower()
-+
-+    def test_char_var_upper(self):
-+        """ char instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_char_var_upper()
-+
-+    def test_signed_char_get_lower(self):
-+        """ signed char virtual result lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_get_lower()
-+
-+    def test_signed_char_get_upper(self):
-+        """ signed char virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_get_upper()
-+
-+    def test_signed_char_set_lower(self):
-+        """ signed char function argument lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_set_lower()
-+
-+    def test_signed_char_set_upper(self):
-+        """ signed char function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_set_upper()
-+
-+    def test_signed_char_var_lower(self):
-+        """ signed char instance variable lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_var_lower()
-+
-+    def test_signed_char_var_upper(self):
-+        """ signed char instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_signed_char_var_upper()
-+
-+    def test_short_get_lower(self):
-+        """ short virtual result lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_get_lower()
-+
-+    def test_short_get_upper(self):
-+        """ short virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_get_upper()
-+
-+    def test_short_set_lower(self):
-+        """ short function argument lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_set_lower()
-+
-+    def test_short_set_upper(self):
-+        """ short function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_set_upper()
-+
-+    def test_short_var_lower(self):
-+        """ short instance variable lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_var_lower()
-+
-+    def test_short_var_upper(self):
-+        """ short instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_short_var_upper()
-+
-+    def test_int_get_lower(self):
-+        """ int virtual result lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_get_lower()
-+
-+    def test_int_get_upper(self):
-+        """ int virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_get_upper()
-+
-+    def test_int_set_lower(self):
-+        """ int function argument lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_set_lower()
-+
-+    def test_int_set_upper(self):
-+        """ int function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_set_upper()
-+
-+    def test_int_var_lower(self):
-+        """ int instance variable lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_var_lower()
-+
-+    def test_int_var_upper(self):
-+        """ int instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_int_var_upper()
-+
-+    def test_long_get_lower(self):
-+        """ long virtual result lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            install_hook()
-+            self.lower_fixture.long_get()
-+            uninstall_hook()
-+
-+    def test_long_get_upper(self):
-+        """ long virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            install_hook()
-+            self.upper_fixture.long_get()
-+            uninstall_hook()
-+
-+    def test_long_set_lower(self):
-+        """ long function argument lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            self.lower_fixture.long_set(self.LONG_LOWER - 1)
-+
-+    def test_long_set_upper(self):
-+        """ long function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            self.upper_fixture.long_set(self.LONG_UPPER + 1)
-+
-+    def test_long_var_lower(self):
-+        """ long instance variable lower bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            self.lower_fixture.long_var = self.LONG_LOWER - 1
-+
-+    def test_long_var_upper(self):
-+        """ long instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            self.upper_fixture.long_var = self.LONG_UPPER + 1
-+
-+    def test_long_long_get_lower(self):
-+        """ long long virtual result lower bound. """
-+
-+        super().test_long_long_get_lower()
-+
-+    def test_long_long_get_upper(self):
-+        """ long long virtual result upper bound. """
-+
-+        super().test_long_long_get_upper()
-+
-+    def test_long_long_set_lower(self):
-+        """ long long function argument lower bound. """
-+
-+        super().test_long_long_set_lower()
-+
-+    def test_long_long_set_upper(self):
-+        """ long long function argument upper bound. """
-+
-+        super().test_long_long_set_upper()
-+
-+    def test_long_long_var_lower(self):
-+        """ long long instance variable lower bound. """
-+
-+        super().test_long_long_var_lower()
-+
-+    def test_long_long_var_upper(self):
-+        """ long long instance variable upper bound. """
-+
-+        super().test_long_long_var_upper()
-+
-+    def test_unsigned_char_get_upper(self):
-+        """ unsigned char virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_char_get_upper()
-+
-+    def test_unsigned_char_set_upper(self):
-+        """ unsigned char function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_char_set_upper()
-+
-+    def test_unsigned_char_var_upper(self):
-+        """ unsigned char instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_char_var_upper()
-+
-+    def test_unsigned_short_get_upper(self):
-+        """ unsigned short virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_short_get_upper()
-+
-+    def test_unsigned_short_set_upper(self):
-+        """ unsigned short function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_short_set_upper()
-+
-+    def test_unsigned_short_var_upper(self):
-+        """ unsigned short instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_short_var_upper()
-+
-+    def test_unsigned_int_get_upper(self):
-+        """ unsigned int virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_int_get_upper()
-+
-+    def test_unsigned_int_set_upper(self):
-+        """ unsigned int function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_int_set_upper()
-+
-+    def test_unsigned_int_var_upper(self):
-+        """ unsigned int instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_int_var_upper()
-+
-+    def test_unsigned_long_get_upper(self):
-+        """ unsigned long virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_get_upper()
-+
-+    def test_unsigned_long_set_upper(self):
-+        """ unsigned long function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_set_upper()
-+
-+    def test_unsigned_long_var_upper(self):
-+        """ unsigned long instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_var_upper()
-+
-+    def test_unsigned_long_long_get_upper(self):
-+        """ unsigned long long virtual result upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_long_get_upper()
-+
-+    def test_unsigned_long_long_set_upper(self):
-+        """ unsigned long long function argument upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_long_set_upper()
-+
-+    def test_unsigned_long_long_var_upper(self):
-+        """ unsigned long long instance variable upper bound. """
-+
-+        with self.assertRaises(OverflowError):
-+            super().test_unsigned_long_long_var_upper()
-+
-+
-+if __name__ == '__main__':
-+    unittest.main()
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/test.h sip/test/int_convertors/test.h
---- ./sip-4.19.12.orig/test/int_convertors/test.h	1969-12-31 19:00:00.000000000 -0500
-+++ sip/test/int_convertors/test.h	2018-09-18 17:52:23.315543462 -0400
-@@ -0,0 +1,110 @@
-+#if !defined(_TEST_H)
-+#define _TEST_H
-+
-+#include <limits.h>
-+
-+
-+class Test
-+{
-+public:
-+    enum class Scoped {
-+        scoped = 10
-+    };
-+    Scoped scoped_get() {return scoped_virt();}
-+    virtual Scoped scoped_virt() {return Scoped::scoped;}
-+    static void scoped_set(Scoped) {}
-+    Scoped scoped_var;
-+
-+    enum Named {
-+        named = 10
-+    };
-+    Named named_get() {return named_virt();}
-+    virtual Named named_virt() {return named;}
-+    static void named_set(Named) {}
-+    Named named_var;
-+
-+    enum Named2 {
-+        named2 = 10
-+    };
-+    void named_overload_set(Named2) {named_overload = false;}
-+    void named_overload_set(Named) {named_overload = true;}
-+    bool named_overload;
-+
-+    bool bool_get() {return bool_virt();}
-+    virtual bool bool_virt() {return false;}
-+    static void bool_set(bool) {}
-+    bool bool_var;
-+
-+    static int char_lower() {return CHAR_MIN;}
-+    static int char_upper() {return CHAR_MAX;}
-+    char char_get() {return char_virt();}
-+    virtual char char_virt() {return 0;}
-+    static void char_set(char) {}
-+    char char_var;
-+
-+    static unsigned signed_char_sizeof() {return sizeof (signed char);}
-+    signed char signed_char_get() {return signed_char_virt();}
-+    virtual signed char signed_char_virt() {return 0;}
-+    static void signed_char_set(signed char) {}
-+    signed char signed_char_var;
-+
-+    static unsigned short_sizeof() {return sizeof (short);}
-+    short short_get() {return short_virt();}
-+    virtual short short_virt() {return 0;}
-+    static void short_set(short) {}
-+    short short_var;
-+
-+    static unsigned int_sizeof() {return sizeof (int);}
-+    int int_get() {return int_virt();}
-+    virtual int int_virt() {return 0;}
-+    static void int_set(int) {}
-+    int int_var;
-+
-+    static unsigned long_sizeof() {return sizeof (long);}
-+    long long_get() {return long_virt();}
-+    virtual long long_virt() {return 0;}
-+    static void long_set(long) {}
-+    long long_var;
-+
-+    static unsigned long_long_sizeof() {return sizeof (long long);}
-+    long long long_long_get() {return long_long_virt();}
-+    virtual long long long_long_virt() {return 0;}
-+    static void long_long_set(long long) {}
-+    long long long_long_var;
-+
-+    static unsigned unsigned_char_sizeof() {return sizeof (unsigned char);}
-+    unsigned char unsigned_char_get() {return unsigned_char_virt();}
-+    virtual unsigned char unsigned_char_virt() {return 0;}
-+    static void unsigned_char_set(unsigned char) {}
-+    unsigned char unsigned_char_var;
-+
-+    static unsigned unsigned_short_sizeof() {return sizeof (unsigned short);}
-+    unsigned short unsigned_short_get() {return unsigned_short_virt();}
-+    virtual unsigned short unsigned_short_virt() {return 0;}
-+    static void unsigned_short_set(unsigned short) {}
-+    unsigned short unsigned_short_var;
-+
-+    static unsigned unsigned_int_sizeof() {return sizeof (unsigned int);}
-+    unsigned int unsigned_int_get() {return unsigned_int_virt();}
-+    virtual unsigned int unsigned_int_virt() {return 0;}
-+    static void unsigned_int_set(unsigned int) {}
-+    unsigned int unsigned_int_var;
-+
-+    static unsigned unsigned_long_sizeof() {return sizeof (unsigned long);}
-+    unsigned long unsigned_long_get() {return unsigned_long_virt();}
-+    virtual unsigned long unsigned_long_virt() {return 0;}
-+    static void unsigned_long_set(unsigned long) {}
-+    unsigned long unsigned_long_var;
-+
-+    static unsigned unsigned_long_long_sizeof() {
-+        return sizeof (unsigned long long);
-+    }
-+    unsigned long long unsigned_long_long_get() {
-+        return unsigned_long_long_virt();
-+    }
-+    virtual unsigned long long unsigned_long_long_virt() {return 0;}
-+    static void unsigned_long_long_set(unsigned long long) {}
-+    unsigned long long unsigned_long_long_var;
-+};
-+
-+#endif
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/test.sip sip/test/int_convertors/test.sip
---- ./sip-4.19.12.orig/test/int_convertors/test.sip	1969-12-31 19:00:00.000000000 -0500
-+++ sip/test/int_convertors/test.sip	2018-09-18 17:52:23.315543462 -0400
-@@ -0,0 +1,106 @@
-+%Module(name=test)
-+
-+//%Import QtCore/QtCoremod.sip
-+
-+class Test
-+{
-+%TypeHeaderCode
-+#include "test.h"
-+%End
-+
-+public:
-+    enum class Scoped {
-+        scoped
-+    };
-+    Scoped scoped_get();
-+    virtual Scoped scoped_virt();
-+    static void scoped_set(Scoped);
-+    Scoped scoped_var;
-+
-+    enum Named {
-+        named
-+    };
-+    Named named_get();
-+    virtual Named named_virt();
-+    static void named_set(Named);
-+    Named named_var;
-+
-+    enum Named2 {
-+        named2 = 10
-+    };
-+    void named_overload_set(Named2);
-+    void named_overload_set(Named);
-+    bool named_overload;
-+
-+    bool bool_get();
-+    virtual bool bool_virt();
-+    static void bool_set(bool);
-+    bool bool_var;
-+
-+    static int char_lower();
-+    static int char_upper();
-+    char char_get() /PyInt/;
-+    virtual char char_virt() /PyInt/;
-+    static void char_set(char /PyInt/);
-+    char char_var /PyInt/;
-+
-+    static unsigned signed_char_sizeof();
-+    signed char signed_char_get() /PyInt/;
-+    virtual signed char signed_char_virt() /PyInt/;
-+    static void signed_char_set(signed char /PyInt/);
-+    signed char signed_char_var /PyInt/;
-+
-+    static unsigned short_sizeof();
-+    short short_get();
-+    virtual short short_virt();
-+    static void short_set(short);
-+    short short_var;
-+
-+    static unsigned int_sizeof();
-+    int int_get();
-+    virtual int int_virt();
-+    static void int_set(int);
-+    int int_var;
-+
-+    static unsigned long_sizeof();
-+    long long_get();
-+    virtual long long_virt();
-+    static void long_set(long);
-+    long long_var;
-+
-+    static unsigned long_long_sizeof();
-+    long long long_long_get();
-+    virtual long long long_long_virt();
-+    static void long_long_set(long long);
-+    long long long_long_var;
-+
-+    static unsigned unsigned_char_sizeof();
-+    unsigned char unsigned_char_get() /PyInt/;
-+    virtual unsigned char unsigned_char_virt() /PyInt/;
-+    static void unsigned_char_set(unsigned char /PyInt/);
-+    unsigned char unsigned_char_var /PyInt/;
-+
-+    static unsigned unsigned_short_sizeof();
-+    unsigned short unsigned_short_get();
-+    virtual unsigned short unsigned_short_virt();
-+    static void unsigned_short_set(unsigned short);
-+    unsigned short unsigned_short_var;
-+
-+    static unsigned unsigned_int_sizeof();
-+    unsigned int unsigned_int_get();
-+    virtual unsigned int unsigned_int_virt();
-+    static void unsigned_int_set(unsigned int);
-+    unsigned int unsigned_int_var;
-+
-+    static unsigned unsigned_long_sizeof();
-+    unsigned long unsigned_long_get();
-+    virtual unsigned long unsigned_long_virt();
-+    static void unsigned_long_set(unsigned long);
-+    unsigned long unsigned_long_var;
-+
-+    static unsigned unsigned_long_long_sizeof();
-+    unsigned long long unsigned_long_long_get();
-+    virtual unsigned long long unsigned_long_long_virt();
-+    static void unsigned_long_long_set(unsigned long long);
-+    unsigned long long unsigned_long_long_var;
-+};
diff --git a/meta-oe/recipes-devtools/sip/sip_4.19.12.bb b/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
similarity index 89%
rename from meta-oe/recipes-devtools/sip/sip_4.19.12.bb
rename to meta-oe/recipes-devtools/sip/sip_4.19.13.bb
index be384fd39..09f15d421 100644
--- a/meta-oe/recipes-devtools/sip/sip_4.19.12.bb
+++ b/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
@@ -9,10 +9,9 @@ DEPENDS = "python"
 inherit python-dir pythonnative
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz \
-           file://sip.patch \
           "
-SRC_URI[md5sum] = "e28b0790dfe4962ce6bbd7c4772f40c9"                            
-SRC_URI[sha256sum] = "24617fc31b983df075500ecac0e99d2fb48bf63ba82d4a17518659e571923822" 
+SRC_URI[md5sum] = "9124cb8978742685747a5415179a9890"                           
+SRC_URI[sha256sum] = "e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e"
 
 BBCLASSEXTEND = "native"
 
-- 
2.13.6



More information about the Openembedded-devel mailing list