<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -26,3 +26,7 @@ sipconfig.py
 .pydevproject
 
 *.suo
+
+sipgen/parser.c
+doc/sipref.html
+</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,72 @@
+2009/03/17 18:38:32  phil
+Some fixes for consolidated module support for both Python v2 and v3.
+
+
+2009/03/17 10:51:52  phil
+Tweaked the build system to make it easier for Makefile sub-classes to add
+commands to targets.
+
+
+2009/03/16 20:59:59  phil
+Fixed a bug in generating Python v3 consolidated modules.
+
+
+2009/03/16 14:04:30  phil
+Fixed a typo that broke the build of the sip module for Python v2.
+
+
+2009/03/15 13:39:50  phil
+Tweaks to the Python portability macros.
+
+
+2009/03/15  9:59:29  phil
+More Python portability macros.
+
+
+2009/03/14 21:45:47  phil
+Fixed a Mac build regression handling the location of the SDK.
+
+
+2009/03/14 16:59:04  phil
+Added some more Python porting macros.
+
+
+2009/03/14 13:44:03  phil
+Removed a remaining Python v2 specific call from the build system.
+
+
+2009/03/14 11:42:39  phil
+The generated code now supports Python v3.
+
+
+2009/03/14 10:08:13  phil
+The sip module can now be imported by Python v3.
+
+
+2009/03/13 19:15:25  phil
+Ported the PyString_ calls in the sip module to Python v3.
+
+
+2009/03/13 16:42:53  phil
+Updated the generated module initialisation code for Python v3 - but not for
+consolidated modules yet.
+
+
+2009/03/13 15:13:10  phil
+Moved to PyLong_* for Python v3.
+
+
+2009/03/12 23:16:19  phil
+More porting of the sip module.  It now compiles but still calls Python v2
+functions.
+
+
+2009/03/12 18:17:11  phil
+Partially ported the sip module to Python v3.
+Added the %BIGetBufferCode and %BIReleaseBufferCode directives to support the
+buffer interface of Python v3.
+
+
 2009/03/11 22:30:09  phil
 configure.py now uses optparse.
 configure.py and the build system will now run under Python3.</diff>
      <filename>ChangeLog</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,7 @@
 v4.8 ??? 2009
+  - Added support for Python v3.
+  - Added the %BIGetBufferCode and %BIReleaseBufferCode to support the buffer
+    interface of Python v3.
   - Added the %DefaultMetatype directive and the /Metatype/ class annotation to
     allow the meta-type of a wrapped type to be changed.
   - Added the %DefaultSupertype directive and the /Supertype/ class annotation</diff>
      <filename>NEWS</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@ import siputils
 
 # Initialise the globals.
 sip_version = 0x040800
-sip_version_str = &quot;4.8-snapshot-20090311&quot;
+sip_version_str = &quot;4.8-snapshot-20090317&quot;
 py_version = sys.hexversion &gt;&gt; 8
 plat_py_site_dir = None
 plat_py_inc_dir = None
@@ -376,6 +376,7 @@ def main(argv):
 
         sys.exit()
 
+    # Convert the boolean 'universal' option to a string.
     if opts.universal:
         if '/' in opts.sdk:
             opts.universal = os.path.abspath(opts.sdk)
@@ -384,6 +385,8 @@ def main(argv):
 
         if not os.path.isdir(opts.universal):
             siputils.error(&quot;Unable to find the SDK directory %s. Use the -s flag to specify the name of the SDK (e.g. %s) or its full path.&quot; % (opts.universal, DEFAULT_MACOSX_SDK))
+    else:
+        opts.universal = ''
 
     # Get the platform specific macros for building.
     macros = siputils.parse_build_macros(os.path.join(&quot;specs&quot;, opts.platform),</diff>
      <filename>configure.py</filename>
    </modified>
    <modified>
      <diff>@@ -301,7 +301,7 @@ ul.auto-toc {
 &lt;tr&gt;&lt;th class=&quot;docinfo-name&quot;&gt;Contact:&lt;/th&gt;
 &lt;td&gt;&lt;a class=&quot;first last reference&quot; href=&quot;mailto:info&amp;#64;riverbankcomputing.com&quot;&gt;info&amp;#64;riverbankcomputing.com&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;th class=&quot;docinfo-name&quot;&gt;Version:&lt;/th&gt;
-&lt;td&gt;4.8-snapshot-20090311&lt;/td&gt;&lt;/tr&gt;
+&lt;td&gt;4.8-snapshot-20090317&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;th class=&quot;docinfo-name&quot;&gt;Copyright:&lt;/th&gt;
 &lt;td&gt;Copyright (c) 2009 Riverbank Computing Limited&lt;/td&gt;&lt;/tr&gt;
 &lt;/tbody&gt;
@@ -371,227 +371,229 @@ ul.auto-toc {
 &lt;/li&gt;
 &lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-directives&quot; id=&quot;id71&quot; name=&quot;id71&quot;&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP Directives&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
 &lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#accesscode&quot; id=&quot;id72&quot; name=&quot;id72&quot;&gt;7.1&amp;nbsp;&amp;nbsp;&amp;nbsp;%AccessCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot; id=&quot;id73&quot; name=&quot;id73&quot;&gt;7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetCharBufferCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot; id=&quot;id74&quot; name=&quot;id74&quot;&gt;7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetReadBufferCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot; id=&quot;id75&quot; name=&quot;id75&quot;&gt;7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetSegCountCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot; id=&quot;id76&quot; name=&quot;id76&quot;&gt;7.5&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetWriteBufferCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#cmodule&quot; id=&quot;id77&quot; name=&quot;id77&quot;&gt;7.6&amp;nbsp;&amp;nbsp;&amp;nbsp;%CModule&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#compositemodule&quot; id=&quot;id78&quot; name=&quot;id78&quot;&gt;7.7&amp;nbsp;&amp;nbsp;&amp;nbsp;%CompositeModule&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#consolidatedmodule&quot; id=&quot;id79&quot; name=&quot;id79&quot;&gt;7.8&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConsolidatedModule&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#convertfromtypecode&quot; id=&quot;id80&quot; name=&quot;id80&quot;&gt;7.9&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertFromTypeCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot; id=&quot;id81&quot; name=&quot;id81&quot;&gt;7.10&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToSubClassCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#converttotypecode&quot; id=&quot;id82&quot; name=&quot;id82&quot;&gt;7.11&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToTypeCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#copying&quot; id=&quot;id83&quot; name=&quot;id83&quot;&gt;7.12&amp;nbsp;&amp;nbsp;&amp;nbsp;%Copying&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#defaultmetatype&quot; id=&quot;id84&quot; name=&quot;id84&quot;&gt;7.13&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultMetatype&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#defaultsupertype&quot; id=&quot;id85&quot; name=&quot;id85&quot;&gt;7.14&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultSupertype&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#doc&quot; id=&quot;id86&quot; name=&quot;id86&quot;&gt;7.15&amp;nbsp;&amp;nbsp;&amp;nbsp;%Doc&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#end&quot; id=&quot;id87&quot; name=&quot;id87&quot;&gt;7.16&amp;nbsp;&amp;nbsp;&amp;nbsp;%End&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exception&quot; id=&quot;id88&quot; name=&quot;id88&quot;&gt;7.17&amp;nbsp;&amp;nbsp;&amp;nbsp;%Exception&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exporteddoc&quot; id=&quot;id89&quot; name=&quot;id89&quot;&gt;7.18&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedDoc&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exportedheadercode&quot; id=&quot;id90&quot; name=&quot;id90&quot;&gt;7.19&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedHeaderCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#feature&quot; id=&quot;id91&quot; name=&quot;id91&quot;&gt;7.20&amp;nbsp;&amp;nbsp;&amp;nbsp;%Feature&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#gcclearcode&quot; id=&quot;id92&quot; name=&quot;id92&quot;&gt;7.21&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCClearCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#gctraversecode&quot; id=&quot;id93&quot; name=&quot;id93&quot;&gt;7.22&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCTraverseCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#getcode&quot; id=&quot;id94&quot; name=&quot;id94&quot;&gt;7.23&amp;nbsp;&amp;nbsp;&amp;nbsp;%GetCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#if&quot; id=&quot;id95&quot; name=&quot;id95&quot;&gt;7.24&amp;nbsp;&amp;nbsp;&amp;nbsp;%If&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#import&quot; id=&quot;id96&quot; name=&quot;id96&quot;&gt;7.25&amp;nbsp;&amp;nbsp;&amp;nbsp;%Import&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#include&quot; id=&quot;id97&quot; name=&quot;id97&quot;&gt;7.26&amp;nbsp;&amp;nbsp;&amp;nbsp;%Include&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#initialisationcode&quot; id=&quot;id98&quot; name=&quot;id98&quot;&gt;7.27&amp;nbsp;&amp;nbsp;&amp;nbsp;%InitialisationCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id14&quot; id=&quot;id99&quot; name=&quot;id99&quot;&gt;7.28&amp;nbsp;&amp;nbsp;&amp;nbsp;%License&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#mappedtype&quot; id=&quot;id100&quot; name=&quot;id100&quot;&gt;7.29&amp;nbsp;&amp;nbsp;&amp;nbsp;%MappedType&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#methodcode&quot; id=&quot;id101&quot; name=&quot;id101&quot;&gt;7.30&amp;nbsp;&amp;nbsp;&amp;nbsp;%MethodCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#module&quot; id=&quot;id102&quot; name=&quot;id102&quot;&gt;7.31&amp;nbsp;&amp;nbsp;&amp;nbsp;%Module&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#modulecode&quot; id=&quot;id103&quot; name=&quot;id103&quot;&gt;7.32&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#moduleheadercode&quot; id=&quot;id104&quot; name=&quot;id104&quot;&gt;7.33&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleHeaderCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#optionalinclude&quot; id=&quot;id105&quot; name=&quot;id105&quot;&gt;7.34&amp;nbsp;&amp;nbsp;&amp;nbsp;%OptionalInclude&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#picklecode&quot; id=&quot;id106&quot; name=&quot;id106&quot;&gt;7.35&amp;nbsp;&amp;nbsp;&amp;nbsp;%PickleCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#platforms&quot; id=&quot;id107&quot; name=&quot;id107&quot;&gt;7.36&amp;nbsp;&amp;nbsp;&amp;nbsp;%Platforms&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#postinitialisationcode&quot; id=&quot;id108&quot; name=&quot;id108&quot;&gt;7.37&amp;nbsp;&amp;nbsp;&amp;nbsp;%PostInitialisationCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#preinitialisationcode&quot; id=&quot;id109&quot; name=&quot;id109&quot;&gt;7.38&amp;nbsp;&amp;nbsp;&amp;nbsp;%PreInitialisationCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#raisecode&quot; id=&quot;id110&quot; name=&quot;id110&quot;&gt;7.39&amp;nbsp;&amp;nbsp;&amp;nbsp;%RaiseCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#setcode&quot; id=&quot;id111&quot; name=&quot;id111&quot;&gt;7.40&amp;nbsp;&amp;nbsp;&amp;nbsp;%SetCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#timeline&quot; id=&quot;id112&quot; name=&quot;id112&quot;&gt;7.41&amp;nbsp;&amp;nbsp;&amp;nbsp;%Timeline&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typecode&quot; id=&quot;id113&quot; name=&quot;id113&quot;&gt;7.42&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typeheadercode&quot; id=&quot;id114&quot; name=&quot;id114&quot;&gt;7.43&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeHeaderCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#unitcode&quot; id=&quot;id115&quot; name=&quot;id115&quot;&gt;7.44&amp;nbsp;&amp;nbsp;&amp;nbsp;%UnitCode&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#virtualcatchercode&quot; id=&quot;id116&quot; name=&quot;id116&quot;&gt;7.45&amp;nbsp;&amp;nbsp;&amp;nbsp;%VirtualCatcherCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetbuffercode&quot; id=&quot;id73&quot; name=&quot;id73&quot;&gt;7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetBufferCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot; id=&quot;id74&quot; name=&quot;id74&quot;&gt;7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetCharBufferCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot; id=&quot;id75&quot; name=&quot;id75&quot;&gt;7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetReadBufferCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot; id=&quot;id76&quot; name=&quot;id76&quot;&gt;7.5&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetSegCountCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot; id=&quot;id77&quot; name=&quot;id77&quot;&gt;7.6&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetWriteBufferCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#bireleasebuffercode&quot; id=&quot;id78&quot; name=&quot;id78&quot;&gt;7.7&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIReleaseBufferCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#cmodule&quot; id=&quot;id79&quot; name=&quot;id79&quot;&gt;7.8&amp;nbsp;&amp;nbsp;&amp;nbsp;%CModule&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#compositemodule&quot; id=&quot;id80&quot; name=&quot;id80&quot;&gt;7.9&amp;nbsp;&amp;nbsp;&amp;nbsp;%CompositeModule&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#consolidatedmodule&quot; id=&quot;id81&quot; name=&quot;id81&quot;&gt;7.10&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConsolidatedModule&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#convertfromtypecode&quot; id=&quot;id82&quot; name=&quot;id82&quot;&gt;7.11&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertFromTypeCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot; id=&quot;id83&quot; name=&quot;id83&quot;&gt;7.12&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToSubClassCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#converttotypecode&quot; id=&quot;id84&quot; name=&quot;id84&quot;&gt;7.13&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToTypeCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#copying&quot; id=&quot;id85&quot; name=&quot;id85&quot;&gt;7.14&amp;nbsp;&amp;nbsp;&amp;nbsp;%Copying&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#defaultmetatype&quot; id=&quot;id86&quot; name=&quot;id86&quot;&gt;7.15&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultMetatype&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#defaultsupertype&quot; id=&quot;id87&quot; name=&quot;id87&quot;&gt;7.16&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultSupertype&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#doc&quot; id=&quot;id88&quot; name=&quot;id88&quot;&gt;7.17&amp;nbsp;&amp;nbsp;&amp;nbsp;%Doc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#end&quot; id=&quot;id89&quot; name=&quot;id89&quot;&gt;7.18&amp;nbsp;&amp;nbsp;&amp;nbsp;%End&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exception&quot; id=&quot;id90&quot; name=&quot;id90&quot;&gt;7.19&amp;nbsp;&amp;nbsp;&amp;nbsp;%Exception&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exporteddoc&quot; id=&quot;id91&quot; name=&quot;id91&quot;&gt;7.20&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedDoc&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exportedheadercode&quot; id=&quot;id92&quot; name=&quot;id92&quot;&gt;7.21&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedHeaderCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#feature&quot; id=&quot;id93&quot; name=&quot;id93&quot;&gt;7.22&amp;nbsp;&amp;nbsp;&amp;nbsp;%Feature&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#gcclearcode&quot; id=&quot;id94&quot; name=&quot;id94&quot;&gt;7.23&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCClearCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#gctraversecode&quot; id=&quot;id95&quot; name=&quot;id95&quot;&gt;7.24&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCTraverseCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#getcode&quot; id=&quot;id96&quot; name=&quot;id96&quot;&gt;7.25&amp;nbsp;&amp;nbsp;&amp;nbsp;%GetCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#if&quot; id=&quot;id97&quot; name=&quot;id97&quot;&gt;7.26&amp;nbsp;&amp;nbsp;&amp;nbsp;%If&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#import&quot; id=&quot;id98&quot; name=&quot;id98&quot;&gt;7.27&amp;nbsp;&amp;nbsp;&amp;nbsp;%Import&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#include&quot; id=&quot;id99&quot; name=&quot;id99&quot;&gt;7.28&amp;nbsp;&amp;nbsp;&amp;nbsp;%Include&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#initialisationcode&quot; id=&quot;id100&quot; name=&quot;id100&quot;&gt;7.29&amp;nbsp;&amp;nbsp;&amp;nbsp;%InitialisationCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id14&quot; id=&quot;id101&quot; name=&quot;id101&quot;&gt;7.30&amp;nbsp;&amp;nbsp;&amp;nbsp;%License&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#mappedtype&quot; id=&quot;id102&quot; name=&quot;id102&quot;&gt;7.31&amp;nbsp;&amp;nbsp;&amp;nbsp;%MappedType&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#methodcode&quot; id=&quot;id103&quot; name=&quot;id103&quot;&gt;7.32&amp;nbsp;&amp;nbsp;&amp;nbsp;%MethodCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#module&quot; id=&quot;id104&quot; name=&quot;id104&quot;&gt;7.33&amp;nbsp;&amp;nbsp;&amp;nbsp;%Module&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#modulecode&quot; id=&quot;id105&quot; name=&quot;id105&quot;&gt;7.34&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#moduleheadercode&quot; id=&quot;id106&quot; name=&quot;id106&quot;&gt;7.35&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleHeaderCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#optionalinclude&quot; id=&quot;id107&quot; name=&quot;id107&quot;&gt;7.36&amp;nbsp;&amp;nbsp;&amp;nbsp;%OptionalInclude&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#picklecode&quot; id=&quot;id108&quot; name=&quot;id108&quot;&gt;7.37&amp;nbsp;&amp;nbsp;&amp;nbsp;%PickleCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#platforms&quot; id=&quot;id109&quot; name=&quot;id109&quot;&gt;7.38&amp;nbsp;&amp;nbsp;&amp;nbsp;%Platforms&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#postinitialisationcode&quot; id=&quot;id110&quot; name=&quot;id110&quot;&gt;7.39&amp;nbsp;&amp;nbsp;&amp;nbsp;%PostInitialisationCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#preinitialisationcode&quot; id=&quot;id111&quot; name=&quot;id111&quot;&gt;7.40&amp;nbsp;&amp;nbsp;&amp;nbsp;%PreInitialisationCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#raisecode&quot; id=&quot;id112&quot; name=&quot;id112&quot;&gt;7.41&amp;nbsp;&amp;nbsp;&amp;nbsp;%RaiseCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#setcode&quot; id=&quot;id113&quot; name=&quot;id113&quot;&gt;7.42&amp;nbsp;&amp;nbsp;&amp;nbsp;%SetCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#timeline&quot; id=&quot;id114&quot; name=&quot;id114&quot;&gt;7.43&amp;nbsp;&amp;nbsp;&amp;nbsp;%Timeline&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typecode&quot; id=&quot;id115&quot; name=&quot;id115&quot;&gt;7.44&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typeheadercode&quot; id=&quot;id116&quot; name=&quot;id116&quot;&gt;7.45&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeHeaderCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#unitcode&quot; id=&quot;id117&quot; name=&quot;id117&quot;&gt;7.46&amp;nbsp;&amp;nbsp;&amp;nbsp;%UnitCode&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#virtualcatchercode&quot; id=&quot;id118&quot; name=&quot;id118&quot;&gt;7.47&amp;nbsp;&amp;nbsp;&amp;nbsp;%VirtualCatcherCode&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-annotations&quot; id=&quot;id117&quot; name=&quot;id117&quot;&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#argument-annotations&quot; id=&quot;id118&quot; name=&quot;id118&quot;&gt;8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Argument Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#allownone&quot; id=&quot;id119&quot; name=&quot;id119&quot;&gt;8.1.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AllowNone&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#array&quot; id=&quot;id120&quot; name=&quot;id120&quot;&gt;8.1.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Array&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#arraysize&quot; id=&quot;id121&quot; name=&quot;id121&quot;&gt;8.1.3&amp;nbsp;&amp;nbsp;&amp;nbsp;ArraySize&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#constrained&quot; id=&quot;id122&quot; name=&quot;id122&quot;&gt;8.1.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Constrained&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#getwrapper&quot; id=&quot;id123&quot; name=&quot;id123&quot;&gt;8.1.5&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWrapper&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#in&quot; id=&quot;id124&quot; name=&quot;id124&quot;&gt;8.1.6&amp;nbsp;&amp;nbsp;&amp;nbsp;In&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#keepreference&quot; id=&quot;id125&quot; name=&quot;id125&quot;&gt;8.1.7&amp;nbsp;&amp;nbsp;&amp;nbsp;KeepReference&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#out&quot; id=&quot;id126&quot; name=&quot;id126&quot;&gt;8.1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Out&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#resultsize&quot; id=&quot;id127&quot; name=&quot;id127&quot;&gt;8.1.9&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSize&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#singleshot&quot; id=&quot;id128&quot; name=&quot;id128&quot;&gt;8.1.10&amp;nbsp;&amp;nbsp;&amp;nbsp;SingleShot&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transfer&quot; id=&quot;id129&quot; name=&quot;id129&quot;&gt;8.1.11&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transferback&quot; id=&quot;id130&quot; name=&quot;id130&quot;&gt;8.1.12&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transferthis&quot; id=&quot;id131&quot; name=&quot;id131&quot;&gt;8.1.13&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-annotations&quot; id=&quot;id119&quot; name=&quot;id119&quot;&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#argument-annotations&quot; id=&quot;id120&quot; name=&quot;id120&quot;&gt;8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Argument Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#allownone&quot; id=&quot;id121&quot; name=&quot;id121&quot;&gt;8.1.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AllowNone&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#array&quot; id=&quot;id122&quot; name=&quot;id122&quot;&gt;8.1.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Array&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#arraysize&quot; id=&quot;id123&quot; name=&quot;id123&quot;&gt;8.1.3&amp;nbsp;&amp;nbsp;&amp;nbsp;ArraySize&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#constrained&quot; id=&quot;id124&quot; name=&quot;id124&quot;&gt;8.1.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Constrained&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#getwrapper&quot; id=&quot;id125&quot; name=&quot;id125&quot;&gt;8.1.5&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWrapper&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#in&quot; id=&quot;id126&quot; name=&quot;id126&quot;&gt;8.1.6&amp;nbsp;&amp;nbsp;&amp;nbsp;In&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#keepreference&quot; id=&quot;id127&quot; name=&quot;id127&quot;&gt;8.1.7&amp;nbsp;&amp;nbsp;&amp;nbsp;KeepReference&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#out&quot; id=&quot;id128&quot; name=&quot;id128&quot;&gt;8.1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Out&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#resultsize&quot; id=&quot;id129&quot; name=&quot;id129&quot;&gt;8.1.9&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSize&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#singleshot&quot; id=&quot;id130&quot; name=&quot;id130&quot;&gt;8.1.10&amp;nbsp;&amp;nbsp;&amp;nbsp;SingleShot&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transfer&quot; id=&quot;id131&quot; name=&quot;id131&quot;&gt;8.1.11&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transferback&quot; id=&quot;id132&quot; name=&quot;id132&quot;&gt;8.1.12&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#transferthis&quot; id=&quot;id133&quot; name=&quot;id133&quot;&gt;8.1.13&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#class-annotations&quot; id=&quot;id132&quot; name=&quot;id132&quot;&gt;8.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Class Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#abstract&quot; id=&quot;id133&quot; name=&quot;id133&quot;&gt;8.2.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Abstract&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#delaydtor&quot; id=&quot;id134&quot; name=&quot;id134&quot;&gt;8.2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayDtor&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#deprecated&quot; id=&quot;id135&quot; name=&quot;id135&quot;&gt;8.2.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#external&quot; id=&quot;id136&quot; name=&quot;id136&quot;&gt;8.2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;External&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#metatype&quot; id=&quot;id137&quot; name=&quot;id137&quot;&gt;8.2.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Metatype&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#nodefaultctors&quot; id=&quot;id138&quot; name=&quot;id138&quot;&gt;8.2.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDefaultCtors&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#pyname&quot; id=&quot;id139&quot; name=&quot;id139&quot;&gt;8.2.7&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#supertype&quot; id=&quot;id140&quot; name=&quot;id140&quot;&gt;8.2.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Supertype&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#class-annotations&quot; id=&quot;id134&quot; name=&quot;id134&quot;&gt;8.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Class Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#abstract&quot; id=&quot;id135&quot; name=&quot;id135&quot;&gt;8.2.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Abstract&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#delaydtor&quot; id=&quot;id136&quot; name=&quot;id136&quot;&gt;8.2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayDtor&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#deprecated&quot; id=&quot;id137&quot; name=&quot;id137&quot;&gt;8.2.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#external&quot; id=&quot;id138&quot; name=&quot;id138&quot;&gt;8.2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;External&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#metatype&quot; id=&quot;id139&quot; name=&quot;id139&quot;&gt;8.2.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Metatype&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#nodefaultctors&quot; id=&quot;id140&quot; name=&quot;id140&quot;&gt;8.2.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDefaultCtors&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#pyname&quot; id=&quot;id141&quot; name=&quot;id141&quot;&gt;8.2.7&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#supertype&quot; id=&quot;id142&quot; name=&quot;id142&quot;&gt;8.2.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Supertype&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#mapped-type-annotations&quot; id=&quot;id141&quot; name=&quot;id141&quot;&gt;8.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Mapped Type Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#norelease&quot; id=&quot;id142&quot; name=&quot;id142&quot;&gt;8.3.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoRelease&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#mapped-type-annotations&quot; id=&quot;id143&quot; name=&quot;id143&quot;&gt;8.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Mapped Type Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#norelease&quot; id=&quot;id144&quot; name=&quot;id144&quot;&gt;8.3.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoRelease&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#enum-annotations&quot; id=&quot;id143&quot; name=&quot;id143&quot;&gt;8.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Enum Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id17&quot; id=&quot;id144&quot; name=&quot;id144&quot;&gt;8.4.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#enum-annotations&quot; id=&quot;id145&quot; name=&quot;id145&quot;&gt;8.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Enum Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id17&quot; id=&quot;id146&quot; name=&quot;id146&quot;&gt;8.4.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exception-annotations&quot; id=&quot;id145&quot; name=&quot;id145&quot;&gt;8.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id18&quot; id=&quot;id146&quot; name=&quot;id146&quot;&gt;8.5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#exception-annotations&quot; id=&quot;id147&quot; name=&quot;id147&quot;&gt;8.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id18&quot; id=&quot;id148&quot; name=&quot;id148&quot;&gt;8.5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#function-annotations&quot; id=&quot;id147&quot; name=&quot;id147&quot;&gt;8.6&amp;nbsp;&amp;nbsp;&amp;nbsp;Function Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#autogen&quot; id=&quot;id148&quot; name=&quot;id148&quot;&gt;8.6.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AutoGen&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#default&quot; id=&quot;id149&quot; name=&quot;id149&quot;&gt;8.6.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Default&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id19&quot; id=&quot;id150&quot; name=&quot;id150&quot;&gt;8.6.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#factory&quot; id=&quot;id151&quot; name=&quot;id151&quot;&gt;8.6.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Factory&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#holdgil&quot; id=&quot;id152&quot; name=&quot;id152&quot;&gt;8.6.5&amp;nbsp;&amp;nbsp;&amp;nbsp;HoldGIL&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#newthread&quot; id=&quot;id153&quot; name=&quot;id153&quot;&gt;8.6.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NewThread&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#noargparser&quot; id=&quot;id154&quot; name=&quot;id154&quot;&gt;8.6.7&amp;nbsp;&amp;nbsp;&amp;nbsp;NoArgParser&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#noderived&quot; id=&quot;id155&quot; name=&quot;id155&quot;&gt;8.6.8&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDerived&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#numeric&quot; id=&quot;id156&quot; name=&quot;id156&quot;&gt;8.6.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Numeric&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#posthook&quot; id=&quot;id157&quot; name=&quot;id157&quot;&gt;8.6.10&amp;nbsp;&amp;nbsp;&amp;nbsp;PostHook&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#prehook&quot; id=&quot;id158&quot; name=&quot;id158&quot;&gt;8.6.11&amp;nbsp;&amp;nbsp;&amp;nbsp;PreHook&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id20&quot; id=&quot;id159&quot; name=&quot;id159&quot;&gt;8.6.12&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#releasegil&quot; id=&quot;id160&quot; name=&quot;id160&quot;&gt;8.6.13&amp;nbsp;&amp;nbsp;&amp;nbsp;ReleaseGIL&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id21&quot; id=&quot;id161&quot; name=&quot;id161&quot;&gt;8.6.14&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id22&quot; id=&quot;id162&quot; name=&quot;id162&quot;&gt;8.6.15&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id23&quot; id=&quot;id163&quot; name=&quot;id163&quot;&gt;8.6.16&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#function-annotations&quot; id=&quot;id149&quot; name=&quot;id149&quot;&gt;8.6&amp;nbsp;&amp;nbsp;&amp;nbsp;Function Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#autogen&quot; id=&quot;id150&quot; name=&quot;id150&quot;&gt;8.6.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AutoGen&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#default&quot; id=&quot;id151&quot; name=&quot;id151&quot;&gt;8.6.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Default&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id19&quot; id=&quot;id152&quot; name=&quot;id152&quot;&gt;8.6.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#factory&quot; id=&quot;id153&quot; name=&quot;id153&quot;&gt;8.6.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Factory&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#holdgil&quot; id=&quot;id154&quot; name=&quot;id154&quot;&gt;8.6.5&amp;nbsp;&amp;nbsp;&amp;nbsp;HoldGIL&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#newthread&quot; id=&quot;id155&quot; name=&quot;id155&quot;&gt;8.6.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NewThread&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#noargparser&quot; id=&quot;id156&quot; name=&quot;id156&quot;&gt;8.6.7&amp;nbsp;&amp;nbsp;&amp;nbsp;NoArgParser&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#noderived&quot; id=&quot;id157&quot; name=&quot;id157&quot;&gt;8.6.8&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDerived&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#numeric&quot; id=&quot;id158&quot; name=&quot;id158&quot;&gt;8.6.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Numeric&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#posthook&quot; id=&quot;id159&quot; name=&quot;id159&quot;&gt;8.6.10&amp;nbsp;&amp;nbsp;&amp;nbsp;PostHook&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#prehook&quot; id=&quot;id160&quot; name=&quot;id160&quot;&gt;8.6.11&amp;nbsp;&amp;nbsp;&amp;nbsp;PreHook&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id20&quot; id=&quot;id161&quot; name=&quot;id161&quot;&gt;8.6.12&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#releasegil&quot; id=&quot;id162&quot; name=&quot;id162&quot;&gt;8.6.13&amp;nbsp;&amp;nbsp;&amp;nbsp;ReleaseGIL&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id21&quot; id=&quot;id163&quot; name=&quot;id163&quot;&gt;8.6.14&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id22&quot; id=&quot;id164&quot; name=&quot;id164&quot;&gt;8.6.15&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id23&quot; id=&quot;id165&quot; name=&quot;id165&quot;&gt;8.6.16&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#license-annotations&quot; id=&quot;id164&quot; name=&quot;id164&quot;&gt;8.7&amp;nbsp;&amp;nbsp;&amp;nbsp;License Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#licensee&quot; id=&quot;id165&quot; name=&quot;id165&quot;&gt;8.7.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Licensee&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#signature&quot; id=&quot;id166&quot; name=&quot;id166&quot;&gt;8.7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Signature&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#timestamp&quot; id=&quot;id167&quot; name=&quot;id167&quot;&gt;8.7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Timestamp&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#type&quot; id=&quot;id168&quot; name=&quot;id168&quot;&gt;8.7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#license-annotations&quot; id=&quot;id166&quot; name=&quot;id166&quot;&gt;8.7&amp;nbsp;&amp;nbsp;&amp;nbsp;License Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#licensee&quot; id=&quot;id167&quot; name=&quot;id167&quot;&gt;8.7.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Licensee&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#signature&quot; id=&quot;id168&quot; name=&quot;id168&quot;&gt;8.7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Signature&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#timestamp&quot; id=&quot;id169&quot; name=&quot;id169&quot;&gt;8.7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Timestamp&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#type&quot; id=&quot;id170&quot; name=&quot;id170&quot;&gt;8.7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typedef-annotations&quot; id=&quot;id169&quot; name=&quot;id169&quot;&gt;8.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Typedef Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#notypename&quot; id=&quot;id170&quot; name=&quot;id170&quot;&gt;8.8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoTypeName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#typedef-annotations&quot; id=&quot;id171&quot; name=&quot;id171&quot;&gt;8.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Typedef Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#notypename&quot; id=&quot;id172&quot; name=&quot;id172&quot;&gt;8.8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoTypeName&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#variable-annotations&quot; id=&quot;id171&quot; name=&quot;id171&quot;&gt;8.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Variable Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id24&quot; id=&quot;id172&quot; name=&quot;id172&quot;&gt;8.9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#variable-annotations&quot; id=&quot;id173&quot; name=&quot;id173&quot;&gt;8.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Variable Annotations&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#id24&quot; id=&quot;id174&quot; name=&quot;id174&quot;&gt;8.9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-for-handwritten-code&quot; id=&quot;id173&quot; name=&quot;id173&quot;&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP API for Handwritten Code&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-major-nr&quot; id=&quot;id174&quot; name=&quot;id174&quot;&gt;9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MAJOR_NR&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-minor-nr&quot; id=&quot;id175&quot; name=&quot;id175&quot;&gt;9.2&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MINOR_NR&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-block-threads&quot; id=&quot;id176&quot; name=&quot;id176&quot;&gt;9.3&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_BLOCK_THREADS&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-ssize-t&quot; id=&quot;id177&quot; name=&quot;id177&quot;&gt;9.4&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_SSIZE_T&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-unblock-threads&quot; id=&quot;id178&quot; name=&quot;id178&quot;&gt;9.5&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_UNBLOCK_THREADS&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-version&quot; id=&quot;id179&quot; name=&quot;id179&quot;&gt;9.6&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-version-str&quot; id=&quot;id180&quot; name=&quot;id180&quot;&gt;9.7&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION_STR&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbadcatcherresult&quot; id=&quot;id181&quot; name=&quot;id181&quot;&gt;9.8&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadCatcherResult()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbadlengthforslice&quot; id=&quot;id182&quot; name=&quot;id182&quot;&gt;9.9&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadLengthForSlice()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbuildresult&quot; id=&quot;id183&quot; name=&quot;id183&quot;&gt;9.10&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBuildResult()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcallmethod&quot; id=&quot;id184&quot; name=&quot;id184&quot;&gt;9.11&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCallMethod()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttoenum&quot; id=&quot;id185&quot; name=&quot;id185&quot;&gt;9.12&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToEnum()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttoinstance&quot; id=&quot;id186&quot; name=&quot;id186&quot;&gt;9.13&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttomappedtype&quot; id=&quot;id187&quot; name=&quot;id187&quot;&gt;9.14&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttotype&quot; id=&quot;id188&quot; name=&quot;id188&quot;&gt;9.15&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipclassname&quot; id=&quot;id189&quot; name=&quot;id189&quot;&gt;9.16&amp;nbsp;&amp;nbsp;&amp;nbsp;sipClassName()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromconstvoidptr&quot; id=&quot;id190&quot; name=&quot;id190&quot;&gt;9.17&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtr()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromconstvoidptrandsize&quot; id=&quot;id191&quot; name=&quot;id191&quot;&gt;9.18&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtrAndSize()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromenum&quot; id=&quot;id192&quot; name=&quot;id192&quot;&gt;9.19&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromEnum()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfrominstance&quot; id=&quot;id193&quot; name=&quot;id193&quot;&gt;9.20&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfrommappedtype&quot; id=&quot;id194&quot; name=&quot;id194&quot;&gt;9.21&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnamedenum&quot; id=&quot;id195&quot; name=&quot;id195&quot;&gt;9.22&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNamedEnum()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnewinstance&quot; id=&quot;id196&quot; name=&quot;id196&quot;&gt;9.23&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnewtype&quot; id=&quot;id197&quot; name=&quot;id197&quot;&gt;9.24&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromsequenceindex&quot; id=&quot;id198&quot; name=&quot;id198&quot;&gt;9.25&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSequenceIndex()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromsliceobject&quot; id=&quot;id199&quot; name=&quot;id199&quot;&gt;9.26&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSliceObject()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromtype&quot; id=&quot;id200&quot; name=&quot;id200&quot;&gt;9.27&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromvoidptr&quot; id=&quot;id201&quot; name=&quot;id201&quot;&gt;9.28&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtr()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromvoidptrandsize&quot; id=&quot;id202&quot; name=&quot;id202&quot;&gt;9.29&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtrAndSize()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttoinstance&quot; id=&quot;id203&quot; name=&quot;id203&quot;&gt;9.30&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttomappedtype&quot; id=&quot;id204&quot; name=&quot;id204&quot;&gt;9.31&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttotype&quot; id=&quot;id205&quot; name=&quot;id205&quot;&gt;9.32&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttovoidptr&quot; id=&quot;id206&quot; name=&quot;id206&quot;&gt;9.33&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToVoidPtr()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipexportsymbol&quot; id=&quot;id207&quot; name=&quot;id207&quot;&gt;9.34&amp;nbsp;&amp;nbsp;&amp;nbsp;sipExportSymbol()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindclass&quot; id=&quot;id208&quot; name=&quot;id208&quot;&gt;9.35&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindClass()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindmappedtype&quot; id=&quot;id209&quot; name=&quot;id209&quot;&gt;9.36&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindnamedenum&quot; id=&quot;id210&quot; name=&quot;id210&quot;&gt;9.37&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindNamedEnum()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindtype&quot; id=&quot;id211&quot; name=&quot;id211&quot;&gt;9.38&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttoinstance&quot; id=&quot;id212&quot; name=&quot;id212&quot;&gt;9.39&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttomappedtype&quot; id=&quot;id213&quot; name=&quot;id213&quot;&gt;9.40&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttotype&quot; id=&quot;id214&quot; name=&quot;id214&quot;&gt;9.41&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfree&quot; id=&quot;id215&quot; name=&quot;id215&quot;&gt;9.42&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFree()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipgetpyobject&quot; id=&quot;id216&quot; name=&quot;id216&quot;&gt;9.43&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetPyObject()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipgetwrapper&quot; id=&quot;id217&quot; name=&quot;id217&quot;&gt;9.44&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetWrapper()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipimportsymbol&quot; id=&quot;id218&quot; name=&quot;id218&quot;&gt;9.45&amp;nbsp;&amp;nbsp;&amp;nbsp;sipImportSymbol()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipinttypeclassmap&quot; id=&quot;id219&quot; name=&quot;id219&quot;&gt;9.46&amp;nbsp;&amp;nbsp;&amp;nbsp;sipIntTypeClassMap&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siplong-asunsignedlong&quot; id=&quot;id220&quot; name=&quot;id220&quot;&gt;9.47&amp;nbsp;&amp;nbsp;&amp;nbsp;sipLong_AsUnsignedLong()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmalloc&quot; id=&quot;id221&quot; name=&quot;id221&quot;&gt;9.48&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMalloc()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmapinttoclass&quot; id=&quot;id222&quot; name=&quot;id222&quot;&gt;9.49&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapIntToClass()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmapstringtoclass&quot; id=&quot;id223&quot; name=&quot;id223&quot;&gt;9.50&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapStringToClass()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipparseresult&quot; id=&quot;id224&quot; name=&quot;id224&quot;&gt;9.51&amp;nbsp;&amp;nbsp;&amp;nbsp;sipParseResult()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipregisterattributegetter&quot; id=&quot;id225&quot; name=&quot;id225&quot;&gt;9.52&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterAttributeGetter()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipregisterpytype&quot; id=&quot;id226&quot; name=&quot;id226&quot;&gt;9.53&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterPyType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleaseinstance&quot; id=&quot;id227&quot; name=&quot;id227&quot;&gt;9.54&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseInstance()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleasemappedtype&quot; id=&quot;id228&quot; name=&quot;id228&quot;&gt;9.55&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseMappedType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleasetype&quot; id=&quot;id229&quot; name=&quot;id229&quot;&gt;9.56&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseType()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipresolvetypedef&quot; id=&quot;id230&quot; name=&quot;id230&quot;&gt;9.57&amp;nbsp;&amp;nbsp;&amp;nbsp;sipResolveTypedef()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper&quot; id=&quot;id231&quot; name=&quot;id231&quot;&gt;9.58&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper-type&quot; id=&quot;id232&quot; name=&quot;id232&quot;&gt;9.59&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper_Type&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipstringtypeclassmap&quot; id=&quot;id233&quot; name=&quot;id233&quot;&gt;9.60&amp;nbsp;&amp;nbsp;&amp;nbsp;sipStringTypeClassMap&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferback&quot; id=&quot;id234&quot; name=&quot;id234&quot;&gt;9.61&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBack()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferbreak&quot; id=&quot;id235&quot; name=&quot;id235&quot;&gt;9.62&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBreak()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferto&quot; id=&quot;id236&quot; name=&quot;id236&quot;&gt;9.63&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferTo()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeaspytypeobject&quot; id=&quot;id237&quot; name=&quot;id237&quot;&gt;9.64&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeAsPyTypeObject()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypefrompytypeobject&quot; id=&quot;id238&quot; name=&quot;id238&quot;&gt;9.65&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeFromPyTypeObject()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisclass&quot; id=&quot;id239&quot; name=&quot;id239&quot;&gt;9.66&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsClass()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisenum&quot; id=&quot;id240&quot; name=&quot;id240&quot;&gt;9.67&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsEnum()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeismapped&quot; id=&quot;id241&quot; name=&quot;id241&quot;&gt;9.68&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsMapped()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisnamespace&quot; id=&quot;id242&quot; name=&quot;id242&quot;&gt;9.69&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsNamespace()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypename&quot; id=&quot;id243&quot; name=&quot;id243&quot;&gt;9.70&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeName()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypescope&quot; id=&quot;id244&quot; name=&quot;id244&quot;&gt;9.71&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeScope()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipvoidptr-type&quot; id=&quot;id245&quot; name=&quot;id245&quot;&gt;9.72&amp;nbsp;&amp;nbsp;&amp;nbsp;sipVoidPtr_Type&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper&quot; id=&quot;id246&quot; name=&quot;id246&quot;&gt;9.73&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper-check&quot; id=&quot;id247&quot; name=&quot;id247&quot;&gt;9.74&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Check()&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper-type&quot; id=&quot;id248&quot; name=&quot;id248&quot;&gt;9.75&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Type&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot; id=&quot;id249&quot; name=&quot;id249&quot;&gt;9.76&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype-type&quot; id=&quot;id250&quot; name=&quot;id250&quot;&gt;9.77&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType_Type&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-type-structures&quot; id=&quot;id251&quot; name=&quot;id251&quot;&gt;9.78&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Structures&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-type-objects&quot; id=&quot;id252&quot; name=&quot;id252&quot;&gt;9.79&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Objects&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-named-enum-type-objects&quot; id=&quot;id253&quot; name=&quot;id253&quot;&gt;9.80&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Named Enum Type Objects&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-derived-classes&quot; id=&quot;id254&quot; name=&quot;id254&quot;&gt;9.81&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Derived Classes&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-exception-objects&quot; id=&quot;id255&quot; name=&quot;id255&quot;&gt;9.82&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Exception Objects&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-for-handwritten-code&quot; id=&quot;id175&quot; name=&quot;id175&quot;&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP API for Handwritten Code&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-major-nr&quot; id=&quot;id176&quot; name=&quot;id176&quot;&gt;9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MAJOR_NR&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-api-minor-nr&quot; id=&quot;id177&quot; name=&quot;id177&quot;&gt;9.2&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MINOR_NR&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-block-threads&quot; id=&quot;id178&quot; name=&quot;id178&quot;&gt;9.3&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_BLOCK_THREADS&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-ssize-t&quot; id=&quot;id179&quot; name=&quot;id179&quot;&gt;9.4&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_SSIZE_T&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-unblock-threads&quot; id=&quot;id180&quot; name=&quot;id180&quot;&gt;9.5&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_UNBLOCK_THREADS&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-version&quot; id=&quot;id181&quot; name=&quot;id181&quot;&gt;9.6&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sip-version-str&quot; id=&quot;id182&quot; name=&quot;id182&quot;&gt;9.7&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION_STR&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbadcatcherresult&quot; id=&quot;id183&quot; name=&quot;id183&quot;&gt;9.8&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadCatcherResult()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbadlengthforslice&quot; id=&quot;id184&quot; name=&quot;id184&quot;&gt;9.9&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadLengthForSlice()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipbuildresult&quot; id=&quot;id185&quot; name=&quot;id185&quot;&gt;9.10&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBuildResult()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcallmethod&quot; id=&quot;id186&quot; name=&quot;id186&quot;&gt;9.11&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCallMethod()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttoenum&quot; id=&quot;id187&quot; name=&quot;id187&quot;&gt;9.12&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToEnum()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttoinstance&quot; id=&quot;id188&quot; name=&quot;id188&quot;&gt;9.13&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttomappedtype&quot; id=&quot;id189&quot; name=&quot;id189&quot;&gt;9.14&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipcanconverttotype&quot; id=&quot;id190&quot; name=&quot;id190&quot;&gt;9.15&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipclassname&quot; id=&quot;id191&quot; name=&quot;id191&quot;&gt;9.16&amp;nbsp;&amp;nbsp;&amp;nbsp;sipClassName()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromconstvoidptr&quot; id=&quot;id192&quot; name=&quot;id192&quot;&gt;9.17&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtr()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromconstvoidptrandsize&quot; id=&quot;id193&quot; name=&quot;id193&quot;&gt;9.18&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtrAndSize()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromenum&quot; id=&quot;id194&quot; name=&quot;id194&quot;&gt;9.19&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromEnum()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfrominstance&quot; id=&quot;id195&quot; name=&quot;id195&quot;&gt;9.20&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfrommappedtype&quot; id=&quot;id196&quot; name=&quot;id196&quot;&gt;9.21&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnamedenum&quot; id=&quot;id197&quot; name=&quot;id197&quot;&gt;9.22&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNamedEnum()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnewinstance&quot; id=&quot;id198&quot; name=&quot;id198&quot;&gt;9.23&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromnewtype&quot; id=&quot;id199&quot; name=&quot;id199&quot;&gt;9.24&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromsequenceindex&quot; id=&quot;id200&quot; name=&quot;id200&quot;&gt;9.25&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSequenceIndex()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromsliceobject&quot; id=&quot;id201&quot; name=&quot;id201&quot;&gt;9.26&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSliceObject()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromtype&quot; id=&quot;id202&quot; name=&quot;id202&quot;&gt;9.27&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromvoidptr&quot; id=&quot;id203&quot; name=&quot;id203&quot;&gt;9.28&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtr()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconvertfromvoidptrandsize&quot; id=&quot;id204&quot; name=&quot;id204&quot;&gt;9.29&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtrAndSize()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttoinstance&quot; id=&quot;id205&quot; name=&quot;id205&quot;&gt;9.30&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttomappedtype&quot; id=&quot;id206&quot; name=&quot;id206&quot;&gt;9.31&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttotype&quot; id=&quot;id207&quot; name=&quot;id207&quot;&gt;9.32&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconverttovoidptr&quot; id=&quot;id208&quot; name=&quot;id208&quot;&gt;9.33&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToVoidPtr()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipexportsymbol&quot; id=&quot;id209&quot; name=&quot;id209&quot;&gt;9.34&amp;nbsp;&amp;nbsp;&amp;nbsp;sipExportSymbol()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindclass&quot; id=&quot;id210&quot; name=&quot;id210&quot;&gt;9.35&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindClass()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindmappedtype&quot; id=&quot;id211&quot; name=&quot;id211&quot;&gt;9.36&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindnamedenum&quot; id=&quot;id212&quot; name=&quot;id212&quot;&gt;9.37&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindNamedEnum()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfindtype&quot; id=&quot;id213&quot; name=&quot;id213&quot;&gt;9.38&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttoinstance&quot; id=&quot;id214&quot; name=&quot;id214&quot;&gt;9.39&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttomappedtype&quot; id=&quot;id215&quot; name=&quot;id215&quot;&gt;9.40&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipforceconverttotype&quot; id=&quot;id216&quot; name=&quot;id216&quot;&gt;9.41&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipfree&quot; id=&quot;id217&quot; name=&quot;id217&quot;&gt;9.42&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFree()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipgetpyobject&quot; id=&quot;id218&quot; name=&quot;id218&quot;&gt;9.43&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetPyObject()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipgetwrapper&quot; id=&quot;id219&quot; name=&quot;id219&quot;&gt;9.44&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetWrapper()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipimportsymbol&quot; id=&quot;id220&quot; name=&quot;id220&quot;&gt;9.45&amp;nbsp;&amp;nbsp;&amp;nbsp;sipImportSymbol()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipinttypeclassmap&quot; id=&quot;id221&quot; name=&quot;id221&quot;&gt;9.46&amp;nbsp;&amp;nbsp;&amp;nbsp;sipIntTypeClassMap&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siplong-asunsignedlong&quot; id=&quot;id222&quot; name=&quot;id222&quot;&gt;9.47&amp;nbsp;&amp;nbsp;&amp;nbsp;sipLong_AsUnsignedLong()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmalloc&quot; id=&quot;id223&quot; name=&quot;id223&quot;&gt;9.48&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMalloc()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmapinttoclass&quot; id=&quot;id224&quot; name=&quot;id224&quot;&gt;9.49&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapIntToClass()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipmapstringtoclass&quot; id=&quot;id225&quot; name=&quot;id225&quot;&gt;9.50&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapStringToClass()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipparseresult&quot; id=&quot;id226&quot; name=&quot;id226&quot;&gt;9.51&amp;nbsp;&amp;nbsp;&amp;nbsp;sipParseResult()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipregisterattributegetter&quot; id=&quot;id227&quot; name=&quot;id227&quot;&gt;9.52&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterAttributeGetter()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipregisterpytype&quot; id=&quot;id228&quot; name=&quot;id228&quot;&gt;9.53&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterPyType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleaseinstance&quot; id=&quot;id229&quot; name=&quot;id229&quot;&gt;9.54&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseInstance()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleasemappedtype&quot; id=&quot;id230&quot; name=&quot;id230&quot;&gt;9.55&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseMappedType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipreleasetype&quot; id=&quot;id231&quot; name=&quot;id231&quot;&gt;9.56&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseType()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipresolvetypedef&quot; id=&quot;id232&quot; name=&quot;id232&quot;&gt;9.57&amp;nbsp;&amp;nbsp;&amp;nbsp;sipResolveTypedef()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper&quot; id=&quot;id233&quot; name=&quot;id233&quot;&gt;9.58&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper-type&quot; id=&quot;id234&quot; name=&quot;id234&quot;&gt;9.59&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper_Type&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipstringtypeclassmap&quot; id=&quot;id235&quot; name=&quot;id235&quot;&gt;9.60&amp;nbsp;&amp;nbsp;&amp;nbsp;sipStringTypeClassMap&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferback&quot; id=&quot;id236&quot; name=&quot;id236&quot;&gt;9.61&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBack()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferbreak&quot; id=&quot;id237&quot; name=&quot;id237&quot;&gt;9.62&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBreak()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptransferto&quot; id=&quot;id238&quot; name=&quot;id238&quot;&gt;9.63&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferTo()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeaspytypeobject&quot; id=&quot;id239&quot; name=&quot;id239&quot;&gt;9.64&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeAsPyTypeObject()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypefrompytypeobject&quot; id=&quot;id240&quot; name=&quot;id240&quot;&gt;9.65&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeFromPyTypeObject()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisclass&quot; id=&quot;id241&quot; name=&quot;id241&quot;&gt;9.66&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsClass()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisenum&quot; id=&quot;id242&quot; name=&quot;id242&quot;&gt;9.67&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsEnum()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeismapped&quot; id=&quot;id243&quot; name=&quot;id243&quot;&gt;9.68&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsMapped()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypeisnamespace&quot; id=&quot;id244&quot; name=&quot;id244&quot;&gt;9.69&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsNamespace()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypename&quot; id=&quot;id245&quot; name=&quot;id245&quot;&gt;9.70&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeName()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#siptypescope&quot; id=&quot;id246&quot; name=&quot;id246&quot;&gt;9.71&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeScope()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipvoidptr-type&quot; id=&quot;id247&quot; name=&quot;id247&quot;&gt;9.72&amp;nbsp;&amp;nbsp;&amp;nbsp;sipVoidPtr_Type&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper&quot; id=&quot;id248&quot; name=&quot;id248&quot;&gt;9.73&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper-check&quot; id=&quot;id249&quot; name=&quot;id249&quot;&gt;9.74&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Check()&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrapper-type&quot; id=&quot;id250&quot; name=&quot;id250&quot;&gt;9.75&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Type&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot; id=&quot;id251&quot; name=&quot;id251&quot;&gt;9.76&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype-type&quot; id=&quot;id252&quot; name=&quot;id252&quot;&gt;9.77&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType_Type&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-type-structures&quot; id=&quot;id253&quot; name=&quot;id253&quot;&gt;9.78&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Structures&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-type-objects&quot; id=&quot;id254&quot; name=&quot;id254&quot;&gt;9.79&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Objects&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-named-enum-type-objects&quot; id=&quot;id255&quot; name=&quot;id255&quot;&gt;9.80&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Named Enum Type Objects&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-derived-classes&quot; id=&quot;id256&quot; name=&quot;id256&quot;&gt;9.81&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Derived Classes&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#generated-exception-objects&quot; id=&quot;id257&quot; name=&quot;id257&quot;&gt;9.82&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Exception Objects&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#using-the-sip-api-when-embedding&quot; id=&quot;id256&quot; name=&quot;id256&quot;&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP API when Embedding&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#using-the-sip-module-in-applications&quot; id=&quot;id257&quot; name=&quot;id257&quot;&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP Module in Applications&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#the-sip-build-system&quot; id=&quot;id258&quot; name=&quot;id258&quot;&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;The SIP Build System&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconfig-functions&quot; id=&quot;id259&quot; name=&quot;id259&quot;&gt;12.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Functions&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconfig-classes&quot; id=&quot;id260&quot; name=&quot;id260&quot;&gt;12.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Classes&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#using-the-sip-api-when-embedding&quot; id=&quot;id258&quot; name=&quot;id258&quot;&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP API when Embedding&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#using-the-sip-module-in-applications&quot; id=&quot;id259&quot; name=&quot;id259&quot;&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP Module in Applications&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#the-sip-build-system&quot; id=&quot;id260&quot; name=&quot;id260&quot;&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;The SIP Build System&lt;/a&gt;&lt;ul class=&quot;auto-toc&quot;&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconfig-functions&quot; id=&quot;id261&quot; name=&quot;id261&quot;&gt;12.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Functions&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#sipconfig-classes&quot; id=&quot;id262&quot; name=&quot;id262&quot;&gt;12.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Classes&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#building-your-extension-with-distutils&quot; id=&quot;id261&quot; name=&quot;id261&quot;&gt;13&amp;nbsp;&amp;nbsp;&amp;nbsp;Building Your Extension with distutils&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#builtin-modules-and-custom-interpreters&quot; id=&quot;id262&quot; name=&quot;id262&quot;&gt;14&amp;nbsp;&amp;nbsp;&amp;nbsp;Builtin Modules and Custom Interpreters&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#building-your-extension-with-distutils&quot; id=&quot;id263&quot; name=&quot;id263&quot;&gt;13&amp;nbsp;&amp;nbsp;&amp;nbsp;Building Your Extension with distutils&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;#builtin-modules-and-custom-interpreters&quot; id=&quot;id264&quot; name=&quot;id264&quot;&gt;14&amp;nbsp;&amp;nbsp;&amp;nbsp;Builtin Modules and Custom Interpreters&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
 &lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id25&quot; id=&quot;introduction&quot; name=&quot;introduction&quot;&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;Introduction&lt;/a&gt;&lt;/h1&gt;
-&lt;p&gt;This is the reference guide for SIP 4.8-snapshot-20090311.  SIP is a tool for
+&lt;p&gt;This is the reference guide for SIP 4.8-snapshot-20090317.  SIP is a tool for
 automatically generating &lt;a class=&quot;reference&quot; href=&quot;http://www.python.org&quot;&gt;Python&lt;/a&gt; bindings for C and
 C++ libraries.  SIP was originally developed in 1998 for
 &lt;a class=&quot;reference&quot; href=&quot;http://www.riverbankcomputing.com/software/pyqt/&quot;&gt;PyQt&lt;/a&gt; - the Python
@@ -1687,9 +1689,10 @@ file.&lt;/p&gt;
 
 &lt;em&gt;super-classes&lt;/em&gt; ::= &lt;em&gt;name&lt;/em&gt; [&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;,&lt;/span&gt;&lt;/tt&gt; &lt;em&gt;super-classes&lt;/em&gt;]
 
-&lt;em&gt;class-line&lt;/em&gt; ::= [&lt;em&gt;class-statement&lt;/em&gt; | &lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot;&gt;%BIGetReadBufferCode&lt;/a&gt; |
-        &lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; |
-        &lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot;&gt;%BIGetCharBufferCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToSubClassCode&lt;/a&gt; |
+&lt;em&gt;class-line&lt;/em&gt; ::= [&lt;em&gt;class-statement&lt;/em&gt; | &lt;a class=&quot;reference&quot; href=&quot;#bigetbuffercode&quot;&gt;%BIGetBufferCode&lt;/a&gt; |
+        &lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot;&gt;%BIGetReadBufferCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt; |
+        &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot;&gt;%BIGetCharBufferCode&lt;/a&gt; |
+        &lt;cite&gt;%BIReleaseBufferCode&lt;/cite&gt; | &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToSubClassCode&lt;/a&gt; |
         &lt;a class=&quot;reference&quot; href=&quot;#converttotypecode&quot;&gt;%ConvertToTypeCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#gcclearcode&quot;&gt;%GCClearCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#gctraversecode&quot;&gt;%GCTraverseCode&lt;/a&gt; |
         &lt;a class=&quot;reference&quot; href=&quot;#picklecode&quot;&gt;%PickleCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#typecode&quot;&gt;%TypeCode&lt;/a&gt; | &lt;a class=&quot;reference&quot; href=&quot;#typeheadercode&quot;&gt;%TypeHeaderCode&lt;/a&gt; |
         &lt;em&gt;constructor&lt;/em&gt; | &lt;em&gt;destructor&lt;/em&gt; | &lt;em&gt;method&lt;/em&gt; | &lt;em&gt;static-method&lt;/em&gt; |
@@ -2038,16 +2041,44 @@ Klass *klassInstance;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id73&quot; id=&quot;bigetcharbuffercode&quot; name=&quot;bigetcharbuffercode&quot;&gt;7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetCharBufferCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id73&quot; id=&quot;bigetbuffercode&quot; name=&quot;bigetbuffercode&quot;&gt;7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetBufferCode&lt;/a&gt;&lt;/h2&gt;
+&lt;pre class=&quot;literal-block&quot;&gt;
+%BIGetBufferCode
+    &lt;em&gt;code&lt;/em&gt;
+%End
+&lt;/pre&gt;
+&lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bireleasebuffercode&quot;&gt;%BIReleaseBufferCode&lt;/a&gt;) is used to specify code
+that implements the buffer interface of Python v3.  If Python v2 is being used
+then this is ignored.&lt;/p&gt;
+&lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
+&lt;dl class=&quot;docutils&quot;&gt;
+&lt;dt&gt;Py_buffer *sipBuffer&lt;/dt&gt;
+&lt;dd&gt;This is a pointer to the Python buffer structure that the handwritten code
+must populate.&lt;/dd&gt;
+&lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
+&lt;dd&gt;This is a pointer to the structure or class instance.  Its &lt;em&gt;type&lt;/em&gt; is a
+pointer to the structure or class.&lt;/dd&gt;
+&lt;dt&gt;int sipFlags&lt;/dt&gt;
+&lt;dd&gt;These are the flags that specify what elements of the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipBuffer&lt;/span&gt;&lt;/tt&gt;
+structure must be populated.&lt;/dd&gt;
+&lt;dt&gt;int sipRes&lt;/dt&gt;
+&lt;dd&gt;The handwritten code should set this to 0 if there was no error or -1 if
+there was an error.&lt;/dd&gt;
+&lt;dt&gt;PyObject *sipSelf&lt;/dt&gt;
+&lt;dd&gt;This is the Python object that wraps the the structure or class instance,
+i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;/dl&gt;
+&lt;/div&gt;
+&lt;div class=&quot;section&quot;&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id74&quot; id=&quot;bigetcharbuffercode&quot; name=&quot;bigetcharbuffercode&quot;&gt;7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetCharBufferCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %BIGetCharBufferCode
     &lt;em&gt;code&lt;/em&gt;
 %End
 &lt;/pre&gt;
 &lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot;&gt;%BIGetReadBufferCode&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; and
-&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements Python's
-buffer interface.  See the section &lt;a class=&quot;reference&quot; href=&quot;http://www.python.org/dev/doc/devel/api/buffer-structs.html&quot;&gt;Buffer Object Structures&lt;/a&gt; for the
-details.&lt;/p&gt;
+&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.&lt;/p&gt;
 &lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
@@ -2066,15 +2097,15 @@ i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id74&quot; id=&quot;bigetreadbuffercode&quot; name=&quot;bigetreadbuffercode&quot;&gt;7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetReadBufferCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id75&quot; id=&quot;bigetreadbuffercode&quot; name=&quot;bigetreadbuffercode&quot;&gt;7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetReadBufferCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %BIGetReadBufferCode
     &lt;em&gt;code&lt;/em&gt;
 %End
 &lt;/pre&gt;
 &lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot;&gt;%BIGetCharBufferCode&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; and
-&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements Python's
-buffer interface.&lt;/p&gt;
+&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.&lt;/p&gt;
 &lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
@@ -2093,15 +2124,15 @@ i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id75&quot; id=&quot;bigetsegcountcode&quot; name=&quot;bigetsegcountcode&quot;&gt;7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetSegCountCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id76&quot; id=&quot;bigetsegcountcode&quot; name=&quot;bigetsegcountcode&quot;&gt;7.5&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetSegCountCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %BIGetSegCountCode
     &lt;em&gt;code&lt;/em&gt;
 %End
 &lt;/pre&gt;
 &lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot;&gt;%BIGetCharBufferCode&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot;&gt;%BIGetReadBufferCode&lt;/a&gt; and
-&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements Python's
-buffer interface.&lt;/p&gt;
+&lt;a class=&quot;reference&quot; href=&quot;#bigetwritebuffercode&quot;&gt;%BIGetWriteBufferCode&lt;/a&gt;) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.&lt;/p&gt;
 &lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
@@ -2119,15 +2150,15 @@ i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id76&quot; id=&quot;bigetwritebuffercode&quot; name=&quot;bigetwritebuffercode&quot;&gt;7.5&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetWriteBufferCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id77&quot; id=&quot;bigetwritebuffercode&quot; name=&quot;bigetwritebuffercode&quot;&gt;7.6&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIGetWriteBufferCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %BIGetWriteBufferCode
     &lt;em&gt;code&lt;/em&gt;
 %End
 &lt;/pre&gt;
 &lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bigetcharbuffercode&quot;&gt;%BIGetCharBufferCode&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#bigetreadbuffercode&quot;&gt;%BIGetReadBufferCode&lt;/a&gt;
-and &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; is used to specify code that implements Python's
-buffer interface.&lt;/p&gt;
+and &lt;a class=&quot;reference&quot; href=&quot;#bigetsegcountcode&quot;&gt;%BIGetSegCountCode&lt;/a&gt; is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.&lt;/p&gt;
 &lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
@@ -2146,7 +2177,29 @@ i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id77&quot; id=&quot;cmodule&quot; name=&quot;cmodule&quot;&gt;7.6&amp;nbsp;&amp;nbsp;&amp;nbsp;%CModule&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id78&quot; id=&quot;bireleasebuffercode&quot; name=&quot;bireleasebuffercode&quot;&gt;7.7&amp;nbsp;&amp;nbsp;&amp;nbsp;%BIReleaseBufferCode&lt;/a&gt;&lt;/h2&gt;
+&lt;pre class=&quot;literal-block&quot;&gt;
+%BIReleaseBufferCode
+    &lt;em&gt;code&lt;/em&gt;
+%End
+&lt;/pre&gt;
+&lt;p&gt;This directive (along with &lt;a class=&quot;reference&quot; href=&quot;#bigetbuffercode&quot;&gt;%BIGetBufferCode&lt;/a&gt;) is used to specify code that
+implements the buffer interface of Python v3.  If Python v2 is being used then
+this is ignored.&lt;/p&gt;
+&lt;p&gt;The following variables are made available to the handwritten code:&lt;/p&gt;
+&lt;dl class=&quot;docutils&quot;&gt;
+&lt;dt&gt;Py_buffer *sipBuffer&lt;/dt&gt;
+&lt;dd&gt;This is a pointer to the Python buffer structure.&lt;/dd&gt;
+&lt;dt&gt;&lt;em&gt;type&lt;/em&gt; *sipCpp&lt;/dt&gt;
+&lt;dd&gt;This is a pointer to the structure or class instance.  Its &lt;em&gt;type&lt;/em&gt; is a
+pointer to the structure or class.&lt;/dd&gt;
+&lt;dt&gt;PyObject *sipSelf&lt;/dt&gt;
+&lt;dd&gt;This is the Python object that wraps the the structure or class instance,
+i.e. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;self&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;/dl&gt;
+&lt;/div&gt;
+&lt;div class=&quot;section&quot;&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id79&quot; id=&quot;cmodule&quot; name=&quot;cmodule&quot;&gt;7.8&amp;nbsp;&amp;nbsp;&amp;nbsp;%CModule&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %CModule &lt;em&gt;name&lt;/em&gt; [&lt;em&gt;version&lt;/em&gt;]
 &lt;/pre&gt;
@@ -2159,7 +2212,7 @@ library and to define the name of the module and it's optional version number.&lt;/
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id78&quot; id=&quot;compositemodule&quot; name=&quot;compositemodule&quot;&gt;7.7&amp;nbsp;&amp;nbsp;&amp;nbsp;%CompositeModule&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id80&quot; id=&quot;compositemodule&quot; name=&quot;compositemodule&quot;&gt;7.9&amp;nbsp;&amp;nbsp;&amp;nbsp;%CompositeModule&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %CompositeModule &lt;em&gt;name&lt;/em&gt;
 &lt;/pre&gt;
@@ -2186,7 +2239,7 @@ component module.&lt;/p&gt;
 don't have to remember which which individual module an object is defined in.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id79&quot; id=&quot;consolidatedmodule&quot; name=&quot;consolidatedmodule&quot;&gt;7.8&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConsolidatedModule&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id81&quot; id=&quot;consolidatedmodule&quot; name=&quot;consolidatedmodule&quot;&gt;7.10&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConsolidatedModule&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ConsolidatedModule &lt;em&gt;name&lt;/em&gt;
 &lt;/pre&gt;
@@ -2215,7 +2268,7 @@ building as a component the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;-p&lt;/s
 specify the name of the consolidated module.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id80&quot; id=&quot;convertfromtypecode&quot; name=&quot;convertfromtypecode&quot;&gt;7.9&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertFromTypeCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id82&quot; id=&quot;convertfromtypecode&quot; name=&quot;convertfromtypecode&quot;&gt;7.11&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertFromTypeCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ConvertFromTypeCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2278,7 +2331,7 @@ list of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;QWidget&lt;/span&gt;&lt;/tt&gt; insta
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id81&quot; id=&quot;converttosubclasscode&quot; name=&quot;converttosubclasscode&quot;&gt;7.10&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToSubClassCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id83&quot; id=&quot;converttosubclasscode&quot; name=&quot;converttosubclasscode&quot;&gt;7.12&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToSubClassCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ConvertToSubClassCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2362,7 +2415,7 @@ class QEvent
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id82&quot; id=&quot;converttotypecode&quot; name=&quot;converttotypecode&quot;&gt;7.11&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToTypeCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id84&quot; id=&quot;converttotypecode&quot; name=&quot;converttotypecode&quot;&gt;7.13&amp;nbsp;&amp;nbsp;&amp;nbsp;%ConvertToTypeCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ConvertToTypeCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2496,7 +2549,7 @@ convert the object.  The &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;SIP_NO_C
 these functions to prevent recursive calls to the handwritten code.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id83&quot; id=&quot;copying&quot; name=&quot;copying&quot;&gt;7.12&amp;nbsp;&amp;nbsp;&amp;nbsp;%Copying&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id85&quot; id=&quot;copying&quot; name=&quot;copying&quot;&gt;7.14&amp;nbsp;&amp;nbsp;&amp;nbsp;%Copying&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Copying
     &lt;em&gt;text&lt;/em&gt;
@@ -2513,7 +2566,7 @@ Copyright (c) 2008 Riverbank Computing Limited
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id84&quot; id=&quot;defaultmetatype&quot; name=&quot;defaultmetatype&quot;&gt;7.13&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultMetatype&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id86&quot; id=&quot;defaultmetatype&quot; name=&quot;defaultmetatype&quot;&gt;7.15&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultMetatype&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %DefaultMetatype &lt;em&gt;dotted-name&lt;/em&gt;
 &lt;/pre&gt;
@@ -2529,7 +2582,7 @@ used by a particular C/C++ type.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id85&quot; id=&quot;defaultsupertype&quot; name=&quot;defaultsupertype&quot;&gt;7.14&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultSupertype&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id87&quot; id=&quot;defaultsupertype&quot; name=&quot;defaultsupertype&quot;&gt;7.16&amp;nbsp;&amp;nbsp;&amp;nbsp;%DefaultSupertype&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %DefaultSupertype &lt;em&gt;dotted-name&lt;/em&gt;
 &lt;/pre&gt;
@@ -2545,7 +2598,7 @@ used by a particular C/C++ type.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id86&quot; id=&quot;doc&quot; name=&quot;doc&quot;&gt;7.15&amp;nbsp;&amp;nbsp;&amp;nbsp;%Doc&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id88&quot; id=&quot;doc&quot; name=&quot;doc&quot;&gt;7.17&amp;nbsp;&amp;nbsp;&amp;nbsp;%Doc&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Doc
     &lt;em&gt;text&lt;/em&gt;
@@ -2571,12 +2624,12 @@ which it is defined.
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id87&quot; id=&quot;end&quot; name=&quot;end&quot;&gt;7.16&amp;nbsp;&amp;nbsp;&amp;nbsp;%End&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id89&quot; id=&quot;end&quot; name=&quot;end&quot;&gt;7.18&amp;nbsp;&amp;nbsp;&amp;nbsp;%End&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This isn't a directive in itself, but is used to terminate a number of
 directives that allow a block of handwritten code or text to be specified.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id88&quot; id=&quot;exception&quot; name=&quot;exception&quot;&gt;7.17&amp;nbsp;&amp;nbsp;&amp;nbsp;%Exception&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id90&quot; id=&quot;exception&quot; name=&quot;exception&quot;&gt;7.19&amp;nbsp;&amp;nbsp;&amp;nbsp;%Exception&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Exception &lt;em&gt;name&lt;/em&gt; [(&lt;em&gt;base-exception)]
 {
@@ -2618,7 +2671,7 @@ The new exception is called &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;StdEx
 Python exception &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Exception&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id89&quot; id=&quot;exporteddoc&quot; name=&quot;exporteddoc&quot;&gt;7.18&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedDoc&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id91&quot; id=&quot;exporteddoc&quot; name=&quot;exporteddoc&quot;&gt;7.20&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedDoc&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ExportedDoc
     &lt;em&gt;text&lt;/em&gt;
@@ -2643,7 +2696,7 @@ module in which it is defined and all modules that %Import it.
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id90&quot; id=&quot;exportedheadercode&quot; name=&quot;exportedheadercode&quot;&gt;7.19&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedHeaderCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id92&quot; id=&quot;exportedheadercode&quot; name=&quot;exportedheadercode&quot;&gt;7.21&amp;nbsp;&amp;nbsp;&amp;nbsp;%ExportedHeaderCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ExportedHeaderCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2656,7 +2709,7 @@ Python modules should not explicitly call functions in another Python module.&lt;/p
 &lt;p&gt;See also &lt;a class=&quot;reference&quot; href=&quot;#modulecode&quot;&gt;%ModuleCode&lt;/a&gt; and &lt;a class=&quot;reference&quot; href=&quot;#moduleheadercode&quot;&gt;%ModuleHeaderCode&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id91&quot; id=&quot;feature&quot; name=&quot;feature&quot;&gt;7.20&amp;nbsp;&amp;nbsp;&amp;nbsp;%Feature&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id93&quot; id=&quot;feature&quot; name=&quot;feature&quot;&gt;7.22&amp;nbsp;&amp;nbsp;&amp;nbsp;%Feature&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Feature &lt;em&gt;name&lt;/em&gt;
 &lt;/pre&gt;
@@ -2679,7 +2732,7 @@ void foo();
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id92&quot; id=&quot;gcclearcode&quot; name=&quot;gcclearcode&quot;&gt;7.21&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCClearCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id94&quot; id=&quot;gcclearcode&quot; name=&quot;gcclearcode&quot;&gt;7.23&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCClearCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %GCClearCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2726,7 +2779,7 @@ always a Python object and so should be handled by the garbage collector:&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id93&quot; id=&quot;gctraversecode&quot; name=&quot;gctraversecode&quot;&gt;7.22&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCTraverseCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id95&quot; id=&quot;gctraversecode&quot; name=&quot;gctraversecode&quot;&gt;7.24&amp;nbsp;&amp;nbsp;&amp;nbsp;%GCTraverseCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %GCTraverseCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2765,7 +2818,7 @@ collector.&lt;/dd&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id94&quot; id=&quot;getcode&quot; name=&quot;getcode&quot;&gt;7.23&amp;nbsp;&amp;nbsp;&amp;nbsp;%GetCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id96&quot; id=&quot;getcode&quot; name=&quot;getcode&quot;&gt;7.25&amp;nbsp;&amp;nbsp;&amp;nbsp;%GetCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %GetCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2825,7 +2878,7 @@ struct Entity
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id95&quot; id=&quot;if&quot; name=&quot;if&quot;&gt;7.24&amp;nbsp;&amp;nbsp;&amp;nbsp;%If&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id97&quot; id=&quot;if&quot; name=&quot;if&quot;&gt;7.26&amp;nbsp;&amp;nbsp;&amp;nbsp;%If&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %If (&lt;em&gt;expression&lt;/em&gt;)
     &lt;em&gt;specification&lt;/em&gt;
@@ -2910,7 +2963,7 @@ following parts of a specification are affected by it:&lt;/p&gt;
 nested &lt;a class=&quot;reference&quot; href=&quot;#if&quot;&gt;%If&lt;/a&gt; directives.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id96&quot; id=&quot;import&quot; name=&quot;import&quot;&gt;7.25&amp;nbsp;&amp;nbsp;&amp;nbsp;%Import&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id98&quot; id=&quot;import&quot; name=&quot;import&quot;&gt;7.27&amp;nbsp;&amp;nbsp;&amp;nbsp;%Import&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Import &lt;em&gt;filename&lt;/em&gt;
 &lt;/pre&gt;
@@ -2928,7 +2981,7 @@ the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;-I&lt;/span&gt;&lt;/tt&gt; command line o
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id97&quot; id=&quot;include&quot; name=&quot;include&quot;&gt;7.26&amp;nbsp;&amp;nbsp;&amp;nbsp;%Include&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id99&quot; id=&quot;include&quot; name=&quot;include&quot;&gt;7.28&amp;nbsp;&amp;nbsp;&amp;nbsp;%Include&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Include &lt;em&gt;filename&lt;/em&gt;
 &lt;/pre&gt;
@@ -2944,7 +2997,7 @@ specification into manageable pieces.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id98&quot; id=&quot;initialisationcode&quot; name=&quot;initialisationcode&quot;&gt;7.27&amp;nbsp;&amp;nbsp;&amp;nbsp;%InitialisationCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id100&quot; id=&quot;initialisationcode&quot; name=&quot;initialisationcode&quot;&gt;7.29&amp;nbsp;&amp;nbsp;&amp;nbsp;%InitialisationCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %InitialisationCode
     &lt;em&gt;code&lt;/em&gt;
@@ -2952,7 +3005,7 @@ specification into manageable pieces.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;p&gt;This directive is used to specify handwritten code that is embedded in-line
 in the generated module initialisation code after the SIP module has been
-imported but before the module itself has been intialised.&lt;/p&gt;
+imported but before the module itself has been initialised.&lt;/p&gt;
 &lt;p&gt;It is typically used to call &lt;a class=&quot;reference&quot; href=&quot;#sipregisterpytype&quot;&gt;sipRegisterPyType()&lt;/a&gt;.&lt;/p&gt;
 &lt;p&gt;For example:&lt;/p&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
@@ -2964,7 +3017,7 @@ imported but before the module itself has been intialised.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id99&quot; id=&quot;id14&quot; name=&quot;id14&quot;&gt;7.28&amp;nbsp;&amp;nbsp;&amp;nbsp;%License&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id101&quot; id=&quot;id14&quot; name=&quot;id14&quot;&gt;7.30&amp;nbsp;&amp;nbsp;&amp;nbsp;%License&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %License /&lt;em&gt;license-annotations&lt;/em&gt;/
 &lt;/pre&gt;
@@ -2982,7 +3035,7 @@ in a module so that it is accessible to Python scripts.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id100&quot; id=&quot;mappedtype&quot; name=&quot;mappedtype&quot;&gt;7.29&amp;nbsp;&amp;nbsp;&amp;nbsp;%MappedType&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id102&quot; id=&quot;mappedtype&quot; name=&quot;mappedtype&quot;&gt;7.31&amp;nbsp;&amp;nbsp;&amp;nbsp;%MappedType&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 template&amp;lt;&lt;em&gt;type-list&lt;/em&gt;&amp;gt;
 %MappedType &lt;em&gt;type&lt;/em&gt;
@@ -3114,7 +3167,7 @@ generated code will automatically map this to and from a Python list of QObject
 instances when appropriate.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id101&quot; id=&quot;methodcode&quot; name=&quot;methodcode&quot;&gt;7.30&amp;nbsp;&amp;nbsp;&amp;nbsp;%MethodCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id103&quot; id=&quot;methodcode&quot; name=&quot;methodcode&quot;&gt;7.32&amp;nbsp;&amp;nbsp;&amp;nbsp;%MethodCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %MethodCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3257,7 +3310,7 @@ handles the reimplementation of C++ virtual methods in Python.&lt;/td&gt;&lt;/tr&gt;
 &lt;/table&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id102&quot; id=&quot;module&quot; name=&quot;module&quot;&gt;7.31&amp;nbsp;&amp;nbsp;&amp;nbsp;%Module&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id104&quot; id=&quot;module&quot; name=&quot;module&quot;&gt;7.33&amp;nbsp;&amp;nbsp;&amp;nbsp;%Module&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Module &lt;em&gt;name&lt;/em&gt; [&lt;em&gt;version&lt;/em&gt;]
 &lt;/pre&gt;
@@ -3282,7 +3335,7 @@ version number anyway.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id103&quot; id=&quot;modulecode&quot; name=&quot;modulecode&quot;&gt;7.32&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id105&quot; id=&quot;modulecode&quot; name=&quot;modulecode&quot;&gt;7.34&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ModuleCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3305,7 +3358,7 @@ void dump_object(PyObject *o)
 &lt;p&gt;See also &lt;a class=&quot;reference&quot; href=&quot;#exportedheadercode&quot;&gt;%ExportedHeaderCode&lt;/a&gt; and &lt;a class=&quot;reference&quot; href=&quot;#moduleheadercode&quot;&gt;%ModuleHeaderCode&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id104&quot; id=&quot;moduleheadercode&quot; name=&quot;moduleheadercode&quot;&gt;7.33&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleHeaderCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id106&quot; id=&quot;moduleheadercode&quot; name=&quot;moduleheadercode&quot;&gt;7.35&amp;nbsp;&amp;nbsp;&amp;nbsp;%ModuleHeaderCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %ModuleHeaderCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3323,7 +3376,7 @@ void dump_object(PyObject *o);
 &lt;p&gt;See also &lt;a class=&quot;reference&quot; href=&quot;#exportedheadercode&quot;&gt;%ExportedHeaderCode&lt;/a&gt; and &lt;a class=&quot;reference&quot; href=&quot;#modulecode&quot;&gt;%ModuleCode&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id105&quot; id=&quot;optionalinclude&quot; name=&quot;optionalinclude&quot;&gt;7.34&amp;nbsp;&amp;nbsp;&amp;nbsp;%OptionalInclude&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id107&quot; id=&quot;optionalinclude&quot; name=&quot;optionalinclude&quot;&gt;7.36&amp;nbsp;&amp;nbsp;&amp;nbsp;%OptionalInclude&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %OptionalInclude &lt;em&gt;filename&lt;/em&gt;
 &lt;/pre&gt;
@@ -3335,7 +3388,7 @@ silently continues processing if &lt;em&gt;filename&lt;/em&gt; could not be opened.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id106&quot; id=&quot;picklecode&quot; name=&quot;picklecode&quot;&gt;7.35&amp;nbsp;&amp;nbsp;&amp;nbsp;%PickleCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id108&quot; id=&quot;picklecode&quot; name=&quot;picklecode&quot;&gt;7.37&amp;nbsp;&amp;nbsp;&amp;nbsp;%PickleCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %PickleCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3374,7 +3427,7 @@ being pickled.&lt;/p&gt;
 handwritten code.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id107&quot; id=&quot;platforms&quot; name=&quot;platforms&quot;&gt;7.36&amp;nbsp;&amp;nbsp;&amp;nbsp;%Platforms&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id109&quot; id=&quot;platforms&quot; name=&quot;platforms&quot;&gt;7.38&amp;nbsp;&amp;nbsp;&amp;nbsp;%Platforms&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Platforms {&lt;em&gt;name&lt;/em&gt; &lt;em&gt;name&lt;/em&gt; ...}
 &lt;/pre&gt;
@@ -3398,7 +3451,7 @@ void documented();
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id108&quot; id=&quot;postinitialisationcode&quot; name=&quot;postinitialisationcode&quot;&gt;7.37&amp;nbsp;&amp;nbsp;&amp;nbsp;%PostInitialisationCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id110&quot; id=&quot;postinitialisationcode&quot; name=&quot;postinitialisationcode&quot;&gt;7.39&amp;nbsp;&amp;nbsp;&amp;nbsp;%PostInitialisationCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %PostInitialisationCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3422,7 +3475,7 @@ at the very end of the generated module initialisation code.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id109&quot; id=&quot;preinitialisationcode&quot; name=&quot;preinitialisationcode&quot;&gt;7.38&amp;nbsp;&amp;nbsp;&amp;nbsp;%PreInitialisationCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id111&quot; id=&quot;preinitialisationcode&quot; name=&quot;preinitialisationcode&quot;&gt;7.40&amp;nbsp;&amp;nbsp;&amp;nbsp;%PreInitialisationCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %PreInitialisationCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3439,7 +3492,7 @@ at the very start of the generated module initialisation code.&lt;/p&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id110&quot; id=&quot;raisecode&quot; name=&quot;raisecode&quot;&gt;7.39&amp;nbsp;&amp;nbsp;&amp;nbsp;%RaiseCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id112&quot; id=&quot;raisecode&quot; name=&quot;raisecode&quot;&gt;7.41&amp;nbsp;&amp;nbsp;&amp;nbsp;%RaiseCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %RaiseCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3467,7 +3520,7 @@ reference is the same as the type defined in the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;s
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#exception&quot;&gt;%Exception&lt;/a&gt; directive for an example.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id111&quot; id=&quot;setcode&quot; name=&quot;setcode&quot;&gt;7.40&amp;nbsp;&amp;nbsp;&amp;nbsp;%SetCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id113&quot; id=&quot;setcode&quot; name=&quot;setcode&quot;&gt;7.42&amp;nbsp;&amp;nbsp;&amp;nbsp;%SetCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %SetCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3498,7 +3551,7 @@ PyTypeObject * or a sipWrapperType *.&lt;/dd&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#getcode&quot;&gt;%GetCode&lt;/a&gt; directive for an example.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id112&quot; id=&quot;timeline&quot; name=&quot;timeline&quot;&gt;7.41&amp;nbsp;&amp;nbsp;&amp;nbsp;%Timeline&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id114&quot; id=&quot;timeline&quot; name=&quot;timeline&quot;&gt;7.43&amp;nbsp;&amp;nbsp;&amp;nbsp;%Timeline&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %Timeline {&lt;em&gt;name&lt;/em&gt; &lt;em&gt;name&lt;/em&gt; ...}
 &lt;/pre&gt;
@@ -3525,7 +3578,7 @@ void foo(int = 0);
 libraries to be wrapped in the same module.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id113&quot; id=&quot;typecode&quot; name=&quot;typecode&quot;&gt;7.42&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id115&quot; id=&quot;typecode&quot; name=&quot;typecode&quot;&gt;7.44&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %TypeCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3558,7 +3611,7 @@ clashes of function names within a module in case the SIP &lt;tt class=&quot;docutils li
 option is used.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id114&quot; id=&quot;typeheadercode&quot; name=&quot;typeheadercode&quot;&gt;7.43&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeHeaderCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id116&quot; id=&quot;typeheadercode&quot; name=&quot;typeheadercode&quot;&gt;7.45&amp;nbsp;&amp;nbsp;&amp;nbsp;%TypeHeaderCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %TypeHeaderCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3582,7 +3635,7 @@ class Klass
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id115&quot; id=&quot;unitcode&quot; name=&quot;unitcode&quot;&gt;7.44&amp;nbsp;&amp;nbsp;&amp;nbsp;%UnitCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id117&quot; id=&quot;unitcode&quot; name=&quot;unitcode&quot;&gt;7.46&amp;nbsp;&amp;nbsp;&amp;nbsp;%UnitCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %UnitCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3593,7 +3646,7 @@ start of a generated compilation unit (ie. C or C++ source file).  It is
 typically used to &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;#include&lt;/span&gt;&lt;/tt&gt; a C++ precompiled header file.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id116&quot; id=&quot;virtualcatchercode&quot; name=&quot;virtualcatchercode&quot;&gt;7.45&amp;nbsp;&amp;nbsp;&amp;nbsp;%VirtualCatcherCode&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id118&quot; id=&quot;virtualcatchercode&quot; name=&quot;virtualcatchercode&quot;&gt;7.47&amp;nbsp;&amp;nbsp;&amp;nbsp;%VirtualCatcherCode&lt;/a&gt;&lt;/h2&gt;
 &lt;pre class=&quot;literal-block&quot;&gt;
 %VirtualCatcherCode
     &lt;em&gt;code&lt;/em&gt;
@@ -3686,7 +3739,7 @@ public:
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id117&quot; id=&quot;sip-annotations&quot; name=&quot;sip-annotations&quot;&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP Annotations&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id119&quot; id=&quot;sip-annotations&quot; name=&quot;sip-annotations&quot;&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP Annotations&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;In this section we describe each of the annotations that can be used in
 specification files.&lt;/p&gt;
 &lt;p&gt;Annotations can either be argument annotations, class annotations, mapped type
@@ -3718,15 +3771,15 @@ void exec(QWidget * /Transfer/) /ReleaseGIL, PyName=call_exec/;
 &lt;p&gt;Note that the current version of SIP does not complain about unknown
 annotations, or annotations used out of their correct context.&lt;/p&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id118&quot; id=&quot;argument-annotations&quot; name=&quot;argument-annotations&quot;&gt;8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Argument Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id120&quot; id=&quot;argument-annotations&quot; name=&quot;argument-annotations&quot;&gt;8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Argument Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id119&quot; id=&quot;allownone&quot; name=&quot;allownone&quot;&gt;8.1.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AllowNone&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id121&quot; id=&quot;allownone&quot; name=&quot;allownone&quot;&gt;8.1.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AllowNone&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the value of the corresponding argument
 (which should be either &lt;a class=&quot;reference&quot; href=&quot;#sip-pycallable&quot;&gt;SIP_PYCALLABLE&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#sip-pydict&quot;&gt;SIP_PYDICT&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#sip-pylist&quot;&gt;SIP_PYLIST&lt;/a&gt;,
 &lt;a class=&quot;reference&quot; href=&quot;#sip-pyslice&quot;&gt;SIP_PYSLICE&lt;/a&gt;, &lt;a class=&quot;reference&quot; href=&quot;#sip-pytuple&quot;&gt;SIP_PYTUPLE&lt;/a&gt; or &lt;a class=&quot;reference&quot; href=&quot;#sip-pytype&quot;&gt;SIP_PYTYPE&lt;/a&gt;) may be &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;None&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id120&quot; id=&quot;array&quot; name=&quot;array&quot;&gt;8.1.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Array&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id122&quot; id=&quot;array&quot; name=&quot;array&quot;&gt;8.1.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Array&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the corresponding argument (which
 should be either &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt; or &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt;) refers to an array
 rather than a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string.  There must be a corresponding
@@ -3734,7 +3787,7 @@ argument with the &lt;a class=&quot;reference&quot; href=&quot;#arraysize&quot;&gt;ArraySize&lt;/a&gt; annotatio
 specified once in a list of arguments.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id121&quot; id=&quot;arraysize&quot; name=&quot;arraysize&quot;&gt;8.1.3&amp;nbsp;&amp;nbsp;&amp;nbsp;ArraySize&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id123&quot; id=&quot;arraysize&quot; name=&quot;arraysize&quot;&gt;8.1.3&amp;nbsp;&amp;nbsp;&amp;nbsp;ArraySize&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the corresponding argument (which
 should be either &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt;, &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt;, &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;int&lt;/span&gt;&lt;/tt&gt;, &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt;&lt;/tt&gt;,
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt; or &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt;) refers to the size of an array.  There must be
@@ -3742,7 +3795,7 @@ a corresponding argument with the &lt;a class=&quot;reference&quot; href=&quot;#array&quot;&gt;Array&lt;/a&gt; a
 may only be specified once in a list of arguments.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id122&quot; id=&quot;constrained&quot; name=&quot;constrained&quot;&gt;8.1.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Constrained&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id124&quot; id=&quot;constrained&quot; name=&quot;constrained&quot;&gt;8.1.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Constrained&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;Python will automatically convert between certain compatible types.  For
 example, if a floating pointer number is expected and an integer supplied,
 then the integer will be converted appropriately.  This can cause problems
@@ -3771,7 +3824,7 @@ void foo(int);
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id123&quot; id=&quot;getwrapper&quot; name=&quot;getwrapper&quot;&gt;8.1.5&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWrapper&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id125&quot; id=&quot;getwrapper&quot; name=&quot;getwrapper&quot;&gt;8.1.5&amp;nbsp;&amp;nbsp;&amp;nbsp;GetWrapper&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is only ever used in conjunction with handwritten code
 specified with the &lt;a class=&quot;reference&quot; href=&quot;#methodcode&quot;&gt;%MethodCode&lt;/a&gt; directive.  It causes an extra variable to
 be generated for the corresponding argument which is a pointer to the Python
@@ -3779,7 +3832,7 @@ object that wraps the argument.&lt;/p&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#methodcode&quot;&gt;%MethodCode&lt;/a&gt; directive for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id124&quot; id=&quot;in&quot; name=&quot;in&quot;&gt;8.1.6&amp;nbsp;&amp;nbsp;&amp;nbsp;In&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id126&quot; id=&quot;in&quot; name=&quot;in&quot;&gt;8.1.6&amp;nbsp;&amp;nbsp;&amp;nbsp;In&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the corresponding argument
 (which should be a pointer type) is used to pass a value to the function.&lt;/p&gt;
 &lt;p&gt;For pointers to wrapped C structures or C++ class instances, &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt; and
@@ -3790,7 +3843,7 @@ if required.  The argument will be dereferenced to obtain the actual value.&lt;/p&gt;
 &lt;p&gt;Both &lt;a class=&quot;reference&quot; href=&quot;#in&quot;&gt;In&lt;/a&gt; and &lt;a class=&quot;reference&quot; href=&quot;#out&quot;&gt;Out&lt;/a&gt; may be specified for the same argument.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id125&quot; id=&quot;keepreference&quot; name=&quot;keepreference&quot;&gt;8.1.7&amp;nbsp;&amp;nbsp;&amp;nbsp;KeepReference&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id127&quot; id=&quot;keepreference&quot; name=&quot;keepreference&quot;&gt;8.1.7&amp;nbsp;&amp;nbsp;&amp;nbsp;KeepReference&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that a reference to the
 corresponding argument should be kept to ensure that the object is not garbage
 collected.  If the method is called again with a new argument then the
@@ -3798,7 +3851,7 @@ reference to the previous argument is discarded.  Note that ownership of the
 argument is not changed.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id126&quot; id=&quot;out&quot; name=&quot;out&quot;&gt;8.1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Out&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id128&quot; id=&quot;out&quot; name=&quot;out&quot;&gt;8.1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Out&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the corresponding argument
 (which should be a pointer type) is used by the function to return a value as
 an element of a tuple.&lt;/p&gt;
@@ -3810,7 +3863,7 @@ annotation is specified.&lt;/p&gt;
 &lt;p&gt;Both &lt;a class=&quot;reference&quot; href=&quot;#in&quot;&gt;In&lt;/a&gt; and &lt;a class=&quot;reference&quot; href=&quot;#out&quot;&gt;Out&lt;/a&gt; may be specified for the same argument.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id127&quot; id=&quot;resultsize&quot; name=&quot;resultsize&quot;&gt;8.1.9&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSize&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id129&quot; id=&quot;resultsize&quot; name=&quot;resultsize&quot;&gt;8.1.9&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSize&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used with functions or methods that return a
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt; or &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt;.  It identifies an argument that defines the
 size of the block of memory whose address is being returned.  This allows the
@@ -3819,13 +3872,13 @@ protocol and allows the memory to be read and updated when wrapped by the
 Python &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;buffer()&lt;/span&gt;&lt;/tt&gt; builtin.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id128&quot; id=&quot;singleshot&quot; name=&quot;singleshot&quot;&gt;8.1.10&amp;nbsp;&amp;nbsp;&amp;nbsp;SingleShot&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id130&quot; id=&quot;singleshot&quot; name=&quot;singleshot&quot;&gt;8.1.10&amp;nbsp;&amp;nbsp;&amp;nbsp;SingleShot&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used only with arguments of type &lt;a class=&quot;reference&quot; href=&quot;#sip-rxobj-con&quot;&gt;SIP_RXOBJ_CON&lt;/a&gt; to
 specify that the signal connected to the slot will only ever be emitted once.
 This prevents a certain class of memory leaks.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id129&quot; id=&quot;transfer&quot; name=&quot;transfer&quot;&gt;8.1.11&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id131&quot; id=&quot;transfer&quot; name=&quot;transfer&quot;&gt;8.1.11&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that ownership of the corresponding
 argument (which should be a wrapped C structure or C++ class instance) is
 transferred from Python to C++.  In addition, if the argument is of a class
@@ -3835,7 +3888,7 @@ cyclic garbage collector.&lt;/p&gt;
 &lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;#ownership-of-objects&quot;&gt;Ownership of Objects&lt;/a&gt; for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id130&quot; id=&quot;transferback&quot; name=&quot;transferback&quot;&gt;8.1.12&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id132&quot; id=&quot;transferback&quot; name=&quot;transferback&quot;&gt;8.1.12&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that ownership of the corresponding
 argument (which should be a wrapped C structure or C++ class instance) is
 transferred back to Python from C++.  In addition, any association of the
@@ -3845,7 +3898,7 @@ removed.&lt;/p&gt;
 &lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;#ownership-of-objects&quot;&gt;Ownership of Objects&lt;/a&gt; for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id131&quot; id=&quot;transferthis&quot; name=&quot;transferthis&quot;&gt;8.1.13&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id133&quot; id=&quot;transferthis&quot; name=&quot;transferthis&quot;&gt;8.1.13&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is only used in C++ constructors or methods.  In the
 context of a constructor or factory method it specifies that ownership of the
 instance being created is transferred from Python to C++ if the corresponding
@@ -3862,15 +3915,15 @@ transferred to last instance that is not &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span clas
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id132&quot; id=&quot;class-annotations&quot; name=&quot;class-annotations&quot;&gt;8.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Class Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id134&quot; id=&quot;class-annotations&quot; name=&quot;class-annotations&quot;&gt;8.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Class Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id133&quot; id=&quot;abstract&quot; name=&quot;abstract&quot;&gt;8.2.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Abstract&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id135&quot; id=&quot;abstract&quot; name=&quot;abstract&quot;&gt;8.2.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Abstract&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the class has additional pure
 virtual methods that have not been specified and so it cannot be instantiated
 or sub-classed from Python.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id134&quot; id=&quot;delaydtor&quot; name=&quot;delaydtor&quot;&gt;8.2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayDtor&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id136&quot; id=&quot;delaydtor&quot; name=&quot;delaydtor&quot;&gt;8.2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayDtor&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the class's destructor should
 not be called until the Python interpreter exits.  It would normally only be
 applied to singleton classes.&lt;/p&gt;
@@ -3907,32 +3960,32 @@ last one.&lt;/dd&gt;
 Python.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id135&quot; id=&quot;deprecated&quot; name=&quot;deprecated&quot;&gt;8.2.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id137&quot; id=&quot;deprecated&quot; name=&quot;deprecated&quot;&gt;8.2.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the class is deprecated.  It is
 the equivalent of annotating all the class's constructors, function and methods
 as being deprecated.&lt;/p&gt;
 &lt;p&gt;Note that this can also be used as a function annotation.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id136&quot; id=&quot;external&quot; name=&quot;external&quot;&gt;8.2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;External&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id138&quot; id=&quot;external&quot; name=&quot;external&quot;&gt;8.2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;External&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the class is defined in another
 module.  Declarations of external classes are private to the module in which
 they appear.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id137&quot; id=&quot;metatype&quot; name=&quot;metatype&quot;&gt;8.2.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Metatype&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id139&quot; id=&quot;metatype&quot; name=&quot;metatype&quot;&gt;8.2.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Metatype&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This dotted name annotation specifies the name of the Python type object (i.e.
 the value of the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;tp_name&lt;/span&gt;&lt;/tt&gt; field) used as the meta-type used when creating
 the type object for this C structure or C++ type.&lt;/p&gt;
 &lt;p&gt;See the section &lt;a class=&quot;reference&quot; href=&quot;#types-and-meta-types&quot;&gt;Types and Meta-types&lt;/a&gt; for more details.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id138&quot; id=&quot;nodefaultctors&quot; name=&quot;nodefaultctors&quot;&gt;8.2.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDefaultCtors&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id140&quot; id=&quot;nodefaultctors&quot; name=&quot;nodefaultctors&quot;&gt;8.2.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDefaultCtors&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to suppress the automatic generation of default
 constructors for the class.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id139&quot; id=&quot;pyname&quot; name=&quot;pyname&quot;&gt;8.2.7&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id141&quot; id=&quot;pyname&quot; name=&quot;pyname&quot;&gt;8.2.7&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation specifies an alternative name for the class being wrapped
 which is used when it is referred to from Python.  It is required when a class
 name is the same as a Python keyword.  It may also be used to avoid name
@@ -3940,7 +3993,7 @@ clashes with other objects (e.g. enums, exceptions, functions) that have the
 same name in the same C++ scope.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id140&quot; id=&quot;supertype&quot; name=&quot;supertype&quot;&gt;8.2.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Supertype&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id142&quot; id=&quot;supertype&quot; name=&quot;supertype&quot;&gt;8.2.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Supertype&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This dotted name annotation specifies the name of the Python type object (i.e.
 the value of the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;tp_name&lt;/span&gt;&lt;/tt&gt; field) used as the super-type used when creating
 the type object for this C structure or C++ type.&lt;/p&gt;
@@ -3948,9 +4001,9 @@ the type object for this C structure or C++ type.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id141&quot; id=&quot;mapped-type-annotations&quot; name=&quot;mapped-type-annotations&quot;&gt;8.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Mapped Type Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id143&quot; id=&quot;mapped-type-annotations&quot; name=&quot;mapped-type-annotations&quot;&gt;8.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Mapped Type Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id142&quot; id=&quot;norelease&quot; name=&quot;norelease&quot;&gt;8.3.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoRelease&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id144&quot; id=&quot;norelease&quot; name=&quot;norelease&quot;&gt;8.3.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoRelease&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the mapped type does not
 support the &lt;a class=&quot;reference&quot; href=&quot;#sipreleasetype&quot;&gt;sipReleaseType()&lt;/a&gt; function.  Any &lt;a class=&quot;reference&quot; href=&quot;#converttotypecode&quot;&gt;%ConvertToTypeCode&lt;/a&gt; should not
 create temporary instances of the mapped type, i.e. it should not return
@@ -3958,9 +4011,9 @@ create temporary instances of the mapped type, i.e. it should not return
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id143&quot; id=&quot;enum-annotations&quot; name=&quot;enum-annotations&quot;&gt;8.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Enum Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id145&quot; id=&quot;enum-annotations&quot; name=&quot;enum-annotations&quot;&gt;8.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Enum Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id144&quot; id=&quot;id17&quot; name=&quot;id17&quot;&gt;8.4.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id146&quot; id=&quot;id17&quot; name=&quot;id17&quot;&gt;8.4.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation specifies an alternative name for the enum or enum member
 being wrapped which is used when it is referred to from Python.  It is required
 when an enum or enum member name is the same as a Python keyword.  It may also
@@ -3969,9 +4022,9 @@ functions) that have the same name in the same C++ scope.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id145&quot; id=&quot;exception-annotations&quot; name=&quot;exception-annotations&quot;&gt;8.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id147&quot; id=&quot;exception-annotations&quot; name=&quot;exception-annotations&quot;&gt;8.5&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id146&quot; id=&quot;id18&quot; name=&quot;id18&quot;&gt;8.5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id148&quot; id=&quot;id18&quot; name=&quot;id18&quot;&gt;8.5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation specifies an alternative name for the exception being
 defined which is used when it is referred to from Python.  It is required when
 an exception name is the same as a Python keyword.  It may also be used to
@@ -3980,16 +4033,16 @@ have the same name.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id147&quot; id=&quot;function-annotations&quot; name=&quot;function-annotations&quot;&gt;8.6&amp;nbsp;&amp;nbsp;&amp;nbsp;Function Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id149&quot; id=&quot;function-annotations&quot; name=&quot;function-annotations&quot;&gt;8.6&amp;nbsp;&amp;nbsp;&amp;nbsp;Function Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id148&quot; id=&quot;autogen&quot; name=&quot;autogen&quot;&gt;8.6.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AutoGen&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id150&quot; id=&quot;autogen&quot; name=&quot;autogen&quot;&gt;8.6.1&amp;nbsp;&amp;nbsp;&amp;nbsp;AutoGen&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This optional name annotation is used with class methods to specify that the
 method be automatically included in all sub-classes.  The value is the name of
 a feature (specified using the &lt;a class=&quot;reference&quot; href=&quot;#feature&quot;&gt;%Feature&lt;/a&gt; directive) which must be enabled
 for the method to be generated.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id149&quot; id=&quot;default&quot; name=&quot;default&quot;&gt;8.6.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Default&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id151&quot; id=&quot;default&quot; name=&quot;default&quot;&gt;8.6.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Default&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is only used with C++ constructors.  Sometimes SIP
 needs to create a class instance.  By default it uses a constructor with no
 compulsory arguments if one is specified.  (SIP will automatically generate a
@@ -3998,36 +4051,36 @@ annotation is used to explicitly specify which constructor to use.  Zero is
 passed as the value of any arguments to the constructor.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id150&quot; id=&quot;id19&quot; name=&quot;id19&quot;&gt;8.6.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id152&quot; id=&quot;id19&quot; name=&quot;id19&quot;&gt;8.6.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Deprecated&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used to specify that the constructor or function is
 deprecated.  A deprecation warning is issued whenever the constructor or
 function is called.&lt;/p&gt;
 &lt;p&gt;Note that this can also be used as a class annotation.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id151&quot; id=&quot;factory&quot; name=&quot;factory&quot;&gt;8.6.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Factory&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id153&quot; id=&quot;factory&quot; name=&quot;factory&quot;&gt;8.6.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Factory&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the value returned by the function
 (which should be a wrapped C structure or C++ class instance) is a newly
 created instance and is owned by Python.&lt;/p&gt;
 &lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;#ownership-of-objects&quot;&gt;Ownership of Objects&lt;/a&gt; for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id152&quot; id=&quot;holdgil&quot; name=&quot;holdgil&quot;&gt;8.6.5&amp;nbsp;&amp;nbsp;&amp;nbsp;HoldGIL&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id154&quot; id=&quot;holdgil&quot; name=&quot;holdgil&quot;&gt;8.6.5&amp;nbsp;&amp;nbsp;&amp;nbsp;HoldGIL&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
 is not released before the call to the underlying C or C++ function.  See
 &lt;a class=&quot;reference&quot; href=&quot;#the-python-global-interpreter-lock&quot;&gt;The Python Global Interpreter Lock&lt;/a&gt; and the &lt;a class=&quot;reference&quot; href=&quot;#releasegil&quot;&gt;ReleaseGIL&lt;/a&gt; annotation.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id153&quot; id=&quot;newthread&quot; name=&quot;newthread&quot;&gt;8.6.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NewThread&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id155&quot; id=&quot;newthread&quot; name=&quot;newthread&quot;&gt;8.6.6&amp;nbsp;&amp;nbsp;&amp;nbsp;NewThread&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the function will create a new thread.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id154&quot; id=&quot;noargparser&quot; name=&quot;noargparser&quot;&gt;8.6.7&amp;nbsp;&amp;nbsp;&amp;nbsp;NoArgParser&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id156&quot; id=&quot;noargparser&quot; name=&quot;noargparser&quot;&gt;8.6.7&amp;nbsp;&amp;nbsp;&amp;nbsp;NoArgParser&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is used with global functions to specify that the
 supplied &lt;a class=&quot;reference&quot; href=&quot;#methodcode&quot;&gt;%MethodCode&lt;/a&gt; will handle the parsing of the arguments.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id155&quot; id=&quot;noderived&quot; name=&quot;noderived&quot;&gt;8.6.8&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDerived&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id157&quot; id=&quot;noderived&quot; name=&quot;noderived&quot;&gt;8.6.8&amp;nbsp;&amp;nbsp;&amp;nbsp;NoDerived&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation is only used with C++ constructors.  In many cases SIP
 generates a derived class for each class being wrapped (see &lt;a class=&quot;reference&quot; href=&quot;#generated-derived-classes&quot;&gt;Generated Derived
 Classes&lt;/a&gt;).  This derived class contains constructors with the same C++
@@ -4036,7 +4089,7 @@ Python constructor that has no corresponding C++ constructor.  This annotation
 is used to suppress the generation of the constructor in the derived class.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id156&quot; id=&quot;numeric&quot; name=&quot;numeric&quot;&gt;8.6.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Numeric&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id158&quot; id=&quot;numeric&quot; name=&quot;numeric&quot;&gt;8.6.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Numeric&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the operator should be interpreted as a
 numeric operator rather than a sequence operator.  Python uses the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;+&lt;/span&gt;&lt;/tt&gt;
 operator for adding numbers and concatanating sequences, and the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt; operator
@@ -4050,21 +4103,21 @@ operators.  This annotation is used to force SIP to treat the operator as
 numeric.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id157&quot; id=&quot;posthook&quot; name=&quot;posthook&quot;&gt;8.6.10&amp;nbsp;&amp;nbsp;&amp;nbsp;PostHook&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id159&quot; id=&quot;posthook&quot; name=&quot;posthook&quot;&gt;8.6.10&amp;nbsp;&amp;nbsp;&amp;nbsp;PostHook&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation is used to specify the name of a Python builtin that is
 called immediately after the call to the underlying C or C++ function or any
 handwritten code.  The builtin is not called if an error occurred.  It is
 primarily used to integrate with debuggers.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id158&quot; id=&quot;prehook&quot; name=&quot;prehook&quot;&gt;8.6.11&amp;nbsp;&amp;nbsp;&amp;nbsp;PreHook&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id160&quot; id=&quot;prehook&quot; name=&quot;prehook&quot;&gt;8.6.11&amp;nbsp;&amp;nbsp;&amp;nbsp;PreHook&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation is used to specify the name of a Python builtin that is
 called immediately after the function's arguments have been successfully
 parsed and before the call to the underlying C or C++ function or any
 handwritten code.  It is primarily used to integrate with debuggers.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id159&quot; id=&quot;id20&quot; name=&quot;id20&quot;&gt;8.6.12&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id161&quot; id=&quot;id20&quot; name=&quot;id20&quot;&gt;8.6.12&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation specifies an alternative name for the function being
 wrapped which is used when it is referred to from Python.  It is required when
 a function or method name is the same as a Python keyword.  It may also be used
@@ -4072,7 +4125,7 @@ to avoid name clashes with other objects (e.g. classes, enums, exceptions) that
 have the same name in the same C++ scope.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id160&quot; id=&quot;releasegil&quot; name=&quot;releasegil&quot;&gt;8.6.13&amp;nbsp;&amp;nbsp;&amp;nbsp;ReleaseGIL&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id162&quot; id=&quot;releasegil&quot; name=&quot;releasegil&quot;&gt;8.6.13&amp;nbsp;&amp;nbsp;&amp;nbsp;ReleaseGIL&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the Python Global Interpreter Lock (GIL)
 is released before the call to the underlying C or C++ function and reacquired
 afterwards.  It should be used for functions that might block or take a
@@ -4080,7 +4133,7 @@ significant amount of time to execute.  See &lt;a class=&quot;reference&quot; href=&quot;#the-pyth
 Lock&lt;/a&gt; and the &lt;a class=&quot;reference&quot; href=&quot;#holdgil&quot;&gt;HoldGIL&lt;/a&gt; annotation.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id161&quot; id=&quot;id21&quot; name=&quot;id21&quot;&gt;8.6.14&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id163&quot; id=&quot;id21&quot; name=&quot;id21&quot;&gt;8.6.14&amp;nbsp;&amp;nbsp;&amp;nbsp;Transfer&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that ownership of the value returned by the
 function (which should be a wrapped C structure or C++ class instance) is
 transferred to C++.  It is only used in the context of a class constructor or a
@@ -4093,7 +4146,7 @@ the method is created with regard to the cyclic garbage collector.&lt;/p&gt;
 &lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;#ownership-of-objects&quot;&gt;Ownership of Objects&lt;/a&gt; for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id162&quot; id=&quot;id22&quot; name=&quot;id22&quot;&gt;8.6.15&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id164&quot; id=&quot;id22&quot; name=&quot;id22&quot;&gt;8.6.15&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferBack&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that ownership of the value returned by the
 function (which should be a wrapped C structure or C++ class instance) is
 transferred back to Python from C++.  Normally returned values (unless they are
@@ -4104,7 +4157,7 @@ with another instance is removed.&lt;/p&gt;
 &lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;#ownership-of-objects&quot;&gt;Ownership of Objects&lt;/a&gt; for more detail.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id163&quot; id=&quot;id23&quot; name=&quot;id23&quot;&gt;8.6.16&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id165&quot; id=&quot;id23&quot; name=&quot;id23&quot;&gt;8.6.16&amp;nbsp;&amp;nbsp;&amp;nbsp;TransferThis&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that ownership of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;this&lt;/span&gt;&lt;/tt&gt; is transferred
 from Python to C++.&lt;/p&gt;
 &lt;p&gt;Note that this can also be used as an argument annotation.&lt;/p&gt;
@@ -4112,36 +4165,36 @@ from Python to C++.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id164&quot; id=&quot;license-annotations&quot; name=&quot;license-annotations&quot;&gt;8.7&amp;nbsp;&amp;nbsp;&amp;nbsp;License Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id166&quot; id=&quot;license-annotations&quot; name=&quot;license-annotations&quot;&gt;8.7&amp;nbsp;&amp;nbsp;&amp;nbsp;License Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id165&quot; id=&quot;licensee&quot; name=&quot;licensee&quot;&gt;8.7.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Licensee&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id167&quot; id=&quot;licensee&quot; name=&quot;licensee&quot;&gt;8.7.1&amp;nbsp;&amp;nbsp;&amp;nbsp;Licensee&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This optional string annotation specifies the license's licensee.  No
 restrictions are placed on the contents of the string.&lt;/p&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#id14&quot;&gt;%License&lt;/a&gt; directive.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id166&quot; id=&quot;signature&quot; name=&quot;signature&quot;&gt;8.7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Signature&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id168&quot; id=&quot;signature&quot; name=&quot;signature&quot;&gt;8.7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;Signature&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This optional string annotation specifies the license's signature.  No
 restrictions are placed on the contents of the string.&lt;/p&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#id14&quot;&gt;%License&lt;/a&gt; directive.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id167&quot; id=&quot;timestamp&quot; name=&quot;timestamp&quot;&gt;8.7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Timestamp&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id169&quot; id=&quot;timestamp&quot; name=&quot;timestamp&quot;&gt;8.7.3&amp;nbsp;&amp;nbsp;&amp;nbsp;Timestamp&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This optional string annotation specifies the license's timestamp.  No
 restrictions are placed on the contents of the string.&lt;/p&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#id14&quot;&gt;%License&lt;/a&gt; directive.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id168&quot; id=&quot;type&quot; name=&quot;type&quot;&gt;8.7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id170&quot; id=&quot;type&quot; name=&quot;type&quot;&gt;8.7.4&amp;nbsp;&amp;nbsp;&amp;nbsp;Type&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This string annotation specifies the license's type.  No restrictions are
 placed on the contents of the string.&lt;/p&gt;
 &lt;p&gt;See the &lt;a class=&quot;reference&quot; href=&quot;#id14&quot;&gt;%License&lt;/a&gt; directive.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id169&quot; id=&quot;typedef-annotations&quot; name=&quot;typedef-annotations&quot;&gt;8.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Typedef Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id171&quot; id=&quot;typedef-annotations&quot; name=&quot;typedef-annotations&quot;&gt;8.8&amp;nbsp;&amp;nbsp;&amp;nbsp;Typedef Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id170&quot; id=&quot;notypename&quot; name=&quot;notypename&quot;&gt;8.8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoTypeName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id172&quot; id=&quot;notypename&quot; name=&quot;notypename&quot;&gt;8.8.1&amp;nbsp;&amp;nbsp;&amp;nbsp;NoTypeName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This boolean annotation specifies that the definition of the type rather than
 the name of the type being defined should be used in the generated code.&lt;/p&gt;
 &lt;p&gt;Normally a typedef would be defined as follows:&lt;/p&gt;
@@ -4154,9 +4207,9 @@ code instead.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id171&quot; id=&quot;variable-annotations&quot; name=&quot;variable-annotations&quot;&gt;8.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Variable Annotations&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id173&quot; id=&quot;variable-annotations&quot; name=&quot;variable-annotations&quot;&gt;8.9&amp;nbsp;&amp;nbsp;&amp;nbsp;Variable Annotations&lt;/a&gt;&lt;/h2&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id172&quot; id=&quot;id24&quot; name=&quot;id24&quot;&gt;8.9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
+&lt;h3&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id174&quot; id=&quot;id24&quot; name=&quot;id24&quot;&gt;8.9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;PyName&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;This name annotation specifies an alternative name for the variable being
 wrapped which is used when it is referred to from Python.  It is required when
 a variable name is the same as a Python keyword.  It may also be used to avoid
@@ -4166,53 +4219,53 @@ name in the same C++ scope.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id173&quot; id=&quot;sip-api-for-handwritten-code&quot; name=&quot;sip-api-for-handwritten-code&quot;&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP API for Handwritten Code&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id175&quot; id=&quot;sip-api-for-handwritten-code&quot; name=&quot;sip-api-for-handwritten-code&quot;&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP API for Handwritten Code&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;In this section we describe the API that can be used by handwritten code in
 specification files.&lt;/p&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id174&quot; id=&quot;sip-api-major-nr&quot; name=&quot;sip-api-major-nr&quot;&gt;9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MAJOR_NR&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id176&quot; id=&quot;sip-api-major-nr&quot; name=&quot;sip-api-major-nr&quot;&gt;9.1&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MAJOR_NR&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor symbol that defines the major number of the SIP API.
 Its value is a number.  There is no direct relationship between this and the
 SIP version number.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id175&quot; id=&quot;sip-api-minor-nr&quot; name=&quot;sip-api-minor-nr&quot;&gt;9.2&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MINOR_NR&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id177&quot; id=&quot;sip-api-minor-nr&quot; name=&quot;sip-api-minor-nr&quot;&gt;9.2&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_API_MINOR_NR&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor symbol that defines the minor number of the SIP API.
 Its value is a number.  There is no direct relationship between this and the
 SIP version number.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id176&quot; id=&quot;sip-block-threads&quot; name=&quot;sip-block-threads&quot;&gt;9.3&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_BLOCK_THREADS&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id178&quot; id=&quot;sip-block-threads&quot; name=&quot;sip-block-threads&quot;&gt;9.3&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_BLOCK_THREADS&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor macro that will make sure the Python Global
 Interpreter Lock (GIL) is acquired.  Python API calls must only be made when
 the GIL has been acquired.  There must be a corresponding
 &lt;a class=&quot;reference&quot; href=&quot;#sip-unblock-threads&quot;&gt;SIP_UNBLOCK_THREADS&lt;/a&gt; at the same lexical scope.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id177&quot; id=&quot;sip-ssize-t&quot; name=&quot;sip-ssize-t&quot;&gt;9.4&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_SSIZE_T&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id179&quot; id=&quot;sip-ssize-t&quot; name=&quot;sip-ssize-t&quot;&gt;9.4&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_SSIZE_T&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor macro that is defined as &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_ssize_t&lt;/span&gt;&lt;/tt&gt; for Python
 v2.5 and later, and as &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;int&lt;/span&gt;&lt;/tt&gt; for earlier versions of Python.  It makes it
 easier to write PEP 353 compliant handwritten code.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id178&quot; id=&quot;sip-unblock-threads&quot; name=&quot;sip-unblock-threads&quot;&gt;9.5&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_UNBLOCK_THREADS&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id180&quot; id=&quot;sip-unblock-threads&quot; name=&quot;sip-unblock-threads&quot;&gt;9.5&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_UNBLOCK_THREADS&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor macro that will restore the Python Global Interpreter
 Lock (GIL) to the state it was prior to the corresponding &lt;a class=&quot;reference&quot; href=&quot;#sip-block-threads&quot;&gt;SIP_BLOCK_THREADS&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id179&quot; id=&quot;sip-version&quot; name=&quot;sip-version&quot;&gt;9.6&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id181&quot; id=&quot;sip-version&quot; name=&quot;sip-version&quot;&gt;9.6&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor symbol that defines the SIP version number
 represented as a 3 part hexadecimal number (e.g. v4.0.0 is represented as
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;0x040000&lt;/span&gt;&lt;/tt&gt;).&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id180&quot; id=&quot;sip-version-str&quot; name=&quot;sip-version-str&quot;&gt;9.7&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION_STR&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id182&quot; id=&quot;sip-version-str&quot; name=&quot;sip-version-str&quot;&gt;9.7&amp;nbsp;&amp;nbsp;&amp;nbsp;SIP_VERSION_STR&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C preprocessor symbol that defines the SIP version number
 represented as a string.  For development snapshots it will start with
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;snapshot-&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id181&quot; id=&quot;sipbadcatcherresult&quot; name=&quot;sipbadcatcherresult&quot;&gt;9.8&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadCatcherResult()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id183&quot; id=&quot;sipbadcatcherresult&quot; name=&quot;sipbadcatcherresult&quot;&gt;9.8&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadCatcherResult()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipBadCatcherResult(PyObject *method)&lt;/dt&gt;
 &lt;dd&gt;This raises a Python exception when the result of a Python reimplementation
@@ -4223,7 +4276,7 @@ handwritten code specified with the &lt;a class=&quot;reference&quot; href=&quot;#virtualcatcherco
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id182&quot; id=&quot;sipbadlengthforslice&quot; name=&quot;sipbadlengthforslice&quot;&gt;9.9&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadLengthForSlice()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id184&quot; id=&quot;sipbadlengthforslice&quot; name=&quot;sipbadlengthforslice&quot;&gt;9.9&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBadLengthForSlice()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipBadLengthForSlice(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen)&lt;/dt&gt;
 &lt;dd&gt;This raises a Python exception when the length of a slice object is
@@ -4234,7 +4287,7 @@ versions of Python prior to v2.5 the arguments have type &lt;tt class=&quot;docutils lit
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id183&quot; id=&quot;sipbuildresult&quot; name=&quot;sipbuildresult&quot;&gt;9.10&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBuildResult()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id185&quot; id=&quot;sipbuildresult&quot; name=&quot;sipbuildresult&quot;&gt;9.10&amp;nbsp;&amp;nbsp;&amp;nbsp;sipBuildResult()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipBuildResult(int *iserr, const char *format, ...)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This creates a Python object based on a format string and associated
@@ -4252,18 +4305,19 @@ to be passed.&lt;/p&gt;
 &lt;dl class=&quot;last docutils&quot;&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;b&lt;/span&gt;&lt;/tt&gt; (boolean) [int]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;int&lt;/span&gt;&lt;/tt&gt; to a Python boolean.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;c&lt;/span&gt;&lt;/tt&gt; (string) [char]&lt;/dt&gt;
-&lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt;&lt;/tt&gt; to a Python string.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;c&lt;/span&gt;&lt;/tt&gt; (string/bytes) [char]&lt;/dt&gt;
+&lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt;&lt;/tt&gt; to a Python v2 string object or a Python v3
+bytes object.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;d&lt;/span&gt;&lt;/tt&gt; (float) [double]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;double&lt;/span&gt;&lt;/tt&gt; to a Python floating point number.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;e&lt;/span&gt;&lt;/tt&gt; (integer) [enum]&lt;/dt&gt;
 &lt;dd&gt;Convert an anonymous C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;enum&lt;/span&gt;&lt;/tt&gt; to a Python integer.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;f&lt;/span&gt;&lt;/tt&gt; (float) [float]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;float&lt;/span&gt;&lt;/tt&gt; to a Python floating point number.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;g&lt;/span&gt;&lt;/tt&gt; (string) [char *, SIP_SSIZE_T]&lt;/dt&gt;
-&lt;dd&gt;Convert a C/C++ character array and its length to a Python string.  If
-the array is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; then the length is ignored and the result is
-&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;g&lt;/span&gt;&lt;/tt&gt; (string/bytes) [char *, SIP_SSIZE_T]&lt;/dt&gt;
+&lt;dd&gt;Convert a C/C++ character array and its length to a Python v2 string
+object or a Python v3 bytes object.  If the array is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; then the
+length is ignored and the result is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;h&lt;/span&gt;&lt;/tt&gt; (integer) [short]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt; to a Python integer.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;i&lt;/span&gt;&lt;/tt&gt; (integer) [int]&lt;/dt&gt;
@@ -4276,9 +4330,10 @@ the array is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; the
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt; to a Python long.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;o&lt;/span&gt;&lt;/tt&gt; (long) [unsigned long long]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt; to a Python long.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;s&lt;/span&gt;&lt;/tt&gt; (string) [char *]&lt;/dt&gt;
-&lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string to a Python string.  If the
-string pointer is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; then the result is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;s&lt;/span&gt;&lt;/tt&gt; (string/bytes) [char *]&lt;/dt&gt;
+&lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string to a Python v2 string object
+or a Python v3 bytes object.  If the string pointer is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; then
+the result is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;t&lt;/span&gt;&lt;/tt&gt; (long) [unsigned short]&lt;/dt&gt;
 &lt;dd&gt;Convert a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt; to a Python long.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;u&lt;/span&gt;&lt;/tt&gt; (long) [unsigned int]&lt;/dt&gt;
@@ -4361,7 +4416,7 @@ count is incremented.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id184&quot; id=&quot;sipcallmethod&quot; name=&quot;sipcallmethod&quot;&gt;9.11&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCallMethod()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id186&quot; id=&quot;sipcallmethod&quot; name=&quot;sipcallmethod&quot;&gt;9.11&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCallMethod()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipCallMethod(int *iserr, PyObject *method, const char *format, ...)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This calls a Python method passing a tuple of arguments based on a format
@@ -4378,7 +4433,7 @@ Python bound method to call.  &lt;em&gt;format&lt;/em&gt; is the string of format characters
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id185&quot; id=&quot;sipcanconverttoenum&quot; name=&quot;sipcanconverttoenum&quot;&gt;9.12&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToEnum()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id187&quot; id=&quot;sipcanconverttoenum&quot; name=&quot;sipcanconverttoenum&quot;&gt;9.12&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToEnum()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipCanConvertToEnum(PyObject *obj, const sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a non-zero value if a Python object can be converted to a
@@ -4387,7 +4442,7 @@ structure corresponding to the enum.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id186&quot; id=&quot;sipcanconverttoinstance&quot; name=&quot;sipcanconverttoinstance&quot;&gt;9.13&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id188&quot; id=&quot;sipcanconverttoinstance&quot; name=&quot;sipcanconverttoinstance&quot;&gt;9.13&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipCanConvertToInstance(PyObject *obj, sipWrapperType *type, int flags)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a non-zero value if a Python object can be converted to an
@@ -4408,7 +4463,7 @@ check.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id187&quot; id=&quot;sipcanconverttomappedtype&quot; name=&quot;sipcanconverttomappedtype&quot;&gt;9.14&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id189&quot; id=&quot;sipcanconverttomappedtype&quot; name=&quot;sipcanconverttomappedtype&quot;&gt;9.14&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipCanConvertToMappedType(PyObject *obj, const sipMappedType *mt, int flags)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a non-zero value if a Python object can be converted to an
@@ -4427,7 +4482,7 @@ following values used to fine tune the check.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id188&quot; id=&quot;sipcanconverttotype&quot; name=&quot;sipcanconverttotype&quot;&gt;9.15&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id190&quot; id=&quot;sipcanconverttotype&quot; name=&quot;sipcanconverttotype&quot;&gt;9.15&amp;nbsp;&amp;nbsp;&amp;nbsp;sipCanConvertToType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipCanConvertToType(PyObject *obj, const sipTypeDef *td, int flags)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a non-zero value if a Python object can be converted to an
@@ -4446,7 +4501,7 @@ used to fine tune the check.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id189&quot; id=&quot;sipclassname&quot; name=&quot;sipclassname&quot;&gt;9.16&amp;nbsp;&amp;nbsp;&amp;nbsp;sipClassName()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id191&quot; id=&quot;sipclassname&quot; name=&quot;sipclassname&quot;&gt;9.16&amp;nbsp;&amp;nbsp;&amp;nbsp;sipClassName()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipClassName(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns the class name of a wrapped instance as a Python string.  It
@@ -4459,7 +4514,7 @@ PyString_FromString(obj-&amp;gt;ob_type-&amp;gt;tp_name)
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id190&quot; id=&quot;sipconvertfromconstvoidptr&quot; name=&quot;sipconvertfromconstvoidptr&quot;&gt;9.17&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtr()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id192&quot; id=&quot;sipconvertfromconstvoidptr&quot; name=&quot;sipconvertfromconstvoidptr&quot;&gt;9.17&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtr()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromConstVoidPtr(const void *cpp)&lt;/dt&gt;
 &lt;dd&gt;This creates a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.voidptr&lt;/span&gt;&lt;/tt&gt; object for a memory address.  The object
@@ -4468,7 +4523,7 @@ address.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id191&quot; id=&quot;sipconvertfromconstvoidptrandsize&quot; name=&quot;sipconvertfromconstvoidptrandsize&quot;&gt;9.18&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtrAndSize()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id193&quot; id=&quot;sipconvertfromconstvoidptrandsize&quot; name=&quot;sipconvertfromconstvoidptrandsize&quot;&gt;9.18&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromConstVoidPtrAndSize()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromConstVoidPtrAndSize(const void *cpp, SIP_SSIZE_T size)&lt;/dt&gt;
 &lt;dd&gt;This creates a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.voidptr&lt;/span&gt;&lt;/tt&gt; object for a memory address.  The object
@@ -4478,7 +4533,7 @@ object.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id192&quot; id=&quot;sipconvertfromenum&quot; name=&quot;sipconvertfromenum&quot;&gt;9.19&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromEnum()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id194&quot; id=&quot;sipconvertfromenum&quot; name=&quot;sipconvertfromenum&quot;&gt;9.19&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromEnum()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromEnum(int eval, const sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This converts a named C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;enum&lt;/span&gt;&lt;/tt&gt; to an instance of the corresponding
@@ -4488,7 +4543,7 @@ Structures&lt;/a&gt;).&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id193&quot; id=&quot;sipconvertfrominstance&quot; name=&quot;sipconvertfrominstance&quot;&gt;9.20&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id195&quot; id=&quot;sipconvertfrominstance&quot; name=&quot;sipconvertfrominstance&quot;&gt;9.20&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromInstance(void *cpp, sipWrapperType *type, PyObject *transferObj)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a C structure or a C++ class instance to a Python class
@@ -4511,7 +4566,7 @@ C/C++ and the instance associated with &lt;em&gt;transferObj&lt;/em&gt; via a call to
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id194&quot; id=&quot;sipconvertfrommappedtype&quot; name=&quot;sipconvertfrommappedtype&quot;&gt;9.21&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id196&quot; id=&quot;sipconvertfrommappedtype&quot; name=&quot;sipconvertfrommappedtype&quot;&gt;9.21&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromMappedType(void *cpp, const sipMappedType *mt, PyObject *transferObj)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a C structure or a C++ class instance wrapped as a mapped
@@ -4528,7 +4583,7 @@ call to &lt;a class=&quot;reference&quot; href=&quot;#siptransferto&quot;&gt;sipTransferTo()&lt;/a&gt;.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id195&quot; id=&quot;sipconvertfromnamedenum&quot; name=&quot;sipconvertfromnamedenum&quot;&gt;9.22&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNamedEnum()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id197&quot; id=&quot;sipconvertfromnamedenum&quot; name=&quot;sipconvertfromnamedenum&quot;&gt;9.22&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNamedEnum()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromNamedEnum(int eval, PyTypeObject *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a named C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;enum&lt;/span&gt;&lt;/tt&gt; to an instance of the corresponding
@@ -4541,7 +4596,7 @@ Objects&lt;/a&gt;).&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id196&quot; id=&quot;sipconvertfromnewinstance&quot; name=&quot;sipconvertfromnewinstance&quot;&gt;9.23&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id198&quot; id=&quot;sipconvertfromnewinstance&quot; name=&quot;sipconvertfromnewinstance&quot;&gt;9.23&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromNewInstance(void *cpp, sipWrapperType *type, PyObject *transferObj)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a new C structure or a new C++ class instance to a Python
@@ -4557,7 +4612,7 @@ by any applicable &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToS
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id197&quot; id=&quot;sipconvertfromnewtype&quot; name=&quot;sipconvertfromnewtype&quot;&gt;9.24&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id199&quot; id=&quot;sipconvertfromnewtype&quot; name=&quot;sipconvertfromnewtype&quot;&gt;9.24&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromNewType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromNewType(void *cpp, const sipTypeDef *td, PyObject *transferObj)&lt;/dt&gt;
 &lt;dd&gt;This converts a new C structure, C++ class or mapped type instance to a
@@ -4570,7 +4625,7 @@ by any applicable &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToS
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id198&quot; id=&quot;sipconvertfromsequenceindex&quot; name=&quot;sipconvertfromsequenceindex&quot;&gt;9.25&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSequenceIndex()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id200&quot; id=&quot;sipconvertfromsequenceindex&quot; name=&quot;sipconvertfromsequenceindex&quot;&gt;9.25&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSequenceIndex()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;SIP_SSIZE_T sipConvertFromSequenceIndex(SIP_SSIZE_T idx, SIP_SSIZE_T len)&lt;/dt&gt;
 &lt;dd&gt;This converts a Python sequence index (i.e. where a negative value refers
@@ -4581,7 +4636,7 @@ arguments have type &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;int&lt;/span&gt;&lt;/t
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id199&quot; id=&quot;sipconvertfromsliceobject&quot; name=&quot;sipconvertfromsliceobject&quot;&gt;9.26&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSliceObject()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id201&quot; id=&quot;sipconvertfromsliceobject&quot; name=&quot;sipconvertfromsliceobject&quot;&gt;9.26&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromSliceObject()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipConvertFromSliceObject(PyObject *slice, SIP_SSIZE_T length, SIP_SSIZE_T *start, SIP_SSIZE_T *stop, SIP_SSIZE_T *step, SIP_SSIZE_T *slicelength)&lt;/dt&gt;
 &lt;dd&gt;This is a thin wrapper around the Python &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PySlice_GetIndicesEx()&lt;/span&gt;&lt;/tt&gt;
@@ -4590,7 +4645,7 @@ compatible with SIP v3.x and versions of Python earlier that v2.3.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id200&quot; id=&quot;sipconvertfromtype&quot; name=&quot;sipconvertfromtype&quot;&gt;9.27&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id202&quot; id=&quot;sipconvertfromtype&quot; name=&quot;sipconvertfromtype&quot;&gt;9.27&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromType(void *cpp, const sipTypeDef *td, PyObject *transferObj)&lt;/dt&gt;
 &lt;dd&gt;This converts a C structure, a C++ class instance or a mapped type to a
@@ -4610,7 +4665,7 @@ and the instance associated with &lt;em&gt;transferObj&lt;/em&gt; via a call to
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id201&quot; id=&quot;sipconvertfromvoidptr&quot; name=&quot;sipconvertfromvoidptr&quot;&gt;9.28&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtr()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id203&quot; id=&quot;sipconvertfromvoidptr&quot; name=&quot;sipconvertfromvoidptr&quot;&gt;9.28&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtr()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromVoidPtr(void *cpp)&lt;/dt&gt;
 &lt;dd&gt;This creates a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.voidptr&lt;/span&gt;&lt;/tt&gt; object for a memory address.  The object
@@ -4618,7 +4673,7 @@ will be writeable but has no associated size.  &lt;em&gt;cpp&lt;/em&gt; is the memory addres
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id202&quot; id=&quot;sipconvertfromvoidptrandsize&quot; name=&quot;sipconvertfromvoidptrandsize&quot;&gt;9.29&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtrAndSize()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id204&quot; id=&quot;sipconvertfromvoidptrandsize&quot; name=&quot;sipconvertfromvoidptrandsize&quot;&gt;9.29&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertFromVoidPtrAndSize()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipConvertFromVoidPtrAndSize(void *cpp, SIP_SSIZE_T size)&lt;/dt&gt;
 &lt;dd&gt;This creates a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.voidptr&lt;/span&gt;&lt;/tt&gt; object for a memory address.  The object
@@ -4628,7 +4683,7 @@ object.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id203&quot; id=&quot;sipconverttoinstance&quot; name=&quot;sipconverttoinstance&quot;&gt;9.30&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id205&quot; id=&quot;sipconverttoinstance&quot; name=&quot;sipconverttoinstance&quot;&gt;9.30&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipConvertToInstance(PyObject *obj, sipWrapperType *type, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object to an instance of a C structure or C++ class
@@ -4664,7 +4719,7 @@ rather than after each call.)&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id204&quot; id=&quot;sipconverttomappedtype&quot; name=&quot;sipconverttomappedtype&quot;&gt;9.31&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id206&quot; id=&quot;sipconverttomappedtype&quot; name=&quot;sipconverttomappedtype&quot;&gt;9.31&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipConvertToMappedType(PyObject *obj, const sipMappedType *mt, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object to an instance of a C structure or C++
@@ -4697,7 +4752,7 @@ needs to be tested once rather than after each call.)&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id205&quot; id=&quot;sipconverttotype&quot; name=&quot;sipconverttotype&quot;&gt;9.32&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id207&quot; id=&quot;sipconverttotype&quot; name=&quot;sipconverttotype&quot;&gt;9.32&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipConvertToType(PyObject *obj, const sipTypeDef *td, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object to an instance of a C structure, C++ class or
@@ -4731,7 +4786,7 @@ than after each call.)&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id206&quot; id=&quot;sipconverttovoidptr&quot; name=&quot;sipconverttovoidptr&quot;&gt;9.33&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToVoidPtr()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id208&quot; id=&quot;sipconverttovoidptr&quot; name=&quot;sipconverttovoidptr&quot;&gt;9.33&amp;nbsp;&amp;nbsp;&amp;nbsp;sipConvertToVoidPtr()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipConvertToVoidPtr(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;This converts a Python object to a memory address.  &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;obj&lt;/span&gt;&lt;/tt&gt; may be
@@ -4741,7 +4796,7 @@ was successful.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id207&quot; id=&quot;sipexportsymbol&quot; name=&quot;sipexportsymbol&quot;&gt;9.34&amp;nbsp;&amp;nbsp;&amp;nbsp;sipExportSymbol()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id209&quot; id=&quot;sipexportsymbol&quot; name=&quot;sipexportsymbol&quot;&gt;9.34&amp;nbsp;&amp;nbsp;&amp;nbsp;sipExportSymbol()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipExportSymbol(const char *name, void *sym)&lt;/dt&gt;
 &lt;dd&gt;Python does not allow extension modules to directly access symbols in
@@ -4753,7 +4808,7 @@ already associated with a symbol or there was some other error.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id208&quot; id=&quot;sipfindclass&quot; name=&quot;sipfindclass&quot;&gt;9.35&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindClass()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id210&quot; id=&quot;sipfindclass&quot; name=&quot;sipfindclass&quot;&gt;9.35&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindClass()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;sipWrapperType *sipFindClass(const char *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a pointer to the generated type corresponding to a C/C++ type.
@@ -4765,7 +4820,7 @@ may be saved in a static cache.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id209&quot; id=&quot;sipfindmappedtype&quot; name=&quot;sipfindmappedtype&quot;&gt;9.36&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id211&quot; id=&quot;sipfindmappedtype&quot; name=&quot;sipfindmappedtype&quot;&gt;9.36&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const sipMappedType *sipFindMappedType(const char *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a pointer to an opaque structure describing a mapped type.
@@ -4777,7 +4832,7 @@ may be saved in a static cache.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id210&quot; id=&quot;sipfindnamedenum&quot; name=&quot;sipfindnamedenum&quot;&gt;9.37&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindNamedEnum()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id212&quot; id=&quot;sipfindnamedenum&quot; name=&quot;sipfindnamedenum&quot;&gt;9.37&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindNamedEnum()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyTypeObject *sipFindNamedEnum(const char *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a pointer to the generated type corresponding to a named C/C++
@@ -4789,7 +4844,7 @@ change and may be saved in a static cache.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id211&quot; id=&quot;sipfindtype&quot; name=&quot;sipfindtype&quot;&gt;9.38&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id213&quot; id=&quot;sipfindtype&quot; name=&quot;sipfindtype&quot;&gt;9.38&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFindType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const sipTypeDef *sipFindType(const char *type)&lt;/dt&gt;
 &lt;dd&gt;This returns a pointer to the SIP generated type structure corresponding to
@@ -4799,7 +4854,7 @@ change and may be saved in a static cache.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id212&quot; id=&quot;sipforceconverttoinstance&quot; name=&quot;sipforceconverttoinstance&quot;&gt;9.39&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id214&quot; id=&quot;sipforceconverttoinstance&quot; name=&quot;sipforceconverttoinstance&quot;&gt;9.39&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipForceConvertToInstance(PyObject *obj, sipWrapperType *type, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object to an instance of a C structure or C++ class
@@ -4812,7 +4867,7 @@ description of the arguments.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id213&quot; id=&quot;sipforceconverttomappedtype&quot; name=&quot;sipforceconverttomappedtype&quot;&gt;9.40&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id215&quot; id=&quot;sipforceconverttomappedtype&quot; name=&quot;sipforceconverttomappedtype&quot;&gt;9.40&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipForceConvertToMappedType(PyObject *obj, const sipMappedType *mt, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object to an instance of a C structure or C++ class
@@ -4826,7 +4881,7 @@ description of the arguments.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id214&quot; id=&quot;sipforceconverttotype&quot; name=&quot;sipforceconverttotype&quot;&gt;9.41&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id216&quot; id=&quot;sipforceconverttotype&quot; name=&quot;sipforceconverttotype&quot;&gt;9.41&amp;nbsp;&amp;nbsp;&amp;nbsp;sipForceConvertToType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipForceConvertToType(PyObject *obj, const sipTypeDef *td, PyObject *transferObj, int flags, int *state, int *iserr)&lt;/dt&gt;
 &lt;dd&gt;This converts a Python object to an instance of a C structure, C++ class or
@@ -4836,7 +4891,7 @@ description of the arguments.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id215&quot; id=&quot;sipfree&quot; name=&quot;sipfree&quot;&gt;9.42&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFree()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id217&quot; id=&quot;sipfree&quot; name=&quot;sipfree&quot;&gt;9.42&amp;nbsp;&amp;nbsp;&amp;nbsp;sipFree()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipFree(void *mem)&lt;/dt&gt;
 &lt;dd&gt;This returns an area of memory allocated by &lt;a class=&quot;reference&quot; href=&quot;#sipmalloc&quot;&gt;sipMalloc()&lt;/a&gt; to the heap.
@@ -4844,7 +4899,7 @@ description of the arguments.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id216&quot; id=&quot;sipgetpyobject&quot; name=&quot;sipgetpyobject&quot;&gt;9.43&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetPyObject()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id218&quot; id=&quot;sipgetpyobject&quot; name=&quot;sipgetpyobject&quot;&gt;9.43&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetPyObject()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipGetPyObject(void *cppptr, const sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a borrowed reference to the Python object for a C structure or
@@ -4855,7 +4910,7 @@ structure corresponding to the C/C++ type.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id217&quot; id=&quot;sipgetwrapper&quot; name=&quot;sipgetwrapper&quot;&gt;9.44&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetWrapper()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id219&quot; id=&quot;sipgetwrapper&quot; name=&quot;sipgetwrapper&quot;&gt;9.44&amp;nbsp;&amp;nbsp;&amp;nbsp;sipGetWrapper()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyObject *sipGetWrapper(void *cppptr, sipWrapperType *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a borrowed reference to the wrapped instance object for a C
@@ -4869,7 +4924,7 @@ raised).  &lt;em&gt;cppptr&lt;/em&gt; is the pointer to the structure or class instance.
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id218&quot; id=&quot;sipimportsymbol&quot; name=&quot;sipimportsymbol&quot;&gt;9.45&amp;nbsp;&amp;nbsp;&amp;nbsp;sipImportSymbol()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id220&quot; id=&quot;sipimportsymbol&quot; name=&quot;sipimportsymbol&quot;&gt;9.45&amp;nbsp;&amp;nbsp;&amp;nbsp;sipImportSymbol()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipImportSymbol(const char *name)&lt;/dt&gt;
 &lt;dd&gt;Python does not allow extension modules to directly access symbols in
@@ -4881,7 +4936,7 @@ symbol.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id219&quot; id=&quot;sipinttypeclassmap&quot; name=&quot;sipinttypeclassmap&quot;&gt;9.46&amp;nbsp;&amp;nbsp;&amp;nbsp;sipIntTypeClassMap&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id221&quot; id=&quot;sipinttypeclassmap&quot; name=&quot;sipinttypeclassmap&quot;&gt;9.46&amp;nbsp;&amp;nbsp;&amp;nbsp;sipIntTypeClassMap&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This C structure is used with &lt;a class=&quot;reference&quot; href=&quot;#sipmapinttoclass&quot;&gt;sipMapIntToClass()&lt;/a&gt; to define a mapping
 between integer based RTTI and &lt;a class=&quot;reference&quot; href=&quot;#generated-type-objects&quot;&gt;generated type objects&lt;/a&gt;.  The structure
 elements are as follows.&lt;/p&gt;
@@ -4894,7 +4949,7 @@ elements are as follows.&lt;/p&gt;
 &lt;p&gt;This is deprecated from SIP v4.8.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id220&quot; id=&quot;siplong-asunsignedlong&quot; name=&quot;siplong-asunsignedlong&quot;&gt;9.47&amp;nbsp;&amp;nbsp;&amp;nbsp;sipLong_AsUnsignedLong()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id222&quot; id=&quot;siplong-asunsignedlong&quot; name=&quot;siplong-asunsignedlong&quot;&gt;9.47&amp;nbsp;&amp;nbsp;&amp;nbsp;sipLong_AsUnsignedLong()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;unsigned long sipLong_AsUnsignedLong(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;This function is a thin wrapper around PyLong_AsUnsignedLong() that works
@@ -4902,7 +4957,7 @@ around a bug in Python v2.3.x and earlier when converting integer objects.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id221&quot; id=&quot;sipmalloc&quot; name=&quot;sipmalloc&quot;&gt;9.48&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMalloc()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id223&quot; id=&quot;sipmalloc&quot; name=&quot;sipmalloc&quot;&gt;9.48&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMalloc()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void *sipMalloc(size_t nbytes)&lt;/dt&gt;
 &lt;dd&gt;This allocates an area of memory of size &lt;em&gt;nytes&lt;/em&gt; on the heap using the
@@ -4911,7 +4966,7 @@ returned and a Python exception raised.  See &lt;a class=&quot;reference&quot; href=&quot;#sipfree
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id222&quot; id=&quot;sipmapinttoclass&quot; name=&quot;sipmapinttoclass&quot;&gt;9.49&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapIntToClass()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id224&quot; id=&quot;sipmapinttoclass&quot; name=&quot;sipmapinttoclass&quot;&gt;9.49&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapIntToClass()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;sipWrapperType *sipMapIntToClass(int type, const sipIntTypeClassMap *map, int maplen)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This is used in &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToSubClassCode&lt;/a&gt; code as a convenient way of
@@ -4926,7 +4981,7 @@ if &lt;em&gt;type&lt;/em&gt; wasn't in &lt;em&gt;map&lt;/em&gt;.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id223&quot; id=&quot;sipmapstringtoclass&quot; name=&quot;sipmapstringtoclass&quot;&gt;9.50&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapStringToClass()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id225&quot; id=&quot;sipmapstringtoclass&quot; name=&quot;sipmapstringtoclass&quot;&gt;9.50&amp;nbsp;&amp;nbsp;&amp;nbsp;sipMapStringToClass()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;sipWrapperType *sipMapStringToClass(char *type, const sipStringTypeClassMap *map, int maplen)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This is used in &lt;a class=&quot;reference&quot; href=&quot;#converttosubclasscode&quot;&gt;%ConvertToSubClassCode&lt;/a&gt; code as a convenient way of
@@ -4941,7 +4996,7 @@ object is returned, or &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id224&quot; id=&quot;sipparseresult&quot; name=&quot;sipparseresult&quot;&gt;9.51&amp;nbsp;&amp;nbsp;&amp;nbsp;sipParseResult()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id226&quot; id=&quot;sipparseresult&quot; name=&quot;sipparseresult&quot;&gt;9.51&amp;nbsp;&amp;nbsp;&amp;nbsp;sipParseResult()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipParseResult(int *iserr, PyObject *method, PyObject *result, const char *format, ...)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This converts a Python object (usually returned by a method) to C/C++ based
@@ -4964,18 +5019,20 @@ to be passed.&lt;/p&gt;
 &lt;dl class=&quot;last docutils&quot;&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;b&lt;/span&gt;&lt;/tt&gt; (integer) [bool *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python integer to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;bool&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;c&lt;/span&gt;&lt;/tt&gt; (string) [char *]&lt;/dt&gt;
-&lt;dd&gt;Convert a Python string of length 1 to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;c&lt;/span&gt;&lt;/tt&gt; (string/bytes) [char *]&lt;/dt&gt;
+&lt;dd&gt;Convert a Python v2 string object or a Python v3 bytes object of length
+1 to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;char&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;d&lt;/span&gt;&lt;/tt&gt; (float) [double *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python floating point number to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;double&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;e&lt;/span&gt;&lt;/tt&gt; (integer) [enum *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python integer to an anonymous C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;enum&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;f&lt;/span&gt;&lt;/tt&gt; (float) [float *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python floating point number to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;float&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;g&lt;/span&gt;&lt;/tt&gt; (string) [const char **, SIP_SSIZE_T *]&lt;/dt&gt;
-&lt;dd&gt;Convert a Python string to a C/C++ character array and its length.  If
-the Python object is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt; then the array and length are &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt;
-and zero respectively.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;g&lt;/span&gt;&lt;/tt&gt; (string/bytes) [const char **, SIP_SSIZE_T *]&lt;/dt&gt;
+&lt;dd&gt;Convert a Python v2 string object or a Python v3 bytes object to a
+C/C++ character array and its length.  If the Python object is
+&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt; then the array and length are &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt; and zero
+respectively.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;h&lt;/span&gt;&lt;/tt&gt; (integer) [short *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python integer to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;i&lt;/span&gt;&lt;/tt&gt; (integer) [int *]&lt;/dt&gt;
@@ -4988,9 +5045,10 @@ and zero respectively.&lt;/dd&gt;
 &lt;dd&gt;Convert a Python long to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;o&lt;/span&gt;&lt;/tt&gt; (long) [unsigned long long *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python long to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;long&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
-&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;s&lt;/span&gt;&lt;/tt&gt; (string) [const char **]&lt;/dt&gt;
-&lt;dd&gt;Convert a Python string to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string.  If the
-Python object is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt; then the string is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
+&lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;s&lt;/span&gt;&lt;/tt&gt; (string/bytes) [const char **]&lt;/dt&gt;
+&lt;dd&gt;Convert a Python v2 string object or a Python v3 bytes object to a
+C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string.  If the Python object is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_None&lt;/span&gt;&lt;/tt&gt;
+then the string is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;t&lt;/span&gt;&lt;/tt&gt; (long) [unsigned short *]&lt;/dt&gt;
 &lt;dd&gt;Convert a Python long to a C/C++ &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;short&lt;/span&gt;&lt;/tt&gt;.&lt;/dd&gt;
 &lt;dt&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;u&lt;/span&gt;&lt;/tt&gt; (long) [unsigned int *]&lt;/dt&gt;
@@ -5062,7 +5120,7 @@ The Python object may not be &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Py_N
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id225&quot; id=&quot;sipregisterattributegetter&quot; name=&quot;sipregisterattributegetter&quot;&gt;9.52&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterAttributeGetter()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id227&quot; id=&quot;sipregisterattributegetter&quot; name=&quot;sipregisterattributegetter&quot;&gt;9.52&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterAttributeGetter()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipRegisterAttributeGetter(const sipTypeDef *td, sipAttrGetterFunc getter)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This registers a handler that will called just before SIP needs to get an
@@ -5087,7 +5145,7 @@ to be populated.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id226&quot; id=&quot;sipregisterpytype&quot; name=&quot;sipregisterpytype&quot;&gt;9.53&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterPyType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id228&quot; id=&quot;sipregisterpytype&quot; name=&quot;sipregisterpytype&quot;&gt;9.53&amp;nbsp;&amp;nbsp;&amp;nbsp;sipRegisterPyType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipRegisterPyType(PyTypeObject *type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This registers a type object that can be used as the meta-type or
@@ -5098,7 +5156,7 @@ there was an error registering the type, 0 is returned otherwise.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id227&quot; id=&quot;sipreleaseinstance&quot; name=&quot;sipreleaseinstance&quot;&gt;9.54&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseInstance()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id229&quot; id=&quot;sipreleaseinstance&quot; name=&quot;sipreleaseinstance&quot;&gt;9.54&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseInstance()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipReleaseInstance(void *cpp, sipWrapperType *type, int state)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This destroys a wrapped C/C++ instance if it was a temporary instance.  It
@@ -5112,7 +5170,7 @@ state of the instance.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id228&quot; id=&quot;sipreleasemappedtype&quot; name=&quot;sipreleasemappedtype&quot;&gt;9.55&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseMappedType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id230&quot; id=&quot;sipreleasemappedtype&quot; name=&quot;sipreleasemappedtype&quot;&gt;9.55&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseMappedType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipReleaseMappedType(void *cpp, const sipMappedType *mt, int state)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This destroys a wrapped C/C++ mapped type if it was a temporary instance.
@@ -5126,7 +5184,7 @@ describes the state of the instance.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id229&quot; id=&quot;sipreleasetype&quot; name=&quot;sipreleasetype&quot;&gt;9.56&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseType()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id231&quot; id=&quot;sipreleasetype&quot; name=&quot;sipreleasetype&quot;&gt;9.56&amp;nbsp;&amp;nbsp;&amp;nbsp;sipReleaseType()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipReleaseType(void *cpp, const sipTypeDef *td, int state)&lt;/dt&gt;
 &lt;dd&gt;This destroys a wrapped C/C++ or mapped type instance if it was a temporary
@@ -5136,7 +5194,7 @@ the generated type structure.  &lt;em&gt;state&lt;/em&gt; describes the state of the instanc
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id230&quot; id=&quot;sipresolvetypedef&quot; name=&quot;sipresolvetypedef&quot;&gt;9.57&amp;nbsp;&amp;nbsp;&amp;nbsp;sipResolveTypedef()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id232&quot; id=&quot;sipresolvetypedef&quot; name=&quot;sipresolvetypedef&quot;&gt;9.57&amp;nbsp;&amp;nbsp;&amp;nbsp;sipResolveTypedef()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const char *sipResolveTypedef(const char *name)&lt;/dt&gt;
 &lt;dd&gt;If &lt;em&gt;name&lt;/em&gt; refers to a C/C++ typedef then the value of that typedef is
@@ -5144,7 +5202,7 @@ returned, otherwise &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;NULL&lt;/span&gt;&lt;/
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id231&quot; id=&quot;sipsimplewrapper&quot; name=&quot;sipsimplewrapper&quot;&gt;9.58&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id233&quot; id=&quot;sipsimplewrapper&quot; name=&quot;sipsimplewrapper&quot;&gt;9.58&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C structure that represents a Python wrapped instance whose type is
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.simplewrapper&lt;/span&gt;&lt;/tt&gt;.  It is an extension of the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyObject&lt;/span&gt;&lt;/tt&gt; structure and so
 may be safely cast to it.&lt;/p&gt;
@@ -5153,13 +5211,13 @@ be used for any purpose by handwritten code and will automatically be garbage
 collected at the appropriate time.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id232&quot; id=&quot;sipsimplewrapper-type&quot; name=&quot;sipsimplewrapper-type&quot;&gt;9.59&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper_Type&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id234&quot; id=&quot;sipsimplewrapper-type&quot; name=&quot;sipsimplewrapper-type&quot;&gt;9.59&amp;nbsp;&amp;nbsp;&amp;nbsp;sipSimpleWrapper_Type&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a pointer to a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; structure that is the type of a
 &lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper&quot;&gt;sipSimpleWrapper&lt;/a&gt; structure and is the C implementation of
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.simplewrapper&lt;/span&gt;&lt;/tt&gt;.  It may be safely cast to &lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot;&gt;sipWrapperType&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id233&quot; id=&quot;sipstringtypeclassmap&quot; name=&quot;sipstringtypeclassmap&quot;&gt;9.60&amp;nbsp;&amp;nbsp;&amp;nbsp;sipStringTypeClassMap&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id235&quot; id=&quot;sipstringtypeclassmap&quot; name=&quot;sipstringtypeclassmap&quot;&gt;9.60&amp;nbsp;&amp;nbsp;&amp;nbsp;sipStringTypeClassMap&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This C structure is used with &lt;a class=&quot;reference&quot; href=&quot;#sipmapstringtoclass&quot;&gt;sipMapStringToClass()&lt;/a&gt; to define a mapping
 between &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;'\0'&lt;/span&gt;&lt;/tt&gt; terminated string based RTTI and &lt;a class=&quot;reference&quot; href=&quot;#generated-type-objects&quot;&gt;generated type objects&lt;/a&gt;.
 The structure elements are as follows.&lt;/p&gt;
@@ -5172,7 +5230,7 @@ The structure elements are as follows.&lt;/p&gt;
 &lt;p&gt;This is deprecated from SIP v4.8.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id234&quot; id=&quot;siptransferback&quot; name=&quot;siptransferback&quot;&gt;9.61&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBack()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id236&quot; id=&quot;siptransferback&quot; name=&quot;siptransferback&quot;&gt;9.61&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBack()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipTransferBack(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;This transfers ownership of a Python wrapped instance to Python (see
@@ -5182,7 +5240,7 @@ collector with another instance is removed.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id235&quot; id=&quot;siptransferbreak&quot; name=&quot;siptransferbreak&quot;&gt;9.62&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBreak()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id237&quot; id=&quot;siptransferbreak&quot; name=&quot;siptransferbreak&quot;&gt;9.62&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferBreak()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipTransferBreak(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;Any association of a Python wrapped instance with regard to the cyclic
@@ -5191,7 +5249,7 @@ instance.  Ownership of the instance should be with C++.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id236&quot; id=&quot;siptransferto&quot; name=&quot;siptransferto&quot;&gt;9.63&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferTo()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id238&quot; id=&quot;siptransferto&quot; name=&quot;siptransferto&quot;&gt;9.63&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTransferTo()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;void sipTransferTo(PyObject *obj, PyObject *owner)&lt;/dt&gt;
 &lt;dd&gt;This transfers ownership of a Python wrapped instance to C++ (see
@@ -5205,7 +5263,7 @@ destructor is always transfered to C++.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id237&quot; id=&quot;siptypeaspytypeobject&quot; name=&quot;siptypeaspytypeobject&quot;&gt;9.64&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeAsPyTypeObject()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id239&quot; id=&quot;siptypeaspytypeobject&quot; name=&quot;siptypeaspytypeobject&quot;&gt;9.64&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeAsPyTypeObject()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;PyTypeObject *sipTypeAsPyTypeObject(sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a pointer to the Python type object that SIP creates from a
@@ -5218,7 +5276,7 @@ returned.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id238&quot; id=&quot;siptypefrompytypeobject&quot; name=&quot;siptypefrompytypeobject&quot;&gt;9.65&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeFromPyTypeObject()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id240&quot; id=&quot;siptypefrompytypeobject&quot; name=&quot;siptypefrompytypeobject&quot;&gt;9.65&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeFromPyTypeObject()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const sipTypeDef *sipTypeFromPyTypeObject(PyTypeObject *py_type)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a pointer to the SIP generated type structure for a Python
@@ -5229,7 +5287,7 @@ will be returned.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id239&quot; id=&quot;siptypeisclass&quot; name=&quot;siptypeisclass&quot;&gt;9.66&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsClass()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id241&quot; id=&quot;siptypeisclass&quot; name=&quot;siptypeisclass&quot;&gt;9.66&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsClass()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipTypeIsClass(sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a non-zero value if the generated type structure refers to a
@@ -5237,7 +5295,7 @@ C structure or C++ class.  &lt;em&gt;td&lt;/em&gt; is the type structure.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id240&quot; id=&quot;siptypeisenum&quot; name=&quot;siptypeisenum&quot;&gt;9.67&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsEnum()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id242&quot; id=&quot;siptypeisenum&quot; name=&quot;siptypeisenum&quot;&gt;9.67&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsEnum()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipTypeIsEnum(sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a non-zero value if the generated type structure refers to a
@@ -5245,7 +5303,7 @@ named enum.  &lt;em&gt;td&lt;/em&gt; is the type structure.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id241&quot; id=&quot;siptypeismapped&quot; name=&quot;siptypeismapped&quot;&gt;9.68&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsMapped()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id243&quot; id=&quot;siptypeismapped&quot; name=&quot;siptypeismapped&quot;&gt;9.68&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsMapped()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipTypeIsMapped(sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a non-zero value if the generated type structure refers to a
@@ -5253,7 +5311,7 @@ mapped type.  &lt;em&gt;td&lt;/em&gt; is the type structure.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id242&quot; id=&quot;siptypeisnamespace&quot; name=&quot;siptypeisnamespace&quot;&gt;9.69&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsNamespace()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id244&quot; id=&quot;siptypeisnamespace&quot; name=&quot;siptypeisnamespace&quot;&gt;9.69&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeIsNamespace()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipTypeIsNamespace(sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns a non-zero value if the generated type structure refers to a
@@ -5261,7 +5319,7 @@ C++ namespace.  &lt;em&gt;td&lt;/em&gt; is the type structure.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id243&quot; id=&quot;siptypename&quot; name=&quot;siptypename&quot;&gt;9.70&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeName()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id245&quot; id=&quot;siptypename&quot; name=&quot;siptypename&quot;&gt;9.70&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeName()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const char *sipTypeName(const sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns the C/C++ name of a SIP generated type.  &lt;em&gt;td&lt;/em&gt; is the type
@@ -5269,7 +5327,7 @@ structure.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id244&quot; id=&quot;siptypescope&quot; name=&quot;siptypescope&quot;&gt;9.71&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeScope()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id246&quot; id=&quot;siptypescope&quot; name=&quot;siptypescope&quot;&gt;9.71&amp;nbsp;&amp;nbsp;&amp;nbsp;sipTypeScope()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;const sipTypeDef *sipTypeScope(const sipTypeDef *td)&lt;/dt&gt;
 &lt;dd&gt;This returns the SIP generated type structure of the scope of another
@@ -5278,18 +5336,18 @@ scope.&lt;/dd&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id245&quot; id=&quot;sipvoidptr-type&quot; name=&quot;sipvoidptr-type&quot;&gt;9.72&amp;nbsp;&amp;nbsp;&amp;nbsp;sipVoidPtr_Type&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id247&quot; id=&quot;sipvoidptr-type&quot; name=&quot;sipvoidptr-type&quot;&gt;9.72&amp;nbsp;&amp;nbsp;&amp;nbsp;sipVoidPtr_Type&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a pointer to a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; structure that is the type of a
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyObject&lt;/span&gt;&lt;/tt&gt; structure that is used to wrap a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;*&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id246&quot; id=&quot;sipwrapper&quot; name=&quot;sipwrapper&quot;&gt;9.73&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id248&quot; id=&quot;sipwrapper&quot; name=&quot;sipwrapper&quot;&gt;9.73&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C structure that represents a Python wrapped instance whose type is
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.wrapper&lt;/span&gt;&lt;/tt&gt;.  It is an extension of the &lt;a class=&quot;reference&quot; href=&quot;#sipsimplewrapper&quot;&gt;sipSimpleWrapper&lt;/a&gt; and
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyObject&lt;/span&gt;&lt;/tt&gt; structures and so may be safely cast to both.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id247&quot; id=&quot;sipwrapper-check&quot; name=&quot;sipwrapper-check&quot;&gt;9.74&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Check()&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id249&quot; id=&quot;sipwrapper-check&quot; name=&quot;sipwrapper-check&quot;&gt;9.74&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Check()&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;int sipWrapper_Check(PyObject *obj)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This returns a non-zero value if a Python object is a wrapped instance.
@@ -5302,25 +5360,25 @@ PyObject_TypeCheck(obj, sipWrapper_Type)
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id248&quot; id=&quot;sipwrapper-type&quot; name=&quot;sipwrapper-type&quot;&gt;9.75&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Type&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id250&quot; id=&quot;sipwrapper-type&quot; name=&quot;sipwrapper-type&quot;&gt;9.75&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapper_Type&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a pointer to a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; structure that is the type of a
 &lt;a class=&quot;reference&quot; href=&quot;#sipwrapper&quot;&gt;sipWrapper&lt;/a&gt; structure and is the C implementation of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.wrapper&lt;/span&gt;&lt;/tt&gt;.  It may
 be safely cast to &lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot;&gt;sipWrapperType&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id249&quot; id=&quot;sipwrappertype&quot; name=&quot;sipwrappertype&quot;&gt;9.76&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id251&quot; id=&quot;sipwrappertype&quot; name=&quot;sipwrappertype&quot;&gt;9.76&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a C structure that represents a SIP generated type object.  It is an
 extension of the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; structure (which is itself an extension of
 the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyObject&lt;/span&gt;&lt;/tt&gt; structure) and so may be safely cast to &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; (and
 &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyObject&lt;/span&gt;&lt;/tt&gt;).&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id250&quot; id=&quot;sipwrappertype-type&quot; name=&quot;sipwrappertype-type&quot;&gt;9.77&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType_Type&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id252&quot; id=&quot;sipwrappertype-type&quot; name=&quot;sipwrappertype-type&quot;&gt;9.77&amp;nbsp;&amp;nbsp;&amp;nbsp;sipWrapperType_Type&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;This is a pointer to a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;PyTypeObject&lt;/span&gt;&lt;/tt&gt; structure that is the type of a
 &lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot;&gt;sipWrapperType&lt;/a&gt; structure and is the C implementation of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip.wrappertype&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id251&quot; id=&quot;generated-type-structures&quot; name=&quot;generated-type-structures&quot;&gt;9.78&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Structures&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id253&quot; id=&quot;generated-type-structures&quot; name=&quot;generated-type-structures&quot;&gt;9.78&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Structures&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;SIP generates an opaque type structure for each C structure, C++ class, C++
 namespace, named enum or mapped type being wrapped.  These are &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipTypeDef&lt;/span&gt;&lt;/tt&gt;
 structures and are used extensively by the SIP API.&lt;/p&gt;
@@ -5336,7 +5394,7 @@ pointer to a structure for a mapped type is to use &lt;a class=&quot;reference&quot; href=&quot;#s
 &lt;p&gt;The type structures of all imported types are available to handwritten code.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id252&quot; id=&quot;generated-type-objects&quot; name=&quot;generated-type-objects&quot;&gt;9.79&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Objects&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id254&quot; id=&quot;generated-type-objects&quot; name=&quot;generated-type-objects&quot;&gt;9.79&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Type Objects&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;SIP generates a &lt;a class=&quot;reference&quot; href=&quot;#sipwrappertype&quot;&gt;sipWrapperType&lt;/a&gt; type object for each C structure or C++ class
 being wrapped.&lt;/p&gt;
 &lt;p&gt;These objects are named with the structure or class name prefixed by
@@ -5347,7 +5405,7 @@ generated type structure (see &lt;a class=&quot;reference&quot; href=&quot;#generated-type-structu
 &lt;a class=&quot;reference&quot; href=&quot;#siptypeaspytypeobject&quot;&gt;sipTypeAsPyTypeObject()&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id253&quot; id=&quot;generated-named-enum-type-objects&quot; name=&quot;generated-named-enum-type-objects&quot;&gt;9.80&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Named Enum Type Objects&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id255&quot; id=&quot;generated-named-enum-type-objects&quot; name=&quot;generated-named-enum-type-objects&quot;&gt;9.80&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Named Enum Type Objects&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;SIP generates a type object for each named enum being wrapped.  These are
 PyTypeObject structures.  (Anonymous enums are wrapped as Python integers.)&lt;/p&gt;
 &lt;p&gt;These objects are named with the fully qualified enum name (i.e. including any
@@ -5358,7 +5416,7 @@ generated type structure (see &lt;a class=&quot;reference&quot; href=&quot;#generated-type-structu
 &lt;a class=&quot;reference&quot; href=&quot;#siptypeaspytypeobject&quot;&gt;sipTypeAsPyTypeObject()&lt;/a&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id254&quot; id=&quot;generated-derived-classes&quot; name=&quot;generated-derived-classes&quot;&gt;9.81&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Derived Classes&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id256&quot; id=&quot;generated-derived-classes&quot; name=&quot;generated-derived-classes&quot;&gt;9.81&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Derived Classes&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;For most C++ classes being wrapped SIP generates a derived class with the same
 name prefixed by &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sip&lt;/span&gt;&lt;/tt&gt;.  For example, the derived class for class &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Klass&lt;/span&gt;&lt;/tt&gt;
 is &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipKlass&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
@@ -5371,7 +5429,7 @@ exception is that handwritten constructor code specified using the
 has the same C++ signature) rather then the wrapped class's constructor.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id255&quot; id=&quot;generated-exception-objects&quot; name=&quot;generated-exception-objects&quot;&gt;9.82&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Exception Objects&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id257&quot; id=&quot;generated-exception-objects&quot; name=&quot;generated-exception-objects&quot;&gt;9.82&amp;nbsp;&amp;nbsp;&amp;nbsp;Generated Exception Objects&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;SIP generates a Python object for each exception defined with the &lt;cite&gt;%Exception_&lt;/cite&gt;
 directive.&lt;/p&gt;
 &lt;p&gt;These objects are named with the fully qualified exception name (i.e. including
@@ -5382,7 +5440,7 @@ object for enum &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Except&lt;/span&gt;&lt;/tt
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id256&quot; id=&quot;using-the-sip-api-when-embedding&quot; name=&quot;using-the-sip-api-when-embedding&quot;&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP API when Embedding&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id258&quot; id=&quot;using-the-sip-api-when-embedding&quot; name=&quot;using-the-sip-api-when-embedding&quot;&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP API when Embedding&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;The SIP API described in the previous section is intended to be called from
 handwritten code in SIP generated modules.  However it is also often necessary
 to call it from C or C++ applications that embed the Python interpreter and
@@ -5441,7 +5499,7 @@ const sipAPIDef *get_sip_api()
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id257&quot; id=&quot;using-the-sip-module-in-applications&quot; name=&quot;using-the-sip-module-in-applications&quot;&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP Module in Applications&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id259&quot; id=&quot;using-the-sip-module-in-applications&quot; name=&quot;using-the-sip-module-in-applications&quot;&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;Using the SIP Module in Applications&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;The main purpose of the SIP module is to provide functionality common to all
 SIP generated bindings.  It is loaded automatically and most of the time you
 will completely ignore it.  However, it does expose some functionality that can
@@ -5519,11 +5577,11 @@ set if the memory is writeable.  If it is not specified, and
 &lt;dt&gt;ascobject(self)&lt;/dt&gt;
 &lt;dd&gt;This returns the address as a Python CObject.&lt;/dd&gt;
 &lt;dt&gt;asstring(self, size=-1)&lt;/dt&gt;
-&lt;dd&gt;This returns a copy of the block of memory as a Python string.  If
-&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;size&lt;/span&gt;&lt;/tt&gt; is given then it specifies the number of bytes to copy.  If
-it is not given (or is negative) then the size associated with the
-address is used.  If there is no associated size then an exception is
-raised.&lt;/dd&gt;
+&lt;dd&gt;This returns a copy of the block of memory as a Python v2 string object
+or a Python v3 bytes object.  If &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;size&lt;/span&gt;&lt;/tt&gt; is given then it specifies
+the number of bytes to copy.  If it is not given (or is negative) then
+the size associated with the address is used.  If there is no
+associated size then an exception is raised.&lt;/dd&gt;
 &lt;dt&gt;getsize(self)&lt;/dt&gt;
 &lt;dd&gt;This returns the size associated with the address.  It will be
 negative if there is no associated size.&lt;/dd&gt;
@@ -5549,7 +5607,7 @@ the instance represented as a number.  &lt;em&gt;type&lt;/em&gt; is the type of the object
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id258&quot; id=&quot;the-sip-build-system&quot; name=&quot;the-sip-build-system&quot;&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;The SIP Build System&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id260&quot; id=&quot;the-sip-build-system&quot; name=&quot;the-sip-build-system&quot;&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;The SIP Build System&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;The purpose of the build system is to make it easy for you to write
 configuration scripts in Python for your own bindings.  The build system takes
 care of the details of particular combinations of platform and compiler.  It
@@ -5570,7 +5628,7 @@ classes intended to be used by the configuration scripts of bindings built on
 top of PyQt.  The SIP build system includes facilities that do a lot of the
 work of creating these additional configuration modules.&lt;/p&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id259&quot; id=&quot;sipconfig-functions&quot; name=&quot;sipconfig-functions&quot;&gt;12.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Functions&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id261&quot; id=&quot;sipconfig-functions&quot; name=&quot;sipconfig-functions&quot;&gt;12.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Functions&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;create_config_module(module, template, content, macros=None)&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This creates a configuration module (e.g. &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;pyqtconfig&lt;/span&gt;&lt;/tt&gt;) from a template
@@ -5678,7 +5736,7 @@ string.&lt;/p&gt;
 &lt;/dl&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id260&quot; id=&quot;sipconfig-classes&quot; name=&quot;sipconfig-classes&quot;&gt;12.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Classes&lt;/a&gt;&lt;/h2&gt;
+&lt;h2&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id262&quot; id=&quot;sipconfig-classes&quot; name=&quot;sipconfig-classes&quot;&gt;12.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sipconfig&lt;/span&gt;&lt;/tt&gt; Classes&lt;/a&gt;&lt;/h2&gt;
 &lt;dl class=&quot;docutils&quot;&gt;
 &lt;dt&gt;Configuration&lt;/dt&gt;
 &lt;dd&gt;&lt;p class=&quot;first&quot;&gt;This class encapsulates configuration values that can be accessed as
@@ -6066,7 +6124,7 @@ extension module.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id261&quot; id=&quot;building-your-extension-with-distutils&quot; name=&quot;building-your-extension-with-distutils&quot;&gt;13&amp;nbsp;&amp;nbsp;&amp;nbsp;Building Your Extension with distutils&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id263&quot; id=&quot;building-your-extension-with-distutils&quot; name=&quot;building-your-extension-with-distutils&quot;&gt;13&amp;nbsp;&amp;nbsp;&amp;nbsp;Building Your Extension with distutils&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;To build the example in &lt;a class=&quot;reference&quot; href=&quot;#a-simple-c-example&quot;&gt;A Simple C++ Example&lt;/a&gt; using distutils, it is
 sufficient to create a standard &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;setup.py&lt;/span&gt;&lt;/tt&gt;, listing &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;word.sip&lt;/span&gt;&lt;/tt&gt; among the
 files to build, and hook-up SIP into distutils:&lt;/p&gt;
@@ -6089,7 +6147,7 @@ special line which is needed so that SIP can see and process &lt;tt class=&quot;docutils
 Then, running &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;setup.py&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;build&lt;/span&gt;&lt;/tt&gt; will build our extension module.&lt;/p&gt;
 &lt;/div&gt;
 &lt;div class=&quot;section&quot;&gt;
-&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id262&quot; id=&quot;builtin-modules-and-custom-interpreters&quot; name=&quot;builtin-modules-and-custom-interpreters&quot;&gt;14&amp;nbsp;&amp;nbsp;&amp;nbsp;Builtin Modules and Custom Interpreters&lt;/a&gt;&lt;/h1&gt;
+&lt;h1&gt;&lt;a class=&quot;toc-backref&quot; href=&quot;#id264&quot; id=&quot;builtin-modules-and-custom-interpreters&quot; name=&quot;builtin-modules-and-custom-interpreters&quot;&gt;14&amp;nbsp;&amp;nbsp;&amp;nbsp;Builtin Modules and Custom Interpreters&lt;/a&gt;&lt;/h1&gt;
 &lt;p&gt;Sometimes you want to create a custom Python interpreter with some modules
 built in to the interpreter itself rather than being dynamically loaded.  To
 do this the module must be created as a static library and linked with a</diff>
      <filename>doc/sipref.html</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@
 -----------------
 
 :Contact:   info@riverbankcomputing.com
-:Version:   4.8-snapshot-20090311
+:Version:   4.8-snapshot-20090317
 :Copyright: Copyright (c) 2009 Riverbank Computing Limited
 
 .. contents::
@@ -17,7 +17,7 @@
 Introduction
 ============
 
-This is the reference guide for SIP 4.8-snapshot-20090311.  SIP is a tool for
+This is the reference guide for SIP 4.8-snapshot-20090317.  SIP is a tool for
 automatically generating `Python &lt;http://www.python.org&gt;`__ bindings for C and
 C++ libraries.  SIP was originally developed in 1998 for
 `PyQt &lt;http://www.riverbankcomputing.com/software/pyqt/&gt;`__ - the Python
@@ -1185,9 +1185,10 @@ file.
 
     *super-classes* ::= *name* [``,`` *super-classes*]
 
-    *class-line* ::= [*class-statement* | `%BIGetReadBufferCode`_ |
-            `%BIGetWriteBufferCode`_ | `%BIGetSegCountCode`_ |
-            `%BIGetCharBufferCode`_ | `%ConvertToSubClassCode`_ |
+    *class-line* ::= [*class-statement* | `%BIGetBufferCode`_ |
+            `%BIGetReadBufferCode`_ | `%BIGetWriteBufferCode`_ |
+            `%BIGetSegCountCode`_ | `%BIGetCharBufferCode`_ |
+            `%BIReleaseBufferCode` | `%ConvertToSubClassCode`_ |
             `%ConvertToTypeCode`_ | `%GCClearCode`_ | `%GCTraverseCode`_ |
             `%PickleCode`_ | `%TypeCode`_ | `%TypeHeaderCode`_ |
             *constructor* | *destructor* | *method* | *static-method* |
@@ -1577,6 +1578,42 @@ For example::
     %End
 
 
+%BIGetBufferCode
+----------------
+
+.. parsed-literal::
+
+    %BIGetBufferCode
+        *code*
+    %End
+
+This directive (along with `%BIReleaseBufferCode`_) is used to specify code
+that implements the buffer interface of Python v3.  If Python v2 is being used
+then this is ignored.
+
+The following variables are made available to the handwritten code:
+
+Py_buffer \*sipBuffer
+    This is a pointer to the Python buffer structure that the handwritten code
+    must populate.
+
+*type* \*sipCpp
+    This is a pointer to the structure or class instance.  Its *type* is a
+    pointer to the structure or class.
+
+int sipFlags
+    These are the flags that specify what elements of the ``sipBuffer``
+    structure must be populated.
+
+int sipRes
+    The handwritten code should set this to 0 if there was no error or -1 if
+    there was an error.
+
+PyObject \*sipSelf
+    This is the Python object that wraps the the structure or class instance,
+    i.e. ``self``.
+
+
 %BIGetCharBufferCode
 --------------------
 
@@ -1587,10 +1624,8 @@ For example::
     %End
 
 This directive (along with `%BIGetReadBufferCode`_, `%BIGetSegCountCode`_ and
-`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
-buffer interface.  See the section `Buffer Object Structures
-&lt;http://www.python.org/dev/doc/devel/api/buffer-structs.html&gt;`__ for the
-details.
+`%BIGetWriteBufferCode`_) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.
 
 The following variables are made available to the handwritten code:
 
@@ -1623,8 +1658,8 @@ PyObject \*sipSelf
     %End
 
 This directive (along with `%BIGetCharBufferCode`_, `%BIGetSegCountCode`_ and
-`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
-buffer interface.
+`%BIGetWriteBufferCode`_) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.
 
 The following variables are made available to the handwritten code:
 
@@ -1657,8 +1692,8 @@ PyObject \*sipSelf
     %End
 
 This directive (along with `%BIGetCharBufferCode`_, `%BIGetReadBufferCode`_ and
-`%BIGetWriteBufferCode`_) is used to specify code that implements Python's
-buffer interface.
+`%BIGetWriteBufferCode`_) is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.
 
 The following variables are made available to the handwritten code:
 
@@ -1689,8 +1724,8 @@ PyObject \*sipSelf
     %End
 
 This directive (along with `%BIGetCharBufferCode`_, `%BIGetReadBufferCode`_
-and `%BIGetSegCountCode`_ is used to specify code that implements Python's
-buffer interface.
+and `%BIGetSegCountCode`_ is used to specify code that implements the buffer
+interface of Python v2.  If Python v3 is being used then this is ignored.
 
 The following variables are made available to the handwritten code:
 
@@ -1713,6 +1748,33 @@ PyObject \*sipSelf
     i.e. ``self``.
 
 
+%BIReleaseBufferCode
+--------------------
+
+.. parsed-literal::
+
+    %BIReleaseBufferCode
+        *code*
+    %End
+
+This directive (along with `%BIGetBufferCode`_) is used to specify code that
+implements the buffer interface of Python v3.  If Python v2 is being used then
+this is ignored.
+
+The following variables are made available to the handwritten code:
+
+Py_buffer \*sipBuffer
+    This is a pointer to the Python buffer structure.
+
+*type* \*sipCpp
+    This is a pointer to the structure or class instance.  Its *type* is a
+    pointer to the structure or class.
+
+PyObject \*sipSelf
+    This is the Python object that wraps the the structure or class instance,
+    i.e. ``self``.
+
+
 %CModule
 --------
 
@@ -2634,7 +2696,7 @@ For example::
 
 This directive is used to specify handwritten code that is embedded in-line
 in the generated module initialisation code after the SIP module has been
-imported but before the module itself has been intialised.
+imported but before the module itself has been initialised.
 
 It is typically used to call `sipRegisterPyType()`_.
 
@@ -4189,8 +4251,9 @@ PyObject \*sipBuildResult(int \*iserr, const char \*format, ...)
     ``b`` (boolean) [int]
         Convert a C/C++ ``int`` to a Python boolean.
 
-    ``c`` (string) [char]
-        Convert a C/C++ ``char`` to a Python string.
+    ``c`` (string/bytes) [char]
+        Convert a C/C++ ``char`` to a Python v2 string object or a Python v3
+        bytes object.
 
     ``d`` (float) [double]
         Convert a C/C++ ``double`` to a Python floating point number.
@@ -4201,10 +4264,10 @@ PyObject \*sipBuildResult(int \*iserr, const char \*format, ...)
     ``f`` (float) [float]
         Convert a C/C++ ``float`` to a Python floating point number.
 
-    ``g`` (string) [char \*, SIP_SSIZE_T]
-        Convert a C/C++ character array and its length to a Python string.  If
-        the array is ``NULL`` then the length is ignored and the result is
-        ``Py_None``.
+    ``g`` (string/bytes) [char \*, SIP_SSIZE_T]
+        Convert a C/C++ character array and its length to a Python v2 string
+        object or a Python v3 bytes object.  If the array is ``NULL`` then the
+        length is ignored and the result is ``Py_None``.
 
     ``h`` (integer) [short]
         Convert a C/C++ ``short`` to a Python integer.
@@ -4224,9 +4287,10 @@ PyObject \*sipBuildResult(int \*iserr, const char \*format, ...)
     ``o`` (long) [unsigned long long]
         Convert a C/C++ ``unsigned long long`` to a Python long.
 
-    ``s`` (string) [char \*]
-        Convert a C/C++ ``'\0'`` terminated string to a Python string.  If the
-        string pointer is ``NULL`` then the result is ``Py_None``.
+    ``s`` (string/bytes) [char \*]
+        Convert a C/C++ ``'\0'`` terminated string to a Python v2 string object
+        or a Python v3 bytes object.  If the string pointer is ``NULL`` then
+        the result is ``Py_None``.
 
     ``t`` (long) [unsigned short]
         Convert a C/C++ ``unsigned short`` to a Python long.
@@ -4917,8 +4981,9 @@ int sipParseResult(int \*iserr, PyObject \*method, PyObject \*result, const char
     ``b`` (integer) [bool \*]
         Convert a Python integer to a C/C++ ``bool``.
 
-    ``c`` (string) [char \*]
-        Convert a Python string of length 1 to a C/C++ ``char``.
+    ``c`` (string/bytes) [char \*]
+        Convert a Python v2 string object or a Python v3 bytes object of length
+        1 to a C/C++ ``char``.
 
     ``d`` (float) [double \*]
         Convert a Python floating point number to a C/C++ ``double``.
@@ -4929,10 +4994,11 @@ int sipParseResult(int \*iserr, PyObject \*method, PyObject \*result, const char
     ``f`` (float) [float \*]
         Convert a Python floating point number to a C/C++ ``float``.
 
-    ``g`` (string) [const char \*\*, SIP_SSIZE_T \*]
-        Convert a Python string to a C/C++ character array and its length.  If
-        the Python object is ``Py_None`` then the array and length are ``NULL``
-        and zero respectively.
+    ``g`` (string/bytes) [const char \*\*, SIP_SSIZE_T \*]
+        Convert a Python v2 string object or a Python v3 bytes object to a
+        C/C++ character array and its length.  If the Python object is
+        ``Py_None`` then the array and length are ``NULL`` and zero
+        respectively.
 
     ``h`` (integer) [short \*]
         Convert a Python integer to a C/C++ ``short``.
@@ -4952,9 +5018,10 @@ int sipParseResult(int \*iserr, PyObject \*method, PyObject \*result, const char
     ``o`` (long) [unsigned long long \*]
         Convert a Python long to a C/C++ ``unsigned long long``.
 
-    ``s`` (string) [const char \*\*]
-        Convert a Python string to a C/C++ ``'\0'`` terminated string.  If the
-        Python object is ``Py_None`` then the string is ``NULL``.
+    ``s`` (string/bytes) [const char \*\*]
+        Convert a Python v2 string object or a Python v3 bytes object to a
+        C/C++ ``'\0'`` terminated string.  If the Python object is ``Py_None``
+        then the string is ``NULL``.
 
     ``t`` (long) [unsigned short \*]
         Convert a Python long to a C/C++ ``unsigned short``.
@@ -5554,11 +5621,11 @@ voidptr
         This returns the address as a Python CObject.
 
     asstring(self, size=-1)
-        This returns a copy of the block of memory as a Python string.  If
-        ``size`` is given then it specifies the number of bytes to copy.  If
-        it is not given (or is negative) then the size associated with the
-        address is used.  If there is no associated size then an exception is
-        raised.
+        This returns a copy of the block of memory as a Python v2 string object
+        or a Python v3 bytes object.  If ``size`` is given then it specifies
+        the number of bytes to copy.  If it is not given (or is negative) then
+        the size associated with the address is used.  If there is no
+        associated size then an exception is raised.
 
     getsize(self)
         This returns the size associated with the address.  It will be</diff>
      <filename>doc/sipref.txt</filename>
    </modified>
    <modified>
      <diff>@@ -73,6 +73,8 @@ static void generateComponentCpp(sipSpec *pt, const char *codeDir,
 static void generateSipImport(moduleDef *mod, FILE *fp);
 static void generateSipImportVariables(FILE *fp);
 static void generateModInitStart(moduleDef *mod, int gen_c, FILE *fp);
+static void generateModDefinition(moduleDef *mod, const char *methods,
+        FILE *fp);
 static void generateIfaceCpp(sipSpec *, ifaceFileDef *, const char *,
         const char *, FILE *);
 static void generateMappedTypeCpp(mappedTypeDef *mtd, sipSpec *pt, FILE *fp);
@@ -225,6 +227,7 @@ static const char *resultOwner(overDef *od);
 static void prCachedName(FILE *fp, nameDef *nd, const char *prefix);
 static void generateSignalTableEntry(classDef *cd, overDef *od, FILE *fp);
 static void generateTypesTable(sipSpec *pt, moduleDef *mod, FILE *fp);
+static int py2SlotOnly(slotType st);
 
 
 /*
@@ -517,7 +520,7 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
 &quot;#define %n %d\n&quot;
 &quot;#define %N &amp;sipStrings_%s[%d]\n&quot;
             , nd, (int)nd-&gt;offset
-            , nd, mname, (int)nd-&gt;offset);
+            , nd, pt-&gt;module-&gt;name, (int)nd-&gt;offset);
     }
 
     prcode(fp,
@@ -707,7 +710,7 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
 &quot;\n&quot;
 &quot;/* The strings used by this module. */\n&quot;
 &quot;extern const char sipStrings_%s[];\n&quot;
-        , mname);
+        , pt-&gt;module-&gt;name);
 
     /* The unscoped enum macros. */
     generateEnumMacros(pt, mod, NULL, fp);
@@ -814,11 +817,21 @@ static void generateCompositeCpp(sipSpec *pt, const char *codeDir)
         );
 
     generateModInitStart(pt-&gt;module, TRUE, fp);
+    generateModDefinition(pt-&gt;module, &quot;NULL&quot;, fp);
 
     prcode(fp,
+&quot;\n&quot;
 &quot;    PyObject *sipModule, *sipModuleDict;\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    sipModule = PyModule_Create(&amp;sip_module_def);\n&quot;
+&quot;#else\n&quot;
 &quot;    sipModule = Py_InitModule(\&quot;%s\&quot;, 0);\n&quot;
+&quot;#endif\n&quot;
+&quot;\n&quot;
+&quot;    if (sipModule == NULL)\n&quot;
+&quot;        SIP_MODULE_RETURN(NULL);\n&quot;
+&quot;\n&quot;
 &quot;    sipModuleDict = PyModule_GetDict(sipModule);\n&quot;
 &quot;\n&quot;
         , pt-&gt;module-&gt;fullname-&gt;text);
@@ -832,6 +845,8 @@ static void generateCompositeCpp(sipSpec *pt, const char *codeDir)
     prcode(fp,
 &quot;\n&quot;
 &quot;    PyErr_Clear();\n&quot;
+&quot;\n&quot;
+&quot;    SIP_MODULE_RETURN(sipModule);\n&quot;
 &quot;}\n&quot;
         );
 
@@ -858,6 +873,7 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
 &quot;\n&quot;
 &quot;#include &lt;Python.h&gt;\n&quot;
 &quot;#include &lt;string.h&gt;\n&quot;
+&quot;#include &lt;sip.h&gt;\n&quot;
         );
 
     generateNameCache(pt, fp);
@@ -872,7 +888,12 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
     for (mod = pt-&gt;modules; mod != NULL; mod = mod-&gt;next)
         if (mod-&gt;container == pt-&gt;module)
             prcode(fp,
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;extern PyObject *sip_init_%s(void);\n&quot;
+&quot;#else\n&quot;
 &quot;extern void sip_init_%s(void);\n&quot;
+&quot;#endif\n&quot;
+                , mod-&gt;name
                 , mod-&gt;name);
 
     /* Generate the init function. */
@@ -891,7 +912,11 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
 &quot;{\n&quot;
 &quot;    struct component {\n&quot;
 &quot;        const char *name;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;        PyObject *(*init)(void);\n&quot;
+&quot;#else\n&quot;
 &quot;        void (*init)(void);\n&quot;
+&quot;#endif\n&quot;
 &quot;    };\n&quot;
 &quot;\n&quot;
 &quot;    static struct component components[] = {\n&quot;
@@ -900,8 +925,8 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
     for (mod = pt-&gt;modules; mod != NULL; mod = mod-&gt;next)
         if (mod-&gt;container == pt-&gt;module)
             prcode(fp,
-&quot;        {%N, sip_init_%s},\n&quot;
-                , mod-&gt;fullname, mod-&gt;name);
+&quot;        {\&quot;%s\&quot;, sip_init_%s},\n&quot;
+                , mod-&gt;fullname-&gt;text, mod-&gt;name);
 
     prcode(fp,
 &quot;        {NULL, NULL}\n&quot;
@@ -910,17 +935,27 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
 &quot;    char *name;\n&quot;
 &quot;    struct component *scd;\n&quot;
 &quot;\n&quot;
-&quot;    if ((name = PyString_AsString(arg)) == NULL)\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    name = PyBytes_AsString(arg);\n&quot;
+&quot;#else\n&quot;
+&quot;    name = PyString_AsString(arg);\n&quot;
+&quot;#endif\n&quot;
+&quot;\n&quot;
+&quot;    if (name == NULL)\n&quot;
 &quot;        return NULL;\n&quot;
 &quot;\n&quot;
 &quot;    for (scd = components; scd-&gt;name != NULL; ++scd)\n&quot;
 &quot;        if (strcmp(scd-&gt;name, name) == 0)\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;            return (*scd-&gt;init)();\n&quot;
+&quot;#else\n&quot;
 &quot;        {\n&quot;
 &quot;            (*scd-&gt;init)();\n&quot;
 &quot;\n&quot;
-&quot;            Py_INCREF(Py_True);\n&quot;
-&quot;            return Py_True;\n&quot;
+&quot;            Py_INCREF(Py_None);\n&quot;
+&quot;            return Py_None;\n&quot;
 &quot;        }\n&quot;
+&quot;#endif\n&quot;
 &quot;\n&quot;
 &quot;    PyErr_Format(PyExc_ImportError, \&quot;unknown component module %%s\&quot;, name);\n&quot;
 &quot;\n&quot;
@@ -935,8 +970,17 @@ static void generateConsolidatedCpp(sipSpec *pt, const char *codeDir,
 &quot;        {SIP_PYMETHODDEF_CAST(\&quot;init\&quot;), sip_init, METH_O, NULL},\n&quot;
 &quot;        {NULL, NULL, 0, NULL}\n&quot;
 &quot;    };\n&quot;
+        );
+
+    generateModDefinition(pt-&gt;module, &quot;sip_methods&quot;, fp);
+
+    prcode(fp,
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    return PyModule_Create(&amp;sip_module_def);\n&quot;
+&quot;#else\n&quot;
 &quot;    Py_InitModule(\&quot;%s\&quot;, sip_methods);\n&quot;
+&quot;#endif\n&quot;
 &quot;}\n&quot;
         , mname);
 
@@ -963,23 +1007,33 @@ static void generateComponentCpp(sipSpec *pt, const char *codeDir,
         );
 
     generateModInitStart(pt-&gt;module, TRUE, fp);
+    generateModDefinition(pt-&gt;module, &quot;NULL&quot;, fp);
 
     prcode(fp,
 &quot;    PyObject *sip_mod, *sip_result;\n&quot;
 &quot;\n&quot;
 &quot;    /* Import the consolidated module. */\n&quot;
 &quot;    if ((sip_mod = PyImport_ImportModule(\&quot;%s\&quot;)) == NULL)\n&quot;
-&quot;        return;\n&quot;
+&quot;        SIP_MODULE_RETURN(NULL);\n&quot;
 &quot;\n&quot;
         , consModule);
 
     prcode(fp,
 &quot;    /* Ask the consolidated module to do the initialistion. */\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    sip_result = PyObject_CallMethod(sip_mod, \&quot;init\&quot;, \&quot;y\&quot;, \&quot;%s\&quot;);\n&quot;
+&quot;#else\n&quot;
 &quot;    sip_result = PyObject_CallMethod(sip_mod, \&quot;init\&quot;, \&quot;s\&quot;, \&quot;%s\&quot;);\n&quot;
+&quot;#endif\n&quot;
+&quot;    Py_DECREF(sip_mod);\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    return sip_result;\n&quot;
+&quot;#else\n&quot;
 &quot;    Py_XDECREF(sip_result);\n&quot;
-&quot;    Py_DECREF(sip_mod);\n&quot;
+&quot;#endif\n&quot;
 &quot;}\n&quot;
+        , pt-&gt;module-&gt;fullname-&gt;text
         , pt-&gt;module-&gt;fullname-&gt;text);
 
     closeFile(fp);
@@ -997,6 +1051,14 @@ static void generateNameCache(sipSpec *pt, FILE *fp)
     prcode(fp,
 &quot;\n&quot;
 &quot;/* Define the strings used by this module. */\n&quot;
+        );
+
+    if (isConsolidated(pt-&gt;module))
+        prcode(fp,
+&quot;extern const char sipStrings_%s[];\n&quot;
+            , pt-&gt;module-&gt;name);
+
+    prcode(fp,
 &quot;const char sipStrings_%s[] = {\n&quot;
         , pt-&gt;module-&gt;name);
 
@@ -1180,10 +1242,20 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
             for (od = mod-&gt;overs; od != NULL; od = od-&gt;next)
                 if (od-&gt;common == md)
                 {
+                    if (py2SlotOnly(md-&gt;slot))
+                        prcode(fp,
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
+                            );
+
                     prcode(fp,
 &quot;    {(void *)slot_%s, %s, {0, 0, 0}},\n&quot;
                         , md-&gt;pyname-&gt;text, slotName(md-&gt;slot));
 
+                    if (py2SlotOnly(md-&gt;slot))
+                        prcode(fp,
+&quot;#endif\n&quot;
+                            );
+
                     break;
                 }
         }
@@ -1191,6 +1263,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
         for (cd = mod-&gt;proxies; cd != NULL; cd = cd-&gt;next)
             for (md = cd-&gt;members; md != NULL; md = md-&gt;next)
             {
+                if (py2SlotOnly(md-&gt;slot))
+                    prcode(fp,
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
+                        );
+
                 prcode(fp,
 &quot;    {(void *)slot_%C_%s, %s, &quot;, classFQCName(cd), md-&gt;pyname-&gt;text, slotName(md-&gt;slot));
 
@@ -1198,6 +1275,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
 
                 prcode(fp, &quot;},\n&quot;
                       );
+
+                if (py2SlotOnly(md-&gt;slot))
+                    prcode(fp,
+&quot;#endif\n&quot;
+                        );
             }
 
         prcode(fp,
@@ -1270,9 +1352,21 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
             const char *stype;
 
             if ((stype = slotName(slot-&gt;slot)) != NULL)
+            {
+                if (py2SlotOnly(slot-&gt;slot))
+                    prcode(fp,
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
+                        );
+
                 prcode(fp,
 &quot;    {(void *)slot_%C_%s, %s},\n&quot;
                     , ed-&gt;fqcname, slot-&gt;pyname-&gt;text, stype);
+
+                if (py2SlotOnly(slot-&gt;slot))
+                    prcode(fp,
+&quot;#endif\n&quot;
+                        );
+            }
         }
 
         prcode(fp,
@@ -1567,7 +1661,7 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
         , mname
         , mod-&gt;fullname
         , mod-&gt;version
-        , mname
+        , pt-&gt;module-&gt;name
         , mod-&gt;allimports != NULL ? &quot;importsTable&quot; : &quot;NULL&quot;
         , mod-&gt;qobjclass &gt;= 0 ? &quot;&amp;qtAPI&quot; : &quot;NULL&quot;
         , mod-&gt;nrtypes
@@ -1622,8 +1716,16 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
 
     if (mod-&gt;container == pt-&gt;module)
         prcode(fp,
+&quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;#define SIP_MODULE_RETURN(r)    return (r)\n&quot;
+&quot;PyObject *sip_init_%s()\n&quot;
+&quot;#else\n&quot;
+&quot;#define SIP_MODULE_RETURN(r)    return\n&quot;
 &quot;void sip_init_%s()\n&quot;
+&quot;#endif\n&quot;
 &quot;{\n&quot;
+            , mname
             , mname);
     else
         generateModInitStart(pt-&gt;module, generating_c, fp);
@@ -1650,6 +1752,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
     prcode(fp,
 &quot;        {0, 0, 0, 0}\n&quot;
 &quot;    };\n&quot;
+        );
+
+    generateModDefinition(mod, &quot;sip_methods&quot;, fp);
+
+    prcode(fp,
 &quot;\n&quot;
 &quot;    PyObject *sipModule, *sipModuleDict;\n&quot;
         );
@@ -1661,7 +1768,15 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
 
     prcode(fp,
 &quot;    /* Initialise the module and get it's dictionary. */\n&quot;
-&quot;    sipModule = Py_InitModule((char *)%N,sip_methods);\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    sipModule = PyModule_Create(&amp;sip_module_def);\n&quot;
+&quot;#else\n&quot;
+&quot;    sipModule = Py_InitModule((char *)%N, sip_methods);\n&quot;
+&quot;#endif\n&quot;
+&quot;\n&quot;
+&quot;    if (sipModule == NULL)\n&quot;
+&quot;        SIP_MODULE_RETURN(NULL);\n&quot;
+&quot;\n&quot;
 &quot;    sipModuleDict = PyModule_GetDict(sipModule);\n&quot;
 &quot;\n&quot;
         , mod-&gt;fullname);
@@ -1674,7 +1789,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
     prcode(fp,
 &quot;    /* Export the module and publish it's API. */\n&quot;
 &quot;    if (sipAPI_%s-&gt;api_export_module(&amp;sipModuleAPI_%s,SIP_API_MAJOR_NR,SIP_API_MINOR_NR,0) &lt; 0)\n&quot;
-&quot;       return;\n&quot;
+&quot;    {\n&quot;
+&quot;        Py_DECREF(sip_sipmod);\n&quot;
+&quot;        Py_DECREF(sipModule);\n&quot;
+&quot;        SIP_MODULE_RETURN(0);\n&quot;
+&quot;    }\n&quot;
         , mname
         , mname);
 
@@ -1695,7 +1814,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
     prcode(fp,
 &quot;    /* Initialise the module now all its dependencies have been set up. */\n&quot;
 &quot;    if (sipAPI_%s-&gt;api_init_module(&amp;sipModuleAPI_%s,sipModuleDict) &lt; 0)\n&quot;
-&quot;       return;\n&quot;
+&quot;    {\n&quot;
+&quot;        Py_DECREF(sip_sipmod);\n&quot;
+&quot;        Py_DECREF(sipModule);\n&quot;
+&quot;        SIP_MODULE_RETURN(0);\n&quot;
+&quot;    }\n&quot;
         , mname
         , mname);
 
@@ -1743,6 +1866,11 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
 
         prcode(fp, &quot;,NULL)) == NULL || PyDict_SetItemString(sipModuleDict,\&quot;%s\&quot;,exceptionsTable[%d]) &lt; 0)\n&quot;
 &quot;        return;\n&quot;
+&quot;        {\n&quot;
+&quot;            Py_DECREF(sip_sipmod);\n&quot;
+&quot;            Py_DECREF(sipModule);\n&quot;
+&quot;            SIP_MODULE_RETURN(0);\n&quot;
+&quot;        }\n&quot;
             , xd-&gt;pyname, xd-&gt;exceptionnr);
     }
 
@@ -1750,6 +1878,8 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
     generateCppCodeBlock(mod-&gt;postinitcode, fp);
 
     prcode(fp,
+&quot;\n&quot;
+&quot;    SIP_MODULE_RETURN(sipModule);\n&quot;
 &quot;}\n&quot;
         );
 
@@ -1877,12 +2007,19 @@ static void generateSipImport(moduleDef *mod, FILE *fp)
 &quot;#endif\n&quot;
 &quot;\n&quot;
 &quot;    if (sip_sipmod == NULL)\n&quot;
-&quot;        return;\n&quot;
+&quot;    {\n&quot;
+&quot;        Py_DECREF(sipModule);\n&quot;
+&quot;        SIP_MODULE_RETURN(NULL);\n&quot;
+&quot;    }\n&quot;
 &quot;\n&quot;
 &quot;    sip_capiobj = PyDict_GetItemString(PyModule_GetDict(sip_sipmod), \&quot;_C_API\&quot;);\n&quot;
 &quot;\n&quot;
 &quot;    if (sip_capiobj == NULL || !PyCObject_Check(sip_capiobj))\n&quot;
-&quot;        return;\n&quot;
+&quot;    {\n&quot;
+&quot;        Py_DECREF(sip_sipmod);\n&quot;
+&quot;        Py_DECREF(sipModule);\n&quot;
+&quot;        SIP_MODULE_RETURN(NULL);\n&quot;
+&quot;    }\n&quot;
 &quot;\n&quot;
         );
 
@@ -1922,14 +2059,49 @@ static void generateModInitStart(moduleDef *mod, int gen_c, FILE *fp)
 &quot;\n&quot;
 &quot;\n&quot;
 &quot;/* The Python module initialisation function. */\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;#define SIP_MODULE_ENTRY        PyInit_%s\n&quot;
+&quot;#define SIP_MODULE_RETURN(r)    return (r)\n&quot;
+&quot;#else\n&quot;
+&quot;#define SIP_MODULE_ENTRY        init%s\n&quot;
+&quot;#define SIP_MODULE_RETURN(r)    return\n&quot;
+&quot;#endif\n&quot;
+&quot;\n&quot;
 &quot;#if defined(SIP_STATIC_MODULE)\n&quot;
-&quot;%svoid init%s()\n&quot;
+&quot;%svoid SIP_MODULE_ENTRY()\n&quot;
 &quot;#else\n&quot;
-&quot;PyMODINIT_FUNC init%s()\n&quot;
+&quot;PyMODINIT_FUNC SIP_MODULE_ENTRY()\n&quot;
 &quot;#endif\n&quot;
 &quot;{\n&quot;
-        , (gen_c ? &quot;&quot; : &quot;extern \&quot;C\&quot; &quot;), mod-&gt;name
-        , mod-&gt;name);
+        , mod-&gt;name
+        , mod-&gt;name
+        , (gen_c ? &quot;&quot; : &quot;extern \&quot;C\&quot; &quot;));
+}
+
+
+/*
+ * Generate the Python v3 module definition structure.
+ */
+static void generateModDefinition(moduleDef *mod, const char *methods,
+        FILE *fp)
+{
+    prcode(fp,
+&quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+&quot;    static PyModuleDef sip_module_def = {\n&quot;
+&quot;        PyModuleDef_HEAD_INIT,\n&quot;
+&quot;        \&quot;%s\&quot;,\n&quot;
+&quot;        NULL,\n&quot;
+&quot;        -1,\n&quot;
+&quot;        %s,\n&quot;
+&quot;        NULL,\n&quot;
+&quot;        NULL,\n&quot;
+&quot;        NULL,\n&quot;
+&quot;        NULL\n&quot;
+&quot;    };\n&quot;
+&quot;#endif\n&quot;
+        , mod-&gt;fullname-&gt;text
+        , methods);
 }
 
 
@@ -3604,14 +3776,18 @@ static void generateVariableGetter(classDef *context, varDef *vd, FILE *fp)
     case sstring_type:
     case ustring_type:
     case string_type:
-        if (vd-&gt;type.nrderefs == 0)
-            prcode(fp,
-&quot;    return PyString_FromStringAndSize(%s&amp;sipVal, 1);\n&quot;
-                , (atype != string_type) ? &quot;(char *)&quot; : &quot;&quot;);
+        {
+            const char *cast = ((atype != string_type) ? &quot;(char *)&quot; : &quot;&quot;);
+
+            if (vd-&gt;type.nrderefs == 0)
+                prcode(fp,
+&quot;    return SIPBytes_FromStringAndSize(%s&amp;sipVal, 1);\n&quot;
+                    , cast);
             else
-            prcode(fp,
-&quot;    return PyString_FromString(%ssipVal);\n&quot;
-                ,(atype != string_type) ? &quot;(char *)&quot; : &quot;&quot;);
+                prcode(fp,
+&quot;    return SIPBytes_FromString(%ssipVal);\n&quot;
+                    , cast);
+        }
 
         break;
 
@@ -3657,7 +3833,7 @@ static void generateVariableGetter(classDef *context, varDef *vd, FILE *fp)
     case cint_type:
     case int_type:
         prcode(fp,
-&quot;    return PyInt_FromLong(sipVal);\n&quot;
+&quot;    return SIPLong_FromLong(sipVal);\n&quot;
             );
         break;
 
@@ -3970,7 +4146,7 @@ static int generateObjToCppConversion(argDef *ad,FILE *fp)
         break;
 
     case enum_type:
-        prcode(fp, &quot;(%E)PyInt_AsLong(sipPy);\n&quot;
+        prcode(fp, &quot;(%E)SIPLong_AsLong(sipPy);\n&quot;
             , ad-&gt;u.ed);
         break;
 
@@ -3978,21 +4154,21 @@ static int generateObjToCppConversion(argDef *ad,FILE *fp)
         if (ad-&gt;nrderefs == 0)
             rhs = &quot;(signed char)sipString_AsChar(sipPy)&quot;;
         else
-            rhs = &quot;(signed char *)PyString_AsString(sipPy)&quot;;
+            rhs = &quot;(signed char *)SIPBytes_AsString(sipPy)&quot;;
         break;
 
     case ustring_type:
         if (ad-&gt;nrderefs == 0)
             rhs = &quot;(unsigned char)sipString_AsChar(sipPy)&quot;;
         else
-            rhs = &quot;(unsigned char *)PyString_AsString(sipPy)&quot;;
+            rhs = &quot;(unsigned char *)SIPBytes_AsString(sipPy)&quot;;
         break;
 
     case string_type:
         if (ad-&gt;nrderefs == 0)
             rhs = &quot;sipString_AsChar(sipPy)&quot;;
         else
-            rhs = &quot;PyString_AsString(sipPy)&quot;;
+            rhs = &quot;SIPBytes_AsString(sipPy)&quot;;
         break;
 
     case wstring_type:
@@ -4014,7 +4190,7 @@ static int generateObjToCppConversion(argDef *ad,FILE *fp)
 
     case bool_type:
     case cbool_type:
-        rhs = &quot;(bool)PyInt_AsLong(sipPy)&quot;;
+        rhs = &quot;(bool)SIPLong_AsLong(sipPy)&quot;;
         break;
 
     case ushort_type:
@@ -4022,7 +4198,7 @@ static int generateObjToCppConversion(argDef *ad,FILE *fp)
         break;
 
     case short_type:
-        rhs = &quot;(short)PyInt_AsLong(sipPy)&quot;;
+        rhs = &quot;(short)SIPLong_AsLong(sipPy)&quot;;
         break;
 
     case uint_type:
@@ -4031,7 +4207,7 @@ static int generateObjToCppConversion(argDef *ad,FILE *fp)
 
     case int_type:
     case cint_type:
-        rhs = &quot;(int)PyInt_AsLong(sipPy)&quot;;
+        rhs = &quot;(int)SIPLong_AsLong(sipPy)&quot;;
         break;
 
     case ulong_type:
@@ -4215,14 +4391,14 @@ static void generateSlot(moduleDef *mod, classDef *cd, enumDef *ed,
 
     if (ed != NULL)
     {
-        prefix = &quot;Enum&quot;;
+        prefix = &quot;Type&quot;;
         pyname = ed-&gt;pyname;
         fqcname = ed-&gt;fqcname;
         overs = ed-&gt;overs;
     }
     else if (cd != NULL)
     {
-        prefix = &quot;Class&quot;;
+        prefix = &quot;Type&quot;;
         pyname = cd-&gt;pyname;
         fqcname = classFQCName(cd);
         overs = cd-&gt;overs;
@@ -4281,6 +4457,11 @@ static void generateSlot(moduleDef *mod, classDef *cd, enumDef *ed,
 &quot;\n&quot;
         );
 
+    if (py2SlotOnly(md-&gt;slot))
+        prcode(fp,
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
+            );
+
     if (!generating_c)
     {
         prcode(fp,
@@ -4305,7 +4486,7 @@ static void generateSlot(moduleDef *mod, classDef *cd, enumDef *ed,
 
     if (isInplaceNumberSlot(md))
         prcode(fp,
-&quot;    if (!PyObject_TypeCheck(sipSelf,(PyTypeObject *)sip%s_%C))\n&quot;
+&quot;    if (!PyObject_TypeCheck(sipSelf, sipTypeAsPyTypeObject(sip%s_%C)))\n&quot;
 &quot;    {\n&quot;
 &quot;        Py_INCREF(Py_NotImplemented);\n&quot;
 &quot;        return Py_NotImplemented;\n&quot;
@@ -4326,7 +4507,7 @@ static void generateSlot(moduleDef *mod, classDef *cd, enumDef *ed,
                 , (md-&gt;slot == cmp_slot ? &quot;-2&quot; : (ret_int ? &quot;-1&quot; : &quot;0&quot;)));
         else
             prcode(fp,
-&quot;    %S sipCpp = static_cast&lt;%S&gt;(PyInt_AsLong(sipSelf));\n&quot;
+&quot;    %S sipCpp = static_cast&lt;%S&gt;(SIPLong_AsLong(sipSelf));\n&quot;
 &quot;\n&quot;
                 , fqcname, fqcname);
     }
@@ -4406,6 +4587,11 @@ static void generateSlot(moduleDef *mod, classDef *cd, enumDef *ed,
     prcode(fp,
 &quot;}\n&quot;
         );
+
+    if (py2SlotOnly(md-&gt;slot))
+        prcode(fp,
+&quot;#endif\n&quot;
+            );
 }
 
 
@@ -4646,11 +4832,82 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
     }
 
     /* The buffer interface functions. */
+    if (cd-&gt;getbufcode != NULL)
+    {
+        prcode(fp,
+&quot;\n&quot;
+&quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+            );
+
+        if (!generating_c)
+            prcode(fp,
+&quot;extern \&quot;C\&quot; {static int getbuffer_%C(PyObject *, void *, Py_buffer *, int);}\n&quot;
+                , classFQCName(cd));
+
+        prcode(fp,
+&quot;static int getbuffer_%C(PyObject *%s, void *sipCppV, Py_buffer *sipBuffer, int %s)\n&quot;
+&quot;{\n&quot;
+&quot;    &quot;, classFQCName(cd)
+     , argName(&quot;sipSelf&quot;, cd-&gt;getbufcode)
+     , argName(&quot;sipFlags&quot;, cd-&gt;getbufcode));
+
+        generateClassFromVoid(cd, &quot;sipCpp&quot;, &quot;sipCppV&quot;, fp);
+
+        prcode(fp, &quot;;\n&quot;
+&quot;    int sipRes;\n&quot;
+&quot;\n&quot;
+            );
+
+        generateCppCodeBlock(cd-&gt;getbufcode, fp);
+
+        prcode(fp,
+&quot;\n&quot;
+&quot;    return sipRes;\n&quot;
+&quot;}\n&quot;
+&quot;#endif\n&quot;
+            );
+    }
+
+    if (cd-&gt;releasebufcode != NULL)
+    {
+        prcode(fp,
+&quot;\n&quot;
+&quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+            );
+
+        if (!generating_c)
+            prcode(fp,
+&quot;extern \&quot;C\&quot; {static void releasebuffer_%C(PyObject *, void *, Py_buffer *);}\n&quot;
+                , classFQCName(cd));
+
+        prcode(fp,
+&quot;static void releasebuffer_%C(PyObject *%s, void *sipCppV, Py_buffer *)\n&quot;
+&quot;{\n&quot;
+&quot;    &quot;, classFQCName(cd)
+     , argName(&quot;sipSelf&quot;, cd-&gt;releasebufcode));
+
+        generateClassFromVoid(cd, &quot;sipCpp&quot;, &quot;sipCppV&quot;, fp);
+
+        prcode(fp, &quot;;\n&quot;
+&quot;\n&quot;
+            );
+
+        generateCppCodeBlock(cd-&gt;releasebufcode, fp);
+
+        prcode(fp,
+&quot;}\n&quot;
+&quot;#endif\n&quot;
+            );
+    }
+
     if (cd-&gt;readbufcode != NULL)
     {
         prcode(fp,
 &quot;\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
             );
 
         if (!generating_c)
@@ -4679,6 +4936,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
 &quot;\n&quot;
 &quot;    return sipRes;\n&quot;
 &quot;}\n&quot;
+&quot;#endif\n&quot;
             );
     }
 
@@ -4687,6 +4945,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
         prcode(fp,
 &quot;\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
             );
 
         if (!generating_c)
@@ -4715,6 +4974,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
 &quot;\n&quot;
 &quot;    return sipRes;\n&quot;
 &quot;}\n&quot;
+&quot;#endif\n&quot;
             );
     }
 
@@ -4723,6 +4983,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
         prcode(fp,
 &quot;\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
             );
 
         if (!generating_c)
@@ -4750,6 +5011,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
 &quot;\n&quot;
 &quot;    return sipRes;\n&quot;
 &quot;}\n&quot;
+&quot;#endif\n&quot;
             );
     }
 
@@ -4758,6 +5020,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
         prcode(fp,
 &quot;\n&quot;
 &quot;\n&quot;
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
             );
 
         if (!generating_c)
@@ -4786,6 +5049,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
 &quot;\n&quot;
 &quot;    return sipRes;\n&quot;
 &quot;}\n&quot;
+&quot;#endif\n&quot;
             );
     }
 
@@ -7606,9 +7870,21 @@ static void generateTypeDefinition(sipSpec *pt, classDef *cd, FILE *fp)
         }
 
         if ((stype = slotName(md-&gt;slot)) != NULL)
+        {
+            if (py2SlotOnly(md-&gt;slot))
+                prcode(fp,
+&quot;#if PY_MAJOR_VERSION &lt; 3\n&quot;
+                    );
+
             prcode(fp,
 &quot;    {(void *)slot_%C_%s, %s},\n&quot;
                 , classFQCName(cd), md-&gt;pyname-&gt;text, stype);
+
+            if (py2SlotOnly(md-&gt;slot))
+                prcode(fp,
+&quot;#endif\n&quot;
+                    );
+        }
     }
 
     if (is_slots)
@@ -7905,6 +8181,32 @@ static void generateTypeDefinition(sipSpec *pt, classDef *cd, FILE *fp)
 &quot;    0,\n&quot;
             );
 
+    prcode(fp,
+&quot;#if PY_MAJOR_VERSION &gt;= 3\n&quot;
+        );
+
+    if (cd-&gt;getbufcode != NULL)
+        prcode(fp,
+&quot;    getbuffer_%C,\n&quot;
+            , classFQCName(cd));
+    else
+        prcode(fp,
+&quot;    0,\n&quot;
+            );
+
+    if (cd-&gt;releasebufcode != NULL)
+        prcode(fp,
+&quot;    releasebuffer_%C,\n&quot;
+            , classFQCName(cd));
+    else
+        prcode(fp,
+&quot;    0,\n&quot;
+            );
+
+    prcode(fp,
+&quot;#else\n&quot;
+        );
+
     if (cd-&gt;readbufcode != NULL)
         prcode(fp,
 &quot;    getreadbuffer_%C,\n&quot;
@@ -7941,6 +8243,10 @@ static void generateTypeDefinition(sipSpec *pt, classDef *cd, FILE *fp)
 &quot;    0,\n&quot;
             );
 
+    prcode(fp,
+&quot;#endif\n&quot;
+        );
+
     if (needDealloc(cd))
         prcode(fp,
 &quot;    dealloc_%C,\n&quot;
@@ -8117,6 +8423,15 @@ static void generateSignalTableEntry(classDef *cd, overDef *od, FILE *fp)
 
 
 /*
+ * Return TRUE if the slot is specific to Python v2.
+ */
+static int py2SlotOnly(slotType st)
+{
+    return (st == long_slot || st == cmp_slot);
+}
+
+
+/*
  * Return the sip module's string equivalent of a slot.
  */
 static const char *slotName(slotType st)
@@ -9153,7 +9468,7 @@ static void generateHandleResult(overDef *od, int isNew, int result_size,
     case string_type:
         if (ad-&gt;nrderefs == 0)
             prcode(fp,
-&quot;            %s PyString_FromStringAndSize(%s&amp;%s,1);\n&quot;
+&quot;            %s SIPBytes_FromStringAndSize(%s&amp;%s,1);\n&quot;
                 ,prefix,(ad-&gt;atype != string_type) ? &quot;(char *)&quot; : &quot;&quot;,vname);
         else
             prcode(fp,
@@ -9163,7 +9478,7 @@ static void generateHandleResult(overDef *od, int isNew, int result_size,
 &quot;                return Py_None;\n&quot;
 &quot;            }\n&quot;
 &quot;\n&quot;
-&quot;            %s PyString_FromString(%s%s);\n&quot;
+&quot;            %s SIPBytes_FromString(%s%s);\n&quot;
             ,vname
             ,prefix,(ad-&gt;atype != string_type) ? &quot;(char *)&quot; : &quot;&quot;,vname);
 
@@ -9204,7 +9519,7 @@ static void generateHandleResult(overDef *od, int isNew, int result_size,
     case int_type:
     case cint_type:
         prcode(fp,
-&quot;            %s PyInt_FromLong(%s);\n&quot;
+&quot;            %s SIPLong_FromLong(%s);\n&quot;
             ,prefix,vname);
 
         break;</diff>
      <filename>sipgen/gencode.c</filename>
    </modified>
    <modified>
      <diff>@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 116
-#define YY_END_OF_BUFFER 117
+#define YY_NUM_RULES 118
+#define YY_END_OF_BUFFER 119
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,13 +373,13 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[802] =
+static yyconst flex_int16_t yy_accept[829] =
     {   0,
-        0,    0,    0,    0,    0,    0,  117,  115,   68,   69,
-      115,  115,  115,   72,  115,   71,   71,  115,   74,   74,
+        0,    0,    0,    0,    0,    0,  119,  117,   68,   69,
+      117,  117,  117,   72,  117,   71,   71,  117,   74,   74,
        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,  115,   68,  115,  114,
-      113,  114,   81,   79,   81,    0,   76,    0,   77,   72,
+       74,   74,   74,   74,   74,   74,  117,   68,  117,  116,
+      115,  116,   81,   79,   81,    0,   76,    0,   77,   72,
        71,    0,   75,   72,   75,   75,   72,   78,   70,   72,
         0,   50,   74,   74,   74,   74,   74,   74,   74,   74,
        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
@@ -400,70 +400,72 @@ static yyconst flex_int16_t yy_accept[802] =
        74,   74,   31,   74,   74,   74,   74,   74,   74,   74,
        74,   74,   74,   74,   74,   41,   74,   74,   74,   34,
        74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  106,   18,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  108,   18,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  112,   74,   74,   74,   74,   74,   19,   39,   74,
-       74,   42,   32,   74,   74,   74,   74,   74,   29,   74,
-       74,   25,   74,   74,   74,   47,   74,   74,   74,   74,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  114,   74,   74,   74,   74,   74,   19,   39,
+       74,   74,   42,   32,   74,   74,   74,   74,   74,   29,
+       74,   74,   25,   74,   74,   74,   47,   74,   74,   74,
+       74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   74,   74,   74,
-       74,   74,   74,   33,   74,   74,   74,   74,   74,   21,
-       74,   37,   40,   20,   74,   74,   74,   74,   74,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   74,
+       74,   74,   74,   74,   74,   33,   74,   74,   74,   74,
+       74,   21,   74,   37,   40,   20,   74,   74,   74,   74,
+       74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   74,   74,   74,   74,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   74,
        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
 
-       23,   74,   24,   74,   44,   74,   35,   27,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    4,    0,    0,    0,
-        0,    0,    0,    5,    0,    0,    0,    1,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   60,
-       48,   74,   46,   74,   49,   38,    5,    0,    0,    0,
-        0,    0,    6,    0,    0,    0,   82,    0,    0,    0,
-       11,    0,    0,  110,    2,    0,   12,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  111,
-
-        0,    0,    0,    0,    0,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   45,   22,    0,
+       74,   74,   74,   23,   74,   24,   74,   44,   74,   35,
+       27,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  108,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    9,   94,    0,
-       92,    0,   74,   74,   55,   54,   74,   74,   74,   58,
-       74,   74,   59,   74,   74,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   14,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   10,    0,
-        0,    0,  105,    0,    0,   61,   74,   74,   57,   53,
-
-       66,   74,   74,   74,   74,  109,    0,    0,    0,    0,
+        0,    4,    0,    0,    0,    0,    0,    0,    5,    0,
+        0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   60,   48,   74,   46,   74,   49,
+       38,    5,    0,    0,    0,    0,    0,    0,    0,    6,
+        0,    0,    0,   82,    0,    0,    0,   11,    0,    0,
+      112,    2,    0,   12,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
+        0,    0,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   45,   22,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   13,   95,   93,    0,    0,  103,    0,    0,
-        0,    0,    0,   74,   52,   74,   74,   64,   65,    0,
+        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    9,   94,    0,   92,
+        0,   74,   74,   55,   54,   74,   74,   74,   58,   74,
+       74,   59,   74,   74,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   14,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
+
+        0,    0,    0,  107,    0,    0,   61,   74,   74,   57,
+       53,   66,   74,   74,   74,   74,  111,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      107,    0,   98,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   74,   62,   63,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   13,   95,   93,    0,    0,
+      105,    0,    0,    0,    0,    0,   74,   52,   74,   74,
+       64,   65,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  109,    0,   98,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   74,   62,   63,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   56,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,  104,    0,    0,    0,    0,
+        0,    0,    0,   56,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       97,    0,    0,    0,    0,    0,   88,    0,    0,    0,
-        0,    0,    8,    0,    0,    0,    0,   16,    0,    0,
-        0,    0,    3,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   17,    0,    0,   87,    0,    0,
-        0,    0,    0,  101,    0,    0,    0,    0,   84,    0,
-        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
-       86,   90,    0,    0,   96,  102,   99,    0,   83,    0,
-        0,    0,  100,    0,    0,    0,   85,    0,   89,   91,
-
-        0
+        0,   97,    0,    0,    0,    0,    0,   88,    0,   99,
+        0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
+       16,    0,    0,    0,    0,    3,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   17,    0,
+        0,   87,    0,    0,    0,    0,    0,  103,    0,    0,
+        0,    0,    0,   84,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    7,    0,    0,   86,   90,    0,    0,
+       96,  104,  101,    0,  100,   83,    0,    0,    0,  102,
+        0,    0,    0,   85,    0,   89,   91,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -509,193 +511,199 @@ static yyconst flex_int32_t yy_meta[66] =
         3,    3,    3,    3,    1
     } ;
 
-static yyconst flex_int16_t yy_base[810] =
+static yyconst flex_int16_t yy_base[837] =
     {   0,
-        0,   64, 1674,   65,   64,   66, 1676, 1678, 1678, 1678,
-       70,   73,   68,   73,   80,   84,   88, 1660,   79,   96,
+        0,   64, 1701,   65,   64,   66, 1703, 1705, 1705, 1705,
+       70,   73,   68,   73,   80,   84,   88, 1687,   79,   96,
       100,  103,  111,  106,  115,  128,  118,  131,  134,  138,
-      141,  163,  171,  145,  177,  180, 1609,   94,  220, 1678,
-     1678, 1653, 1678, 1678, 1660,  131, 1678,  130, 1678,  183,
-      205,  152,  195,  248,  155,  261,  167, 1678,    0, 1678,
-        0, 1678,  198,  253,  266,  271,  274,  277,  280,  288,
+      141,  163,  171,  145,  177,  180, 1636,   94,  220, 1705,
+     1705, 1680, 1705, 1705, 1687,  131, 1705,  130, 1705,  183,
+      205,  152,  195,  248,  155,  261,  167, 1705,    0, 1705,
+        0, 1705,  198,  253,  266,  271,  274,  277,  280,  288,
       291,  294,  297,  300,  303,  310,  313,  317,  320,  325,
       328,  331,  334,  342,  347,  361,  366,  375,  370,  380,
-      383,  386, 1678,  219,  420, 1627, 1646,   49,  113,  130,
+      383,  386, 1705,  219,  420, 1654, 1673,   49,  113,  130,
 
-     1623,  177,  354, 1618,  314, 1611,  354, 1624, 1619,  121,
-     1610, 1613, 1608, 1678,  399,  443,  190,  220,  411,  448,
+     1650,  177,  354, 1645,  314, 1638,  354, 1651, 1646,  121,
+     1637, 1640, 1635, 1705,  399,  443,  190,  220,  411,  448,
         0,    0,  405,  453,  456,  460,  463,  466,  469,  472,
       475,  478,  481,  486,  489,  492,  495,  499,  503,  518,
       508,  521,  529,  532,  535,  538,  543,  546,  556,  561,
-      566,  569,  573,  217, 1615,  311,  389,  204, 1608, 1609,
-     1614, 1635, 1601,  349, 1608, 1610, 1608,  187, 1610,  231,
-     1592, 1678, 1594,  317, 1605,  371, 1589, 1602, 1587, 1601,
-      474, 1586, 1597, 1592, 1582, 1587, 1583, 1588, 1580, 1591,
-      576,  589,  596,  593,  606,  609,  621,  624,  627,  631,
-
-      636,  639,  642,  645,  648,  651,  654,  658,  661,  667,
-      673,  676,  684,  694,  700,  704,  707,  711,  722,  725,
-      728,  264, 1591, 1590, 1577, 1587, 1585, 1584, 1584, 1572,
-      153, 1563, 1584, 1678, 1678, 1579, 1569, 1564, 1570, 1564,
-     1602, 1564, 1566, 1558, 1570, 1569, 1558, 1564, 1552, 1561,
-     1559, 1550, 1560, 1548,  562, 1548, 1587, 1558, 1557, 1543,
-     1542, 1678,  731,  737,  743,  753,  756,  746,  759,  764,
-      776,  779,  783,  786,  789,  792,  795,  801,  804,  807,
-      811,  814,  817,  820,  823,  826,  842,  852,  856,  859,
-     1542, 1539, 1540, 1538, 1536, 1540, 1539, 1547, 1542, 1531,
-
-     1534, 1532, 1528, 1541, 1544, 1530, 1527, 1523, 1532, 1527,
-     1533, 1533, 1523, 1525, 1521, 1523, 1527, 1523, 1548, 1517,
-     1506, 1523, 1513, 1515,  411, 1548, 1505,  862,  874,  865,
-      884,  900,  905,  879,  908,  913,  916,  919,  922,  926,
-      929,  932,  935,  938,  941,  949,  952,  956,  962, 1512,
-     1505,  951, 1510, 1503, 1508, 1502, 1504, 1505, 1497, 1496,
-     1497, 1511, 1491, 1506, 1491, 1504, 1506, 1489, 1496, 1500,
-     1499, 1497, 1488, 1495, 1485, 1485, 1484, 1487, 1477, 1517,
-     1489, 1483, 1477, 1485, 1475, 1487,  965,  981,  991,  994,
-      999,  968, 1002, 1012, 1015, 1018, 1023, 1029, 1033, 1038,
-
-     1041, 1044, 1049, 1052, 1055, 1058, 1061, 1064, 1482, 1509,
-     1477, 1479, 1478, 1466, 1476, 1471, 1470, 1460, 1470, 1458,
-     1466, 1469, 1468, 1456, 1466, 1465, 1678, 1464, 1457, 1462,
-     1455, 1471, 1487,  431, 1462, 1485, 1445, 1678, 1451, 1441,
-     1450, 1443, 1451, 1442, 1450, 1452, 1448, 1440, 1069, 1072,
-     1075, 1090, 1094, 1097, 1100, 1103, 1106, 1117, 1125, 1128,
-     1133, 1136, 1139, 1142, 1145, 1148, 1678, 1436, 1448, 1447,
-     1440, 1437, 1678, 1427, 1440,  258, 1678,  535, 1429, 1438,
-     1678, 1464, 1424, 1678, 1678, 1430, 1678, 1433, 1414, 1422,
-     1421, 1429, 1422, 1418, 1419, 1412, 1420, 1414, 1423, 1678,
-
-     1421, 1420, 1420, 1418, 1445, 1151, 1156, 1160, 1163, 1166,
-     1178, 1181, 1189, 1192, 1195, 1201, 1204, 1207, 1214, 1417,
-     1404, 1415, 1441, 1399, 1411, 1414, 1398, 1399, 1407, 1392,
-     1397,  391, 1395, 1391, 1390, 1678, 1391, 1401, 1400, 1402,
-     1419, 1397, 1383, 1390, 1397, 1384, 1391, 1678, 1678, 1390,
-     1678, 1393, 1219, 1222, 1229, 1232, 1235, 1238, 1245, 1249,
-     1252, 1256, 1259, 1266, 1269, 1388, 1416, 1415, 1376, 1384,
-     1401, 1369, 1372,  575, 1367, 1369, 1678, 1369, 1377, 1377,
-     1375, 1378, 1373, 1372, 1371, 1371, 1361, 1368, 1678, 1371,
-     1360, 1393, 1678, 1353, 1350, 1272, 1278, 1287, 1290, 1293,
-
-     1296, 1299, 1302, 1305, 1308, 1678, 1348, 1347, 1346, 1388,
-     1349, 1357, 1349, 1341, 1336, 1357, 1352, 1353, 1354, 1349,
-     1374, 1307, 1678, 1678, 1678, 1318, 1309, 1678, 1300, 1291,
-     1284, 1320, 1289, 1313, 1320, 1325, 1333, 1336, 1339, 1281,
-     1280, 1267, 1234, 1247, 1246, 1251, 1242, 1217, 1213, 1195,
-     1678, 1206, 1678, 1182, 1185, 1170, 1169, 1170, 1139, 1149,
-     1130, 1135, 1345, 1348, 1351, 1133, 1132, 1106, 1117, 1073,
-     1104, 1066, 1107, 1077, 1058, 1061, 1051, 1049, 1037, 1073,
-     1029, 1020, 1015, 1000,  991,  985, 1358,  974,  973,  999,
-      960,  942,  935,  932,  934,  965,  926,  906,  900,  910,
-
-      900,  866,  868,  865,  846, 1678,  857,  842,  840,  830,
-      828,  835,  834,  833,  814,  816,  802,  809,  794,  831,
-     1678,  829,  801,  798,  784,  791, 1678,  822,  791,  790,
-      739,  724, 1678,  719,  760,  714,  716, 1678,  705,  695,
-      690,  698, 1678,  680,  674,  672,  670,  669,  661,  684,
-      649,  644,  639,  646, 1678,  646,  644, 1678,  620,  620,
-      600,  599,  595, 1678,  571,  578,  577,  595, 1678,  550,
-      541,  528,  556,  518,  515,  513,  506, 1678,  489,  471,
-     1678, 1678,  504,  404, 1678, 1678, 1678,  384, 1678,  343,
-      292,  288, 1678,  250,  222,  108, 1678,   57, 1678, 1678,
-
-     1678, 1370, 1374, 1378, 1382, 1384, 1386, 1390,   74
+      566,  569,  573,  217, 1642,  311,  389,  204, 1635, 1636,
+     1641,  381, 1629,  533, 1636, 1638, 1636,  187, 1638,  231,
+     1620, 1705, 1622,  317, 1633,  354, 1617, 1630, 1615, 1629,
+      474, 1614, 1625, 1620, 1610, 1615, 1611, 1616, 1608, 1619,
+      583,  589,  606,  595,  598,  609,  616,  621,  624,  631,
+
+      634,  637,  640,  643,  646,  649,  652,  658,  666,  672,
+      675,  682,  692,  695,  699,  705,  709,  712,  716,  719,
+      727,  264, 1619, 1618, 1605, 1615, 1613, 1612, 1611, 1611,
+     1599,  153, 1590, 1611, 1705, 1705, 1606, 1596, 1591, 1597,
+     1591, 1629, 1591, 1593, 1585, 1597, 1596, 1585, 1591, 1579,
+     1588, 1586, 1577, 1587, 1575,  398, 1575, 1614, 1585, 1584,
+     1570, 1569, 1705,  730,  733,  738,  741,  745,  752,  755,
+      767,  771,  775,  778,  781,  784,  787,  790,  794,  797,
+      800,  806,  809,  812,  815,  818,  821,  829,  837,  843,
+      847, 1569, 1566, 1567, 1565, 1571, 1562, 1566, 1565, 1573,
+
+     1568, 1557, 1560, 1558, 1554, 1567, 1570, 1556, 1553, 1549,
+     1558, 1553, 1559, 1559, 1549, 1551, 1547, 1549, 1553, 1549,
+     1574, 1543, 1532, 1549, 1539, 1541,  431, 1574, 1531,  852,
+      859,  855,  869,  885,  872,  893,  898,  901,  904,  907,
+      910,  913,  916,  919,  922,  925,  928,  934,  939,  944,
+      950, 1538, 1531,  946, 1542, 1535, 1528, 1533, 1527, 1529,
+     1530, 1522, 1521, 1522, 1536, 1516, 1531, 1516, 1529, 1531,
+     1514, 1521, 1525, 1524, 1522, 1513, 1520, 1510, 1510, 1509,
+     1512, 1502, 1542, 1514, 1508, 1502, 1510, 1500, 1512,  955,
+      960,  980,  983,  988,  991, 1000, 1003, 1009, 1012, 1019,
+
+     1022, 1027, 1032, 1035, 1038, 1041, 1045, 1048, 1051, 1054,
+     1057, 1507, 1534, 1491, 1501, 1503, 1502, 1490, 1504, 1499,
+     1494, 1493, 1483, 1493, 1481, 1489, 1492, 1491, 1479, 1489,
+     1488, 1705, 1487, 1480, 1485, 1478, 1494, 1510,  541, 1485,
+     1508, 1468, 1705, 1474, 1464, 1473, 1466, 1474, 1465, 1473,
+     1475, 1471, 1463, 1063, 1066, 1076, 1087, 1090, 1093, 1096,
+     1099, 1102, 1108, 1113, 1124, 1127, 1130, 1133, 1136, 1139,
+     1142, 1705, 1459, 1466, 1470, 1469, 1462, 1459, 1450, 1705,
+     1448, 1461,  258, 1705,  535, 1450, 1459, 1705, 1485, 1445,
+     1705, 1705, 1451, 1705, 1454, 1435, 1443, 1442, 1450, 1443,
+
+     1439, 1440, 1433, 1441, 1435, 1444, 1705, 1442, 1441, 1441,
+     1439, 1466, 1145, 1150, 1156, 1159, 1162, 1168, 1173, 1177,
+     1191, 1194, 1200, 1203, 1206, 1213, 1438, 1435, 1424, 1435,
+     1461, 1419, 1431, 1430, 1433, 1417, 1418, 1426, 1411, 1416,
+      411, 1414, 1410, 1409, 1705, 1410, 1420, 1419, 1421, 1438,
+     1416, 1402, 1409, 1416, 1403, 1410, 1705, 1705, 1409, 1705,
+     1412, 1218, 1221, 1228, 1231, 1234, 1237, 1244, 1248, 1251,
+     1255, 1258, 1265, 1268, 1407, 1406, 1434, 1433, 1394, 1402,
+     1430, 1418, 1386, 1389,  578, 1384, 1386, 1705, 1386, 1394,
+     1394, 1392, 1395, 1390, 1389, 1388, 1388, 1378, 1385, 1705,
+
+     1388, 1377, 1410, 1705, 1370, 1367, 1271, 1277, 1286, 1289,
+     1292, 1295, 1298, 1301, 1304, 1307, 1705, 1368, 1364, 1363,
+     1362, 1404, 1360, 1364, 1372, 1364, 1356, 1351, 1372, 1367,
+     1368, 1369, 1364, 1391, 1349, 1705, 1705, 1705, 1361, 1362,
+     1705, 1353, 1354, 1348, 1384, 1357, 1312, 1319, 1324, 1332,
+     1335, 1338, 1382, 1352, 1351, 1343, 1336, 1348, 1349, 1346,
+     1330, 1320, 1296, 1292, 1283, 1705, 1293, 1705, 1282, 1282,
+     1270, 1274, 1270, 1235, 1246, 1235, 1236, 1344, 1347, 1350,
+     1229, 1225, 1224, 1192, 1203, 1189, 1174, 1198, 1156, 1201,
+     1162, 1143, 1140, 1152, 1151, 1140, 1175, 1132, 1132, 1122,
+
+     1117, 1114, 1112, 1357, 1087, 1085, 1082, 1108, 1069, 1049,
+     1040, 1030, 1027, 1030, 1062, 1023, 1008, 1013,  989,  973,
+      970,  972,  974,  949, 1705,  960,  940,  942,  929,  926,
+      927,  932,  920,  929,  928,  922,  916,  902,  906,  891,
+      924, 1705,  923,  861,  855,  841,  848, 1705,  872, 1705,
+      869,  858,  828,  811,  843, 1705,  790,  827,  786,  797,
+     1705,  790,  780,  759,  757, 1705,  725,  719,  716,  715,
+      703,  700,  717,  679,  661,  657,  642,  653, 1705,  652,
+      650, 1705,  635,  635,  634,  629,  627, 1705,  616,  621,
+      619,  584,  606, 1705,  577,  557,  539,  572,  536,  528,
+
+      515,  506,  489, 1705,  480,  467, 1705, 1705,  441,  372,
+     1705, 1705, 1705,  356, 1705, 1705,  343,  292,  288, 1705,
+      250,  222,  108, 1705,   57, 1705, 1705, 1705, 1369, 1373,
+     1377, 1381, 1383, 1385, 1389,   74
     } ;
 
-static yyconst flex_int16_t yy_def[810] =
+static yyconst flex_int16_t yy_def[837] =
     {   0,
-      801,    1,  802,  802,  803,  803,  801,  801,  801,  801,
-      804,  805,  801,  806,  801,  801,  801,  801,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  804,  801,  805,  801,  801,
-      801,  806,  806,  806,  806,  806,  806,  801,  808,  801,
-      809,  801,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  806,  801,  806,  806,
-      808,  809,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-
-      807,  807,  807,  807,  807,  807,  807,  807,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  807,  807,  807,  807,  807,
-
-      807,  807,  807,  807,  807,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  807,  807,  807,  807,  807,  807,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  807,  807,  807,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  807,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-        0,  801,  801,  801,  801,  801,  801,  801,  801
+      828,    1,  829,  829,  830,  830,  828,  828,  828,  828,
+      831,  832,  828,  833,  828,  828,  828,  828,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  831,  828,  832,  828,  828,
+      828,  833,  833,  833,  833,  833,  833,  828,  835,  828,
+      836,  828,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  833,  828,  833,  833,
+      835,  836,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+      834,  834,  834,  834,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  828,  834,  834,  834,  834,
+      834,  834,  834,  834,  834,  834,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  834,  834,  834,  834,
+      834,  834,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  834,  834,  834,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  834,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,    0,  828,  828,
+      828,  828,  828,  828,  828,  828
     } ;
 
-static yyconst flex_int16_t yy_nxt[1744] =
+static yyconst flex_int16_t yy_nxt[1771] =
     {   0,
         8,    9,   10,    9,   11,    8,   12,    8,    8,   13,
        14,   15,   16,   17,   18,   19,   19,   19,   19,   19,
@@ -708,190 +716,192 @@ static yyconst flex_int16_t yy_nxt[1744] =
        51,   51,   52,   53,   52,   54,   54,   58,   52,   55,
        52,   59,   56,   57,   50,   94,   51,   51,   50,   95,
 
-       51,   51,  800,  164,   60,   52,   55,   52,   60,   52,
+       51,   51,  827,  164,   60,   52,   55,   52,   60,   52,
        55,   52,   52,   55,   52,   52,   55,   52,   56,   57,
        52,   55,   52,   65,   52,   55,   52,   52,   55,   52,
        60,   64,   49,   47,   60,   47,   49,   52,   55,   52,
        52,   55,   52,   52,   55,   52,   61,   52,   55,   52,
-       52,   55,   52,  799,   52,   55,   52,   66,  165,   67,
+       52,   55,   52,  826,   52,   55,   52,   66,  165,   67,
        70,   52,   68,   52,   52,   69,   52,  166,   71,   73,
       186,   75,   52,   55,   52,   77,   52,   72,   52,   74,
        52,   55,   52,  167,  187,   76,   52,   55,   52,   52,
        55,   52,  168,   78,  170,  115,  115,   79,   89,   52,
 
        80,   52,  116,   60,   52,  117,   52,   52,   55,   52,
-      297,   81,   82,  298,   83,   50,   85,   51,   51,   86,
+      299,   81,   82,  300,   83,   50,   85,   51,   51,   86,
        94,   84,  171,   92,   95,   60,   90,   87,  116,   60,
-      236,   91,  191,  191,   88,   96,   97,   98,   99,  100,
-      101,  102,  237,  103,  163,  225,  104,  105,  239,  106,
+      237,   91,  191,  191,   88,   96,   97,   98,   99,  100,
+      101,  102,  238,  103,  163,  225,  104,  105,  240,  106,
       107,   60,  108,  109,  110,  111,  112,   52,  226,   52,
-       54,   54,   52,   55,   52,  240,  798,   56,   57,  118,
-      119,  222,   52,  120,  120,   52,   55,   52,  527,  123,
+       54,   54,   52,   55,   52,  241,  825,   56,   57,  118,
+      119,  222,   52,  120,  120,   52,   55,   52,  536,  123,
        52,   55,   52,   52,   55,   52,   52,   55,   52,   52,
-       55,   52,  528,   56,   57,  797,  124,   52,   55,   52,
+       55,   52,  537,   56,   57,  824,  124,   52,   55,   52,
 
        52,   55,   52,   52,   55,   52,   52,   55,   52,   52,
-       55,   52,   52,   55,   52,  126,  230,  291,  127,   52,
+       55,   52,   52,   55,   52,  126,  231,  292,  127,   52,
        55,   52,   52,   55,   52,  125,   52,   55,   52,   52,
-       55,   52,  796,  128,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,   52,   55,   52,  795,  129,  132,  131,
+       55,   52,  823,  128,   52,   55,   52,   52,   55,   52,
+       52,   55,   52,   52,   55,   52,  822,  129,  132,  131,
       130,   52,   55,   52,  133,  176,   52,   55,   52,  177,
-      243,  134,  137,  135,  167,  136,  244,  140,  178,  138,
+      244,  134,  137,  135,  167,  136,  245,  140,  178,  138,
        52,   55,   52,  223,  139,   52,   55,   52,  142,   52,
-       55,   52,  141,  144,   52,   55,   52,  794,  143,   52,
+       55,   52,  141,  144,   52,   55,   52,  821,  143,   52,
        55,   52,   52,   55,   52,   52,   55,   52,  145,  146,
 
-      172,  230,  231,  180,  232,  181,  173,  174,  182,  578,
-      183,  115,  115,  579,   52,   55,   52,  147,  116,   60,
-       52,  246,   52,  120,  120,  148,  247,  150,  383,  793,
-      149,  192,  152,  384,  153,  172,  151,  154,  155,  156,
-      101,  173,  224,  157,  116,   60,  104,  158,  491,  106,
-      159,  118,  118,  492,  160,  191,  191,   52,  792,   52,
+      172,  820,  228,  180,  247,  181,  173,  174,  182,  248,
+      183,  115,  115,  229,   52,   55,   52,  147,  116,   60,
+       52,  322,   52,  120,  120,  148,  819,  150,  323,  589,
+      149,  192,  152,  590,  153,  172,  151,  154,  155,  156,
+      101,  173,  224,  157,  116,   60,  104,  158,  386,  106,
+      159,  118,  118,  387,  160,  191,  191,   52,  818,   52,
       120,  120,   52,   55,   52,   52,   55,   52,   57,   52,
        55,   52,   52,   55,   52,   52,   55,   52,   52,   55,
        52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
        52,   55,   52,  193,   57,   52,   55,   52,   52,   55,
 
        52,   52,   55,   52,   52,   55,   52,  194,   52,   55,
-       52,  198,   52,   55,   52,  252,  195,   52,   55,   52,
-      196,  791,  202,  197,  199,  790,  200,   52,   55,   52,
-       52,   55,   52,  253,  789,  201,  203,  204,   52,   55,
+       52,  198,   52,   55,   52,  253,  195,   52,   55,   52,
+      196,  817,  202,  197,  199,  816,  200,   52,   55,   52,
+       52,   55,   52,  254,  815,  201,  203,  204,   52,   55,
        52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-      788,  205,   52,   55,   52,   52,   55,   52,  787,  206,
-      786,  207,  529,  785,  209,   52,   55,   52,  530,  208,
-       52,   55,   52,  784,  210,   52,   55,   52,   52,   55,
-       52,  783,   52,   55,   52,  320,  782,  211,  191,  191,
-      212,  216,  321,  214,  213,  781,   60,  215,   52,   55,
-
-       52,  217,   52,   55,   52,   52,   55,   52,  614,  615,
-      218,  263,  780,  220,  221,   52,   55,   52,   52,   55,
-       52,  779,   60,  778,  219,  777,  264,  265,  266,  267,
-       52,   55,   52,   52,   55,   52,   52,   55,   52,  776,
-       52,   55,   52,  775,  774,   52,   55,   52,   52,   55,
-       52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,   52,   55,   52,  268,   52,   55,   52,
-       52,   55,   52,  773,  772,  270,   52,   55,   52,  269,
-      271,  272,   52,   55,   52,   52,   55,   52,  771,  275,
-      770,  769,  276,   52,   55,   52,  768,  273,  767,  277,
-
-      766,  765,  274,   52,   55,   52,  764,  278,  280,   52,
-       55,   52,  281,   52,   55,   52,   52,   55,   52,  279,
-       52,   55,   52,  763,  762,  283,  761,  284,  760,  759,
-      282,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,  758,  757,  285,   52,   55,   52,  756,
-      755,  287,   52,   55,   52,   52,   55,   52,  288,  328,
-      754,  286,   52,   55,   52,   52,   55,   52,   52,   55,
-       52,  753,  330,   52,   55,   52,  329,  752,  751,  332,
-      750,  289,  333,  749,  290,   52,   55,   52,   52,   55,
-       52,  331,   52,   55,   52,   52,   55,   52,   52,   55,
-
-       52,   52,   55,   52,   52,   55,   52,  748,  747,  334,
-       52,   55,   52,   52,   55,   52,   52,   55,   52,  335,
+      814,  205,   52,   55,   52,   52,   55,   52,  498,  206,
+      813,  207,  538,  499,  209,   52,   55,   52,  539,  208,
+       52,   55,   52,  812,  210,   52,   55,   52,   52,   55,
+       52,  811,   52,   55,   52,  231,  232,  211,  233,  810,
+      212,  216,  809,  214,  213,  191,  191,  215,   52,   55,
+
+       52,  217,  808,   60,   52,   55,   52,   52,   55,   52,
+      218,  627,  628,  220,  221,   52,   55,   52,   52,   55,
+       52,  264,  807,  806,  219,   52,   55,   52,  805,   60,
+       52,   55,   52,   52,   55,   52,  265,  266,  267,  268,
        52,   55,   52,   52,   55,   52,   52,   55,   52,   52,
-       55,   52,   52,   55,   52,   52,   55,   52,  339,  746,
-      745,  336,  744,  743,  340,  742,  741,  337,  740,  739,
-      338,   52,   55,   52,  738,  342,  737,  736,  341,  735,
-      343,   52,   55,   52,  345,   52,   55,   52,   52,   55,
-       52,   52,   55,   52,   52,   55,   52,  734,  344,  733,
-      732,  394,  731,   52,   55,   52,  730,  346,   52,   55,
-       52,  388,  389,   52,   55,   52,  729,  348,  728,  349,
-
-      390,  387,  727,  391,  726,  347,  725,  392,  393,   52,
-       55,   52,  724,  395,   52,   55,   52,   52,   55,   52,
-      723,  396,   52,   55,   52,   52,   55,   52,   52,   55,
-       52,   52,   55,   52,  397,   52,   55,   52,   52,   55,
-       52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,  722,  399,  721,  720,  398,   52,   55,
-       52,   52,   55,   52,  401,   52,   55,   52,  411,  719,
-      400,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-      402,  718,  717,  412,  413,  716,  403,  715,  414,  714,
-       52,   55,   52,  713,  454,  405,  450,  406,  449,  404,
-
-       52,   55,   52,   52,   55,   52,  712,  407,   52,   55,
-       52,   52,   55,   52,  451,  453,  711,  452,  710,  709,
-      408,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-      708,  458,   52,   55,   52,  707,  457,  455,   52,   55,
-       52,  456,   52,   55,   52,  706,  459,   52,   55,   52,
-       52,   55,   52,   52,   55,   52,  705,  460,   52,   55,
-       52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,   52,   55,   52,  462,  704,   52,   55,
-       52,   52,   55,   52,   52,   55,   52,  461,  703,  464,
-      702,  701,  508,  700,  463,  506,  699,  465,  507,   52,
-
-       55,   52,  466,   52,   55,   52,   52,   55,   52,   52,
-       55,   52,   52,   55,   52,   52,   55,   52,  510,  698,
-      511,  697,  696,  509,  695,  514,   52,   55,   52,  694,
-      512,  693,  692,  513,   52,   55,   52,   52,   55,   52,
-      516,  515,   52,   55,   52,   52,   55,   52,   52,   55,
+       55,   52,   52,   55,   52,   52,   55,   52,   52,   55,
+       52,   52,   55,   52,  804,  803,  269,   52,   55,   52,
+      802,  801,  271,  800,  270,   52,   55,   52,  799,  273,
+      272,   52,   55,   52,   52,   55,   52,  276,  798,  797,
+      277,   52,   55,   52,  796,  274,  795,  278,  794,  793,
+
+      275,   52,   55,   52,   52,   55,   52,  279,   52,   55,
+       52,  792,  791,  281,   52,   55,   52,  282,   52,   55,
+       52,   52,   55,   52,  280,   52,   55,   52,   52,   55,
+       52,  284,  283,  790,  789,  285,   52,   55,   52,   52,
+       55,   52,   52,   55,   52,  788,  286,   52,   55,   52,
+       52,   55,   52,  288,   52,   55,   52,  787,  330,  289,
+      287,   52,   55,   52,   52,   55,   52,  332,  334,  786,
+      785,  335,  331,  784,  783,  290,   52,   55,   52,  333,
+       52,   55,   52,  291,   52,   55,   52,   52,   55,   52,
+       52,   55,   52,   52,   55,   52,   52,   55,   52,   52,
+
+       55,   52,  782,   52,   55,   52,   52,   55,   52,   52,
+       55,   52,  336,  781,  337,   52,   55,   52,   52,   55,
        52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,  691,  690,   52,   55,   52,  517,   52,
-       55,   52,   52,   55,   52,   52,   55,   52,  689,  688,
-      553,  518,  554,  686,  685,  557,  519,   52,   55,   52,
-       52,   55,   52,  684,  555,  558,  683,  556,   52,   55,
-
-       52,   52,   55,   52,   52,   55,   52,  559,  560,  561,
-       52,   55,   52,   52,   55,   52,   52,   55,   52,  682,
-      681,  564,  565,   52,   55,   52,  680,  563,   52,   55,
-       52,   52,   55,   52,  679,  562,  678,  597,   52,   55,
+       52,   55,   52,  341,  780,  779,  338,  342,   52,   55,
+       52,  778,  339,  777,  776,  340,   52,   55,   52,  775,
+      344,  343,   52,   55,   52,  345,   52,   55,   52,  347,
+      774,   52,   55,   52,   52,   55,   52,  773,   52,   55,
+       52,  397,  772,  346,  348,  771,  391,  392,   52,   55,
+       52,   52,   55,   52,  350,  393,  770,  351,  394,  769,
+      349,  390,  395,  396,   52,   55,   52,  768,  398,  767,
+
+      766,  400,   52,   55,   52,  765,  399,   52,   55,   52,
+       52,   55,   52,   52,   55,   52,   52,   55,   52,   52,
+       55,   52,   52,   55,   52,   52,   55,   52,   52,   55,
        52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-      677,  676,  598,  596,   52,   55,   52,  599,   52,   55,
-       52,   52,   55,   52,  600,   52,   55,   52,   52,   55,
-       52,  675,  674,  602,  603,   52,   55,   52,   52,   55,
-       52,   52,   55,   52,  673,  672,  601,   52,   55,   52,
-      671,  670,  605,  669,  634,  604,   52,   55,   52,   52,
+      764,  763,  402,   52,   55,   52,  762,  401,   52,   55,
+       52,  761,  404,   52,   55,   52,  760,  759,  403,   52,
+       55,   52,  414,  415,   52,   55,   52,  758,  405,   52,
+       55,   52,  757,  406,  756,  455,  755,  754,  416,  417,
+      408,  753,  752,  418,  409,  751,  407,  750,  454,   52,
+       55,   52,   52,   55,   52,  410,  749,   52,   55,   52,
+
+       52,   55,   52,  456,  458,  748,  457,  747,  411,   52,
+       55,   52,   52,   55,   52,  746,  745,  459,   52,   55,
+       52,   52,   55,   52,  744,  463,  743,  462,   52,   55,
+       52,   52,   55,   52,  742,  460,   52,   55,   52,  461,
+      464,   52,   55,   52,   52,   55,   52,   52,   55,   52,
+       52,   55,   52,  465,   52,   55,   52,   52,   55,   52,
+       52,   55,   52,   52,   55,   52,   52,   55,   52,  741,
+      467,  740,   52,   55,   52,   52,   55,   52,  739,  738,
+      466,  737,  736,  469,  735,   52,   55,   52,  468,  513,
+      470,  734,  514,  515,  733,  471,   52,   55,   52,   52,
 
        55,   52,   52,   55,   52,   52,   55,   52,   52,   55,
+       52,   52,   55,   52,  517,  732,  518,   52,   55,   52,
+      516,  521,   52,   55,   52,  731,  519,  730,  523,  520,
+      729,  728,  522,   52,   55,   52,   52,   55,   52,   52,
+       55,   52,   52,   55,   52,   52,   55,   52,   52,   55,
+       52,   52,   55,   52,   52,   55,   52,  727,  726,   52,
+       55,   52,  725,  724,  524,   52,   55,   52,   52,   55,
+       52,   52,   55,   52,  562,  525,  563,   52,   55,   52,
+      526,  566,   52,   55,   52,  567,   52,   55,   52,  723,
+      564,  722,  721,  565,  720,  719,  569,  718,  717,  568,
+
+       52,   55,   52,   52,   55,   52,  716,  715,  570,   52,
+       55,   52,   52,   55,   52,   52,   55,   52,  714,  713,
+      573,  574,   52,   55,   52,  712,  572,   52,   55,   52,
+       52,   55,   52,  711,  571,  710,  608,   52,   55,   52,
+       52,   55,   52,   52,   55,   52,   52,   55,   52,  709,
+      708,  609,  607,   52,   55,   52,  610,   52,   55,   52,
+       52,   55,   52,  611,   52,   55,   52,   52,   55,   52,
+      707,  706,  613,  614,   52,   55,   52,   52,   55,   52,
+       52,   55,   52,  705,  703,  612,   52,   55,   52,  702,
+      701,  616,  700,  647,  615,   52,   55,   52,   52,   55,
+
        52,   52,   55,   52,   52,   55,   52,   52,   55,   52,
-      668,  635,   52,   55,   52,  637,  667,  666,  636,   52,
-       55,   52,  662,  638,   52,   55,   52,  661,  660,  663,
-      659,  639,   52,   55,   52,   52,   55,   52,   52,   55,
-       52,  658,  657,  664,   52,   55,   52,   52,   55,   52,
-       52,   55,   52,  656,  687,  655,  665,   52,   55,   52,
-       40,   40,   40,   40,   43,   43,   43,   43,   46,   46,
-       46,   46,   48,   48,   48,   48,   55,   55,   63,   63,
-      121,  654,  121,  121,  653,  652,  651,  650,  649,  648,
-
-      647,  646,  645,  644,  643,  642,  641,  640,  633,  632,
-      631,  630,  629,  628,  627,  626,  625,  624,  623,  622,
-      621,  620,  619,  618,  617,  616,  613,  612,  611,  610,
-      609,  608,  607,  606,  595,  594,  593,  592,  591,  590,
-      589,  588,  587,  586,  585,  584,  583,  582,  581,  580,
-      577,  576,  575,  574,  573,  572,  571,  570,  569,  568,
-      567,  566,  552,  551,  550,  549,  548,  547,  546,  545,
-      544,  543,  542,  541,  540,  539,  538,  537,  536,  535,
-      534,  533,  532,  531,  526,  525,  524,  523,  522,  521,
-      520,  505,  504,  503,  502,  501,  500,  499,  498,  497,
-
-      496,  495,  494,  493,  490,  489,  488,  487,  486,  485,
+       52,   55,   52,   52,   55,   52,   52,   55,   52,  699,
+      648,   52,   55,   52,  650,  698,  697,  649,   52,   55,
+       52,  696,  651,   52,   55,   52,  695,  694,  678,  693,
+      652,   52,   55,   52,   52,   55,   52,   52,   55,   52,
+      692,  691,  679,   52,   55,   52,   52,   55,   52,   52,
+       55,   52,  690,  704,  689,  680,   52,   55,   52,   40,
+       40,   40,   40,   43,   43,   43,   43,   46,   46,   46,
+       46,   48,   48,   48,   48,   55,   55,   63,   63,  121,
+      688,  121,  121,  687,  686,  685,  684,  683,  682,  681,
+
+      677,  676,  675,  674,  673,  672,  671,  670,  669,  668,
+      667,  666,  665,  664,  663,  662,  661,  660,  659,  658,
+      657,  656,  655,  654,  653,  646,  645,  644,  643,  642,
+      641,  640,  639,  638,  637,  636,  635,  634,  633,  632,
+      631,  630,  629,  626,  625,  624,  623,  622,  621,  620,
+      619,  618,  617,  606,  605,  604,  603,  602,  601,  600,
+      599,  598,  597,  596,  595,  594,  593,  592,  591,  588,
+      587,  586,  585,  584,  583,  582,  581,  580,  579,  578,
+      577,  576,  575,  561,  560,  559,  558,  557,  556,  555,
+      554,  553,  552,  551,  550,  549,  548,  547,  546,  545,
+
+      544,  543,  542,  541,  540,  535,  534,  533,  532,  531,
+      530,  529,  528,  527,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  500,  497,  496,  495,
+      494,  493,  492,  491,  490,  489,  488,  487,  486,  485,
       484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
-      474,  473,  472,  471,  470,  469,  468,  467,  448,  447,
+      474,  473,  472,  453,  452,  451,  450,  449,  448,  447,
       446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
       436,  435,  434,  433,  432,  431,  430,  429,  428,  427,
-      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
-      416,  415,  410,  409,  386,  385,  382,  381,  380,  379,
-      378,  377,  376,  375,  374,  373,  372,  371,  370,  369,
-      368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
-      358,  357,  356,  355,  354,  353,  352,  351,  350,  297,
-
-      327,  326,  325,  324,  323,  322,  319,  318,  317,  316,
-      315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
-      305,  304,  303,  302,  301,  300,  299,  296,  295,  294,
-      293,  292,  247,  243,  236,  262,  261,  260,  259,  258,
-      257,  256,  255,  254,  251,  250,  249,  248,  245,  242,
-      241,  238,  235,  234,  233,  229,  228,  227,  186,  181,
-      165,  190,  189,  188,  185,  184,  179,  175,  169,  162,
-      161,  114,  113,   93,   62,  801,   41,    7,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801
+      426,  425,  424,  423,  422,  421,  420,  419,  413,  412,
+      389,  388,  385,  384,  383,  382,  381,  380,  379,  378,
+
+      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
+      367,  366,  365,  364,  363,  362,  361,  360,  359,  358,
+      357,  356,  355,  354,  353,  352,  299,  329,  328,  327,
+      326,  325,  324,  321,  320,  319,  318,  317,  316,  315,
+      314,  313,  312,  311,  310,  309,  308,  307,  306,  305,
+      304,  303,  302,  301,  298,  297,  296,  295,  294,  293,
+      248,  244,  237,  263,  262,  261,  260,  259,  258,  257,
+      256,  255,  252,  251,  250,  249,  246,  243,  242,  239,
+      236,  235,  234,  230,  227,  186,  181,  165,  190,  189,
+      188,  185,  184,  179,  175,  169,  162,  161,  114,  113,
+
+       93,   62,  828,   41,    7,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828
     } ;
 
-static yyconst flex_int16_t yy_chk[1744] =
+static yyconst flex_int16_t yy_chk[1771] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -900,49 +910,49 @@ static yyconst flex_int16_t yy_chk[1744] =
         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,    5,    4,    6,    2,
-        4,    5,   11,    6,   11,   12,   98,  809,   13,   12,
+        4,    5,   11,    6,   11,   12,   98,  836,   13,   12,
        13,   13,   14,   14,   14,   14,   14,   15,   19,   19,
        19,   15,   14,   14,   16,   38,   16,   16,   17,   38,
 
-       17,   17,  798,   98,   16,   20,   20,   20,   17,   21,
+       17,   17,  825,   98,   16,   20,   20,   20,   17,   21,
        21,   21,   22,   22,   22,   24,   24,   24,   14,   14,
        23,   23,   23,   21,   25,   25,   25,   27,   27,   27,
        16,   20,   48,   46,   17,   46,   48,   26,   26,   26,
        28,   28,   28,   29,   29,   29,   16,   30,   30,   30,
-       31,   31,   31,  796,   34,   34,   34,   22,   99,   23,
+       31,   31,   31,  823,   34,   34,   34,   22,   99,   23,
        24,   52,   23,   52,   55,   23,   55,   99,   25,   26,
       110,   27,   32,   32,   32,   29,   57,   25,   57,   26,
        33,   33,   33,  100,  110,   28,   35,   35,   35,   36,
        36,   36,  100,   30,  102,   50,   50,   31,   34,  117,
 
        31,  117,   50,   50,   53,   53,   53,   63,   63,   63,
-      231,   32,   32,  231,   32,   51,   33,   51,   51,   33,
+      232,   32,   32,  232,   32,   51,   33,   51,   51,   33,
        94,   32,  102,   36,   94,   51,   35,   33,   50,   50,
       168,   35,  118,  118,   33,   39,   39,   39,   39,   39,
        39,   39,  168,   39,  154,  158,   39,   39,  170,   39,
        39,   51,   39,   39,   39,   39,   39,   54,  158,   54,
-       54,   54,   64,   64,   64,  170,  795,   54,   54,   56,
-       56,  154,   56,   56,   56,   65,   65,   65,  476,   64,
+       54,   54,   64,   64,   64,  170,  822,   54,   54,   56,
+       56,  154,   56,   56,   56,   65,   65,   65,  483,   64,
        66,   66,   66,   67,   67,   67,   68,   68,   68,   69,
-       69,   69,  476,   54,   54,  794,   65,   70,   70,   70,
+       69,   69,  483,   54,   54,  821,   65,   70,   70,   70,
 
        71,   71,   71,   72,   72,   72,   73,   73,   73,   74,
        74,   74,   75,   75,   75,   67,  222,  222,   68,   76,
        76,   76,   77,   77,   77,   66,   78,   78,   78,   79,
-       79,   79,  792,   69,   80,   80,   80,   81,   81,   81,
-       82,   82,   82,   83,   83,   83,  791,   70,   73,   72,
+       79,   79,  819,   69,   80,   80,   80,   81,   81,   81,
+       82,   82,   82,   83,   83,   83,  818,   70,   73,   72,
        71,   84,   84,   84,   74,  105,   85,   85,   85,  105,
       174,   75,   78,   76,  156,   77,  174,   80,  105,   79,
        86,   86,   86,  156,   79,   87,   87,   87,   82,   89,
-       89,   89,   81,   84,   88,   88,   88,  790,   83,   90,
+       89,   89,   81,   84,   88,   88,   88,  817,   83,   90,
        90,   90,   91,   91,   91,   92,   92,   92,   84,   85,
 
-      103,  164,  164,  107,  164,  107,  103,  103,  107,  532,
-      107,  115,  115,  532,  123,  123,  123,   86,  115,  115,
-      119,  176,  119,  119,  119,   87,  176,   89,  325,  788,
-       88,  123,   91,  325,   92,  157,   90,   95,   95,   95,
-       95,  157,  157,   95,  115,  115,   95,   95,  434,   95,
-       95,  116,  116,  434,   95,  116,  116,  120,  784,  120,
+      103,  814,  162,  107,  176,  107,  103,  103,  107,  176,
+      107,  115,  115,  162,  123,  123,  123,   86,  115,  115,
+      119,  256,  119,  119,  119,   87,  810,   89,  256,  541,
+       88,  123,   91,  541,   92,  157,   90,   95,   95,   95,
+       95,  157,  157,   95,  115,  115,   95,   95,  327,   95,
+       95,  116,  116,  327,   95,  116,  116,  120,  809,  120,
       120,  120,  124,  124,  124,  125,  125,  125,  120,  126,
       126,  126,  127,  127,  127,  128,  128,  128,  129,  129,
       129,  130,  130,  130,  131,  131,  131,  132,  132,  132,
@@ -950,141 +960,143 @@ static yyconst flex_int16_t yy_chk[1744] =
 
       135,  136,  136,  136,  137,  137,  137,  125,  138,  138,
       138,  129,  139,  139,  139,  181,  126,  141,  141,  141,
-      127,  783,  133,  128,  130,  780,  131,  140,  140,  140,
-      142,  142,  142,  181,  779,  132,  135,  136,  143,  143,
+      127,  806,  133,  128,  130,  805,  131,  140,  140,  140,
+      142,  142,  142,  181,  803,  132,  135,  136,  143,  143,
       143,  144,  144,  144,  145,  145,  145,  146,  146,  146,
-      777,  137,  147,  147,  147,  148,  148,  148,  776,  138,
-      775,  139,  478,  774,  141,  149,  149,  149,  478,  140,
-      150,  150,  150,  773,  142,  151,  151,  151,  152,  152,
-      152,  772,  153,  153,  153,  255,  771,  143,  191,  191,
-      144,  148,  255,  146,  145,  770,  191,  147,  192,  192,
-
-      192,  149,  194,  194,  194,  193,  193,  193,  574,  574,
-      150,  193,  768,  152,  153,  195,  195,  195,  196,  196,
-      196,  767,  191,  766,  151,  765,  193,  193,  193,  193,
-      197,  197,  197,  198,  198,  198,  199,  199,  199,  763,
-      200,  200,  200,  762,  761,  201,  201,  201,  202,  202,
-      202,  203,  203,  203,  204,  204,  204,  205,  205,  205,
-      206,  206,  206,  207,  207,  207,  196,  208,  208,  208,
-      209,  209,  209,  760,  759,  198,  210,  210,  210,  197,
-      200,  201,  211,  211,  211,  212,  212,  212,  757,  205,
-      756,  754,  206,  213,  213,  213,  753,  202,  752,  207,
-
-      751,  750,  204,  214,  214,  214,  749,  208,  210,  215,
-      215,  215,  210,  216,  216,  216,  217,  217,  217,  209,
-      218,  218,  218,  748,  747,  212,  746,  213,  745,  744,
-      211,  219,  219,  219,  220,  220,  220,  221,  221,  221,
-      263,  263,  263,  742,  741,  214,  264,  264,  264,  740,
-      739,  217,  265,  265,  265,  268,  268,  268,  218,  263,
-      737,  215,  266,  266,  266,  267,  267,  267,  269,  269,
-      269,  736,  265,  270,  270,  270,  264,  735,  734,  267,
-      732,  219,  267,  731,  221,  271,  271,  271,  272,  272,
-      272,  266,  273,  273,  273,  274,  274,  274,  275,  275,
-
-      275,  276,  276,  276,  277,  277,  277,  730,  729,  270,
-      278,  278,  278,  279,  279,  279,  280,  280,  280,  271,
-      281,  281,  281,  282,  282,  282,  283,  283,  283,  284,
-      284,  284,  285,  285,  285,  286,  286,  286,  277,  728,
-      726,  274,  725,  724,  278,  723,  722,  275,  720,  719,
-      276,  287,  287,  287,  718,  281,  717,  716,  280,  715,
-      283,  288,  288,  288,  285,  289,  289,  289,  290,  290,
-      290,  328,  328,  328,  330,  330,  330,  714,  284,  713,
-      712,  330,  711,  329,  329,  329,  710,  287,  334,  334,
-      334,  329,  329,  331,  331,  331,  709,  289,  708,  290,
-
-      329,  328,  707,  329,  705,  288,  704,  329,  329,  332,
-      332,  332,  703,  331,  333,  333,  333,  335,  335,  335,
-      702,  332,  336,  336,  336,  337,  337,  337,  338,  338,
-      338,  339,  339,  339,  333,  340,  340,  340,  341,  341,
-      341,  342,  342,  342,  343,  343,  343,  344,  344,  344,
-      345,  345,  345,  701,  336,  700,  699,  335,  346,  346,
-      346,  347,  347,  347,  338,  348,  348,  348,  352,  698,
-      337,  349,  349,  349,  387,  387,  387,  392,  392,  392,
-      339,  697,  696,  352,  352,  695,  341,  694,  352,  693,
-      388,  388,  388,  692,  392,  346,  388,  347,  387,  345,
-
-      389,  389,  389,  390,  390,  390,  691,  348,  391,  391,
-      391,  393,  393,  393,  389,  391,  690,  390,  689,  688,
-      349,  394,  394,  394,  395,  395,  395,  396,  396,  396,
-      686,  395,  397,  397,  397,  685,  394,  393,  398,  398,
-      398,  393,  399,  399,  399,  684,  396,  400,  400,  400,
-      401,  401,  401,  402,  402,  402,  683,  397,  403,  403,
-      403,  404,  404,  404,  405,  405,  405,  406,  406,  406,
-      407,  407,  407,  408,  408,  408,  399,  682,  449,  449,
-      449,  450,  450,  450,  451,  451,  451,  398,  681,  402,
-      680,  679,  451,  678,  400,  449,  677,  404,  450,  452,
-
-      452,  452,  406,  453,  453,  453,  454,  454,  454,  455,
-      455,  455,  456,  456,  456,  457,  457,  457,  453,  676,
-      454,  675,  674,  452,  673,  457,  458,  458,  458,  672,
-      455,  671,  670,  456,  459,  459,  459,  460,  460,  460,
-      459,  458,  461,  461,  461,  462,  462,  462,  463,  463,
-      463,  464,  464,  464,  465,  465,  465,  466,  466,  466,
-      506,  506,  506,  669,  668,  507,  507,  507,  460,  508,
-      508,  508,  509,  509,  509,  510,  510,  510,  667,  666,
-      506,  462,  507,  662,  661,  510,  464,  511,  511,  511,
-      512,  512,  512,  660,  508,  511,  659,  509,  513,  513,
-
-      513,  514,  514,  514,  515,  515,  515,  512,  513,  514,
-      516,  516,  516,  517,  517,  517,  518,  518,  518,  658,
-      657,  517,  517,  519,  519,  519,  656,  516,  553,  553,
-      553,  554,  554,  554,  655,  515,  654,  554,  555,  555,
-      555,  556,  556,  556,  557,  557,  557,  558,  558,  558,
-      652,  650,  557,  553,  559,  559,  559,  558,  560,  560,
-      560,  561,  561,  561,  559,  562,  562,  562,  563,  563,
-      563,  649,  648,  562,  562,  564,  564,  564,  565,  565,
-      565,  596,  596,  596,  647,  646,  561,  597,  597,  597,
-      645,  644,  565,  643,  597,  564,  598,  598,  598,  599,
-
-      599,  599,  600,  600,  600,  601,  601,  601,  602,  602,
-      602,  603,  603,  603,  604,  604,  604,  605,  605,  605,
-      642,  598,  634,  634,  634,  603,  641,  640,  602,  635,
-      635,  635,  633,  604,  636,  636,  636,  632,  631,  634,
-      630,  605,  637,  637,  637,  638,  638,  638,  639,  639,
-      639,  629,  627,  636,  663,  663,  663,  664,  664,  664,
-      665,  665,  665,  626,  663,  622,  637,  687,  687,  687,
-      802,  802,  802,  802,  803,  803,  803,  803,  804,  804,
-      804,  804,  805,  805,  805,  805,  806,  806,  807,  807,
-      808,  621,  808,  808,  620,  619,  618,  617,  616,  615,
-
-      614,  613,  612,  611,  610,  609,  608,  607,  595,  594,
-      592,  591,  590,  588,  587,  586,  585,  584,  583,  582,
-      581,  580,  579,  578,  576,  575,  573,  572,  571,  570,
-      569,  568,  567,  566,  552,  550,  547,  546,  545,  544,
-      543,  542,  541,  540,  539,  538,  537,  535,  534,  533,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
-      521,  520,  505,  504,  503,  502,  501,  499,  498,  497,
-      496,  495,  494,  493,  492,  491,  490,  489,  488,  486,
-      483,  482,  480,  479,  475,  474,  472,  471,  470,  469,
-      468,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-
-      439,  437,  436,  435,  433,  432,  431,  430,  429,  428,
-      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
-      416,  415,  414,  413,  412,  411,  410,  409,  386,  385,
-      384,  383,  382,  381,  380,  379,  378,  377,  376,  375,
-      374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  356,  355,
-      354,  353,  351,  350,  327,  326,  324,  323,  322,  321,
-      320,  319,  318,  317,  316,  315,  314,  313,  312,  311,
-      310,  309,  308,  307,  306,  305,  304,  303,  302,  301,
-      300,  299,  298,  297,  296,  295,  294,  293,  292,  291,
-
-      261,  260,  259,  258,  257,  256,  254,  253,  252,  251,
-      250,  249,  248,  247,  246,  245,  244,  243,  242,  241,
-      240,  239,  238,  237,  236,  233,  232,  230,  229,  228,
-      227,  226,  225,  224,  223,  190,  189,  188,  187,  186,
-      185,  184,  183,  182,  180,  179,  178,  177,  175,  173,
-      171,  169,  167,  166,  165,  163,  162,  161,  160,  159,
-      155,  113,  112,  111,  109,  108,  106,  104,  101,   97,
-       96,   45,   42,   37,   18,    7,    3,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801
+      802,  137,  147,  147,  147,  148,  148,  148,  439,  138,
+      801,  139,  485,  439,  141,  149,  149,  149,  485,  140,
+      150,  150,  150,  800,  142,  151,  151,  151,  152,  152,
+      152,  799,  153,  153,  153,  164,  164,  143,  164,  798,
+      144,  148,  797,  146,  145,  191,  191,  147,  192,  192,
+
+      192,  149,  796,  191,  194,  194,  194,  195,  195,  195,
+      150,  585,  585,  152,  153,  193,  193,  193,  196,  196,
+      196,  193,  795,  793,  151,  197,  197,  197,  792,  191,
+      198,  198,  198,  199,  199,  199,  193,  193,  193,  193,
+      200,  200,  200,  201,  201,  201,  202,  202,  202,  203,
+      203,  203,  204,  204,  204,  205,  205,  205,  206,  206,
+      206,  207,  207,  207,  791,  790,  196,  208,  208,  208,
+      789,  787,  198,  786,  197,  209,  209,  209,  785,  201,
+      200,  210,  210,  210,  211,  211,  211,  205,  784,  783,
+      206,  212,  212,  212,  781,  202,  780,  207,  778,  777,
+
+      204,  213,  213,  213,  214,  214,  214,  208,  215,  215,
+      215,  776,  775,  210,  216,  216,  216,  210,  217,  217,
+      217,  218,  218,  218,  209,  219,  219,  219,  220,  220,
+      220,  212,  211,  774,  773,  213,  221,  221,  221,  264,
+      264,  264,  265,  265,  265,  772,  214,  266,  266,  266,
+      267,  267,  267,  217,  268,  268,  268,  771,  264,  218,
+      215,  269,  269,  269,  270,  270,  270,  266,  268,  770,
+      769,  268,  265,  768,  767,  219,  271,  271,  271,  267,
+      272,  272,  272,  221,  273,  273,  273,  274,  274,  274,
+      275,  275,  275,  276,  276,  276,  277,  277,  277,  278,
+
+      278,  278,  765,  279,  279,  279,  280,  280,  280,  281,
+      281,  281,  271,  764,  272,  282,  282,  282,  283,  283,
+      283,  284,  284,  284,  285,  285,  285,  286,  286,  286,
+      287,  287,  287,  278,  763,  762,  275,  279,  288,  288,
+      288,  760,  276,  759,  758,  277,  289,  289,  289,  757,
+      282,  281,  290,  290,  290,  284,  291,  291,  291,  286,
+      755,  330,  330,  330,  332,  332,  332,  754,  331,  331,
+      331,  332,  753,  285,  288,  752,  331,  331,  333,  333,
+      333,  335,  335,  335,  290,  331,  751,  291,  331,  749,
+      289,  330,  331,  331,  334,  334,  334,  747,  333,  746,
+
+      745,  335,  336,  336,  336,  744,  334,  337,  337,  337,
+      338,  338,  338,  339,  339,  339,  340,  340,  340,  341,
+      341,  341,  342,  342,  342,  343,  343,  343,  344,  344,
+      344,  345,  345,  345,  346,  346,  346,  347,  347,  347,
+      743,  741,  338,  348,  348,  348,  740,  337,  349,  349,
+      349,  739,  340,  350,  350,  350,  738,  737,  339,  351,
+      351,  351,  354,  354,  390,  390,  390,  736,  341,  391,
+      391,  391,  735,  343,  734,  391,  733,  732,  354,  354,
+      348,  731,  730,  354,  349,  729,  347,  728,  390,  392,
+      392,  392,  393,  393,  393,  350,  727,  394,  394,  394,
+
+      395,  395,  395,  392,  394,  726,  393,  724,  351,  396,
+      396,  396,  397,  397,  397,  723,  722,  395,  398,  398,
+      398,  399,  399,  399,  721,  398,  720,  397,  400,  400,
+      400,  401,  401,  401,  719,  396,  402,  402,  402,  396,
+      399,  403,  403,  403,  404,  404,  404,  405,  405,  405,
+      406,  406,  406,  400,  407,  407,  407,  408,  408,  408,
+      409,  409,  409,  410,  410,  410,  411,  411,  411,  718,
+      402,  717,  454,  454,  454,  455,  455,  455,  716,  715,
+      401,  714,  713,  405,  712,  456,  456,  456,  403,  454,
+      407,  711,  455,  456,  710,  409,  457,  457,  457,  458,
+
+      458,  458,  459,  459,  459,  460,  460,  460,  461,  461,
+      461,  462,  462,  462,  458,  709,  459,  463,  463,  463,
+      457,  462,  464,  464,  464,  708,  460,  707,  464,  461,
+      706,  705,  463,  465,  465,  465,  466,  466,  466,  467,
+      467,  467,  468,  468,  468,  469,  469,  469,  470,  470,
+      470,  471,  471,  471,  513,  513,  513,  703,  702,  514,
+      514,  514,  701,  700,  465,  515,  515,  515,  516,  516,
+      516,  517,  517,  517,  513,  467,  514,  518,  518,  518,
+      469,  517,  519,  519,  519,  518,  520,  520,  520,  699,
+      515,  698,  697,  516,  696,  695,  520,  694,  693,  519,
+
+      521,  521,  521,  522,  522,  522,  692,  691,  521,  523,
+      523,  523,  524,  524,  524,  525,  525,  525,  690,  689,
+      524,  524,  526,  526,  526,  688,  523,  562,  562,  562,
+      563,  563,  563,  687,  522,  686,  563,  564,  564,  564,
+      565,  565,  565,  566,  566,  566,  567,  567,  567,  685,
+      684,  566,  562,  568,  568,  568,  567,  569,  569,  569,
+      570,  570,  570,  568,  571,  571,  571,  572,  572,  572,
+      683,  682,  571,  571,  573,  573,  573,  574,  574,  574,
+      607,  607,  607,  681,  677,  570,  608,  608,  608,  676,
+      675,  574,  674,  608,  573,  609,  609,  609,  610,  610,
+
+      610,  611,  611,  611,  612,  612,  612,  613,  613,  613,
+      614,  614,  614,  615,  615,  615,  616,  616,  616,  673,
+      609,  647,  647,  647,  614,  672,  671,  613,  648,  648,
+      648,  670,  615,  649,  649,  649,  669,  667,  647,  665,
+      616,  650,  650,  650,  651,  651,  651,  652,  652,  652,
+      664,  663,  649,  678,  678,  678,  679,  679,  679,  680,
+      680,  680,  662,  678,  661,  650,  704,  704,  704,  829,
+      829,  829,  829,  830,  830,  830,  830,  831,  831,  831,
+      831,  832,  832,  832,  832,  833,  833,  834,  834,  835,
+      660,  835,  835,  659,  658,  657,  656,  655,  654,  653,
+
+      646,  645,  644,  643,  642,  640,  639,  635,  634,  633,
+      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  606,  605,  603,  602,  601,
+      599,  598,  597,  596,  595,  594,  593,  592,  591,  590,
+      589,  587,  586,  584,  583,  582,  581,  580,  579,  578,
+      577,  576,  575,  561,  559,  556,  555,  554,  553,  552,
+      551,  550,  549,  548,  547,  546,  544,  543,  542,  540,
+      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
+      529,  528,  527,  512,  511,  510,  509,  508,  506,  505,
+      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
+
+      493,  490,  489,  487,  486,  482,  481,  479,  478,  477,
+      476,  475,  474,  473,  453,  452,  451,  450,  449,  448,
+      447,  446,  445,  444,  442,  441,  440,  438,  437,  436,
+      435,  434,  433,  431,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  421,  420,  419,  418,  417,  416,  415,
+      414,  413,  412,  389,  388,  387,  386,  385,  384,  383,
+      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
+      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
+      362,  361,  360,  359,  358,  357,  356,  355,  353,  352,
+      329,  328,  326,  325,  324,  323,  322,  321,  320,  319,
+
+      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
+      308,  307,  306,  305,  304,  303,  302,  301,  300,  299,
+      298,  297,  296,  295,  294,  293,  292,  262,  261,  260,
+      259,  258,  257,  255,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  234,  233,  231,  230,  229,  228,  227,  226,
+      225,  224,  223,  190,  189,  188,  187,  186,  185,  184,
+      183,  182,  180,  179,  178,  177,  175,  173,  171,  169,
+      167,  166,  165,  163,  161,  160,  159,  155,  113,  112,
+      111,  109,  108,  106,  104,  101,   97,   96,   45,   42,
+
+       37,   18,    7,    3,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
+      828,  828,  828,  828,  828,  828,  828,  828,  828,  828
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1152,7 +1164,7 @@ static FILE *openFile(const char *);
 static void fatallex(char *);
 
 
-#line 1156 &quot;lexer.c.tmp&quot;
+#line 1168 &quot;lexer.c.tmp&quot;
 
 #define INITIAL 0
 #define code 1
@@ -1313,7 +1325,7 @@ YY_DECL
 #line 55 &quot;lexer.l&quot;
 
 
-#line 1317 &quot;lexer.c.tmp&quot;
+#line 1329 &quot;lexer.c.tmp&quot;
 
 	if ( !(yy_init) )
 		{
@@ -1367,13 +1379,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state &gt;= 802 )
+				if ( yy_current_state &gt;= 829 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 1678 );
+		while ( yy_base[yy_current_state] != 1705 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -2007,120 +2019,136 @@ YY_RULE_SETUP
 case 99:
 YY_RULE_SETUP
 #line 307 &quot;lexer.l&quot;
-{     /* The start of a read buffer code block. */
+{     /* The start of a get buffer code block. */
     codeIdx = 0;
-    return TK_READBUFFERCODE;
+    return TK_GETBUFFERCODE;
 }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 312 &quot;lexer.l&quot;
-{    /* The start of a write buffer code block. */
+{     /* The start of a release buffer code block. */
     codeIdx = 0;
-    return TK_WRITEBUFFERCODE;
+    return TK_RELEASEBUFFERCODE;
 }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 317 &quot;lexer.l&quot;
-{       /* The start of a segment count code block. */
+{     /* The start of a read buffer code block. */
     codeIdx = 0;
-    return TK_SEGCOUNTCODE;
+    return TK_READBUFFERCODE;
 }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 322 &quot;lexer.l&quot;
-{     /* The start of a char buffer code block. */
+{    /* The start of a write buffer code block. */
     codeIdx = 0;
-    return TK_CHARBUFFERCODE;
+    return TK_WRITEBUFFERCODE;
 }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 327 &quot;lexer.l&quot;
-{         /* The start of a pickle code block. */
+{       /* The start of a segment count code block. */
     codeIdx = 0;
-    return TK_PICKLECODE;
+    return TK_SEGCOUNTCODE;
 }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 332 &quot;lexer.l&quot;
-{       /* The start of a pre-Python code block. */
+{     /* The start of a char buffer code block. */
     codeIdx = 0;
-    return TK_PREPYCODE;
+    return TK_CHARBUFFERCODE;
 }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 337 &quot;lexer.l&quot;
-{           /* The start of a raise exception code block. */
+{         /* The start of a pickle code block. */
     codeIdx = 0;
-    return TK_RAISECODE;
+    return TK_PICKLECODE;
 }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 342 &quot;lexer.l&quot;
-{             /* The start of a documentation block. */
+{       /* The start of a pre-Python code block. */
     codeIdx = 0;
-    return TK_DOC;
+    return TK_PREPYCODE;
 }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 347 &quot;lexer.l&quot;
-{         /* The start of an exported documentation block. */
+{           /* The start of a raise exception code block. */
     codeIdx = 0;
-    return TK_EXPORTEDDOC;
+    return TK_RAISECODE;
 }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 352 &quot;lexer.l&quot;
-{            /* The start of a Makefile code block. */
+{             /* The start of a documentation block. */
     codeIdx = 0;
-    return TK_MAKEFILE;
+    return TK_DOC;
 }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 357 &quot;lexer.l&quot;
-{          /* The start of an access code block. */
+{         /* The start of an exported documentation block. */
     codeIdx = 0;
-    return TK_ACCESSCODE;
+    return TK_EXPORTEDDOC;
 }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 362 &quot;lexer.l&quot;
-{         /* The start of a get code block. */
+{            /* The start of a Makefile code block. */
     codeIdx = 0;
-    return TK_GETCODE;
+    return TK_MAKEFILE;
 }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 367 &quot;lexer.l&quot;
-{         /* The start of a set code block. */
+{          /* The start of an access code block. */
     codeIdx = 0;
-    return TK_SETCODE;
+    return TK_ACCESSCODE;
 }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 372 &quot;lexer.l&quot;
+{         /* The start of a get code block. */
+    codeIdx = 0;
+    return TK_GETCODE;
+}
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 377 &quot;lexer.l&quot;
+{         /* The start of a set code block. */
+    codeIdx = 0;
+    return TK_SETCODE;
+}
+	YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 382 &quot;lexer.l&quot;
 {           /* The end of a code block. */
     BEGIN INITIAL;
     codeIdx = -1;
     return TK_END;
 }
 	YY_BREAK
-case 113:
-/* rule 113 can match eol */
+case 115:
+/* rule 115 can match eol */
 YY_RULE_SETUP
-#line 378 &quot;lexer.l&quot;
+#line 388 &quot;lexer.l&quot;
 {          /* The end of a code line . */
     struct inputFile *ifp;
 
@@ -2140,9 +2168,9 @@ YY_RULE_SETUP
     return TK_CODELINE;
 }
 	YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 397 &quot;lexer.l&quot;
+#line 407 &quot;lexer.l&quot;
 {           /* The contents of a code line. */
     if (codeIdx == MAX_CODE_LINE_LENGTH)
         fatallex(&quot;Line is too long&quot;);
@@ -2150,19 +2178,19 @@ YY_RULE_SETUP
     codeLine[codeIdx++] = yytext[0];
 }
 	YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 404 &quot;lexer.l&quot;
+#line 414 &quot;lexer.l&quot;
 {             /* Anything else is returned as is. */
     return yytext[0];
 }
 	YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 408 &quot;lexer.l&quot;
+#line 418 &quot;lexer.l&quot;
 ECHO;
 	YY_BREAK
-#line 2166 &quot;lexer.c.tmp&quot;
+#line 2194 &quot;lexer.c.tmp&quot;
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(code):
 case YY_STATE_EOF(ccomment):
@@ -2449,7 +2477,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state &gt;= 802 )
+			if ( yy_current_state &gt;= 829 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2477,11 +2505,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state &gt;= 802 )
+		if ( yy_current_state &gt;= 829 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 801);
+	yy_is_jam = (yy_current_state == 828);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3163,7 +3191,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME &quot;yytables&quot;
 
-#line 408 &quot;lexer.l&quot;
+#line 418 &quot;lexer.l&quot;
 
 
 </diff>
      <filename>sipgen/lexer.c</filename>
    </modified>
    <modified>
      <diff>@@ -304,6 +304,16 @@ SIP_QOBJECT                 {return TK_QOBJECT;}
     return TK_CLEARCODE;
 }
 
+^%BIGetBufferCode {     /* The start of a get buffer code block. */
+    codeIdx = 0;
+    return TK_GETBUFFERCODE;
+}
+
+^%BIReleaseBufferCode {     /* The start of a release buffer code block. */
+    codeIdx = 0;
+    return TK_RELEASEBUFFERCODE;
+}
+
 ^%BIGetReadBufferCode {     /* The start of a read buffer code block. */
     codeIdx = 0;
     return TK_READBUFFERCODE;</diff>
      <filename>sipgen/lexer.l</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,7 @@
 #define PACKAGE &quot;sip&quot;
 #endif
 
-#define VERSION &quot;4.8-snapshot-20090311&quot;
+#define VERSION &quot;4.8-snapshot-20090317&quot;
 
 
 /* Global variables - see sip.h for their meaning. */</diff>
      <filename>sipgen/main.c</filename>
    </modified>
    <modified>
      <diff>@@ -78,85 +78,87 @@
      TK_VIRTUALCATCHERCODE = 280,
      TK_TRAVERSECODE = 281,
      TK_CLEARCODE = 282,
-     TK_READBUFFERCODE = 283,
-     TK_WRITEBUFFERCODE = 284,
-     TK_SEGCOUNTCODE = 285,
-     TK_CHARBUFFERCODE = 286,
-     TK_PICKLECODE = 287,
-     TK_METHODCODE = 288,
-     TK_FROMTYPE = 289,
-     TK_TOTYPE = 290,
-     TK_TOSUBCLASS = 291,
-     TK_INCLUDE = 292,
-     TK_OPTINCLUDE = 293,
-     TK_IMPORT = 294,
-     TK_EXPHEADERCODE = 295,
-     TK_MODHEADERCODE = 296,
-     TK_TYPEHEADERCODE = 297,
-     TK_MODULE = 298,
-     TK_CMODULE = 299,
-     TK_CONSMODULE = 300,
-     TK_COMPOMODULE = 301,
-     TK_CLASS = 302,
-     TK_STRUCT = 303,
-     TK_PUBLIC = 304,
-     TK_PROTECTED = 305,
-     TK_PRIVATE = 306,
-     TK_SIGNALS = 307,
-     TK_SLOTS = 308,
-     TK_BOOL = 309,
-     TK_SHORT = 310,
-     TK_INT = 311,
-     TK_LONG = 312,
-     TK_FLOAT = 313,
-     TK_DOUBLE = 314,
-     TK_CHAR = 315,
-     TK_WCHAR_T = 316,
-     TK_VOID = 317,
-     TK_PYOBJECT = 318,
-     TK_PYTUPLE = 319,
-     TK_PYLIST = 320,
-     TK_PYDICT = 321,
-     TK_PYCALLABLE = 322,
-     TK_PYSLICE = 323,
-     TK_PYTYPE = 324,
-     TK_VIRTUAL = 325,
-     TK_ENUM = 326,
-     TK_SIGNED = 327,
-     TK_UNSIGNED = 328,
-     TK_SCOPE = 329,
-     TK_LOGICAL_OR = 330,
-     TK_CONST = 331,
-     TK_STATIC = 332,
-     TK_SIPSIGNAL = 333,
-     TK_SIPSLOT = 334,
-     TK_SIPANYSLOT = 335,
-     TK_SIPRXCON = 336,
-     TK_SIPRXDIS = 337,
-     TK_SIPSLOTCON = 338,
-     TK_SIPSLOTDIS = 339,
-     TK_NUMBER = 340,
-     TK_REAL = 341,
-     TK_TYPEDEF = 342,
-     TK_NAMESPACE = 343,
-     TK_TIMELINE = 344,
-     TK_PLATFORMS = 345,
-     TK_FEATURE = 346,
-     TK_LICENSE = 347,
-     TK_QCHAR = 348,
-     TK_TRUE = 349,
-     TK_FALSE = 350,
-     TK_NULL = 351,
-     TK_OPERATOR = 352,
-     TK_THROW = 353,
-     TK_QOBJECT = 354,
-     TK_EXCEPTION = 355,
-     TK_RAISECODE = 356,
-     TK_EXPLICIT = 357,
-     TK_TEMPLATE = 358,
-     TK_ELLIPSIS = 359,
-     TK_DEFMETATYPE = 360,
-     TK_DEFSUPERTYPE = 361
+     TK_GETBUFFERCODE = 283,
+     TK_RELEASEBUFFERCODE = 284,
+     TK_READBUFFERCODE = 285,
+     TK_WRITEBUFFERCODE = 286,
+     TK_SEGCOUNTCODE = 287,
+     TK_CHARBUFFERCODE = 288,
+     TK_PICKLECODE = 289,
+     TK_METHODCODE = 290,
+     TK_FROMTYPE = 291,
+     TK_TOTYPE = 292,
+     TK_TOSUBCLASS = 293,
+     TK_INCLUDE = 294,
+     TK_OPTINCLUDE = 295,
+     TK_IMPORT = 296,
+     TK_EXPHEADERCODE = 297,
+     TK_MODHEADERCODE = 298,
+     TK_TYPEHEADERCODE = 299,
+     TK_MODULE = 300,
+     TK_CMODULE = 301,
+     TK_CONSMODULE = 302,
+     TK_COMPOMODULE = 303,
+     TK_CLASS = 304,
+     TK_STRUCT = 305,
+     TK_PUBLIC = 306,
+     TK_PROTECTED = 307,
+     TK_PRIVATE = 308,
+     TK_SIGNALS = 309,
+     TK_SLOTS = 310,
+     TK_BOOL = 311,
+     TK_SHORT = 312,
+     TK_INT = 313,
+     TK_LONG = 314,
+     TK_FLOAT = 315,
+     TK_DOUBLE = 316,
+     TK_CHAR = 317,
+     TK_WCHAR_T = 318,
+     TK_VOID = 319,
+     TK_PYOBJECT = 320,
+     TK_PYTUPLE = 321,
+     TK_PYLIST = 322,
+     TK_PYDICT = 323,
+     TK_PYCALLABLE = 324,
+     TK_PYSLICE = 325,
+     TK_PYTYPE = 326,
+     TK_VIRTUAL = 327,
+     TK_ENUM = 328,
+     TK_SIGNED = 329,
+     TK_UNSIGNED = 330,
+     TK_SCOPE = 331,
+     TK_LOGICAL_OR = 332,
+     TK_CONST = 333,
+     TK_STATIC = 334,
+     TK_SIPSIGNAL = 335,
+     TK_SIPSLOT = 336,
+     TK_SIPANYSLOT = 337,
+     TK_SIPRXCON = 338,
+     TK_SIPRXDIS = 339,
+     TK_SIPSLOTCON = 340,
+     TK_SIPSLOTDIS = 341,
+     TK_NUMBER = 342,
+     TK_REAL = 343,
+     TK_TYPEDEF = 344,
+     TK_NAMESPACE = 345,
+     TK_TIMELINE = 346,
+     TK_PLATFORMS = 347,
+     TK_FEATURE = 348,
+     TK_LICENSE = 349,
+     TK_QCHAR = 350,
+     TK_TRUE = 351,
+     TK_FALSE = 352,
+     TK_NULL = 353,
+     TK_OPERATOR = 354,
+     TK_THROW = 355,
+     TK_QOBJECT = 356,
+     TK_EXCEPTION = 357,
+     TK_RAISECODE = 358,
+     TK_EXPLICIT = 359,
+     TK_TEMPLATE = 360,
+     TK_ELLIPSIS = 361,
+     TK_DEFMETATYPE = 362,
+     TK_DEFSUPERTYPE = 363
    };
 #endif
 #define TK_PLUGIN 258
@@ -184,85 +186,87 @@
 #define TK_VIRTUALCATCHERCODE 280
 #define TK_TRAVERSECODE 281
 #define TK_CLEARCODE 282
-#define TK_READBUFFERCODE 283
-#define TK_WRITEBUFFERCODE 284
-#define TK_SEGCOUNTCODE 285
-#define TK_CHARBUFFERCODE 286
-#define TK_PICKLECODE 287
-#define TK_METHODCODE 288
-#define TK_FROMTYPE 289
-#define TK_TOTYPE 290
-#define TK_TOSUBCLASS 291
-#define TK_INCLUDE 292
-#define TK_OPTINCLUDE 293
-#define TK_IMPORT 294
-#define TK_EXPHEADERCODE 295
-#define TK_MODHEADERCODE 296
-#define TK_TYPEHEADERCODE 297
-#define TK_MODULE 298
-#define TK_CMODULE 299
-#define TK_CONSMODULE 300
-#define TK_COMPOMODULE 301
-#define TK_CLASS 302
-#define TK_STRUCT 303
-#define TK_PUBLIC 304
-#define TK_PROTECTED 305
-#define TK_PRIVATE 306
-#define TK_SIGNALS 307
-#define TK_SLOTS 308
-#define TK_BOOL 309
-#define TK_SHORT 310
-#define TK_INT 311
-#define TK_LONG 312
-#define TK_FLOAT 313
-#define TK_DOUBLE 314
-#define TK_CHAR 315
-#define TK_WCHAR_T 316
-#define TK_VOID 317
-#define TK_PYOBJECT 318
-#define TK_PYTUPLE 319
-#define TK_PYLIST 320
-#define TK_PYDICT 321
-#define TK_PYCALLABLE 322
-#define TK_PYSLICE 323
-#define TK_PYTYPE 324
-#define TK_VIRTUAL 325
-#define TK_ENUM 326
-#define TK_SIGNED 327
-#define TK_UNSIGNED 328
-#define TK_SCOPE 329
-#define TK_LOGICAL_OR 330
-#define TK_CONST 331
-#define TK_STATIC 332
-#define TK_SIPSIGNAL 333
-#define TK_SIPSLOT 334
-#define TK_SIPANYSLOT 335
-#define TK_SIPRXCON 336
-#define TK_SIPRXDIS 337
-#define TK_SIPSLOTCON 338
-#define TK_SIPSLOTDIS 339
-#define TK_NUMBER 340
-#define TK_REAL 341
-#define TK_TYPEDEF 342
-#define TK_NAMESPACE 343
-#define TK_TIMELINE 344
-#define TK_PLATFORMS 345
-#define TK_FEATURE 346
-#define TK_LICENSE 347
-#define TK_QCHAR 348
-#define TK_TRUE 349
-#define TK_FALSE 350
-#define TK_NULL 351
-#define TK_OPERATOR 352
-#define TK_THROW 353
-#define TK_QOBJECT 354
-#define TK_EXCEPTION 355
-#define TK_RAISECODE 356
-#define TK_EXPLICIT 357
-#define TK_TEMPLATE 358
-#define TK_ELLIPSIS 359
-#define TK_DEFMETATYPE 360
-#define TK_DEFSUPERTYPE 361
+#define TK_GETBUFFERCODE 283
+#define TK_RELEASEBUFFERCODE 284
+#define TK_READBUFFERCODE 285
+#define TK_WRITEBUFFERCODE 286
+#define TK_SEGCOUNTCODE 287
+#define TK_CHARBUFFERCODE 288
+#define TK_PICKLECODE 289
+#define TK_METHODCODE 290
+#define TK_FROMTYPE 291
+#define TK_TOTYPE 292
+#define TK_TOSUBCLASS 293
+#define TK_INCLUDE 294
+#define TK_OPTINCLUDE 295
+#define TK_IMPORT 296
+#define TK_EXPHEADERCODE 297
+#define TK_MODHEADERCODE 298
+#define TK_TYPEHEADERCODE 299
+#define TK_MODULE 300
+#define TK_CMODULE 301
+#define TK_CONSMODULE 302
+#define TK_COMPOMODULE 303
+#define TK_CLASS 304
+#define TK_STRUCT 305
+#define TK_PUBLIC 306
+#define TK_PROTECTED 307
+#define TK_PRIVATE 308
+#define TK_SIGNALS 309
+#define TK_SLOTS 310
+#define TK_BOOL 311
+#define TK_SHORT 312
+#define TK_INT 313
+#define TK_LONG 314
+#define TK_FLOAT 315
+#define TK_DOUBLE 316
+#define TK_CHAR 317
+#define TK_WCHAR_T 318
+#define TK_VOID 319
+#define TK_PYOBJECT 320
+#define TK_PYTUPLE 321
+#define TK_PYLIST 322
+#define TK_PYDICT 323
+#define TK_PYCALLABLE 324
+#define TK_PYSLICE 325
+#define TK_PYTYPE 326
+#define TK_VIRTUAL 327
+#define TK_ENUM 328
+#define TK_SIGNED 329
+#define TK_UNSIGNED 330
+#define TK_SCOPE 331
+#define TK_LOGICAL_OR 332
+#define TK_CONST 333
+#define TK_STATIC 334
+#define TK_SIPSIGNAL 335
+#define TK_SIPSLOT 336
+#define TK_SIPANYSLOT 337
+#define TK_SIPRXCON 338
+#define TK_SIPRXDIS 339
+#define TK_SIPSLOTCON 340
+#define TK_SIPSLOTDIS 341
+#define TK_NUMBER 342
+#define TK_REAL 343
+#define TK_TYPEDEF 344
+#define TK_NAMESPACE 345
+#define TK_TIMELINE 346
+#define TK_PLATFORMS 347
+#define TK_FEATURE 348
+#define TK_LICENSE 349
+#define TK_QCHAR 350
+#define TK_TRUE 351
+#define TK_FALSE 352
+#define TK_NULL 353
+#define TK_OPERATOR 354
+#define TK_THROW 355
+#define TK_QOBJECT 356
+#define TK_EXCEPTION 357
+#define TK_RAISECODE 358
+#define TK_EXPLICIT 359
+#define TK_TEMPLATE 360
+#define TK_ELLIPSIS 361
+#define TK_DEFMETATYPE 362
+#define TK_DEFSUPERTYPE 363
 
 
 
@@ -411,7 +415,7 @@ typedef union YYSTYPE {
     classDef        *klass;
 } YYSTYPE;
 /* Line 186 of yacc.c.  */
-#line 415 &quot;parser.c&quot;
+#line 419 &quot;parser.c&quot;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -423,7 +427,7 @@ typedef union YYSTYPE {
 
 
 /* Line 214 of yacc.c.  */
-#line 427 &quot;parser.c&quot;
+#line 431 &quot;parser.c&quot;
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -529,20 +533,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1016
+#define YYLAST   1081
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  129
+#define YYNTOKENS  131
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  139
+#define YYNNTS  141
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  348
+#define YYNRULES  352
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  584
+#define YYNSTATES  590
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   361
+#define YYMAXUTOK   363
 
 #define YYTRANSLATE(YYX) 						\
   ((unsigned int) (YYX) &lt;= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -553,16 +557,16 @@ static const unsigned char yytranslate[] =
        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,     2,     2,   112,     2,     2,     2,   127,   119,     2,
-     110,   111,   117,   116,   114,   113,     2,   118,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   124,   109,
-     122,   115,   123,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   114,     2,     2,     2,   129,   121,     2,
+     112,   113,   119,   118,   116,   115,     2,   120,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   126,   111,
+     124,   117,   125,     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,   125,     2,   126,   128,     2,     2,     2,     2,     2,
+       2,   127,     2,   128,   130,     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,   107,   120,   108,   121,     2,     2,     2,
+       2,     2,     2,   109,   122,   110,   123,     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,     2,     2,     2,
@@ -586,7 +590,7 @@ static const unsigned char yytranslate[] =
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106
+     105,   106,   107,   108
 };
 
 #if YYDEBUG
@@ -606,172 +610,175 @@ static const unsigned short int yyprhs[] =
      236,   238,   240,   242,   244,   245,   247,   250,   253,   256,
      257,   260,   261,   264,   265,   268,   271,   274,   277,   280,
      281,   283,   286,   289,   292,   295,   298,   301,   304,   307,
-     310,   313,   316,   319,   322,   325,   328,   331,   336,   339,
-     341,   344,   345,   354,   355,   357,   358,   360,   361,   363,
-     365,   368,   370,   372,   377,   378,   380,   381,   384,   385,
-     388,   390,   394,   396,   398,   400,   402,   404,   406,   407,
-     409,   411,   413,   415,   418,   420,   424,   426,   428,   433,
-     435,   437,   439,   441,   443,   445,   447,   448,   450,   454,
-     460,   472,   473,   481,   482,   486,   491,   492,   500,   501,
-     504,   506,   510,   512,   513,   517,   519,   522,   524,   526,
-     528,   530,   532,   534,   536,   538,   540,   542,   544,   546,
-     548,   550,   552,   554,   556,   558,   560,   562,   565,   568,
-     572,   576,   580,   583,   584,   586,   598,   599,   603,   605,
-     615,   616,   622,   623,   630,   631,   633,   647,   662,   676,
-     678,   680,   682,   684,   686,   688,   690,   692,   695,   698,
-     701,   704,   707,   710,   713,   716,   719,   722,   726,   730,
-     732,   735,   738,   740,   743,   746,   749,   751,   754,   755,
-     757,   758,   761,   762,   766,   768,   772,   774,   778,   780,
-     782,   784,   785,   788,   789,   792,   794,   795,   797,   801,
-     806,   811,   816,   820,   824,   831,   838,   842,   845,   846,
-     850,   852,   854,   856,   857,   861,   863,   871,   876,   880,
-     884,   885,   887,   888,   891,   893,   898,   901,   904,   906,
-     908,   911,   913,   915,   918,   921,   925,   927,   929,   931,
-     934,   937,   939,   941,   943,   945,   947,   949,   951,   953,
-     955,   957,   959,   961,   965,   966,   971,   972,   974
+     310,   313,   316,   319,   322,   325,   328,   331,   334,   337,
+     342,   345,   347,   350,   351,   360,   361,   363,   364,   366,
+     367,   369,   371,   374,   376,   378,   383,   384,   386,   387,
+     390,   391,   394,   396,   400,   402,   404,   406,   408,   410,
+     412,   413,   415,   417,   419,   421,   424,   426,   430,   432,
+     434,   439,   441,   443,   445,   447,   449,   451,   453,   454,
+     456,   460,   466,   478,   479,   487,   488,   492,   497,   498,
+     506,   507,   510,   512,   516,   518,   519,   523,   525,   528,
+     530,   532,   534,   536,   538,   540,   542,   544,   546,   548,
+     550,   552,   554,   556,   558,   560,   562,   564,   566,   568,
+     570,   572,   575,   578,   582,   586,   590,   593,   594,   596,
+     608,   609,   613,   615,   625,   626,   632,   633,   640,   641,
+     643,   657,   672,   686,   688,   690,   692,   694,   696,   698,
+     700,   702,   705,   708,   711,   714,   717,   720,   723,   726,
+     729,   732,   736,   740,   742,   745,   748,   750,   753,   756,
+     759,   761,   764,   765,   767,   768,   771,   772,   776,   778,
+     782,   784,   788,   790,   792,   794,   795,   798,   799,   802,
+     804,   805,   807,   811,   816,   821,   826,   830,   834,   841,
+     848,   852,   855,   856,   860,   862,   864,   866,   867,   871,
+     873,   881,   886,   890,   894,   895,   897,   898,   901,   903,
+     908,   911,   914,   916,   918,   921,   923,   925,   928,   931,
+     935,   937,   939,   941,   944,   947,   949,   951,   953,   955,
+     957,   959,   961,   963,   965,   967,   969,   971,   975,   976,
+     981,   982,   984
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short int yyrhs[] =
 {
-     130,     0,    -1,   131,    -1,   130,   131,    -1,    -1,   132,
-     133,    -1,   167,    -1,   165,    -1,   166,    -1,   135,    -1,
-     177,    -1,   171,    -1,   172,    -1,   173,    -1,   154,    -1,
-     149,    -1,   153,    -1,   162,    -1,   163,    -1,   164,    -1,
-     178,    -1,   179,    -1,   189,    -1,   191,    -1,   192,    -1,
-     193,    -1,   194,    -1,   195,    -1,   196,    -1,   197,    -1,
-     198,    -1,   139,    -1,   141,    -1,   134,    -1,   158,    -1,
-     161,    -1,   146,    -1,   220,    -1,   225,    -1,   222,    -1,
-     136,    -1,   219,    -1,   201,    -1,   241,    -1,   259,    -1,
-     180,    -1,     3,    22,    -1,   100,   215,   137,   245,   107,
-     181,   138,   108,   109,    -1,    -1,   110,   215,   111,    -1,
-     101,   199,    -1,    -1,    18,   264,   245,   140,   143,    -1,
-      -1,   224,    18,   264,   142,   143,    -1,   107,   144,   108,
-     109,    -1,   145,    -1,   144,   145,    -1,   180,    -1,    34,
-     199,    -1,    35,   199,    -1,    -1,    88,    22,   147,   107,
-     148,   108,   109,    -1,   134,    -1,   148,   134,    -1,    -1,
-      90,   150,   107,   151,   108,    -1,   152,    -1,   151,   152,
-      -1,    22,    -1,    91,    22,    -1,    -1,    89,   155,   107,
-     156,   108,    -1,   157,    -1,   156,   157,    -1,    22,    -1,
-      20,   110,   160,   111,    -1,    22,    -1,   112,    22,    -1,
-     159,    75,    22,    -1,   159,    75,   112,    22,    -1,   159,
-      -1,   204,   113,   204,    -1,    21,    -1,    92,   245,    -1,
-     105,   169,    -1,   106,   169,    -1,    45,   169,    -1,    46,
-     169,    -1,   168,   169,   170,    -1,    43,    -1,    44,    -1,
-      22,    -1,    23,    -1,    -1,    85,    -1,    37,    23,    -1,
-      38,    23,    -1,    39,    23,    -1,    -1,     7,   199,    -1,
-      -1,     8,   199,    -1,    -1,     9,   199,    -1,    17,   199,
-      -1,    40,   199,    -1,    41,   199,    -1,    42,   199,    -1,
-      -1,   180,    -1,    26,   199,    -1,    27,   199,    -1,    28,
-     199,    -1,    29,   199,    -1,    30,   199,    -1,    31,   199,
-      -1,    32,   199,    -1,    14,   199,    -1,    15,   199,    -1,
-      10,   199,    -1,    11,   199,    -1,    12,   199,    -1,    13,
-     199,    -1,    16,   199,    -1,     4,   199,    -1,     5,   199,
-      -1,     6,    23,   203,   199,    -1,   200,    21,    -1,    19,
-      -1,   200,    19,    -1,    -1,    71,   204,   245,   202,   107,
-     205,   108,   109,    -1,    -1,    23,    -1,    -1,    22,    -1,
-      -1,   206,    -1,   207,    -1,   206,   207,    -1,   158,    -1,
-     161,    -1,    22,   209,   245,   208,    -1,    -1,   114,    -1,
-      -1,   115,   214,    -1,    -1,   115,   211,    -1,   214,    -1,
-     211,   212,   214,    -1,   113,    -1,   116,    -1,   117,    -1,
-     118,    -1,   119,    -1,   120,    -1,    -1,   112,    -1,   121,
-      -1,   113,    -1,   116,    -1,   213,   217,    -1,   216,    -1,
-     215,    74,   216,    -1,    22,    -1,   215,    -1,   264,   110,
-     218,   111,    -1,    86,    -1,    85,    -1,    94,    -1,    95,
-      -1,    96,    -1,    24,    -1,    93,    -1,    -1,   211,    -1,
-     218,   114,   211,    -1,    87,   260,    22,   245,   109,    -1,
-      87,   260,   110,   263,    22,   111,   110,   265,   111,   245,
-     109,    -1,    -1,    48,   215,   221,   227,   245,   230,   109,
-      -1,    -1,   224,   223,   225,    -1,   103,   122,   265,   123,
-      -1,    -1,    47,   215,   226,   227,   245,   230,   109,    -1,
-      -1,   124,   228,    -1,   229,    -1,   228,   114,   229,    -1,
-     215,    -1,    -1,   107,   231,   108,    -1,   232,    -1,   231,
-     232,    -1,   158,    -1,   161,    -1,   146,    -1,   220,    -1,
-     225,    -1,   136,    -1,   219,    -1,   201,    -1,   190,    -1,
-     180,    -1,   182,    -1,   183,    -1,   184,    -1,   185,    -1,
-     186,    -1,   187,    -1,   188,    -1,   235,    -1,   234,    -1,
-     254,    -1,    36,   199,    -1,    35,   199,    -1,    49,   233,
-     124,    -1,    50,   233,   124,    -1,    51,   233,   124,    -1,
-      52,   124,    -1,    -1,    53,    -1,   240,   121,    22,   110,
-     111,   266,   244,   245,   109,   249,   250,    -1,    -1,   102,
-     236,   237,    -1,   237,    -1,    22,   110,   251,   111,   266,
-     245,   238,   109,   249,    -1,    -1,   125,   110,   251,   111,
-     126,    -1,    -1,   125,   260,   110,   251,   111,   126,    -1,
-      -1,    70,    -1,   260,    22,   110,   251,   111,   243,   266,
-     244,   245,   239,   109,   249,   250,    -1,   260,    97,   242,
-     110,   251,   111,   243,   266,   244,   245,   239,   109,   249,
-     250,    -1,    97,   260,   110,   251,   111,   243,   266,   244,
-     245,   239,   109,   249,   250,    -1,   116,    -1,   113,    -1,
-     117,    -1,   118,    -1,   127,    -1,   119,    -1,   120,    -1,
-     128,    -1,   122,   122,    -1,   123,   123,    -1,   116,   115,
-      -1,   113,   115,    -1,   117,   115,    -1,   118,   115,    -1,
-     127,   115,    -1,   119,   115,    -1,   120,   115,    -1,   128,
-     115,    -1,   122,   122,   115,    -1,   123,   123,   115,    -1,
-     121,    -1,   110,   111,    -1,   125,   126,    -1,   122,    -1,
-     122,   115,    -1,   115,   115,    -1,   112,   115,    -1,   123,
-      -1,   123,   115,    -1,    -1,    76,    -1,    -1,   115,    85,
-      -1,    -1,   118,   246,   118,    -1,   247,    -1,   246,   114,
-     247,    -1,    22,    -1,    22,   115,   248,    -1,   169,    -1,
-      24,    -1,    85,    -1,    -1,    33,   199,    -1,    -1,    25,
-     199,    -1,   252,    -1,    -1,   253,    -1,   252,   114,   253,
-      -1,    78,   204,   245,   210,    -1,    79,   204,   245,   210,
-      -1,    80,   204,   245,   210,    -1,    81,   204,   245,    -1,
-      82,   204,   245,    -1,    83,   110,   251,   111,   204,   245,
-      -1,    84,   110,   251,   111,   204,   245,    -1,    99,   204,
-     245,    -1,   261,   210,    -1,    -1,    77,   255,   256,    -1,
-     256,    -1,   257,    -1,   259,    -1,    -1,    70,   258,   241,
-      -1,   241,    -1,   260,    22,   245,   109,   174,   175,   176,
-      -1,    76,   264,   263,   262,    -1,   264,   263,   262,    -1,
-     260,   204,   245,    -1,    -1,   119,    -1,    -1,   263,   117,
-      -1,   215,    -1,   215,   122,   265,   123,    -1,    48,   215,
-      -1,    73,    55,    -1,    55,    -1,    73,    -1,    73,    56,
-      -1,    56,    -1,    57,    -1,    73,    57,    -1,    57,    57,
-      -1,    73,    57,    57,    -1,    58,    -1,    59,    -1,    54,
-      -1,    72,    60,    -1,    73,    60,    -1,    60,    -1,    61,
-      -1,    62,    -1,    63,    -1,    64,    -1,    65,    -1,    66,
-      -1,    67,    -1,    68,    -1,    69,    -1,   104,    -1,   260,
-      -1,   265,   114,   260,    -1,    -1,    98,   110,   267,   111,
-      -1,    -1,   215,    -1,   267,   114,   215,    -1
+     132,     0,    -1,   133,    -1,   132,   133,    -1,    -1,   134,
+     135,    -1,   169,    -1,   167,    -1,   168,    -1,   137,    -1,
+     179,    -1,   173,    -1,   174,    -1,   175,    -1,   156,    -1,
+     151,    -1,   155,    -1,   164,    -1,   165,    -1,   166,    -1,
+     180,    -1,   181,    -1,   193,    -1,   195,    -1,   196,    -1,
+     197,    -1,   198,    -1,   199,    -1,   200,    -1,   201,    -1,
+     202,    -1,   141,    -1,   143,    -1,   136,    -1,   160,    -1,
+     163,    -1,   148,    -1,   224,    -1,   229,    -1,   226,    -1,
+     138,    -1,   223,    -1,   205,    -1,   245,    -1,   263,    -1,
+     182,    -1,     3,    22,    -1,   102,   219,   139,   249,   109,
+     183,   140,   110,   111,    -1,    -1,   112,   219,   113,    -1,
+     103,   203,    -1,    -1,    18,   268,   249,   142,   145,    -1,
+      -1,   228,    18,   268,   144,   145,    -1,   109,   146,   110,
+     111,    -1,   147,    -1,   146,   147,    -1,   182,    -1,    36,
+     203,    -1,    37,   203,    -1,    -1,    90,    22,   149,   109,
+     150,   110,   111,    -1,   136,    -1,   150,   136,    -1,    -1,
+      92,   152,   109,   153,   110,    -1,   154,    -1,   153,   154,
+      -1,    22,    -1,    93,    22,    -1,    -1,    91,   157,   109,
+     158,   110,    -1,   159,    -1,   158,   159,    -1,    22,    -1,
+      20,   112,   162,   113,    -1,    22,    -1,   114,    22,    -1,
+     161,    77,    22,    -1,   161,    77,   114,    22,    -1,   161,
+      -1,   208,   115,   208,    -1,    21,    -1,    94,   249,    -1,
+     107,   171,    -1,   108,   171,    -1,    47,   171,    -1,    48,
+     171,    -1,   170,   171,   172,    -1,    45,    -1,    46,    -1,
+      22,    -1,    23,    -1,    -1,    87,    -1,    39,    23,    -1,
+      40,    23,    -1,    41,    23,    -1,    -1,     7,   203,    -1,
+      -1,     8,   203,    -1,    -1,     9,   203,    -1,    17,   203,
+      -1,    42,   203,    -1,    43,   203,    -1,    44,   203,    -1,
+      -1,   182,    -1,    26,   203,    -1,    27,   203,    -1,    28,
+     203,    -1,    29,   203,    -1,    30,   203,    -1,    31,   203,
+      -1,    32,   203,    -1,    33,   203,    -1,    34,   203,    -1,
+      14,   203,    -1,    15,   203,    -1,    10,   203,    -1,    11,
+     203,    -1,    12,   203,    -1,    13,   203,    -1,    16,   203,
+      -1,     4,   203,    -1,     5,   203,    -1,     6,    23,   207,
+     203,    -1,   204,    21,    -1,    19,    -1,   204,    19,    -1,
+      -1,    73,   208,   249,   206,   109,   209,   110,   111,    -1,
+      -1,    23,    -1,    -1,    22,    -1,    -1,   210,    -1,   211,
+      -1,   210,   211,    -1,   160,    -1,   163,    -1,    22,   213,
+     249,   212,    -1,    -1,   116,    -1,    -1,   117,   218,    -1,
+      -1,   117,   215,    -1,   218,    -1,   215,   216,   218,    -1,
+     115,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
+     122,    -1,    -1,   114,    -1,   123,    -1,   115,    -1,   118,
+      -1,   217,   221,    -1,   220,    -1,   219,    76,   220,    -1,
+      22,    -1,   219,    -1,   268,   112,   222,   113,    -1,    88,
+      -1,    87,    -1,    96,    -1,    97,    -1,    98,    -1,    24,
+      -1,    95,    -1,    -1,   215,    -1,   222,   116,   215,    -1,
+      89,   264,    22,   249,   111,    -1,    89,   264,   112,   267,
+      22,   113,   112,   269,   113,   249,   111,    -1,    -1,    50,
+     219,   225,   231,   249,   234,   111,    -1,    -1,   228,   227,
+     229,    -1,   105,   124,   269,   125,    -1,    -1,    49,   219,
+     230,   231,   249,   234,   111,    -1,    -1,   126,   232,    -1,
+     233,    -1,   232,   116,   233,    -1,   219,    -1,    -1,   109,
+     235,   110,    -1,   236,    -1,   235,   236,    -1,   160,    -1,
+     163,    -1,   148,    -1,   224,    -1,   229,    -1,   138,    -1,
+     223,    -1,   205,    -1,   194,    -1,   182,    -1,   184,    -1,
+     185,    -1,   186,    -1,   187,    -1,   188,    -1,   189,    -1,
+     190,    -1,   191,    -1,   192,    -1,   239,    -1,   238,    -1,
+     258,    -1,    38,   203,    -1,    37,   203,    -1,    51,   237,
+     126,    -1,    52,   237,   126,    -1,    53,   237,   126,    -1,
+      54,   126,    -1,    -1,    55,    -1,   244,   123,    22,   112,
+     113,   270,   248,   249,   111,   253,   254,    -1,    -1,   104,
+     240,   241,    -1,   241,    -1,    22,   112,   255,   113,   270,
+     249,   242,   111,   253,    -1,    -1,   127,   112,   255,   113,
+     128,    -1,    -1,   127,   264,   112,   255,   113,   128,    -1,
+      -1,    72,    -1,   264,    22,   112,   255,   113,   247,   270,
+     248,   249,   243,   111,   253,   254,    -1,   264,    99,   246,
+     112,   255,   113,   247,   270,   248,   249,   243,   111,   253,
+     254,    -1,    99,   264,   112,   255,   113,   247,   270,   248,
+     249,   243,   111,   253,   254,    -1,   118,    -1,   115,    -1,
+     119,    -1,   120,    -1,   129,    -1,   121,    -1,   122,    -1,
+     130,    -1,   124,   124,    -1,   125,   125,    -1,   118,   117,
+      -1,   115,   117,    -1,   119,   117,    -1,   120,   117,    -1,
+     129,   117,    -1,   121,   117,    -1,   122,   117,    -1,   130,
+     117,    -1,   124,   124,   117,    -1,   125,   125,   117,    -1,
+     123,    -1,   112,   113,    -1,   127,   128,    -1,   124,    -1,
+     124,   117,    -1,   117,   117,    -1,   114,   117,    -1,   125,
+      -1,   125,   117,    -1,    -1,    78,    -1,    -1,   117,    87,
+      -1,    -1,   120,   250,   120,    -1,   251,    -1,   250,   116,
+     251,    -1,    22,    -1,    22,   117,   252,    -1,   171,    -1,
+      24,    -1,    87,    -1,    -1,    35,   203,    -1,    -1,    25,
+     203,    -1,   256,    -1,    -1,   257,    -1,   256,   116,   257,
+      -1,    80,   208,   249,   214,    -1,    81,   208,   249,   214,
+      -1,    82,   208,   249,   214,    -1,    83,   208,   249,    -1,
+      84,   208,   249,    -1,    85,   112,   255,   113,   208,   249,
+      -1,    86,   112,   255,   113,   208,   249,    -1,   101,   208,
+     249,    -1,   265,   214,    -1,    -1,    79,   259,   260,    -1,
+     260,    -1,   261,    -1,   263,    -1,    -1,    72,   262,   245,
+      -1,   245,    -1,   264,    22,   249,   111,   176,   177,   178,
+      -1,    78,   268,   267,   266,    -1,   268,   267,   266,    -1,
+     264,   208,   249,    -1,    -1,   121,    -1,    -1,   267,   119,
+      -1,   219,    -1,   219,   124,   269,   125,    -1,    50,   219,
+      -1,    75,    57,    -1,    57,    -1,    75,    -1,    75,    58,
+      -1,    58,    -1,    59,    -1,    75,    59,    -1,    59,    59,
+      -1,    75,    59,    59,    -1,    60,    -1,    61,    -1,    56,
+      -1,    74,    62,    -1,    75,    62,    -1,    62,    -1,    63,
+      -1,    64,    -1,    65,    -1,    66,    -1,    67,    -1,    68,
+      -1,    69,    -1,    70,    -1,    71,    -1,   106,    -1,   264,
+      -1,   269,   116,   264,    -1,    -1,   100,   112,   271,   113,
+      -1,    -1,   219,    -1,   271,   116,   219,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   313,   313,   314,   317,   317,   336,   337,   338,   339,
-     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
-     350,   354,   358,   362,   363,   364,   365,   366,   367,   368,
-     369,   370,   371,   372,   375,   376,   377,   378,   379,   380,
-     381,   382,   383,   384,   385,   386,   399,   404,   439,   443,
-     517,   522,   522,   528,   528,   577,   591,   592,   595,   599,
-     608,   619,   619,   650,   651,   654,   654,   681,   682,   685,
-     690,   695,   695,   720,   721,   724,   729,   742,   745,   748,
-     751,   756,   757,   762,   768,   795,   806,   817,   830,   843,
-     876,   879,   884,   885,   901,   904,   907,   912,   917,   922,
-     925,   930,   933,   938,   941,   946,   951,   956,   961,   966,
-     969,   972,   977,   982,   987,   992,   997,  1002,  1007,  1012,
-    1017,  1023,  1029,  1035,  1041,  1050,  1056,  1061,  1067,  1070,
-    1071,  1082,  1082,  1093,  1096,  1101,  1104,  1109,  1110,  1113,
-    1114,  1117,  1118,  1119,  1146,  1147,  1150,  1151,  1154,  1157,
-    1162,  1163,  1181,  1184,  1187,  1190,  1193,  1196,  1201,  1204,
-    1207,  1210,  1213,  1218,  1236,  1237,  1245,  1250,  1259,  1269,
-    1273,  1277,  1281,  1285,  1289,  1293,  1299,  1304,  1310,  1328,
-    1332,  1355,  1355,  1375,  1375,  1402,  1407,  1407,  1422,  1423,
-    1426,  1427,  1430,  1469,  1472,  1477,  1478,  1481,  1482,  1483,
-    1484,  1485,  1486,  1487,  1488,  1489,  1493,  1497,  1508,  1519,
-    1530,  1541,  1552,  1563,  1574,  1575,  1576,  1577,  1588,  1599,
-    1606,  1613,  1620,  1629,  1632,  1637,  1686,  1686,  1687,  1690,
-    1716,  1719,  1726,  1729,  1737,  1740,  1745,  1762,  1787,  1863,
-    1864,  1865,  1866,  1867,  1868,  1869,  1870,  1871,  1872,  1873,
-    1874,  1875,  1876,  1877,  1878,  1879,  1880,  1881,  1882,  1883,
-    1884,  1885,  1886,  1887,  1888,  1889,  1890,  1891,  1894,  1897,
-    1902,  1905,  1913,  1916,  1922,  1926,  1938,  1942,  1948,  1952,
-    1956,  1962,  1965,  1970,  1973,  1978,  2026,  2031,  2037,  2064,
-    2073,  2082,  2091,  2102,  2110,  2125,  2140,  2146,  2152,  2152,
-    2153,  2156,  2157,  2160,  2160,  2161,  2164,  2197,  2203,  2211,
-    2278,  2281,  2289,  2292,  2297,  2308,  2322,  2339,  2346,  2353,
-    2360,  2367,  2374,  2381,  2388,  2395,  2402,  2409,  2416,  2423,
-    2430,  2437,  2444,  2451,  2458,  2465,  2472,  2479,  2486,  2493,
-    2500,  2507,  2516,  2522,  2538,  2541,  2549,  2555,  2562
+       0,   317,   317,   318,   321,   321,   340,   341,   342,   343,
+     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   358,   362,   366,   367,   368,   369,   370,   371,   372,
+     373,   374,   375,   376,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   403,   408,   443,   447,
+     521,   526,   526,   532,   532,   581,   595,   596,   599,   603,
+     612,   623,   623,   654,   655,   658,   658,   685,   686,   689,
+     694,   699,   699,   724,   725,   728,   733,   746,   749,   752,
+     755,   760,   761,   766,   772,   799,   810,   821,   834,   847,
+     880,   883,   888,   889,   905,   908,   911,   916,   921,   926,
+     929,   934,   937,   942,   945,   950,   955,   960,   965,   970,
+     973,   976,   981,   986,   991,   996,  1001,  1006,  1011,  1016,
+    1021,  1026,  1031,  1037,  1043,  1049,  1055,  1064,  1070,  1075,
+    1081,  1084,  1085,  1096,  1096,  1107,  1110,  1115,  1118,  1123,
+    1124,  1127,  1128,  1131,  1132,  1133,  1160,  1161,  1164,  1165,
+    1168,  1171,  1176,  1177,  1195,  1198,  1201,  1204,  1207,  1210,
+    1215,  1218,  1221,  1224,  1227,  1232,  1250,  1251,  1259,  1264,
+    1273,  1283,  1287,  1291,  1295,  1299,  1303,  1307,  1313,  1318,
+    1324,  1342,  1346,  1369,  1369,  1389,  1389,  1416,  1421,  1421,
+    1436,  1437,  1440,  1441,  1444,  1483,  1486,  1491,  1492,  1495,
+    1496,  1497,  1498,  1499,  1500,  1501,  1502,  1503,  1507,  1511,
+    1522,  1533,  1544,  1555,  1566,  1577,  1588,  1599,  1610,  1611,
+    1612,  1613,  1624,  1635,  1642,  1649,  1656,  1665,  1668,  1673,
+    1722,  1722,  1723,  1726,  1752,  1755,  1762,  1765,  1773,  1776,
+    1781,  1798,  1823,  1899,  1900,  1901,  1902,  1903,  1904,  1905,
+    1906,  1907,  1908,  1909,  1910,  1911,  1912,  1913,  1914,  1915,
+    1916,  1917,  1918,  1919,  1920,  1921,  1922,  1923,  1924,  1925,
+    1926,  1927,  1930,  1933,  1938,  1941,  1949,  1952,  1958,  1962,
+    1974,  1978,  1984,  1988,  1992,  1998,  2001,  2006,  2009,  2014,
+    2062,  2067,  2073,  2100,  2109,  2118,  2127,  2138,  2146,  2161,
+    2176,  2182,  2188,  2188,  2189,  2192,  2193,  2196,  2196,  2197,
+    2200,  2233,  2239,  2247,  2314,  2317,  2325,  2328,  2333,  2344,
+    2358,  2375,  2382,  2389,  2396,  2403,  2410,  2417,  2424,  2431,
+    2438,  2445,  2452,  2459,  2466,  2473,  2480,  2487,  2494,  2501,
+    2508,  2515,  2522,  2529,  2536,  2543,  2552,  2558,  2574,  2577,
+    2585,  2591,  2598
 };
 #endif
 
@@ -786,36 +793,37 @@ static const char *const yytname[] =
   &quot;TK_MODCODE&quot;, &quot;TK_TYPECODE&quot;, &quot;TK_PREPYCODE&quot;, &quot;TK_COPYING&quot;,
   &quot;TK_MAPPEDTYPE&quot;, &quot;TK_CODELINE&quot;, &quot;TK_IF&quot;, &quot;TK_END&quot;, &quot;TK_NAME&quot;,
   &quot;TK_PATHNAME&quot;, &quot;TK_STRING&quot;, &quot;TK_VIRTUALCATCHERCODE&quot;, &quot;TK_TRAVERSECODE&quot;,
-  &quot;TK_CLEARCODE&quot;, &quot;TK_READBUFFERCODE&quot;, &quot;TK_WRITEBUFFERCODE&quot;,
-  &quot;TK_SEGCOUNTCODE&quot;, &quot;TK_CHARBUFFERCODE&quot;, &quot;TK_PICKLECODE&quot;, &quot;TK_METHODCODE&quot;,
-  &quot;TK_FROMTYPE&quot;, &quot;TK_TOTYPE&quot;, &quot;TK_TOSUBCLASS&quot;, &quot;TK_INCLUDE&quot;,
-  &quot;TK_OPTINCLUDE&quot;, &quot;TK_IMPORT&quot;, &quot;TK_EXPHEADERCODE&quot;, &quot;TK_MODHEADERCODE&quot;,
-  &quot;TK_TYPEHEADERCODE&quot;, &quot;TK_MODULE&quot;, &quot;TK_CMODULE&quot;, &quot;TK_CONSMODULE&quot;,
-  &quot;TK_COMPOMODULE&quot;, &quot;TK_CLASS&quot;, &quot;TK_STRUCT&quot;, &quot;TK_PUBLIC&quot;, &quot;TK_PROTECTED&quot;,
-  &quot;TK_PRIVATE&quot;, &quot;TK_SIGNALS&quot;, &quot;TK_SLOTS&quot;, &quot;TK_BOOL&quot;, &quot;TK_SHORT&quot;, &quot;TK_INT&quot;,
-  &quot;TK_LONG&quot;, &quot;TK_FLOAT&quot;, &quot;TK_DOUBLE&quot;, &quot;TK_CHAR&quot;, &quot;TK_WCHAR_T&quot;, &quot;TK_VOID&quot;,
-  &quot;TK_PYOBJECT&quot;, &quot;TK_PYTUPLE&quot;, &quot;TK_PYLIST&quot;, &quot;TK_PYDICT&quot;, &quot;TK_PYCALLABLE&quot;,
-  &quot;TK_PYSLICE&quot;, &quot;TK_PYTYPE&quot;, &quot;TK_VIRTUAL&quot;, &quot;TK_ENUM&quot;, &quot;TK_SIGNED&quot;,
-  &quot;TK_UNSIGNED&quot;, &quot;TK_SCOPE&quot;, &quot;TK_LOGICAL_OR&quot;, &quot;TK_CONST&quot;, &quot;TK_STATIC&quot;,
-  &quot;TK_SIPSIGNAL&quot;, &quot;TK_SIPSLOT&quot;, &quot;TK_SIPANYSLOT&quot;, &quot;TK_SIPRXCON&quot;,
-  &quot;TK_SIPRXDIS&quot;, &quot;TK_SIPSLOTCON&quot;, &quot;TK_SIPSLOTDIS&quot;, &quot;TK_NUMBER&quot;, &quot;TK_REAL&quot;,
-  &quot;TK_TYPEDEF&quot;, &quot;TK_NAMESPACE&quot;, &quot;TK_TIMELINE&quot;, &quot;TK_PLATFORMS&quot;,
-  &quot;TK_FEATURE&quot;, &quot;TK_LICENSE&quot;, &quot;TK_QCHAR&quot;, &quot;TK_TRUE&quot;, &quot;TK_FALSE&quot;, &quot;TK_NULL&quot;,
-  &quot;TK_OPERATOR&quot;, &quot;TK_THROW&quot;, &quot;TK_QOBJECT&quot;, &quot;TK_EXCEPTION&quot;, &quot;TK_RAISECODE&quot;,
-  &quot;TK_EXPLICIT&quot;, &quot;TK_TEMPLATE&quot;, &quot;TK_ELLIPSIS&quot;, &quot;TK_DEFMETATYPE&quot;,
-  &quot;TK_DEFSUPERTYPE&quot;, &quot;'{'&quot;, &quot;'}'&quot;, &quot;';'&quot;, &quot;'('&quot;, &quot;')'&quot;, &quot;'!'&quot;, &quot;'-'&quot;,
-  &quot;','&quot;, &quot;'='&quot;, &quot;'+'&quot;, &quot;'*'&quot;, &quot;'/'&quot;, &quot;'&amp;'&quot;, &quot;'|'&quot;, &quot;'~'&quot;, &quot;'&lt;'&quot;, &quot;'&gt;'&quot;,
-  &quot;':'&quot;, &quot;'['&quot;, &quot;']'&quot;, &quot;'%'&quot;, &quot;'^'&quot;, &quot;$accept&quot;, &quot;specification&quot;,
-  &quot;statement&quot;, &quot;@1&quot;, &quot;modstatement&quot;, &quot;nsstatement&quot;, &quot;plugin&quot;, &quot;exception&quot;,
-  &quot;baseexception&quot;, &quot;raisecode&quot;, &quot;mappedtype&quot;, &quot;@2&quot;, &quot;mappedtypetmpl&quot;, &quot;@3&quot;,
-  &quot;mtdefinition&quot;, &quot;mtbody&quot;, &quot;mtline&quot;, &quot;namespace&quot;, &quot;@4&quot;, &quot;nsbody&quot;,
-  &quot;platforms&quot;, &quot;@5&quot;, &quot;platformlist&quot;, &quot;platform&quot;, &quot;feature&quot;, &quot;timeline&quot;,
-  &quot;@6&quot;, &quot;qualifierlist&quot;, &quot;qualifiername&quot;, &quot;ifstart&quot;, &quot;oredqualifiers&quot;,
-  &quot;qualifiers&quot;, &quot;ifend&quot;, &quot;license&quot;, &quot;defmetatype&quot;, &quot;defsupertype&quot;,
-  &quot;consmodule&quot;, &quot;compmodule&quot;, &quot;module&quot;, &quot;modlang&quot;, &quot;dottedname&quot;,
-  &quot;optnumber&quot;, &quot;include&quot;, &quot;optinclude&quot;, &quot;import&quot;, &quot;optaccesscode&quot;,
-  &quot;optgetcode&quot;, &quot;optsetcode&quot;, &quot;copying&quot;, &quot;exphdrcode&quot;, &quot;modhdrcode&quot;,
-  &quot;typehdrcode&quot;, &quot;opttypehdrcode&quot;, &quot;travcode&quot;, &quot;clearcode&quot;, &quot;readbufcode&quot;,
+  &quot;TK_CLEARCODE&quot;, &quot;TK_GETBUFFERCODE&quot;, &quot;TK_RELEASEBUFFERCODE&quot;,
+  &quot;TK_READBUFFERCODE&quot;, &quot;TK_WRITEBUFFERCODE&quot;, &quot;TK_SEGCOUNTCODE&quot;,
+  &quot;TK_CHARBUFFERCODE&quot;, &quot;TK_PICKLECODE&quot;, &quot;TK_METHODCODE&quot;, &quot;TK_FROMTYPE&quot;,
+  &quot;TK_TOTYPE&quot;, &quot;TK_TOSUBCLASS&quot;, &quot;TK_INCLUDE&quot;, &quot;TK_OPTINCLUDE&quot;, &quot;TK_IMPORT&quot;,
+  &quot;TK_EXPHEADERCODE&quot;, &quot;TK_MODHEADERCODE&quot;, &quot;TK_TYPEHEADERCODE&quot;, &quot;TK_MODULE&quot;,
+  &quot;TK_CMODULE&quot;, &quot;TK_CONSMODULE&quot;, &quot;TK_COMPOMODULE&quot;, &quot;TK_CLASS&quot;, &quot;TK_STRUCT&quot;,
+  &quot;TK_PUBLIC&quot;, &quot;TK_PROTECTED&quot;, &quot;TK_PRIVATE&quot;, &quot;TK_SIGNALS&quot;, &quot;TK_SLOTS&quot;,
+  &quot;TK_BOOL&quot;, &quot;TK_SHORT&quot;, &quot;TK_INT&quot;, &quot;TK_LONG&quot;, &quot;TK_FLOAT&quot;, &quot;TK_DOUBLE&quot;,
+  &quot;TK_CHAR&quot;, &quot;TK_WCHAR_T&quot;, &quot;TK_VOID&quot;, &quot;TK_PYOBJECT&quot;, &quot;TK_PYTUPLE&quot;,
+  &quot;TK_PYLIST&quot;, &quot;TK_PYDICT&quot;, &quot;TK_PYCALLABLE&quot;, &quot;TK_PYSLICE&quot;, &quot;TK_PYTYPE&quot;,
+  &quot;TK_VIRTUAL&quot;, &quot;TK_ENUM&quot;, &quot;TK_SIGNED&quot;, &quot;TK_UNSIGNED&quot;, &quot;TK_SCOPE&quot;,
+  &quot;TK_LOGICAL_OR&quot;, &quot;TK_CONST&quot;, &quot;TK_STATIC&quot;, &quot;TK_SIPSIGNAL&quot;, &quot;TK_SIPSLOT&quot;,
+  &quot;TK_SIPANYSLOT&quot;, &quot;TK_SIPRXCON&quot;, &quot;TK_SIPRXDIS&quot;, &quot;TK_SIPSLOTCON&quot;,
+  &quot;TK_SIPSLOTDIS&quot;, &quot;TK_NUMBER&quot;, &quot;TK_REAL&quot;, &quot;TK_TYPEDEF&quot;, &quot;TK_NAMESPACE&quot;,
+  &quot;TK_TIMELINE&quot;, &quot;TK_PLATFORMS&quot;, &quot;TK_FEATURE&quot;, &quot;TK_LICENSE&quot;, &quot;TK_QCHAR&quot;,
+  &quot;TK_TRUE&quot;, &quot;TK_FALSE&quot;, &quot;TK_NULL&quot;, &quot;TK_OPERATOR&quot;, &quot;TK_THROW&quot;,
+  &quot;TK_QOBJECT&quot;, &quot;TK_EXCEPTION&quot;, &quot;TK_RAISECODE&quot;, &quot;TK_EXPLICIT&quot;,
+  &quot;TK_TEMPLATE&quot;, &quot;TK_ELLIPSIS&quot;, &quot;TK_DEFMETATYPE&quot;, &quot;TK_DEFSUPERTYPE&quot;, &quot;'{'&quot;,
+  &quot;'}'&quot;, &quot;';'&quot;, &quot;'('&quot;, &quot;')'&quot;, &quot;'!'&quot;, &quot;'-'&quot;, &quot;','&quot;, &quot;'='&quot;, &quot;'+'&quot;, &quot;'*'&quot;,
+  &quot;'/'&quot;, &quot;'&amp;'&quot;, &quot;'|'&quot;, &quot;'~'&quot;, &quot;'&lt;'&quot;, &quot;'&gt;'&quot;, &quot;':'&quot;, &quot;'['&quot;, &quot;']'&quot;, &quot;'%'&quot;,
+  &quot;'^'&quot;, &quot;$accept&quot;, &quot;specification&quot;, &quot;statement&quot;, &quot;@1&quot;, &quot;modstatement&quot;,
+  &quot;nsstatement&quot;, &quot;plugin&quot;, &quot;exception&quot;, &quot;baseexception&quot;, &quot;raisecode&quot;,
+  &quot;mappedtype&quot;, &quot;@2&quot;, &quot;mappedtypetmpl&quot;, &quot;@3&quot;, &quot;mtdefinition&quot;, &quot;mtbody&quot;,
+  &quot;mtline&quot;, &quot;namespace&quot;, &quot;@4&quot;, &quot;nsbody&quot;, &quot;platforms&quot;, &quot;@5&quot;, &quot;platformlist&quot;,
+  &quot;platform&quot;, &quot;feature&quot;, &quot;timeline&quot;, &quot;@6&quot;, &quot;qualifierlist&quot;,
+  &quot;qualifiername&quot;, &quot;ifstart&quot;, &quot;oredqualifiers&quot;, &quot;qualifiers&quot;, &quot;ifend&quot;,
+  &quot;license&quot;, &quot;defmetatype&quot;, &quot;defsupertype&quot;, &quot;consmodule&quot;, &quot;compmodule&quot;,
+  &quot;module&quot;, &quot;modlang&quot;, &quot;dottedname&quot;, &quot;optnumber&quot;, &quot;include&quot;, &quot;optinclude&quot;,
+  &quot;import&quot;, &quot;optaccesscode&quot;, &quot;optgetcode&quot;, &quot;optsetcode&quot;, &quot;copying&quot;,
+  &quot;exphdrcode&quot;, &quot;modhdrcode&quot;, &quot;typehdrcode&quot;, &quot;opttypehdrcode&quot;, &quot;travcode&quot;,
+  &quot;clearcode&quot;, &quot;getbufcode&quot;, &quot;releasebufcode&quot;, &quot;readbufcode&quot;,
   &quot;writebufcode&quot;, &quot;segcountcode&quot;, &quot;charbufcode&quot;, &quot;picklecode&quot;, &quot;modcode&quot;,
   &quot;typecode&quot;, &quot;preinitcode&quot;, &quot;initcode&quot;, &quot;postinitcode&quot;, &quot;unitcode&quot;,
   &quot;prepycode&quot;, &quot;doc&quot;, &quot;exporteddoc&quot;, &quot;makefile&quot;, &quot;codeblock&quot;, &quot;codelines&quot;,
@@ -849,50 +857,52 @@ static const unsigned short int yytoknum[] =
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   123,   125,    59,
-      40,    41,    33,    45,    44,    61,    43,    42,    47,    38,
-     124,   126,    60,    62,    58,    91,    93,    37,    94
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   123,
+     125,    59,    40,    41,    33,    45,    44,    61,    43,    42,
+      47,    38,   124,   126,    60,    62,    58,    91,    93,    37,
+      94
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned short int yyr1[] =
 {
-       0,   129,   130,   130,   132,   131,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   135,   136,   137,   137,
-     138,   140,   139,   142,   141,   143,   144,   144,   145,   145,
-     145,   147,   146,   148,   148,   150,   149,   151,   151,   152,
-     153,   155,   154,   156,   156,   157,   158,   159,   159,   159,
-     159,   160,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   168,   169,   169,   170,   170,   171,   172,   173,   174,
-     174,   175,   175,   176,   176,   177,   178,   179,   180,   181,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     200,   202,   201,   203,   203,   204,   204,   205,   205,   206,
-     206,   207,   207,   207,   208,   208,   209,   209,   210,   210,
-     211,   211,   212,   212,   212,   212,   212,   212,   213,   213,
-     213,   213,   213,   214,   215,   215,   216,   217,   217,   217,
-     217,   217,   217,   217,   217,   217,   218,   218,   218,   219,
-     219,   221,   220,   223,   222,   224,   226,   225,   227,   227,
-     228,   228,   229,   230,   230,   231,   231,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   233,   233,   234,   236,   235,   235,   237,
-     238,   238,   239,   239,   240,   240,   241,   241,   241,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   243,   243,
-     244,   244,   245,   245,   246,   246,   247,   247,   248,   248,
-     248,   249,   249,   250,   250,   251,   252,   252,   252,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   255,   254,
-     254,   256,   256,   258,   257,   257,   259,   260,   260,   261,
-     262,   262,   263,   263,   264,   264,   264,   264,   264,   264,
-     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
-     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
-     264,   264,   265,   265,   266,   266,   267,   267,   267
+       0,   131,   132,   132,   134,   133,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   137,   138,   139,   139,
+     140,   142,   141,   144,   143,   145,   146,   146,   147,   147,
+     147,   149,   148,   150,   150,   152,   151,   153,   153,   154,
+     155,   157,   156,   158,   158,   159,   160,   161,   161,   161,
+     161,   162,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   170,   171,   171,   172,   172,   173,   174,   175,   176,
+     176,   177,   177,   178,   178,   179,   180,   181,   182,   183,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   204,   206,   205,   207,   207,   208,   208,   209,
+     209,   210,   210,   211,   211,   211,   212,   212,   213,   213,
+     214,   214,   215,   215,   216,   216,   216,   216,   216,   216,
+     217,   217,   217,   217,   217,   218,   219,   219,   220,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   222,   222,
+     222,   223,   223,   225,   224,   227,   226,   228,   230,   229,
+     231,   231,   232,   232,   233,   234,   234,   235,   235,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   237,   237,   238,
+     240,   239,   239,   241,   242,   242,   243,   243,   244,   244,
+     245,   245,   245,   246,   246,   246,   246,   246,   246,   246,
+     246,   246,   246,   246,   246,   246,   246,   246,   246,   246,
+     246,   246,   246,   246,   246,   246,   246,   246,   246,   246,
+     246,   246,   247,   247,   248,   248,   249,   249,   250,   250,
+     251,   251,   252,   252,   252,   253,   253,   254,   254,   255,
+     256,   256,   256,   257,   257,   257,   257,   257,   257,   257,
+     257,   257,   259,   258,   258,   260,   260,   262,   261,   261,
+     263,   264,   264,   265,   266,   266,   267,   267,   268,   268,
+     268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   268,   268,   268,   269,   269,   270,   270,
+     271,   271,   271
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -910,29 +920,30 @@ static const unsigned char yyr2[] =
        1,     1,     1,     1,     0,     1,     2,     2,     2,     0,
        2,     0,     2,     0,     2,     2,     2,     2,     2,     0,
        1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     4,     2,     1,
-       2,     0,     8,     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,     2,     1,     3,     1,     1,     4,     1,
-       1,     1,     1,     1,     1,     1,     0,     1,     3,     5,
-      11,     0,     7,     0,     3,     4,     0,     7,     0,     2,
-       1,     3,     1,     0,     3,     1,     2,     1,     1,     1,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     4,
+       2,     1,     2,     0,     8,     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,     2,     1,     3,     1,     1,
+       4,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+       3,     5,    11,     0,     7,     0,     3,     4,     0,     7,
+       0,     2,     1,     3,     1,     0,     3,     1,     2,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
-       3,     3,     2,     0,     1,    11,     0,     3,     1,     9,
-       0,     5,     0,     6,     0,     1,    13,    14,    13,     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,     2,     0,     3,     1,     3,     1,     3,     1,     1,
-       1,     0,     2,     0,     2,     1,     0,     1,     3,     4,
-       4,     4,     3,     3,     6,     6,     3,     2,     0,     3,
-       1,     1,     1,     0,     3,     1,     7,     4,     3,     3,
-       0,     1,     0,     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,     3,     0,     4,     0,     1,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     3,     3,     3,     2,     0,     1,    11,
+       0,     3,     1,     9,     0,     5,     0,     6,     0,     1,
+      13,    14,    13,     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,     2,     0,     3,     1,     3,
+       1,     3,     1,     1,     1,     0,     2,     0,     2,     1,
+       0,     1,     3,     4,     4,     4,     3,     3,     6,     6,
+       3,     2,     0,     3,     1,     1,     1,     0,     3,     1,
+       7,     4,     3,     3,     0,     1,     0,     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,     3,     0,     4,
+       0,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -942,449 +953,465 @@ static const unsigned short int yydefact[] =
 {
        4,     4,     2,     0,     1,     3,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    83,
-     166,     0,     0,     0,     0,     0,     0,    90,    91,     0,
-       0,     0,     0,   328,   318,   321,   322,   326,   327,   331,
-     332,   333,   334,   335,   336,   337,   338,   339,   340,   135,
-       0,   319,     0,     0,     0,    71,    65,     0,   272,     0,
-       0,     0,   341,     0,     0,     5,    33,     9,    40,    31,
+     168,     0,     0,     0,     0,     0,     0,    90,    91,     0,
+       0,     0,     0,   332,   322,   325,   326,   330,   331,   335,
+     336,   337,   338,   339,   340,   341,   342,   343,   344,   137,
+       0,   323,     0,     0,     0,    71,    65,     0,   276,     0,
+       0,     0,   345,     0,     0,     5,    33,     9,    40,    31,
       32,    36,    15,    16,    14,    34,    35,    17,    18,    19,
        7,     8,     6,     0,    11,    12,    13,    10,    20,    21,
       45,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      42,   314,   164,    41,    37,    39,   183,    38,    43,    44,
-       0,   312,    46,   129,   125,     0,   126,   133,   120,   121,
-     122,   123,   118,   124,   105,     0,   272,   135,    96,    97,
-      98,   106,   107,   108,    92,    93,    87,    88,   186,   181,
-     324,   136,   272,   329,   317,   320,   323,   330,   312,     0,
+      42,   318,   166,    41,    37,    39,   185,    38,    43,    44,
+       0,   316,    46,   131,   127,     0,   128,   135,   122,   123,
+     124,   125,   120,   126,   105,     0,   276,   137,    96,    97,
+      98,   106,   107,   108,    92,    93,    87,    88,   188,   183,
+     328,   138,   276,   333,   321,   324,   327,   334,   316,     0,
       61,     0,     0,    70,     0,    84,     0,    48,     0,    85,
-      86,    94,     0,     0,     0,     0,   272,     0,   310,   130,
-     128,   134,     0,   316,    51,    77,     0,    81,     0,     0,
-     188,   188,   131,   325,   310,   272,   312,     0,     0,     0,
-     276,     0,   274,   286,     0,   272,   342,     0,    95,    89,
-     165,     0,    53,   184,   286,     0,     0,     0,   240,     0,
-     239,   241,   242,   244,   245,   259,   262,   266,     0,   243,
-     246,     0,   313,   311,   308,   127,     0,    78,     0,    76,
-     135,     0,   272,   272,     0,   307,     0,     0,     0,    75,
-       0,    73,    69,     0,    67,     0,     0,   273,   135,   135,
-     135,   135,   135,     0,     0,   135,     0,   285,   287,   135,
-     148,     0,     0,     0,   185,   315,     0,     0,    99,   260,
-     265,   250,   264,   249,   251,   252,   254,   255,   263,   247,
-     267,   248,   261,   253,   256,   286,     0,    52,    79,     0,
-      82,   192,   189,   190,   193,   193,   137,   179,     0,    63,
-       0,   183,    72,    74,    66,    68,   279,   280,   278,   277,
-     275,   272,   272,   272,   272,   272,   286,   286,   272,   268,
-       0,   272,   158,   297,    49,   109,   343,    54,   268,     0,
-     101,   257,   258,     0,     0,     0,     0,    56,    58,    80,
-       0,   234,     0,     0,   146,   141,   142,     0,   138,   139,
-       0,     0,    64,   148,   148,   148,   292,   293,     0,     0,
-     296,   269,   344,   288,   309,   159,   161,   162,   160,   149,
-       0,   150,   110,     0,   344,   100,     0,   103,   268,    59,
-      60,     0,    57,   191,     0,   166,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   223,   223,   223,     0,   303,
-     298,   226,   202,   199,   197,   198,   206,   207,   208,   209,
-     210,   211,   212,   213,   205,   204,   203,   200,   201,   234,
-     195,   215,   214,   228,     0,   305,   216,   300,   301,   302,
-     187,   182,   158,   272,     0,   140,     0,    62,   289,   290,
-     291,   135,   135,     0,   270,   152,   153,   154,   155,   156,
-     157,   158,   174,   170,   169,   175,   171,   172,   173,   167,
-     163,     0,     0,     0,   270,   102,     0,   306,   344,    55,
-     119,   286,   111,   112,   113,   114,   115,   116,   117,   218,
-     217,   224,     0,     0,     0,   222,     0,     0,     0,   194,
-     196,     0,   147,   144,   132,     0,   272,   272,   346,     0,
-     272,   151,   158,    50,     0,   272,   104,   270,     0,   219,
-     220,   221,   304,     0,   303,   299,     0,   227,     0,   145,
-     143,   272,   294,   295,   347,     0,   271,   232,   177,     0,
-      47,   232,   272,   344,     0,     0,     0,   345,     0,     0,
-       0,   168,   158,     0,   232,   272,   344,   180,   348,     0,
-     281,   178,   281,     0,   230,   270,   286,     0,   283,   283,
-     281,     0,     0,   272,     0,   282,     0,   238,   236,   283,
-     286,   281,     0,     0,   284,   237,     0,   229,   281,   233,
-       0,   283,   231,   225
+      86,    94,     0,     0,     0,     0,   276,     0,   314,   132,
+     130,   136,     0,   320,    51,    77,     0,    81,     0,     0,
+     190,   190,   133,   329,   314,   276,   316,     0,     0,     0,
+     280,     0,   278,   290,     0,   276,   346,     0,    95,    89,
+     167,     0,    53,   186,   290,     0,     0,     0,   244,     0,
+     243,   245,   246,   248,   249,   263,   266,   270,     0,   247,
+     250,     0,   317,   315,   312,   129,     0,    78,     0,    76,
+     137,     0,   276,   276,     0,   311,     0,     0,     0,    75,
+       0,    73,    69,     0,    67,     0,     0,   277,   137,   137,
+     137,   137,   137,     0,     0,   137,     0,   289,   291,   137,
+     150,     0,     0,     0,   187,   319,     0,     0,    99,   264,
+     269,   254,   268,   253,   255,   256,   258,   259,   267,   251,
+     271,   252,   265,   257,   260,   290,     0,    52,    79,     0,
+      82,   194,   191,   192,   195,   195,   139,   181,     0,    63,
+       0,   185,    72,    74,    66,    68,   283,   284,   282,   281,
+     279,   276,   276,   276,   276,   276,   290,   290,   276,   272,
+       0,   276,   160,   301,    49,   109,   347,    54,   272,     0,
+     101,   261,   262,     0,     0,     0,     0,    56,    58,    80,
+       0,   238,     0,     0,   148,   143,   144,     0,   140,   141,
+       0,     0,    64,   150,   150,   150,   296,   297,     0,     0,
+     300,   273,   348,   292,   313,   161,   163,   164,   162,   151,
+       0,   152,   110,     0,   348,   100,     0,   103,   272,    59,
+      60,     0,    57,   193,     0,   168,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   227,   227,   227,
+       0,   307,   302,   230,   204,   201,   199,   200,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   207,   206,
+     205,   202,   203,   238,   197,   219,   218,   232,     0,   309,
+     220,   304,   305,   306,   189,   184,   160,   276,     0,   142,
+       0,    62,   293,   294,   295,   137,   137,     0,   274,   154,
+     155,   156,   157,   158,   159,   160,   176,   172,   171,   177,
+     173,   174,   175,   169,   165,     0,     0,     0,   274,   102,
+       0,   310,   348,    55,   121,   290,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   222,   221,   228,     0,     0,
+       0,   226,     0,     0,     0,   196,   198,     0,   149,   146,
+     134,     0,   276,   276,   350,     0,   276,   153,   160,    50,
+       0,   276,   104,   274,     0,   223,   224,   225,   308,     0,
+     307,   303,     0,   231,     0,   147,   145,   276,   298,   299,
+     351,     0,   275,   236,   179,     0,    47,   236,   276,   348,
+       0,     0,     0,   349,     0,     0,     0,   170,   160,     0,
+     236,   276,   348,   182,   352,     0,   285,   180,   285,     0,
+     234,   274,   290,     0,   287,   287,   285,     0,     0,   276,
+       0,   286,     0,   242,   240,   287,   290,   285,     0,     0,
+     288,   241,     0,   233,   285,   237,     0,   287,   235,   229
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
-      -1,     1,     2,     3,    65,    66,    67,    68,   195,   463,
+      -1,     1,     2,     3,    65,    66,    67,    68,   195,   467,
       69,   226,    70,   266,   287,   336,   337,    71,   187,   300,
       72,   152,   243,   244,    73,    74,   151,   240,   241,    75,
      177,   178,    76,    77,    78,    79,    80,    81,    82,    83,
-     136,   199,    84,    85,    86,   330,   377,   467,    87,    88,
-      89,    90,   373,   407,   408,   409,   410,   411,   412,   413,
-      91,   414,    92,    93,    94,    95,    96,    97,    98,    99,
-     114,   115,   100,   234,   172,   142,   347,   348,   349,   520,
-     433,   323,   369,   451,   370,   371,   101,   102,   460,   529,
-     103,   104,   181,   105,   165,   301,   107,   180,   232,   292,
-     293,   342,   419,   420,   482,   421,   422,   488,   423,   562,
-     540,   424,   108,   221,   362,   500,   155,   191,   192,   309,
-     558,   567,   256,   257,   258,   426,   487,   427,   428,   486,
-     109,   259,   260,   224,   168,   111,   197,   444,   525
+     136,   199,    84,    85,    86,   330,   377,   471,    87,    88,
+      89,    90,   373,   409,   410,   411,   412,   413,   414,   415,
+     416,   417,    91,   418,    92,    93,    94,    95,    96,    97,
+      98,    99,   114,   115,   100,   234,   172,   142,   347,   348,
+     349,   526,   437,   323,   369,   455,   370,   371,   101,   102,
+     464,   535,   103,   104,   181,   105,   165,   301,   107,   180,
+     232,   292,   293,   342,   423,   424,   488,   425,   426,   494,
+     427,   568,   546,   428,   108,   221,   362,   506,   155,   191,
+     192,   309,   564,   573,   256,   257,   258,   430,   493,   431,
+     432,   492,   109,   259,   260,   224,   168,   111,   197,   448,
+     531
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -494
+#define YYPACT_NINF -485
 static const short int yypact[] =
 {
-    -494,   140,  -494,   522,  -494,  -494,    40,   115,   115,   148,
-     115,   115,   115,   115,   115,   115,   115,   912,    88,  -494,
-    -494,   185,   192,   193,   115,   115,   115,  -494,  -494,    84,
-      84,   181,   181,  -494,  -494,  -494,   150,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   196,
-     159,   134,   912,   441,   202,  -494,  -494,   203,   109,   441,
-     181,   106,  -494,    84,    84,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,    84,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,   -21,  -494,  -494,  -494,  -494,   211,  -494,  -494,  -494,
-      32,  -494,  -494,  -494,  -494,    66,  -494,   210,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,   181,   109,     7,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   160,     1,
-    -494,  -494,   109,  -494,  -494,  -494,   178,  -494,  -494,    17,
-    -494,   130,   147,  -494,   236,  -494,   149,   -13,   441,  -494,
-    -494,   177,   181,   441,   912,   216,   -46,   320,    63,  -494,
-    -494,  -494,   115,   160,  -494,   151,   243,   191,   156,   155,
-     146,   146,  -494,  -494,    63,   109,  -494,   167,   253,   254,
-     162,    79,  -494,   784,   181,   109,  -494,    27,  -494,  -494,
-    -494,    39,  -494,  -494,   784,   170,   169,   168,   174,   175,
-     176,   179,   182,   207,   209,  -494,    43,   -11,   173,   215,
-     218,   172,  -494,  -494,  -494,  -494,   186,  -494,     9,  -494,
-     196,   181,   109,   109,   189,  -494,   222,     5,   731,  -494,
-       8,  -494,  -494,    18,  -494,    20,   236,  -494,   196,   196,
-     196,   196,   196,   190,   224,   196,   214,   171,  -494,   196,
-     220,   -16,   229,   441,  -494,  -494,   186,   226,   331,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   225,
-    -494,   227,  -494,  -494,  -494,   784,   135,  -494,  -494,   319,
-    -494,   160,   231,  -494,   239,   239,   180,  -494,   232,  -494,
-     184,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,   109,   109,   109,   109,   109,   784,   784,   109,   271,
-     784,   109,    31,  -494,  -494,   307,  -494,  -494,   271,   115,
-     342,  -494,  -494,   241,   115,   115,    25,  -494,  -494,  -494,
-     181,   672,   244,   245,   240,  -494,  -494,   248,   180,  -494,
-     249,   251,  -494,   220,   220,   220,  -494,  -494,   246,   250,
-    -494,  -494,   260,  -494,  -494,  -494,  -494,  -494,  -494,    68,
-     837,  -494,  -494,   261,   260,  -494,   115,   355,   271,  -494,
-    -494,   257,  -494,  -494,   115,   259,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   314,   314,   314,   263,   252,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   609,
-    -494,  -494,  -494,  -494,   267,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,    31,   109,   262,  -494,   441,  -494,  -494,  -494,
-    -494,   196,   196,   264,   255,  -494,  -494,  -494,  -494,  -494,
-    -494,    31,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   -29,
-    -494,   265,   115,   281,   255,  -494,   115,  -494,   260,  -494,
-    -494,   784,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,   266,   268,   269,  -494,   889,   247,   350,  -494,
-    -494,   369,  -494,   280,  -494,    34,   109,   109,   181,   312,
-     109,  -494,    62,  -494,   289,   109,  -494,   255,   290,  -494,
-    -494,  -494,  -494,    33,  -494,  -494,   259,  -494,   292,  -494,
-    -494,   109,  -494,  -494,   160,    49,  -494,   275,    68,    85,
-    -494,   275,   109,   260,   293,   294,   297,  -494,   181,   441,
-     298,  -494,    31,   299,   275,   109,   260,  -494,   160,   300,
-     376,    68,   376,   302,   287,   255,   784,   115,   388,   388,
-     376,   304,   306,   109,   305,  -494,   115,  -494,  -494,   388,
-     784,   376,   309,   295,  -494,  -494,   308,  -494,   376,  -494,
-     296,   388,  -494,  -494
+    -485,    54,  -485,   467,  -485,  -485,    69,    83,    83,    86,
+      83,    83,    83,    83,    83,    83,    83,   975,    70,  -485,
+    -485,   165,   169,   177,    83,    83,    83,  -485,  -485,   132,
+     132,   193,   193,  -485,  -485,  -485,   157,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,   196,
+     162,   137,   975,   949,   197,  -485,  -485,   204,   107,   949,
+     193,   104,  -485,   132,   132,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,   132,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,   -36,  -485,  -485,  -485,  -485,   214,  -485,  -485,  -485,
+      12,  -485,  -485,  -485,  -485,    60,  -485,   210,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,   193,   107,     8,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,   158,     7,
+    -485,  -485,   107,  -485,  -485,  -485,   176,  -485,  -485,     6,
+    -485,   144,   148,  -485,   236,  -485,   150,     2,   949,  -485,
+    -485,   173,   193,   949,   975,   215,   -35,   232,    66,  -485,
+    -485,  -485,    83,   158,  -485,   151,   241,   188,   154,   153,
+     143,   143,  -485,  -485,    66,   107,  -485,   163,   252,   253,
+     159,    -1,  -485,   763,   193,   107,  -485,   -54,  -485,  -485,
+    -485,   -15,  -485,  -485,   763,   166,   168,   161,   167,   171,
+     175,   178,   179,   180,   182,  -485,    46,    22,   172,   186,
+     187,   170,  -485,  -485,  -485,  -485,   185,  -485,    10,  -485,
+     196,   193,   107,   107,   192,  -485,   174,     4,   709,  -485,
+      11,  -485,  -485,    15,  -485,    20,   236,  -485,   196,   196,
+     196,   196,   196,   194,   195,   196,   198,   189,  -485,   196,
+     191,   -23,   200,   949,  -485,  -485,   185,   199,   272,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,   202,
+    -485,   203,  -485,  -485,  -485,   763,   116,  -485,  -485,   268,
+    -485,   158,   201,  -485,   205,   205,   184,  -485,   209,  -485,
+     181,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,   107,   107,   107,   107,   107,   763,   763,   107,   235,
+     763,   107,    75,  -485,  -485,   249,  -485,  -485,   235,    83,
+     302,  -485,  -485,   211,    83,    83,    19,  -485,  -485,  -485,
+     193,   648,   212,   217,   208,  -485,  -485,   206,   184,  -485,
+     218,   222,  -485,   191,   191,   191,  -485,  -485,   216,   221,
+    -485,  -485,   237,  -485,  -485,  -485,  -485,  -485,  -485,    47,
+     818,  -485,  -485,   238,   237,  -485,    83,   306,   235,  -485,
+    -485,   224,  -485,  -485,    83,   226,    83,    83,    83,    83,
+      83,    83,    83,    83,    83,    83,    83,   285,   285,   285,
+     219,   220,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,   556,  -485,  -485,  -485,  -485,   240,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,    75,   107,   231,  -485,
+     949,  -485,  -485,  -485,  -485,   196,   196,   246,   243,  -485,
+    -485,  -485,  -485,  -485,  -485,    75,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,   -26,  -485,   254,    83,   255,   243,  -485,
+      83,  -485,   237,  -485,  -485,   763,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,   244,   245,
+     247,  -485,   895,   869,   345,  -485,  -485,   347,  -485,   256,
+    -485,   -17,   107,   107,   193,   287,   107,  -485,    63,  -485,
+     264,   107,  -485,   243,   277,  -485,  -485,  -485,  -485,    14,
+    -485,  -485,   226,  -485,   265,  -485,  -485,   107,  -485,  -485,
+     158,    17,  -485,   266,    47,    67,  -485,   266,   107,   237,
+     279,   281,   284,  -485,   193,   949,   286,  -485,    75,   288,
+     266,   107,   237,  -485,   158,   280,   361,    47,   361,   289,
+     271,   243,   763,    83,   379,   379,   361,   294,   296,   107,
+     295,  -485,    83,  -485,  -485,   379,   763,   361,   298,   283,
+    -485,  -485,   299,  -485,   361,  -485,   290,   379,  -485,  -485
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -494,  -494,   422,  -494,  -494,  -192,  -494,  -309,  -494,  -494,
-    -494,  -494,  -494,  -494,   158,  -494,    89,  -308,  -494,  -494,
-    -494,  -494,  -494,   183,  -494,  -494,  -494,  -494,   187,  -270,
-    -494,  -494,  -268,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-     -15,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -262,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-      -8,  -494,  -306,  -494,  -494,  -113,  -494,  -494,    80,  -494,
-    -494,  -132,  -446,  -494,  -494,  -362,   -22,   284,  -494,  -494,
-    -304,  -291,  -494,  -494,  -494,   426,  -146,  -494,   270,  -494,
-     110,   154,  -494,    36,  -242,  -494,  -494,  -494,   -36,  -494,
-    -462,  -494,  -320,  -494,  -292,  -430,  -101,  -494,   213,  -494,
-    -469,  -493,  -193,  -494,   133,  -494,  -494,   -31,  -494,  -494,
-    -319,    -2,  -494,   273,   -96,    -5,  -150,  -354,  -494
+    -485,  -485,   412,  -485,  -485,  -203,  -485,  -296,  -485,  -485,
+    -485,  -485,  -485,  -485,   149,  -485,    78,  -283,  -485,  -485,
+    -485,  -485,  -485,   190,  -485,  -485,  -485,  -485,   183,  -275,
+    -485,  -485,  -272,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+     -16,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -266,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,    -8,  -485,  -281,  -485,  -485,  -114,  -485,  -485,
+      68,  -485,  -485,  -132,  -456,  -485,  -485,  -375,   -22,   257,
+    -485,  -485,  -277,  -273,  -485,  -485,  -485,   414,  -150,  -485,
+     239,  -485,    82,   129,  -485,     5,  -191,  -485,  -485,  -485,
+     -69,  -485,  -442,  -485,  -319,  -485,  -289,  -441,  -101,  -485,
+     207,  -485,  -484,  -416,  -173,  -485,   109,  -485,  -485,   -66,
+    -485,  -485,  -318,    -2,  -485,   248,   -99,    -6,  -151,  -355,
+    -485
 };
 
 /* 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 -317
+#define YYTABLE_NINF -321
 static const short int yytable[] =
 {
      116,   110,   118,   119,   120,   121,   122,   123,   124,   138,
-     139,   267,   126,   201,   179,   137,   131,   132,   133,   203,
-     464,   425,   429,  -316,   338,   174,   345,   298,   346,   175,
-     239,   288,   402,   403,   505,   415,   374,   416,   157,   185,
-     242,   182,   134,   135,   306,   162,   299,   148,   159,   160,
-     417,   149,   184,   162,   166,   534,   528,   156,   162,   334,
-     335,   162,   112,   372,   204,   205,   568,    26,   161,   543,
-     492,   404,   154,   405,   338,   162,   575,   532,   345,   406,
-     346,  -314,   553,   559,   236,   169,   468,   170,   583,   501,
-     237,   569,   333,   163,   262,   324,   551,   194,  -316,   425,
-     429,   163,   577,   173,   280,   307,   134,   135,   352,   581,
-     402,   403,   281,   415,   507,   416,   302,   290,  -316,   176,
-    -316,   289,   222,   358,   359,   563,   304,   186,   417,   167,
-     167,   294,   295,   381,   113,   311,   312,   313,   314,   315,
-       4,   263,   318,   365,   366,   521,   321,   367,   263,   404,
-     264,   405,   368,   263,   483,   484,   196,   406,   278,   202,
-     537,   196,   265,   538,   225,   279,   512,   425,   429,   334,
-     335,   117,   261,  -176,   365,   366,  -176,    26,   367,   545,
-     222,   445,   223,   368,   446,   447,   448,   449,   450,   144,
-     145,   146,   555,   246,   147,   418,   541,   247,   127,   542,
-      18,    19,   344,    20,    18,    19,    20,   140,   128,   291,
-     353,   354,   355,   356,   357,   129,   130,   360,   141,   143,
-     364,   438,   439,   440,   150,   153,    26,   154,   158,   164,
-     308,    31,    32,   171,   162,   183,   110,   188,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,   189,    49,    50,    51,   190,   193,
-      52,   326,   198,    31,  -136,   227,   228,   229,   230,    20,
-     231,    53,    54,   418,   238,   239,   242,   245,   508,   268,
-     269,    59,   285,   270,    60,   320,   495,    61,    62,   271,
-     272,   273,   351,   286,   274,   125,   296,   275,   110,   282,
-     316,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,   514,   291,    50,
-      51,   375,   276,    52,   277,   319,   379,   380,   496,   497,
-     283,   297,   493,   284,   317,   322,   325,   328,   329,   110,
-     331,   339,   332,   350,    59,   340,   341,   361,   459,    26,
-     376,    62,   378,   430,   431,   432,   434,   441,   443,   436,
-     437,   442,   462,   564,   466,   461,   469,   481,   465,   471,
-     499,   494,   516,  -235,   498,   502,   470,   576,   472,   473,
-     474,   475,   476,   477,   478,   479,   480,   485,   491,   504,
-     509,   518,   510,   511,   519,   522,   523,   526,   530,   527,
-     539,   533,   535,   204,   531,   546,   547,   550,   552,   557,
-     556,   560,   561,   566,   570,   571,   573,   110,   578,   580,
-     536,   579,   582,     5,   327,   382,   305,   303,   435,   106,
-     206,   544,   207,   208,   196,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   554,   218,   200,   219,   220,   343,
-     383,   233,   517,   363,   503,   490,   515,   235,   506,   310,
-       0,     0,   572,    20,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   524,     0,     0,     0,
-       0,     0,     0,     0,   513,   110,     0,     0,     0,   125,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,     0,     0,    50,    51,     0,   548,    52,     0,     0,
-       0,     0,     0,     0,     0,     6,     7,     8,     9,     0,
-       0,     0,    10,    11,    12,    13,    14,   549,    15,    16,
-      17,     0,    18,    19,    20,    62,     0,     0,     0,   565,
-       0,     0,     0,     0,     0,     0,     0,     0,   574,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,     0,    49,    50,    51,     0,     0,    52,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    53,
-      54,    55,    56,    57,    58,     0,     0,     0,     0,    59,
-       0,     0,    60,     0,   384,    61,    62,    63,    64,    18,
-      19,   385,     0,     0,     0,   386,   387,   388,   389,   390,
-     391,   392,     0,     0,   393,   394,     0,     0,     0,     0,
-       0,    26,     0,     0,     0,     0,    31,    32,   395,   396,
-     397,   398,     0,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,   399,
-      49,    50,    51,     0,     0,    52,   400,   384,     0,     0,
-       0,     0,    18,    19,   385,     0,    53,    54,   386,   387,
-     388,   389,   390,   391,   392,     0,    59,   393,   394,    60,
-       0,   401,     0,    62,    26,     0,     0,   489,     0,    31,
-      32,   395,   396,   397,   398,     0,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,   399,    49,    50,    51,     0,     0,    52,   400,
-       0,    18,    19,    20,     0,     0,     0,     0,     0,    53,
-      54,     0,     0,     0,     0,     0,     0,     0,     0,    59,
-       0,     0,    60,    26,   401,     0,    62,     0,    31,    32,
+     139,   126,   201,   179,   137,   203,   131,   132,   133,   468,
+     338,   345,   429,   433,   346,   174,   298,   511,   185,  -320,
+     175,   267,   288,   239,   166,   299,   540,   242,   157,   374,
+     162,   182,   134,   135,   306,   404,   148,   159,   160,   184,
+     162,   149,   534,   162,     4,   334,   335,   156,   405,   372,
+     419,   498,   263,    26,   420,   205,   406,   161,   421,   407,
+     338,   264,   538,   345,   565,   408,   346,   204,   162,   169,
+     507,   170,   575,   162,   236,   154,  -318,   237,   163,   472,
+     324,   112,   557,   583,   262,   549,   527,   352,   163,   263,
+     587,   263,   113,   173,   429,   433,  -320,   307,   559,   117,
+     265,   167,   333,   167,   194,   246,   290,   513,   186,   247,
+     569,   302,   176,   222,   289,   304,  -320,   404,  -320,   381,
+     543,   294,   295,   544,   311,   312,   313,   314,   315,   280,
+     405,   318,   419,   358,   359,   321,   420,   281,   406,   574,
+     421,   407,   334,   335,   134,   135,   196,   408,   202,   581,
+      26,   196,   449,   278,   225,   450,   451,   452,   453,   454,
+     279,   589,   261,   518,   429,   433,  -178,   365,   366,  -178,
+     547,   367,   127,   548,   551,   222,   368,   223,   128,   365,
+     366,   422,   129,   367,   144,   145,   146,   561,   368,   147,
+     130,    18,    19,    20,    18,    19,   344,   489,   490,   291,
+     353,   354,   355,   356,   357,    20,   140,   360,   141,   150,
+     364,   442,   443,   444,   143,    26,   153,   154,   158,   308,
+      31,    32,   164,   171,   162,   183,   110,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,   188,    49,    50,    51,   189,   190,    52,
+     198,   326,   193,   227,    31,   228,  -138,   229,   230,   231,
+      53,    54,   238,   422,   239,   242,   245,   268,   270,   329,
+      59,   269,   285,    60,   271,   297,    61,    62,   272,   501,
+     339,   351,   273,    26,   286,   274,   275,   276,   110,   277,
+     282,   296,   514,   283,   284,   320,   316,   317,   322,   325,
+     376,   319,   328,   361,   341,   470,   438,   340,   291,   331,
+     332,   375,   350,   434,   378,   436,   379,   380,   435,   445,
+     440,   502,   503,   441,   446,   473,   499,   447,   475,   110,
+     487,   466,   500,  -239,   206,   491,   207,   208,   463,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   504,   218,
+     505,   219,   220,   497,   465,   510,   508,   522,   469,   524,
+     515,   516,   525,   517,   532,   536,   474,   541,   476,   477,
+     478,   479,   480,   481,   482,   483,   484,   485,   486,   570,
+     539,   204,   562,   545,   552,   553,   563,   556,   567,   558,
+     566,   528,   529,   582,   572,   533,   576,   577,   579,   584,
+     537,   585,   586,     5,   382,   327,   439,   106,   588,   200,
+     233,   110,   383,   303,   343,   523,   542,   521,   496,   363,
+       0,     0,   235,   305,     0,     0,     0,   550,   196,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     560,     0,     0,   310,     0,     0,     0,     0,   509,     0,
+       0,     0,   512,     0,     0,     0,     0,     0,   578,     0,
+       6,     7,     8,     9,     0,     0,     0,    10,    11,    12,
+      13,    14,   530,    15,    16,    17,     0,    18,    19,    20,
+     519,   110,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,   554,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,     0,
+      49,    50,    51,   555,     0,    52,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   571,    53,    54,    55,    56,
+      57,    58,     0,     0,   580,     0,    59,     0,     0,    60,
+       0,   384,    61,    62,    63,    64,    18,    19,   385,     0,
+       0,     0,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,     0,     0,   395,   396,     0,     0,     0,     0,     0,
+      26,     0,     0,     0,     0,    31,    32,   397,   398,   399,
+     400,     0,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,   401,    49,
+      50,    51,     0,     0,    52,   402,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    53,    54,     0,     0,     0,
+       0,     0,     0,     0,     0,    59,     0,     0,    60,     0,
+     403,     0,    62,   384,     0,     0,   495,     0,    18,    19,
+     385,     0,     0,     0,   386,   387,   388,   389,   390,   391,
+     392,   393,   394,     0,     0,   395,   396,     0,     0,     0,
+       0,     0,    26,     0,     0,     0,     0,    31,    32,   397,
+     398,   399,   400,     0,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+     401,    49,    50,    51,     0,     0,    52,   402,     0,    18,
+      19,    20,     0,     0,     0,     0,     0,    53,    54,     0,
+       0,     0,     0,     0,     0,     0,     0,    59,     0,     0,
+      60,     0,   403,    26,    62,     0,     0,     0,    31,    32,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,     0,    49,    50,    51,     0,    20,    52,     0,     0,
+      48,     0,    49,    50,    51,    20,     0,    52,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    53,    54,
        0,     0,     0,     0,     0,     0,     0,     0,    59,     0,
-       0,    60,   125,     0,    61,    62,     0,     0,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,     0,     0,    50,    51,     0,    20,
-      52,   452,   248,   249,   250,   251,   252,   253,   254,     0,
+       0,    60,     0,   125,    61,    62,     0,     0,     0,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,     0,     0,    50,    51,     0,
+      20,    52,   456,   248,   249,   250,   251,   252,   253,   254,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   255,     0,   125,     0,     0,    62,     0,
+       0,     0,     0,     0,   255,     0,     0,     0,   125,    62,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+       0,    20,    50,    51,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   457,   458,     0,     0,     0,
+       0,     0,     0,   459,   460,   461,   462,    20,     0,   125,
+       0,     0,     0,     0,    62,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,   520,     0,    50,    51,   125,     0,    52,     0,     0,
+       0,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,     0,    59,    50,
+      51,    20,     0,    52,     0,    62,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    59,     0,     0,    20,     0,   125,
+       0,    62,     0,     0,     0,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,     0,     0,    50,    51,   125,     0,    52,     0,     0,
        0,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,     0,     0,    50,
-      51,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   453,   454,     0,     0,     0,     0,     0,     0,
-     455,   456,   457,   458,    20,     0,     0,   125,     0,     0,
-       0,    62,     0,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,     0,
-     125,    50,    51,     0,     0,    52,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,     0,     0,    50,    51,    59,     0,     0,     0,
-       0,     0,     0,    62,     0,     0,     0,     0,     0,     0,
+      51,     0,     0,     0,     0,    62,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    62
+       0,    62
 };
 
 static const short int yycheck[] =
 {
        8,     3,    10,    11,    12,    13,    14,    15,    16,    31,
-      32,   204,    17,   163,   127,    30,    24,    25,    26,   165,
-     374,   341,   341,    22,   286,   126,   296,    22,   296,    22,
-      22,    22,   341,   341,   464,   341,   328,   341,    60,    22,
-      22,   142,    22,    23,    24,    74,   238,    52,    63,    64,
-     341,    53,   148,    74,    22,    22,   502,    59,    74,    34,
-      35,    74,    22,   325,   110,   166,   559,    42,    83,   531,
-     432,   341,   118,   341,   336,    74,   569,   507,   348,   341,
-     348,   110,   544,   552,   185,    19,   378,    21,   581,   451,
-     186,   560,   285,   122,   195,   111,   542,   110,    97,   419,
-     419,   122,   571,   125,   115,    85,    22,    23,   300,   578,
-     419,   419,   123,   419,   468,   419,   108,   230,   117,   112,
-     119,   112,   117,   316,   317,   555,   108,   110,   419,    97,
-      97,   232,   233,   108,    19,   248,   249,   250,   251,   252,
-       0,   114,   255,   112,   113,   111,   259,   116,   114,   419,
-     123,   419,   121,   114,   396,   397,   158,   419,   115,   164,
-     111,   163,   123,   114,   172,   122,   486,   487,   487,    34,
-      35,    23,   194,   111,   112,   113,   114,    42,   116,   533,
-     117,   113,   119,   121,   116,   117,   118,   119,   120,    55,
-      56,    57,   546,   114,    60,   341,   111,   118,   110,   114,
-      20,    21,    22,    22,    20,    21,    22,    57,    23,   231,
-     311,   312,   313,   314,   315,    23,    23,   318,    22,    60,
-     321,   353,   354,   355,    22,    22,    42,   118,   122,    18,
-     245,    47,    48,    23,    74,    57,   238,   107,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,   107,    71,    72,    73,    22,   110,
-      76,   263,    85,    47,   113,    22,    75,   111,   113,    22,
-     124,    87,    88,   419,   107,    22,    22,   115,   471,   109,
-     111,    97,   110,   115,   100,   114,   436,   103,   104,   115,
-     115,   115,   108,   107,   115,    48,   107,   115,   300,   126,
-     110,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,   340,    72,
-      73,   329,   115,    76,   115,   111,   334,   335,   441,   442,
-     115,   109,   433,   115,   110,   115,   107,   111,     7,   341,
-     115,    22,   115,   111,    97,   114,   107,    76,   370,    42,
-       8,   104,   111,   109,   109,   115,   108,   111,    98,   110,
-     109,   111,   101,   556,     9,   370,   109,    53,   376,   110,
-     115,   109,    22,   121,   110,   110,   384,   570,   386,   387,
-     388,   389,   390,   391,   392,   393,   394,   124,   121,   108,
-     124,    22,   124,   124,   114,   496,   497,    85,   109,   500,
-     125,   111,   110,   110,   505,   111,   109,   109,   109,    33,
-     110,   109,   125,    25,   110,   109,   111,   419,   109,   111,
-     521,   126,   126,     1,   266,   336,   243,   240,   348,     3,
-     110,   532,   112,   113,   436,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   545,   125,   162,   127,   128,   295,
-     340,   181,   488,   320,   462,   419,   487,   184,   466,   246,
-      -1,    -1,   563,    22,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   498,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   486,   487,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    55,    56,    57,    58,
+      32,    17,   163,   127,    30,   165,    24,    25,    26,   374,
+     286,   296,   341,   341,   296,   126,    22,   468,    22,    22,
+      22,   204,    22,    22,    22,   238,    22,    22,    60,   328,
+      76,   142,    22,    23,    24,   341,    52,    63,    64,   148,
+      76,    53,   508,    76,     0,    36,    37,    59,   341,   325,
+     341,   436,   116,    44,   341,   166,   341,    83,   341,   341,
+     336,   125,   513,   348,   558,   341,   348,   112,    76,    19,
+     455,    21,   566,    76,   185,   120,   112,   186,   124,   378,
+     113,    22,   548,   577,   195,   537,   113,   300,   124,   116,
+     584,   116,    19,   125,   423,   423,    99,    87,   550,    23,
+     125,    99,   285,    99,   112,   116,   230,   472,   112,   120,
+     561,   110,   114,   119,   114,   110,   119,   423,   121,   110,
+     113,   232,   233,   116,   248,   249,   250,   251,   252,   117,
+     423,   255,   423,   316,   317,   259,   423,   125,   423,   565,
+     423,   423,    36,    37,    22,    23,   158,   423,   164,   575,
+      44,   163,   115,   117,   172,   118,   119,   120,   121,   122,
+     124,   587,   194,   492,   493,   493,   113,   114,   115,   116,
+     113,   118,   112,   116,   539,   119,   123,   121,    23,   114,
+     115,   341,    23,   118,    57,    58,    59,   552,   123,    62,
+      23,    20,    21,    22,    20,    21,    22,   398,   399,   231,
+     311,   312,   313,   314,   315,    22,    59,   318,    22,    22,
+     321,   353,   354,   355,    62,    44,    22,   120,   124,   245,
+      49,    50,    18,    23,    76,    59,   238,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    -1,    -1,    72,    73,    -1,   538,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
-      -1,    -1,    10,    11,    12,    13,    14,   539,    16,    17,
-      18,    -1,    20,    21,    22,   104,    -1,    -1,    -1,   557,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   566,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    -1,    71,    72,    73,    -1,    -1,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    89,    90,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    -1,    15,   103,   104,   105,   106,    20,
-      21,    22,    -1,    -1,    -1,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    35,    36,    -1,    -1,    -1,    -1,
-      -1,    42,    -1,    -1,    -1,    -1,    47,    48,    49,    50,
-      51,    52,    -1,    54,    55,    56,    57,    58,    59,    60,
+      69,    70,    71,   109,    73,    74,    75,   109,    22,    78,
+      87,   263,   112,    22,    49,    77,   115,   113,   115,   126,
+      89,    90,   109,   423,    22,    22,   117,   111,   117,     7,
+      99,   113,   112,   102,   117,   111,   105,   106,   117,   440,
+      22,   110,   117,    44,   109,   117,   117,   117,   300,   117,
+     128,   109,   475,   117,   117,   116,   112,   112,   117,   109,
+       8,   113,   113,    78,   109,     9,   110,   116,   340,   117,
+     117,   329,   113,   111,   113,   117,   334,   335,   111,   113,
+     112,   445,   446,   111,   113,   111,   437,   100,   112,   341,
+      55,   103,   111,   123,   112,   126,   114,   115,   370,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   112,   127,
+     117,   129,   130,   123,   370,   110,   112,    22,   376,    22,
+     126,   126,   116,   126,    87,   111,   384,   112,   386,   387,
+     388,   389,   390,   391,   392,   393,   394,   395,   396,   562,
+     113,   112,   112,   127,   113,   111,    35,   111,   127,   111,
+     111,   502,   503,   576,    25,   506,   112,   111,   113,   111,
+     511,   128,   113,     1,   336,   266,   348,     3,   128,   162,
+     181,   423,   340,   240,   295,   494,   527,   493,   423,   320,
+      -1,    -1,   184,   243,    -1,    -1,    -1,   538,   440,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     551,    -1,    -1,   246,    -1,    -1,    -1,    -1,   466,    -1,
+      -1,    -1,   470,    -1,    -1,    -1,    -1,    -1,   569,    -1,
+       3,     4,     5,     6,    -1,    -1,    -1,    10,    11,    12,
+      13,    14,   504,    16,    17,    18,    -1,    20,    21,    22,
+     492,   493,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
+      -1,    -1,   544,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    -1,
+      73,    74,    75,   545,    -1,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   563,    89,    90,    91,    92,
+      93,    94,    -1,    -1,   572,    -1,    99,    -1,    -1,   102,
+      -1,    15,   105,   106,   107,   108,    20,    21,    22,    -1,
+      -1,    -1,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,
+      44,    -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,
+      54,    -1,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,   102,    -1,
+     104,    -1,   106,    15,    -1,    -1,   110,    -1,    20,    21,
+      22,    -1,    -1,    -1,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    -1,    -1,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
+      52,    53,    54,    -1,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    -1,    -1,    78,    79,    -1,    20,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,    -1,
+     102,    -1,   104,    44,   106,    -1,    -1,    -1,    49,    50,
+      -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    -1,    -1,    76,    77,    15,    -1,    -1,
-      -1,    -1,    20,    21,    22,    -1,    87,    88,    26,    27,
-      28,    29,    30,    31,    32,    -1,    97,    35,    36,   100,
-      -1,   102,    -1,   104,    42,    -1,    -1,   108,    -1,    47,
-      48,    49,    50,    51,    52,    -1,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    -1,    -1,    76,    77,
-      -1,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    42,   102,    -1,   104,    -1,    47,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    -1,    71,    72,    73,    -1,    22,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,
-      -1,   100,    48,    -1,   103,   104,    -1,    -1,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    -1,    -1,    72,    73,    -1,    22,
-      76,    24,    78,    79,    80,    81,    82,    83,    84,    -1,
+      71,    -1,    73,    74,    75,    22,    -1,    78,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,    -1,
+      -1,   102,    -1,    50,   105,   106,    -1,    -1,    -1,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    -1,    -1,    74,    75,    -1,
+      22,    78,    24,    80,    81,    82,    83,    84,    85,    86,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    99,    -1,    48,    -1,    -1,   104,    -1,
-      -1,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    -1,    -1,    72,
-      73,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    22,    -1,    -1,    48,    -1,    -1,
-      -1,   104,    -1,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    -1,
-      48,    72,    73,    -1,    -1,    76,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    -1,    -1,    72,    73,    97,    -1,    -1,    -1,
-      -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    50,   106,
+      -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      -1,    22,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
+      -1,    -1,    -1,    95,    96,    97,    98,    22,    -1,    50,
+      -1,    -1,    -1,    -1,   106,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    -1,    74,    75,    50,    -1,    78,    -1,    -1,
+      -1,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    -1,    99,    74,
+      75,    22,    -1,    78,    -1,   106,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   104
+      -1,    -1,    -1,    -1,    99,    -1,    -1,    22,    -1,    50,
+      -1,   106,    -1,    -1,    -1,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    -1,    -1,    74,    75,    50,    -1,    78,    -1,    -1,
+      -1,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    -1,    -1,    74,
+      75,    -1,    -1,    -1,    -1,   106,    -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,   106
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned short int yystos[] =
 {
-       0,   130,   131,   132,     0,   131,     3,     4,     5,     6,
+       0,   132,   133,   134,     0,   133,     3,     4,     5,     6,
       10,    11,    12,    13,    14,    16,    17,    18,    20,    21,
-      22,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    71,
-      72,    73,    76,    87,    88,    89,    90,    91,    92,    97,
-     100,   103,   104,   105,   106,   133,   134,   135,   136,   139,
-     141,   146,   149,   153,   154,   158,   161,   162,   163,   164,
-     165,   166,   167,   168,   171,   172,   173,   177,   178,   179,
-     180,   189,   191,   192,   193,   194,   195,   196,   197,   198,
-     201,   215,   216,   219,   220,   222,   224,   225,   241,   259,
-     260,   264,    22,    19,   199,   200,   199,    23,   199,   199,
-     199,   199,   199,   199,   199,    48,   264,   110,    23,    23,
-      23,   199,   199,   199,    22,    23,   169,   169,   215,   215,
-      57,    22,   204,    60,    55,    56,    57,    60,   264,   260,
-      22,   155,   150,    22,   118,   245,   260,   215,   122,   169,
-     169,   169,    74,   122,    18,   223,    22,    97,   263,    19,
-      21,    23,   203,   215,   245,    22,   112,   159,   160,   204,
-     226,   221,   245,    57,   263,    22,   110,   147,   107,   107,
-      22,   246,   247,   110,   110,   137,   260,   265,    85,   170,
-     216,   265,   264,   225,   110,   245,   110,   112,   113,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   125,   127,
-     128,   242,   117,   119,   262,   199,   140,    22,    75,   111,
-     113,   124,   227,   227,   202,   262,   245,   263,   107,    22,
-     156,   157,    22,   151,   152,   115,   114,   118,    78,    79,
-      80,    81,    82,    83,    84,    99,   251,   252,   253,   260,
-     261,   215,   245,   114,   123,   123,   142,   251,   109,   111,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   122,
-     115,   123,   126,   115,   115,   110,   107,   143,    22,   112,
-     204,   215,   228,   229,   245,   245,   107,   109,    22,   134,
-     148,   224,   108,   157,   108,   152,    24,    85,   169,   248,
-     247,   204,   204,   204,   204,   204,   110,   110,   204,   111,
-     114,   204,   115,   210,   111,   107,   260,   143,   111,     7,
-     174,   115,   115,   251,    34,    35,   144,   145,   180,    22,
-     114,   107,   230,   230,    22,   158,   161,   205,   206,   207,
-     111,   108,   134,   245,   245,   245,   245,   245,   251,   251,
-     245,    76,   243,   253,   245,   112,   113,   116,   121,   211,
-     213,   214,   180,   181,   243,   199,     8,   175,   111,   199,
-     199,   108,   145,   229,    15,    22,    26,    27,    28,    29,
-      30,    31,    32,    35,    36,    49,    50,    51,    52,    70,
-      77,   102,   136,   146,   158,   161,   180,   182,   183,   184,
-     185,   186,   187,   188,   190,   201,   219,   220,   225,   231,
-     232,   234,   235,   237,   240,   241,   254,   256,   257,   259,
-     109,   109,   115,   209,   108,   207,   110,   109,   210,   210,
-     210,   111,   111,    98,   266,   113,   116,   117,   118,   119,
-     120,   212,    24,    85,    86,    93,    94,    95,    96,   215,
-     217,   264,   101,   138,   266,   199,     9,   176,   243,   109,
-     199,   110,   199,   199,   199,   199,   199,   199,   199,   199,
-     199,    53,   233,   233,   233,   124,   258,   255,   236,   108,
-     232,   121,   214,   245,   109,   265,   204,   204,   110,   115,
-     244,   214,   110,   199,   108,   244,   199,   266,   251,   124,
-     124,   124,   241,   260,    70,   256,    22,   237,    22,   114,
-     208,   111,   245,   245,   215,   267,    85,   245,   211,   218,
-     109,   245,   244,   111,    22,   110,   245,   111,   114,   125,
-     239,   111,   114,   239,   245,   266,   111,   109,   215,   260,
-     109,   211,   109,   239,   245,   266,   110,    33,   249,   249,
-     109,   125,   238,   244,   251,   199,    25,   250,   250,   249,
-     110,   109,   245,   111,   199,   250,   251,   249,   109,   126,
-     111,   249,   126,   250
+      22,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    73,
+      74,    75,    78,    89,    90,    91,    92,    93,    94,    99,
+     102,   105,   106,   107,   108,   135,   136,   137,   138,   141,
+     143,   148,   151,   155,   156,   160,   163,   164,   165,   166,
+     167,   168,   169,   170,   173,   174,   175,   179,   180,   181,
+     182,   193,   195,   196,   197,   198,   199,   200,   201,   202,
+     205,   219,   220,   223,   224,   226,   228,   229,   245,   263,
+     264,   268,    22,    19,   203,   204,   203,    23,   203,   203,
+     203,   203,   203,   203,   203,    50,   268,   112,    23,    23,
+      23,   203,   203,   203,    22,    23,   171,   171,   219,   219,
+      59,    22,   208,    62,    57,    58,    59,    62,   268,   264,
+      22,   157,   152,    22,   120,   249,   264,   219,   124,   171,
+     171,   171,    76,   124,    18,   227,    22,    99,   267,    19,
+      21,    23,   207,   219,   249,    22,   114,   161,   162,   208,
+     230,   225,   249,    59,   267,    22,   112,   149,   109,   109,
+      22,   250,   251,   112,   112,   139,   264,   269,    87,   172,
+     220,   269,   268,   229,   112,   249,   112,   114,   115,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   127,   129,
+     130,   246,   119,   121,   266,   203,   142,    22,    77,   113,
+     115,   126,   231,   231,   206,   266,   249,   267,   109,    22,
+     158,   159,    22,   153,   154,   117,   116,   120,    80,    81,
+      82,    83,    84,    85,    86,   101,   255,   256,   257,   264,
+     265,   219,   249,   116,   125,   125,   144,   255,   111,   113,
+     117,   117,   117,   117,   117,   117,   117,   117,   117,   124,
+     117,   125,   128,   117,   117,   112,   109,   145,    22,   114,
+     208,   219,   232,   233,   249,   249,   109,   111,    22,   136,
+     150,   228,   110,   159,   110,   154,    24,    87,   171,   252,
+     251,   208,   208,   208,   208,   208,   112,   112,   208,   113,
+     116,   208,   117,   214,   113,   109,   264,   145,   113,     7,
+     176,   117,   117,   255,    36,    37,   146,   147,   182,    22,
+     116,   109,   234,   234,    22,   160,   163,   209,   210,   211,
+     113,   110,   136,   249,   249,   249,   249,   249,   255,   255,
+     249,    78,   247,   257,   249,   114,   115,   118,   123,   215,
+     217,   218,   182,   183,   247,   203,     8,   177,   113,   203,
+     203,   110,   147,   233,    15,    22,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    37,    38,    51,    52,    53,
+      54,    72,    79,   104,   138,   148,   160,   163,   182,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   194,   205,
+     223,   224,   229,   235,   236,   238,   239,   241,   244,   245,
+     258,   260,   261,   263,   111,   111,   117,   213,   110,   211,
+     112,   111,   214,   214,   214,   113,   113,   100,   270,   115,
+     118,   119,   120,   121,   122,   216,    24,    87,    88,    95,
+      96,    97,    98,   219,   221,   268,   103,   140,   270,   203,
+       9,   178,   247,   111,   203,   112,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,    55,   237,   237,
+     237,   126,   262,   259,   240,   110,   236,   123,   218,   249,
+     111,   269,   208,   208,   112,   117,   248,   218,   112,   203,
+     110,   248,   203,   270,   255,   126,   126,   126,   245,   264,
+      72,   260,    22,   241,    22,   116,   212,   113,   249,   249,
+     219,   271,    87,   249,   215,   222,   111,   249,   248,   113,
+      22,   112,   249,   113,   116,   127,   243,   113,   116,   243,
+     249,   270,   113,   111,   219,   264,   111,   215,   111,   243,
+     249,   270,   112,    35,   253,   253,   111,   127,   242,   248,
+     255,   203,    25,   254,   254,   253,   112,   111,   249,   113,
+     203,   254,   255,   253,   111,   128,   113,   253,   128,   254
 };
 
 #if ! defined (YYSIZE_T) &amp;&amp; defined (__SIZE_TYPE__)
@@ -1996,7 +2023,7 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 317 &quot;parser.y&quot;
+#line 321 &quot;parser.y&quot;
     {
             /*
              * We don't do these in parserEOF() because the parser is reading
@@ -2017,7 +2044,7 @@ yyreduce:
     break;
 
   case 20:
-#line 350 &quot;parser.y&quot;
+#line 354 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentSpec-&gt;exphdrcode, yyvsp[0].codeb);
@@ -2025,7 +2052,7 @@ yyreduce:
     break;
 
   case 21:
-#line 354 &quot;parser.y&quot;
+#line 358 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;hdrcode, yyvsp[0].codeb);
@@ -2033,7 +2060,7 @@ yyreduce:
     break;
 
   case 22:
-#line 358 &quot;parser.y&quot;
+#line 362 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;cppcode, yyvsp[0].codeb);
@@ -2041,7 +2068,7 @@ yyreduce:
     break;
 
   case 45:
-#line 386 &quot;parser.y&quot;
+#line 390 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2056,14 +2083,14 @@ yyreduce:
     break;
 
   case 46:
-#line 399 &quot;parser.y&quot;
+#line 403 &quot;parser.y&quot;
     {
             appendString(&amp;currentSpec-&gt;plugins, yyvsp[0].text);
         }
     break;
 
   case 47:
-#line 404 &quot;parser.y&quot;
+#line 408 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2100,7 +2127,7 @@ yyreduce:
     break;
 
   case 48:
-#line 439 &quot;parser.y&quot;
+#line 443 &quot;parser.y&quot;
     {
             yyval.exceptionbase.bibase = NULL;
             yyval.exceptionbase.base = NULL;
@@ -2108,7 +2135,7 @@ yyreduce:
     break;
 
   case 49:
-#line 443 &quot;parser.y&quot;
+#line 447 &quot;parser.y&quot;
     {
             exceptionDef *xd;
 
@@ -2184,14 +2211,14 @@ yyreduce:
     break;
 
   case 50:
-#line 517 &quot;parser.y&quot;
+#line 521 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 51:
-#line 522 &quot;parser.y&quot;
+#line 526 &quot;parser.y&quot;
     {
             if (notSkipping())
                 currentMappedType = newMappedType(currentSpec, &amp;yyvsp[-1].memArg, &amp;yyvsp[0].optflags);
@@ -2199,7 +2226,7 @@ yyreduce:
     break;
 
   case 53:
-#line 528 &quot;parser.y&quot;
+#line 532 &quot;parser.y&quot;
     {
             int a;
 
@@ -2250,7 +2277,7 @@ yyreduce:
     break;
 
   case 55:
-#line 577 &quot;parser.y&quot;
+#line 581 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2266,7 +2293,7 @@ yyreduce:
     break;
 
   case 58:
-#line 595 &quot;parser.y&quot;
+#line 599 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentMappedType-&gt;iff-&gt;hdrcode, yyvsp[0].codeb);
@@ -2274,7 +2301,7 @@ yyreduce:
     break;
 
   case 59:
-#line 599 &quot;parser.y&quot;
+#line 603 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2287,7 +2314,7 @@ yyreduce:
     break;
 
   case 60:
-#line 608 &quot;parser.y&quot;
+#line 612 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2300,7 +2327,7 @@ yyreduce:
     break;
 
   case 61:
-#line 619 &quot;parser.y&quot;
+#line 623 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;namespace definition not allowed in a C module&quot;);
@@ -2320,7 +2347,7 @@ yyreduce:
     break;
 
   case 62:
-#line 634 &quot;parser.y&quot;
+#line 638 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2338,7 +2365,7 @@ yyreduce:
     break;
 
   case 65:
-#line 654 &quot;parser.y&quot;
+#line 658 &quot;parser.y&quot;
     {
             qualDef *qd;
 
@@ -2349,7 +2376,7 @@ yyreduce:
     break;
 
   case 66:
-#line 661 &quot;parser.y&quot;
+#line 665 &quot;parser.y&quot;
     {
             qualDef *qd;
             int nrneeded;
@@ -2371,28 +2398,28 @@ yyreduce:
     break;
 
   case 69:
-#line 685 &quot;parser.y&quot;
+#line 689 &quot;parser.y&quot;
     {
             newQualifier(currentModule,-1,-1,yyvsp[0].text,platform_qualifier);
         }
     break;
 
   case 70:
-#line 690 &quot;parser.y&quot;
+#line 694 &quot;parser.y&quot;
     {
             newQualifier(currentModule,-1,-1,yyvsp[0].text,feature_qualifier);
         }
     break;
 
   case 71:
-#line 695 &quot;parser.y&quot;
+#line 699 &quot;parser.y&quot;
     {
             currentTimelineOrder = 0;
         }
     break;
 
   case 72:
-#line 698 &quot;parser.y&quot;
+#line 702 &quot;parser.y&quot;
     {
             qualDef *qd;
             int nrneeded;
@@ -2416,14 +2443,14 @@ yyreduce:
     break;
 
   case 75:
-#line 724 &quot;parser.y&quot;
+#line 728 &quot;parser.y&quot;
     {
             newQualifier(currentModule,currentModule -&gt; nrtimelines,currentTimelineOrder++,yyvsp[0].text,time_qualifier);
         }
     break;
 
   case 76:
-#line 729 &quot;parser.y&quot;
+#line 733 &quot;parser.y&quot;
     {
             if (skipStackPtr &gt;= MAX_NESTED_IF)
                 yyerror(&quot;Internal error: increase the value of MAX_NESTED_IF&quot;);
@@ -2438,42 +2465,42 @@ yyreduce:
     break;
 
   case 77:
-#line 742 &quot;parser.y&quot;
+#line 746 &quot;parser.y&quot;
     {
             yyval.boolean = platOrFeature(yyvsp[0].text,FALSE);
         }
     break;
 
   case 78:
-#line 745 &quot;parser.y&quot;
+#line 749 &quot;parser.y&quot;
     {
             yyval.boolean = platOrFeature(yyvsp[0].text,TRUE);
         }
     break;
 
   case 79:
-#line 748 &quot;parser.y&quot;
+#line 752 &quot;parser.y&quot;
     {
             yyval.boolean = (platOrFeature(yyvsp[0].text,FALSE) || yyvsp[-2].boolean);
         }
     break;
 
   case 80:
-#line 751 &quot;parser.y&quot;
+#line 755 &quot;parser.y&quot;
     {
             yyval.boolean = (platOrFeature(yyvsp[0].text,TRUE) || yyvsp[-3].boolean);
         }
     break;
 
   case 82:
-#line 757 &quot;parser.y&quot;
+#line 761 &quot;parser.y&quot;
     {
             yyval.boolean = timePeriod(yyvsp[-2].text,yyvsp[0].text);
         }
     break;
 
   case 83:
-#line 762 &quot;parser.y&quot;
+#line 766 &quot;parser.y&quot;
     {
             if (skipStackPtr-- &lt;= 0)
                 yyerror(&quot;Too many %End directives&quot;);
@@ -2481,7 +2508,7 @@ yyreduce:
     break;
 
   case 84:
-#line 768 &quot;parser.y&quot;
+#line 772 &quot;parser.y&quot;
     {
             optFlag *of;
 
@@ -2510,7 +2537,7 @@ yyreduce:
     break;
 
   case 85:
-#line 795 &quot;parser.y&quot;
+#line 799 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2523,7 +2550,7 @@ yyreduce:
     break;
 
   case 86:
-#line 806 &quot;parser.y&quot;
+#line 810 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2536,7 +2563,7 @@ yyreduce:
     break;
 
   case 87:
-#line 817 &quot;parser.y&quot;
+#line 821 &quot;parser.y&quot;
     {
             /* Make sure this is the first mention of a module. */
             if (currentSpec-&gt;module != currentModule)
@@ -2551,7 +2578,7 @@ yyreduce:
     break;
 
   case 88:
-#line 830 &quot;parser.y&quot;
+#line 834 &quot;parser.y&quot;
     {
             /* Make sure this is the first mention of a module. */
             if (currentSpec-&gt;module != currentModule)
@@ -2566,7 +2593,7 @@ yyreduce:
     break;
 
   case 89:
-#line 843 &quot;parser.y&quot;
+#line 847 &quot;parser.y&quot;
     {
             /* Check the module hasn't already been defined. */
 
@@ -2601,21 +2628,21 @@ yyreduce:
     break;
 
   case 90:
-#line 876 &quot;parser.y&quot;
+#line 880 &quot;parser.y&quot;
     {
             yyval.boolean = FALSE;
         }
     break;
 
   case 91:
-#line 879 &quot;parser.y&quot;
+#line 883 &quot;parser.y&quot;
     {
             yyval.boolean = TRUE;
         }
     break;
 
   case 93:
-#line 885 &quot;parser.y&quot;
+#line 889 &quot;parser.y&quot;
     {
             /*
              * The grammar design is a bit broken and this is the easiest way
@@ -2633,207 +2660,221 @@ yyreduce:
     break;
 
   case 94:
-#line 901 &quot;parser.y&quot;
+#line 905 &quot;parser.y&quot;
     {
             yyval.number = -1;
         }
     break;
 
   case 96:
-#line 907 &quot;parser.y&quot;
+#line 911 &quot;parser.y&quot;
     {
             parseFile(NULL, yyvsp[0].text, NULL, FALSE);
         }
     break;
 
   case 97:
-#line 912 &quot;parser.y&quot;
+#line 916 &quot;parser.y&quot;
     {
             parseFile(NULL, yyvsp[0].text, NULL, TRUE);
         }
     break;
 
   case 98:
-#line 917 &quot;parser.y&quot;
+#line 921 &quot;parser.y&quot;
     {
             newImport(yyvsp[0].text);
         }
     break;
 
   case 99:
-#line 922 &quot;parser.y&quot;
+#line 926 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
   case 100:
-#line 925 &quot;parser.y&quot;
+#line 929 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 101:
-#line 930 &quot;parser.y&quot;
+#line 934 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
   case 102:
-#line 933 &quot;parser.y&quot;
+#line 937 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 103:
-#line 938 &quot;parser.y&quot;
+#line 942 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
   case 104:
-#line 941 &quot;parser.y&quot;
+#line 945 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 105:
-#line 946 &quot;parser.y&quot;
+#line 950 &quot;parser.y&quot;
     {
             appendCodeBlock(&amp;currentModule-&gt;copying, yyvsp[0].codeb);
         }
     break;
 
   case 106:
-#line 951 &quot;parser.y&quot;
+#line 955 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 107:
-#line 956 &quot;parser.y&quot;
+#line 960 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 108:
-#line 961 &quot;parser.y&quot;
+#line 965 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 109:
-#line 966 &quot;parser.y&quot;
+#line 970 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
   case 111:
-#line 972 &quot;parser.y&quot;
+#line 976 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 112:
-#line 977 &quot;parser.y&quot;
+#line 981 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 113:
-#line 982 &quot;parser.y&quot;
+#line 986 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 114:
-#line 987 &quot;parser.y&quot;
+#line 991 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 115:
-#line 992 &quot;parser.y&quot;
+#line 996 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 116:
-#line 997 &quot;parser.y&quot;
+#line 1001 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 117:
-#line 1002 &quot;parser.y&quot;
+#line 1006 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 118:
-#line 1007 &quot;parser.y&quot;
+#line 1011 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 119:
-#line 1012 &quot;parser.y&quot;
+#line 1016 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
   case 120:
-#line 1017 &quot;parser.y&quot;
+#line 1021 &quot;parser.y&quot;
+    {
+            yyval.codeb = yyvsp[0].codeb;
+        }
+    break;
+
+  case 121:
+#line 1026 &quot;parser.y&quot;
+    {
+            yyval.codeb = yyvsp[0].codeb;
+        }
+    break;
+
+  case 122:
+#line 1031 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;preinitcode, yyvsp[0].codeb);
         }
     break;
 
-  case 121:
-#line 1023 &quot;parser.y&quot;
+  case 123:
+#line 1037 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;initcode, yyvsp[0].codeb);
         }
     break;
 
-  case 122:
-#line 1029 &quot;parser.y&quot;
+  case 124:
+#line 1043 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;postinitcode, yyvsp[0].codeb);
         }
     break;
 
-  case 123:
-#line 1035 &quot;parser.y&quot;
+  case 125:
+#line 1049 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentModule-&gt;unitcode, yyvsp[0].codeb);
         }
     break;
 
-  case 124:
-#line 1041 &quot;parser.y&quot;
+  case 126:
+#line 1055 &quot;parser.y&quot;
     {
             /*
              * This is a no-op and is retained for compatibility
@@ -2843,31 +2884,31 @@ yyreduce:
         }
     break;
 
-  case 125:
-#line 1050 &quot;parser.y&quot;
+  case 127:
+#line 1064 &quot;parser.y&quot;
     {
             if (inMainModule())
                 appendCodeBlock(&amp;currentSpec -&gt; docs,yyvsp[0].codeb);
         }
     break;
 
-  case 126:
-#line 1056 &quot;parser.y&quot;
+  case 128:
+#line 1070 &quot;parser.y&quot;
     {
             appendCodeBlock(&amp;currentSpec -&gt; docs,yyvsp[0].codeb);
         }
     break;
 
-  case 127:
-#line 1061 &quot;parser.y&quot;
+  case 129:
+#line 1075 &quot;parser.y&quot;
     {
             if (inMainModule())
                 yywarning(&quot;%Makefile is ignored, please use the -b flag instead&quot;);
         }
     break;
 
-  case 130:
-#line 1071 &quot;parser.y&quot;
+  case 132:
+#line 1085 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[-1].codeb;
 
@@ -2879,8 +2920,8 @@ yyreduce:
         }
     break;
 
-  case 131:
-#line 1082 &quot;parser.y&quot;
+  case 133:
+#line 1096 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2892,36 +2933,36 @@ yyreduce:
         }
     break;
 
-  case 133:
-#line 1093 &quot;parser.y&quot;
+  case 135:
+#line 1107 &quot;parser.y&quot;
     {
             yyval.text = NULL;
         }
     break;
 
-  case 134:
-#line 1096 &quot;parser.y&quot;
+  case 136:
+#line 1110 &quot;parser.y&quot;
     {
             yyval.text = yyvsp[0].text;
         }
     break;
 
-  case 135:
-#line 1101 &quot;parser.y&quot;
+  case 137:
+#line 1115 &quot;parser.y&quot;
     {
             yyval.text = NULL;
         }
     break;
 
-  case 136:
-#line 1104 &quot;parser.y&quot;
+  case 138:
+#line 1118 &quot;parser.y&quot;
     {
             yyval.text = yyvsp[0].text;
         }
     break;
 
-  case 143:
-#line 1119 &quot;parser.y&quot;
+  case 145:
+#line 1133 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -2949,22 +2990,22 @@ yyreduce:
         }
     break;
 
-  case 148:
-#line 1154 &quot;parser.y&quot;
+  case 150:
+#line 1168 &quot;parser.y&quot;
     {
             yyval.valp = NULL;
         }
     break;
 
-  case 149:
-#line 1157 &quot;parser.y&quot;
+  case 151:
+#line 1171 &quot;parser.y&quot;
     {
             yyval.valp = yyvsp[0].valp;
         }
     break;
 
-  case 151:
-#line 1163 &quot;parser.y&quot;
+  case 153:
+#line 1177 &quot;parser.y&quot;
     {
             valueDef *vd;
  
@@ -2983,85 +3024,85 @@ yyreduce:
         }
     break;
 
-  case 152:
-#line 1181 &quot;parser.y&quot;
+  case 154:
+#line 1195 &quot;parser.y&quot;
     {
             yyval.qchar = '-';
         }
     break;
 
-  case 153:
-#line 1184 &quot;parser.y&quot;
+  case 155:
+#line 1198 &quot;parser.y&quot;
     {
             yyval.qchar = '+';
         }
     break;
 
-  case 154:
-#line 1187 &quot;parser.y&quot;
+  case 156:
+#line 1201 &quot;parser.y&quot;
     {
             yyval.qchar = '*';
         }
     break;
 
-  case 155:
-#line 1190 &quot;parser.y&quot;
+  case 157:
+#line 1204 &quot;parser.y&quot;
     {
             yyval.qchar = '/';
         }
     break;
 
-  case 156:
-#line 1193 &quot;parser.y&quot;
+  case 158:
+#line 1207 &quot;parser.y&quot;
     {
             yyval.qchar = '&amp;';
         }
     break;
 
-  case 157:
-#line 1196 &quot;parser.y&quot;
+  case 159:
+#line 1210 &quot;parser.y&quot;
     {
             yyval.qchar = '|';
         }
     break;
 
-  case 158:
-#line 1201 &quot;parser.y&quot;
+  case 160:
+#line 1215 &quot;parser.y&quot;
     {
             yyval.qchar = '\0';
         }
     break;
 
-  case 159:
-#line 1204 &quot;parser.y&quot;
+  case 161:
+#line 1218 &quot;parser.y&quot;
     {
             yyval.qchar = '!';
         }
     break;
 
-  case 160:
-#line 1207 &quot;parser.y&quot;
+  case 162:
+#line 1221 &quot;parser.y&quot;
     {
             yyval.qchar = '~';
         }
     break;
 
-  case 161:
-#line 1210 &quot;parser.y&quot;
+  case 163:
+#line 1224 &quot;parser.y&quot;
     {
             yyval.qchar = '-';
         }
     break;
 
-  case 162:
-#line 1213 &quot;parser.y&quot;
+  case 164:
+#line 1227 &quot;parser.y&quot;
     {
             yyval.qchar = '+';
         }
     break;
 
-  case 163:
-#line 1218 &quot;parser.y&quot;
+  case 165:
+#line 1232 &quot;parser.y&quot;
     {
             if (yyvsp[-1].qchar != '\0' &amp;&amp; yyvsp[0].value.vtype == string_value)
                 yyerror(&quot;Invalid unary operator for string&quot;);
@@ -3080,8 +3121,8 @@ yyreduce:
         }
     break;
 
-  case 165:
-#line 1237 &quot;parser.y&quot;
+  case 167:
+#line 1251 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;Scoped names are not allowed in a C module&quot;);
@@ -3090,15 +3131,15 @@ yyreduce:
         }
     break;
 
-  case 166:
-#line 1245 &quot;parser.y&quot;
+  case 168:
+#line 1259 &quot;parser.y&quot;
     {
             yyval.scpvalp = text2scopePart(yyvsp[0].text);
         }
     break;
 
-  case 167:
-#line 1250 &quot;parser.y&quot;
+  case 169:
+#line 1264 &quot;parser.y&quot;
     {
             /*
              * We let the C++ compiler decide if the value is a valid one - no
@@ -3110,8 +3151,8 @@ yyreduce:
         }
     break;
 
-  case 168:
-#line 1259 &quot;parser.y&quot;
+  case 170:
+#line 1273 &quot;parser.y&quot;
     {
             fcallDef *fcd;
 
@@ -3124,64 +3165,64 @@ yyreduce:
         }
     break;
 
-  case 169:
-#line 1269 &quot;parser.y&quot;
+  case 171:
+#line 1283 &quot;parser.y&quot;
     {
             yyval.value.vtype = real_value;
             yyval.value.u.vreal = yyvsp[0].real;
         }
     break;
 
-  case 170:
-#line 1273 &quot;parser.y&quot;
+  case 172:
+#line 1287 &quot;parser.y&quot;
     {
             yyval.value.vtype = numeric_value;
             yyval.value.u.vnum = yyvsp[0].number;
         }
     break;
 
-  case 171:
-#line 1277 &quot;parser.y&quot;
+  case 173:
+#line 1291 &quot;parser.y&quot;
     {
             yyval.value.vtype = numeric_value;
             yyval.value.u.vnum = 1;
         }
     break;
 
-  case 172:
-#line 1281 &quot;parser.y&quot;
+  case 174:
+#line 1295 &quot;parser.y&quot;
     {
             yyval.value.vtype = numeric_value;
             yyval.value.u.vnum = 0;
         }
     break;
 
-  case 173:
-#line 1285 &quot;parser.y&quot;
+  case 175:
+#line 1299 &quot;parser.y&quot;
     {
             yyval.value.vtype = numeric_value;
             yyval.value.u.vnum = 0;
         }
     break;
 
-  case 174:
-#line 1289 &quot;parser.y&quot;
+  case 176:
+#line 1303 &quot;parser.y&quot;
     {
             yyval.value.vtype = string_value;
             yyval.value.u.vstr = yyvsp[0].text;
         }
     break;
 
-  case 175:
-#line 1293 &quot;parser.y&quot;
+  case 177:
+#line 1307 &quot;parser.y&quot;
     {
             yyval.value.vtype = qchar_value;
             yyval.value.u.vqchar = yyvsp[0].qchar;
         }
     break;
 
-  case 176:
-#line 1299 &quot;parser.y&quot;
+  case 178:
+#line 1313 &quot;parser.y&quot;
     {
             /* No values. */
 
@@ -3189,8 +3230,8 @@ yyreduce:
         }
     break;
 
-  case 177:
-#line 1304 &quot;parser.y&quot;
+  case 179:
+#line 1318 &quot;parser.y&quot;
     {
             /* The single or first expression. */
 
@@ -3199,8 +3240,8 @@ yyreduce:
         }
     break;
 
-  case 178:
-#line 1310 &quot;parser.y&quot;
+  case 180:
+#line 1324 &quot;parser.y&quot;
     {
             /* Check that it wasn't ...(,expression...). */
 
@@ -3219,16 +3260,16 @@ yyreduce:
         }
     break;
 
-  case 179:
-#line 1328 &quot;parser.y&quot;
+  case 181:
+#line 1342 &quot;parser.y&quot;
     {
             if (notSkipping())
                 newTypedef(currentSpec, currentModule, yyvsp[-2].text, &amp;yyvsp[-3].memArg, &amp;yyvsp[-1].optflags);
         }
     break;
 
-  case 180:
-#line 1332 &quot;parser.y&quot;
+  case 182:
+#line 1346 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3252,8 +3293,8 @@ yyreduce:
         }
     break;
 
-  case 181:
-#line 1355 &quot;parser.y&quot;
+  case 183:
+#line 1369 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc &amp;&amp; yyvsp[0].scpvalp-&gt;next != NULL)
                 yyerror(&quot;Namespaces not allowed in a C module&quot;);
@@ -3266,8 +3307,8 @@ yyreduce:
         }
     break;
 
-  case 182:
-#line 1364 &quot;parser.y&quot;
+  case 184:
+#line 1378 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3279,13 +3320,13 @@ yyreduce:
         }
     break;
 
-  case 183:
-#line 1375 &quot;parser.y&quot;
+  case 185:
+#line 1389 &quot;parser.y&quot;
     {currentIsTemplate = TRUE;}
     break;
 
-  case 184:
-#line 1375 &quot;parser.y&quot;
+  case 186:
+#line 1389 &quot;parser.y&quot;
     {
             if (currentSpec-&gt;genc)
                 yyerror(&quot;Class templates not allowed in a C module&quot;);
@@ -3313,15 +3354,15 @@ yyreduce:
         }
     break;
 
-  case 185:
-#line 1402 &quot;parser.y&quot;
+  case 187:
+#line 1416 &quot;parser.y&quot;
     {
             yyval.signature = yyvsp[-1].signature;
         }
     break;
 
-  case 186:
-#line 1407 &quot;parser.y&quot;
+  case 188:
+#line 1421 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;Class definition not allowed in a C module&quot;);
@@ -3334,16 +3375,16 @@ yyreduce:
         }
     break;
 
-  case 187:
-#line 1416 &quot;parser.y&quot;
+  case 189:
+#line 1430 &quot;parser.y&quot;
     {
             if (notSkipping())
                 yyval.klass = completeClass(yyvsp[-5].scpvalp, &amp;yyvsp[-2].optflags, yyvsp[-1].boolean);
         }
     break;
 
-  case 192:
-#line 1430 &quot;parser.y&quot;
+  case 194:
+#line 1444 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3383,38 +3424,38 @@ yyreduce:
         }
     break;
 
-  case 193:
-#line 1469 &quot;parser.y&quot;
+  case 195:
+#line 1483 &quot;parser.y&quot;
     {
             yyval.boolean = FALSE;
         }
     break;
 
-  case 194:
-#line 1472 &quot;parser.y&quot;
+  case 196:
+#line 1486 &quot;parser.y&quot;
     {
             yyval.boolean = TRUE;
         }
     break;
 
-  case 205:
-#line 1489 &quot;parser.y&quot;
+  case 207:
+#line 1503 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentScope()-&gt;cppcode, yyvsp[0].codeb);
         }
     break;
 
-  case 206:
-#line 1493 &quot;parser.y&quot;
+  case 208:
+#line 1507 &quot;parser.y&quot;
     {
             if (notSkipping())
                 appendCodeBlock(&amp;currentScope()-&gt;iff-&gt;hdrcode, yyvsp[0].codeb);
         }
     break;
 
-  case 207:
-#line 1497 &quot;parser.y&quot;
+  case 209:
+#line 1511 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3428,8 +3469,8 @@ yyreduce:
         }
     break;
 
-  case 208:
-#line 1508 &quot;parser.y&quot;
+  case 210:
+#line 1522 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3443,8 +3484,38 @@ yyreduce:
         }
     break;
 
-  case 209:
-#line 1519 &quot;parser.y&quot;
+  case 211:
+#line 1533 &quot;parser.y&quot;
+    {
+            if (notSkipping())
+            {
+                classDef *scope = currentScope();
+
+                if (scope-&gt;getbufcode != NULL)
+                    yyerror(&quot;%BIGetBufferCode already given for class&quot;);
+
+                scope-&gt;getbufcode = yyvsp[0].codeb;
+            }
+        }
+    break;
+
+  case 212:
+#line 1544 &quot;parser.y&quot;
+    {
+            if (notSkipping())
+            {
+                classDef *scope = currentScope();
+
+                if (scope-&gt;releasebufcode != NULL)
+                    yyerror(&quot;%BIReleaseBufferCode already given for class&quot;);
+
+                scope-&gt;releasebufcode = yyvsp[0].codeb;
+            }
+        }
+    break;
+
+  case 213:
+#line 1555 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3458,8 +3529,8 @@ yyreduce:
         }
     break;
 
-  case 210:
-#line 1530 &quot;parser.y&quot;
+  case 214:
+#line 1566 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3473,8 +3544,8 @@ yyreduce:
         }
     break;
 
-  case 211:
-#line 1541 &quot;parser.y&quot;
+  case 215:
+#line 1577 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3488,8 +3559,8 @@ yyreduce:
         }
     break;
 
-  case 212:
-#line 1552 &quot;parser.y&quot;
+  case 216:
+#line 1588 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3503,8 +3574,8 @@ yyreduce:
         }
     break;
 
-  case 213:
-#line 1563 &quot;parser.y&quot;
+  case 217:
+#line 1599 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3518,8 +3589,8 @@ yyreduce:
         }
     break;
 
-  case 217:
-#line 1577 &quot;parser.y&quot;
+  case 221:
+#line 1613 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3533,8 +3604,8 @@ yyreduce:
         }
     break;
 
-  case 218:
-#line 1588 &quot;parser.y&quot;
+  case 222:
+#line 1624 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3548,8 +3619,8 @@ yyreduce:
         }
     break;
 
-  case 219:
-#line 1599 &quot;parser.y&quot;
+  case 223:
+#line 1635 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;public section not allowed in a C module&quot;);
@@ -3559,8 +3630,8 @@ yyreduce:
         }
     break;
 
-  case 220:
-#line 1606 &quot;parser.y&quot;
+  case 224:
+#line 1642 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;protected section not allowed in a C module&quot;);
@@ -3570,8 +3641,8 @@ yyreduce:
         }
     break;
 
-  case 221:
-#line 1613 &quot;parser.y&quot;
+  case 225:
+#line 1649 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;private section not allowed in a C module&quot;);
@@ -3581,8 +3652,8 @@ yyreduce:
         }
     break;
 
-  case 222:
-#line 1620 &quot;parser.y&quot;
+  case 226:
+#line 1656 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;signals section not allowed in a C module&quot;);
@@ -3592,22 +3663,22 @@ yyreduce:
         }
     break;
 
-  case 223:
-#line 1629 &quot;parser.y&quot;
+  case 227:
+#line 1665 &quot;parser.y&quot;
     {
             yyval.number = 0;
         }
     break;
 
-  case 224:
-#line 1632 &quot;parser.y&quot;
+  case 228:
+#line 1668 &quot;parser.y&quot;
     {
             yyval.number = SECT_IS_SLOT;
         }
     break;
 
-  case 225:
-#line 1637 &quot;parser.y&quot;
+  case 229:
+#line 1673 &quot;parser.y&quot;
     {
             /* Note that we allow non-virtual dtors in C modules. */
 
@@ -3657,13 +3728,13 @@ yyreduce:
         }
     break;
 
-  case 226:
-#line 1686 &quot;parser.y&quot;
+  case 230:
+#line 1722 &quot;parser.y&quot;
     {currentCtorIsExplicit = TRUE;}
     break;
 
-  case 229:
-#line 1690 &quot;parser.y&quot;
+  case 233:
+#line 1726 &quot;parser.y&quot;
     {
             /* Note that we allow ctors in C modules. */
 
@@ -3690,15 +3761,15 @@ yyreduce:
         }
     break;
 
-  case 230:
-#line 1716 &quot;parser.y&quot;
+  case 234:
+#line 1752 &quot;parser.y&quot;
     {
             yyval.optsignature = NULL;
         }
     break;
 
-  case 231:
-#line 1719 &quot;parser.y&quot;
+  case 235:
+#line 1755 &quot;parser.y&quot;
     {
             yyval.optsignature = sipMalloc(sizeof (signatureDef));
 
@@ -3706,15 +3777,15 @@ yyreduce:
         }
     break;
 
-  case 232:
-#line 1726 &quot;parser.y&quot;
+  case 236:
+#line 1762 &quot;parser.y&quot;
     {
             yyval.optsignature = NULL;
         }
     break;
 
-  case 233:
-#line 1729 &quot;parser.y&quot;
+  case 237:
+#line 1765 &quot;parser.y&quot;
     {
             yyval.optsignature = sipMalloc(sizeof (signatureDef));
 
@@ -3723,22 +3794,22 @@ yyreduce:
         }
     break;
 
-  case 234:
-#line 1737 &quot;parser.y&quot;
+  case 238:
+#line 1773 &quot;parser.y&quot;
     {
             yyval.number = FALSE;
         }
     break;
 
-  case 235:
-#line 1740 &quot;parser.y&quot;
+  case 239:
+#line 1776 &quot;parser.y&quot;
     {
             yyval.number = TRUE;
         }
     break;
 
-  case 236:
-#line 1745 &quot;parser.y&quot;
+  case 240:
+#line 1781 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3758,8 +3829,8 @@ yyreduce:
         }
     break;
 
-  case 237:
-#line 1762 &quot;parser.y&quot;
+  case 241:
+#line 1798 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3787,8 +3858,8 @@ yyreduce:
         }
     break;
 
-  case 238:
-#line 1787 &quot;parser.y&quot;
+  case 242:
+#line 1823 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -3865,174 +3936,174 @@ yyreduce:
         }
     break;
 
-  case 239:
-#line 1863 &quot;parser.y&quot;
+  case 243:
+#line 1899 &quot;parser.y&quot;
     {yyval.text = &quot;__add__&quot;;}
     break;
 
-  case 240:
-#line 1864 &quot;parser.y&quot;
+  case 244:
+#line 1900 &quot;parser.y&quot;
     {yyval.text = &quot;__sub__&quot;;}
     break;
 
-  case 241:
-#line 1865 &quot;parser.y&quot;
+  case 245:
+#line 1901 &quot;parser.y&quot;
     {yyval.text = &quot;__mul__&quot;;}
     break;
 
-  case 242:
-#line 1866 &quot;parser.y&quot;
+  case 246:
+#line 1902 &quot;parser.y&quot;
     {yyval.text = &quot;__div__&quot;;}
     break;
 
-  case 243:
-#line 1867 &quot;parser.y&quot;
+  case 247:
+#line 1903 &quot;parser.y&quot;
     {yyval.text = &quot;__mod__&quot;;}
     break;
 
-  case 244:
-#line 1868 &quot;parser.y&quot;
+  case 248:
+#line 1904 &quot;parser.y&quot;
     {yyval.text = &quot;__and__&quot;;}
     break;
 
-  case 245:
-#line 1869 &quot;parser.y&quot;
+  case 249:
+#line 1905 &quot;parser.y&quot;
     {yyval.text = &quot;__or__&quot;;}
     break;
 
-  case 246:
-#line 1870 &quot;parser.y&quot;
+  case 250:
+#line 1906 &quot;parser.y&quot;
     {yyval.text = &quot;__xor__&quot;;}
     break;
 
-  case 247:
-#line 1871 &quot;parser.y&quot;
+  case 251:
+#line 1907 &quot;parser.y&quot;
     {yyval.text = &quot;__lshift__&quot;;}
     break;
 
-  case 248:
-#line 1872 &quot;parser.y&quot;
+  case 252:
+#line 1908 &quot;parser.y&quot;
     {yyval.text = &quot;__rshift__&quot;;}
     break;
 
-  case 249:
-#line 1873 &quot;parser.y&quot;
+  case 253:
+#line 1909 &quot;parser.y&quot;
     {yyval.text = &quot;__iadd__&quot;;}
     break;
 
-  case 250:
-#line 1874 &quot;parser.y&quot;
+  case 254:
+#line 1910 &quot;parser.y&quot;
     {yyval.text = &quot;__isub__&quot;;}
     break;
 
-  case 251:
-#line 1875 &quot;parser.y&quot;
+  case 255:
+#line 1911 &quot;parser.y&quot;
     {yyval.text = &quot;__imul__&quot;;}
     break;
 
-  case 252:
-#line 1876 &quot;parser.y&quot;
+  case 256:
+#line 1912 &quot;parser.y&quot;
     {yyval.text = &quot;__idiv__&quot;;}
     break;
 
-  case 253:
-#line 1877 &quot;parser.y&quot;
+  case 257:
+#line 1913 &quot;parser.y&quot;
     {yyval.text = &quot;__imod__&quot;;}
     break;
 
-  case 254:
-#line 1878 &quot;parser.y&quot;
+  case 258:
+#line 1914 &quot;parser.y&quot;
     {yyval.text = &quot;__iand__&quot;;}
     break;
 
-  case 255:
-#line 1879 &quot;parser.y&quot;
+  case 259:
+#line 1915 &quot;parser.y&quot;
     {yyval.text = &quot;__ior__&quot;;}
     break;
 
-  case 256:
-#line 1880 &quot;parser.y&quot;
+  case 260:
+#line 1916 &quot;parser.y&quot;
     {yyval.text = &quot;__ixor__&quot;;}
     break;
 
-  case 257:
-#line 1881 &quot;parser.y&quot;
+  case 261:
+#line 1917 &quot;parser.y&quot;
     {yyval.text = &quot;__ilshift__&quot;;}
     break;
 
-  case 258:
-#line 1882 &quot;parser.y&quot;
+  case 262:
+#line 1918 &quot;parser.y&quot;
     {yyval.text = &quot;__irshift__&quot;;}
     break;
 
-  case 259:
-#line 1883 &quot;parser.y&quot;
+  case 263:
+#line 1919 &quot;parser.y&quot;
     {yyval.text = &quot;__invert__&quot;;}
     break;
 
-  case 260:
-#line 1884 &quot;parser.y&quot;
+  case 264:
+#line 1920 &quot;parser.y&quot;
     {yyval.text = &quot;__call__&quot;;}
     break;
 
-  case 261:
-#line 1885 &quot;parser.y&quot;
+  case 265:
+#line 1921 &quot;parser.y&quot;
     {yyval.text = &quot;__getitem__&quot;;}
     break;
 
-  case 262:
-#line 1886 &quot;parser.y&quot;
+  case 266:
+#line 1922 &quot;parser.y&quot;
     {yyval.text = &quot;__lt__&quot;;}
     break;
 
-  case 263:
-#line 1887 &quot;parser.y&quot;
+  case 267:
+#line 1923 &quot;parser.y&quot;
     {yyval.text = &quot;__le__&quot;;}
     break;
 
-  case 264:
-#line 1888 &quot;parser.y&quot;
+  case 268:
+#line 1924 &quot;parser.y&quot;
     {yyval.text = &quot;__eq__&quot;;}
     break;
 
-  case 265:
-#line 1889 &quot;parser.y&quot;
+  case 269:
+#line 1925 &quot;parser.y&quot;
     {yyval.text = &quot;__ne__&quot;;}
     break;
 
-  case 266:
-#line 1890 &quot;parser.y&quot;
+  case 270:
+#line 1926 &quot;parser.y&quot;
     {yyval.text = &quot;__gt__&quot;;}
     break;
 
-  case 267:
-#line 1891 &quot;parser.y&quot;
+  case 271:
+#line 1927 &quot;parser.y&quot;
     {yyval.text = &quot;__ge__&quot;;}
     break;
 
-  case 268:
-#line 1894 &quot;parser.y&quot;
+  case 272:
+#line 1930 &quot;parser.y&quot;
     {
             yyval.number = FALSE;
         }
     break;
 
-  case 269:
-#line 1897 &quot;parser.y&quot;
+  case 273:
+#line 1933 &quot;parser.y&quot;
     {
             yyval.number = TRUE;
         }
     break;
 
-  case 270:
-#line 1902 &quot;parser.y&quot;
+  case 274:
+#line 1938 &quot;parser.y&quot;
     {
             yyval.number = 0;
         }
     break;
 
-  case 271:
-#line 1905 &quot;parser.y&quot;
+  case 275:
+#line 1941 &quot;parser.y&quot;
     {
             if (yyvsp[0].number != 0)
                 yyerror(&quot;Abstract virtual function '= 0' expected&quot;);
@@ -4041,30 +4112,30 @@ yyreduce:
         }
     break;
 
-  case 272:
-#line 1913 &quot;parser.y&quot;
+  case 276:
+#line 1949 &quot;parser.y&quot;
     {
             yyval.optflags.nrFlags = 0;
         }
     break;
 
-  case 273:
-#line 1916 &quot;parser.y&quot;
+  case 277:
+#line 1952 &quot;parser.y&quot;
     {
             yyval.optflags = yyvsp[-1].optflags;
         }
     break;
 
-  case 274:
-#line 1922 &quot;parser.y&quot;
+  case 278:
+#line 1958 &quot;parser.y&quot;
     {
             yyval.optflags.flags[0] = yyvsp[0].flag;
             yyval.optflags.nrFlags = 1;
         }
     break;
 
-  case 275:
-#line 1926 &quot;parser.y&quot;
+  case 279:
+#line 1962 &quot;parser.y&quot;
     {
             /* Check there is room. */
 
@@ -4077,76 +4148,76 @@ yyreduce:
         }
     break;
 
-  case 276:
-#line 1938 &quot;parser.y&quot;
+  case 280:
+#line 1974 &quot;parser.y&quot;
     {
             yyval.flag.ftype = bool_flag;
             yyval.flag.fname = yyvsp[0].text;
         }
     break;
 
-  case 277:
-#line 1942 &quot;parser.y&quot;
+  case 281:
+#line 1978 &quot;parser.y&quot;
     {
             yyval.flag = yyvsp[0].flag;
             yyval.flag.fname = yyvsp[-2].text;
         }
     break;
 
-  case 278:
-#line 1948 &quot;parser.y&quot;
+  case 282:
+#line 1984 &quot;parser.y&quot;
     {
             yyval.flag.ftype = (strchr(yyvsp[0].text, '.') != NULL) ? dotted_name_flag : name_flag;
             yyval.flag.fvalue.sval = yyvsp[0].text;
         }
     break;
 
-  case 279:
-#line 1952 &quot;parser.y&quot;
+  case 283:
+#line 1988 &quot;parser.y&quot;
     {
             yyval.flag.ftype = string_flag;
             yyval.flag.fvalue.sval = yyvsp[0].text;
         }
     break;
 
-  case 280:
-#line 1956 &quot;parser.y&quot;
+  case 284:
+#line 1992 &quot;parser.y&quot;
     {
             yyval.flag.ftype = integer_flag;
             yyval.flag.fvalue.ival = yyvsp[0].number;
         }
     break;
 
-  case 281:
-#line 1962 &quot;parser.y&quot;
+  case 285:
+#line 1998 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
-  case 282:
-#line 1965 &quot;parser.y&quot;
+  case 286:
+#line 2001 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
-  case 283:
-#line 1970 &quot;parser.y&quot;
+  case 287:
+#line 2006 &quot;parser.y&quot;
     {
             yyval.codeb = NULL;
         }
     break;
 
-  case 284:
-#line 1973 &quot;parser.y&quot;
+  case 288:
+#line 2009 &quot;parser.y&quot;
     {
             yyval.codeb = yyvsp[0].codeb;
         }
     break;
 
-  case 285:
-#line 1978 &quot;parser.y&quot;
+  case 289:
+#line 2014 &quot;parser.y&quot;
     {
             int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
 
@@ -4195,8 +4266,8 @@ yyreduce:
         }
     break;
 
-  case 286:
-#line 2026 &quot;parser.y&quot;
+  case 290:
+#line 2062 &quot;parser.y&quot;
     {
             /* No arguments. */
 
@@ -4204,8 +4275,8 @@ yyreduce:
         }
     break;
 
-  case 287:
-#line 2031 &quot;parser.y&quot;
+  case 291:
+#line 2067 &quot;parser.y&quot;
     {
             /* The single or first argument. */
 
@@ -4214,8 +4285,8 @@ yyreduce:
         }
     break;
 
-  case 288:
-#line 2037 &quot;parser.y&quot;
+  case 292:
+#line 2073 &quot;parser.y&quot;
     {
             /* Check that it wasn't ...(,arg...). */
             if (yyvsp[-2].signature.nrArgs == 0)
@@ -4243,8 +4314,8 @@ yyreduce:
         }
     break;
 
-  case 289:
-#line 2064 &quot;parser.y&quot;
+  case 293:
+#line 2100 &quot;parser.y&quot;
     {
             yyval.memArg.atype = signal_type;
             yyval.memArg.argflags = ARG_IS_CONST;
@@ -4256,8 +4327,8 @@ yyreduce:
         }
     break;
 
-  case 290:
-#line 2073 &quot;parser.y&quot;
+  case 294:
+#line 2109 &quot;parser.y&quot;
     {
             yyval.memArg.atype = slot_type;
             yyval.memArg.argflags = ARG_IS_CONST;
@@ -4269,8 +4340,8 @@ yyreduce:
         }
     break;
 
-  case 291:
-#line 2082 &quot;parser.y&quot;
+  case 295:
+#line 2118 &quot;parser.y&quot;
     {
             yyval.memArg.atype = anyslot_type;
             yyval.memArg.argflags = ARG_IS_CONST;
@@ -4282,8 +4353,8 @@ yyreduce:
         }
     break;
 
-  case 292:
-#line 2091 &quot;parser.y&quot;
+  case 296:
+#line 2127 &quot;parser.y&quot;
     {
             yyval.memArg.atype = rxcon_type;
             yyval.memArg.argflags = 0;
@@ -4297,8 +4368,8 @@ yyreduce:
         }
     break;
 
-  case 293:
-#line 2102 &quot;parser.y&quot;
+  case 297:
+#line 2138 &quot;parser.y&quot;
     {
             yyval.memArg.atype = rxdis_type;
             yyval.memArg.argflags = 0;
@@ -4309,8 +4380,8 @@ yyreduce:
         }
     break;
 
-  case 294:
-#line 2110 &quot;parser.y&quot;
+  case 298:
+#line 2146 &quot;parser.y&quot;
     {
             yyval.memArg.atype = slotcon_type;
             yyval.memArg.argflags = ARG_IS_CONST;
@@ -4328,8 +4399,8 @@ yyreduce:
         }
     break;
 
-  case 295:
-#line 2125 &quot;parser.y&quot;
+  case 299:
+#line 2161 &quot;parser.y&quot;
     {
             yyval.memArg.atype = slotdis_type;
             yyval.memArg.argflags = ARG_IS_CONST;
@@ -4347,8 +4418,8 @@ yyreduce:
         }
     break;
 
-  case 296:
-#line 2140 &quot;parser.y&quot;
+  case 300:
+#line 2176 &quot;parser.y&quot;
     {
             yyval.memArg.atype = qobject_type;
             yyval.memArg.argflags = 0;
@@ -4357,26 +4428,26 @@ yyreduce:
         }
     break;
 
-  case 297:
-#line 2146 &quot;parser.y&quot;
+  case 301:
+#line 2182 &quot;parser.y&quot;
     {
             yyval.memArg = yyvsp[-1].memArg;
             yyval.memArg.defval = yyvsp[0].valp;
         }
     break;
 
-  case 298:
-#line 2152 &quot;parser.y&quot;
+  case 302:
+#line 2188 &quot;parser.y&quot;
     {currentIsStatic = TRUE;}
     break;
 
-  case 303:
-#line 2160 &quot;parser.y&quot;
+  case 307:
+#line 2196 &quot;parser.y&quot;
     {currentOverIsVirt = TRUE;}
     break;
 
-  case 306:
-#line 2164 &quot;parser.y&quot;
+  case 310:
+#line 2200 &quot;parser.y&quot;
     {
             if (notSkipping())
             {
@@ -4410,8 +4481,8 @@ yyreduce:
         }
     break;
 
-  case 307:
-#line 2197 &quot;parser.y&quot;
+  case 311:
+#line 2233 &quot;parser.y&quot;
     {
             yyval.memArg = yyvsp[-2].memArg;
             yyval.memArg.nrderefs += yyvsp[-1].number;
@@ -4420,8 +4491,8 @@ yyreduce:
         }
     break;
 
-  case 308:
-#line 2203 &quot;parser.y&quot;
+  case 312:
+#line 2239 &quot;parser.y&quot;
     {
             yyval.memArg = yyvsp[-2].memArg;
             yyval.memArg.nrderefs += yyvsp[-1].number;
@@ -4430,8 +4501,8 @@ yyreduce:
         }
     break;
 
-  case 309:
-#line 2211 &quot;parser.y&quot;
+  case 313:
+#line 2247 &quot;parser.y&quot;
     {
             yyval.memArg = yyvsp[-2].memArg;
             yyval.memArg.name = yyvsp[-1].text;
@@ -4499,15 +4570,15 @@ yyreduce:
         }
     break;
 
-  case 310:
-#line 2278 &quot;parser.y&quot;
+  case 314:
+#line 2314 &quot;parser.y&quot;
     {
             yyval.number = 0;
         }
     break;
 
-  case 311:
-#line 2281 &quot;parser.y&quot;
+  case 315:
+#line 2317 &quot;parser.y&quot;
     {
             if (currentSpec -&gt; genc)
                 yyerror(&quot;References not allowed in a C module&quot;);
@@ -4516,22 +4587,22 @@ yyreduce:
         }
     break;
 
-  case 312:
-#line 2289 &quot;parser.y&quot;
+  case 316:
+#line 2325 &quot;parser.y&quot;
     {
             yyval.number = 0;
         }
     break;
 
-  case 313:
-#line 2292 &quot;parser.y&quot;
+  case 317:
+#line 2328 &quot;parser.y&quot;
     {
             yyval.number = yyvsp[-1].number + 1;
         }
     break;
 
-  case 314:
-#line 2297 &quot;parser.y&quot;
+  case 318:
+#line 2333 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4545,8 +4616,8 @@ yyreduce:
         }
     break;
 
-  case 315:
-#line 2308 &quot;parser.y&quot;
+  case 319:
+#line 2344 &quot;parser.y&quot;
     {
             templateDef *td;
 
@@ -4563,8 +4634,8 @@ yyreduce:
         }
     break;
 
-  case 316:
-#line 2322 &quot;parser.y&quot;
+  case 320:
+#line 2358 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4584,8 +4655,8 @@ yyreduce:
         }
     break;
 
-  case 317:
-#line 2339 &quot;parser.y&quot;
+  case 321:
+#line 2375 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4595,8 +4666,8 @@ yyreduce:
         }
     break;
 
-  case 318:
-#line 2346 &quot;parser.y&quot;
+  case 322:
+#line 2382 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4606,8 +4677,8 @@ yyreduce:
         }
     break;
 
-  case 319:
-#line 2353 &quot;parser.y&quot;
+  case 323:
+#line 2389 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4617,8 +4688,8 @@ yyreduce:
         }
     break;
 
-  case 320:
-#line 2360 &quot;parser.y&quot;
+  case 324:
+#line 2396 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4628,8 +4699,8 @@ yyreduce:
         }
     break;
 
-  case 321:
-#line 2367 &quot;parser.y&quot;
+  case 325:
+#line 2403 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4639,8 +4710,8 @@ yyreduce:
         }
     break;
 
-  case 322:
-#line 2374 &quot;parser.y&quot;
+  case 326:
+#line 2410 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4650,8 +4721,8 @@ yyreduce:
         }
     break;
 
-  case 323:
-#line 2381 &quot;parser.y&quot;
+  case 327:
+#line 2417 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4661,8 +4732,8 @@ yyreduce:
         }
     break;
 
-  case 324:
-#line 2388 &quot;parser.y&quot;
+  case 328:
+#line 2424 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4672,8 +4743,8 @@ yyreduce:
         }
     break;
 
-  case 325:
-#line 2395 &quot;parser.y&quot;
+  case 329:
+#line 2431 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4683,8 +4754,8 @@ yyreduce:
         }
     break;
 
-  case 326:
-#line 2402 &quot;parser.y&quot;
+  case 330:
+#line 2438 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4694,8 +4765,8 @@ yyreduce:
         }
     break;
 
-  case 327:
-#line 2409 &quot;parser.y&quot;
+  case 331:
+#line 2445 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4705,8 +4776,8 @@ yyreduce:
         }
     break;
 
-  case 328:
-#line 2416 &quot;parser.y&quot;
+  case 332:
+#line 2452 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4716,8 +4787,8 @@ yyreduce:
         }
     break;
 
-  case 329:
-#line 2423 &quot;parser.y&quot;
+  case 333:
+#line 2459 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4727,8 +4798,8 @@ yyreduce:
         }
     break;
 
-  case 330:
-#line 2430 &quot;parser.y&quot;
+  case 334:
+#line 2466 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4738,8 +4809,8 @@ yyreduce:
         }
     break;
 
-  case 331:
-#line 2437 &quot;parser.y&quot;
+  case 335:
+#line 2473 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4749,8 +4820,8 @@ yyreduce:
         }
     break;
 
-  case 332:
-#line 2444 &quot;parser.y&quot;
+  case 336:
+#line 2480 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4760,8 +4831,8 @@ yyreduce:
         }
     break;
 
-  case 333:
-#line 2451 &quot;parser.y&quot;
+  case 337:
+#line 2487 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4771,8 +4842,8 @@ yyreduce:
         }
     break;
 
-  case 334:
-#line 2458 &quot;parser.y&quot;
+  case 338:
+#line 2494 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4782,8 +4853,8 @@ yyreduce:
         }
     break;
 
-  case 335:
-#line 2465 &quot;parser.y&quot;
+  case 339:
+#line 2501 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4793,8 +4864,8 @@ yyreduce:
         }
     break;
 
-  case 336:
-#line 2472 &quot;parser.y&quot;
+  case 340:
+#line 2508 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4804,8 +4875,8 @@ yyreduce:
         }
     break;
 
-  case 337:
-#line 2479 &quot;parser.y&quot;
+  case 341:
+#line 2515 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4815,8 +4886,8 @@ yyreduce:
         }
     break;
 
-  case 338:
-#line 2486 &quot;parser.y&quot;
+  case 342:
+#line 2522 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4826,8 +4897,8 @@ yyreduce:
         }
     break;
 
-  case 339:
-#line 2493 &quot;parser.y&quot;
+  case 343:
+#line 2529 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4837,8 +4908,8 @@ yyreduce:
         }
     break;
 
-  case 340:
-#line 2500 &quot;parser.y&quot;
+  case 344:
+#line 2536 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4848,8 +4919,8 @@ yyreduce:
         }
     break;
 
-  case 341:
-#line 2507 &quot;parser.y&quot;
+  case 345:
+#line 2543 &quot;parser.y&quot;
     {
             yyval.memArg.nrderefs = 0;
             yyval.memArg.argflags = 0;
@@ -4859,8 +4930,8 @@ yyreduce:
         }
     break;
 
-  case 342:
-#line 2516 &quot;parser.y&quot;
+  case 346:
+#line 2552 &quot;parser.y&quot;
     {
             /* The single or first type. */
 
@@ -4869,8 +4940,8 @@ yyreduce:
         }
     break;
 
-  case 343:
-#line 2522 &quot;parser.y&quot;
+  case 347:
+#line 2558 &quot;parser.y&quot;
     {
             /* Check there is nothing after an ellipsis. */
             if (yyvsp[-2].signature.args[yyvsp[-2].signature.nrArgs - 1].atype == ellipsis_type)
@@ -4887,15 +4958,15 @@ yyreduce:
         }
     break;
 
-  case 344:
-#line 2538 &quot;parser.y&quot;
+  case 348:
+#line 2574 &quot;parser.y&quot;
     {
             yyval.throwlist = NULL;
         }
     break;
 
-  case 345:
-#line 2541 &quot;parser.y&quot;
+  case 349:
+#line 2577 &quot;parser.y&quot;
     {
             if (currentSpec-&gt;genc)
                 yyerror(&quot;Exceptions not allowed in a C module&quot;);
@@ -4904,8 +4975,8 @@ yyreduce:
         }
     break;
 
-  case 346:
-#line 2549 &quot;parser.y&quot;
+  case 350:
+#line 2585 &quot;parser.y&quot;
     {
             /* Empty list so use a blank. */
 
@@ -4914,8 +4985,8 @@ yyreduce:
         }
     break;
 
-  case 347:
-#line 2555 &quot;parser.y&quot;
+  case 351:
+#line 2591 &quot;parser.y&quot;
     {
             /* The only or first exception. */
 
@@ -4925,8 +4996,8 @@ yyreduce:
         }
     break;
 
-  case 348:
-#line 2562 &quot;parser.y&quot;
+  case 352:
+#line 2598 &quot;parser.y&quot;
     {
             /* Check that it wasn't ...(,arg...). */
 
@@ -4947,7 +5018,7 @@ yyreduce:
     }
 
 /* Line 1010 of yacc.c.  */
-#line 4951 &quot;parser.c&quot;
+#line 5022 &quot;parser.c&quot;
 *
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -5172,7 +5243,7 @@ yyreturn:
 }
 
 
-#line 2578 &quot;parser.y&quot;
+#line 2614 &quot;parser.y&quot;
 
 
 
@@ -6310,6 +6381,8 @@ static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod,
     cd-&gt;convtocode = templateCode(pt, used, cd-&gt;convtocode, type_names, type_values);
     cd-&gt;travcode = templateCode(pt, used, cd-&gt;travcode, type_names, type_values);
     cd-&gt;clearcode = templateCode(pt, used, cd-&gt;clearcode, type_names, type_values);
+    cd-&gt;getbufcode = templateCode(pt, used, cd-&gt;getbufcode, type_names, type_values);
+    cd-&gt;releasebufcode = templateCode(pt, used, cd-&gt;releasebufcode, type_names, type_values);
     cd-&gt;readbufcode = templateCode(pt, used, cd-&gt;readbufcode, type_names, type_values);
     cd-&gt;writebufcode = templateCode(pt, used, cd-&gt;writebufcode, type_names, type_values);
     cd-&gt;segcountcode = templateCode(pt, used, cd-&gt;segcountcode, type_names, type_values);</diff>
      <filename>sipgen/parser.c</filename>
    </modified>
    <modified>
      <diff>@@ -54,85 +54,87 @@
      TK_VIRTUALCATCHERCODE = 280,
      TK_TRAVERSECODE = 281,
      TK_CLEARCODE = 282,
-     TK_READBUFFERCODE = 283,
-     TK_WRITEBUFFERCODE = 284,
-     TK_SEGCOUNTCODE = 285,
-     TK_CHARBUFFERCODE = 286,
-     TK_PICKLECODE = 287,
-     TK_METHODCODE = 288,
-     TK_FROMTYPE = 289,
-     TK_TOTYPE = 290,
-     TK_TOSUBCLASS = 291,
-     TK_INCLUDE = 292,
-     TK_OPTINCLUDE = 293,
-     TK_IMPORT = 294,
-     TK_EXPHEADERCODE = 295,
-     TK_MODHEADERCODE = 296,
-     TK_TYPEHEADERCODE = 297,
-     TK_MODULE = 298,
-     TK_CMODULE = 299,
-     TK_CONSMODULE = 300,
-     TK_COMPOMODULE = 301,
-     TK_CLASS = 302,
-     TK_STRUCT = 303,
-     TK_PUBLIC = 304,
-     TK_PROTECTED = 305,
-     TK_PRIVATE = 306,
-     TK_SIGNALS = 307,
-     TK_SLOTS = 308,
-     TK_BOOL = 309,
-     TK_SHORT = 310,
-     TK_INT = 311,
-     TK_LONG = 312,
-     TK_FLOAT = 313,
-     TK_DOUBLE = 314,
-     TK_CHAR = 315,
-     TK_WCHAR_T = 316,
-     TK_VOID = 317,
-     TK_PYOBJECT = 318,
-     TK_PYTUPLE = 319,
-     TK_PYLIST = 320,
-     TK_PYDICT = 321,
-     TK_PYCALLABLE = 322,
-     TK_PYSLICE = 323,
-     TK_PYTYPE = 324,
-     TK_VIRTUAL = 325,
-     TK_ENUM = 326,
-     TK_SIGNED = 327,
-     TK_UNSIGNED = 328,
-     TK_SCOPE = 329,
-     TK_LOGICAL_OR = 330,
-     TK_CONST = 331,
-     TK_STATIC = 332,
-     TK_SIPSIGNAL = 333,
-     TK_SIPSLOT = 334,
-     TK_SIPANYSLOT = 335,
-     TK_SIPRXCON = 336,
-     TK_SIPRXDIS = 337,
-     TK_SIPSLOTCON = 338,
-     TK_SIPSLOTDIS = 339,
-     TK_NUMBER = 340,
-     TK_REAL = 341,
-     TK_TYPEDEF = 342,
-     TK_NAMESPACE = 343,
-     TK_TIMELINE = 344,
-     TK_PLATFORMS = 345,
-     TK_FEATURE = 346,
-     TK_LICENSE = 347,
-     TK_QCHAR = 348,
-     TK_TRUE = 349,
-     TK_FALSE = 350,
-     TK_NULL = 351,
-     TK_OPERATOR = 352,
-     TK_THROW = 353,
-     TK_QOBJECT = 354,
-     TK_EXCEPTION = 355,
-     TK_RAISECODE = 356,
-     TK_EXPLICIT = 357,
-     TK_TEMPLATE = 358,
-     TK_ELLIPSIS = 359,
-     TK_DEFMETATYPE = 360,
-     TK_DEFSUPERTYPE = 361
+     TK_GETBUFFERCODE = 283,
+     TK_RELEASEBUFFERCODE = 284,
+     TK_READBUFFERCODE = 285,
+     TK_WRITEBUFFERCODE = 286,
+     TK_SEGCOUNTCODE = 287,
+     TK_CHARBUFFERCODE = 288,
+     TK_PICKLECODE = 289,
+     TK_METHODCODE = 290,
+     TK_FROMTYPE = 291,
+     TK_TOTYPE = 292,
+     TK_TOSUBCLASS = 293,
+     TK_INCLUDE = 294,
+     TK_OPTINCLUDE = 295,
+     TK_IMPORT = 296,
+     TK_EXPHEADERCODE = 297,
+     TK_MODHEADERCODE = 298,
+     TK_TYPEHEADERCODE = 299,
+     TK_MODULE = 300,
+     TK_CMODULE = 301,
+     TK_CONSMODULE = 302,
+     TK_COMPOMODULE = 303,
+     TK_CLASS = 304,
+     TK_STRUCT = 305,
+     TK_PUBLIC = 306,
+     TK_PROTECTED = 307,
+     TK_PRIVATE = 308,
+     TK_SIGNALS = 309,
+     TK_SLOTS = 310,
+     TK_BOOL = 311,
+     TK_SHORT = 312,
+     TK_INT = 313,
+     TK_LONG = 314,
+     TK_FLOAT = 315,
+     TK_DOUBLE = 316,
+     TK_CHAR = 317,
+     TK_WCHAR_T = 318,
+     TK_VOID = 319,
+     TK_PYOBJECT = 320,
+     TK_PYTUPLE = 321,
+     TK_PYLIST = 322,
+     TK_PYDICT = 323,
+     TK_PYCALLABLE = 324,
+     TK_PYSLICE = 325,
+     TK_PYTYPE = 326,
+     TK_VIRTUAL = 327,
+     TK_ENUM = 328,
+     TK_SIGNED = 329,
+     TK_UNSIGNED = 330,
+     TK_SCOPE = 331,
+     TK_LOGICAL_OR = 332,
+     TK_CONST = 333,
+     TK_STATIC = 334,
+     TK_SIPSIGNAL = 335,
+     TK_SIPSLOT = 336,
+     TK_SIPANYSLOT = 337,
+     TK_SIPRXCON = 338,
+     TK_SIPRXDIS = 339,
+     TK_SIPSLOTCON = 340,
+     TK_SIPSLOTDIS = 341,
+     TK_NUMBER = 342,
+     TK_REAL = 343,
+     TK_TYPEDEF = 344,
+     TK_NAMESPACE = 345,
+     TK_TIMELINE = 346,
+     TK_PLATFORMS = 347,
+     TK_FEATURE = 348,
+     TK_LICENSE = 349,
+     TK_QCHAR = 350,
+     TK_TRUE = 351,
+     TK_FALSE = 352,
+     TK_NULL = 353,
+     TK_OPERATOR = 354,
+     TK_THROW = 355,
+     TK_QOBJECT = 356,
+     TK_EXCEPTION = 357,
+     TK_RAISECODE = 358,
+     TK_EXPLICIT = 359,
+     TK_TEMPLATE = 360,
+     TK_ELLIPSIS = 361,
+     TK_DEFMETATYPE = 362,
+     TK_DEFSUPERTYPE = 363
    };
 #endif
 #define TK_PLUGIN 258
@@ -160,85 +162,87 @@
 #define TK_VIRTUALCATCHERCODE 280
 #define TK_TRAVERSECODE 281
 #define TK_CLEARCODE 282
-#define TK_READBUFFERCODE 283
-#define TK_WRITEBUFFERCODE 284
-#define TK_SEGCOUNTCODE 285
-#define TK_CHARBUFFERCODE 286
-#define TK_PICKLECODE 287
-#define TK_METHODCODE 288
-#define TK_FROMTYPE 289
-#define TK_TOTYPE 290
-#define TK_TOSUBCLASS 291
-#define TK_INCLUDE 292
-#define TK_OPTINCLUDE 293
-#define TK_IMPORT 294
-#define TK_EXPHEADERCODE 295
-#define TK_MODHEADERCODE 296
-#define TK_TYPEHEADERCODE 297
-#define TK_MODULE 298
-#define TK_CMODULE 299
-#define TK_CONSMODULE 300
-#define TK_COMPOMODULE 301
-#define TK_CLASS 302
-#define TK_STRUCT 303
-#define TK_PUBLIC 304
-#define TK_PROTECTED 305
-#define TK_PRIVATE 306
-#define TK_SIGNALS 307
-#define TK_SLOTS 308
-#define TK_BOOL 309
-#define TK_SHORT 310
-#define TK_INT 311
-#define TK_LONG 312
-#define TK_FLOAT 313
-#define TK_DOUBLE 314
-#define TK_CHAR 315
-#define TK_WCHAR_T 316
-#define TK_VOID 317
-#define TK_PYOBJECT 318
-#define TK_PYTUPLE 319
-#define TK_PYLIST 320
-#define TK_PYDICT 321
-#define TK_PYCALLABLE 322
-#define TK_PYSLICE 323
-#define TK_PYTYPE 324
-#define TK_VIRTUAL 325
-#define TK_ENUM 326
-#define TK_SIGNED 327
-#define TK_UNSIGNED 328
-#define TK_SCOPE 329
-#define TK_LOGICAL_OR 330
-#define TK_CONST 331
-#define TK_STATIC 332
-#define TK_SIPSIGNAL 333
-#define TK_SIPSLOT 334
-#define TK_SIPANYSLOT 335
-#define TK_SIPRXCON 336
-#define TK_SIPRXDIS 337
-#define TK_SIPSLOTCON 338
-#define TK_SIPSLOTDIS 339
-#define TK_NUMBER 340
-#define TK_REAL 341
-#define TK_TYPEDEF 342
-#define TK_NAMESPACE 343
-#define TK_TIMELINE 344
-#define TK_PLATFORMS 345
-#define TK_FEATURE 346
-#define TK_LICENSE 347
-#define TK_QCHAR 348
-#define TK_TRUE 349
-#define TK_FALSE 350
-#define TK_NULL 351
-#define TK_OPERATOR 352
-#define TK_THROW 353
-#define TK_QOBJECT 354
-#define TK_EXCEPTION 355
-#define TK_RAISECODE 356
-#define TK_EXPLICIT 357
-#define TK_TEMPLATE 358
-#define TK_ELLIPSIS 359
-#define TK_DEFMETATYPE 360
-#define TK_DEFSUPERTYPE 361
+#define TK_GETBUFFERCODE 283
+#define TK_RELEASEBUFFERCODE 284
+#define TK_READBUFFERCODE 285
+#define TK_WRITEBUFFERCODE 286
+#define TK_SEGCOUNTCODE 287
+#define TK_CHARBUFFERCODE 288
+#define TK_PICKLECODE 289
+#define TK_METHODCODE 290
+#define TK_FROMTYPE 291
+#define TK_TOTYPE 292
+#define TK_TOSUBCLASS 293
+#define TK_INCLUDE 294
+#define TK_OPTINCLUDE 295
+#define TK_IMPORT 296
+#define TK_EXPHEADERCODE 297
+#define TK_MODHEADERCODE 298
+#define TK_TYPEHEADERCODE 299
+#define TK_MODULE 300
+#define TK_CMODULE 301
+#define TK_CONSMODULE 302
+#define TK_COMPOMODULE 303
+#define TK_CLASS 304
+#define TK_STRUCT 305
+#define TK_PUBLIC 306
+#define TK_PROTECTED 307
+#define TK_PRIVATE 308
+#define TK_SIGNALS 309
+#define TK_SLOTS 310
+#define TK_BOOL 311
+#define TK_SHORT 312
+#define TK_INT 313
+#define TK_LONG 314
+#define TK_FLOAT 315
+#define TK_DOUBLE 316
+#define TK_CHAR 317
+#define TK_WCHAR_T 318
+#define TK_VOID 319
+#define TK_PYOBJECT 320
+#define TK_PYTUPLE 321
+#define TK_PYLIST 322
+#define TK_PYDICT 323
+#define TK_PYCALLABLE 324
+#define TK_PYSLICE 325
+#define TK_PYTYPE 326
+#define TK_VIRTUAL 327
+#define TK_ENUM 328
+#define TK_SIGNED 329
+#define TK_UNSIGNED 330
+#define TK_SCOPE 331
+#define TK_LOGICAL_OR 332
+#define TK_CONST 333
+#define TK_STATIC 334
+#define TK_SIPSIGNAL 335
+#define TK_SIPSLOT 336
+#define TK_SIPANYSLOT 337
+#define TK_SIPRXCON 338
+#define TK_SIPRXDIS 339
+#define TK_SIPSLOTCON 340
+#define TK_SIPSLOTDIS 341
+#define TK_NUMBER 342
+#define TK_REAL 343
+#define TK_TYPEDEF 344
+#define TK_NAMESPACE 345
+#define TK_TIMELINE 346
+#define TK_PLATFORMS 347
+#define TK_FEATURE 348
+#define TK_LICENSE 349
+#define TK_QCHAR 350
+#define TK_TRUE 351
+#define TK_FALSE 352
+#define TK_NULL 353
+#define TK_OPERATOR 354
+#define TK_THROW 355
+#define TK_QOBJECT 356
+#define TK_EXCEPTION 357
+#define TK_RAISECODE 358
+#define TK_EXPLICIT 359
+#define TK_TEMPLATE 360
+#define TK_ELLIPSIS 361
+#define TK_DEFMETATYPE 362
+#define TK_DEFSUPERTYPE 363
 
 
 
@@ -266,7 +270,7 @@ typedef union YYSTYPE {
     classDef        *klass;
 } YYSTYPE;
 /* Line 1241 of yacc.c.  */
-#line 270 &quot;parser.h&quot;
+#line 274 &quot;parser.h&quot;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1</diff>
      <filename>sipgen/parser.h</filename>
    </modified>
    <modified>
      <diff>@@ -164,6 +164,8 @@ static void addVariable(sipSpec *pt, varDef *vd);
 %token          TK_VIRTUALCATCHERCODE
 %token          TK_TRAVERSECODE
 %token          TK_CLEARCODE
+%token          TK_GETBUFFERCODE
+%token          TK_RELEASEBUFFERCODE
 %token          TK_READBUFFERCODE
 %token          TK_WRITEBUFFERCODE
 %token          TK_SEGCOUNTCODE
@@ -276,6 +278,8 @@ static void addVariable(sipSpec *pt, varDef *vd);
 %type &lt;codeb&gt;           opttypehdrcode
 %type &lt;codeb&gt;           travcode
 %type &lt;codeb&gt;           clearcode
+%type &lt;codeb&gt;           getbufcode
+%type &lt;codeb&gt;           releasebufcode
 %type &lt;codeb&gt;           readbufcode
 %type &lt;codeb&gt;           writebufcode
 %type &lt;codeb&gt;           segcountcode
@@ -979,6 +983,16 @@ clearcode:  TK_CLEARCODE codeblock {
         }
     ;
 
+getbufcode: TK_GETBUFFERCODE codeblock {
+            $$ = $2;
+        }
+    ;
+
+releasebufcode: TK_RELEASEBUFFERCODE codeblock {
+            $$ = $2;
+        }
+    ;
+
 readbufcode:    TK_READBUFFERCODE codeblock {
             $$ = $2;
         }
@@ -1516,6 +1530,28 @@ classline:  ifstart
                 scope-&gt;clearcode = $1;
             }
         }
+    |   getbufcode {
+            if (notSkipping())
+            {
+                classDef *scope = currentScope();
+
+                if (scope-&gt;getbufcode != NULL)
+                    yyerror(&quot;%BIGetBufferCode already given for class&quot;);
+
+                scope-&gt;getbufcode = $1;
+            }
+        }
+    |   releasebufcode {
+            if (notSkipping())
+            {
+                classDef *scope = currentScope();
+
+                if (scope-&gt;releasebufcode != NULL)
+                    yyerror(&quot;%BIReleaseBufferCode already given for class&quot;);
+
+                scope-&gt;releasebufcode = $1;
+            }
+        }
     |   readbufcode {
             if (notSkipping())
             {
@@ -3712,6 +3748,8 @@ static void instantiateClassTemplate(sipSpec *pt, moduleDef *mod,
     cd-&gt;convtocode = templateCode(pt, used, cd-&gt;convtocode, type_names, type_values);
     cd-&gt;travcode = templateCode(pt, used, cd-&gt;travcode, type_names, type_values);
     cd-&gt;clearcode = templateCode(pt, used, cd-&gt;clearcode, type_names, type_values);
+    cd-&gt;getbufcode = templateCode(pt, used, cd-&gt;getbufcode, type_names, type_values);
+    cd-&gt;releasebufcode = templateCode(pt, used, cd-&gt;releasebufcode, type_names, type_values);
     cd-&gt;readbufcode = templateCode(pt, used, cd-&gt;readbufcode, type_names, type_values);
     cd-&gt;writebufcode = templateCode(pt, used, cd-&gt;writebufcode, type_names, type_values);
     cd-&gt;segcountcode = templateCode(pt, used, cd-&gt;segcountcode, type_names, type_values);</diff>
      <filename>sipgen/parser.y</filename>
    </modified>
    <modified>
      <diff>@@ -932,10 +932,12 @@ typedef struct _classDef {
     codeBlock *convtocode;              /* Convert to C++ code. */
     codeBlock *travcode;                /* Traverse code. */
     codeBlock *clearcode;               /* Clear code. */
-    codeBlock *readbufcode;             /* Read buffer code. */
-    codeBlock *writebufcode;            /* Write buffer code. */
-    codeBlock *segcountcode;            /* Segment count code. */
-    codeBlock *charbufcode;             /* Character buffer code. */
+    codeBlock *getbufcode;              /* Get buffer code (Python v3). */
+    codeBlock *releasebufcode;          /* Release buffer code (Python v3). */
+    codeBlock *readbufcode;             /* Read buffer code (Python v2). */
+    codeBlock *writebufcode;            /* Write buffer code (Python v2). */
+    codeBlock *segcountcode;            /* Segment count code (Python v2). */
+    codeBlock *charbufcode;             /* Character buffer code (Python v2). */
     codeBlock *picklecode;              /* Pickle code. */
     struct _classDef *next;             /* Next in the list. */
 } classDef;</diff>
      <filename>sipgen/sip.h</filename>
    </modified>
    <modified>
      <diff>@@ -96,9 +96,8 @@ void transform(sipSpec *pt)
     /*
      * The class list has the main module's classes at the front and the ones
      * from the module at the most nested %Import at the end.  This affects
-     * some of the following algorithms, eg. when assigning class numbers.  We
-     * have to have consistency whenever a module is used.  To achieve this we
-     * reverse the order of the classes.
+     * some of the following algorithms.  We have to have consistency whenever
+     * a module is used.  To achieve this we reverse the order of the classes.
      */
     rev = NULL;
     cd = pt -&gt; classes;
@@ -215,7 +214,16 @@ void transform(sipSpec *pt)
     *tail = NULL;
 
     /* Transform the various types in the modules. */
-    transformModules(pt, pt-&gt;modules);
+    if (isConsolidated(pt-&gt;module))
+    {
+        /* Transform the modules included by the consolidated module. */
+        for (mod = pt-&gt;modules-&gt;next; mod != NULL; mod = mod-&gt;next)
+            transformModules(pt, mod);
+    }
+    else
+    {
+        transformModules(pt, pt-&gt;modules);
+    }
 
     /* Handle default ctors now that the argument types are resolved. */ 
     if (!pt -&gt; genc)</diff>
      <filename>sipgen/transform.c</filename>
    </modified>
    <modified>
      <diff>@@ -45,8 +45,7 @@ typedef struct _sipMethodDescr {
  * The type data structure.
  */
 PyTypeObject sipMethodDescr_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                      /* ob_size */
+    PyVarObject_HEAD_INIT(NULL, 0)
     &quot;sip.methoddescriptor&quot;, /* tp_name */
     sizeof (sipMethodDescr),    /* tp_basicsize */
     0,                      /* tp_itemsize */
@@ -142,8 +141,7 @@ typedef struct _sipVariableDescr {
  * The type data structure.
  */
 PyTypeObject sipVariableDescr_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                      /* ob_size */
+    PyVarObject_HEAD_INIT(NULL, 0)
     &quot;sip.variabledescriptor&quot;,   /* tp_name */
     sizeof (sipVariableDescr),  /* tp_basicsize */
     0,                      /* tp_itemsize */</diff>
      <filename>siplib/descriptors.c</filename>
    </modified>
    <modified>
      <diff>@@ -117,7 +117,7 @@ sipSimpleWrapper *sipOMFindObject(sipObjectMap *om, void *key,
          * code is being re-entered (and there are guards in place to prevent
          * this).
          */
-        if (sw-&gt;ob_refcnt == 0)
+        if (Py_REFCNT(sw) == 0)
             continue;
 
         /*</diff>
      <filename>siplib/objmap.c</filename>
    </modified>
    <modified>
      <diff>@@ -134,7 +134,13 @@ PyObject *sip_api_invoke_slot(const sipSlot *slot, PyObject *sigargs)
     {
         PyObject *self = (sref != NULL ? sref : slot-&gt;meth.mself);
 
-        if ((sfunc = PyMethod_New(slot-&gt;meth.mfunc, self, slot-&gt;meth.mclass)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        sfunc = PyMethod_New(slot-&gt;meth.mfunc, self);
+#else
+        sfunc = PyMethod_New(slot-&gt;meth.mfunc, self, slot-&gt;meth.mclass);
+#endif
+
+        if (sfunc == NULL)
         {
             Py_XDECREF(sref);
             return NULL;
@@ -304,9 +310,12 @@ int sip_api_same_slot(const sipSlot *sp, PyObject *rxObj, const char *slot)
         if (sp-&gt;pyobj != NULL)
             return 0;
 
-        return (sp-&gt;meth.mfunc == PyMethod_GET_FUNCTION(rxObj) &amp;&amp;
-                sp-&gt;meth.mself == PyMethod_GET_SELF(rxObj) &amp;&amp;
-                sp-&gt;meth.mclass == PyMethod_GET_CLASS(rxObj));
+        return (sp-&gt;meth.mfunc == PyMethod_GET_FUNCTION(rxObj)
+                &amp;&amp; sp-&gt;meth.mself == PyMethod_GET_SELF(rxObj)
+#if PY_MAJOR_VERSION &lt; 3
+                &amp;&amp; sp-&gt;meth.mclass == PyMethod_GET_CLASS(rxObj)
+#endif
+                );
     }
 
     /* See if they are wrapped C++ methods. */</diff>
      <filename>siplib/qtlib.c</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,7 @@ extern &quot;C&quot; {
  * Define the SIP version number.
  */
 #define SIP_VERSION         0x040800
-#define SIP_VERSION_STR     &quot;4.8-snapshot-20090311&quot;
+#define SIP_VERSION_STR     &quot;4.8-snapshot-20090317&quot;
 
 
 /*
@@ -155,6 +155,44 @@ extern &quot;C&quot; {
 #define SIP_PYMETHODDEF_CAST(s) ((char *)(s))
 #endif
 
+#if PY_MAJOR_VERSION &gt;= 3
+
+#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_AS_STRING  PyBytes_AS_STRING
+#define SIPBytes_GET_SIZE   PyBytes_GET_SIZE
+
+#else
+
+#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_AS_STRING  PyString_AS_STRING
+#define SIPBytes_GET_SIZE   PyString_GET_SIZE
+
+#endif
+
+#if !defined(Py_REFCNT)
+#define Py_REFCNT(ob)       (((PyObject*)(ob))-&gt;ob_refcnt)
+#endif
+
+#if !defined(Py_TYPE)
+#define Py_TYPE(ob)         (((PyObject*)(ob))-&gt;ob_type)
+#endif
+
+#if !defined(PyVarObject_HEAD_INIT)
+#define PyVarObject_HEAD_INIT(type, size)   PyObject_HEAD_INIT(type) size,
+#endif
+
 
 /*
  * The mask that can be passed to sipTrace().
@@ -279,8 +317,13 @@ typedef void *(*sipInitFunc)(sipSimpleWrapper *, PyObject *, PyObject **,
         int *);
 typedef int (*sipTraverseFunc)(void *, visitproc, void *);
 typedef int (*sipClearFunc)(void *);
+#if PY_MAJOR_VERSION &gt;= 3
+typedef int (*sipGetBufferFunc)(PyObject *, void *, Py_buffer *, int);
+typedef void (*sipReleaseBufferFunc)(PyObject *, void *, Py_buffer *);
+#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 struct _sipTypeDef *);
 typedef const struct _sipTypeDef *(*sipSubClassConvertFunc)(void **);
@@ -396,7 +439,9 @@ typedef struct _sipSubClassConvertorDef {
 typedef enum {
     str_slot,           /* __str__ */
     int_slot,           /* __int__ */
+#if PY_MAJOR_VERSION &lt; 3
     long_slot,          /* __long__ */
+#endif
     float_slot,         /* __float__ */
     len_slot,           /* __len__ */
     contains_slot,      /* __contains__ */
@@ -435,7 +480,9 @@ typedef enum {
     ne_slot,            /* __ne__ */
     gt_slot,            /* __gt__ */
     ge_slot,            /* __ge__ */
+#if PY_MAJOR_VERSION &lt; 3
     cmp_slot,           /* __cmp__ */
+#endif
     nonzero_slot,       /* __nonzero__ */
     neg_slot,           /* __neg__ */
     repr_slot,          /* __repr__ */
@@ -591,6 +638,13 @@ typedef struct _sipClassTypeDef {
     /* The clear function. */
     sipClearFunc ctd_clear;
 
+#if PY_MAJOR_VERSION &gt;= 3
+    /* The get buffer function. */
+    sipGetBufferFunc ctd_getbuffer;
+
+    /* The release buffer function. */
+    sipReleaseBufferFunc ctd_releasebuffer;
+#else
     /* The read buffer function. */
     sipBufferFunc ctd_readbuffer;
 
@@ -602,6 +656,7 @@ typedef struct _sipClassTypeDef {
 
     /* The char buffer function. */
     sipBufferFunc ctd_charbuffer;
+#endif
 
     /* The deallocation function. */
     sipDeallocFunc ctd_dealloc;
@@ -985,8 +1040,10 @@ typedef struct _sipPyMethod {
     /* Self if it is a bound method. */
     PyObject *mself;
 
+#if PY_MAJOR_VERSION &lt; 3
     /* The class. */
     PyObject *mclass;
+#endif
 } sipPyMethod;
 
 
@@ -1251,7 +1308,7 @@ typedef struct _sipQtAPI {
 /*
  * The following are deprecated parts of the public API.
  */
-#define sipClassName(w)     PyString_FromString((w)-&gt;ob_type-&gt;tp_name)
+#define sipClassName(w)     PyString_FromString(Py_TYPE(w)-&gt;tp_name)
 
 
 /*</diff>
      <filename>siplib/sip.h</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,7 @@
 
 
 #include &lt;Python.h&gt;
+
 #include &lt;assert.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;stdarg.h&gt;
@@ -293,8 +294,7 @@ typedef struct _sipAttrGetter {
  * the extra information we associate with a named enum type.
  */
 static PyTypeObject sipEnumType_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                      /* ob_size */
+    PyVarObject_HEAD_INIT(NULL, 0)
     &quot;sip.enumtype&quot;,         /* tp_name */
     sizeof (sipEnumTypeObject), /* tp_basicsize */
     0,                      /* tp_itemsize */
@@ -302,7 +302,7 @@ static PyTypeObject sipEnumType_Type = {
     0,                      /* tp_print */
     0,                      /* tp_getattr */
     0,                      /* tp_setattr */
-    0,                      /* tp_compare */
+    0,                      /* tp_reserved (Python v3), tp_compare (Python v2) */
     0,                      /* tp_repr */
     0,                      /* tp_as_number */
     0,                      /* tp_as_sequence */
@@ -435,15 +435,24 @@ static PyObject *getDictFromObject(PyObject *obj);
 static void forgetObject(sipSimpleWrapper *sw);
 static int add_lazy_attrs(sipClassTypeDef *ctd);
 static int add_all_lazy_attrs(sipClassTypeDef *ctd);
+static int objectify(const char *s, PyObject **objp);
 
 
 /*
  * The Python module initialisation function.
  */
+#if PY_MAJOR_VERSION &gt;= 3
+#define SIP_MODULE_ENTRY    PyInit_sip
+#define SIP_FATAL(s)        return NULL
+#else
+#define SIP_MODULE_ENTRY    initsip
+#define SIP_FATAL(s)        Py_FatalError(s)
+#endif
+
 #if defined(SIP_STATIC_MODULE)
-void initsip(void)
+void SIP_MODULE_ENTRY(void)
 #else
-PyMODINIT_FUNC initsip(void)
+PyMODINIT_FUNC SIP_MODULE_ENTRY(void)
 #endif
 {
     static PyMethodDef methods[] = {
@@ -462,6 +471,20 @@ PyMODINIT_FUNC initsip(void)
         {NULL, NULL, 0, NULL}
     };
 
+#if PY_MAJOR_VERSION &gt;= 3
+    static PyModuleDef module_def = {
+        PyModuleDef_HEAD_INIT,
+        &quot;sip&quot;,                  /* m_name */
+        NULL,                   /* m_doc */
+        -1,                     /* m_size */
+        methods,                /* m_methods */
+        NULL,                   /* m_reload */
+        NULL,                   /* m_traverse */
+        NULL,                   /* m_clear */
+        NULL,                   /* m_free */
+    };
+#endif
+
     int rc;
     PyObject *mod, *mod_dict, *obj;
 
@@ -473,13 +496,13 @@ PyMODINIT_FUNC initsip(void)
     sipWrapperType_Type.tp_base = &amp;PyType_Type;
 
     if (PyType_Ready(&amp;sipWrapperType_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.wrappertype type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.wrappertype type&quot;);
 
     if (PyType_Ready((PyTypeObject *)&amp;sipSimpleWrapper_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.simplewrapper type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.simplewrapper type&quot;);
 
     if (sip_api_register_py_type((PyTypeObject *)&amp;sipSimpleWrapper_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to register sip.simplewrapper type&quot;);
+        SIP_FATAL(&quot;sip: Failed to register sip.simplewrapper type&quot;);
 
 #if PY_VERSION_HEX &gt;= 0x02050000
     sipWrapper_Type.super.ht_type.tp_base = (PyTypeObject *)&amp;sipSimpleWrapper_Type;
@@ -488,20 +511,28 @@ PyMODINIT_FUNC initsip(void)
 #endif
 
     if (PyType_Ready((PyTypeObject *)&amp;sipWrapper_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.wrapper type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.wrapper type&quot;);
 
     if (PyType_Ready(&amp;sipMethodDescr_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.methoddescriptor type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.methoddescriptor type&quot;);
 
     sipEnumType_Type.tp_base = &amp;PyType_Type;
 
     if (PyType_Ready(&amp;sipEnumType_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.enumtype type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.enumtype type&quot;);
 
     if (PyType_Ready(&amp;sipVoidPtr_Type) &lt; 0)
-        Py_FatalError(&quot;sip: Failed to initialise sip.voidptr type&quot;);
+        SIP_FATAL(&quot;sip: Failed to initialise sip.voidptr type&quot;);
 
+#if PY_MAJOR_VERSION &gt;= 3
+    mod = PyModule_Create(&amp;module_def);
+#else
     mod = Py_InitModule(&quot;sip&quot;, methods);
+#endif
+
+    if (mod == NULL)
+        SIP_FATAL(&quot;sip: Failed to intialise sip module&quot;);
+
     mod_dict = PyModule_GetDict(mod);
 
     /* Get a reference to the pickle helpers. */
@@ -509,26 +540,47 @@ PyMODINIT_FUNC initsip(void)
     enum_unpickler = PyDict_GetItemString(mod_dict, &quot;_unpickle_enum&quot;);
 
     if (type_unpickler == NULL || enum_unpickler == NULL)
-        Py_FatalError(&quot;sip: Failed to get pickle helpers&quot;);
+    {
+        Py_DECREF(mod);
+        SIP_FATAL(&quot;sip: Failed to get pickle helpers&quot;);
+    }
 
     /* Publish the SIP API. */
     if ((obj = PyCObject_FromVoidPtr((void *)&amp;sip_api, NULL)) == NULL)
-        Py_FatalError(&quot;sip: Failed to create _C_API object&quot;);
+    {
+        Py_DECREF(mod);
+        SIP_FATAL(&quot;sip: Failed to create _C_API object&quot;);
+    }
 
     rc = PyDict_SetItemString(mod_dict, &quot;_C_API&quot;, obj);
     Py_DECREF(obj);
 
     if (rc &lt; 0)
-        Py_FatalError(&quot;sip: Failed to add _C_API object to module dictionary&quot;);
+    {
+        Py_DECREF(mod);
+        SIP_FATAL(&quot;sip: Failed to add _C_API object to module dictionary&quot;);
+    }
 
     /* Add the SIP version number, but don't worry about errors. */
-    if ((obj = PyInt_FromLong(SIP_VERSION)) != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    obj = PyLong_FromLong(SIP_VERSION);
+#else
+    obj = PyInt_FromLong(SIP_VERSION);
+#endif
+
+    if (obj != NULL)
     {
         PyDict_SetItemString(mod_dict, &quot;SIP_VERSION&quot;, obj);
         Py_DECREF(obj);
     }
 
-    if ((obj = PyString_FromString(SIP_VERSION_STR)) != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    obj = PyUnicode_FromString(SIP_VERSION_STR);
+#else
+    obj = PyString_FromString(SIP_VERSION_STR);
+#endif
+
+    if (obj != NULL)
     {
         PyDict_SetItemString(mod_dict, &quot;SIP_VERSION_STR&quot;, obj);
         Py_DECREF(obj);
@@ -558,6 +610,10 @@ PyMODINIT_FUNC initsip(void)
          */
         sipInterpreter = PyThreadState_Get()-&gt;interp;
     }
+
+#if PY_MAJOR_VERSION &gt;= 3
+    return mod;
+#endif
 }
 
 
@@ -609,9 +665,9 @@ static PyObject *dumpWrapper(PyObject *self, PyObject *args)
         print_object(NULL, (PyObject *)sw);
 
 #if PY_VERSION_HEX &gt;= 0x02050000
-        printf(&quot;    Reference count: %&quot; PY_FORMAT_SIZE_T &quot;d\n&quot;, sw-&gt;ob_refcnt);
+        printf(&quot;    Reference count: %&quot; PY_FORMAT_SIZE_T &quot;d\n&quot;, Py_REFCNT(sw));
 #else
-        printf(&quot;    Reference count: %d\n&quot;, sw-&gt;ob_refcnt);
+        printf(&quot;    Reference count: %d\n&quot;, Py_REFCNT(sw));
 #endif
         printf(&quot;    Address of wrapped object: %p\n&quot;, sipGetAddress(sw));
         printf(&quot;    To be destroyed by: %s\n&quot;, (sipIsPyOwned(sw) ? &quot;Python&quot; : &quot;C/C++&quot;));
@@ -666,7 +722,7 @@ static PyObject *transferTo(PyObject *self, PyObject *args)
             owner = NULL;
         else if (PyObject_TypeCheck(owner, (PyTypeObject *)&amp;sipWrapper_Type))
         {
-            PyErr_Format(PyExc_TypeError, &quot;transferto() argument 2 must be sip.wrapper, not %s&quot;, owner-&gt;ob_type-&gt;tp_name);
+            PyErr_Format(PyExc_TypeError, &quot;transferto() argument 2 must be sip.wrapper, not %s&quot;, Py_TYPE(owner)-&gt;tp_name);
             return NULL;
         }
 
@@ -713,7 +769,7 @@ static PyObject *cast(PyObject *self, PyObject *args)
     if (!PyArg_ParseTuple(args, &quot;O!O!:cast&quot;, &amp;sipSimpleWrapper_Type, &amp;sw, &amp;sipWrapperType_Type, &amp;wt))
         return NULL;
 
-    ft = sw-&gt;ob_type;
+    ft = Py_TYPE(sw);
     tt = (PyTypeObject *)wt;
 
     if (ft == tt || PyType_IsSubtype(tt, ft))
@@ -954,7 +1010,13 @@ static int sip_api_export_module(sipExportedModuleDef *client,
     }
 
     /* Convert the module name to an object. */
-    if ((client-&gt;em_nameobj = PyString_FromString(full_name)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    client-&gt;em_nameobj = PyUnicode_FromString(full_name);
+#else
+    client-&gt;em_nameobj = PyString_FromString(full_name);
+#endif
+
+    if (client-&gt;em_nameobj == NULL)
         return -1;
 
     /* Add it to the list of client modules. */
@@ -1450,7 +1512,11 @@ static PyObject *buildObject(PyObject *obj, const char *fmt, va_list va)
                 l = va_arg(va, SIP_SSIZE_T);
 
                 if (s != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+                    el = PyBytes_FromStringAndSize(s, l);
+#else
                     el = PyString_FromStringAndSize(s, l);
+#endif
                 else
                 {
                     Py_INCREF(Py_None);
@@ -1492,7 +1558,11 @@ static PyObject *buildObject(PyObject *obj, const char *fmt, va_list va)
             {
                 char c = va_arg(va, int);
 
-                el = PyString_FromStringAndSize(&amp;c,1);
+#if PY_MAJOR_VERSION &gt;= 3
+                el = PyBytes_FromStringAndSize(&amp;c, 1);
+#else
+                el = PyString_FromStringAndSize(&amp;c, 1);
+#endif
             }
 
             break;
@@ -1542,11 +1612,15 @@ static PyObject *buildObject(PyObject *obj, const char *fmt, va_list va)
         case 'e':
         case 'h':
         case 'i':
-            el = PyInt_FromLong(va_arg(va,int));
+#if PY_MAJOR_VERSION &gt;= 3
+            el = PyLong_FromLong(va_arg(va, int));
+#else
+            el = PyInt_FromLong(va_arg(va, int));
+#endif
             break;
 
         case 'l':
-            el = PyLong_FromLong(va_arg(va,long));
+            el = PyLong_FromLong(va_arg(va, long));
             break;
 
         case 'm':
@@ -1574,7 +1648,11 @@ static PyObject *buildObject(PyObject *obj, const char *fmt, va_list va)
                 char *s = va_arg(va, char *);
 
                 if (s != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+                    el = PyBytes_FromString(s);
+#else
                     el = PyString_FromString(s);
+#endif
                 else
                 {
                     Py_INCREF(Py_None);
@@ -1788,12 +1866,16 @@ static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
 
             case 'b':
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    int v = PyLong_AsLong(arg);
+#else
                     int v = PyInt_AsLong(arg);
+#endif
 
                     if (PyErr_Occurred())
                         invalid = TRUE;
                     else
-                        sipSetBool(va_arg(va,void *),v);
+                        sipSetBool(va_arg(va, void *), v);
                 }
 
                 break;
@@ -1843,7 +1925,11 @@ static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
                     int *p = va_arg(va, int *);
 
                     if (sip_api_can_convert_to_enum(arg, ((sipEnumTypeObject *)et)-&gt;type))
+#if PY_MAJOR_VERSION &gt;= 3
+                        *p = PyLong_AsLong(arg);
+#else
                         *p = PyInt_AsLong(arg);
+#endif
                     else
                         invalid = TRUE;
                 }
@@ -1856,7 +1942,11 @@ static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
                     int *p = va_arg(va, int *);
 
                     if (sip_api_can_convert_to_enum(arg, td))
+#if PY_MAJOR_VERSION &gt;= 3
+                        *p = PyLong_AsLong(arg);
+#else
                         *p = PyInt_AsLong(arg);
+#endif
                     else
                         invalid = TRUE;
                 }
@@ -1877,12 +1967,16 @@ static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
 
             case 'h':
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    short v = PyLong_AsLong(arg);
+#else
                     short v = PyInt_AsLong(arg);
+#endif
 
                     if (PyErr_Occurred())
                         invalid = TRUE;
                     else
-                        *va_arg(va,short *) = v;
+                        *va_arg(va, short *) = v;
                 }
 
                 break;
@@ -1902,12 +1996,16 @@ static int sip_api_parse_result(int *isErr, PyObject *method, PyObject *res,
             case 'e':
             case 'i':
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    int v = PyLong_AsLong(arg);
+#else
                     int v = PyInt_AsLong(arg);
+#endif
 
                     if (PyErr_Occurred())
                         invalid = TRUE;
                     else
-                        *va_arg(va,int *) = v;
+                        *va_arg(va, int *) = v;
                 }
 
                 break;
@@ -2516,9 +2614,17 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
                 *sname = NULL;
                 *scall = NULL;
 
+#if PY_MAJOR_VERSION &gt;= 3
+                if (PyBytes_Check(arg))
+#else
                 if (PyString_Check(arg))
+#endif
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    char *s = PyBytes_AS_STRING(arg);
+#else
                     char *s = PyString_AS_STRING(arg);
+#endif
 
                     if (*s == '1' || *s == '2' || *s == '9')
                         *sname = s;
@@ -2537,9 +2643,17 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
             {
                 /* Slot name, return the name. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                if (PyBytes_Check(arg))
+#else
                 if (PyString_Check(arg))
+#endif
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    char *s = PyBytes_AS_STRING(arg);
+#else
                     char *s = PyString_AS_STRING(arg);
+#endif
 
                     if (*s == '1' || *s == '2' || *s == '9')
                         *va_arg(va,char **) = s;
@@ -2556,9 +2670,17 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
             {
                 /* Signal name, return the name. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                if (PyBytes_Check(arg))
+#else
                 if (PyString_Check(arg))
+#endif
                 {
+#if PY_MAJOR_VERSION &gt;= 3
+                    char *s = PyBytes_AS_STRING(arg);
+#else
                     char *s = PyString_AS_STRING(arg);
+#endif
 
                     if (*s == '2' || *s == '9')
                         *va_arg(va,char **) = s;
@@ -2806,12 +2928,16 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
             {
                 /* Bool. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                int v = PyLong_AsLong(arg);
+#else
                 int v = PyInt_AsLong(arg);
+#endif
 
                 if (PyErr_Occurred())
                     valid = PARSE_TYPE;
                 else
-                    sipSetBool(va_arg(va,void *),v);
+                    sipSetBool(va_arg(va, void *), v);
 
                 break;
             }
@@ -2835,12 +2961,16 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
             {
                 /* Integer or anonymous enum. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                int v = PyLong_AsLong(arg);
+#else
                 int v = PyInt_AsLong(arg);
+#endif
 
                 if (PyErr_Occurred())
                     valid = PARSE_TYPE;
                 else
-                    *va_arg(va,int *) = v;
+                    *va_arg(va, int *) = v;
 
                 break;
             }
@@ -2863,12 +2993,16 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
             {
                 /* Short integer. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                short v = PyLong_AsLong(arg);
+#else
                 short v = PyInt_AsLong(arg);
+#endif
 
                 if (PyErr_Occurred())
                     valid = PARSE_TYPE;
                 else
-                    *va_arg(va,short *) = v;
+                    *va_arg(va, short *) = v;
 
                 break;
             }
@@ -3019,8 +3153,13 @@ static int parsePass1(sipSimpleWrapper **selfp, int *selfargp,
                     {
                         /* Integer. */
 
+#if PY_MAJOR_VERSION &gt;= 3
+                        if (PyLong_Check(arg))
+                            *va_arg(va, int *) = PyLong_AS_LONG(arg);
+#else
                         if (PyInt_Check(arg))
-                            *va_arg(va,int *) = PyInt_AS_LONG(arg);
+                            *va_arg(va, int *) = PyInt_AS_LONG(arg);
+#endif
                         else
                             valid = PARSE_TYPE;
 
@@ -3332,7 +3471,11 @@ static int parsePass2(sipSimpleWrapper *self, int selfarg, int nrargs,
                         va_arg(va, sipTypeDef *);
                         p = va_arg(va, int *);
 
+#if PY_MAJOR_VERSION &gt;= 3
+                        *p = PyLong_AsLong(arg);
+#else
                         *p = PyInt_AsLong(arg);
+#endif
 
                         break;
                     }
@@ -3354,7 +3497,11 @@ static int parsePass2(sipSimpleWrapper *self, int selfarg, int nrargs,
                 va_arg(va, sipTypeDef *);
                 p = va_arg(va, int *);
 
+#if PY_MAJOR_VERSION &gt;= 3
+                *p = PyLong_AsLong(arg);
+#else
                 *p = PyInt_AsLong(arg);
+#endif
 
                 break;
             }
@@ -3584,7 +3731,13 @@ static int createClassType(sipExportedModuleDef *client, sipClassTypeDef *ctd,
     }
 
     /* Create an object corresponding to the type name. */
-    if ((name = PyString_FromString(sipPyNameOfClass(ctd))) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    name = PyUnicode_FromString(sipPyNameOfClass(ctd));
+#else
+    name = PyString_FromString(sipPyNameOfClass(ctd));
+#endif
+
+    if (name == NULL)
         goto reterr;
 
     /* Create the tuple of super-types. */
@@ -3672,7 +3825,7 @@ static int createClassType(sipExportedModuleDef *client, sipClassTypeDef *ctd,
             goto relbases;
     }
     else
-        metatype = (PyObject *)PyTuple_GET_ITEM(bases, 0)-&gt;ob_type;
+        metatype = (PyObject *)Py_TYPE(PyTuple_GET_ITEM(bases, 0));
 
     /* Create the type dictionary. */
     if ((typedict = createTypeDict(client-&gt;em_nameobj)) == NULL)
@@ -3753,13 +3906,25 @@ static sipExportedModuleDef *getModule(PyObject *mname_obj)
 
     /* Find the module definition. */
     for (em = moduleList; em != NULL; em = em-&gt;em_next)
-        if (strcmp(sipNameOfModule(em), PyString_AS_STRING(mname_obj)) == 0)
+#if PY_MAJOR_VERSION &gt;= 3
+        if (PyUnicode_Compare(mname_obj, em-&gt;em_nameobj) == 0)
+#else
+        if (strcmp(PyString_AS_STRING(mname_obj), sipNameOfModule(em)) == 0)
+#endif
             break;
 
     Py_DECREF(mod);
 
     if (em == NULL)
-        PyErr_Format(PyExc_SystemError, &quot;unable to find to find module: %s&quot;, PyString_AS_STRING(mname_obj));
+    {
+#if PY_MAJOR_VERSION &gt;= 3
+        PyErr_Format(PyExc_SystemError, &quot;unable to find to find module: %U&quot;,
+                mname_obj);
+#else
+        PyErr_Format(PyExc_SystemError, &quot;unable to find to find module: %s&quot;,
+                PyString_AS_STRING(mname_obj));
+#endif
+    }
 
     return em;
 }
@@ -3815,7 +3980,7 @@ static PyObject *pickle_type(PyObject *obj, PyObject *ignore)
             sipTypeDef *td = em-&gt;em_types[i];
 
             if (td != NULL &amp;&amp; sipTypeIsClass(td))
-                if (sipTypeAsPyTypeObject(td) == obj-&gt;ob_type)
+                if (sipTypeAsPyTypeObject(td) == Py_TYPE(obj))
                 {
                     PyObject *init_args;
                     sipClassTypeDef *ctd = (sipClassTypeDef *)td;
@@ -3843,7 +4008,8 @@ static PyObject *pickle_type(PyObject *obj, PyObject *ignore)
     }
 
     /* We should never get here. */
-    PyErr_Format(PyExc_SystemError, &quot;attempt to pickle unknown type: %s&quot;, obj-&gt;ob_type-&gt;tp_name);
+    PyErr_Format(PyExc_SystemError, &quot;attempt to pickle unknown type '%s'&quot;,
+            Py_TYPE(obj)-&gt;tp_name);
 
     return NULL;
 }
@@ -3887,10 +4053,16 @@ static PyObject *unpickle_enum(PyObject *ignore, PyObject *args)
  */
 static PyObject *pickle_enum(PyObject *obj, PyObject *ignore)
 {
-    sipTypeDef *td = ((sipEnumTypeObject *)(obj-&gt;ob_type))-&gt;type;
+    sipTypeDef *td = ((sipEnumTypeObject *)Py_TYPE(obj))-&gt;type;
 
     return Py_BuildValue(&quot;O(Osi)&quot;, enum_unpickler, td-&gt;td_module-&gt;em_nameobj,
-            sipPyNameOfEnum((sipEnumTypeDef *)td), (int)PyInt_AS_LONG(obj));
+            sipPyNameOfEnum((sipEnumTypeDef *)td),
+#if PY_MAJOR_VERSION &gt;= 3
+            (int)PyLong_AS_LONG(obj)
+#else
+            (int)PyInt_AS_LONG(obj)
+#endif
+            );
 }
 
 
@@ -3903,9 +4075,8 @@ static int setReduce(PyTypeObject *type, PyMethodDef *pickler)
     PyObject *descr;
     int rc;
 
-    if (rstr == NULL)
-        if ((rstr = PyString_FromString(&quot;__reduce__&quot;)) == NULL)
-            return -1;
+    if (objectify(&quot;__reduce__&quot;, &amp;rstr) &lt; 0)
+        return -1;
 
     /* Create the method descripter. */
     if ((descr = PyDescr_NewMethod(type, pickler)) == NULL)
@@ -3952,7 +4123,9 @@ static int createEnumType(sipExportedModuleDef *client, sipEnumTypeDef *etd,
     /* Create the base type tuple if it hasn't already been done. */
     if (bases == NULL)
     {
-#if PY_VERSION_HEX &gt;= 0x02040000
+#if PY_MAJOR_VERSION &gt;= 3
+        bases = PyTuple_Pack(1, (PyObject *)&amp;PyLong_Type);
+#elif PY_VERSION_HEX &gt;= 0x02040000
         bases = PyTuple_Pack(1, (PyObject *)&amp;PyInt_Type);
 #else
         bases = Py_BuildValue(&quot;(O)&quot;, &amp;PyInt_Type);
@@ -3963,7 +4136,13 @@ static int createEnumType(sipExportedModuleDef *client, sipEnumTypeDef *etd,
     }
 
     /* Create an object corresponding to the type name. */
-    if ((name = PyString_FromString(sipPyNameOfEnum(etd))) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    name = PyUnicode_FromString(sipPyNameOfEnum(etd));
+#else
+    name = PyString_FromString(sipPyNameOfEnum(etd));
+#endif
+
+    if (name == NULL)
         return -1;
 
     /* Create the type dictionary. */
@@ -4030,8 +4209,7 @@ static PyObject *createTypeDict(PyObject *mname)
     static PyObject *mstr = NULL;
     PyObject *dict;
 
-    /* Create an object for &quot;__module__&quot;. */
-    if (mstr == NULL &amp;&amp; (mstr = PyString_FromString(&quot;__module__&quot;)) == NULL)
+    if (objectify(&quot;__module__&quot;, &amp;mstr) &lt; 0)
         return NULL;
 
     /* Create the dictionary. */
@@ -4050,6 +4228,27 @@ static PyObject *createTypeDict(PyObject *mname)
 
 
 /*
+ * Convert an ASCII string to a Python object if it hasn't already been done.
+ */
+static int objectify(const char *s, PyObject **objp)
+{
+    if (*objp == NULL)
+    {
+#if PY_MAJOR_VERSION &gt;= 3
+        *objp = PyUnicode_FromString(s);
+#else
+        *objp = PyString_FromString(s);
+#endif
+
+        if (*objp == NULL)
+            return -1;
+    }
+
+    return 0;
+}
+
+
+/*
  * Add a set of static instances to a dictionary.
  */
 static int addInstances(PyObject *dict, sipInstancesDef *id)
@@ -4289,10 +4488,14 @@ static int sip_api_can_convert_to_enum(PyObject *obj, const sipTypeDef *td)
     assert(sipTypeIsEnum(td));
 
     /* If the object is an enum then it must be the right enum. */
-    if (PyObject_TypeCheck((PyObject *)obj-&gt;ob_type, &amp;sipEnumType_Type))
+    if (PyObject_TypeCheck((PyObject *)Py_TYPE(obj), &amp;sipEnumType_Type))
         return (PyObject_TypeCheck(obj, sipTypeAsPyTypeObject(td)));
 
+#if PY_MAJOR_VERSION &gt;= 3
+    return PyLong_Check(obj);
+#else
     return PyInt_Check(obj);
+#endif
 }
 
 
@@ -4302,7 +4505,11 @@ static int sip_api_can_convert_to_enum(PyObject *obj, const sipTypeDef *td)
 static PyObject *createEnumMember(sipClassTypeDef *ctd, sipEnumMemberDef *enm)
 {
     if (enm-&gt;em_enum &lt; 0)
+#if PY_MAJOR_VERSION &gt;= 3
+        return PyLong_FromLong(enm-&gt;em_val);
+#else
         return PyInt_FromLong(enm-&gt;em_val);
+#endif
 
     return sip_api_convert_from_enum(enm-&gt;em_val,
             ctd-&gt;ctd_base.td_module-&gt;em_types[enm-&gt;em_enum]);
@@ -4471,7 +4678,9 @@ static void sip_api_bad_operator_arg(PyObject *self, PyObject *arg,
     {
     case concat_slot:
     case iconcat_slot:
-        PyErr_Format(PyExc_TypeError, &quot;cannot concatenate '%s' and '%s' objects&quot;, self-&gt;ob_type-&gt;tp_name, arg-&gt;ob_type-&gt;tp_name);
+        PyErr_Format(PyExc_TypeError,
+                &quot;cannot concatenate '%s' and '%s' objects&quot;,
+                Py_TYPE(self)-&gt;tp_name, Py_TYPE(arg)-&gt;tp_name);
         break;
 
     case repeat_slot:
@@ -4487,7 +4696,9 @@ static void sip_api_bad_operator_arg(PyObject *self, PyObject *arg,
     }
 
     if (sn != NULL)
-        PyErr_Format(PyExc_TypeError, &quot;unsupported operand type(s) for %s: '%s' and '%s'&quot;, sn, self-&gt;ob_type-&gt;tp_name, arg-&gt;ob_type-&gt;tp_name);
+        PyErr_Format(PyExc_TypeError,
+                &quot;unsupported operand type(s) for %s: '%s' and '%s'&quot;, sn,
+                Py_TYPE(self)-&gt;tp_name, Py_TYPE(arg)-&gt;tp_name);
 }
 
 
@@ -4530,8 +4741,7 @@ static void sip_api_bad_set_type(const char *classname,const char *var)
  */
 static void sip_api_bad_catcher_result(PyObject *method)
 {
-    const char *cname;
-    char *mname;
+    PyObject *mname;
 
     /*
      * This is part of the public API so we make no assumptions about the
@@ -4542,18 +4752,21 @@ static void sip_api_bad_catcher_result(PyObject *method)
         !PyFunction_Check(PyMethod_GET_FUNCTION(method)) ||
         PyMethod_GET_SELF(method) == NULL)
     {
-        PyErr_Format(PyExc_TypeError,&quot;invalid argument to sipBadCatcherResult()&quot;);
+        PyErr_Format(PyExc_TypeError,
+                &quot;invalid argument to sipBadCatcherResult()&quot;);
         return;
     }
 
-    mname = PyString_AsString(((PyFunctionObject *)PyMethod_GET_FUNCTION(method))-&gt;func_name);
-
-    if (mname == NULL)
-        return;
-
-    cname = PyMethod_GET_SELF(method)-&gt;ob_type-&gt;tp_name;
+    mname = ((PyFunctionObject *)PyMethod_GET_FUNCTION(method))-&gt;func_name;
 
-    PyErr_Format(PyExc_TypeError,&quot;invalid result type from %s.%s()&quot;,cname,mname);
+#if PY_MAJOR_VERSION &gt;= 3
+    PyErr_Format(PyExc_TypeError, &quot;invalid result type from %s.%U()&quot;,
+            Py_TYPE(PyMethod_GET_SELF(method))-&gt;tp_name, mname);
+#else
+    PyErr_Format(PyExc_TypeError, &quot;invalid result type from %s.%s()&quot;,
+            Py_TYPE(PyMethod_GET_SELF(method))-&gt;tp_name,
+            PyString_AsString(mname));
+#endif
 }
 
 
@@ -4653,19 +4866,19 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
 
     /* Convert the strings we use to objects if not already done. */
 
-    if (licenseName == NULL &amp;&amp; (licenseName = PyString_FromString(&quot;__license__&quot;)) == NULL)
+    if (objectify(&quot;__license__&quot;, &amp;licenseName) &lt; 0)
         return -1;
 
-    if (licenseeName == NULL &amp;&amp; (licenseeName = PyString_FromString(&quot;Licensee&quot;)) == NULL)
+    if (objectify(&quot;Licensee&quot;, &amp;licenseeName) &lt; 0)
         return -1;
 
-    if (typeName == NULL &amp;&amp; (typeName = PyString_FromString(&quot;Type&quot;)) == NULL)
+    if (objectify(&quot;Type&quot;, &amp;typeName) &lt; 0)
         return -1;
 
-    if (timestampName == NULL &amp;&amp; (timestampName = PyString_FromString(&quot;Timestamp&quot;)) == NULL)
+    if (objectify(&quot;Timestamp&quot;, &amp;timestampName) &lt; 0)
         return -1;
 
-    if (signatureName == NULL &amp;&amp; (signatureName = PyString_FromString(&quot;Signature&quot;)) == NULL)
+    if (objectify(&quot;Signature&quot;, &amp;signatureName) &lt; 0)
         return -1;
 
     /* We use a dictionary to hold the license information. */
@@ -4673,7 +4886,16 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
         return -1;
 
     /* The license type is compulsory, the rest are optional. */
-    if (lc-&gt;lc_type == NULL || (o = PyString_FromString(lc-&gt;lc_type)) == NULL)
+    if (lc-&gt;lc_type == NULL)
+        goto deldict;
+
+#if PY_MAJOR_VERSION &gt;= 3
+    o = PyUnicode_FromString(lc-&gt;lc_type);
+#else
+    o = PyString_FromString(lc-&gt;lc_type);
+#endif
+
+    if (o == NULL)
         goto deldict;
 
     rc = PyDict_SetItem(ldict,typeName,o);
@@ -4684,7 +4906,13 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
 
     if (lc-&gt;lc_licensee != NULL)
     {
-        if ((o = PyString_FromString(lc-&gt;lc_licensee)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        o = PyUnicode_FromString(lc-&gt;lc_licensee);
+#else
+        o = PyString_FromString(lc-&gt;lc_licensee);
+#endif
+
+        if (o == NULL)
             goto deldict;
 
         rc = PyDict_SetItem(ldict,licenseeName,o);
@@ -4696,7 +4924,13 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
 
     if (lc-&gt;lc_timestamp != NULL)
     {
-        if ((o = PyString_FromString(lc-&gt;lc_timestamp)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        o = PyUnicode_FromString(lc-&gt;lc_timestamp);
+#else
+        o = PyString_FromString(lc-&gt;lc_timestamp);
+#endif
+
+        if (o == NULL)
             goto deldict;
 
         rc = PyDict_SetItem(ldict,timestampName,o);
@@ -4708,7 +4942,13 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
 
     if (lc-&gt;lc_signature != NULL)
     {
-        if ((o = PyString_FromString(lc-&gt;lc_signature)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        o = PyUnicode_FromString(lc-&gt;lc_signature);
+#else
+        o = PyString_FromString(lc-&gt;lc_signature);
+#endif
+
+        if (o == NULL)
             goto deldict;
 
         rc = PyDict_SetItem(ldict,signatureName,o);
@@ -4724,7 +4964,7 @@ static int addLicense(PyObject *dict,sipLicenseDef *lc)
 
     Py_DECREF(ldict);
 
-    rc = PyDict_SetItem(dict,licenseName,proxy);
+    rc = PyDict_SetItem(dict, licenseName, proxy);
     Py_DECREF(proxy);
 
     return rc;
@@ -4765,17 +5005,23 @@ static int addVoidPtrInstances(PyObject *dict,sipVoidPtrInstanceDef *vi)
 /*
  * Add the char instances to a dictionary.
  */
-static int addCharInstances(PyObject *dict,sipCharInstanceDef *ci)
+static int addCharInstances(PyObject *dict, sipCharInstanceDef *ci)
 {
     while (ci-&gt;ci_name != NULL)
     {
         int rc;
         PyObject *w;
 
-        if ((w = PyString_FromStringAndSize(&amp;ci-&gt;ci_val,1)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        w = PyBytes_FromStringAndSize(&amp;ci-&gt;ci_val, 1);
+#else
+        w = PyString_FromStringAndSize(&amp;ci-&gt;ci_val, 1);
+#endif
+
+        if (w == NULL)
             return -1;
 
-        rc = PyDict_SetItemString(dict,ci-&gt;ci_name,w);
+        rc = PyDict_SetItemString(dict, ci-&gt;ci_name, w);
         Py_DECREF(w);
 
         if (rc &lt; 0)
@@ -4791,17 +5037,23 @@ static int addCharInstances(PyObject *dict,sipCharInstanceDef *ci)
 /*
  * Add the string instances to a dictionary.
  */
-static int addStringInstances(PyObject *dict,sipStringInstanceDef *si)
+static int addStringInstances(PyObject *dict, sipStringInstanceDef *si)
 {
     while (si-&gt;si_name != NULL)
     {
         int rc;
         PyObject *w;
 
-        if ((w = PyString_FromString(si-&gt;si_val)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        w = PyBytes_FromString(si-&gt;si_val);
+#else
+        w = PyString_FromString(si-&gt;si_val);
+#endif
+
+        if (w == NULL)
             return -1;
 
-        rc = PyDict_SetItemString(dict,si-&gt;si_name,w);
+        rc = PyDict_SetItemString(dict, si-&gt;si_name, w);
         Py_DECREF(w);
 
         if (rc &lt; 0)
@@ -4824,7 +5076,13 @@ static int addIntInstances(PyObject *dict, sipIntInstanceDef *ii)
         int rc;
         PyObject *w;
 
-        if ((w = PyInt_FromLong(ii-&gt;ii_val)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+        w = PyLong_FromLong(ii-&gt;ii_val);
+#else
+        w = PyInt_FromLong(ii-&gt;ii_val);
+#endif
+
+        if (w == NULL)
             return -1;
 
         rc = PyDict_SetItemString(dict, ii-&gt;ii_name, w);
@@ -5180,7 +5438,7 @@ void *sip_api_get_cpp_ptr(sipSimpleWrapper *sw, const sipTypeDef *td)
         return NULL;
 
     if (td != NULL)
-        ptr = cast_cpp_ptr(ptr, sw-&gt;ob_type, td);
+        ptr = cast_cpp_ptr(ptr, Py_TYPE(sw), td);
 
     return ptr;
 }
@@ -5234,7 +5492,13 @@ static void sip_api_keep_reference(PyObject *self, int key, PyObject *obj)
         ((sipSimpleWrapper *)self)-&gt;extra_refs = dict;
     }
 
-    if ((key_obj = PyInt_FromLong(key)) != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    key_obj = PyLong_FromLong(key);
+#else
+    key_obj = PyInt_FromLong(key);
+#endif
+
+    if (key_obj != NULL)
     {
         /* This can happen if the argument was optional. */
         if (obj == NULL)
@@ -5348,11 +5612,11 @@ static void *sip_api_force_convert_to_type(PyObject *pyObj,
         if (sipTypeIsMapped(td))
             PyErr_Format(PyExc_TypeError,
                     &quot;%s cannot be converted to a C/C++ %s in this context&quot;,
-                    pyObj-&gt;ob_type-&gt;tp_name, sipTypeName(td));
+                    Py_TYPE(pyObj)-&gt;tp_name, sipTypeName(td));
         else
             PyErr_Format(PyExc_TypeError,
                     &quot;%s cannot be converted to %s.%s in this context&quot;,
-                    pyObj-&gt;ob_type-&gt;tp_name, sipNameOfModule(td-&gt;td_module),
+                    Py_TYPE(pyObj)-&gt;tp_name, sipNameOfModule(td-&gt;td_module),
                     sipPyNameOfClass((const sipClassTypeDef *)td));
 
         if (statep != NULL)
@@ -5597,7 +5861,9 @@ void sipSaveMethod(sipPyMethod *pm, PyObject *meth)
 {
     pm-&gt;mfunc = PyMethod_GET_FUNCTION(meth);
     pm-&gt;mself = PyMethod_GET_SELF(meth);
+#if PY_MAJOR_VERSION &lt; 3
     pm-&gt;mclass = PyMethod_GET_CLASS(meth);
+#endif
 }
 
 
@@ -5779,8 +6045,7 @@ static void sip_api_raise_unknown_exception(void)
 
     SIP_BLOCK_THREADS
 
-    if (mobj == NULL)
-        mobj = PyString_FromString(&quot;unknown&quot;);
+    objectify(&quot;unknown&quot;, &amp;mobj);
 
     PyErr_SetObject(PyExc_Exception, mobj);
 
@@ -5839,7 +6104,7 @@ static sipClassTypeDef *getClassType(const sipEncodedClassDef *enc,
 static void *findSlot(PyObject *self, sipPySlotType st)
 {
     sipPySlotDef *psd;
-    PyTypeObject *py_type = self-&gt;ob_type;
+    PyTypeObject *py_type = Py_TYPE(self);
 
     /* If it is not a wrapper then it must be an enum. */
     if (PyObject_TypeCheck((PyObject *)py_type, &amp;sipWrapperType_Type))
@@ -5871,7 +6136,7 @@ static void *findSlot(PyObject *self, sipPySlotType st)
  */
 static void *getPtrTypeDef(sipSimpleWrapper *self, const sipClassTypeDef **ctd)
 {
-    *ctd = (const sipClassTypeDef *)((sipWrapperType *)self-&gt;ob_type)-&gt;type;
+    *ctd = (const sipClassTypeDef *)((sipWrapperType *)Py_TYPE(self))-&gt;type;
 
     return (sipNotInMap(self) ? NULL : self-&gt;u.cppPtr);
 }
@@ -5952,7 +6217,9 @@ static int ssizeobjargprocSlot(PyObject *self, SIP_SSIZE_T arg1,
      * optional.
      */
     if (arg2 == NULL)
-#if PY_VERSION_HEX &gt;= 0x02050000
+#if PY_MAJOR_VERSION &gt;= 3
+        args = PyLong_FromSsize_t(arg1);
+#elif PY_VERSION_HEX &gt;= 0x02050000
         args = PyInt_FromSsize_t(arg1);
 #else
         args = PyInt_FromLong(arg1);
@@ -6020,7 +6287,11 @@ static int vp_convertor(PyObject *arg, struct vp_values *vp)
     }
     else
     {
+#if PY_MAJOR_VERSION &gt;= 3
+        ptr = PyLong_AsVoidPtr(arg);
+#else
         ptr = (void *)PyInt_AsLong(arg);
+#endif
 
         if (PyErr_Occurred())
         {
@@ -6080,8 +6351,56 @@ static PyObject *sipVoidPtr_new(PyTypeObject *subtype, PyObject *args,
 }
 
 
+#if PY_MAJOR_VERSION &gt;= 3
 /*
- * The read buffer implementation.
+ * The read buffer implementation for Python v3.
+ */
+static int sipVoidPtr_getbuffer(PyObject *self, Py_buffer *buf, int flags)
+{
+    sipVoidPtrObject *v = (sipVoidPtrObject *)self;
+
+    /* Check the data is writeable. */
+    if ((flags &amp; PyBUF_WRITABLE) &amp;&amp; !v-&gt;rw)
+    {
+        PyErr_SetString(PyExc_TypeError, &quot;the sip.voidptr is not writeable&quot;);
+        return -1;
+    }
+
+    /* We only support simple buffers. */
+    if (flags &amp; PyBUF_ND)
+    {
+        PyErr_SetString(PyExc_TypeError,
+                &quot;sip.voidptr does not support shape information&quot;);
+        return -1;
+    }
+
+    if (flags &amp; PyBUF_STRIDES)
+    {
+        PyErr_SetString(PyExc_TypeError,
+                &quot;sip.voidptr does not support strides information&quot;);
+        return -1;
+    }
+
+    buf-&gt;buf = v-&gt;voidptr;
+    buf-&gt;len = v-&gt;size;
+    buf-&gt;readonly = !v-&gt;rw;
+
+    buf-&gt;format = NULL;
+    buf-&gt;ndim = 0;
+    buf-&gt;shape = NULL;
+    buf-&gt;strides = NULL;
+    buf-&gt;suboffsets = NULL;
+    buf-&gt;itemsize = 1;
+    buf-&gt;internal = NULL;
+
+    return 0;
+}
+#endif
+
+
+#if PY_MAJOR_VERSION &lt; 3
+/*
+ * The read buffer implementation for Python v2.
  */
 static SIP_SSIZE_T sipVoidPtr_getbuffer(PyObject *self, SIP_SSIZE_T seg,
         void **ptr)
@@ -6098,10 +6417,12 @@ static SIP_SSIZE_T sipVoidPtr_getbuffer(PyObject *self, SIP_SSIZE_T seg,
 
     return size;
 }
+#endif
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
- * The write buffer implementation.
+ * The write buffer implementation for Python v2.
  */
 static SIP_SSIZE_T sipVoidPtr_getwritebuffer(PyObject *self, SIP_SSIZE_T seg,
         void **ptr)
@@ -6112,10 +6433,12 @@ static SIP_SSIZE_T sipVoidPtr_getwritebuffer(PyObject *self, SIP_SSIZE_T seg,
     PyErr_SetString(PyExc_TypeError, &quot;the sip.voidptr is not writeable&quot;);
     return -1;
 }
+#endif
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
- * The segment count implementation.
+ * The segment count implementation for Python v2.
  */
 static SIP_SSIZE_T sipVoidPtr_getsegcount(PyObject *self, SIP_SSIZE_T *lenp)
 {
@@ -6129,6 +6452,7 @@ static SIP_SSIZE_T sipVoidPtr_getsegcount(PyObject *self, SIP_SSIZE_T *lenp)
 
     return segs;
 }
+#endif
 
 
 /*
@@ -6140,6 +6464,7 @@ static PyObject *sipVoidPtr_int(sipVoidPtrObject *v)
 }
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
  * Implement hex() for the type.
  */
@@ -6147,10 +6472,12 @@ static PyObject *sipVoidPtr_hex(sipVoidPtrObject *v)
 {
     char buf[2 + 16 + 1];
 
-    PyOS_snprintf(buf, sizeof (buf), &quot;0x%.*lx&quot;, (int)(sizeof (void *) * 2), (unsigned long)v-&gt;voidptr);
+    PyOS_snprintf(buf, sizeof (buf), &quot;0x%.*lx&quot;, (int)(sizeof (void *) * 2),
+            (unsigned long)v-&gt;voidptr);
 
     return PyString_FromString(buf);
 }
+#endif
 
 
 /*
@@ -6191,7 +6518,11 @@ static PyObject *sipVoidPtr_asstring(sipVoidPtrObject *v, PyObject *args,
         return NULL;
     }
 
+#if PY_MAJOR_VERSION &gt;= 3
+    return PyBytes_FromStringAndSize(v-&gt;voidptr, size);
+#else
     return PyString_FromStringAndSize(v-&gt;voidptr, size);
+#endif
 }
 
 
@@ -6200,7 +6531,9 @@ static PyObject *sipVoidPtr_asstring(sipVoidPtrObject *v, PyObject *args,
  */
 static PyObject *sipVoidPtr_getsize(sipVoidPtrObject *v, PyObject *arg)
 {
-#if PY_VERSION_HEX &gt;= 0x02050000
+#if PY_MAJOR_VERSION &gt;= 3
+    return PyLong_FromSsize_t(v-&gt;size);
+#elif PY_VERSION_HEX &gt;= 0x02050000
     return PyInt_FromSsize_t(v-&gt;size);
 #else
     return PyInt_FromLong(v-&gt;size);
@@ -6215,7 +6548,9 @@ static PyObject *sipVoidPtr_setsize(sipVoidPtrObject *v, PyObject *arg)
 {
     SIP_SSIZE_T size;
 
-#if PY_VERSION_HEX &gt;= 0x02050000
+#if PY_MAJOR_VERSION &gt;= 3
+    size = PyLong_AsSsize_t(arg);
+#elif PY_VERSION_HEX &gt;= 0x02050000
     size = PyInt_AsSsize_t(arg);
 #else
     size = (int)PyInt_AsLong(arg);
@@ -6247,7 +6582,11 @@ static PyObject *sipVoidPtr_setwriteable(sipVoidPtrObject *v, PyObject *arg)
 {
     int rw;
 
+#if PY_MAJOR_VERSION &gt;= 3
+    rw = (int)PyLong_AsLong(arg);
+#else
     rw = (int)PyInt_AsLong(arg);
+#endif
 
     if (PyErr_Occurred())
         return NULL;
@@ -6276,32 +6615,59 @@ static PyNumberMethods sipVoidPtr_NumberMethods = {
     0,                      /* nb_add */
     0,                      /* nb_subtract */
     0,                      /* nb_multiply */
+#if PY_MAJOR_VERSION &lt; 3
     0,                      /* nb_divide */
+#endif
     0,                      /* nb_remainder */
     0,                      /* nb_divmod */
     0,                      /* nb_power */
     0,                      /* nb_negative */
     0,                      /* nb_positive */
     0,                      /* nb_absolute */
-    0,                      /* nb_nonzero */
+    0,                      /* nb_bool (Python v3), nb_nonzero (Python v2) */
     0,                      /* nb_invert */
     0,                      /* nb_lshift */
     0,                      /* nb_rshift */
     0,                      /* nb_and */
     0,                      /* nb_xor */
     0,                      /* nb_or */
+#if PY_MAJOR_VERSION &lt; 3
     0,                      /* nb_coerce */
+#endif
     (unaryfunc)sipVoidPtr_int,  /* nb_int */
-    0,                      /* nb_long */
+    0,                      /* nb_reserved (Python v3), nb_long (Python v2) */
     0,                      /* nb_float */
+#if PY_MAJOR_VERSION &lt; 3
     0,                      /* nb_oct */
     (unaryfunc)sipVoidPtr_hex,  /* nb_hex */
+#endif
+    0,                      /* nb_inplace_add */
+    0,                      /* nb_inplace_subtract */
+    0,                      /* nb_inplace_multiply */
+#if PY_MAJOR_VERSION &lt; 3
+    0,                      /* nb_inplace_divide */
+#endif
+    0,                      /* nb_inplace_remainder */
+    0,                      /* nb_inplace_power */
+    0,                      /* nb_inplace_lshift */
+    0,                      /* nb_inplace_rshift */
+    0,                      /* nb_inplace_and */
+    0,                      /* nb_inplace_xor */
+    0,                      /* nb_inplace_or */
+    0,                      /* nb_floor_divide */
+    0,                      /* nb_true_divide */
+    0,                      /* nb_inplace_floor_divide */
+    0,                      /* nb_inplace_true_divide */
+    0                       /* nb_index */
 };
 
 
 /* The buffer methods data structure. */
 static PyBufferProcs sipVoidPtr_BufferProcs = {
     sipVoidPtr_getbuffer,
+#if PY_MAJOR_VERSION &gt;= 3
+    NULL,
+#else
     sipVoidPtr_getwritebuffer,
     sipVoidPtr_getsegcount,
 #if PY_VERSION_HEX &gt;= 0x02050000
@@ -6309,13 +6675,13 @@ static PyBufferProcs sipVoidPtr_BufferProcs = {
 #else
     (getcharbufferproc)sipVoidPtr_getbuffer
 #endif
+#endif
 };
 
 
 /* The type data structure. */
 static PyTypeObject sipVoidPtr_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                      /* ob_size */
+    PyVarObject_HEAD_INIT(NULL, 0)
     &quot;sip.voidptr&quot;,          /* tp_name */
     sizeof (sipVoidPtrObject),  /* tp_basicsize */
     0,                      /* tp_itemsize */
@@ -6323,7 +6689,7 @@ static PyTypeObject sipVoidPtr_Type = {
     0,                      /* tp_print */
     0,                      /* tp_getattr */
     0,                      /* tp_setattr */
-    0,                      /* tp_compare */
+    0,                      /* tp_reserved (Python v3), tp_compare (Python v2) */
     0,                      /* tp_repr */
     &amp;sipVoidPtr_NumberMethods,  /* tp_as_number */
     0,                      /* tp_as_sequence */
@@ -6376,7 +6742,11 @@ static void *sip_api_convert_to_void_ptr(PyObject *obj)
     if (PyCObject_Check(obj))
         return PyCObject_AsVoidPtr(obj);
 
+#if PY_MAJOR_VERSION &gt;= 3
+    return PyLong_AsVoidPtr(obj);
+#else
     return (void *)PyInt_AsLong(obj);
+#endif
 }
 
 
@@ -6555,8 +6925,7 @@ static int sipWrapperType_setattro(PyObject *self, PyObject *name,
  * with a wrapped type.
  */
 static PyTypeObject sipWrapperType_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                      /* ob_size */
+    PyVarObject_HEAD_INIT(NULL, 0)
     &quot;sip.wrappertype&quot;,      /* tp_name */
     sizeof (sipWrapperType),    /* tp_basicsize */
     0,                      /* tp_itemsize */
@@ -6564,7 +6933,7 @@ static PyTypeObject sipWrapperType_Type = {
     0,                      /* tp_print */
     0,                      /* tp_getattr */
     0,                      /* tp_setattr */
-    0,                      /* tp_compare */
+    0,                      /* tp_reserved (Python v3), tp_compare (Python v2) */
     0,                      /* tp_repr */
     0,                      /* tp_as_number */
     0,                      /* tp_as_sequence */
@@ -6699,7 +7068,7 @@ static int sipSimpleWrapper_init(sipSimpleWrapper *self, PyObject *args,
     if ((sipNew = sipGetPending(&amp;owner, &amp;sipFlags)) == NULL)
     {
         int argsparsed = 0;
-        sipWrapperType *wt = (sipWrapperType *)self-&gt;ob_type;
+        sipWrapperType *wt = (sipWrapperType *)Py_TYPE(self);
         sipClassTypeDef *ctd = (sipClassTypeDef *)wt-&gt;type;
 
         /* Call the C++ ctor. */
@@ -6879,8 +7248,45 @@ static int sipSimpleWrapper_clear(sipSimpleWrapper *self)
 }
 
 
+#if PY_MAJOR_VERSION &gt;= 3
+/*
+ * The instance get buffer slot for Python v3.
+ */
+static int sipSimpleWrapper_getbuffer(sipSimpleWrapper *self, Py_buffer *buf,
+        int flags)
+{
+    void *ptr;
+    const sipClassTypeDef *ctd;
+
+    if ((ptr = getPtrTypeDef(self, &amp;ctd)) == NULL)
+        return -1;
+
+    return ctd-&gt;ctd_getbuffer((PyObject *)self, ptr, buf, flags);
+}
+#endif
+
+
+#if PY_MAJOR_VERSION &gt;= 3
 /*
- * The instance read buffer slot.
+ * The instance release buffer slot for Python v3.
+ */
+static void sipSimpleWrapper_releasebuffer(sipSimpleWrapper *self,
+        Py_buffer *buf)
+{
+    void *ptr;
+    const sipClassTypeDef *ctd;
+
+    if ((ptr = getPtrTypeDef(self, &amp;ctd)) == NULL)
+        return -1;
+
+    return ctd-&gt;ctd_releasebuffer((PyObject *)self, ptr, buf);
+}
+#endif
+
+
+#if PY_MAJOR_VERSION &lt; 3
+/*
+ * The instance read buffer slot for Python v2.
  */
 static SIP_SSIZE_T sipSimpleWrapper_getreadbuffer(sipSimpleWrapper *self,
         SIP_SSIZE_T segment, void **ptrptr)
@@ -6893,10 +7299,12 @@ static SIP_SSIZE_T sipSimpleWrapper_getreadbuffer(sipSimpleWrapper *self,
 
     return ctd-&gt;ctd_readbuffer((PyObject *)self, ptr, segment, ptrptr);
 }
+#endif
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
- * The instance write buffer slot.
+ * The instance write buffer slot for Python v2.
  */
 static SIP_SSIZE_T sipSimpleWrapper_getwritebuffer(sipSimpleWrapper *self,
         SIP_SSIZE_T segment, void **ptrptr)
@@ -6909,10 +7317,12 @@ static SIP_SSIZE_T sipSimpleWrapper_getwritebuffer(sipSimpleWrapper *self,
 
     return ctd-&gt;ctd_writebuffer((PyObject *)self, ptr, segment, ptrptr);
 }
+#endif
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
- * The instance segment count slot.
+ * The instance segment count slot for Python v2.
  */
 static SIP_SSIZE_T sipSimpleWrapper_getsegcount(sipSimpleWrapper *self,
         SIP_SSIZE_T *lenp)
@@ -6925,10 +7335,12 @@ static SIP_SSIZE_T sipSimpleWrapper_getsegcount(sipSimpleWrapper *self,
 
     return ctd-&gt;ctd_segcount((PyObject *)self, ptr, lenp);
 }
+#endif
 
 
+#if PY_MAJOR_VERSION &lt; 3
 /*
- * The instance char buffer slot.
+ * The instance char buffer slot for Python v2.
  */
 static SIP_SSIZE_T sipSimpleWrapper_getcharbuffer(sipSimpleWrapper *self,
         SIP_SSIZE_T segment, void **ptrptr)
@@ -6941,6 +7353,7 @@ static SIP_SSIZE_T sipSimpleWrapper_getcharbuffer(sipSimpleWrapper *self,
 
     return ctd-&gt;ctd_charbuffer((PyObject *)self, ptr, segment, ptrptr);
 }
+#endif
 
 
 /*
@@ -6983,11 +7396,15 @@ static PyObject *slot_sq_item(PyObject *self, SIP_SSIZE_T n)
     PyObject *(*f)(PyObject *,PyObject *);
     PyObject *arg, *res;
 
-#if PY_VERSION_HEX &gt;= 0x02050000
-    if ((arg = PyInt_FromSsize_t(n)) == NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+    arg = PyLong_FromSsize_t(n);
+#elif PY_VERSION_HEX &gt;= 0x02050000
+    arg = PyInt_FromSsize_t(n);
 #else
-    if ((arg = PyInt_FromLong(n)) == NULL)
+    arg = PyInt_FromLong(n);
 #endif
+
+    if (arg == NULL)
         return NULL;
 
     f = (PyObject *(*)(PyObject *,PyObject *))findSlot(self,getitem_slot);
@@ -7071,7 +7488,7 @@ static PyObject *slot_richcompare(PyObject *self,PyObject *arg,int op)
  */
 static PyObject *sipSimpleWrapper_getattro(PyObject *self, PyObject *name)
 {
-    if (add_all_lazy_attrs((sipClassTypeDef *)((sipWrapperType *)self-&gt;ob_type)-&gt;type) &lt; 0)
+    if (add_all_lazy_attrs((sipClassTypeDef *)((sipWrapperType *)Py_TYPE(self))-&gt;type) &lt; 0)
         return NULL;
 
     return PyObject_GenericGetAttr(self, name);
@@ -7084,7 +7501,7 @@ static PyObject *sipSimpleWrapper_getattro(PyObject *self, PyObject *name)
 static int sipSimpleWrapper_setattro(PyObject *self, PyObject *name,
         PyObject *value)
 {
-    if (add_all_lazy_attrs((sipClassTypeDef *)((sipWrapperType *)self-&gt;ob_type)-&gt;type) &lt; 0)
+    if (add_all_lazy_attrs((sipClassTypeDef *)((sipWrapperType *)Py_TYPE(self))-&gt;type) &lt; 0)
         return -1;
 
     return PyObject_GenericSetAttr(self, name, value);
@@ -7125,7 +7542,7 @@ static int sipSimpleWrapper_set_dict(PyObject *self, PyObject *value,
     {
         PyErr_Format(PyExc_TypeError,
                 &quot;__dict__ must be set to a dictionary, not a '%s'&quot;,
-                value-&gt;ob_type-&gt;tp_name);
+                Py_TYPE(value)-&gt;tp_name);
         return -1;
     }
 
@@ -7159,8 +7576,7 @@ sipWrapperType sipSimpleWrapper_Type = {
     {
 #endif
         {
-            PyObject_HEAD_INIT(&amp;sipWrapperType_Type)
-            0,              /* ob_size */
+            PyVarObject_HEAD_INIT(&amp;sipWrapperType_Type, 0)
             &quot;sip.simplewrapper&quot;,    /* tp_name */
             sizeof (sipSimpleWrapper),  /* tp_basicsize */
             0,              /* tp_itemsize */
@@ -7168,7 +7584,7 @@ sipWrapperType sipSimpleWrapper_Type = {
             0,              /* tp_print */
             0,              /* tp_getattr */
             0,              /* tp_setattr */
-            0,              /* tp_compare */
+            0,              /* tp_reserved (Python v3), tp_compare (Python v2) */
             0,              /* tp_repr */
             0,              /* tp_as_number */
             0,              /* tp_as_sequence */
@@ -7337,8 +7753,7 @@ static sipWrapperType sipWrapper_Type = {
     {
 #endif
         {
-            PyObject_HEAD_INIT(&amp;sipWrapperType_Type)
-            0,              /* ob_size */
+            PyVarObject_HEAD_INIT(&amp;sipWrapperType_Type, 0)
             &quot;sip.wrapper&quot;,  /* tp_name */
             sizeof (sipWrapper),    /* tp_basicsize */
             0,              /* tp_itemsize */
@@ -7346,7 +7761,7 @@ static sipWrapperType sipWrapper_Type = {
             0,              /* tp_print */
             0,              /* tp_getattr */
             0,              /* tp_setattr */
-            0,              /* tp_compare */
+            0,              /* tp_reserved (Python v3), tp_compare (Python v2) */
             0,              /* tp_repr */
             0,              /* tp_as_number */
             0,              /* tp_as_sequence */
@@ -7392,6 +7807,13 @@ static sipWrapperType sipWrapper_Type = {
 static void addClassSlots(sipWrapperType *wt, sipClassTypeDef *ctd)
 {
     /* Add the buffer interface. */
+#if PY_MAJOR_VERSION &gt;= 3
+    if (ctd-&gt;ctd_getbuffer != NULL)
+        wt-&gt;super.as_buffer.bf_getbuffer = (getbufferproc)sipSimpleWrapper_getbuffer;
+
+    if (ctd-&gt;ctd_releasebuffer != NULL)
+        wt-&gt;super.as_buffer.bf_releasebuffer = (releasebufferproc)sipSimpleWrapper_releasebuffer;
+#else
     if (ctd-&gt;ctd_readbuffer != NULL)
 #if PY_VERSION_HEX &gt;= 0x02050000
         wt-&gt;super.as_buffer.bf_getreadbuffer = (readbufferproc)sipSimpleWrapper_getreadbuffer;
@@ -7419,6 +7841,7 @@ static void addClassSlots(sipWrapperType *wt, sipClassTypeDef *ctd)
 #else
         wt-&gt;super.as_buffer.bf_getcharbuffer = (getcharbufferproc)sipSimpleWrapper_getcharbuffer;
 #endif
+#endif
 
     /* Add the slots for this type. */
     if (ctd-&gt;ctd_pyslots != NULL)
@@ -7448,10 +7871,12 @@ static void addTypeSlots(PyTypeObject *to, PyNumberMethods *nb,
                 nb-&gt;nb_int = (unaryfunc)f;
             break;
 
+#if PY_MAJOR_VERSION &lt; 3
         case long_slot:
             if (nb != NULL)
                 nb-&gt;nb_long = (unaryfunc)f;
             break;
+#endif
 
         case float_slot:
             if (nb != NULL)
@@ -7510,7 +7935,9 @@ static void addTypeSlots(PyTypeObject *to, PyNumberMethods *nb,
         case div_slot:
             if (nb != NULL)
             {
+#if PY_MAJOR_VERSION &lt; 3
                 nb-&gt;nb_divide = (binaryfunc)f;
+#endif
                 nb-&gt;nb_true_divide = (binaryfunc)f;
             }
             break;
@@ -7577,7 +8004,9 @@ static void addTypeSlots(PyTypeObject *to, PyNumberMethods *nb,
         case idiv_slot:
             if (nb != NULL)
             {
+#if PY_MAJOR_VERSION &lt; 3
                 nb-&gt;nb_inplace_divide = (binaryfunc)f;
+#endif
                 nb-&gt;nb_inplace_true_divide = (binaryfunc)f;
             }
             break;
@@ -7645,13 +8074,19 @@ static void addTypeSlots(PyTypeObject *to, PyNumberMethods *nb,
             to-&gt;tp_richcompare = slot_richcompare;
             break;
 
+#if PY_MAJOR_VERSION &lt; 3
         case cmp_slot:
             to-&gt;tp_compare = (cmpfunc)f;
             break;
+#endif
 
         case nonzero_slot:
             if (nb != NULL)
+#if PY_MAJOR_VERSION &gt;= 3
+                nb-&gt;nb_bool = (inquiry)f;
+#else
                 nb-&gt;nb_nonzero = (inquiry)f;
+#endif
             break;
 
         case neg_slot:
@@ -7884,11 +8319,19 @@ static int parseCharArray(PyObject *obj, const char **ap, SIP_SSIZE_T *aszp)
         *ap = NULL;
         *aszp = 0;
     }
+#if PY_MAJOR_VERSION &gt;= 3
+    else if (PyBytes_Check(obj))
+    {
+        *ap = PyBytes_AS_STRING(obj);
+        *aszp = PyBytes_GET_SIZE(obj);
+    }
+#else
     else if (PyString_Check(obj))
     {
         *ap = PyString_AS_STRING(obj);
         *aszp = PyString_GET_SIZE(obj);
     }
+#endif
     else if (PyObject_AsCharBuffer(obj, ap, aszp) &lt; 0)
         return -1;
 
@@ -7904,11 +8347,19 @@ static int parseChar(PyObject *obj, char *ap)
     const char *chp;
     SIP_SSIZE_T sz;
 
+#if PY_MAJOR_VERSION &gt;= 3
+    if (PyBytes_Check(obj))
+    {
+        chp = PyBytes_AS_STRING(obj);
+        sz = PyBytes_GET_SIZE(obj);
+    }
+#else
     if (PyString_Check(obj))
     {
         chp = PyString_AS_STRING(obj);
         sz = PyString_GET_SIZE(obj);
     }
+#endif
     else if (PyObject_AsCharBuffer(obj, &amp;chp, &amp;sz) &lt; 0)
         return -1;
 </diff>
      <filename>siplib/siplib.c</filename>
    </modified>
    <modified>
      <diff>@@ -1255,32 +1255,23 @@ class PythonModuleMakefile(Makefile):
         &quot;&quot;&quot;
         Makefile.generate_target_install(self, mfile)
 
-        os.path.walk(self._moddir, self._visit, mfile)
-
-    def _visit(self, mfile, dirname, names):
-        &quot;&quot;&quot;Install the files from a particular directory.
-
-        mfile is the file object.
-        dirname is the sub-directory.
-        names is the list of files to install from the sub-directory.
-        &quot;&quot;&quot;
-        tail = dirname[len(self._moddir):]
+        for root, dirs, files in os.walk(self._moddir):
+            # Do not recurse into certain directories.
+            for skip in (&quot;.svn&quot;, &quot;CVS&quot;):
+                if skip in dirs:
+                    dirs.remove(skip)
 
-        flist = []
-        for f in list(names):
-            # Ignore certain files.
-            if f in (&quot;Makefile&quot;, ):
-                continue
+            tail = root[len(self._moddir):]
+            flist = []
 
-            # Do not recurse into certain directories.
-            if f in (&quot;.svn&quot;, &quot;CVS&quot;):
-                names.remove(f)
-                continue
+            for f in files:
+                if f == &quot;Makefile&quot;:
+                    continue
 
-            if os.path.isfile(os.path.join(dirname, f)):
-                flist.append(os.path.join(self._srcdir + tail, f))
+                if os.path.isfile(os.path.join(root, f)):
+                    flist.append(os.path.join(self._srcdir + tail, f))
 
-        self.install_file(mfile, flist, self._dstdir + tail)
+            self.install_file(mfile, flist, self._dstdir + tail)
 
 
 class ModuleMakefile(Makefile):
@@ -1324,6 +1315,12 @@ class ModuleMakefile(Makefile):
         # Save the target name for later.
         self._target = self._build[&quot;target&quot;]
 
+        # The name of the module entry point is Python version specific.
+        if self.config.py_version &gt;= 0x030000:
+            self._entry_point = &quot;PyInit_%s&quot; % self._target
+        else:
+            self._entry_point = &quot;init%s&quot; % self._target
+
         if sys.platform != &quot;win32&quot; and static:
             self._target = &quot;lib&quot; + self._target
 
@@ -1418,10 +1415,10 @@ class ModuleMakefile(Makefile):
                         else:
                             self.LFLAGS.extend(['-z' 'noversion', '-M', '%s.exp' % self._target])
                     elif sys.platform[:5] == 'hp-ux':
-                        self.LFLAGS.extend(['-Wl,+e,init%s' % self._target])
+                        self.LFLAGS.extend(['-Wl,+e,%s' % self._entry_point])
                     elif sys.platform[:5] == 'irix' and self.required_string('LINK') != 'g++':
                         # Doesn't work when g++ is used for linking on IRIX.
-                        self.LFLAGS.extend(['-Wl,-exported_symbol,init%s' % self._target])
+                        self.LFLAGS.extend(['-Wl,-exported_symbol,%s' % self._entry_point])
 
                 # Force the shared linker if there is one.
                 link_shlib = self.optional_list(&quot;LINK_SHLIB&quot;)
@@ -1490,6 +1487,18 @@ class ModuleMakefile(Makefile):
 
         mfile is the file object.
         &quot;&quot;&quot;
+        # Do these first so that it's safe for a sub-class to append additional
+        # commands to the real target, but make sure the default is correct.
+        mfile.write(&quot;\nall: $(TARGET)\n&quot;)
+        mfile.write(&quot;\n$(OFILES): $(HFILES)\n&quot;)
+
+        for mf in self._build[&quot;moc_headers&quot;].split():
+            root, discard = os.path.splitext(mf)
+            cpp = &quot;moc_&quot; + root + &quot;.cpp&quot;
+
+            mfile.write(&quot;\n%s: %s\n&quot; % (cpp, mf))
+            mfile.write(&quot;\t$(MOC) -o %s %s\n&quot; % (cpp, mf))
+
         mfile.write(&quot;\n$(TARGET): $(OFILES)\n&quot;)
 
         if self.generator in (&quot;MSVC&quot;, &quot;MSVC.NET&quot;):
@@ -1530,7 +1539,7 @@ class ModuleMakefile(Makefile):
                     error(&quot;Unable to create \&quot;%s\&quot;&quot; % defname)
 
                 dfile.write(&quot;EXPORTS\n&quot;)
-                dfile.write(&quot;init%s=_init%s\n&quot; % (self._target, self._target))
+                dfile.write(&quot;%s=_%s\n&quot; % (self._entry_point, self._entry_point))
 
                 dfile.close()
 
@@ -1545,24 +1554,15 @@ class ModuleMakefile(Makefile):
                 if self._limit_exports:
                     # Create an export file for AIX, Linux and Solaris.
                     if sys.platform[:5] == 'linux':
-                        mfile.write(&quot;\t@echo '{ global: init%s; local: *; };' &gt; %s.exp\n&quot; % (self._target, self._target))
+                        mfile.write(&quot;\t@echo '{ global: %s; local: *; };' &gt; %s.exp\n&quot; % (self._entry_point, self._target))
                     elif sys.platform[:5] == 'sunos':
-                        mfile.write(&quot;\t@echo '{ global: init%s; local: *; };' &gt; %s.exp\n&quot; % (self._target, self._target))
+                        mfile.write(&quot;\t@echo '{ global: %s; local: *; };' &gt; %s.exp\n&quot; % (self._entry_point, self._target))
                     elif sys.platform[:3] == 'aix':
                         mfile.write(&quot;\t@echo '#!' &gt;%s.exp&quot; % self._target)
-                        mfile.write(&quot;; \\\n\t echo 'init%s' &gt;&gt;%s.exp\n&quot; % (self._target, self._target))
+                        mfile.write(&quot;; \\\n\t echo '%s' &gt;&gt;%s.exp\n&quot; % (self._entry_point, self._target))
 
                 mfile.write(&quot;\t$(LINK) $(LFLAGS) -o $(TARGET) $(OFILES) $(LIBS)\n&quot;)
 
-        mfile.write(&quot;\n$(OFILES): $(HFILES)\n&quot;)
-
-        for mf in self._build[&quot;moc_headers&quot;].split():
-            root, discard = os.path.splitext(mf)
-            cpp = &quot;moc_&quot; + root + &quot;.cpp&quot;
-
-            mfile.write(&quot;\n%s: %s\n&quot; % (cpp, mf))
-            mfile.write(&quot;\t$(MOC) -o %s %s\n&quot; % (cpp, mf))
-
     def generate_target_install(self, mfile):
         &quot;&quot;&quot;Generate the install target.
 
@@ -1754,6 +1754,18 @@ class ProgramMakefile(Makefile):
 
         mfile is the file object.
         &quot;&quot;&quot;
+        # Do these first so that it's safe for a sub-class to append additional
+        # commands to the real target, but make sure the default is correct.
+        mfile.write(&quot;\nall: $(TARGET)\n&quot;)
+        mfile.write(&quot;\n$(OFILES): $(HFILES)\n&quot;)
+
+        for mf in self._build[&quot;moc_headers&quot;].split():
+            root, discard = os.path.splitext(mf)
+            cpp = &quot;moc_&quot; + root + &quot;.cpp&quot;
+
+            mfile.write(&quot;\n%s: %s\n&quot; % (cpp, mf))
+            mfile.write(&quot;\t$(MOC) -o %s %s\n&quot; % (cpp, mf))
+
         mfile.write(&quot;\n$(TARGET): $(OFILES)\n&quot;)
 
         if self.generator in (&quot;MSVC&quot;, &quot;MSVC.NET&quot;):
@@ -1770,15 +1782,6 @@ class ProgramMakefile(Makefile):
         if self._manifest:
             mfile.write(&quot;\tmt -nologo -manifest $(TARGET).manifest -outputresource:$(TARGET);1\n&quot;)
 
-        mfile.write(&quot;\n$(OFILES): $(HFILES)\n&quot;)
-
-        for mf in self._build[&quot;moc_headers&quot;].split():
-            root, discard = os.path.splitext(mf)
-            cpp = &quot;moc_&quot; + root + &quot;.cpp&quot;
-
-            mfile.write(&quot;\n%s: %s\n&quot; % (cpp, mf))
-            mfile.write(&quot;\t$(MOC) -o %s %s\n&quot; % (cpp, mf))
-
     def generate_target_install(self, mfile):
         &quot;&quot;&quot;Generate the install target.
 </diff>
      <filename>siputils.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ced1bd6b68e8507b66ff25755ad471caed7f500b</id>
    </parent>
  </parents>
  <author>
    <name>Kevin Watters</name>
    <email>kevinwatters@gmail.com</email>
  </author>
  <url>http://github.com/kevinw/sip/commit/49f680dc5e84a720b92faffdb36137935bc62737</url>
  <id>49f680dc5e84a720b92faffdb36137935bc62737</id>
  <committed-date>2009-03-18T14:39:47-07:00</committed-date>
  <authored-date>2009-03-18T14:39:47-07:00</authored-date>
  <message>sip-4.8-snapshot-20090317</message>
  <tree>51d1b4216f8f0e48b8261ba8abea9ae2bbd78722</tree>
  <committer>
    <name>Kevin Watters</name>
    <email>kevinwatters@gmail.com</email>
  </committer>
</commit>
