aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Balister <philip@balister.org>2018-10-04 12:43:22 -0400
committerKhem Raj <raj.khem@gmail.com>2018-10-04 16:07:55 -0700
commit0597b5c0bac2eac2849a0ced741de0b1f1b39b01 (patch)
treeb3230791c77454e8792b85b52eb8a9c9c1b42826
parentf7b8505c448237eeabd7b6b5a8a1bef8d2b3a85b (diff)
downloadmeta-openembedded-0597b5c0bac2eac2849a0ced741de0b1f1b39b01.tar.gz
sip: Update to 4.19.13.
* Deleted patch is in new version. Signed-off-by: Philip Balister <philip@balister.org> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-oe/recipes-devtools/sip/files/sip.patch31331
-rw-r--r--meta-oe/recipes-devtools/sip/sip_4.19.13.bb (renamed from meta-oe/recipes-devtools/sip/sip_4.19.12.bb)5
2 files changed, 2 insertions, 31334 deletions
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 c126beee75..0000000000
--- 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
-
--
-
- #if YYERROR_VERBOSE
-
-@@ -2495,15 +2216,8 @@
- # define yystrlen strlen
- # else
- /* Return the length of YYSTR. */
--#if (defined __STDC__ || defined __C99__FUNC__ \
-- || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
- yystrlen (const char *yystr)
--#else
--static YYSIZE_T
--yystrlen (yystr)
-- const char *yystr;
--#endif
- {
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
-@@ -2519,16 +2233,8 @@
- # else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
--#if (defined __STDC__ || defined __C99__FUNC__ \
-- || defined __cplusplus || defined _MSC_VER)
- static char *
- yystpcpy (char *yydest, const char *yysrc)
--#else
--static char *
--yystpcpy (yydest, yysrc)
-- char *yydest;
-- const char *yysrc;
--#endif
- {
- char *yyd = yydest;
- const char *yys = yysrc;
-@@ -2558,27 +2264,27 @@
- char const *yyp = yystr;
-
- for (;;)
-- switch (*++yyp)
-- {
-- case '\'':
-- case ',':
-- goto do_not_strip_quotes;
-+ switch (*++yyp)
-+ {
-+ case '\'':
-+ case ',':
-+ goto do_not_strip_quotes;
-
-- case '\\':
-- if (*++yyp != '\\')
-- goto do_not_strip_quotes;
-- /* Fall through. */
-- default:
-- if (yyres)
-- yyres[yyn] = *yyp;
-- yyn++;
-- break;
-+ case '\\':
-+ if (*++yyp != '\\')
-+ goto do_not_strip_quotes;
-+ /* Fall through. */
-+ default:
-+ if (yyres)
-+ yyres[yyn] = *yyp;
-+ yyn++;
-+ break;
-
-- case '"':
-- if (yyres)
-- yyres[yyn] = '\0';
-- return yyn;
-- }
-+ case '"':
-+ if (yyres)
-+ yyres[yyn] = '\0';
-+ return yyn;
-+ }
- do_not_strip_quotes: ;
- }
-
-@@ -2589,211 +2295,209 @@
- }
- # endif
-
--/* Copy into YYRESULT an error message about the unexpected token
-- YYCHAR while in state YYSTATE. Return the number of bytes copied,
-- including the terminating null byte. If YYRESULT is null, do not
-- copy anything; just return the number of bytes that would be
-- copied. As a special case, return 0 if an ordinary "syntax error"
-- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
-- size calculation. */
--static YYSIZE_T
--yysyntax_error (char *yyresult, int yystate, int yychar)
-+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-+ about the unexpected token YYTOKEN for the state stack whose top is
-+ YYSSP.
-+
-+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
-+ not large enough to hold the message. In that case, also set
-+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
-+ required number of bytes is too large to store. */
-+static int
-+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-+ yytype_int16 *yyssp, int yytoken)
- {
-- int yyn = yypact[yystate];
-+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-+ YYSIZE_T yysize = yysize0;
-+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+ /* Internationalized format string. */
-+ const char *yyformat = YY_NULLPTR;
-+ /* Arguments of yyformat. */
-+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+ /* Number of reported tokens (one for the "unexpected", one per
-+ "expected"). */
-+ int yycount = 0;
-
-- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-- return 0;
-- else
-+ /* There are many possibilities here to consider:
-+ - If this state is a consistent state with a default action, then
-+ the only way this function was invoked is if the default action
-+ is an error action. In that case, don't check for expected
-+ tokens because there are none.
-+ - The only way there can be no lookahead present (in yychar) is if
-+ this state is a consistent state with a default action. Thus,
-+ detecting the absence of a lookahead is sufficient to determine
-+ that there is no unexpected or expected token to report. In that
-+ case, just report a simple "syntax error".
-+ - Don't assume there isn't a lookahead just because this state is a
-+ consistent state with a default action. There might have been a
-+ previous inconsistent state, consistent state with a non-default
-+ action, or user semantic action that manipulated yychar.
-+ - Of course, the expected token list depends on states to have
-+ correct lookahead information, and it depends on the parser not
-+ to perform extra reductions after fetching a lookahead from the
-+ scanner and before detecting a syntax error. Thus, state merging
-+ (from LALR or IELR) and default reductions corrupt the expected
-+ token list. However, the list is correct for canonical LR with
-+ one exception: it will still contain any token that will not be
-+ accepted due to an error action in a later state.
-+ */
-+ if (yytoken != YYEMPTY)
- {
-- int yytype = YYTRANSLATE (yychar);
-- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-- YYSIZE_T yysize = yysize0;
-- YYSIZE_T yysize1;
-- int yysize_overflow = 0;
-- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-- int yyx;
--
--# if 0
-- /* This is so xgettext sees the translatable formats that are
-- constructed on the fly. */
-- YY_("syntax error, unexpected %s");
-- YY_("syntax error, unexpected %s, expecting %s");
-- YY_("syntax error, unexpected %s, expecting %s or %s");
-- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
--# endif
-- char *yyfmt;
-- char const *yyf;
-- static char const yyunexpected[] = "syntax error, unexpected %s";
-- static char const yyexpecting[] = ", expecting %s";
-- static char const yyor[] = " or %s";
-- char yyformat[sizeof yyunexpected
-- + sizeof yyexpecting - 1
-- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-- * (sizeof yyor - 1))];
-- char const *yyprefix = yyexpecting;
--
-- /* Start YYX at -YYN if negative to avoid negative indexes in
-- YYCHECK. */
-- int yyxbegin = yyn < 0 ? -yyn : 0;
--
-- /* Stay within bounds of both yycheck and yytname. */
-- int yychecklim = YYLAST - yyn + 1;
-- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-- int yycount = 1;
--
-- yyarg[0] = yytname[yytype];
-- yyfmt = yystpcpy (yyformat, yyunexpected);
-+ int yyn = yypact[*yyssp];
-+ yyarg[yycount++] = yytname[yytoken];
-+ if (!yypact_value_is_default (yyn))
-+ {
-+ /* Start YYX at -YYN if negative to avoid negative indexes in
-+ YYCHECK. In other words, skip the first -YYN actions for
-+ this state because they are default actions. */
-+ int yyxbegin = yyn < 0 ? -yyn : 0;
-+ /* Stay within bounds of both yycheck and yytname. */
-+ int yychecklim = YYLAST - yyn + 1;
-+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+ int yyx;
-
-- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-- {
-- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-- {
-- yycount = 1;
-- yysize = yysize0;
-- yyformat[sizeof yyunexpected - 1] = '\0';
-- break;
-- }
-- yyarg[yycount++] = yytname[yyx];
-- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-- yysize_overflow |= (yysize1 < yysize);
-- yysize = yysize1;
-- yyfmt = yystpcpy (yyfmt, yyprefix);
-- yyprefix = yyor;
-- }
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-+ && !yytable_value_is_error (yytable[yyx + yyn]))
-+ {
-+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+ {
-+ yycount = 1;
-+ yysize = yysize0;
-+ break;
-+ }
-+ yyarg[yycount++] = yytname[yyx];
-+ {
-+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-+ if (! (yysize <= yysize1
-+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+ return 2;
-+ yysize = yysize1;
-+ }
-+ }
-+ }
-+ }
-
-- yyf = YY_(yyformat);
-- yysize1 = yysize + yystrlen (yyf);
-- yysize_overflow |= (yysize1 < yysize);
-- yysize = yysize1;
-+ switch (yycount)
-+ {
-+# define YYCASE_(N, S) \
-+ case N: \
-+ yyformat = S; \
-+ break
-+ YYCASE_(0, YY_("syntax error"));
-+ YYCASE_(1, YY_("syntax error, unexpected %s"));
-+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-+# undef YYCASE_
-+ }
-
-- if (yysize_overflow)
-- return YYSIZE_MAXIMUM;
-+ {
-+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+ return 2;
-+ yysize = yysize1;
-+ }
-
-- if (yyresult)
-- {
-- /* Avoid sprintf, as that infringes on the user's name space.
-- Don't have undefined behavior even if the translation
-- produced a string with the wrong number of "%s"s. */
-- char *yyp = yyresult;
-- int yyi = 0;
-- while ((*yyp = *yyf) != '\0')
-- {
-- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-- {
-- yyp += yytnamerr (yyp, yyarg[yyi++]);
-- yyf += 2;
-- }
-- else
-- {
-- yyp++;
-- yyf++;
-- }
-- }
-- }
-- return yysize;
-+ if (*yymsg_alloc < yysize)
-+ {
-+ *yymsg_alloc = 2 * yysize;
-+ if (! (yysize <= *yymsg_alloc
-+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-+ return 1;
- }
-+
-+ /* Avoid sprintf, as that infringes on the user's name space.
-+ Don't have undefined behavior even if the translation
-+ produced a string with the wrong number of "%s"s. */
-+ {
-+ char *yyp = *yymsg;
-+ int yyi = 0;
-+ while ((*yyp = *yyformat) != '\0')
-+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-+ {
-+ yyp += yytnamerr (yyp, yyarg[yyi++]);
-+ yyformat += 2;
-+ }
-+ else
-+ {
-+ yyp++;
-+ yyformat++;
-+ }
-+ }
-+ return 0;
- }
- #endif /* YYERROR_VERBOSE */
--
-
- /*-----------------------------------------------.
- | Release the memory associated to this symbol. |
- `-----------------------------------------------*/
-
--/*ARGSUSED*/
--#if (defined __STDC__ || defined __C99__FUNC__ \
-- || defined __cplusplus || defined _MSC_VER)
- static void
- yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yydestruct (yymsg, yytype, yyvaluep)
-- const char *yymsg;
-- int yytype;
-- YYSTYPE *yyvaluep;
--#endif
- {
- YYUSE (yyvaluep);
--
- if (!yymsg)
- yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-- switch (yytype)
-- {
--
-- default:
-- break;
-- }
-+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-+ YYUSE (yytype);
-+ YY_IGNORE_MAYBE_UNINITIALIZED_END
- }
--
--
--/* Prevent warnings from -Wmissing-prototypes. */
-
--#ifdef YYPARSE_PARAM
--#if defined __STDC__ || defined __cplusplus
--int yyparse (void *YYPARSE_PARAM);
--#else
--int yyparse ();
--#endif
--#else /* ! YYPARSE_PARAM */
--#if defined __STDC__ || defined __cplusplus
--int yyparse (void);
--#else
--int yyparse ();
--#endif
--#endif /* ! YYPARSE_PARAM */
-
-
-
--/* The look-ahead symbol. */
-+/* The lookahead symbol. */
- int yychar;
-
--/* The semantic value of the look-ahead symbol. */
-+/* The semantic value of the lookahead symbol. */
- YYSTYPE yylval;
--
- /* Number of syntax errors so far. */
- int yynerrs;
-
-
--
- /*----------.
- | yyparse. |
- `----------*/
-
--#ifdef YYPARSE_PARAM
--#if (defined __STDC__ || defined __C99__FUNC__ \
-- || defined __cplusplus || defined _MSC_VER)
--int
--yyparse (void *YYPARSE_PARAM)
--#else
--int
--yyparse (YYPARSE_PARAM)
-- void *YYPARSE_PARAM;
--#endif
--#else /* ! YYPARSE_PARAM */
--#if (defined __STDC__ || defined __C99__FUNC__ \
-- || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
--#else
--int
--yyparse ()
--
--#endif
--#endif
- {
--
-- int yystate;
-+ int yystate;
-+ /* Number of tokens to shift before error messages enabled. */
-+ int yyerrstatus;
-+
-+ /* The stacks and their tools:
-+ 'yyss': related to states.
-+ 'yyvs': related to semantic values.
-+
-+ Refer to the stacks through separate pointers, to allow yyoverflow
-+ to reallocate them elsewhere. */
-+
-+ /* The state stack. */
-+ yytype_int16 yyssa[YYINITDEPTH];
-+ yytype_int16 *yyss;
-+ yytype_int16 *yyssp;
-+
-+ /* The semantic value stack. */
-+ YYSTYPE yyvsa[YYINITDEPTH];
-+ YYSTYPE *yyvs;
-+ YYSTYPE *yyvsp;
-+
-+ YYSIZE_T yystacksize;
-+
- int yyn;
- int yyresult;
-- /* Number of tokens to shift before error messages enabled. */
-- int yyerrstatus;
-- /* Look-ahead token as an internal (translated) token number. */
-+ /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
-+ /* The variables used to return semantic value and location from the
-+ action routines. */
-+ YYSTYPE yyval;
-+
- #if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
-@@ -2801,54 +2505,22 @@
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
- #endif
-
-- /* Three stacks and their tools:
-- `yyss': related to states,
-- `yyvs': related to semantic values,
-- `yyls': related to locations.
--
-- Refer to the stacks thru separate pointers, to allow yyoverflow
-- to reallocate them elsewhere. */
--
-- /* The state stack. */
-- yytype_int16 yyssa[YYINITDEPTH];
-- yytype_int16 *yyss = yyssa;
-- yytype_int16 *yyssp;
--
-- /* The semantic value stack. */
-- YYSTYPE yyvsa[YYINITDEPTH];
-- YYSTYPE *yyvs = yyvsa;
-- YYSTYPE *yyvsp;
--
--
--
- #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
-
-- YYSIZE_T yystacksize = YYINITDEPTH;
--
-- /* The variables used to return semantic value and location from the
-- action routines. */
-- YYSTYPE yyval;
--
--
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;
-
-+ yyssp = yyss = yyssa;
-+ yyvsp = yyvs = yyvsa;
-+ yystacksize = YYINITDEPTH;
-+
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
-- yychar = YYEMPTY; /* Cause a token to be read. */
--
-- /* Initialize stack pointers.
-- Waste one element of value and location stack
-- so that they stay on the same level as the state stack.
-- The wasted elements are never initialized. */
--
-- yyssp = yyss;
-- yyvsp = yyvs;
--
-+ yychar = YYEMPTY; /* Cause a token to be read. */
- goto yysetstate;
-
- /*------------------------------------------------------------.
-@@ -2869,25 +2541,23 @@
-
- #ifdef yyoverflow
- {
-- /* Give user a chance to reallocate the stack. Use copies of
-- these so that the &'s don't force the real ones into
-- memory. */
-- YYSTYPE *yyvs1 = yyvs;
-- yytype_int16 *yyss1 = yyss;
--
--
-- /* Each stack pointer address is followed by the size of the
-- data in use in that stack, in bytes. This used to be a
-- conditional around just the two extra args, but that might
-- be undefined if yyoverflow is a macro. */
-- yyoverflow (YY_("memory exhausted"),
-- &yyss1, yysize * sizeof (*yyssp),
-- &yyvs1, yysize * sizeof (*yyvsp),
-+ /* Give user a chance to reallocate the stack. Use copies of
-+ these so that the &'s don't force the real ones into
-+ memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ yytype_int16 *yyss1 = yyss;
-
-- &yystacksize);
-+ /* Each stack pointer address is followed by the size of the
-+ data in use in that stack, in bytes. This used to be a
-+ conditional around just the two extra args, but that might
-+ be undefined if yyoverflow is a macro. */
-+ yyoverflow (YY_("memory exhausted"),
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+ &yystacksize);
-
-- yyss = yyss1;
-- yyvs = yyvs1;
-+ yyss = yyss1;
-+ yyvs = yyvs1;
- }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
-@@ -2895,23 +2565,22 @@
- # else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
-- goto yyexhaustedlab;
-+ goto yyexhaustedlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
-- yystacksize = YYMAXDEPTH;
-+ yystacksize = YYMAXDEPTH;
-
- {
-- yytype_int16 *yyss1 = yyss;
-- union yyalloc *yyptr =
-- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-- if (! yyptr)
-- goto yyexhaustedlab;
-- YYSTACK_RELOCATE (yyss);
-- YYSTACK_RELOCATE (yyvs);
--
-+ yytype_int16 *yyss1 = yyss;
-+ union yyalloc *yyptr =
-+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+ if (! yyptr)
-+ goto yyexhaustedlab;
-+ YYSTACK_RELOCATE (yyss_alloc, yyss);
-+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
- # undef YYSTACK_RELOCATE
-- if (yyss1 != yyssa)
-- YYSTACK_FREE (yyss1);
-+ if (yyss1 != yyssa)
-+ YYSTACK_FREE (yyss1);
- }
- # endif
- #endif /* no yyoverflow */
-@@ -2919,16 +2588,18 @@
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-
--
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-- (unsigned long int) yystacksize));
-+ (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
-- YYABORT;
-+ YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
-+ if (yystate == YYFINAL)
-+ YYACCEPT;
-+
- goto yybackup;
-
- /*-----------.
-@@ -2937,20 +2608,20 @@
- yybackup:
-
- /* Do appropriate processing given the current state. Read a
-- look-ahead token if we need one and don't already have one. */
-+ lookahead token if we need one and don't already have one. */
-
-- /* First try to decide what to do without reference to look-ahead token. */
-+ /* First try to decide what to do without reference to lookahead token. */
- yyn = yypact[yystate];
-- if (yyn == YYPACT_NINF)
-+ if (yypact_value_is_default (yyn))
- goto yydefault;
-
-- /* Not known => get a look-ahead token if don't already have one. */
-+ /* Not known => get a lookahead token if don't already have one. */
-
-- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
-+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
-- yychar = YYLEX;
-+ yychar = yylex ();
- }
-
- if (yychar <= YYEOF)
-@@ -2972,29 +2643,27 @@
- yyn = yytable[yyn];
- if (yyn <= 0)
- {
-- if (yyn == 0 || yyn == YYTABLE_NINF)
-- goto yyerrlab;
-+ if (yytable_value_is_error (yyn))
-+ goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
-- if (yyn == YYFINAL)
-- YYACCEPT;
--
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
-- /* Shift the look-ahead token. */
-+ /* Shift the lookahead token. */
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-- /* Discard the shifted token unless it is eof. */
-- if (yychar != YYEOF)
-- yychar = YYEMPTY;
-+ /* Discard the shifted token. */
-+ yychar = YYEMPTY;
-
- yystate = yyn;
-+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
-+ YY_IGNORE_MAYBE_UNINITIALIZED_END
-
- goto yynewstate;
-
-@@ -3017,7 +2686,7 @@
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
-- `$$ = $1'.
-+ '$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
-@@ -3031,7 +2700,7 @@
- switch (yyn)
- {
- case 4:
--#line 580 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 580 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /*
- * We don't do these in parserEOF() because the parser is reading
-@@ -3049,10 +2718,11 @@
- previousFile = NULL;
- }
- }
-+#line 2722 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 55:
--#line 650 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 650 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3061,151 +2731,167 @@
- if (scope == NULL)
- yyerror("%TypeHeaderCode can only be used in a namespace, class or mapped type");
-
-- appendCodeBlock(&scope->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->iff->hdrcode, (yyvsp[0].codeb));
- }
- }
-+#line 2738 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 56:
--#line 663 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 663 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- currentModule->defdocstringfmt = convertFormat((yyvsp[(2) - (2)].defdocstringfmt).name);
-+ currentModule->defdocstringfmt = convertFormat((yyvsp[0].defdocstringfmt).name);
- }
-+#line 2747 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 57:
--#line 669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.defdocstringfmt).name = (yyvsp[(1) - (1)].text);
-+ (yyval.defdocstringfmt).name = (yyvsp[0].text);
- }
-+#line 2757 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 58:
--#line 674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defdocstringfmt) = (yyvsp[(2) - (3)].defdocstringfmt);
-+ (yyval.defdocstringfmt) = (yyvsp[-1].defdocstringfmt);
- }
-+#line 2765 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 60:
--#line 680 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 680 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defdocstringfmt) = (yyvsp[(1) - (3)].defdocstringfmt);
-+ (yyval.defdocstringfmt) = (yyvsp[-2].defdocstringfmt);
-
-- switch ((yyvsp[(3) - (3)].defdocstringfmt).token)
-+ switch ((yyvsp[0].defdocstringfmt).token)
- {
-- case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].defdocstringfmt).name; break;
-+ case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[0].defdocstringfmt).name; break;
- }
- }
-+#line 2778 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 61:
--#line 690 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 690 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.defdocstringfmt).token = TK_NAME;
-
-- (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].text);
-+ (yyval.defdocstringfmt).name = (yyvsp[0].text);
- }
-+#line 2788 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 62:
--#line 697 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 697 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- currentModule->defdocstringsig = convertSignature((yyvsp[(2) - (2)].defdocstringsig).name);
-+ currentModule->defdocstringsig = convertSignature((yyvsp[0].defdocstringsig).name);
- }
-+#line 2797 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 63:
--#line 703 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 703 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.defdocstringsig).name = (yyvsp[(1) - (1)].text);
-+ (yyval.defdocstringsig).name = (yyvsp[0].text);
- }
-+#line 2807 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 64:
--#line 708 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 708 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defdocstringsig) = (yyvsp[(2) - (3)].defdocstringsig);
-+ (yyval.defdocstringsig) = (yyvsp[-1].defdocstringsig);
- }
-+#line 2815 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 66:
--#line 714 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 714 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defdocstringsig) = (yyvsp[(1) - (3)].defdocstringsig);
-+ (yyval.defdocstringsig) = (yyvsp[-2].defdocstringsig);
-
-- switch ((yyvsp[(3) - (3)].defdocstringsig).token)
-+ switch ((yyvsp[0].defdocstringsig).token)
- {
-- case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].defdocstringsig).name; break;
-+ case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[0].defdocstringsig).name; break;
- }
- }
-+#line 2828 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 67:
--#line 724 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 724 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.defdocstringsig).token = TK_NAME;
-
-- (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].text);
-+ (yyval.defdocstringsig).name = (yyvsp[0].text);
- }
-+#line 2838 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 68:
--#line 731 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 731 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-- if ((currentModule->encoding = convertEncoding((yyvsp[(2) - (2)].defencoding).name)) == no_type)
-+ if ((currentModule->encoding = convertEncoding((yyvsp[0].defencoding).name)) == no_type)
- yyerror("The %DefaultEncoding name must be one of \"ASCII\", \"Latin-1\", \"UTF-8\" or \"None\"");
- }
- }
-+#line 2850 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 69:
--#line 740 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 740 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.defencoding).name = (yyvsp[(1) - (1)].text);
-+ (yyval.defencoding).name = (yyvsp[0].text);
- }
-+#line 2860 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 70:
--#line 745 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 745 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defencoding) = (yyvsp[(2) - (3)].defencoding);
-+ (yyval.defencoding) = (yyvsp[-1].defencoding);
- }
-+#line 2868 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 72:
--#line 751 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 751 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defencoding) = (yyvsp[(1) - (3)].defencoding);
-+ (yyval.defencoding) = (yyvsp[-2].defencoding);
-
-- switch ((yyvsp[(3) - (3)].defencoding).token)
-+ switch ((yyvsp[0].defencoding).token)
- {
-- case TK_NAME: (yyval.defencoding).name = (yyvsp[(3) - (3)].defencoding).name; break;
-+ case TK_NAME: (yyval.defencoding).name = (yyvsp[0].defencoding).name; break;
- }
- }
-+#line 2881 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 73:
--#line 761 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 761 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.defencoding).token = TK_NAME;
-
-- (yyval.defencoding).name = (yyvsp[(3) - (3)].text);
-+ (yyval.defencoding).name = (yyvsp[0].text);
- }
-+#line 2891 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 74:
--#line 768 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 768 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /*
- * Note that %Plugin is internal in SIP v4. The current thinking
-@@ -3213,51 +2899,56 @@
- */
-
- if (notSkipping())
-- appendString(&currentSpec->plugins, (yyvsp[(2) - (2)].plugin).name);
-+ appendString(&currentSpec->plugins, (yyvsp[0].plugin).name);
- }
-+#line 2905 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 75:
--#line 779 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 779 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.plugin).name = (yyvsp[(1) - (1)].text);
-+ (yyval.plugin).name = (yyvsp[0].text);
- }
-+#line 2915 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 76:
--#line 784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.plugin) = (yyvsp[(2) - (3)].plugin);
-+ (yyval.plugin) = (yyvsp[-1].plugin);
- }
-+#line 2923 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 78:
--#line 790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.plugin) = (yyvsp[(1) - (3)].plugin);
-+ (yyval.plugin) = (yyvsp[-2].plugin);
-
-- switch ((yyvsp[(3) - (3)].plugin).token)
-+ switch ((yyvsp[0].plugin).token)
- {
-- case TK_NAME: (yyval.plugin).name = (yyvsp[(3) - (3)].plugin).name; break;
-+ case TK_NAME: (yyval.plugin).name = (yyvsp[0].plugin).name; break;
- }
- }
-+#line 2936 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 79:
--#line 800 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 800 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.plugin).token = TK_NAME;
-
-- (yyval.plugin).name = (yyvsp[(3) - (3)].text);
-+ (yyval.plugin).name = (yyvsp[0].text);
- }
-+#line 2946 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 80:
--#line 807 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 807 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (3)].veh).name == NULL)
-+ if ((yyvsp[-1].veh).name == NULL)
- yyerror("%VirtualErrorHandler must have a 'name' argument");
-
- if (notSkipping())
-@@ -3266,7 +2957,7 @@
-
- /* Check there isn't already a handler with the same name. */
- for (tailp = &currentSpec->errorhandlers; (veh = *tailp) != NULL; tailp = &veh->next)
-- if (strcmp(veh->name, (yyvsp[(2) - (3)].veh).name) == 0)
-+ if (strcmp(veh->name, (yyvsp[-1].veh).name) == 0)
- break;
-
- if (veh != NULL)
-@@ -3274,8 +2965,8 @@
-
- veh = sipMalloc(sizeof (virtErrorHandler));
-
-- veh->name = (yyvsp[(2) - (3)].veh).name;
-- appendCodeBlock(&veh->code, (yyvsp[(3) - (3)].codeb));
-+ veh->name = (yyvsp[-1].veh).name;
-+ appendCodeBlock(&veh->code, (yyvsp[0].codeb));
- veh->mod = currentModule;
- veh->index = -1;
- veh->next = NULL;
-@@ -3283,62 +2974,67 @@
- *tailp = veh;
- }
- }
-+#line 2978 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 81:
--#line 836 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 836 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.veh).name = (yyvsp[(1) - (1)].text);
-+ (yyval.veh).name = (yyvsp[0].text);
- }
-+#line 2988 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 82:
--#line 841 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 841 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.veh) = (yyvsp[(2) - (3)].veh);
-+ (yyval.veh) = (yyvsp[-1].veh);
- }
-+#line 2996 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 84:
--#line 847 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 847 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.veh) = (yyvsp[(1) - (3)].veh);
-+ (yyval.veh) = (yyvsp[-2].veh);
-
-- switch ((yyvsp[(3) - (3)].veh).token)
-+ switch ((yyvsp[0].veh).token)
- {
-- case TK_NAME: (yyval.veh).name = (yyvsp[(3) - (3)].veh).name; break;
-+ case TK_NAME: (yyval.veh).name = (yyvsp[0].veh).name; break;
- }
- }
-+#line 3009 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 85:
--#line 857 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 857 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.veh).token = TK_NAME;
-
-- (yyval.veh).name = (yyvsp[(3) - (3)].text);
-+ (yyval.veh).name = (yyvsp[0].text);
- }
-+#line 3019 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 86:
--#line 864 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 864 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- apiVersionRangeDef *avd;
-
-- if (findAPI(currentSpec, (yyvsp[(2) - (2)].api).name) != NULL)
-+ if (findAPI(currentSpec, (yyvsp[0].api).name) != NULL)
- yyerror("The API name in the %API directive has already been defined");
-
-- if ((yyvsp[(2) - (2)].api).version < 1)
-+ if ((yyvsp[0].api).version < 1)
- yyerror("The version number in the %API directive must be greater than or equal to 1");
-
- avd = sipMalloc(sizeof (apiVersionRangeDef));
-
-- avd->api_name = cacheName(currentSpec, (yyvsp[(2) - (2)].api).name);
-- avd->from = (yyvsp[(2) - (2)].api).version;
-+ avd->api_name = cacheName(currentSpec, (yyvsp[0].api).name);
-+ avd->from = (yyvsp[0].api).version;
- avd->to = -1;
-
- avd->next = currentModule->api_versions;
-@@ -3348,62 +3044,68 @@
- setIsUsedName(avd->api_name);
- }
- }
-+#line 3048 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 87:
--#line 890 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 890 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
- deprecated("%API name and version number should be specified using the 'name' and 'version' arguments");
-
-- (yyval.api).name = (yyvsp[(1) - (2)].text);
-- (yyval.api).version = (yyvsp[(2) - (2)].number);
-+ (yyval.api).name = (yyvsp[-1].text);
-+ (yyval.api).version = (yyvsp[0].number);
- }
-+#line 3061 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 88:
--#line 898 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 898 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.api) = (yyvsp[(2) - (3)].api);
-+ (yyval.api) = (yyvsp[-1].api);
- }
-+#line 3069 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 90:
--#line 904 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 904 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.api) = (yyvsp[(1) - (3)].api);
-+ (yyval.api) = (yyvsp[-2].api);
-
-- switch ((yyvsp[(3) - (3)].api).token)
-+ switch ((yyvsp[0].api).token)
- {
-- case TK_NAME: (yyval.api).name = (yyvsp[(3) - (3)].api).name; break;
-- case TK_VERSION: (yyval.api).version = (yyvsp[(3) - (3)].api).version; break;
-+ case TK_NAME: (yyval.api).name = (yyvsp[0].api).name; break;
-+ case TK_VERSION: (yyval.api).version = (yyvsp[0].api).version; break;
- }
- }
-+#line 3083 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 91:
--#line 915 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 915 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.api).token = TK_NAME;
-
-- (yyval.api).name = (yyvsp[(3) - (3)].text);
-+ (yyval.api).name = (yyvsp[0].text);
- (yyval.api).version = 0;
- }
-+#line 3094 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 92:
--#line 921 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 921 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.api).token = TK_VERSION;
-
- (yyval.api).name = NULL;
-- (yyval.api).version = (yyvsp[(3) - (3)].number);
-+ (yyval.api).version = (yyvsp[0].number);
- }
-+#line 3105 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 93:
--#line 929 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 929 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3416,20 +3118,20 @@
- exceptionDef *xd;
- const char *pyname;
-
-- checkAnnos(&(yyvsp[(4) - (5)].optflags), annos);
-+ checkAnnos(&(yyvsp[-1].optflags), annos);
-
- if (currentSpec->genc)
- yyerror("%Exception not allowed in a C module");
-
-- if ((yyvsp[(5) - (5)].exception).raise_code == NULL)
-+ if ((yyvsp[0].exception).raise_code == NULL)
- yyerror("%Exception must have a %RaiseCode sub-directive");
-
-- pyname = getPythonName(currentModule, &(yyvsp[(4) - (5)].optflags), scopedNameTail((yyvsp[(2) - (5)].scpvalp)));
-+ pyname = getPythonName(currentModule, &(yyvsp[-1].optflags), scopedNameTail((yyvsp[-3].scpvalp)));
-
- checkAttributes(currentSpec, currentModule, NULL, NULL,
- pyname, FALSE);
-
-- xd = findException(currentSpec, (yyvsp[(2) - (5)].scpvalp), TRUE);
-+ xd = findException(currentSpec, (yyvsp[-3].scpvalp), TRUE);
-
- if (xd->cd != NULL)
- yyerror("%Exception name has already been seen as a class name - it must be defined before being used");
-@@ -3439,28 +3141,30 @@
-
- /* Complete the definition. */
- xd->iff->module = currentModule;
-- appendCodeBlock(&xd->iff->hdrcode, (yyvsp[(5) - (5)].exception).type_header_code);
-+ appendCodeBlock(&xd->iff->hdrcode, (yyvsp[0].exception).type_header_code);
- xd->pyname = pyname;
-- xd->bibase = (yyvsp[(3) - (5)].exceptionbase).bibase;
-- xd->base = (yyvsp[(3) - (5)].exceptionbase).base;
-- appendCodeBlock(&xd->raisecode, (yyvsp[(5) - (5)].exception).raise_code);
-+ xd->bibase = (yyvsp[-2].exceptionbase).bibase;
-+ xd->base = (yyvsp[-2].exceptionbase).base;
-+ appendCodeBlock(&xd->raisecode, (yyvsp[0].exception).raise_code);
-
-- if (getOptFlag(&(yyvsp[(4) - (5)].optflags), "Default", bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[-1].optflags), "Default", bool_flag) != NULL)
- currentModule->defexception = xd;
- }
- }
-+#line 3155 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 94:
--#line 976 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 976 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.exceptionbase).bibase = NULL;
- (yyval.exceptionbase).base = NULL;
- }
-+#line 3164 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 95:
--#line 980 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 980 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- exceptionDef *xd;
-
-@@ -3469,13 +3173,13 @@
-
- /* See if it is a defined exception. */
- for (xd = currentSpec->exceptions; xd != NULL; xd = xd->next)
-- if (compareScopedNames(xd->iff->fqcname, (yyvsp[(2) - (3)].scpvalp)) == 0)
-+ if (compareScopedNames(xd->iff->fqcname, (yyvsp[-1].scpvalp)) == 0)
- {
- (yyval.exceptionbase).base = xd;
- break;
- }
-
-- if (xd == NULL && (yyvsp[(2) - (3)].scpvalp)->next == NULL && strncmp((yyvsp[(2) - (3)].scpvalp)->name, "SIP_", 4) == 0)
-+ if (xd == NULL && (yyvsp[-1].scpvalp)->next == NULL && strncmp((yyvsp[-1].scpvalp)->name, "SIP_", 4) == 0)
- {
- /* See if it is a builtin exception. */
-
-@@ -3556,7 +3260,7 @@
- char **cp;
-
- for (cp = builtins; *cp != NULL; ++cp)
-- if (strcmp((yyvsp[(2) - (3)].scpvalp)->name + 4, *cp) == 0)
-+ if (strcmp((yyvsp[-1].scpvalp)->name + 4, *cp) == 0)
- {
- (yyval.exceptionbase).bibase = *cp;
- break;
-@@ -3566,49 +3270,54 @@
- if ((yyval.exceptionbase).bibase == NULL && (yyval.exceptionbase).base == NULL)
- yyerror("Unknown exception base type");
- }
-+#line 3274 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 96:
--#line 1087 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1087 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.exception) = (yyvsp[(2) - (4)].exception);
-+ (yyval.exception) = (yyvsp[-2].exception);
- }
-+#line 3282 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 98:
--#line 1093 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1093 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.exception) = (yyvsp[(1) - (2)].exception);
-+ (yyval.exception) = (yyvsp[-1].exception);
-
-- switch ((yyvsp[(2) - (2)].exception).token)
-+ switch ((yyvsp[0].exception).token)
- {
-- case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[(2) - (2)].exception).raise_code; break;
-- case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[(2) - (2)].exception).type_header_code; break;
-+ case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[0].exception).raise_code; break;
-+ case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[0].exception).type_header_code; break;
- }
- }
-+#line 3296 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 99:
--#line 1104 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1104 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.exception).token = TK_IF;
- }
-+#line 3304 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 100:
--#line 1107 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1107 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.exception).token = TK_END;
- }
-+#line 3312 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 101:
--#line 1110 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1110 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.exception).token = TK_RAISECODE;
-- (yyval.exception).raise_code = (yyvsp[(1) - (1)].codeb);
-+ (yyval.exception).raise_code = (yyvsp[0].codeb);
- }
- else
- {
-@@ -3618,15 +3327,16 @@
-
- (yyval.exception).type_header_code = NULL;
- }
-+#line 3331 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 102:
--#line 1124 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1124 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.exception).token = TK_TYPEHEADERCODE;
-- (yyval.exception).type_header_code = (yyvsp[(1) - (1)].codeb);
-+ (yyval.exception).type_header_code = (yyvsp[0].codeb);
- }
- else
- {
-@@ -3636,17 +3346,19 @@
-
- (yyval.exception).raise_code = NULL;
- }
-+#line 3350 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 103:
--#line 1140 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1140 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 3358 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 104:
--#line 1145 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1145 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3663,15 +3375,16 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
-- currentMappedType = newMappedType(currentSpec, &(yyvsp[(2) - (3)].memArg), &(yyvsp[(3) - (3)].optflags));
-+ currentMappedType = newMappedType(currentSpec, &(yyvsp[-1].memArg), &(yyvsp[0].optflags));
- }
- }
-+#line 3384 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 106:
--#line 1168 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1168 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3690,7 +3403,7 @@
- mappedTypeTmplDef *mtt;
- ifaceFileDef *iff;
-
-- checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
- if (currentSpec->genc)
- yyerror("%MappedType templates not allowed in a C module");
-@@ -3699,32 +3412,32 @@
- * Check the template arguments are basic types or simple
- * names.
- */
-- for (a = 0; a < (yyvsp[(1) - (4)].signature).nrArgs; ++a)
-+ for (a = 0; a < (yyvsp[-3].signature).nrArgs; ++a)
- {
-- argDef *ad = &(yyvsp[(1) - (4)].signature).args[a];
-+ argDef *ad = &(yyvsp[-3].signature).args[a];
-
- if (ad->atype == defined_type && ad->u.snd->next != NULL)
- yyerror("%MappedType template arguments must be simple names");
- }
-
-- if ((yyvsp[(3) - (4)].memArg).atype != template_type)
-+ if ((yyvsp[-1].memArg).atype != template_type)
- yyerror("%MappedType template must map a template type");
-
-- (yyvsp[(3) - (4)].memArg).u.td->fqname = fullyQualifiedName((yyvsp[(3) - (4)].memArg).u.td->fqname);
-+ (yyvsp[-1].memArg).u.td->fqname = fullyQualifiedName((yyvsp[-1].memArg).u.td->fqname);
-
- /* Check a template hasn't already been provided. */
- for (mtt = currentSpec->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
-- if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[(3) - (4)].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[(3) - (4)].memArg).u.td->types, TRUE))
-+ if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[-1].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[-1].memArg).u.td->types, TRUE))
- yyerror("%MappedType template for this type has already been defined");
-
-- (yyvsp[(3) - (4)].memArg).nrderefs = 0;
-- (yyvsp[(3) - (4)].memArg).argflags = 0;
-+ (yyvsp[-1].memArg).nrderefs = 0;
-+ (yyvsp[-1].memArg).argflags = 0;
-
- mtt = sipMalloc(sizeof (mappedTypeTmplDef));
-
-- mtt->sig = (yyvsp[(1) - (4)].signature);
-- mtt->mt = allocMappedType(currentSpec, &(yyvsp[(3) - (4)].memArg));
-- mappedTypeAnnos(mtt->mt, &(yyvsp[(4) - (4)].optflags));
-+ mtt->sig = (yyvsp[-3].signature);
-+ mtt->mt = allocMappedType(currentSpec, &(yyvsp[-1].memArg));
-+ mappedTypeAnnos(mtt->mt, &(yyvsp[0].optflags));
- mtt->next = currentSpec->mappedtypetemplates;
-
- currentSpec->mappedtypetemplates = mtt;
-@@ -3737,10 +3450,11 @@
- mtt->mt->iff = iff;
- }
- }
-+#line 3454 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 108:
--#line 1235 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1235 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3753,82 +3467,89 @@
- currentMappedType = NULL;
- }
- }
-+#line 3471 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 113:
--#line 1255 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1255 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[0].codeb));
- }
-+#line 3480 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 114:
--#line 1259 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1259 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentMappedType->typecode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&currentMappedType->typecode, (yyvsp[0].codeb));
- }
-+#line 3489 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 115:
--#line 1263 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1263 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- if (currentMappedType->convfromcode != NULL)
- yyerror("%MappedType has more than one %ConvertFromTypeCode directive");
-
-- appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[0].codeb));
- }
- }
-+#line 3503 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 116:
--#line 1272 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1272 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- if (currentMappedType->convtocode != NULL)
- yyerror("%MappedType has more than one %ConvertToTypeCode directive");
-
-- appendCodeBlock(&currentMappedType->convtocode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentMappedType->convtocode, (yyvsp[0].codeb));
- }
- }
-+#line 3517 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 117:
--#line 1281 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1281 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- if (currentMappedType->instancecode != NULL)
- yyerror("%MappedType has more than one %InstanceCode directive");
-
-- appendCodeBlock(&currentMappedType->instancecode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&currentMappedType->instancecode, (yyvsp[0].codeb));
- }
- }
-+#line 3531 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 120:
--#line 1294 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1294 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-- applyTypeFlags(currentModule, &(yyvsp[(2) - (14)].memArg), &(yyvsp[(9) - (14)].optflags));
-+ applyTypeFlags(currentModule, &(yyvsp[-12].memArg), &(yyvsp[-5].optflags));
-
-- (yyvsp[(5) - (14)].signature).result = (yyvsp[(2) - (14)].memArg);
-+ (yyvsp[-9].signature).result = (yyvsp[-12].memArg);
-
- newFunction(currentSpec, currentModule, NULL, NULL,
-- currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[(3) - (14)].text),
-- &(yyvsp[(5) - (14)].signature), (yyvsp[(7) - (14)].number), FALSE, &(yyvsp[(9) - (14)].optflags), (yyvsp[(14) - (14)].codeb), NULL, NULL, (yyvsp[(8) - (14)].throwlist), (yyvsp[(10) - (14)].optsignature), (yyvsp[(12) - (14)].docstr),
-- FALSE, (yyvsp[(13) - (14)].codeb));
-+ currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[-11].text),
-+ &(yyvsp[-9].signature), (yyvsp[-7].number), FALSE, &(yyvsp[-5].optflags), (yyvsp[0].codeb), NULL, NULL, (yyvsp[-6].throwlist), (yyvsp[-4].optsignature), (yyvsp[-2].docstr),
-+ FALSE, (yyvsp[-1].codeb));
- }
- }
-+#line 3549 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 121:
--#line 1309 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1309 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("namespace definition not allowed in a C module");
-@@ -3844,17 +3565,18 @@
- scope = NULL;
-
- ns = newClass(currentSpec, namespace_iface, NULL,
-- text2scopedName(scope, (yyvsp[(2) - (2)].text)), NULL, NULL, NULL, NULL);
-+ text2scopedName(scope, (yyvsp[0].text)), NULL, NULL, NULL, NULL);
-
- pushScope(ns);
-
- sectionFlags = 0;
- }
- }
-+#line 3576 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 122:
--#line 1330 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1330 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3869,10 +3591,11 @@
- popScope();
- }
- }
-+#line 3595 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 127:
--#line 1354 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1354 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3883,10 +3606,11 @@
- yyerror("%Platforms has already been defined for this module");
- }
- }
-+#line 3610 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 128:
--#line 1364 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1364 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3904,70 +3628,78 @@
- yyerror("No more than one of these %Platforms must be specified with the -t flag");
- }
- }
-+#line 3632 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 131:
--#line 1387 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1387 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(1) - (1)].text),
-+ newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].text),
- platform_qualifier);
- }
-+#line 3641 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 132:
--#line 1393 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1393 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(2) - (2)].feature).name,
-+ newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].feature).name,
- feature_qualifier);
- }
-+#line 3650 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 133:
--#line 1399 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1399 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.feature).name = (yyvsp[(1) - (1)].text);
-+ (yyval.feature).name = (yyvsp[0].text);
- }
-+#line 3660 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 134:
--#line 1404 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1404 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.feature) = (yyvsp[(2) - (3)].feature);
-+ (yyval.feature) = (yyvsp[-1].feature);
- }
-+#line 3668 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 136:
--#line 1410 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1410 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.feature) = (yyvsp[(1) - (3)].feature);
-+ (yyval.feature) = (yyvsp[-2].feature);
-
-- switch ((yyvsp[(3) - (3)].feature).token)
-+ switch ((yyvsp[0].feature).token)
- {
-- case TK_NAME: (yyval.feature).name = (yyvsp[(3) - (3)].feature).name; break;
-+ case TK_NAME: (yyval.feature).name = (yyvsp[0].feature).name; break;
- }
- }
-+#line 3681 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 137:
--#line 1420 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1420 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.feature).token = TK_NAME;
-
-- (yyval.feature).name = (yyvsp[(3) - (3)].text);
-+ (yyval.feature).name = (yyvsp[0].text);
- }
-+#line 3691 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 138:
--#line 1427 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1427 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- currentTimelineOrder = 0;
- }
-+#line 3699 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 139:
--#line 1430 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1430 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -3989,25 +3721,28 @@
- currentModule->nrtimelines++;
- }
- }
-+#line 3725 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 142:
--#line 1457 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1457 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- newQualifier(currentModule, currentModule->nrtimelines,
-- currentTimelineOrder++, TRUE, (yyvsp[(1) - (1)].text), time_qualifier);
-+ currentTimelineOrder++, TRUE, (yyvsp[0].text), time_qualifier);
- }
-+#line 3734 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 143:
--#line 1463 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1463 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- currentPlatforms = NULL;
- }
-+#line 3742 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 144:
--#line 1465 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1465 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (stackPtr >= MAX_NESTED_IF)
- yyerror("Internal error: increase the value of MAX_NESTED_IF");
-@@ -4015,102 +3750,110 @@
- /* Nested %Ifs are implicit logical ands. */
-
- if (stackPtr > 0)
-- (yyvsp[(4) - (5)].boolean) = ((yyvsp[(4) - (5)].boolean) && skipStack[stackPtr - 1]);
-+ (yyvsp[-1].boolean) = ((yyvsp[-1].boolean) && skipStack[stackPtr - 1]);
-
-- skipStack[stackPtr] = (yyvsp[(4) - (5)].boolean);
-+ skipStack[stackPtr] = (yyvsp[-1].boolean);
-
- platformStack[stackPtr] = currentPlatforms;
-
- ++stackPtr;
- }
-+#line 3762 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 145:
--#line 1482 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1482 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.boolean) = platOrFeature((yyvsp[(1) - (1)].text), FALSE);
-+ (yyval.boolean) = platOrFeature((yyvsp[0].text), FALSE);
- }
-+#line 3770 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 146:
--#line 1485 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1485 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.boolean) = platOrFeature((yyvsp[(2) - (2)].text), TRUE);
-+ (yyval.boolean) = platOrFeature((yyvsp[0].text), TRUE);
- }
-+#line 3778 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 147:
--#line 1488 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1488 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.boolean) = (platOrFeature((yyvsp[(3) - (3)].text), FALSE) || (yyvsp[(1) - (3)].boolean));
-+ (yyval.boolean) = (platOrFeature((yyvsp[0].text), FALSE) || (yyvsp[-2].boolean));
- }
-+#line 3786 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 148:
--#line 1491 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1491 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.boolean) = (platOrFeature((yyvsp[(4) - (4)].text), TRUE) || (yyvsp[(1) - (4)].boolean));
-+ (yyval.boolean) = (platOrFeature((yyvsp[0].text), TRUE) || (yyvsp[-3].boolean));
- }
-+#line 3794 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 150:
--#line 1497 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1497 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.boolean) = timePeriod((yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text));
-+ (yyval.boolean) = timePeriod((yyvsp[-2].text), (yyvsp[0].text));
- }
-+#line 3802 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 151:
--#line 1502 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1502 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (stackPtr-- <= 0)
- yyerror("Too many %End directives");
-
- currentPlatforms = (stackPtr == 0 ? NULL : platformStack[stackPtr - 1]);
- }
-+#line 3813 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 152:
--#line 1510 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1510 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- optFlag *of;
-
-- if ((yyvsp[(3) - (3)].optflags).nrFlags != 0)
-+ if ((yyvsp[0].optflags).nrFlags != 0)
- deprecated("%License annotations are deprecated, use arguments instead");
-
-- if ((yyvsp[(2) - (3)].license).type == NULL)
-- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Type", string_flag)) != NULL)
-- (yyvsp[(2) - (3)].license).type = of->fvalue.sval;
-+ if ((yyvsp[-1].license).type == NULL)
-+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Type", string_flag)) != NULL)
-+ (yyvsp[-1].license).type = of->fvalue.sval;
-
-- if ((yyvsp[(2) - (3)].license).licensee == NULL)
-- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Licensee", string_flag)) != NULL)
-- (yyvsp[(2) - (3)].license).licensee = of->fvalue.sval;
-+ if ((yyvsp[-1].license).licensee == NULL)
-+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Licensee", string_flag)) != NULL)
-+ (yyvsp[-1].license).licensee = of->fvalue.sval;
-
-- if ((yyvsp[(2) - (3)].license).signature == NULL)
-- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Signature", string_flag)) != NULL)
-- (yyvsp[(2) - (3)].license).signature = of->fvalue.sval;
-+ if ((yyvsp[-1].license).signature == NULL)
-+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Signature", string_flag)) != NULL)
-+ (yyvsp[-1].license).signature = of->fvalue.sval;
-
-- if ((yyvsp[(2) - (3)].license).timestamp == NULL)
-- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Timestamp", string_flag)) != NULL)
-- (yyvsp[(2) - (3)].license).timestamp = of->fvalue.sval;
-+ if ((yyvsp[-1].license).timestamp == NULL)
-+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Timestamp", string_flag)) != NULL)
-+ (yyvsp[-1].license).timestamp = of->fvalue.sval;
-
-- if ((yyvsp[(2) - (3)].license).type == NULL)
-+ if ((yyvsp[-1].license).type == NULL)
- yyerror("%License must have a 'type' argument");
-
- if (notSkipping())
- {
- currentModule->license = sipMalloc(sizeof (licenseDef));
-
-- currentModule->license->type = (yyvsp[(2) - (3)].license).type;
-- currentModule->license->licensee = (yyvsp[(2) - (3)].license).licensee;
-- currentModule->license->sig = (yyvsp[(2) - (3)].license).signature;
-- currentModule->license->timestamp = (yyvsp[(2) - (3)].license).timestamp;
-+ currentModule->license->type = (yyvsp[-1].license).type;
-+ currentModule->license->licensee = (yyvsp[-1].license).licensee;
-+ currentModule->license->sig = (yyvsp[-1].license).signature;
-+ currentModule->license->timestamp = (yyvsp[-1].license).timestamp;
- }
- }
-+#line 3853 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 153:
--#line 1547 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1547 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-@@ -4119,241 +3862,264 @@
- (yyval.license).signature = NULL;
- (yyval.license).timestamp = NULL;
- }
-+#line 3866 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 154:
--#line 1555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.license).type = (yyvsp[(1) - (1)].text);
-+ (yyval.license).type = (yyvsp[0].text);
- (yyval.license).licensee = NULL;
- (yyval.license).signature = NULL;
- (yyval.license).timestamp = NULL;
- }
-+#line 3877 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 155:
--#line 1561 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1561 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.license) = (yyvsp[(2) - (3)].license);
-+ (yyval.license) = (yyvsp[-1].license);
- }
-+#line 3885 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 157:
--#line 1567 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1567 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.license) = (yyvsp[(1) - (3)].license);
-+ (yyval.license) = (yyvsp[-2].license);
-
-- switch ((yyvsp[(3) - (3)].license).token)
-+ switch ((yyvsp[0].license).token)
- {
-- case TK_TYPE: (yyval.license).type = (yyvsp[(3) - (3)].license).type; break;
-- case TK_LICENSEE: (yyval.license).licensee = (yyvsp[(3) - (3)].license).licensee; break;
-- case TK_SIGNATURE: (yyval.license).signature = (yyvsp[(3) - (3)].license).signature; break;
-- case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[(3) - (3)].license).timestamp; break;
-+ case TK_TYPE: (yyval.license).type = (yyvsp[0].license).type; break;
-+ case TK_LICENSEE: (yyval.license).licensee = (yyvsp[0].license).licensee; break;
-+ case TK_SIGNATURE: (yyval.license).signature = (yyvsp[0].license).signature; break;
-+ case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[0].license).timestamp; break;
- }
- }
-+#line 3901 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 158:
--#line 1580 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1580 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.license).token = TK_NAME;
-
-- (yyval.license).type = (yyvsp[(3) - (3)].text);
-+ (yyval.license).type = (yyvsp[0].text);
- (yyval.license).licensee = NULL;
- (yyval.license).signature = NULL;
- (yyval.license).timestamp = NULL;
- }
-+#line 3914 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 159:
--#line 1588 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1588 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.license).token = TK_LICENSEE;
-
- (yyval.license).type = NULL;
-- (yyval.license).licensee = (yyvsp[(3) - (3)].text);
-+ (yyval.license).licensee = (yyvsp[0].text);
- (yyval.license).signature = NULL;
- (yyval.license).timestamp = NULL;
- }
-+#line 3927 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 160:
--#line 1596 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1596 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.license).token = TK_SIGNATURE;
-
- (yyval.license).type = NULL;
- (yyval.license).licensee = NULL;
-- (yyval.license).signature = (yyvsp[(3) - (3)].text);
-+ (yyval.license).signature = (yyvsp[0].text);
- (yyval.license).timestamp = NULL;
- }
-+#line 3940 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 161:
--#line 1604 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1604 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.license).token = TK_TIMESTAMP;
-
- (yyval.license).type = NULL;
- (yyval.license).licensee = NULL;
- (yyval.license).signature = NULL;
-- (yyval.license).timestamp = (yyvsp[(3) - (3)].text);
-+ (yyval.license).timestamp = (yyvsp[0].text);
- }
-+#line 3953 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 162:
--#line 1614 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1614 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- if (currentModule->defmetatype != NULL)
- yyerror("%DefaultMetatype has already been defined for this module");
-
-- currentModule->defmetatype = cacheName(currentSpec, (yyvsp[(2) - (2)].defmetatype).name);
-+ currentModule->defmetatype = cacheName(currentSpec, (yyvsp[0].defmetatype).name);
- }
- }
-+#line 3967 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 163:
--#line 1625 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1625 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.defmetatype).name = (yyvsp[(1) - (1)].text);
-+ (yyval.defmetatype).name = (yyvsp[0].text);
- }
-+#line 3977 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 164:
--#line 1630 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1630 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defmetatype) = (yyvsp[(2) - (3)].defmetatype);
-+ (yyval.defmetatype) = (yyvsp[-1].defmetatype);
- }
-+#line 3985 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 166:
--#line 1636 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1636 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defmetatype) = (yyvsp[(1) - (3)].defmetatype);
-+ (yyval.defmetatype) = (yyvsp[-2].defmetatype);
-
-- switch ((yyvsp[(3) - (3)].defmetatype).token)
-+ switch ((yyvsp[0].defmetatype).token)
- {
-- case TK_NAME: (yyval.defmetatype).name = (yyvsp[(3) - (3)].defmetatype).name; break;
-+ case TK_NAME: (yyval.defmetatype).name = (yyvsp[0].defmetatype).name; break;
- }
- }
-+#line 3998 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 167:
--#line 1646 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1646 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.defmetatype).token = TK_NAME;
-
-- (yyval.defmetatype).name = (yyvsp[(3) - (3)].text);
-+ (yyval.defmetatype).name = (yyvsp[0].text);
- }
-+#line 4008 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 168:
--#line 1653 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1653 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- if (currentModule->defsupertype != NULL)
- yyerror("%DefaultSupertype has already been defined for this module");
-
-- currentModule->defsupertype = cacheName(currentSpec, (yyvsp[(2) - (2)].defsupertype).name);
-+ currentModule->defsupertype = cacheName(currentSpec, (yyvsp[0].defsupertype).name);
- }
- }
-+#line 4022 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 169:
--#line 1664 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1664 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.defsupertype).name = (yyvsp[(1) - (1)].text);
-+ (yyval.defsupertype).name = (yyvsp[0].text);
- }
-+#line 4032 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 170:
--#line 1669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defsupertype) = (yyvsp[(2) - (3)].defsupertype);
-+ (yyval.defsupertype) = (yyvsp[-1].defsupertype);
- }
-+#line 4040 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 172:
--#line 1675 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1675 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.defsupertype) = (yyvsp[(1) - (3)].defsupertype);
-+ (yyval.defsupertype) = (yyvsp[-2].defsupertype);
-
-- switch ((yyvsp[(3) - (3)].defsupertype).token)
-+ switch ((yyvsp[0].defsupertype).token)
- {
-- case TK_NAME: (yyval.defsupertype).name = (yyvsp[(3) - (3)].defsupertype).name; break;
-+ case TK_NAME: (yyval.defsupertype).name = (yyvsp[0].defsupertype).name; break;
- }
- }
-+#line 4053 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 173:
--#line 1685 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1685 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.defsupertype).token = TK_NAME;
-
-- (yyval.defsupertype).name = (yyvsp[(3) - (3)].text);
-+ (yyval.defsupertype).name = (yyvsp[0].text);
- }
-+#line 4063 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 174:
--#line 1692 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1692 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- classDef *ns;
-
- ns = newClass(currentSpec, namespace_iface, NULL,
-- fullyQualifiedName((yyvsp[(2) - (2)].hiddenns).name), NULL, NULL, NULL, NULL);
-+ fullyQualifiedName((yyvsp[0].hiddenns).name), NULL, NULL, NULL, NULL);
- setHiddenNamespace(ns);
- }
- }
-+#line 4078 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 175:
--#line 1704 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1704 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.hiddenns).name = (yyvsp[(1) - (1)].scpvalp);
-+ (yyval.hiddenns).name = (yyvsp[0].scpvalp);
- }
-+#line 4088 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 176:
--#line 1709 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1709 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.hiddenns) = (yyvsp[(2) - (3)].hiddenns);
-+ (yyval.hiddenns) = (yyvsp[-1].hiddenns);
- }
-+#line 4096 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 178:
--#line 1715 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1715 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.hiddenns) = (yyvsp[(1) - (3)].hiddenns);
-+ (yyval.hiddenns) = (yyvsp[-2].hiddenns);
-
-- switch ((yyvsp[(3) - (3)].hiddenns).token)
-+ switch ((yyvsp[0].hiddenns).token)
- {
-- case TK_NAME: (yyval.hiddenns).name = (yyvsp[(3) - (3)].hiddenns).name; break;
-+ case TK_NAME: (yyval.hiddenns).name = (yyvsp[0].hiddenns).name; break;
- }
- }
-+#line 4109 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 179:
--#line 1725 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1725 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.hiddenns).token = TK_NAME;
-
-- (yyval.hiddenns).name = (yyvsp[(3) - (3)].scpvalp);
-+ (yyval.hiddenns).name = (yyvsp[0].scpvalp);
- }
-+#line 4119 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 180:
--#line 1732 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1732 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("%ConsolidatedModule is deprecated and will not be supported by SIP v5");
-
-@@ -4366,99 +4132,109 @@
- if (currentModule->fullname != NULL)
- yyerror("%ConsolidatedModule must appear before any %Module or %CModule directive");
-
-- setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].consmodule).name);
-- currentModule->docstring = (yyvsp[(3) - (3)].consmodule).docstring;
-+ setModuleName(currentSpec, currentModule, (yyvsp[-1].consmodule).name);
-+ currentModule->docstring = (yyvsp[0].consmodule).docstring;
-
- setIsConsolidated(currentModule);
- }
- }
-+#line 4142 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 181:
--#line 1752 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1752 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.consmodule).name = (yyvsp[(1) - (1)].text);
-+ (yyval.consmodule).name = (yyvsp[0].text);
- }
-+#line 4152 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 182:
--#line 1757 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1757 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.consmodule) = (yyvsp[(2) - (3)].consmodule);
-+ (yyval.consmodule) = (yyvsp[-1].consmodule);
- }
-+#line 4160 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 184:
--#line 1763 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1763 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.consmodule) = (yyvsp[(1) - (3)].consmodule);
-+ (yyval.consmodule) = (yyvsp[-2].consmodule);
-
-- switch ((yyvsp[(3) - (3)].consmodule).token)
-+ switch ((yyvsp[0].consmodule).token)
- {
-- case TK_NAME: (yyval.consmodule).name = (yyvsp[(3) - (3)].consmodule).name; break;
-+ case TK_NAME: (yyval.consmodule).name = (yyvsp[0].consmodule).name; break;
- }
- }
-+#line 4173 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 185:
--#line 1773 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1773 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.consmodule).token = TK_NAME;
-
-- (yyval.consmodule).name = (yyvsp[(3) - (3)].text);
-+ (yyval.consmodule).name = (yyvsp[0].text);
- }
-+#line 4183 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 186:
--#line 1780 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1780 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.consmodule).token = 0;
- (yyval.consmodule).docstring = NULL;
- }
-+#line 4192 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 187:
--#line 1784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.consmodule) = (yyvsp[(2) - (4)].consmodule);
-+ (yyval.consmodule) = (yyvsp[-2].consmodule);
- }
-+#line 4200 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 189:
--#line 1790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.consmodule) = (yyvsp[(1) - (2)].consmodule);
-+ (yyval.consmodule) = (yyvsp[-1].consmodule);
-
-- switch ((yyvsp[(2) - (2)].consmodule).token)
-+ switch ((yyvsp[0].consmodule).token)
- {
-- case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[(2) - (2)].consmodule).docstring; break;
-+ case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[0].consmodule).docstring; break;
- }
- }
-+#line 4213 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 190:
--#line 1800 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1800 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.consmodule).token = TK_IF;
- }
-+#line 4221 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 191:
--#line 1803 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1803 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.consmodule).token = TK_END;
- }
-+#line 4229 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 192:
--#line 1806 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1806 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.consmodule).token = TK_DOCSTRING;
-- (yyval.consmodule).docstring = (yyvsp[(1) - (1)].docstr);
-+ (yyval.consmodule).docstring = (yyvsp[0].docstr);
- }
- else
- {
-@@ -4466,10 +4242,11 @@
- (yyval.consmodule).docstring = NULL;
- }
- }
-+#line 4246 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 193:
--#line 1820 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1820 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -4480,99 +4257,109 @@
- if (currentModule->fullname != NULL)
- yyerror("%CompositeModule must appear before any %Module directive");
-
-- setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].compmodule).name);
-- currentModule->docstring = (yyvsp[(3) - (3)].compmodule).docstring;
-+ setModuleName(currentSpec, currentModule, (yyvsp[-1].compmodule).name);
-+ currentModule->docstring = (yyvsp[0].compmodule).docstring;
-
- setIsComposite(currentModule);
- }
- }
-+#line 4267 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 194:
--#line 1838 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1838 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.compmodule).name = (yyvsp[(1) - (1)].text);
-+ (yyval.compmodule).name = (yyvsp[0].text);
- }
-+#line 4277 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 195:
--#line 1843 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1843 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.compmodule) = (yyvsp[(2) - (3)].compmodule);
-+ (yyval.compmodule) = (yyvsp[-1].compmodule);
- }
-+#line 4285 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 197:
--#line 1849 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1849 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.compmodule) = (yyvsp[(1) - (3)].compmodule);
-+ (yyval.compmodule) = (yyvsp[-2].compmodule);
-
-- switch ((yyvsp[(3) - (3)].compmodule).token)
-+ switch ((yyvsp[0].compmodule).token)
- {
-- case TK_NAME: (yyval.compmodule).name = (yyvsp[(3) - (3)].compmodule).name; break;
-+ case TK_NAME: (yyval.compmodule).name = (yyvsp[0].compmodule).name; break;
- }
- }
-+#line 4298 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 198:
--#line 1859 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1859 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.compmodule).token = TK_NAME;
-
-- (yyval.compmodule).name = (yyvsp[(3) - (3)].text);
-+ (yyval.compmodule).name = (yyvsp[0].text);
- }
-+#line 4308 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 199:
--#line 1866 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1866 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.compmodule).token = 0;
- (yyval.compmodule).docstring = NULL;
- }
-+#line 4317 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 200:
--#line 1870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.compmodule) = (yyvsp[(2) - (4)].compmodule);
-+ (yyval.compmodule) = (yyvsp[-2].compmodule);
- }
-+#line 4325 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 202:
--#line 1876 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1876 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.compmodule) = (yyvsp[(1) - (2)].compmodule);
-+ (yyval.compmodule) = (yyvsp[-1].compmodule);
-
-- switch ((yyvsp[(2) - (2)].compmodule).token)
-+ switch ((yyvsp[0].compmodule).token)
- {
-- case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[(2) - (2)].compmodule).docstring; break;
-+ case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[0].compmodule).docstring; break;
- }
- }
-+#line 4338 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 203:
--#line 1886 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1886 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.compmodule).token = TK_IF;
- }
-+#line 4346 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 204:
--#line 1889 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1889 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.compmodule).token = TK_END;
- }
-+#line 4354 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 205:
--#line 1892 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1892 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.compmodule).token = TK_DOCSTRING;
-- (yyval.compmodule).docstring = (yyvsp[(1) - (1)].docstr);
-+ (yyval.compmodule).docstring = (yyvsp[0].docstr);
- }
- else
- {
-@@ -4580,90 +4367,97 @@
- (yyval.compmodule).docstring = NULL;
- }
- }
-+#line 4371 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 206:
--#line 1906 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1906 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (3)].module).name == NULL)
-+ if ((yyvsp[-1].module).name == NULL)
- yyerror("%Module must have a 'name' argument");
-
- if (notSkipping())
- currentModule = configureModule(currentSpec, currentModule,
-- currentContext.filename, (yyvsp[(2) - (3)].module).name, (yyvsp[(2) - (3)].module).c_module,
-- (yyvsp[(2) - (3)].module).kwargs, (yyvsp[(2) - (3)].module).use_arg_names, (yyvsp[(2) - (3)].module).use_limited_api,
-- (yyvsp[(2) - (3)].module).call_super_init, (yyvsp[(2) - (3)].module).all_raise_py_exc,
-- (yyvsp[(2) - (3)].module).def_error_handler, (yyvsp[(3) - (3)].module).docstring);
-+ currentContext.filename, (yyvsp[-1].module).name, (yyvsp[-1].module).c_module,
-+ (yyvsp[-1].module).kwargs, (yyvsp[-1].module).use_arg_names, (yyvsp[-1].module).use_limited_api,
-+ (yyvsp[-1].module).call_super_init, (yyvsp[-1].module).all_raise_py_exc,
-+ (yyvsp[-1].module).def_error_handler, (yyvsp[0].module).docstring);
- }
-+#line 4387 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 207:
--#line 1917 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1917 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("%CModule is deprecated, use %Module and the 'language' argument instead");
-
- if (notSkipping())
- currentModule = configureModule(currentSpec, currentModule,
-- currentContext.filename, (yyvsp[(2) - (3)].text), TRUE, defaultKwArgs,
-+ currentContext.filename, (yyvsp[-1].text), TRUE, defaultKwArgs,
- FALSE, FALSE, -1, FALSE, NULL, NULL);
- }
-+#line 4400 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 208:
--#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {resetLexerState();}
-+#line 4406 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 209:
--#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(3) - (3)].number) >= 0)
-+ if ((yyvsp[0].number) >= 0)
- deprecated("%Module version number should be specified using the 'version' argument");
-
- (yyval.module).c_module = FALSE;
- (yyval.module).kwargs = defaultKwArgs;
-- (yyval.module).name = (yyvsp[(1) - (3)].text);
-+ (yyval.module).name = (yyvsp[-2].text);
- (yyval.module).use_arg_names = FALSE;
- (yyval.module).use_limited_api = FALSE;
- (yyval.module).all_raise_py_exc = FALSE;
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4424 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 210:
--#line 1940 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1940 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.module) = (yyvsp[(2) - (3)].module);
-+ (yyval.module) = (yyvsp[-1].module);
- }
-+#line 4432 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 212:
--#line 1946 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1946 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.module) = (yyvsp[(1) - (3)].module);
-+ (yyval.module) = (yyvsp[-2].module);
-
-- switch ((yyvsp[(3) - (3)].module).token)
-+ switch ((yyvsp[0].module).token)
- {
-- case TK_KWARGS: (yyval.module).kwargs = (yyvsp[(3) - (3)].module).kwargs; break;
-- case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[(3) - (3)].module).c_module; break;
-- case TK_NAME: (yyval.module).name = (yyvsp[(3) - (3)].module).name; break;
-- case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[(3) - (3)].module).use_arg_names; break;
-- case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[(3) - (3)].module).use_limited_api; break;
-- case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].module).all_raise_py_exc; break;
-- case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[(3) - (3)].module).call_super_init; break;
-- case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[(3) - (3)].module).def_error_handler; break;
-+ case TK_KWARGS: (yyval.module).kwargs = (yyvsp[0].module).kwargs; break;
-+ case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[0].module).c_module; break;
-+ case TK_NAME: (yyval.module).name = (yyvsp[0].module).name; break;
-+ case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[0].module).use_arg_names; break;
-+ case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[0].module).use_limited_api; break;
-+ case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[0].module).all_raise_py_exc; break;
-+ case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[0].module).call_super_init; break;
-+ case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[0].module).def_error_handler; break;
- }
- }
-+#line 4452 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 213:
--#line 1963 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1963 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_KWARGS;
-
- (yyval.module).c_module = FALSE;
-- (yyval.module).kwargs = convertKwArgs((yyvsp[(3) - (3)].text));
-+ (yyval.module).kwargs = convertKwArgs((yyvsp[0].text));
- (yyval.module).name = NULL;
- (yyval.module).use_arg_names = FALSE;
- (yyval.module).use_limited_api = FALSE;
-@@ -4671,16 +4465,17 @@
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4469 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 214:
--#line 1975 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1975 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_LANGUAGE;
-
-- if (strcmp((yyvsp[(3) - (3)].text), "C++") == 0)
-+ if (strcmp((yyvsp[0].text), "C++") == 0)
- (yyval.module).c_module = FALSE;
-- else if (strcmp((yyvsp[(3) - (3)].text), "C") == 0)
-+ else if (strcmp((yyvsp[0].text), "C") == 0)
- (yyval.module).c_module = TRUE;
- else
- yyerror("%Module 'language' argument must be either \"C++\" or \"C\"");
-@@ -4693,42 +4488,45 @@
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4492 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 215:
--#line 1993 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 1993 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_NAME;
-
- (yyval.module).c_module = FALSE;
- (yyval.module).kwargs = defaultKwArgs;
-- (yyval.module).name = (yyvsp[(3) - (3)].text);
-+ (yyval.module).name = (yyvsp[0].text);
- (yyval.module).use_arg_names = FALSE;
- (yyval.module).use_limited_api = FALSE;
- (yyval.module).all_raise_py_exc = FALSE;
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4509 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 216:
--#line 2005 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2005 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_USEARGNAMES;
-
- (yyval.module).c_module = FALSE;
- (yyval.module).kwargs = defaultKwArgs;
- (yyval.module).name = NULL;
-- (yyval.module).use_arg_names = (yyvsp[(3) - (3)].boolean);
-+ (yyval.module).use_arg_names = (yyvsp[0].boolean);
- (yyval.module).use_limited_api = FALSE;
- (yyval.module).all_raise_py_exc = FALSE;
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4526 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 217:
--#line 2017 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2017 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_USELIMITEDAPI;
-
-@@ -4736,15 +4534,16 @@
- (yyval.module).kwargs = defaultKwArgs;
- (yyval.module).name = NULL;
- (yyval.module).use_arg_names = FALSE;
-- (yyval.module).use_limited_api = (yyvsp[(3) - (3)].boolean);
-+ (yyval.module).use_limited_api = (yyvsp[0].boolean);
- (yyval.module).all_raise_py_exc = FALSE;
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4543 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 218:
--#line 2029 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2029 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_ALLRAISEPYEXC;
-
-@@ -4753,14 +4552,15 @@
- (yyval.module).name = NULL;
- (yyval.module).use_arg_names = FALSE;
- (yyval.module).use_limited_api = FALSE;
-- (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].boolean);
-+ (yyval.module).all_raise_py_exc = (yyvsp[0].boolean);
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4560 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 219:
--#line 2041 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2041 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_CALLSUPERINIT;
-
-@@ -4770,13 +4570,14 @@
- (yyval.module).use_arg_names = FALSE;
- (yyval.module).use_limited_api = FALSE;
- (yyval.module).all_raise_py_exc = FALSE;
-- (yyval.module).call_super_init = (yyvsp[(3) - (3)].boolean);
-+ (yyval.module).call_super_init = (yyvsp[0].boolean);
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4577 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 220:
--#line 2053 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2053 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_DEFERRORHANDLER;
-
-@@ -4787,16 +4588,17 @@
- (yyval.module).use_limited_api = FALSE;
- (yyval.module).all_raise_py_exc = FALSE;
- (yyval.module).call_super_init = -1;
-- (yyval.module).def_error_handler = (yyvsp[(3) - (3)].text);
-+ (yyval.module).def_error_handler = (yyvsp[0].text);
- }
-+#line 4594 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 221:
--#line 2065 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2065 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("%Module version numbers are deprecated and ignored");
-
-- if ((yyvsp[(3) - (3)].number) < 0)
-+ if ((yyvsp[0].number) < 0)
- yyerror("%Module 'version' argument cannot be negative");
-
- (yyval.module).token = TK_VERSION;
-@@ -4810,63 +4612,70 @@
- (yyval.module).call_super_init = -1;
- (yyval.module).def_error_handler = NULL;
- }
-+#line 4616 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 222:
--#line 2084 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2084 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = 0;
- (yyval.module).docstring = NULL;
- }
-+#line 4625 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 223:
--#line 2088 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2088 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.module) = (yyvsp[(2) - (4)].module);
-+ (yyval.module) = (yyvsp[-2].module);
- }
-+#line 4633 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 225:
--#line 2094 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2094 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.module) = (yyvsp[(1) - (2)].module);
-+ (yyval.module) = (yyvsp[-1].module);
-
-- switch ((yyvsp[(2) - (2)].module).token)
-+ switch ((yyvsp[0].module).token)
- {
-- case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[(2) - (2)].module).docstring; break;
-+ case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[0].module).docstring; break;
- }
- }
-+#line 4646 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 226:
--#line 2104 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2104 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_IF;
- }
-+#line 4654 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 227:
--#line 2107 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2107 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_END;
- }
-+#line 4662 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 228:
--#line 2110 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2110 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.module).token = TK_AUTOPYNAME;
- }
-+#line 4670 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 229:
--#line 2113 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2113 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.module).token = TK_DOCSTRING;
-- (yyval.module).docstring = (yyvsp[(1) - (1)].docstr);
-+ (yyval.module).docstring = (yyvsp[0].docstr);
- }
- else
- {
-@@ -4874,10 +4683,11 @@
- (yyval.module).docstring = NULL;
- }
- }
-+#line 4687 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 231:
--#line 2128 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2128 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /*
- * The grammar design is a bit broken and this is the easiest way
-@@ -4886,435 +4696,487 @@
-
- char *cp;
-
-- for (cp = (yyvsp[(1) - (1)].text); *cp != '\0'; ++cp)
-+ for (cp = (yyvsp[0].text); *cp != '\0'; ++cp)
- if (*cp != '.' && *cp != '_' && !isalnum(*cp))
- yyerror("Invalid character in name");
-
-- (yyval.text) = (yyvsp[(1) - (1)].text);
-+ (yyval.text) = (yyvsp[0].text);
- }
-+#line 4706 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 232:
--#line 2144 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2144 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = -1;
- }
-+#line 4714 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 234:
--#line 2150 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2150 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (2)].include).name == NULL)
-+ if ((yyvsp[0].include).name == NULL)
- yyerror("%Include must have a 'name' argument");
-
- if (notSkipping())
-- parseFile(NULL, (yyvsp[(2) - (2)].include).name, NULL, (yyvsp[(2) - (2)].include).optional);
-+ parseFile(NULL, (yyvsp[0].include).name, NULL, (yyvsp[0].include).optional);
- }
-+#line 4726 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 235:
--#line 2159 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2159 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.include).name = (yyvsp[(1) - (1)].text);
-+ (yyval.include).name = (yyvsp[0].text);
- (yyval.include).optional = FALSE;
- }
-+#line 4737 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 236:
--#line 2165 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2165 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.include) = (yyvsp[(2) - (3)].include);
-+ (yyval.include) = (yyvsp[-1].include);
- }
-+#line 4745 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 238:
--#line 2171 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2171 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.include) = (yyvsp[(1) - (3)].include);
-+ (yyval.include) = (yyvsp[-2].include);
-
-- switch ((yyvsp[(3) - (3)].include).token)
-+ switch ((yyvsp[0].include).token)
- {
-- case TK_NAME: (yyval.include).name = (yyvsp[(3) - (3)].include).name; break;
-- case TK_OPTIONAL: (yyval.include).optional = (yyvsp[(3) - (3)].include).optional; break;
-+ case TK_NAME: (yyval.include).name = (yyvsp[0].include).name; break;
-+ case TK_OPTIONAL: (yyval.include).optional = (yyvsp[0].include).optional; break;
- }
- }
-+#line 4759 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 239:
--#line 2182 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2182 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.include).token = TK_NAME;
-
-- (yyval.include).name = (yyvsp[(3) - (3)].text);
-+ (yyval.include).name = (yyvsp[0].text);
- (yyval.include).optional = FALSE;
- }
-+#line 4770 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 240:
--#line 2188 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2188 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.include).token = TK_OPTIONAL;
-
- (yyval.include).name = NULL;
-- (yyval.include).optional = (yyvsp[(3) - (3)].boolean);
-+ (yyval.include).optional = (yyvsp[0].boolean);
- }
-+#line 4781 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 241:
--#line 2196 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2196 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("%OptionalInclude is deprecated, use %Include and the 'optional' argument instead");
-
- if (notSkipping())
-- parseFile(NULL, (yyvsp[(2) - (2)].text), NULL, TRUE);
-+ parseFile(NULL, (yyvsp[0].text), NULL, TRUE);
- }
-+#line 4792 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 242:
--#line 2204 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2204 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- newImport((yyvsp[(2) - (2)].import).name);
-+ newImport((yyvsp[0].import).name);
- }
-+#line 4801 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 243:
--#line 2210 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2210 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.import).name = (yyvsp[(1) - (1)].text);
-+ (yyval.import).name = (yyvsp[0].text);
- }
-+#line 4811 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 244:
--#line 2215 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2215 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.import) = (yyvsp[(2) - (3)].import);
-+ (yyval.import) = (yyvsp[-1].import);
- }
-+#line 4819 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 246:
--#line 2221 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2221 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.import) = (yyvsp[(1) - (3)].import);
-+ (yyval.import) = (yyvsp[-2].import);
-
-- switch ((yyvsp[(3) - (3)].import).token)
-+ switch ((yyvsp[0].import).token)
- {
-- case TK_NAME: (yyval.import).name = (yyvsp[(3) - (3)].import).name; break;
-+ case TK_NAME: (yyval.import).name = (yyvsp[0].import).name; break;
- }
- }
-+#line 4832 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 247:
--#line 2231 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2231 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.import).token = TK_NAME;
-
-- (yyval.import).name = (yyvsp[(3) - (3)].text);
-+ (yyval.import).name = (yyvsp[0].text);
- }
-+#line 4842 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 248:
--#line 2238 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2238 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 4850 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 249:
--#line 2241 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2241 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4858 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 250:
--#line 2246 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2246 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 4866 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 251:
--#line 2249 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2249 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4874 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 252:
--#line 2254 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2254 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 4882 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 253:
--#line 2257 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2257 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4890 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 254:
--#line 2262 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2262 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->copying, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->copying, (yyvsp[0].codeb));
- }
-+#line 4899 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 255:
--#line 2268 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2268 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[0].codeb));
- }
-+#line 4908 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 256:
--#line 2274 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2274 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->hdrcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->hdrcode, (yyvsp[0].codeb));
- }
-+#line 4917 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 257:
--#line 2280 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2280 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4925 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 258:
--#line 2285 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2285 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4933 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 259:
--#line 2290 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2290 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4941 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 260:
--#line 2295 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2295 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4949 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 261:
--#line 2300 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2300 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4957 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 262:
--#line 2305 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2305 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4965 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 263:
--#line 2310 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2310 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4973 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 264:
--#line 2315 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2315 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4981 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 265:
--#line 2320 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2320 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4989 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 266:
--#line 2325 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2325 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 4997 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 267:
--#line 2330 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2330 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 5005 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 268:
--#line 2335 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2335 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 5013 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 269:
--#line 2340 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2340 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->cppcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->cppcode, (yyvsp[0].codeb));
- }
-+#line 5022 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 270:
--#line 2346 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2346 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 5030 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 271:
--#line 2351 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2351 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->preinitcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->preinitcode, (yyvsp[0].codeb));
- }
-+#line 5039 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 272:
--#line 2357 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2357 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->initcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->initcode, (yyvsp[0].codeb));
- }
-+#line 5048 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 273:
--#line 2363 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2363 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->postinitcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->postinitcode, (yyvsp[0].codeb));
- }
-+#line 5057 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 274:
--#line 2369 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2369 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->unitcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->unitcode, (yyvsp[0].codeb));
- }
-+#line 5066 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 275:
--#line 2375 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2375 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[0].codeb));
- }
-+#line 5075 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 276:
--#line 2381 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2381 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Deprecated. */
- }
-+#line 5083 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 277:
--#line 2386 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2386 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping() && !inMainModule())
-- appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[0].codeb));
- }
-+#line 5092 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 278:
--#line 2392 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2392 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentModule->typehintcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentModule->typehintcode, (yyvsp[0].codeb));
- }
-+#line 5101 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 279:
--#line 2398 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2398 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 5109 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 280:
--#line 2403 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2403 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping() && inMainModule())
-- appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
- }
-+#line 5118 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 281:
--#line 2409 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2409 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
- }
-+#line 5127 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 282:
--#line 2415 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2415 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- addAutoPyName(currentModule, (yyvsp[(2) - (2)].autopyname).remove_leading);
-+ addAutoPyName(currentModule, (yyvsp[0].autopyname).remove_leading);
- }
-+#line 5136 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 283:
--#line 2421 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2421 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.autopyname) = (yyvsp[(2) - (3)].autopyname);
-+ (yyval.autopyname) = (yyvsp[-1].autopyname);
- }
-+#line 5144 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 285:
--#line 2427 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2427 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.autopyname) = (yyvsp[(1) - (3)].autopyname);
-+ (yyval.autopyname) = (yyvsp[-2].autopyname);
-
-- switch ((yyvsp[(3) - (3)].autopyname).token)
-+ switch ((yyvsp[0].autopyname).token)
- {
-- case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].autopyname).remove_leading; break;
-+ case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[0].autopyname).remove_leading; break;
- }
- }
-+#line 5157 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 286:
--#line 2437 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2437 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.autopyname).token = TK_REMOVELEADING;
-
-- (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].text);
-+ (yyval.autopyname).remove_leading = (yyvsp[0].text);
- }
-+#line 5167 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 287:
--#line 2444 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2444 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.docstr) = sipMalloc(sizeof(docstringDef));
-
-- (yyval.docstr)->signature = (yyvsp[(2) - (3)].docstring).signature;
-- (yyval.docstr)->text = (yyvsp[(3) - (3)].codeb)->frag;
-- free((yyvsp[(3) - (3)].codeb));
-+ (yyval.docstr)->signature = (yyvsp[-1].docstring).signature;
-+ (yyval.docstr)->text = (yyvsp[0].codeb)->frag;
-+ free((yyvsp[0].codeb));
-
- /* Format the docstring. */
-- if ((yyvsp[(2) - (3)].docstring).format == deindented)
-+ if ((yyvsp[-1].docstring).format == deindented)
- {
- const char *cp;
- char *dp;
-@@ -5388,158 +5250,174 @@
- *dp = '\0';
- }
- }
-+#line 5254 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 288:
--#line 2528 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2528 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.docstring).format = currentModule->defdocstringfmt;
- (yyval.docstring).signature = currentModule->defdocstringsig;
- }
-+#line 5263 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 289:
--#line 2532 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2532 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.docstring).format = convertFormat((yyvsp[(1) - (1)].text));
-+ (yyval.docstring).format = convertFormat((yyvsp[0].text));
- (yyval.docstring).signature = currentModule->defdocstringsig;
- }
-+#line 5274 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 290:
--#line 2538 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2538 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.docstring) = (yyvsp[(2) - (3)].docstring);
-+ (yyval.docstring) = (yyvsp[-1].docstring);
- }
-+#line 5282 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 292:
--#line 2544 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2544 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.docstring) = (yyvsp[(1) - (3)].docstring);
-+ (yyval.docstring) = (yyvsp[-2].docstring);
-
-- switch ((yyvsp[(3) - (3)].docstring).token)
-+ switch ((yyvsp[0].docstring).token)
- {
-- case TK_FORMAT: (yyval.docstring).format = (yyvsp[(3) - (3)].docstring).format; break;
-- case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[(3) - (3)].docstring).signature; break;
-+ case TK_FORMAT: (yyval.docstring).format = (yyvsp[0].docstring).format; break;
-+ case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[0].docstring).signature; break;
- }
- }
-+#line 5296 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 293:
--#line 2555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.docstring).token = TK_FORMAT;
-
-- (yyval.docstring).format = convertFormat((yyvsp[(3) - (3)].text));
-+ (yyval.docstring).format = convertFormat((yyvsp[0].text));
- (yyval.docstring).signature = currentModule->defdocstringsig;
- }
-+#line 5307 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 294:
--#line 2561 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2561 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.docstring).token = TK_SIGNATURE;
-
- (yyval.docstring).format = currentModule->defdocstringfmt;
-- (yyval.docstring).signature = convertSignature((yyvsp[(3) - (3)].text));
-+ (yyval.docstring).signature = convertSignature((yyvsp[0].text));
- }
-+#line 5318 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 295:
--#line 2569 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2569 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.docstr) = NULL;
- }
-+#line 5326 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 297:
--#line 2575 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2575 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (3)].extract).id == NULL)
-+ if ((yyvsp[-1].extract).id == NULL)
- yyerror("%Extract must have an 'id' argument");
-
- if (notSkipping())
-- addExtractPart(currentSpec, (yyvsp[(2) - (3)].extract).id, (yyvsp[(2) - (3)].extract).order, (yyvsp[(3) - (3)].codeb));
-+ addExtractPart(currentSpec, (yyvsp[-1].extract).id, (yyvsp[-1].extract).order, (yyvsp[0].codeb));
- }
-+#line 5338 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 298:
--#line 2584 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2584 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- resetLexerState();
-
-- (yyval.extract).id = (yyvsp[(1) - (1)].text);
-+ (yyval.extract).id = (yyvsp[0].text);
- (yyval.extract).order = -1;
- }
-+#line 5349 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 299:
--#line 2590 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2590 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.extract) = (yyvsp[(2) - (3)].extract);
-+ (yyval.extract) = (yyvsp[-1].extract);
- }
-+#line 5357 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 301:
--#line 2596 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2596 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.extract) = (yyvsp[(1) - (3)].extract);
-+ (yyval.extract) = (yyvsp[-2].extract);
-
-- switch ((yyvsp[(3) - (3)].extract).token)
-+ switch ((yyvsp[0].extract).token)
- {
-- case TK_ID: (yyval.extract).id = (yyvsp[(3) - (3)].extract).id; break;
-- case TK_ORDER: (yyval.extract).order = (yyvsp[(3) - (3)].extract).order; break;
-+ case TK_ID: (yyval.extract).id = (yyvsp[0].extract).id; break;
-+ case TK_ORDER: (yyval.extract).order = (yyvsp[0].extract).order; break;
- }
- }
-+#line 5371 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 302:
--#line 2607 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2607 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.extract).token = TK_ID;
-
-- (yyval.extract).id = (yyvsp[(3) - (3)].text);
-+ (yyval.extract).id = (yyvsp[0].text);
- (yyval.extract).order = -1;
- }
-+#line 5382 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 303:
--#line 2613 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2613 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.extract).token = TK_ORDER;
-
-- if ((yyvsp[(3) - (3)].number) < 0)
-+ if ((yyvsp[0].number) < 0)
- yyerror("The 'order' of an %Extract directive must not be negative");
-
- (yyval.extract).id = NULL;
-- (yyval.extract).order = (yyvsp[(3) - (3)].number);
-+ (yyval.extract).order = (yyvsp[0].number);
- }
-+#line 5396 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 304:
--#line 2624 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2624 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Deprecated. */
- }
-+#line 5404 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 307:
--#line 2633 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2633 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(1) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[-1].codeb);
-
-- append(&(yyval.codeb)->frag, (yyvsp[(2) - (2)].codeb)->frag);
-+ append(&(yyval.codeb)->frag, (yyvsp[0].codeb)->frag);
-
-- free((yyvsp[(2) - (2)].codeb)->frag);
-- free((yyvsp[(2) - (2)].codeb));
-+ free((yyvsp[0].codeb)->frag);
-+ free((yyvsp[0].codeb));
- }
-+#line 5417 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 308:
--#line 2643 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2643 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -5550,71 +5428,79 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
- if (sectionFlags != 0 && (sectionFlags & ~(SECT_IS_PUBLIC | SECT_IS_PROT)) != 0)
- yyerror("Class enums must be in the public or protected sections");
-
-- if (currentSpec->genc && (yyvsp[(2) - (4)].boolean))
-+ if (currentSpec->genc && (yyvsp[-2].boolean))
- yyerror("Scoped enums not allowed in a C module");
-
- currentEnum = newEnum(currentSpec, currentModule,
-- currentMappedType, (yyvsp[(3) - (4)].text), &(yyvsp[(4) - (4)].optflags), sectionFlags, (yyvsp[(2) - (4)].boolean));
-+ currentMappedType, (yyvsp[-1].text), &(yyvsp[0].optflags), sectionFlags, (yyvsp[-2].boolean));
- }
- }
-+#line 5444 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 310:
--#line 2667 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2667 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = FALSE;
- }
-+#line 5452 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 311:
--#line 2670 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2670 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = TRUE;
- }
-+#line 5460 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 312:
--#line 2673 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2673 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = TRUE;
- }
-+#line 5468 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 313:
--#line 2678 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2678 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.text) = NULL;
- }
-+#line 5476 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 314:
--#line 2681 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2681 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.text) = (yyvsp[(1) - (1)].text);
-+ (yyval.text) = (yyvsp[0].text);
- }
-+#line 5484 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 315:
--#line 2686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.text) = NULL;
- }
-+#line 5492 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 316:
--#line 2689 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2689 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.text) = (yyvsp[(1) - (1)].text);
-+ (yyval.text) = (yyvsp[0].text);
- }
-+#line 5500 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 323:
--#line 2704 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2704 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -5626,15 +5512,15 @@
-
- enumMemberDef *emd, **tail;
-
-- checkAnnos(&(yyvsp[(3) - (4)].optflags), annos);
-+ checkAnnos(&(yyvsp[-1].optflags), annos);
-
- /* Note that we don't use the assigned value. */
- emd = sipMalloc(sizeof (enumMemberDef));
-
- emd->pyname = cacheName(currentSpec,
-- getPythonName(currentModule, &(yyvsp[(3) - (4)].optflags), (yyvsp[(1) - (4)].text)));
-- emd->cname = (yyvsp[(1) - (4)].text);
-- emd->no_typehint = getNoTypeHint(&(yyvsp[(3) - (4)].optflags));
-+ getPythonName(currentModule, &(yyvsp[-1].optflags), (yyvsp[-3].text)));
-+ emd->cname = (yyvsp[-3].text);
-+ emd->no_typehint = getNoTypeHint(&(yyvsp[-1].optflags));
- emd->ed = currentEnum;
- emd->platforms = currentPlatforms;
- emd->next = NULL;
-@@ -5652,207 +5538,232 @@
- setIsUsedName(emd->pyname);
- }
- }
-+#line 5542 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 328:
--#line 2751 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2751 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.valp) = NULL;
- }
-+#line 5550 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 329:
--#line 2754 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2754 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.valp) = (yyvsp[(2) - (2)].valp);
-+ (yyval.valp) = (yyvsp[0].valp);
- }
-+#line 5558 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 331:
--#line 2760 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2760 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- valueDef *vd;
-
-- if ((yyvsp[(1) - (3)].valp) -> vtype == string_value || (yyvsp[(3) - (3)].valp) -> vtype == string_value)
-+ if ((yyvsp[-2].valp) -> vtype == string_value || (yyvsp[0].valp) -> vtype == string_value)
- yyerror("Invalid binary operator for string");
-
- /* Find the last value in the existing expression. */
-
-- for (vd = (yyvsp[(1) - (3)].valp); vd -> next != NULL; vd = vd -> next)
-+ for (vd = (yyvsp[-2].valp); vd -> next != NULL; vd = vd -> next)
- ;
-
-- vd -> vbinop = (yyvsp[(2) - (3)].qchar);
-- vd -> next = (yyvsp[(3) - (3)].valp);
-+ vd -> vbinop = (yyvsp[-1].qchar);
-+ vd -> next = (yyvsp[0].valp);
-
-- (yyval.valp) = (yyvsp[(1) - (3)].valp);
-+ (yyval.valp) = (yyvsp[-2].valp);
- }
-+#line 5579 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 332:
--#line 2778 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2778 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '-';
- }
-+#line 5587 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 333:
--#line 2781 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2781 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '+';
- }
-+#line 5595 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 334:
--#line 2784 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '*';
- }
-+#line 5603 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 335:
--#line 2787 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2787 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '/';
- }
-+#line 5611 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 336:
--#line 2790 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '&';
- }
-+#line 5619 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 337:
--#line 2793 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2793 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '|';
- }
-+#line 5627 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 338:
--#line 2798 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2798 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '\0';
- }
-+#line 5635 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 339:
--#line 2801 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2801 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '!';
- }
-+#line 5643 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 340:
--#line 2804 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2804 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '~';
- }
-+#line 5651 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 341:
--#line 2807 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2807 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '-';
- }
-+#line 5659 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 342:
--#line 2810 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2810 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '+';
- }
-+#line 5667 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 343:
--#line 2813 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2813 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '*';
- }
-+#line 5675 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 344:
--#line 2816 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2816 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.qchar) = '&';
- }
-+#line 5683 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 345:
--#line 2821 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2821 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (3)].qchar) != '\0' && (yyvsp[(3) - (3)].value).vtype == string_value)
-+ if ((yyvsp[-1].qchar) != '\0' && (yyvsp[0].value).vtype == string_value)
- yyerror("Invalid unary operator for string");
-
- /* Convert the value to a simple expression on the heap. */
- (yyval.valp) = sipMalloc(sizeof (valueDef));
-
-- *(yyval.valp) = (yyvsp[(3) - (3)].value);
-- (yyval.valp)->vunop = (yyvsp[(2) - (3)].qchar);
-+ *(yyval.valp) = (yyvsp[0].value);
-+ (yyval.valp)->vunop = (yyvsp[-1].qchar);
- (yyval.valp)->vbinop = '\0';
-- (yyval.valp)->cast = (yyvsp[(1) - (3)].scpvalp);
-+ (yyval.valp)->cast = (yyvsp[-2].scpvalp);
- (yyval.valp)->next = NULL;
- }
-+#line 5701 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 346:
--#line 2836 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2836 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.scpvalp) = NULL;
- }
-+#line 5709 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 347:
--#line 2839 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2839 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.scpvalp) = (yyvsp[(2) - (3)].scpvalp);
-+ (yyval.scpvalp) = (yyvsp[-1].scpvalp);
- }
-+#line 5717 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 348:
--#line 2844 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2844 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec->genc)
- yyerror("Scoped names are not allowed in a C module");
-
-- (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[(2) - (2)].scpvalp));
-+ (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[0].scpvalp));
- }
-+#line 5728 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 351:
--#line 2854 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2854 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec->genc)
- yyerror("Scoped names are not allowed in a C module");
-
-- appendScopedName(&(yyvsp[(1) - (3)].scpvalp), (yyvsp[(3) - (3)].scpvalp));
-+ appendScopedName(&(yyvsp[-2].scpvalp), (yyvsp[0].scpvalp));
- }
-+#line 5739 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 352:
--#line 2862 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2862 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.scpvalp) = text2scopePart((yyvsp[(1) - (1)].text));
-+ (yyval.scpvalp) = text2scopePart((yyvsp[0].text));
- }
-+#line 5747 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 353:
--#line 2867 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2867 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = TRUE;
- }
-+#line 5755 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 354:
--#line 2870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = FALSE;
- }
-+#line 5763 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 355:
--#line 2875 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2875 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /*
- * We let the C++ compiler decide if the value is a valid one - no
-@@ -5860,93 +5771,103 @@
- */
-
- (yyval.value).vtype = scoped_value;
-- (yyval.value).u.vscp = (yyvsp[(1) - (1)].scpvalp);
-+ (yyval.value).u.vscp = (yyvsp[0].scpvalp);
- }
-+#line 5777 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 356:
--#line 2884 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2884 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- fcallDef *fcd;
-
- fcd = sipMalloc(sizeof (fcallDef));
-- *fcd = (yyvsp[(3) - (4)].fcall);
-- fcd -> type = (yyvsp[(1) - (4)].memArg);
-+ *fcd = (yyvsp[-1].fcall);
-+ fcd -> type = (yyvsp[-3].memArg);
-
- (yyval.value).vtype = fcall_value;
- (yyval.value).u.fcd = fcd;
- }
-+#line 5792 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 357:
--#line 2894 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2894 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = real_value;
-- (yyval.value).u.vreal = (yyvsp[(1) - (1)].real);
-+ (yyval.value).u.vreal = (yyvsp[0].real);
- }
-+#line 5801 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 358:
--#line 2898 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2898 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = numeric_value;
-- (yyval.value).u.vnum = (yyvsp[(1) - (1)].number);
-+ (yyval.value).u.vnum = (yyvsp[0].number);
- }
-+#line 5810 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 359:
--#line 2902 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2902 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = numeric_value;
-- (yyval.value).u.vnum = (yyvsp[(1) - (1)].boolean);
-+ (yyval.value).u.vnum = (yyvsp[0].boolean);
- }
-+#line 5819 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 360:
--#line 2906 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2906 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = numeric_value;
- (yyval.value).u.vnum = 0;
- }
-+#line 5828 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 361:
--#line 2910 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2910 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = string_value;
-- (yyval.value).u.vstr = (yyvsp[(1) - (1)].text);
-+ (yyval.value).u.vstr = (yyvsp[0].text);
- }
-+#line 5837 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 362:
--#line 2914 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2914 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.value).vtype = qchar_value;
-- (yyval.value).u.vqchar = (yyvsp[(1) - (1)].qchar);
-+ (yyval.value).u.vqchar = (yyvsp[0].qchar);
- }
-+#line 5846 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 363:
--#line 2920 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2920 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* No values. */
-
- (yyval.fcall).nrArgs = 0;
- }
-+#line 5856 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 364:
--#line 2925 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2925 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* The single or first expression. */
-
-- (yyval.fcall).args[0] = (yyvsp[(1) - (1)].valp);
-+ (yyval.fcall).args[0] = (yyvsp[0].valp);
- (yyval.fcall).nrArgs = 1;
- }
-+#line 5867 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 365:
--#line 2931 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2931 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Check that it wasn't ...(,expression...). */
-
-@@ -5955,18 +5876,19 @@
-
- /* Check there is room. */
-
-- if ((yyvsp[(1) - (3)].fcall).nrArgs == MAX_NR_ARGS)
-+ if ((yyvsp[-2].fcall).nrArgs == MAX_NR_ARGS)
- yyerror("Internal error - increase the value of MAX_NR_ARGS");
-
-- (yyval.fcall) = (yyvsp[(1) - (3)].fcall);
-+ (yyval.fcall) = (yyvsp[-2].fcall);
-
-- (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[(3) - (3)].valp);
-+ (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[0].valp);
- (yyval.fcall).nrArgs++;
- }
-+#line 5888 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 366:
--#line 2949 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2949 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -5983,16 +5905,17 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(4) - (6)].optflags), annos);
-+ checkAnnos(&(yyvsp[-2].optflags), annos);
-
-- applyTypeFlags(currentModule, &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags));
-- newTypedef(currentSpec, currentModule, (yyvsp[(3) - (6)].text), &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags), (yyvsp[(6) - (6)].docstr));
-+ applyTypeFlags(currentModule, &(yyvsp[-4].memArg), &(yyvsp[-2].optflags));
-+ newTypedef(currentSpec, currentModule, (yyvsp[-3].text), &(yyvsp[-4].memArg), &(yyvsp[-2].optflags), (yyvsp[0].docstr));
- }
- }
-+#line 5915 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 367:
--#line 2971 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 2971 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6011,40 +5934,42 @@
- signatureDef *sig;
- argDef ftype;
-
-- checkAnnos(&(yyvsp[(10) - (12)].optflags), annos);
-+ checkAnnos(&(yyvsp[-2].optflags), annos);
-
-- applyTypeFlags(currentModule, &(yyvsp[(2) - (12)].memArg), &(yyvsp[(10) - (12)].optflags));
-+ applyTypeFlags(currentModule, &(yyvsp[-10].memArg), &(yyvsp[-2].optflags));
-
- memset(&ftype, 0, sizeof (argDef));
-
- /* Create the full signature on the heap. */
- sig = sipMalloc(sizeof (signatureDef));
-- *sig = (yyvsp[(8) - (12)].signature);
-- sig->result = (yyvsp[(2) - (12)].memArg);
-+ *sig = (yyvsp[-4].signature);
-+ sig->result = (yyvsp[-10].memArg);
-
- /* Create the full type. */
- ftype.atype = function_type;
- ftype.nrderefs = 1;
- ftype.u.sa = sig;
-
-- newTypedef(currentSpec, currentModule, (yyvsp[(5) - (12)].text), &ftype, &(yyvsp[(10) - (12)].optflags), (yyvsp[(12) - (12)].docstr));
-+ newTypedef(currentSpec, currentModule, (yyvsp[-7].text), &ftype, &(yyvsp[-2].optflags), (yyvsp[0].docstr));
- }
- }
-+#line 5957 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 368:
--#line 3010 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3010 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if (currentSpec -> genc && (yyvsp[(2) - (2)].scpvalp)->next != NULL)
-+ if (currentSpec -> genc && (yyvsp[0].scpvalp)->next != NULL)
- yyerror("Namespaces not allowed in a C module");
-
- if (notSkipping())
- currentSupers = NULL;
- }
-+#line 5969 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 369:
--#line 3016 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3016 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6074,32 +5999,35 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
- if (currentSpec->genc && currentSupers != NULL)
- yyerror("Super-classes not allowed in a C module struct");
-
-- defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
-+ defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
- sectionFlags = SECT_IS_PUBLIC;
- }
- }
-+#line 6012 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 370:
--#line 3053 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3053 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
-+ completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
- }
-+#line 6021 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 371:
--#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentIsTemplate = TRUE;}
-+#line 6027 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 372:
--#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec->genc)
- yyerror("Class templates not allowed in a C module");
-@@ -6111,12 +6039,12 @@
- /*
- * Make sure there is room for the extra class name argument.
- */
-- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
- yyerror("Internal error - increase the value of MAX_NR_ARGS");
-
- tcd = sipMalloc(sizeof (classTmplDef));
-- tcd->sig = (yyvsp[(1) - (3)].signature);
-- tcd->cd = (yyvsp[(3) - (3)].klass);
-+ tcd->sig = (yyvsp[-2].signature);
-+ tcd->cd = (yyvsp[0].klass);
- tcd->next = currentSpec->classtemplates;
-
- currentSpec->classtemplates = tcd;
-@@ -6124,17 +6052,19 @@
-
- currentIsTemplate = FALSE;
- }
-+#line 6056 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 373:
--#line 3085 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3085 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.signature) = (yyvsp[(3) - (4)].signature);
-+ (yyval.signature) = (yyvsp[-1].signature);
- }
-+#line 6064 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 374:
--#line 3090 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3090 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec->genc)
- yyerror("Class definition not allowed in a C module");
-@@ -6142,10 +6072,11 @@
- if (notSkipping())
- currentSupers = NULL;
- }
-+#line 6076 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 375:
--#line 3096 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3096 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6174,30 +6105,32 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
-- defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
-+ defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
- sectionFlags = SECT_IS_PRIVATE;
- }
- }
-+#line 6115 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 376:
--#line 3129 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3129 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- (yyval.klass) = completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
-+ (yyval.klass) = completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
- }
-+#line 6124 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 381:
--#line 3143 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3143 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if (notSkipping() && (yyvsp[(1) - (2)].token) == TK_PUBLIC)
-+ if (notSkipping() && (yyvsp[-1].token) == TK_PUBLIC)
- {
- argDef ad;
- classDef *super;
-- scopedNameDef *snd = (yyvsp[(2) - (2)].scpvalp);
-+ scopedNameDef *snd = (yyvsp[0].scpvalp);
-
- /*
- * This is a hack to allow typedef'ed classes to be used before
-@@ -6242,52 +6175,59 @@
- appendToClassList(&currentSupers, super);
- }
- }
-+#line 6179 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 382:
--#line 3195 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3195 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.token) = TK_PUBLIC;
- }
-+#line 6187 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 383:
--#line 3198 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3198 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.token) = TK_PUBLIC;
- }
-+#line 6195 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 384:
--#line 3201 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3201 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.token) = TK_PROTECTED;
- }
-+#line 6203 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 385:
--#line 3204 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3204 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.token) = TK_PRIVATE;
- }
-+#line 6211 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 386:
--#line 3209 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3209 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = FALSE;
- }
-+#line 6219 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 387:
--#line 3212 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3212 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.boolean) = TRUE;
- }
-+#line 6227 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 401:
--#line 3232 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3232 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6296,29 +6236,32 @@
- if (scope->docstring != NULL)
- yyerror("%Docstring already given for class");
-
-- scope->docstring = (yyvsp[(1) - (1)].docstr);
-+ scope->docstring = (yyvsp[0].docstr);
- }
- }
-+#line 6243 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 402:
--#line 3243 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3243 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentScope()->cppcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&currentScope()->cppcode, (yyvsp[0].codeb));
- }
-+#line 6252 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 403:
--#line 3247 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3247 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
-- appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[0].codeb));
- }
-+#line 6261 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 404:
--#line 3251 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3251 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6327,13 +6270,14 @@
- if (scope->travcode != NULL)
- yyerror("%GCTraverseCode already given for class");
-
-- appendCodeBlock(&scope->travcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->travcode, (yyvsp[0].codeb));
- }
- }
-+#line 6277 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 405:
--#line 3262 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3262 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6342,13 +6286,14 @@
- if (scope->clearcode != NULL)
- yyerror("%GCClearCode already given for class");
-
-- appendCodeBlock(&scope->clearcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->clearcode, (yyvsp[0].codeb));
- }
- }
-+#line 6293 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 406:
--#line 3273 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3273 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6357,13 +6302,14 @@
- if (scope->getbufcode != NULL)
- yyerror("%BIGetBufferCode already given for class");
-
-- appendCodeBlock(&scope->getbufcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->getbufcode, (yyvsp[0].codeb));
- }
- }
-+#line 6309 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 407:
--#line 3284 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3284 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6372,13 +6318,14 @@
- if (scope->releasebufcode != NULL)
- yyerror("%BIReleaseBufferCode already given for class");
-
-- appendCodeBlock(&scope->releasebufcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->releasebufcode, (yyvsp[0].codeb));
- }
- }
-+#line 6325 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 408:
--#line 3295 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3295 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6387,13 +6334,14 @@
- if (scope->readbufcode != NULL)
- yyerror("%BIGetReadBufferCode already given for class");
-
-- appendCodeBlock(&scope->readbufcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->readbufcode, (yyvsp[0].codeb));
- }
- }
-+#line 6341 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 409:
--#line 3306 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3306 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6402,13 +6350,14 @@
- if (scope->writebufcode != NULL)
- yyerror("%BIGetWriteBufferCode already given for class");
-
-- appendCodeBlock(&scope->writebufcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->writebufcode, (yyvsp[0].codeb));
- }
- }
-+#line 6357 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 410:
--#line 3317 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3317 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6417,13 +6366,14 @@
- if (scope->segcountcode != NULL)
- yyerror("%BIGetSegCountCode already given for class");
-
-- appendCodeBlock(&scope->segcountcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->segcountcode, (yyvsp[0].codeb));
- }
- }
-+#line 6373 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 411:
--#line 3328 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3328 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6432,13 +6382,14 @@
- if (scope->charbufcode != NULL)
- yyerror("%BIGetCharBufferCode already given for class");
-
-- appendCodeBlock(&scope->charbufcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->charbufcode, (yyvsp[0].codeb));
- }
- }
-+#line 6389 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 412:
--#line 3339 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3339 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6447,13 +6398,14 @@
- if (scope->instancecode != NULL)
- yyerror("%InstanceCode already given for class");
-
-- appendCodeBlock(&scope->instancecode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->instancecode, (yyvsp[0].codeb));
- }
- }
-+#line 6405 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 413:
--#line 3350 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3350 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6462,13 +6414,14 @@
- if (scope->picklecode != NULL)
- yyerror("%PickleCode already given for class");
-
-- appendCodeBlock(&scope->picklecode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->picklecode, (yyvsp[0].codeb));
- }
- }
-+#line 6421 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 414:
--#line 3361 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3361 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6477,13 +6430,14 @@
- if (scope->finalcode != NULL)
- yyerror("%FinalisationCode already given for class");
-
-- appendCodeBlock(&scope->finalcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->finalcode, (yyvsp[0].codeb));
- }
- }
-+#line 6437 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 415:
--#line 3372 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3372 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6492,13 +6446,14 @@
- if (scope->typehintcode != NULL)
- yyerror("%TypeHintCode already given for class");
-
-- appendCodeBlock(&scope->typehintcode, (yyvsp[(1) - (1)].codeb));
-+ appendCodeBlock(&scope->typehintcode, (yyvsp[0].codeb));
- }
- }
-+#line 6453 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 419:
--#line 3386 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3386 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6507,13 +6462,14 @@
- if (scope->convtosubcode != NULL)
- yyerror("Class has more than one %ConvertToSubClassCode directive");
-
-- appendCodeBlock(&scope->convtosubcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&scope->convtosubcode, (yyvsp[0].codeb));
- }
- }
-+#line 6469 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 420:
--#line 3397 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3397 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6522,13 +6478,14 @@
- if (scope->convtocode != NULL)
- yyerror("Class has more than one %ConvertToTypeCode directive");
-
-- appendCodeBlock(&scope->convtocode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&scope->convtocode, (yyvsp[0].codeb));
- }
- }
-+#line 6485 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 421:
--#line 3408 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3408 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6537,46 +6494,50 @@
- if (scope->convfromcode != NULL)
- yyerror("Class has more than one %ConvertFromTypeCode directive");
-
-- appendCodeBlock(&scope->convfromcode, (yyvsp[(2) - (2)].codeb));
-+ appendCodeBlock(&scope->convfromcode, (yyvsp[0].codeb));
- }
- }
-+#line 6501 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 422:
--#line 3419 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3419 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("public section not allowed in a C module");
-
- if (notSkipping())
-- sectionFlags = SECT_IS_PUBLIC | (yyvsp[(2) - (3)].number);
-+ sectionFlags = SECT_IS_PUBLIC | (yyvsp[-1].number);
- }
-+#line 6513 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 423:
--#line 3426 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3426 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("protected section not allowed in a C module");
-
- if (notSkipping())
-- sectionFlags = SECT_IS_PROT | (yyvsp[(2) - (3)].number);
-+ sectionFlags = SECT_IS_PROT | (yyvsp[-1].number);
- }
-+#line 6525 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 424:
--#line 3433 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3433 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("private section not allowed in a C module");
-
- if (notSkipping())
-- sectionFlags = SECT_IS_PRIVATE | (yyvsp[(2) - (3)].number);
-+ sectionFlags = SECT_IS_PRIVATE | (yyvsp[-1].number);
- }
-+#line 6537 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 425:
--#line 3440 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3440 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("signals section not allowed in a C module");
-@@ -6584,125 +6545,137 @@
- if (notSkipping())
- sectionFlags = SECT_IS_SIGNAL;
- }
-+#line 6549 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 426:
--#line 3449 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3449 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (3)].property).name == NULL)
-+ if ((yyvsp[-1].property).name == NULL)
- yyerror("A %Property directive must have a 'name' argument");
-
-- if ((yyvsp[(2) - (3)].property).get == NULL)
-+ if ((yyvsp[-1].property).get == NULL)
- yyerror("A %Property directive must have a 'get' argument");
-
- if (notSkipping())
- addProperty(currentSpec, currentModule, currentScope(),
-- (yyvsp[(2) - (3)].property).name, (yyvsp[(2) - (3)].property).get, (yyvsp[(2) - (3)].property).set, (yyvsp[(3) - (3)].property).docstring);
-+ (yyvsp[-1].property).name, (yyvsp[-1].property).get, (yyvsp[-1].property).set, (yyvsp[0].property).docstring);
- }
-+#line 6565 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 427:
--#line 3462 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3462 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.property) = (yyvsp[(2) - (3)].property);
-+ (yyval.property) = (yyvsp[-1].property);
- }
-+#line 6573 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 429:
--#line 3468 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3468 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.property) = (yyvsp[(1) - (3)].property);
-+ (yyval.property) = (yyvsp[-2].property);
-
-- switch ((yyvsp[(3) - (3)].property).token)
-+ switch ((yyvsp[0].property).token)
- {
-- case TK_GET: (yyval.property).get = (yyvsp[(3) - (3)].property).get; break;
-- case TK_NAME: (yyval.property).name = (yyvsp[(3) - (3)].property).name; break;
-- case TK_SET: (yyval.property).set = (yyvsp[(3) - (3)].property).set; break;
-+ case TK_GET: (yyval.property).get = (yyvsp[0].property).get; break;
-+ case TK_NAME: (yyval.property).name = (yyvsp[0].property).name; break;
-+ case TK_SET: (yyval.property).set = (yyvsp[0].property).set; break;
- }
- }
-+#line 6588 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 430:
--#line 3480 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3480 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = TK_GET;
-
-- (yyval.property).get = (yyvsp[(3) - (3)].text);
-+ (yyval.property).get = (yyvsp[0].text);
- (yyval.property).name = NULL;
- (yyval.property).set = NULL;
- }
-+#line 6600 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 431:
--#line 3487 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3487 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = TK_NAME;
-
- (yyval.property).get = NULL;
-- (yyval.property).name = (yyvsp[(3) - (3)].text);
-+ (yyval.property).name = (yyvsp[0].text);
- (yyval.property).set = NULL;
- }
-+#line 6612 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 432:
--#line 3494 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3494 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = TK_SET;
-
- (yyval.property).get = NULL;
- (yyval.property).name = NULL;
-- (yyval.property).set = (yyvsp[(3) - (3)].text);
-+ (yyval.property).set = (yyvsp[0].text);
- }
-+#line 6624 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 433:
--#line 3503 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3503 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = 0;
- (yyval.property).docstring = NULL;
- }
-+#line 6633 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 434:
--#line 3507 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3507 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.property) = (yyvsp[(2) - (4)].property);
-+ (yyval.property) = (yyvsp[-2].property);
- }
-+#line 6641 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 436:
--#line 3513 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3513 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.property) = (yyvsp[(1) - (2)].property);
-+ (yyval.property) = (yyvsp[-1].property);
-
-- switch ((yyvsp[(2) - (2)].property).token)
-+ switch ((yyvsp[0].property).token)
- {
-- case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[(2) - (2)].property).docstring; break;
-+ case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[0].property).docstring; break;
- }
- }
-+#line 6654 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 437:
--#line 3523 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3523 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = TK_IF;
- }
-+#line 6662 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 438:
--#line 3526 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3526 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.property).token = TK_END;
- }
-+#line 6670 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 439:
--#line 3529 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3529 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.property).token = TK_DOCSTRING;
-- (yyval.property).docstring = (yyvsp[(1) - (1)].docstr);
-+ (yyval.property).docstring = (yyvsp[0].docstr);
- }
- else
- {
-@@ -6710,24 +6683,27 @@
- (yyval.property).docstring = NULL;
- }
- }
-+#line 6687 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 442:
--#line 3547 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3547 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = 0;
- }
-+#line 6695 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 443:
--#line 3550 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3550 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = SECT_IS_SLOT;
- }
-+#line 6703 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 444:
--#line 3555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Note that we allow non-virtual dtors in C modules. */
-
-@@ -6741,22 +6717,22 @@
-
- classDef *cd = currentScope();
-
-- checkAnnos(&(yyvsp[(8) - (12)].optflags), annos);
-+ checkAnnos(&(yyvsp[-4].optflags), annos);
-
-- if (strcmp(classBaseName(cd),(yyvsp[(3) - (12)].text)) != 0)
-+ if (strcmp(classBaseName(cd),(yyvsp[-9].text)) != 0)
- yyerror("Destructor doesn't have the same name as its class");
-
- if (isDtor(cd))
- yyerror("Destructor has already been defined");
-
-- if (currentSpec -> genc && (yyvsp[(10) - (12)].codeb) == NULL)
-+ if (currentSpec -> genc && (yyvsp[-2].codeb) == NULL)
- yyerror("Destructor in C modules must include %MethodCode");
-
-
-- appendCodeBlock(&cd->dealloccode, (yyvsp[(10) - (12)].codeb)); /* premethodcode */
-- appendCodeBlock(&cd->dealloccode, (yyvsp[(11) - (12)].codeb)); /* methodcode */
-- appendCodeBlock(&cd->dtorcode, (yyvsp[(12) - (12)].codeb));
-- cd -> dtorexceptions = (yyvsp[(6) - (12)].throwlist);
-+ appendCodeBlock(&cd->dealloccode, (yyvsp[-2].codeb)); /* premethodcode */
-+ appendCodeBlock(&cd->dealloccode, (yyvsp[-1].codeb)); /* methodcode */
-+ appendCodeBlock(&cd->dtorcode, (yyvsp[0].codeb));
-+ cd -> dtorexceptions = (yyvsp[-6].throwlist);
-
- /*
- * Note that we don't apply the protected/public hack to dtors
-@@ -6764,9 +6740,9 @@
- */
- cd->classflags |= sectionFlags;
-
-- if ((yyvsp[(7) - (12)].number))
-+ if ((yyvsp[-5].number))
- {
-- if (!(yyvsp[(1) - (12)].number))
-+ if (!(yyvsp[-11].number))
- yyerror("Abstract destructor must be virtual");
-
- setIsAbstractClass(cd);
-@@ -6776,7 +6752,7 @@
- * The class has a shadow if we have a virtual dtor or some
- * dtor code.
- */
-- if ((yyvsp[(1) - (12)].number) || (yyvsp[(11) - (12)].codeb) != NULL)
-+ if ((yyvsp[-11].number) || (yyvsp[-1].codeb) != NULL)
- {
- if (currentSpec -> genc)
- yyerror("Virtual destructor or %VirtualCatcherCode not allowed in a C module");
-@@ -6784,21 +6760,23 @@
- setNeedsShadow(cd);
- }
-
-- if (getReleaseGIL(&(yyvsp[(8) - (12)].optflags)))
-+ if (getReleaseGIL(&(yyvsp[-4].optflags)))
- setIsReleaseGILDtor(cd);
-- else if (getHoldGIL(&(yyvsp[(8) - (12)].optflags)))
-+ else if (getHoldGIL(&(yyvsp[-4].optflags)))
- setIsHoldGILDtor(cd);
- }
- }
-+#line 6770 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 445:
--#line 3619 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3619 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentCtorIsExplicit = TRUE;}
-+#line 6776 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 448:
--#line 3623 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3623 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Note that we allow ctors in C modules. */
-
-@@ -6821,11 +6799,11 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(6) - (11)].optflags), annos);
-+ checkAnnos(&(yyvsp[-5].optflags), annos);
-
- if (currentSpec -> genc)
- {
-- if ((yyvsp[(10) - (11)].codeb) == NULL && (yyvsp[(3) - (11)].signature).nrArgs != 0)
-+ if ((yyvsp[-1].codeb) == NULL && (yyvsp[-8].signature).nrArgs != 0)
- yyerror("Constructors with arguments in C modules must include %MethodCode");
-
- if (currentCtorIsExplicit)
-@@ -6835,94 +6813,103 @@
- if ((sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE)) == 0)
- yyerror("Constructor must be in the public, private or protected sections");
-
-- newCtor(currentModule, (yyvsp[(1) - (11)].text), sectionFlags, &(yyvsp[(3) - (11)].signature), &(yyvsp[(6) - (11)].optflags), (yyvsp[(11) - (11)].codeb), (yyvsp[(5) - (11)].throwlist), (yyvsp[(7) - (11)].optsignature),
-- currentCtorIsExplicit, (yyvsp[(9) - (11)].docstr), (yyvsp[(10) - (11)].codeb));
-+ newCtor(currentModule, (yyvsp[-10].text), sectionFlags, &(yyvsp[-8].signature), &(yyvsp[-5].optflags), (yyvsp[0].codeb), (yyvsp[-6].throwlist), (yyvsp[-4].optsignature),
-+ currentCtorIsExplicit, (yyvsp[-2].docstr), (yyvsp[-1].codeb));
- }
-
-- free((yyvsp[(1) - (11)].text));
-+ free((yyvsp[-10].text));
-
- currentCtorIsExplicit = FALSE;
- }
-+#line 6825 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 449:
--#line 3669 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.optsignature) = NULL;
- }
-+#line 6833 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 450:
--#line 3672 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3672 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- parsingCSignature = TRUE;
- }
-+#line 6841 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 451:
--#line 3674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
-
-- *(yyval.optsignature) = (yyvsp[(4) - (6)].signature);
-+ *(yyval.optsignature) = (yyvsp[-2].signature);
-
- parsingCSignature = FALSE;
- }
-+#line 6853 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 452:
--#line 3683 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3683 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.optsignature) = NULL;
- }
-+#line 6861 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 453:
--#line 3686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- parsingCSignature = TRUE;
- }
-+#line 6869 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 454:
--#line 3688 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3688 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
-
-- *(yyval.optsignature) = (yyvsp[(5) - (7)].signature);
-- (yyval.optsignature)->result = (yyvsp[(3) - (7)].memArg);
-+ *(yyval.optsignature) = (yyvsp[-2].signature);
-+ (yyval.optsignature)->result = (yyvsp[-4].memArg);
-
- parsingCSignature = FALSE;
- }
-+#line 6882 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 455:
--#line 3698 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3698 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = FALSE;
- }
-+#line 6890 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 456:
--#line 3701 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3701 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = TRUE;
- }
-+#line 6898 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 457:
--#line 3706 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3706 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-- applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(10) - (17)].optflags));
-+ applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-7].optflags));
-
-- (yyvsp[(4) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
-+ (yyvsp[-13].signature).result = (yyvsp[-16].memArg);
-
- newFunction(currentSpec, currentModule, currentScope(), NULL,
- NULL, sectionFlags, currentIsStatic, currentIsSignal,
-- currentIsSlot, currentOverIsVirt, (yyvsp[(2) - (17)].text), &(yyvsp[(4) - (17)].signature), (yyvsp[(6) - (17)].number), (yyvsp[(9) - (17)].number),
-- &(yyvsp[(10) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(8) - (17)].throwlist), (yyvsp[(11) - (17)].optsignature), (yyvsp[(13) - (17)].docstr), (yyvsp[(7) - (17)].number), (yyvsp[(14) - (17)].codeb));
-+ currentIsSlot, currentOverIsVirt, (yyvsp[-15].text), &(yyvsp[-13].signature), (yyvsp[-11].number), (yyvsp[-8].number),
-+ &(yyvsp[-7].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-9].throwlist), (yyvsp[-6].optsignature), (yyvsp[-4].docstr), (yyvsp[-10].number), (yyvsp[-3].codeb));
- }
-
- currentIsStatic = FALSE;
-@@ -6930,10 +6917,11 @@
- currentIsSlot = FALSE;
- currentOverIsVirt = FALSE;
- }
-+#line 6921 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 458:
--#line 3724 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3724 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /*
- * It looks like an assignment operator (though we don't bother to
-@@ -6954,10 +6942,11 @@
- currentIsSlot = FALSE;
- currentOverIsVirt = FALSE;
- }
-+#line 6946 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 459:
--#line 3744 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3744 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -6978,23 +6967,23 @@
- ns_scope = NULL;
- }
-
-- applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(11) - (17)].optflags));
-+ applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-6].optflags));
-
- /* Handle the unary '+' and '-' operators. */
-- if ((cd != NULL && (yyvsp[(5) - (17)].signature).nrArgs == 0) || (cd == NULL && (yyvsp[(5) - (17)].signature).nrArgs == 1))
-+ if ((cd != NULL && (yyvsp[-12].signature).nrArgs == 0) || (cd == NULL && (yyvsp[-12].signature).nrArgs == 1))
- {
-- if (strcmp((yyvsp[(3) - (17)].text), "__add__") == 0)
-- (yyvsp[(3) - (17)].text) = "__pos__";
-- else if (strcmp((yyvsp[(3) - (17)].text), "__sub__") == 0)
-- (yyvsp[(3) - (17)].text) = "__neg__";
-+ if (strcmp((yyvsp[-14].text), "__add__") == 0)
-+ (yyvsp[-14].text) = "__pos__";
-+ else if (strcmp((yyvsp[-14].text), "__sub__") == 0)
-+ (yyvsp[-14].text) = "__neg__";
- }
-
-- (yyvsp[(5) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
-+ (yyvsp[-12].signature).result = (yyvsp[-16].memArg);
-
- newFunction(currentSpec, currentModule, cd, ns_scope, NULL,
- sectionFlags, currentIsStatic, currentIsSignal,
-- currentIsSlot, currentOverIsVirt, (yyvsp[(3) - (17)].text), &(yyvsp[(5) - (17)].signature), (yyvsp[(7) - (17)].number), (yyvsp[(10) - (17)].number),
-- &(yyvsp[(11) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(9) - (17)].throwlist), (yyvsp[(12) - (17)].optsignature), NULL, (yyvsp[(8) - (17)].number), (yyvsp[(14) - (17)].codeb));
-+ currentIsSlot, currentOverIsVirt, (yyvsp[-14].text), &(yyvsp[-12].signature), (yyvsp[-10].number), (yyvsp[-7].number),
-+ &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
- }
-
- currentIsStatic = FALSE;
-@@ -7002,22 +6991,23 @@
- currentIsSlot = FALSE;
- currentOverIsVirt = FALSE;
- }
-+#line 6995 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 460:
--#line 3788 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3788 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- char *sname;
- classDef *scope = currentScope();
-
-- if (scope == NULL || (yyvsp[(4) - (16)].signature).nrArgs != 0)
-+ if (scope == NULL || (yyvsp[-12].signature).nrArgs != 0)
- yyerror("Operator casts must be specified in a class and have no arguments");
-
-- applyTypeFlags(currentModule, &(yyvsp[(2) - (16)].memArg), &(yyvsp[(10) - (16)].optflags));
-+ applyTypeFlags(currentModule, &(yyvsp[-14].memArg), &(yyvsp[-6].optflags));
-
-- switch ((yyvsp[(2) - (16)].memArg).atype)
-+ switch ((yyvsp[-14].memArg).atype)
- {
- case defined_type:
- sname = NULL;
-@@ -7056,12 +7046,12 @@
-
- if (sname != NULL)
- {
-- (yyvsp[(4) - (16)].signature).result = (yyvsp[(2) - (16)].memArg);
-+ (yyvsp[-12].signature).result = (yyvsp[-14].memArg);
-
- newFunction(currentSpec, currentModule, scope, NULL, NULL,
- sectionFlags, currentIsStatic, currentIsSignal,
-- currentIsSlot, currentOverIsVirt, sname, &(yyvsp[(4) - (16)].signature), (yyvsp[(6) - (16)].number),
-- (yyvsp[(9) - (16)].number), &(yyvsp[(10) - (16)].optflags), (yyvsp[(14) - (16)].codeb), (yyvsp[(15) - (16)].codeb), (yyvsp[(16) - (16)].codeb), (yyvsp[(8) - (16)].throwlist), (yyvsp[(11) - (16)].optsignature), NULL, (yyvsp[(7) - (16)].number), (yyvsp[(13) - (16)].codeb));
-+ currentIsSlot, currentOverIsVirt, sname, &(yyvsp[-12].signature), (yyvsp[-10].number),
-+ (yyvsp[-7].number), &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
- }
- else
- {
-@@ -7069,11 +7059,11 @@
-
- /* Check it doesn't already exist. */
- for (al = scope->casts; al != NULL; al = al->next)
-- if (compareScopedNames((yyvsp[(2) - (16)].memArg).u.snd, al->arg.u.snd) == 0)
-+ if (compareScopedNames((yyvsp[-14].memArg).u.snd, al->arg.u.snd) == 0)
- yyerror("This operator cast has already been specified in this class");
-
- al = sipMalloc(sizeof (argList));
-- al->arg = (yyvsp[(2) - (16)].memArg);
-+ al->arg = (yyvsp[-14].memArg);
- al->next = scope->casts;
-
- scope->casts = al;
-@@ -7085,260 +7075,303 @@
- currentIsSlot = FALSE;
- currentOverIsVirt = FALSE;
- }
-+#line 7079 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 461:
--#line 3869 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3869 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__add__";}
-+#line 7085 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 462:
--#line 3870 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__sub__";}
-+#line 7091 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 463:
--#line 3871 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3871 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__mul__";}
-+#line 7097 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 464:
--#line 3872 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3872 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__div__";}
-+#line 7103 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 465:
--#line 3873 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3873 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__mod__";}
-+#line 7109 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 466:
--#line 3874 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3874 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__and__";}
-+#line 7115 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 467:
--#line 3875 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3875 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__or__";}
-+#line 7121 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 468:
--#line 3876 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3876 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__xor__";}
-+#line 7127 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 469:
--#line 3877 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3877 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__lshift__";}
-+#line 7133 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 470:
--#line 3878 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3878 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__rshift__";}
-+#line 7139 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 471:
--#line 3879 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3879 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__iadd__";}
-+#line 7145 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 472:
--#line 3880 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3880 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__isub__";}
-+#line 7151 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 473:
--#line 3881 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3881 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__imul__";}
-+#line 7157 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 474:
--#line 3882 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3882 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__idiv__";}
-+#line 7163 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 475:
--#line 3883 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3883 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__imod__";}
-+#line 7169 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 476:
--#line 3884 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3884 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__iand__";}
-+#line 7175 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 477:
--#line 3885 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3885 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__ior__";}
-+#line 7181 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 478:
--#line 3886 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3886 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__ixor__";}
-+#line 7187 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 479:
--#line 3887 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3887 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__ilshift__";}
-+#line 7193 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 480:
--#line 3888 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3888 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__irshift__";}
-+#line 7199 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 481:
--#line 3889 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3889 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__invert__";}
-+#line 7205 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 482:
--#line 3890 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3890 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__call__";}
-+#line 7211 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 483:
--#line 3891 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3891 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__getitem__";}
-+#line 7217 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 484:
--#line 3892 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3892 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__lt__";}
-+#line 7223 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 485:
--#line 3893 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3893 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__le__";}
-+#line 7229 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 486:
--#line 3894 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3894 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__eq__";}
-+#line 7235 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 487:
--#line 3895 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3895 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__ne__";}
-+#line 7241 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 488:
--#line 3896 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3896 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__gt__";}
-+#line 7247 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 489:
--#line 3897 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3897 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {(yyval.text) = "__ge__";}
-+#line 7253 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 490:
--#line 3900 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3900 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = FALSE;
- }
-+#line 7261 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 491:
--#line 3903 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3903 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = TRUE;
- }
-+#line 7269 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 492:
--#line 3908 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3908 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = FALSE;
- }
-+#line 7277 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 493:
--#line 3911 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3911 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = TRUE;
- }
-+#line 7285 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 494:
--#line 3916 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3916 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = 0;
- }
-+#line 7293 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 495:
--#line 3919 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3919 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- if ((yyvsp[(2) - (2)].number) != 0)
-+ if ((yyvsp[0].number) != 0)
- yyerror("Abstract virtual function '= 0' expected");
-
- (yyval.number) = TRUE;
- }
-+#line 7304 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 496:
--#line 3927 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.optflags).nrFlags = 0;
- }
-+#line 7312 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 497:
--#line 3930 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3930 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.optflags) = (yyvsp[(2) - (3)].optflags);
-+ (yyval.optflags) = (yyvsp[-1].optflags);
- }
-+#line 7320 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 498:
--#line 3936 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3936 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.optflags).flags[0] = (yyvsp[(1) - (1)].flag);
-+ (yyval.optflags).flags[0] = (yyvsp[0].flag);
- (yyval.optflags).nrFlags = 1;
- }
-+#line 7329 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 499:
--#line 3940 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3940 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Check there is room. */
-
-- if ((yyvsp[(1) - (3)].optflags).nrFlags == MAX_NR_FLAGS)
-+ if ((yyvsp[-2].optflags).nrFlags == MAX_NR_FLAGS)
- yyerror("Too many optional flags");
-
-- (yyval.optflags) = (yyvsp[(1) - (3)].optflags);
-+ (yyval.optflags) = (yyvsp[-2].optflags);
-
-- (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[(3) - (3)].flag);
-+ (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[0].flag);
- }
-+#line 7344 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 500:
--#line 3952 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3952 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.flag).ftype = bool_flag;
-- (yyval.flag).fname = (yyvsp[(1) - (1)].text);
-+ (yyval.flag).fname = (yyvsp[0].text);
- }
-+#line 7353 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 501:
--#line 3956 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3956 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.flag) = (yyvsp[(3) - (3)].flag);
-- (yyval.flag).fname = (yyvsp[(1) - (3)].text);
-+ (yyval.flag) = (yyvsp[0].flag);
-+ (yyval.flag).fname = (yyvsp[-2].text);
- }
-+#line 7362 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 502:
--#line 3962 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3962 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.flag).ftype = (strchr((yyvsp[(1) - (1)].text), '.') != NULL) ? dotted_name_flag : name_flag;
-- (yyval.flag).fvalue.sval = (yyvsp[(1) - (1)].text);
-+ (yyval.flag).ftype = (strchr((yyvsp[0].text), '.') != NULL) ? dotted_name_flag : name_flag;
-+ (yyval.flag).fvalue.sval = (yyvsp[0].text);
- }
-+#line 7371 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 503:
--#line 3966 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3966 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- apiVersionRangeDef *avd;
- int from, to;
-@@ -7346,106 +7379,117 @@
- (yyval.flag).ftype = api_range_flag;
-
- /* Check that the API is known. */
-- if ((avd = findAPI(currentSpec, (yyvsp[(1) - (5)].text))) == NULL)
-+ if ((avd = findAPI(currentSpec, (yyvsp[-4].text))) == NULL)
- yyerror("unknown API name in API annotation");
-
- if (inMainModule())
- setIsUsedName(avd->api_name);
-
- /* Unbounded values are represented by 0. */
-- if ((from = (yyvsp[(3) - (5)].number)) < 0)
-+ if ((from = (yyvsp[-2].number)) < 0)
- from = 0;
-
-- if ((to = (yyvsp[(5) - (5)].number)) < 0)
-+ if ((to = (yyvsp[0].number)) < 0)
- to = 0;
-
- (yyval.flag).fvalue.aval = convertAPIRange(currentModule, avd->api_name,
- from, to);
- }
-+#line 7399 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 504:
--#line 3989 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3989 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.flag).ftype = string_flag;
-- (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[(1) - (1)].text));
-+ (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[0].text));
- }
-+#line 7408 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 505:
--#line 3993 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3993 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.flag).ftype = integer_flag;
-- (yyval.flag).fvalue.ival = (yyvsp[(1) - (1)].number);
-+ (yyval.flag).fvalue.ival = (yyvsp[0].number);
- }
-+#line 7417 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 506:
--#line 3999 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 3999 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 7425 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 507:
--#line 4002 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4002 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 7433 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 508:
--#line 4007 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4007 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 7441 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 509:
--#line 4010 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4010 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 7449 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 510:
--#line 4015 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4015 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 7457 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 511:
--#line 4018 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4018 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 7465 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 512:
--#line 4023 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4023 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.codeb) = NULL;
- }
-+#line 7473 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 513:
--#line 4026 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4026 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
-+ (yyval.codeb) = (yyvsp[0].codeb);
- }
-+#line 7481 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 514:
--#line 4031 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4031 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
-
- nrrxcon = nrrxdis = nrslotcon = nrslotdis = nrarray = nrarraysize = 0;
-
-- for (a = 0; a < (yyvsp[(1) - (1)].signature).nrArgs; ++a)
-+ for (a = 0; a < (yyvsp[0].signature).nrArgs; ++a)
- {
-- argDef *ad = &(yyvsp[(1) - (1)].signature).args[a];
-+ argDef *ad = &(yyvsp[0].signature).args[a];
-
- switch (ad -> atype)
- {
-@@ -7486,104 +7530,111 @@
- if (nrarray != nrarraysize || nrarray > 1)
- yyerror("/Array/ and /ArraySize/ must both be given and at most once");
-
-- (yyval.signature) = (yyvsp[(1) - (1)].signature);
-+ (yyval.signature) = (yyvsp[0].signature);
- }
-+#line 7536 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 515:
--#line 4083 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4083 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* No arguments. */
-
- (yyval.signature).nrArgs = 0;
- }
-+#line 7546 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 516:
--#line 4088 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4088 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* The single or first argument. */
-
-- (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
-+ (yyval.signature).args[0] = (yyvsp[0].memArg);
- (yyval.signature).nrArgs = 1;
- }
-+#line 7557 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 517:
--#line 4094 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4094 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Check that it wasn't ...(,arg...). */
-- if ((yyvsp[(1) - (3)].signature).nrArgs == 0)
-+ if ((yyvsp[-2].signature).nrArgs == 0)
- yyerror("First argument of the list is missing");
-
- /*
- * If this argument has no default value, then the
- * previous one mustn't either.
- */
-- if ((yyvsp[(3) - (3)].memArg).defval == NULL && (yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].defval != NULL)
-+ if ((yyvsp[0].memArg).defval == NULL && (yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].defval != NULL)
- yyerror("Compulsory argument given after optional argument");
-
- /* Check there is room. */
-- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
- yyerror("Internal error - increase the value of MAX_NR_ARGS");
-
-- (yyval.signature) = (yyvsp[(1) - (3)].signature);
-+ (yyval.signature) = (yyvsp[-2].signature);
-
-- (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
-+ (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
- (yyval.signature).nrArgs++;
- }
-+#line 7583 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 518:
--#line 4117 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4117 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_SIGNAL is deprecated\n");
-- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SIGNAL has no annotations");
-+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SIGNAL has no annotations");
-
- (yyval.memArg).atype = signal_type;
- (yyval.memArg).argflags = ARG_IS_CONST;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
-- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+ (yyval.memArg).defval = (yyvsp[0].valp);
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7600 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 519:
--#line 4129 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4129 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_SLOT is deprecated\n");
-- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SLOT has no annotations");
-+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SLOT has no annotations");
-
- (yyval.memArg).atype = slot_type;
- (yyval.memArg).argflags = ARG_IS_CONST;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
-- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+ (yyval.memArg).defval = (yyvsp[0].valp);
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7617 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 520:
--#line 4141 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4141 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_ANYSLOT is deprecated\n");
-- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_ANYSLOT has no annotations");
-+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_ANYSLOT has no annotations");
-
- (yyval.memArg).atype = anyslot_type;
- (yyval.memArg).argflags = ARG_IS_CONST;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
-- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
-+ (yyval.memArg).defval = (yyvsp[0].valp);
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7634 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 521:
--#line 4153 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4153 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- const char *annos[] = {
- "SingleShot",
-@@ -7591,120 +7642,130 @@
- };
-
- deprecated("SIP_RXOBJ_CON is deprecated\n");
-- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
- (yyval.memArg).atype = rxcon_type;
- (yyval.memArg).argflags = 0;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "SingleShot", bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags), "SingleShot", bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_SINGLE_SHOT;
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7658 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 522:
--#line 4172 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4172 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_RXOBJ_DIS is deprecated\n");
-- checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_RXOBJ_DIS has no annotations");
-+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_RXOBJ_DIS has no annotations");
-
- (yyval.memArg).atype = rxdis_type;
- (yyval.memArg).argflags = 0;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7674 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 523:
--#line 4183 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4183 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_SLOT_CON is deprecated\n");
-- checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_CON has no annotations");
-+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_CON has no annotations");
-
- (yyval.memArg).atype = slotcon_type;
- (yyval.memArg).argflags = ARG_IS_CONST;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-
-- memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
-- (yyvsp[(3) - (6)].signature).result.atype = void_type;
-+ memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
-+ (yyvsp[-3].signature).result.atype = void_type;
-
- (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
-- *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
-+ *(yyval.memArg).u.sa = (yyvsp[-3].signature);
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7696 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 524:
--#line 4200 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4200 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_SLOT_DIS is deprecated\n");
-- checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_DIS has no annotations");
-+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_DIS has no annotations");
-
- (yyval.memArg).atype = slotdis_type;
- (yyval.memArg).argflags = ARG_IS_CONST;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-
-- memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
-- (yyvsp[(3) - (6)].signature).result.atype = void_type;
-+ memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
-+ (yyvsp[-3].signature).result.atype = void_type;
-
- (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
-- *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
-+ *(yyval.memArg).u.sa = (yyvsp[-3].signature);
-
- currentSpec -> sigslots = TRUE;
- }
-+#line 7718 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 525:
--#line 4217 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4217 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- deprecated("SIP_QOBJECT is deprecated\n");
-- checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_QOBJECT has no annotations");
-+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_QOBJECT has no annotations");
-
- (yyval.memArg).atype = qobject_type;
- (yyval.memArg).argflags = 0;
- (yyval.memArg).nrderefs = 0;
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
- }
-+#line 7732 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 526:
--#line 4226 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4226 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.memArg) = (yyvsp[(1) - (2)].memArg);
-- (yyval.memArg).defval = (yyvsp[(2) - (2)].valp);
-+ (yyval.memArg) = (yyvsp[-1].memArg);
-+ (yyval.memArg).defval = (yyvsp[0].valp);
- }
-+#line 7741 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 527:
--#line 4233 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4233 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentIsSignal = TRUE;}
-+#line 7747 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 529:
--#line 4234 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4234 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentIsSlot = TRUE;}
-+#line 7753 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 532:
--#line 4239 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4239 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentIsStatic = TRUE;}
-+#line 7759 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 537:
--#line 4249 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4249 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {currentOverIsVirt = TRUE;}
-+#line 7765 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 540:
--#line 4253 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4253 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
-@@ -7719,99 +7780,105 @@
- NULL
- };
-
-- checkAnnos(&(yyvsp[(3) - (8)].optflags), annos);
-+ checkAnnos(&(yyvsp[-5].optflags), annos);
-
-- if ((yyvsp[(6) - (8)].codeb) != NULL)
-+ if ((yyvsp[-2].codeb) != NULL)
- {
-- if ((yyvsp[(4) - (8)].variable).access_code != NULL)
-+ if ((yyvsp[-4].variable).access_code != NULL)
- yyerror("%AccessCode already defined");
-
-- (yyvsp[(4) - (8)].variable).access_code = (yyvsp[(6) - (8)].codeb);
-+ (yyvsp[-4].variable).access_code = (yyvsp[-2].codeb);
-
- deprecated("%AccessCode should be used as a sub-directive");
- }
-
-- if ((yyvsp[(7) - (8)].codeb) != NULL)
-+ if ((yyvsp[-1].codeb) != NULL)
- {
-- if ((yyvsp[(4) - (8)].variable).get_code != NULL)
-+ if ((yyvsp[-4].variable).get_code != NULL)
- yyerror("%GetCode already defined");
-
-- (yyvsp[(4) - (8)].variable).get_code = (yyvsp[(7) - (8)].codeb);
-+ (yyvsp[-4].variable).get_code = (yyvsp[-1].codeb);
-
- deprecated("%GetCode should be used as a sub-directive");
- }
-
-- if ((yyvsp[(8) - (8)].codeb) != NULL)
-+ if ((yyvsp[0].codeb) != NULL)
- {
-- if ((yyvsp[(4) - (8)].variable).set_code != NULL)
-+ if ((yyvsp[-4].variable).set_code != NULL)
- yyerror("%SetCode already defined");
-
-- (yyvsp[(4) - (8)].variable).set_code = (yyvsp[(8) - (8)].codeb);
-+ (yyvsp[-4].variable).set_code = (yyvsp[0].codeb);
-
- deprecated("%SetCode should be used as a sub-directive");
- }
-
-- newVar(currentSpec, currentModule, (yyvsp[(2) - (8)].text), currentIsStatic, &(yyvsp[(1) - (8)].memArg),
-- &(yyvsp[(3) - (8)].optflags), (yyvsp[(4) - (8)].variable).access_code, (yyvsp[(4) - (8)].variable).get_code, (yyvsp[(4) - (8)].variable).set_code,
-+ newVar(currentSpec, currentModule, (yyvsp[-6].text), currentIsStatic, &(yyvsp[-7].memArg),
-+ &(yyvsp[-5].optflags), (yyvsp[-4].variable).access_code, (yyvsp[-4].variable).get_code, (yyvsp[-4].variable).set_code,
- sectionFlags);
- }
-
- currentIsStatic = FALSE;
- }
-+#line 7823 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 541:
--#line 4308 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4308 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.variable).token = 0;
- (yyval.variable).access_code = NULL;
- (yyval.variable).get_code = NULL;
- (yyval.variable).set_code = NULL;
- }
-+#line 7834 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 542:
--#line 4314 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4314 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.variable) = (yyvsp[(2) - (3)].variable);
-+ (yyval.variable) = (yyvsp[-1].variable);
- }
-+#line 7842 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 544:
--#line 4320 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4320 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.variable) = (yyvsp[(1) - (2)].variable);
-+ (yyval.variable) = (yyvsp[-1].variable);
-
-- switch ((yyvsp[(2) - (2)].variable).token)
-+ switch ((yyvsp[0].variable).token)
- {
-- case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[(2) - (2)].variable).access_code; break;
-- case TK_GETCODE: (yyval.variable).get_code = (yyvsp[(2) - (2)].variable).get_code; break;
-- case TK_SETCODE: (yyval.variable).set_code = (yyvsp[(2) - (2)].variable).set_code; break;
-+ case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[0].variable).access_code; break;
-+ case TK_GETCODE: (yyval.variable).get_code = (yyvsp[0].variable).get_code; break;
-+ case TK_SETCODE: (yyval.variable).set_code = (yyvsp[0].variable).set_code; break;
- }
- }
-+#line 7857 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 545:
--#line 4332 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4332 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.variable).token = TK_IF;
- }
-+#line 7865 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 546:
--#line 4335 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4335 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.variable).token = TK_END;
- }
-+#line 7873 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 547:
--#line 4338 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4338 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.variable).token = TK_ACCESSCODE;
-- (yyval.variable).access_code = (yyvsp[(2) - (2)].codeb);
-+ (yyval.variable).access_code = (yyvsp[0].codeb);
- }
- else
- {
-@@ -7822,15 +7889,16 @@
- (yyval.variable).get_code = NULL;
- (yyval.variable).set_code = NULL;
- }
-+#line 7893 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 548:
--#line 4353 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4353 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.variable).token = TK_GETCODE;
-- (yyval.variable).get_code = (yyvsp[(2) - (2)].codeb);
-+ (yyval.variable).get_code = (yyvsp[0].codeb);
- }
- else
- {
-@@ -7841,15 +7909,16 @@
- (yyval.variable).access_code = NULL;
- (yyval.variable).set_code = NULL;
- }
-+#line 7913 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 549:
--#line 4368 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4368 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (notSkipping())
- {
- (yyval.variable).token = TK_SETCODE;
-- (yyval.variable).set_code = (yyvsp[(2) - (2)].codeb);
-+ (yyval.variable).set_code = (yyvsp[0].codeb);
- }
- else
- {
-@@ -7860,35 +7929,38 @@
- (yyval.variable).access_code = NULL;
- (yyval.variable).get_code = NULL;
- }
-+#line 7933 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 550:
--#line 4385 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4385 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.memArg) = (yyvsp[(2) - (4)].memArg);
-- add_derefs(&(yyval.memArg), &(yyvsp[(3) - (4)].memArg));
-- (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[(4) - (4)].number);
-+ (yyval.memArg) = (yyvsp[-2].memArg);
-+ add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
-+ (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[0].number);
- }
-+#line 7943 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 551:
--#line 4390 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4390 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
-- add_derefs(&(yyval.memArg), &(yyvsp[(2) - (3)].memArg));
-- (yyval.memArg).argflags |= (yyvsp[(3) - (3)].number);
-+ (yyval.memArg) = (yyvsp[-2].memArg);
-+ add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
-+ (yyval.memArg).argflags |= (yyvsp[0].number);
-
- /* PyObject * is a synonym for SIP_PYOBJECT. */
-- if ((yyvsp[(1) - (3)].memArg).atype == defined_type && strcmp((yyvsp[(1) - (3)].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[(1) - (3)].memArg).u.snd->next == NULL && (yyvsp[(2) - (3)].memArg).nrderefs == 1 && (yyvsp[(3) - (3)].number) == 0)
-+ if ((yyvsp[-2].memArg).atype == defined_type && strcmp((yyvsp[-2].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[-2].memArg).u.snd->next == NULL && (yyvsp[-1].memArg).nrderefs == 1 && (yyvsp[0].number) == 0)
- {
- (yyval.memArg).atype = pyobject_type;
- (yyval.memArg).nrderefs = 0;
- }
- }
-+#line 7960 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 552:
--#line 4404 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4404 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- const char *annos[] = {
- "AllowNone",
-@@ -7919,54 +7991,54 @@
-
- optFlag *of;
-
-- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
-+ checkAnnos(&(yyvsp[0].optflags), annos);
-
-- (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
-- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
-+ (yyval.memArg) = (yyvsp[-2].memArg);
-+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
-
-- handleKeepReference(&(yyvsp[(3) - (3)].optflags), &(yyval.memArg), currentModule);
-+ handleKeepReference(&(yyvsp[0].optflags), &(yyval.memArg), currentModule);
-
-- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
-+ if ((of = getOptFlag(&(yyvsp[0].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
- if (((yyval.memArg).scopes_stripped = of->fvalue.ival) <= 0)
- yyerror("/ScopesStripped/ must be greater than 0");
-
-- if (getAllowNone(&(yyvsp[(3) - (3)].optflags)))
-+ if (getAllowNone(&(yyvsp[0].optflags)))
- (yyval.memArg).argflags |= ARG_ALLOW_NONE;
-
-- if (getDisallowNone(&(yyvsp[(3) - (3)].optflags)))
-+ if (getDisallowNone(&(yyvsp[0].optflags)))
- (yyval.memArg).argflags |= ARG_DISALLOW_NONE;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"GetWrapper",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"GetWrapper",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_GET_WRAPPER;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Array",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"Array",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_ARRAY;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"ArraySize",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"ArraySize",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_ARRAY_SIZE;
-
-- if (getTransfer(&(yyvsp[(3) - (3)].optflags)))
-+ if (getTransfer(&(yyvsp[0].optflags)))
- (yyval.memArg).argflags |= ARG_XFERRED;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferThis",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"TransferThis",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_THIS_XFERRED;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferBack",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"TransferBack",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_XFERRED_BACK;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"In",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"In",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_IN;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Out",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"Out",bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_OUT;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "ResultSize", bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags), "ResultSize", bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_RESULT_SIZE;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "NoCopy", bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags), "NoCopy", bool_flag) != NULL)
- (yyval.memArg).argflags |= ARG_NO_COPY;
-
-- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Constrained",bool_flag) != NULL)
-+ if (getOptFlag(&(yyvsp[0].optflags),"Constrained",bool_flag) != NULL)
- {
- (yyval.memArg).argflags |= ARG_CONSTRAINED;
-
-@@ -7994,78 +8066,86 @@
- }
- }
-
-- applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[(3) - (3)].optflags));
-- (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[(3) - (3)].optflags));
-+ applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[0].optflags));
-+ (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[0].optflags));
- }
-+#line 8073 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 553:
--#line 4514 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4514 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.number) = 0;
- }
-+#line 8081 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 554:
--#line 4517 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4517 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec -> genc)
- yyerror("References not allowed in a C module");
-
- (yyval.number) = ARG_IS_REF;
- }
-+#line 8092 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 555:
--#line 4525 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4525 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.memArg).nrderefs = 0;
- }
-+#line 8100 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 556:
--#line 4528 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4528 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (3)].memArg), TRUE);
-+ add_new_deref(&(yyval.memArg), &(yyvsp[-2].memArg), TRUE);
- }
-+#line 8108 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 557:
--#line 4531 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4531 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
-- add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (2)].memArg), FALSE);
-+ add_new_deref(&(yyval.memArg), &(yyvsp[-1].memArg), FALSE);
- }
-+#line 8116 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 558:
--#line 4536 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4536 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = defined_type;
-- (yyval.memArg).u.snd = (yyvsp[(1) - (1)].scpvalp);
-+ (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
-
- /* Try and resolve typedefs as early as possible. */
- resolveAnyTypedef(currentSpec, &(yyval.memArg));
- }
-+#line 8129 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 559:
--#line 4544 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4544 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- templateDef *td;
-
- td = sipMalloc(sizeof(templateDef));
-- td->fqname = (yyvsp[(1) - (4)].scpvalp);
-- td->types = (yyvsp[(3) - (4)].signature);
-+ td->fqname = (yyvsp[-3].scpvalp);
-+ td->types = (yyvsp[-1].signature);
-
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = template_type;
- (yyval.memArg).u.td = td;
- }
-+#line 8145 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 560:
--#line 4555 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
-
-@@ -8073,321 +8153,366 @@
- if (currentSpec -> genc)
- {
- (yyval.memArg).atype = defined_type;
-- (yyval.memArg).u.snd = (yyvsp[(2) - (2)].scpvalp);
-+ (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
- }
- else
- {
- (yyval.memArg).atype = struct_type;
-- (yyval.memArg).u.sname = (yyvsp[(2) - (2)].scpvalp);
-+ (yyval.memArg).u.sname = (yyvsp[0].scpvalp);
- }
- }
-+#line 8165 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 561:
--#line 4570 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4570 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ushort_type;
- }
-+#line 8174 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 562:
--#line 4574 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4574 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = short_type;
- }
-+#line 8183 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 563:
--#line 4578 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4578 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = uint_type;
- }
-+#line 8192 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 564:
--#line 4582 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4582 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = uint_type;
- }
-+#line 8201 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 565:
--#line 4586 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4586 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = int_type;
- }
-+#line 8210 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 566:
--#line 4590 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4590 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = long_type;
- }
-+#line 8219 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 567:
--#line 4594 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4594 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ulong_type;
- }
-+#line 8228 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 568:
--#line 4598 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4598 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = longlong_type;
- }
-+#line 8237 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 569:
--#line 4602 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4602 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ulonglong_type;
- }
-+#line 8246 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 570:
--#line 4606 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4606 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = float_type;
- }
-+#line 8255 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 571:
--#line 4610 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4610 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = double_type;
- }
-+#line 8264 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 572:
--#line 4614 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4614 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = bool_type;
- }
-+#line 8273 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 573:
--#line 4618 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4618 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = sstring_type;
- }
-+#line 8282 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 574:
--#line 4622 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4622 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ustring_type;
- }
-+#line 8291 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 575:
--#line 4626 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4626 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = string_type;
- }
-+#line 8300 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 576:
--#line 4630 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4630 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = wstring_type;
- }
-+#line 8309 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 577:
--#line 4634 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4634 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = void_type;
- }
-+#line 8318 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 578:
--#line 4638 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4638 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pyobject_type;
- }
-+#line 8327 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 579:
--#line 4642 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4642 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pytuple_type;
- }
-+#line 8336 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 580:
--#line 4646 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4646 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pylist_type;
- }
-+#line 8345 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 581:
--#line 4650 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4650 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pydict_type;
- }
-+#line 8354 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 582:
--#line 4654 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4654 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pycallable_type;
- }
-+#line 8363 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 583:
--#line 4658 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4658 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pyslice_type;
- }
-+#line 8372 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 584:
--#line 4662 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4662 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pytype_type;
- }
-+#line 8381 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 585:
--#line 4666 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4666 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = pybuffer_type;
- }
-+#line 8390 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 586:
--#line 4670 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4670 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ssize_type;
- }
-+#line 8399 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 587:
--#line 4674 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- memset(&(yyval.memArg), 0, sizeof (argDef));
- (yyval.memArg).atype = ellipsis_type;
- }
-+#line 8408 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 588:
--#line 4680 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4680 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* The single or first type. */
-
-- (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
-+ (yyval.signature).args[0] = (yyvsp[0].memArg);
- (yyval.signature).nrArgs = 1;
- }
-+#line 8419 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 589:
--#line 4686 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Check there is nothing after an ellipsis. */
-- if ((yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].atype == ellipsis_type)
-+ if ((yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].atype == ellipsis_type)
- yyerror("An ellipsis must be at the end of the argument list");
-
- /* Check there is room. */
-- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
-+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
- yyerror("Internal error - increase the value of MAX_NR_ARGS");
-
-- (yyval.signature) = (yyvsp[(1) - (3)].signature);
-+ (yyval.signature) = (yyvsp[-2].signature);
-
-- (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
-+ (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
- (yyval.signature).nrArgs++;
- }
-+#line 8438 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 590:
--#line 4702 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4702 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- (yyval.throwlist) = NULL;
- }
-+#line 8446 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 591:
--#line 4705 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4705 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- if (currentSpec->genc)
- yyerror("Exceptions not allowed in a C module");
-
-- (yyval.throwlist) = (yyvsp[(3) - (4)].throwlist);
-+ (yyval.throwlist) = (yyvsp[-1].throwlist);
- }
-+#line 8457 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 592:
--#line 4713 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4713 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Empty list so use a blank. */
-
- (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
- (yyval.throwlist) -> nrArgs = 0;
- }
-+#line 8468 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 593:
--#line 4719 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4719 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* The only or first exception. */
-
- (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
- (yyval.throwlist) -> nrArgs = 1;
-- (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[(1) - (1)].scpvalp), FALSE);
-+ (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
- }
-+#line 8480 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
- case 594:
--#line 4726 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4726 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
- {
- /* Check that it wasn't ...(,arg...). */
-
-- if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == 0)
-+ if ((yyvsp[-2].throwlist) -> nrArgs == 0)
- yyerror("First exception of throw specifier is missing");
-
- /* Check there is room. */
-
-- if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == MAX_NR_ARGS)
-+ if ((yyvsp[-2].throwlist) -> nrArgs == MAX_NR_ARGS)
- yyerror("Internal error - increase the value of MAX_NR_ARGS");
-
-- (yyval.throwlist) = (yyvsp[(1) - (3)].throwlist);
-- (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[(3) - (3)].scpvalp), FALSE);
-+ (yyval.throwlist) = (yyvsp[-2].throwlist);
-+ (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
- }
-+#line 8499 "sipgen/parser.c" /* yacc.c:1646 */
- break;
-
-
--/* Line 1267 of yacc.c. */
--#line 8389 "sip-4.19.12/sipgen/parser.c"
-+#line 8503 "sipgen/parser.c" /* yacc.c:1646 */
- default: break;
- }
-+ /* User semantic actions sometimes alter yychar, and that requires
-+ that yytoken be updated with the new translation. We take the
-+ approach of translating immediately before every use of yytoken.
-+ One alternative is translating here after every semantic action,
-+ but that translation would be missed if the semantic action invokes
-+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
-+ incorrect destructor might then be invoked immediately. In the
-+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
-+ to an incorrect destructor call or verbose syntax error message
-+ before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
- YYPOPSTACK (yylen);
-@@ -8396,8 +8521,7 @@
-
- *++yyvsp = yyval;
-
--
-- /* Now `shift' the result of the reduction. Determine what state
-+ /* Now 'shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
-@@ -8412,10 +8536,14 @@
- goto yynewstate;
-
-
--/*------------------------------------.
--| yyerrlab -- here on detecting error |
--`------------------------------------*/
-+/*--------------------------------------.
-+| yyerrlab -- here on detecting error. |
-+`--------------------------------------*/
- yyerrlab:
-+ /* Make sure we have latest lookahead translation. See comments at
-+ user semantic actions for why this is necessary. */
-+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-+
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
-@@ -8423,37 +8551,36 @@
- #if ! YYERROR_VERBOSE
- yyerror (YY_("syntax error"));
- #else
-+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-+ yyssp, yytoken)
- {
-- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-- {
-- YYSIZE_T yyalloc = 2 * yysize;
-- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-- yyalloc = YYSTACK_ALLOC_MAXIMUM;
-- if (yymsg != yymsgbuf)
-- YYSTACK_FREE (yymsg);
-- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-- if (yymsg)
-- yymsg_alloc = yyalloc;
-- else
-- {
-- yymsg = yymsgbuf;
-- yymsg_alloc = sizeof yymsgbuf;
-- }
-- }
--
-- if (0 < yysize && yysize <= yymsg_alloc)
-- {
-- (void) yysyntax_error (yymsg, yystate, yychar);
-- yyerror (yymsg);
-- }
-- else
-- {
-- yyerror (YY_("syntax error"));
-- if (yysize != 0)
-- goto yyexhaustedlab;
-- }
-+ char const *yymsgp = YY_("syntax error");
-+ int yysyntax_error_status;
-+ yysyntax_error_status = YYSYNTAX_ERROR;
-+ if (yysyntax_error_status == 0)
-+ yymsgp = yymsg;
-+ else if (yysyntax_error_status == 1)
-+ {
-+ if (yymsg != yymsgbuf)
-+ YYSTACK_FREE (yymsg);
-+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-+ if (!yymsg)
-+ {
-+ yymsg = yymsgbuf;
-+ yymsg_alloc = sizeof yymsgbuf;
-+ yysyntax_error_status = 2;
-+ }
-+ else
-+ {
-+ yysyntax_error_status = YYSYNTAX_ERROR;
-+ yymsgp = yymsg;
-+ }
-+ }
-+ yyerror (yymsgp);
-+ if (yysyntax_error_status == 2)
-+ goto yyexhaustedlab;
- }
-+# undef YYSYNTAX_ERROR
- #endif
- }
-
-@@ -8461,24 +8588,24 @@
-
- if (yyerrstatus == 3)
- {
-- /* If just tried and failed to reuse look-ahead token after an
-- error, discard it. */
-+ /* If just tried and failed to reuse lookahead token after an
-+ error, discard it. */
-
- if (yychar <= YYEOF)
-- {
-- /* Return failure if at end of input. */
-- if (yychar == YYEOF)
-- YYABORT;
-- }
-+ {
-+ /* Return failure if at end of input. */
-+ if (yychar == YYEOF)
-+ YYABORT;
-+ }
- else
-- {
-- yydestruct ("Error: discarding",
-- yytoken, &yylval);
-- yychar = YYEMPTY;
-- }
-+ {
-+ yydestruct ("Error: discarding",
-+ yytoken, &yylval);
-+ yychar = YYEMPTY;
-+ }
- }
-
-- /* Else will try to reuse look-ahead token after shifting the error
-+ /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-@@ -8494,7 +8621,7 @@
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
-
-- /* Do not reclaim the symbols of the rule which action triggered
-+ /* Do not reclaim the symbols of the rule whose action triggered
- this YYERROR. */
- YYPOPSTACK (yylen);
- yylen = 0;
-@@ -8507,38 +8634,37 @@
- | yyerrlab1 -- common code for both syntax error and YYERROR. |
- `-------------------------------------------------------------*/
- yyerrlab1:
-- yyerrstatus = 3; /* Each real token shifted decrements this. */
-+ yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact[yystate];
-- if (yyn != YYPACT_NINF)
-- {
-- yyn += YYTERROR;
-- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-- {
-- yyn = yytable[yyn];
-- if (0 < yyn)
-- break;
-- }
-- }
-+ if (!yypact_value_is_default (yyn))
-+ {
-+ yyn += YYTERROR;
-+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-+ {
-+ yyn = yytable[yyn];
-+ if (0 < yyn)
-+ break;
-+ }
-+ }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
-- YYABORT;
-+ YYABORT;
-
-
- yydestruct ("Error: popping",
-- yystos[yystate], yyvsp);
-+ yystos[yystate], yyvsp);
- YYPOPSTACK (1);
- yystate = *yyssp;
- YY_STACK_PRINT (yyss, yyssp);
- }
-
-- if (yyn == YYFINAL)
-- YYACCEPT;
--
-+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
-+ YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
- /* Shift the error token. */
-@@ -8562,7 +8688,7 @@
- yyresult = 1;
- goto yyreturn;
-
--#ifndef yyoverflow
-+#if !defined yyoverflow || YYERROR_VERBOSE
- /*-------------------------------------------------.
- | yyexhaustedlab -- memory exhaustion comes here. |
- `-------------------------------------------------*/
-@@ -8573,17 +8699,22 @@
- #endif
-
- yyreturn:
-- if (yychar != YYEOF && yychar != YYEMPTY)
-- yydestruct ("Cleanup: discarding lookahead",
-- yytoken, &yylval);
-- /* Do not reclaim the symbols of the rule which action triggered
-+ if (yychar != YYEMPTY)
-+ {
-+ /* Make sure we have latest lookahead translation. See comments at
-+ user semantic actions for why this is necessary. */
-+ yytoken = YYTRANSLATE (yychar);
-+ yydestruct ("Cleanup: discarding lookahead",
-+ yytoken, &yylval);
-+ }
-+ /* Do not reclaim the symbols of the rule whose action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK (yylen);
- YY_STACK_PRINT (yyss, yyssp);
- while (yyssp != yyss)
- {
- yydestruct ("Cleanup: popping",
-- yystos[*yyssp], yyvsp);
-+ yystos[*yyssp], yyvsp);
- YYPOPSTACK (1);
- }
- #ifndef yyoverflow
-@@ -8594,12 +8725,9 @@
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- #endif
-- /* Make sure YYID is used. */
-- return YYID (yyresult);
-+ return yyresult;
- }
--
--
--#line 4742 "sip-4.19.12/sipgen/metasrc/parser.y"
-+#line 4742 "sipgen/metasrc/parser.y" /* yacc.c:1906 */
-
-
-
-@@ -13483,4 +13611,3 @@
- if (sd->args[a].atype == ellipsis_type && a < sd->nrArgs - 1)
- yyerror("An ellipsis must be at the end of the argument list if /NoArgParser/ is not specified");
- }
--
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/parser.h sip/sipgen/parser.h
---- ./sip-4.19.12.orig/sipgen/parser.h 2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/parser.h 2018-09-18 18:12:23.642053256 -0400
-@@ -1,14 +1,13 @@
--/* A Bison parser, made by GNU Bison 2.3. */
-+/* A Bison parser, made by GNU Bison 3.0.4. */
-
--/* Skeleton interface for Bison's Yacc-like parsers in C
-+/* Bison interface for Yacc-like parsers in C
-
-- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-- Free Software Foundation, Inc.
-+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
-- This program is free software; you can redistribute it and/or modify
-+ This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2, or (at your option)
-- any later version.
-+ the Free Software Foundation, either version 3 of the License, or
-+ (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
-@@ -16,9 +15,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- Boston, MA 02110-1301, USA. */
-+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
- /* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
-@@ -33,162 +30,171 @@
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
--/* Tokens. */
-+#ifndef YY_YY_SIPGEN_PARSER_H_INCLUDED
-+# define YY_YY_SIPGEN_PARSER_H_INCLUDED
-+/* Debug traces. */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+#if YYDEBUG
-+extern int yydebug;
-+#endif
-+
-+/* Token type. */
- #ifndef YYTOKENTYPE
- # define YYTOKENTYPE
-- /* Put the tokens into the symbol table, so that GDB and other debuggers
-- know about them. */
-- enum yytokentype {
-- TK_API = 258,
-- TK_AUTOPYNAME = 259,
-- TK_DEFDOCSTRFMT = 260,
-- TK_DEFDOCSTRSIG = 261,
-- TK_DEFENCODING = 262,
-- TK_PLUGIN = 263,
-- TK_VIRTERRORHANDLER = 264,
-- TK_EXPTYPEHINTCODE = 265,
-- TK_TYPEHINTCODE = 266,
-- TK_DOCSTRING = 267,
-- TK_DOC = 268,
-- TK_EXPORTEDDOC = 269,
-- TK_EXTRACT = 270,
-- TK_MAKEFILE = 271,
-- TK_ACCESSCODE = 272,
-- TK_GETCODE = 273,
-- TK_SETCODE = 274,
-- TK_PREINITCODE = 275,
-- TK_INITCODE = 276,
-- TK_POSTINITCODE = 277,
-- TK_FINALCODE = 278,
-- TK_UNITCODE = 279,
-- TK_UNITPOSTINCLUDECODE = 280,
-- TK_MODCODE = 281,
-- TK_TYPECODE = 282,
-- TK_PREPYCODE = 283,
-- TK_COPYING = 284,
-- TK_MAPPEDTYPE = 285,
-- TK_CODELINE = 286,
-- TK_IF = 287,
-- TK_END = 288,
-- TK_NAME_VALUE = 289,
-- TK_PATH_VALUE = 290,
-- TK_STRING_VALUE = 291,
-- TK_VIRTUALCATCHERCODE = 292,
-- TK_TRAVERSECODE = 293,
-- TK_CLEARCODE = 294,
-- TK_GETBUFFERCODE = 295,
-- TK_RELEASEBUFFERCODE = 296,
-- TK_READBUFFERCODE = 297,
-- TK_WRITEBUFFERCODE = 298,
-- TK_SEGCOUNTCODE = 299,
-- TK_CHARBUFFERCODE = 300,
-- TK_PICKLECODE = 301,
-- TK_VIRTUALCALLCODE = 302,
-- TK_METHODCODE = 303,
-- TK_PREMETHODCODE = 304,
-- TK_INSTANCECODE = 305,
-- TK_FROMTYPE = 306,
-- TK_TOTYPE = 307,
-- TK_TOSUBCLASS = 308,
-- TK_INCLUDE = 309,
-- TK_OPTINCLUDE = 310,
-- TK_IMPORT = 311,
-- TK_EXPHEADERCODE = 312,
-- TK_MODHEADERCODE = 313,
-- TK_TYPEHEADERCODE = 314,
-- TK_MODULE = 315,
-- TK_CMODULE = 316,
-- TK_CONSMODULE = 317,
-- TK_COMPOMODULE = 318,
-- TK_CLASS = 319,
-- TK_STRUCT = 320,
-- TK_PUBLIC = 321,
-- TK_PROTECTED = 322,
-- TK_PRIVATE = 323,
-- TK_SIGNALS = 324,
-- TK_SIGNAL_METHOD = 325,
-- TK_SLOTS = 326,
-- TK_SLOT_METHOD = 327,
-- TK_BOOL = 328,
-- TK_SHORT = 329,
-- TK_INT = 330,
-- TK_LONG = 331,
-- TK_FLOAT = 332,
-- TK_DOUBLE = 333,
-- TK_CHAR = 334,
-- TK_WCHAR_T = 335,
-- TK_VOID = 336,
-- TK_PYOBJECT = 337,
-- TK_PYTUPLE = 338,
-- TK_PYLIST = 339,
-- TK_PYDICT = 340,
-- TK_PYCALLABLE = 341,
-- TK_PYSLICE = 342,
-- TK_PYTYPE = 343,
-- TK_PYBUFFER = 344,
-- TK_VIRTUAL = 345,
-- TK_ENUM = 346,
-- TK_SIGNED = 347,
-- TK_UNSIGNED = 348,
-- TK_SCOPE = 349,
-- TK_LOGICAL_OR = 350,
-- TK_CONST = 351,
-- TK_STATIC = 352,
-- TK_SIPSIGNAL = 353,
-- TK_SIPSLOT = 354,
-- TK_SIPANYSLOT = 355,
-- TK_SIPRXCON = 356,
-- TK_SIPRXDIS = 357,
-- TK_SIPSLOTCON = 358,
-- TK_SIPSLOTDIS = 359,
-- TK_SIPSSIZET = 360,
-- TK_NUMBER_VALUE = 361,
-- TK_REAL_VALUE = 362,
-- TK_TYPEDEF = 363,
-- TK_NAMESPACE = 364,
-- TK_TIMELINE = 365,
-- TK_PLATFORMS = 366,
-- TK_FEATURE = 367,
-- TK_LICENSE = 368,
-- TK_QCHAR_VALUE = 369,
-- TK_TRUE_VALUE = 370,
-- TK_FALSE_VALUE = 371,
-- TK_NULL_VALUE = 372,
-- TK_OPERATOR = 373,
-- TK_THROW = 374,
-- TK_QOBJECT = 375,
-- TK_EXCEPTION = 376,
-- TK_RAISECODE = 377,
-- TK_VIRTERRORCODE = 378,
-- TK_EXPLICIT = 379,
-- TK_TEMPLATE = 380,
-- TK_FINAL = 381,
-- TK_ELLIPSIS = 382,
-- TK_DEFMETATYPE = 383,
-- TK_DEFSUPERTYPE = 384,
-- TK_PROPERTY = 385,
-- TK_HIDE_NS = 386,
-- TK_FORMAT = 387,
-- TK_GET = 388,
-- TK_ID = 389,
-- TK_KWARGS = 390,
-- TK_LANGUAGE = 391,
-- TK_LICENSEE = 392,
-- TK_NAME = 393,
-- TK_OPTIONAL = 394,
-- TK_ORDER = 395,
-- TK_REMOVELEADING = 396,
-- TK_SET = 397,
-- TK_SIGNATURE = 398,
-- TK_TIMESTAMP = 399,
-- TK_TYPE = 400,
-- TK_USEARGNAMES = 401,
-- TK_USELIMITEDAPI = 402,
-- TK_ALLRAISEPYEXC = 403,
-- TK_CALLSUPERINIT = 404,
-- TK_DEFERRORHANDLER = 405,
-- TK_VERSION = 406
-- };
-+ enum yytokentype
-+ {
-+ TK_API = 258,
-+ TK_AUTOPYNAME = 259,
-+ TK_DEFDOCSTRFMT = 260,
-+ TK_DEFDOCSTRSIG = 261,
-+ TK_DEFENCODING = 262,
-+ TK_PLUGIN = 263,
-+ TK_VIRTERRORHANDLER = 264,
-+ TK_EXPTYPEHINTCODE = 265,
-+ TK_TYPEHINTCODE = 266,
-+ TK_DOCSTRING = 267,
-+ TK_DOC = 268,
-+ TK_EXPORTEDDOC = 269,
-+ TK_EXTRACT = 270,
-+ TK_MAKEFILE = 271,
-+ TK_ACCESSCODE = 272,
-+ TK_GETCODE = 273,
-+ TK_SETCODE = 274,
-+ TK_PREINITCODE = 275,
-+ TK_INITCODE = 276,
-+ TK_POSTINITCODE = 277,
-+ TK_FINALCODE = 278,
-+ TK_UNITCODE = 279,
-+ TK_UNITPOSTINCLUDECODE = 280,
-+ TK_MODCODE = 281,
-+ TK_TYPECODE = 282,
-+ TK_PREPYCODE = 283,
-+ TK_COPYING = 284,
-+ TK_MAPPEDTYPE = 285,
-+ TK_CODELINE = 286,
-+ TK_IF = 287,
-+ TK_END = 288,
-+ TK_NAME_VALUE = 289,
-+ TK_PATH_VALUE = 290,
-+ TK_STRING_VALUE = 291,
-+ TK_VIRTUALCATCHERCODE = 292,
-+ TK_TRAVERSECODE = 293,
-+ TK_CLEARCODE = 294,
-+ TK_GETBUFFERCODE = 295,
-+ TK_RELEASEBUFFERCODE = 296,
-+ TK_READBUFFERCODE = 297,
-+ TK_WRITEBUFFERCODE = 298,
-+ TK_SEGCOUNTCODE = 299,
-+ TK_CHARBUFFERCODE = 300,
-+ TK_PICKLECODE = 301,
-+ TK_VIRTUALCALLCODE = 302,
-+ TK_METHODCODE = 303,
-+ TK_PREMETHODCODE = 304,
-+ TK_INSTANCECODE = 305,
-+ TK_FROMTYPE = 306,
-+ TK_TOTYPE = 307,
-+ TK_TOSUBCLASS = 308,
-+ TK_INCLUDE = 309,
-+ TK_OPTINCLUDE = 310,
-+ TK_IMPORT = 311,
-+ TK_EXPHEADERCODE = 312,
-+ TK_MODHEADERCODE = 313,
-+ TK_TYPEHEADERCODE = 314,
-+ TK_MODULE = 315,
-+ TK_CMODULE = 316,
-+ TK_CONSMODULE = 317,
-+ TK_COMPOMODULE = 318,
-+ TK_CLASS = 319,
-+ TK_STRUCT = 320,
-+ TK_PUBLIC = 321,
-+ TK_PROTECTED = 322,
-+ TK_PRIVATE = 323,
-+ TK_SIGNALS = 324,
-+ TK_SIGNAL_METHOD = 325,
-+ TK_SLOTS = 326,
-+ TK_SLOT_METHOD = 327,
-+ TK_BOOL = 328,
-+ TK_SHORT = 329,
-+ TK_INT = 330,
-+ TK_LONG = 331,
-+ TK_FLOAT = 332,
-+ TK_DOUBLE = 333,
-+ TK_CHAR = 334,
-+ TK_WCHAR_T = 335,
-+ TK_VOID = 336,
-+ TK_PYOBJECT = 337,
-+ TK_PYTUPLE = 338,
-+ TK_PYLIST = 339,
-+ TK_PYDICT = 340,
-+ TK_PYCALLABLE = 341,
-+ TK_PYSLICE = 342,
-+ TK_PYTYPE = 343,
-+ TK_PYBUFFER = 344,
-+ TK_VIRTUAL = 345,
-+ TK_ENUM = 346,
-+ TK_SIGNED = 347,
-+ TK_UNSIGNED = 348,
-+ TK_SCOPE = 349,
-+ TK_LOGICAL_OR = 350,
-+ TK_CONST = 351,
-+ TK_STATIC = 352,
-+ TK_SIPSIGNAL = 353,
-+ TK_SIPSLOT = 354,
-+ TK_SIPANYSLOT = 355,
-+ TK_SIPRXCON = 356,
-+ TK_SIPRXDIS = 357,
-+ TK_SIPSLOTCON = 358,
-+ TK_SIPSLOTDIS = 359,
-+ TK_SIPSSIZET = 360,
-+ TK_NUMBER_VALUE = 361,
-+ TK_REAL_VALUE = 362,
-+ TK_TYPEDEF = 363,
-+ TK_NAMESPACE = 364,
-+ TK_TIMELINE = 365,
-+ TK_PLATFORMS = 366,
-+ TK_FEATURE = 367,
-+ TK_LICENSE = 368,
-+ TK_QCHAR_VALUE = 369,
-+ TK_TRUE_VALUE = 370,
-+ TK_FALSE_VALUE = 371,
-+ TK_NULL_VALUE = 372,
-+ TK_OPERATOR = 373,
-+ TK_THROW = 374,
-+ TK_QOBJECT = 375,
-+ TK_EXCEPTION = 376,
-+ TK_RAISECODE = 377,
-+ TK_VIRTERRORCODE = 378,
-+ TK_EXPLICIT = 379,
-+ TK_TEMPLATE = 380,
-+ TK_FINAL = 381,
-+ TK_ELLIPSIS = 382,
-+ TK_DEFMETATYPE = 383,
-+ TK_DEFSUPERTYPE = 384,
-+ TK_PROPERTY = 385,
-+ TK_HIDE_NS = 386,
-+ TK_FORMAT = 387,
-+ TK_GET = 388,
-+ TK_ID = 389,
-+ TK_KWARGS = 390,
-+ TK_LANGUAGE = 391,
-+ TK_LICENSEE = 392,
-+ TK_NAME = 393,
-+ TK_OPTIONAL = 394,
-+ TK_ORDER = 395,
-+ TK_REMOVELEADING = 396,
-+ TK_SET = 397,
-+ TK_SIGNATURE = 398,
-+ TK_TIMESTAMP = 399,
-+ TK_TYPE = 400,
-+ TK_USEARGNAMES = 401,
-+ TK_USELIMITEDAPI = 402,
-+ TK_ALLRAISEPYEXC = 403,
-+ TK_CALLSUPERINIT = 404,
-+ TK_DEFERRORHANDLER = 405,
-+ TK_VERSION = 406
-+ };
- #endif
- /* Tokens. */
- #define TK_API 258
-@@ -341,13 +347,13 @@
- #define TK_DEFERRORHANDLER 405
- #define TK_VERSION 406
-
--
--
--
-+/* Value type. */
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
--typedef union YYSTYPE
--#line 203 "sip-4.19.12/sipgen/metasrc/parser.y"
-+
-+union YYSTYPE
- {
-+#line 203 "sipgen/metasrc/parser.y" /* yacc.c:1909 */
-+
- char qchar;
- char *text;
- long number;
-@@ -390,14 +396,18 @@
- variableCfg variable;
- vehCfg veh;
- int token;
--}
--/* Line 1529 of yacc.c. */
--#line 396 "sip-4.19.12/sipgen/parser.h"
-- YYSTYPE;
--# define yystype YYSTYPE /* obsolescent; will be withdrawn */
--# define YYSTYPE_IS_DECLARED 1
-+
-+#line 401 "sipgen/parser.h" /* yacc.c:1909 */
-+};
-+
-+typedef union YYSTYPE YYSTYPE;
- # define YYSTYPE_IS_TRIVIAL 1
-+# define YYSTYPE_IS_DECLARED 1
- #endif
-
-+
- extern YYSTYPE yylval;
-
-+int yyparse (void);
-+
-+#endif /* !YY_YY_SIPGEN_PARSER_H_INCLUDED */
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h sip/sipgen/sip.h
---- ./sip-4.19.12.orig/sipgen/sip.h 2018-07-05 05:55:19.000000000 -0400
-+++ sip/sipgen/sip.h 2018-09-18 18:12:23.643053242 -0400
-@@ -27,8 +27,8 @@
- /*
- * Define the SIP version number.
- */
--#define SIP_VERSION 0x04130c
--#define SIP_VERSION_STR "4.19.12"
-+#define SIP_VERSION 0x04ffff
-+#define SIP_VERSION_STR "4.255.255"
-
-
- #ifdef TRUE
-diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h.in sip/sipgen/sip.h.in
---- ./sip-4.19.12.orig/sipgen/sip.h.in 1969-12-31 19:00:00.000000000 -0500
-+++ sip/sipgen/sip.h.in 2018-09-24 13:12:20.674276069 -0400
-@@ -0,0 +1,1653 @@
-+/*
-+ * The main header file for SIP.
-+ *
-+ * Copyright (c) 2018 Riverbank Computing Limited <info@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
index be384fd395..09f15d4217 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"