All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe][PATCH 1/2] sip: Update to 4.19.13.
@ 2018-10-04 16:43 Philip Balister
  2018-10-04 16:43 ` [meta-oe][PATCH 2/2] sip: Add python3 version of the sip recipe Philip Balister
  0 siblings, 1 reply; 2+ messages in thread
From: Philip Balister @ 2018-10-04 16:43 UTC (permalink / raw)
  To: openembedded-devel

 * Deleted patch is in new version.

Signed-off-by: Philip Balister <philip@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[0339dce88c21] <4.19-maint>
--
--2018-06-19  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Clarified the docs for sipSetUserObject().
--	[8077330e3c1b] <4.19-maint>
--
--2018-06-10  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* mk_distinfo.py:
--	Fixed a typo.
--	[e687d71b4cc9] <4.19-maint>
--
--2018-05-29  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed __qualname__ for generated types.
--	[7cf6d49bb422] <4.19-maint>
--
--2018-05-16  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* sphinx/riverbank/static/riverbank.css:
--	More CSS fixes.
--	[e413581ca661] <4.19-maint>
--
--2018-04-05  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* sphinx/riverbank/static/riverbank.css:
--	Fixed the CSS for links in headers.
--	[f125f51ceffb] <4.19-maint>
--
--2018-03-27  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Signal docstrings can now automatically include the signature.
--	[34a94ca0260d] <4.19-maint>
--
--2018-03-02  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* README:
--	Fixed the README.
--	[f07d0788eef0] <4.19-maint>
--
--2018-01-29  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	A significant update to a comment.
--	[f947546822c3] <4.19-maint>
--
--2018-01-16  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a missing quote in the docstring support.
--	[e37301b91a57] <4.19-maint>
--
--2018-01-07  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Updated the docs for /NewThread/.
--	[30c7476904af] <4.19-maint>
--
--2017-11-10  Phil Thompson  <phil@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Build fixes for Python v2.
--	[5b2adad49340] <4.19-maint>
--
--2017-09-18  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Detect recursive imports as an error.
--	[ba19c3f5fb29] <4.19-maint>
--
--2017-07-03  Phil Thompson  <phil@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* .hgignore:
--	Updated .hgignore for the changed build directory.
--	[b2fb251d3500] <4.19-maint>
--
--2017-05-27  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixes for 'char *&' argument types.
--	[684e23c995a3] <4.19-maint>
--
--2017-05-05  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Remove an unnecessary comment.
--	[1f31effbc614] <4.19-maint>
--
--2017-03-03  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a typo in the implementation of sipEnableGC().
--	[c15936fc6007] <4.19-maint>
--
--2017-02-05  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed a couple of missing types.
--	[9737461081da] <4.19-maint>
--
--2017-01-23  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	More fixes for /NoTypeName/ applied to class templates.
--	[8a45855e0d70] <4.19-maint>
--
--2017-01-22  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed sipGetBufferInfo().
--	[1de5c188f98d] <4.19-maint>
--
--2017-01-10  Phil Thompson  <phil@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed the incomplete tidy-up.
--	[69aaa13a1883]
--
--2016-11-21  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed some compiler warnings when building for Python v2.
--	[264793ee3fb0]
--
--2016-10-25  Phil Thompson  <phil@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Refactored the name lookup code.
--	[8bd669cf535f]
--
--2016-09-29  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in, sphinx/c_api.rst:
--	Documented the new Unicode-related functions.
--	[c8408349d43c]
--
--2016-09-05  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* rb-product, rbproduct.py:
--	Replaced the product plugin with a product file.
--	[a10b0caa91a8] <4.18-maint>
--
--2016-06-20  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* rbproduct.py:
--	Tewaks to the product plugin.
--	[b2fd658f11cf] <4.18-maint>
--
--2016-06-15  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* rbproduct.py:
--	Debugged the support for rb-release.
--	[38cdb78872f4] <4.18-maint>
--
--2016-06-13  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin to support rb-release.
--	[ecb166af3ad3] <4.18-maint>
--
--2016-06-10  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin for the latest rbtools changes.
--	[a4a0a84984dc] <4.18-maint>
--
--2016-05-05  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a bug in out-of-source builds.
--	[f9602fd24f17] <4.18-maint>
--
--2016-04-22  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* METADATA.in:
--	Updated the description in the meta-data.
--	[d9eb656132f3]
--
--2016-04-08  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* rbproduct.py:
--	Updated the product plugin.
--	[e42e999389f9]
--
--	* rbproduct.py:
--	Added the rbtools product plugin.
--	[b9ba57967915]
--
--2016-03-30  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	__long__ gets translated to __int__ for Python v3.
--	[a4f8a7810cc3]
--
--2016-03-01  Phil Thompson  <phil@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sip.pyi, sipgen/type_hints.c:
--	Tweaks to the type hint support.
--	[785978d8f7e3]
--
--2016-02-16  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/type_hints.c:
--	PY_TYPE and PY_SLICE aren't actually needed.
--	[9778770c65a5]
--
--2016-02-08  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Minor docs change.
--	[dd03f114259c]
--
--2016-01-17  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y, sphinx/specification_files.rst:
--	Deprecated SIP_SIGNAL.
--	[865e00b6ffa0]
--
--2016-01-15  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the previous fix.
--	[17876e15c41d] <4.17-maint>
--
--2015-11-25  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/using.rst:
--	Fixed a type in the docs.
--	[7d0d2cede024] <4.16-maint>
--
--2015-06-02  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[92c83f02758f] <4.16-maint>
--
--2015-05-24  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fix the declaration of sipRes in the %VirtualCallCode support.
--	[bd92aad3cf7d] <4.16-maint>
--
--2015-03-19  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Added support for module-level PyObjects.
--	[136913548818] <4.16-maint>
--
--2015-02-14  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a couple of compiler warnings.
--	[d653de687fd4] <4.16-maint>
--
--2015-02-04  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* Merged the current 4.16-maint branch into the trunk.
--	[f207b8886557]
--
--2015-01-30  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the lookup of slots.
--	[56c254273cd8] <4.16-maint>
--
--2015-01-05  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* sipgen/metasrc/parser.y:
--	Fixed an invalid deprecation warning.
--	[3c5425fa3c80] <4.16-maint>
--
--2015-01-02  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Updated a deprecated definition of method arguments.
--	[529b8cd2ab89] <4.16-maint>
--
--2014-11-29  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed a regression when adding the VPATH support for moc.
--	[c2c285a80412] <4.16-maint>
--
--2014-11-16  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* build.py:
--	A source package now includes a full ChangeLog.
--	[c005a6d2e53e] <4.16-maint>
--
--2014-11-05  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* build.py:
--	Removed the reference to MacHg in the internal build script.
--	[b1668849c472] <4.16-maint>
--
--2014-10-23  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* siplib/descriptors.c:
--	Minor fix for Python v2.5 and earlier.
--	[3b7f6957ae4b] <4.16-maint>
--
--2014-10-06  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[b5de96615389] <4.16-maint>
--
--2014-09-03  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* build.py, configure.py.in:
--	Added fixes for QTBUG-39300.
--	[53f490fe8f52] <4.16-maint>
--
--2014-07-03  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a regression that introduced some "modern" C code.
--	[449e2866018a] <4.16-maint>
--
--2014-06-16  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixes for Python v2.6.
--	[3974dcb54776] <4.16-maint>
--
--2014-06-01  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* siplib/descriptors.c:
--	Fixed a regression introduced when getting rid of warning messages.
--	[9472e2f08313]
--
--2014-05-23  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a regression in the handling of the --platform configure.py
--	option.
--	[1cc4bd967882]
--
--2014-05-18  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Eliminated a couple of (benign) warning messages.
--	[f6acb8ed7b65]
--
--2014-05-16  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* configure.py.in:
--	Fixed a bug in the handling of configuration files.
--	[61da788f455f]
--
--2014-05-14  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siputils.py:
--	Handle in-line comments in spec files.
--	[044852da62d4]
--
--2014-04-24  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	Fixed the previous fix. (This is C not C++.)
--	[a67e996e00d3]
--
--2014-04-23  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* NEWS, siplib/voidptr.c:
--	Implemented nb_bool for sip.voidptr.
--	[7ca5aa6bde10]
--
--2014-04-21  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/lexer.l, sipgen/parser.y:
--	Merged the v4.15 maintenance branch into the trunk.
--	[8e55c9f2ba87]
--
--2014-04-15  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* sphinx/conf.py.in:
--	Fixed the missing logo thumbnail.
--	[f53a9094e52e] <4.15-maint>
--
--2014-04-08  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the handling of enums for C++11.
--	[85e544458789] <4.15-maint>
--
--2014-03-14  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[8d7c37ddc55d] <4.15-maint>
--
--2014-02-22  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Further fixes for the handling of virtual methods.
--	[14732b487dda] <4.15-maint>
--
--2013-08-23  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[69897cf50dea]
--
--2013-08-13  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Documented sipConvertToArray() and sipConvertToTypedArray().
--	[bf49a3ad5612]
--
--2013-08-05  Phil Thompson  <phil@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@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Clear any exceptions before trying to parse a reimplementation
--	result.
--	[7bebd55f50b2]
--
--2013-07-24  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed a bug in the dereferencing of mixins.
--	[fc3df3e99932]
--
--2013-07-21  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* Merged the v4.14 maintenance branch.
--	[97beee973f94]
--
--2013-06-21  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Fixed the last fix.
--	[67258ffe885a] <4.14-maint>
--
--2013-06-08  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Removed some redundant code generated for a component module.
--	[395bf9f00aa6] <4.14-maint>
--
--2013-03-26  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug when using /Array, Transfer/.
--	[054f1676c300] <4.14-maint>
--
--2013-03-06  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/introduction.rst.in:
--	Documentation updates regarding SIP v5.
--	[03f33e7fdfb1] <4.14-maint>
--
--2013-02-04  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the build system for QtTest in Qt5.
--	[55188026fe6d] <4.14-maint>
--
--2012-12-08  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed the build system for Qt v5-rc1.
--	[44586b952072] <4.14-maint>
--
--2012-11-14  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[214dd6433474]
--
--2012-09-27  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sphinx/annotations.rst:
--	Fixed the incorrect /Factory/ documentation.
--	[3b76a41a1f4a]
--
--2012-09-20  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed the signature for generated virtual error handler functions.
--	[caa74f25dff8]
--
--2012-09-19  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	Fixed a documentation typo.
--	[e1a825c52e33] <4.13-maint>
--
--2012-06-20  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siputils.py:
--	Taught the build system about Qt5's QtGui module.
--	[8d2739f3225f] <4.13-maint>
--
--2012-04-02  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Updated the Unicode support for Python v3.3.
--	[0870e512d8dd] <4.13-maint>
--
--2012-03-04  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Fixed bad pointer bugs in the parsing of exceptions.
--	[1058b2c18309] <4.13-maint>
--
--2012-01-30  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* siplib/siplib.c.in:
--	Properly handle %PickleCode returning NULL.
--	[29ec1c523114] <4.13-maint>
--
--2011-12-17  Phil Thompson  <phil@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS, sipgen/parser.y, sphinx/annotations.rst:
--	Added the /PyName/ typedef annotation.
--	[8c147224120a] <4.13-maint>
--
--2011-11-23  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Updated some code generator comments.
--	[fad4bdca5bbd] <4.13-maint>
--
--2011-11-16  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* sipgen/parser.y:
--	Added support for void template arguments.
--	[1c699c672ed7] <4.13-maint>
--
--2011-10-24  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* build.py:
--	Fixed the build system for MacOS as the development platform.
--	[fdd3cecee60d] <4.12-maint>
--
--2011-05-22  Phil Thompson  <phil@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the news file.
--	[ec9807971e08] <4.12-maint>
--
--2011-03-27  Phil Thompson  <phil@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed /KeepReference/ when used with ctors.
--	[1a5475b48b7c] <4.12-maint>
--
--2011-01-22  Phil Thompson  <phil@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[fa100876a783] <4.12-maint>
--
--2011-01-07  Phil Thompson  <phil@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Fixed some errors in the NEWS file.
--	[44a6a3833477] <4.12-maint>
--
--2010-12-23  Phil Thompson  <phil@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@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@riverbankcomputing.com>
--
--	* sipgen/transform.c:
--	Fixed the inclusion of header files for init extenders.
--	[171d8f4e9f3a]
--
--2010-12-11  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siplib/voidptr.c:
--	sip.voidptr now uses PyLong_AsVoidPtr() for all versions of Python.
--	[3d4ccc59c9c3]
--
--2010-12-09  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[ed3deec59b70] <4.11-maint>
--
--2010-10-09  Phil Thompson  <phil@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@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/c_api.rst:
--	A minor documentation fix.
--	[f6df40935e99] <4.11-maint>
--
--2010-09-24  Phil Thompson  <phil@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@riverbankcomputing.com>
--
--	* siputils.py:
--	Fixed rpaths for Qt v4.7.
--	[4d12df6526e5] <4.11-maint>
--
--2010-09-14  Phil Thompson  <phil@riverbankcomputing.com>
--
--	* siplib/sip.h.in:
--	Ensured that uint is always defined.
--	[b6508f053614] <4.11-maint>
--
--2010-09-06  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[7cff86d70dc7]
--
--2010-08-20  Phil Thompson  <phil@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@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@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@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@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@riverbankcomputing.com>
--
--	* sipgen/gencode.c:
--	Fixed a code generation bug affecting inplace operators.
--	[6cddd9276220]
--
--2010-08-05  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
--
--	* siputils.py:
--	The build system now handles += in spec files properly.
--	[f292793d6c99] <4.10-maint>
--
--2010-05-28  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* sphinx/using.rst:
--	Updated the PyQt example for PyQt4.
--	[275fa5a54910] <4.10-maint>
--
--2010-04-01  Phil Thompson  <phil@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@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@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@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@riverbankcomputing.com>
--
--	* NEWS:
--	Updated the NEWS file.
--	[752ab6580111] <4.10-maint>
--
--2010-02-26  Phil Thompson  <phil@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@riverbankcomputing.com>
-+ * Copyright (c) 2018 Riverbank Computing Limited <info@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
- 
--\f
- 
- #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 */
--\f
- 
- /*-----------------------------------------------.
- | 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
- }
--\f
--
--/* 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@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@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@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@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@.  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



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [meta-oe][PATCH 2/2] sip: Add python3 version of the sip recipe.
  2018-10-04 16:43 [meta-oe][PATCH 1/2] sip: Update to 4.19.13 Philip Balister
@ 2018-10-04 16:43 ` Philip Balister
  0 siblings, 0 replies; 2+ messages in thread
From: Philip Balister @ 2018-10-04 16:43 UTC (permalink / raw)
  To: openembedded-devel

Signed-off-by: Philip Balister <philip@balister.org>
---
 meta-oe/recipes-devtools/sip/sip.inc         | 36 ++++++++++++++++++++++++++++
 meta-oe/recipes-devtools/sip/sip3_4.19.13.bb | 11 +++++++++
 meta-oe/recipes-devtools/sip/sip_4.19.13.bb  | 36 ++--------------------------
 3 files changed, 49 insertions(+), 34 deletions(-)
 create mode 100644 meta-oe/recipes-devtools/sip/sip.inc
 create mode 100644 meta-oe/recipes-devtools/sip/sip3_4.19.13.bb

diff --git a/meta-oe/recipes-devtools/sip/sip.inc b/meta-oe/recipes-devtools/sip/sip.inc
new file mode 100644
index 000000000..d0795454e
--- /dev/null
+++ b/meta-oe/recipes-devtools/sip/sip.inc
@@ -0,0 +1,36 @@
+SUMMARY = "SIP is a C++/Python Wrapper Generator"
+HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
+SECTION = "devel"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz \
+          "
+SRC_URI[md5sum] = "9124cb8978742685747a5415179a9890"                           
+SRC_URI[sha256sum] = "e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e"
+
+S = "${WORKDIR}/sip-${PV}"
+
+BBCLASSEXTEND = "native"
+
+do_configure_prepend_class-target() {
+    echo "py_platform = linux" > sip.cfg
+    echo "py_inc_dir = %(sysroot)/${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
+    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
+    echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
+    ${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot ${STAGING_DIR_HOST} CC="${CC}" CXX="${CXX}" LINK="${CXX}" STRIP="" LINK_SHLIB="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LFLAGS="${LDFLAGS}"
+}
+do_configure_prepend_class-native() {
+    echo "py_platform = linux" > sip.cfg
+    echo "py_inc_dir = ${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
+    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
+    echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
+    ${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot=${STAGING_DIR_NATIVE}
+}
+do_install() {
+    oe_runmake install
+}
diff --git a/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb b/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
new file mode 100644
index 000000000..dc15bc2e2
--- /dev/null
+++ b/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
@@ -0,0 +1,11 @@
+require sip.inc
+
+DEPENDS = "python3"
+
+inherit python3-dir python3native
+
+PACKAGES += "python3-sip3"
+
+FILES_python3-sip3 = "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/.debug"
+
diff --git a/meta-oe/recipes-devtools/sip/sip_4.19.13.bb b/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
index 09f15d421..3da15b842 100644
--- a/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
+++ b/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
@@ -1,43 +1,11 @@
-SUMMARY = "SIP is a C++/Python Wrapper Generator"
-HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
-SECTION = "devel"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
+require sip.inc
 
 DEPENDS = "python"
 
 inherit python-dir pythonnative
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz \
-          "
-SRC_URI[md5sum] = "9124cb8978742685747a5415179a9890"                           
-SRC_URI[sha256sum] = "e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e"
-
-BBCLASSEXTEND = "native"
-
 PACKAGES += "python-sip"
 
-do_configure_prepend_class-target() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = %(sysroot)/${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot ${STAGING_DIR_HOST} CC="${CC}" CXX="${CXX}" LINK="${CXX}" STRIP="" LINK_SHLIB="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LFLAGS="${LDFLAGS}"
-}
-do_configure_prepend_class-native() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = ${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot=${STAGING_DIR_NATIVE}
-}
-do_install() {
-    oe_runmake install
-}
-
 FILES_python-sip = "${libdir}/${PYTHON_DIR}/site-packages/"
 FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
+
-- 
2.13.6



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-10-04 16:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-04 16:43 [meta-oe][PATCH 1/2] sip: Update to 4.19.13 Philip Balister
2018-10-04 16:43 ` [meta-oe][PATCH 2/2] sip: Add python3 version of the sip recipe Philip Balister

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.