summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools
diff options
context:
space:
mode:
authorPhilip Balister <philip@balister.org>2018-09-24 20:39:41 -0400
committerKhem Raj <raj.khem@gmail.com>2018-09-24 18:10:43 -0700
commitb82388509c68df69cc0e0199774be6a51641df01 (patch)
treef977a225c12fa14042d4fa18236b92692e6ba56b /meta-oe/recipes-devtools
parent7b427e1187b3ab3ac354a8eea969b2c91a99f0fb (diff)
downloadmeta-openembedded-b82388509c68df69cc0e0199774be6a51641df01.tar.gz
sip: Fix packaging so python module ends up in the right place.
* The patch is generated by diffing the last release with the sip Hg repo tip. Also have to run the build script to update configure.py. Signed-off-by: Philip Balister <philip@balister.org>
Diffstat (limited to 'meta-oe/recipes-devtools')
-rw-r--r--meta-oe/recipes-devtools/sip/files/sip.patch31325
1 files changed, 31320 insertions, 5 deletions
diff --git a/meta-oe/recipes-devtools/sip/files/sip.patch b/meta-oe/recipes-devtools/sip/files/sip.patch
index 78100fc4b..c126beee7 100644
--- a/meta-oe/recipes-devtools/sip/files/sip.patch
+++ b/meta-oe/recipes-devtools/sip/files/sip.patch
@@ -1,16 +1,31331 @@
1diff -Nurd ./sip-4.19.12.orig/configure.py sip-4.19.12/configure.py 1diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/build.py sip/build.py
2--- ./sip-4.19.12.orig/build.py 1969-12-31 19:00:00.000000000 -0500
3+++ sip/build.py 2018-09-18 17:52:23.269544132 -0400
4@@ -0,0 +1,131 @@
5+#!/usr/bin/python
6+
7+# Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
8+#
9+# This file is part of SIP.
10+#
11+# This copy of SIP is licensed for use under the terms of the SIP License
12+# Agreement. See the file LICENSE for more details.
13+#
14+# This copy of SIP may also used under the terms of the GNU General Public
15+# License v2 or v3 as published by the Free Software Foundation which can be
16+# found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
17+#
18+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
19+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20+
21+
22+"""This script prepares a repository copy of SIP for building. It should be
23+run from a Mercurial repository. It is not part of a packaged release.
24+"""
25+
26+
27+import os
28+import sys
29+
30+
31+# Dummy version numbers.
32+RM_HEXVERSION = '04ffff'
33+RM_RELEASE = '4.255.255'
34+
35+
36+def _progress(message, quiet):
37+ """ Show a progress message to the user. """
38+
39+ if not quiet:
40+ sys.stdout.write(message)
41+ sys.stdout.write("\n")
42+
43+
44+def _patch(name, quiet):
45+ """ Patch a file with version information. """
46+
47+ _progress("Creating %s" % name, quiet)
48+
49+ patched_f = open(name + '.in')
50+ patched = patched_f.read()
51+ patched_f.close()
52+
53+ patched = patched.replace('@RM_HEXVERSION@', RM_HEXVERSION)
54+ patched = patched.replace('@RM_RELEASE@', RM_RELEASE)
55+
56+ patched_f = open(name, 'w')
57+ patched_f.write(patched)
58+ patched_f.close()
59+
60+
61+def prepare(quiet):
62+ """ Prepare for configuration and building by creating all the required
63+ additional files.
64+ """
65+
66+ sipgen = 'sipgen'
67+ metasrc = os.path.join(sipgen, 'metasrc')
68+
69+ lexer_l = os.path.join(metasrc, 'lexer.l')
70+ lexer_c = os.path.join(sipgen, 'lexer.c')
71+ _progress("Running flex to create %s" % lexer_c, quiet)
72+ os.system('flex -o%s %s' % (lexer_c, lexer_l))
73+
74+ parser_y = os.path.join(metasrc, 'parser.y')
75+ parser_c = os.path.join(sipgen, 'parser.c')
76+ _progress("Running bison to create %s" % parser_c, quiet)
77+ os.system('bison -y -d -o %s %s' % (parser_c, parser_y))
78+
79+ _patch(os.path.join('sipgen', 'sip.h'), quiet)
80+ _patch(os.path.join('siplib', 'sip.h'), quiet)
81+ _patch('configure.py', quiet)
82+
83+
84+if __name__ == '__main__':
85+
86+ def _prepare(options):
87+ """prepare for configuration and building"""
88+
89+ prepare(options.quiet)
90+
91+
92+ actions = (_prepare, )
93+
94+ import optparse
95+
96+ class MyParser(optparse.OptionParser):
97+
98+ def get_usage(self):
99+ """ Reimplemented to add the description of the actions. We don't
100+ use the description because the default formatter strips newlines.
101+ """
102+
103+ usage = optparse.OptionParser.get_usage(self)
104+
105+ usage += "\n" + __doc__ + "\nActions:\n"
106+
107+ for action in actions:
108+ usage += " %-9s %s\n" % (action.__name__[1:], action.__doc__)
109+
110+ return usage
111+
112+
113+ action_names = [action.__name__[1:] for action in actions]
114+
115+ parser = MyParser(
116+ usage="%%prog [options] %s" % '|'.join(action_names))
117+
118+ parser.add_option("-q", "--quiet", action='store_true', default=False,
119+ dest='quiet', help="suppress progress messages")
120+
121+ options, args = parser.parse_args()
122+
123+ if len(args) != 1:
124+ parser.print_help()
125+ sys.exit(1)
126+
127+ for action in actions:
128+ if action.__name__[1:] == args[0]:
129+ action(options)
130+ break
131+ else:
132+ parser.print_help()
133+ sys.exit(1)
134+
135+ sys.exit()
136diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/ChangeLog sip/ChangeLog
137--- ./sip-4.19.12.orig/ChangeLog 2018-07-05 05:55:19.000000000 -0400
138+++ sip/ChangeLog 1969-12-31 19:00:00.000000000 -0500
139@@ -1,9785 +0,0 @@
140-2018-07-05 Phil Thompson <phil@riverbankcomputing.com>
141-
142- * NEWS:
143- Released as v4.19.12.
144- [290a78d4a00d] [4.19.12] <4.19-maint>
145-
146- * sphinx/installation.rst, sphinx/using.rst:
147- Updated the docs regarding private copies of the sip module.
148- [e30b9d2668c4] <4.19-maint>
149-
150- * NEWS, configure.py.in, sphinx/installation.rst:
151- Added the --no-module option to configure.py.
152- [02ab8cfda064] <4.19-maint>
153-
154- * configure.py.in:
155- The --no-tools option does not install the sip.h. Fixed .dist-info
156- for the code generator when --no-tools is specified.
157- [b3633241320b] <4.19-maint>
158-
159-2018-07-04 Phil Thompson <phil@riverbankcomputing.com>
160-
161- * NEWS:
162- Updated the NEWS file.
163- [f4799b368aa1] <4.19-maint>
164-
165- * sipgen/main.c:
166- Fixed the default sip module name.
167- [30b34699ad64] <4.19-maint>
168-
169- * sipgen/gencode.c, siplib/array.c, siplib/sip.h.in, siplib/sipint.h,
170- siplib/siplib.c, siplib/voidptr.c:
171- Fixed the implementation of sipConvertFromSliceObject() so that
172- generated modules still support the limited API.
173- [5baed8e71fdb] <4.19-maint>
174-
175- * configure.py.in:
176- Include the build system for all builds (not just legacy ones).
177- [5443d32d2928] <4.19-maint>
178-
179- * configure.py.in:
180- The mk_distinfo.py script now takes a temporary installation
181- directory as an additional argument.
182- [048f7a6100c8] <4.19-maint>
183-
184- * configure.py.in:
185- Fixes for invoking mk_distinfo.py for out-of-tree builds.
186- [ded7362cc94a] <4.19-maint>
187-
188- * siplib/siplib.c:
189- Fixed a bug exposing traditional enum members in a class that also
190- contains a C++11 scoped enum.
191- [ccc4eda868de] <4.19-maint>
192-
193-2018-07-03 Phil Thompson <phil@riverbankcomputing.com>
194-
195- * configure.py.in:
196- Fix for installing sip.h with out-of-tree builds.
197- [935f8cdab1b7] <4.19-maint>
198-
199-2018-06-29 Phil Thompson <phil@riverbankcomputing.com>
200-
201- * .hgtags:
202- Added tag 4.19.11 for changeset a7d0f8459788
203- [77add4c87760] <4.19-maint>
204-
205- * NEWS:
206- Released as v4.19.11.
207- [a7d0f8459788] [4.19.11] <4.19-maint>
208-
209- * NEWS:
210- Updated the NEWS file.
211- [373c872333a4] <4.19-maint>
212-
213- * sphinx/using.rst:
214- Documented the need for the enum34 package for versions of Python
215- earlier than v3.4.
216- [379da5a152c4] <4.19-maint>
217-
218-2018-06-28 Phil Thompson <phil@riverbankcomputing.com>
219-
220- * siplib/siplib.c:
221- Fixed the exception when a keyword argument overflows.
222- [659e30e2c490] <4.19-maint>
223-
224- * siplib/siplib.c:
225- Fixed a couple of Python v2 exception messages.
226- [8b2f14850fcd] <4.19-maint>
227-
228- * siplib/siplib.c:
229- Fixed a compilation issue with Python v2.
230- [fea0057d2c29] <4.19-maint>
231-
232-2018-06-26 Phil Thompson <phil@riverbankcomputing.com>
233-
234- * sipgen/gencode.c:
235- Handle const signal arguments (that are not pointers or references).
236- [a7a3d5f49c09] <4.19-maint>
237-
238-2018-06-25 Phil Thompson <phil@riverbankcomputing.com>
239-
240- * NEWS, sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
241- sphinx/annotations.rst:
242- Added the /ScopesStripped/ argument annotation.
243- [ab62eae89111] <4.19-maint>
244-
245-2018-06-24 Phil Thompson <phil@riverbankcomputing.com>
246-
247- * configure.py.in:
248- The .dist-info directory now takes account of $(DESTDIR).
249- [d6a17b9e8f21] <4.19-maint>
250-
251- * configure.py.in:
252- Fixed out-of-tree builds.
253- [81516a4441db] <4.19-maint>
254-
255- * sipgen/gencode.c:
256- Further fixes for the stripping of scopes from signal arguments.
257- [44dd1db98cf7] <4.19-maint>
258-
259-2018-06-23 Phil Thompson <phil@riverbankcomputing.com>
260-
261- * .hgtags:
262- Added tag 4.19.10 for changeset abf14ded1760
263- [8597a94e4d25] <4.19-maint>
264-
265- * NEWS:
266- Released as v4.19.10.
267- [abf14ded1760] [4.19.10] <4.19-maint>
268-
269- * sipgen/gencode.c:
270- Fixed the stripping of scopes from signal arguments.
271- [ce55e3219bc5] <4.19-maint>
272-
273-2018-06-22 Phil Thompson <phil@riverbankcomputing.com>
274-
275- * .hgtags:
276- Added tag 4.19.9 for changeset 21bc9fb06802
277- [8331b47585f6] <4.19-maint>
278-
279- * NEWS:
280- Released as 4.19.9.
281- [21bc9fb06802] [4.19.9] <4.19-maint>
282-
283- * build.py, configure.py.in:
284- Fixes for building in situ.
285- [500aa97cf889] <4.19-maint>
286-
287-2018-06-21 Phil Thompson <phil@riverbankcomputing.com>
288-
289- * NEWS:
290- Updated the NEWS file.
291- [0339dce88c21] <4.19-maint>
292-
293-2018-06-19 Phil Thompson <phil@riverbankcomputing.com>
294-
295- * METADATA.in:
296- Updated the METADATA.in file to account for the private copy for
297- PyQt5.
298- [970b0223221f] <4.19-maint>
299-
300-2018-06-17 Phil Thompson <phil@riverbankcomputing.com>
301-
302- * NEWS, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h.in,
303- siplib/sip.h.in, siplib/siplib.c:
304- The sip.h file no longer needs to be configured by the compiler
305- invocation for the sip module name. Added the -n option to the code
306- generator to configure the sip module name.
307- [d2b3b20484bd] <4.19-maint>
308-
309- * sphinx/command_line.rst, sphinx/installation.rst,
310- sphinx/introduction.rst.in, sphinx/python_api.rst, sphinx/using.rst:
311- Updated the docs regarding private copies of the sip module.
312- [76e24a5bc0c3] <4.19-maint>
313-
314- * sphinx/build_system.rst, sphinx/directives.rst,
315- sphinx/installation.rst, sphinx/introduction.rst.in:
316- Fixed all external links in the documentation.
317- [31a654cb4d5a] <4.19-maint>
318-
319- * configure.py.in, siplib/sip.h.in, siplib/sip.h.in.in,
320- siplib/siplib.c, siplib/siplib.c.in, siplib/siplib.sbf,
321- siplib/siplib.sbf.in:
322- Fixed issues when using the --sip-module option to build the sip
323- module.
324- [fc3023a254ce] <4.19-maint>
325-
326-2018-06-12 Phil Thompson <phil@riverbankcomputing.com>
327-
328- * sipgen/gencode.c:
329- More fixes for the /Transfer/ function annotation when applied to
330- static methods.
331- [69938bd3654c] <4.19-maint>
332-
333- * sipgen/gencode.c:
334- Fixed the implemenation of the /Transfer/ method annotation for
335- static methods.
336- [e61b036cb050] <4.19-maint>
337-
338-2018-06-11 Phil Thompson <phil@riverbankcomputing.com>
339-
340- * sphinx/c_api.rst:
341- Clarified the docs for sipSetUserObject().
342- [8077330e3c1b] <4.19-maint>
343-
344-2018-06-10 Phil Thompson <phil@riverbankcomputing.com>
345-
346- * siplib/siplib.c.in:
347- Refactored the new enum visibility support so that normal attribute
348- lookup in an enum works again (specifically for pickling).
349- [6d59f2a57159] <4.19-maint>
350-
351- * NEWS, siplib/siplib.c.in, sphinx/using.rst:
352- The members of traditional C/C++ enums are now visible within the
353- scope of the enum.
354- [79b93109033f] <4.19-maint>
355-
356-2018-06-04 Phil Thompson <phil@riverbankcomputing.com>
357-
358- * mk_distinfo.py:
359- Removed the mk_distinfo.py script as it is now added during
360- preparation.
361- [b8400f2e1b7b] <4.19-maint>
362-
363- * mk_distinfo.py:
364- Updated the copy of mk_distinfo.py.
365- [3dd68ef638eb] <4.19-maint>
366-
367-2018-06-03 Phil Thompson <phil@riverbankcomputing.com>
368-
369- * mk_distinfo.py:
370- Fixed a typo.
371- [e687d71b4cc9] <4.19-maint>
372-
373-2018-05-29 Phil Thompson <phil@riverbankcomputing.com>
374-
375- * siplib/siplib.c.in:
376- Fixed building for Python versions prior to v3.3.
377- [91088a13f975] <4.19-maint>
378-
379- * configure.py.in:
380- Fixes for the .dist-info support on Windows.
381- [4773b53d98f0] <4.19-maint>
382-
383- * configure.py.in:
384- Handle spaces in path names when building with qmake.
385- [1757ff19b578] <4.19-maint>
386-
387-2018-05-26 Phil Thompson <phil@riverbankcomputing.com>
388-
389- * NEWS, configure.py.in, mk_distinfo.py, siputils.py,
390- sphinx/build_system.rst, sphinx/installation.rst:
391- A PEP 376 .dist-info directory will be created on installation. The
392- --no-dist-info option was added to configure.py.
393- [4dea64c9e1a8] <4.19-maint>
394-
395-2018-05-25 Phil Thompson <phil@riverbankcomputing.com>
396-
397- * siplib/siplib.c.in:
398- Fixed __qualname__ for generated types.
399- [7cf6d49bb422] <4.19-maint>
400-
401-2018-05-16 Phil Thompson <phil@riverbankcomputing.com>
402-
403- * configure.py.in:
404- Fixed the sip module's .pro file when building with qmake.
405- [43635cc7012b] <4.19-maint>
406-
407-2018-04-16 Phil Thompson <phil@riverbankcomputing.com>
408-
409- * METADATA.in:
410- Fixed a link in the PyPI documentation.
411- [e343bf878ebc] <4.19-maint>
412-
413- * Roadmap.rst:
414- Updated the roadmap so that it will age more gracefully.
415- [1f3cbd657f14] <4.19-maint>
416-
417-2018-04-15 Phil Thompson <phil@riverbankcomputing.com>
418-
419- * sphinx/riverbank/static/riverbank.css:
420- More CSS fixes.
421- [e413581ca661] <4.19-maint>
422-
423-2018-04-05 Phil Thompson <phil@riverbankcomputing.com>
424-
425- * sphinx/riverbank/static/riverbank.css:
426- Fixed the CSS for links in headers.
427- [f125f51ceffb] <4.19-maint>
428-
429-2018-03-27 Phil Thompson <phil@riverbankcomputing.com>
430-
431- * siplib/siplib.c.in:
432- Removed all calls to the deprecated buffer protocol.
433- [d9c9937f820a] <4.19-maint>
434-
435- * siplib/siplib.c.in:
436- Fixed the calling of handwritten garbage collection code for classes
437- that do not directly sub-class the class that is providing the code.
438- [f968cccc9b77] <4.19-maint>
439-
440- * sipgen/gencode.c:
441- Signal signatures now have a full version appended if a namespace
442- has been stripped.
443- [7683ca65278f] <4.19-maint>
444-
445-2018-03-17 Phil Thompson <phil@riverbankcomputing.com>
446-
447- * sipgen/gencode.c:
448- Signal docstrings can now automatically include the signature.
449- [34a94ca0260d] <4.19-maint>
450-
451-2018-03-02 Phil Thompson <phil@riverbankcomputing.com>
452-
453- * siplib/sip.h.in.in:
454- Implemented sipConvertFromSliceObject() for Python v3.7 to avoid
455- using the deprecated PySlize_GetIndicesEx().
456- [ae83f4e7993f] <4.19-maint>
457-
458-2018-02-26 Phil Thompson <phil@riverbankcomputing.com>
459-
460- * .hgtags:
461- Added tag 4.19.8 for changeset 09748626765f
462- [6462a294376f] <4.19-maint>
463-
464- * NEWS:
465- Released as v4.19.8.
466- [09748626765f] [4.19.8] <4.19-maint>
467-
468-2018-02-03 Phil Thompson <phil@riverbankcomputing.com>
469-
470- * README:
471- Fixed the README.
472- [f07d0788eef0] <4.19-maint>
473-
474-2018-01-29 Phil Thompson <phil@riverbankcomputing.com>
475-
476- * sphinx/c_api.rst:
477- Make sure the C API is documented in alphabetical order.
478- [e930a3c90dc0] <4.19-maint>
479-
480- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
481- Make sure that the pointer to the Python object held by the C++
482- instance of the generated derived type is reset by the derived
483- type's dtor. Also make sure it is tested and reset while the GIL is
484- held in order to avoid race conditions.
485- [71bfa703c4ee] <4.19-maint>
486-
487-2018-01-23 Phil Thompson <phil@riverbankcomputing.com>
488-
489- * .hgtags:
490- Added tag 4.19.7 for changeset 7e9dbd15c866
491- [9a8622f989f9] <4.19-maint>
492-
493- * NEWS:
494- Released as v4.19.7.
495- [7e9dbd15c866] [4.19.7] <4.19-maint>
496-
497- * NEWS:
498- Updated the NEWS file.
499- [3d0a9ebb536c] <4.19-maint>
500-
501-2018-01-22 Phil Thompson <phil@riverbankcomputing.com>
502-
503- * siplib/siplib.c.in:
504- A significant update to a comment.
505- [f947546822c3] <4.19-maint>
506-
507-2018-01-16 Phil Thompson <phil@riverbankcomputing.com>
508-
509- * sipgen/metasrc/lexer.l:
510- Fixed the failed attempt to fix %Docstring argument parsing.
511- [6054b3268f6f] <4.19-maint>
512-
513-2018-01-15 Phil Thompson <phil@riverbankcomputing.com>
514-
515- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
516- sphinx/directives.rst:
517- In the context of a class's docstring the signature argument refers
518- to the concatanated ctor docstrings.
519- [34ddf9638287] <4.19-maint>
520-
521- * sipgen/metasrc/parser.y, sphinx/directives.rst:
522- Typedefs can now have docstrings. These are only used by those that
523- instantiate class templates.
524- [327ad560d853] <4.19-maint>
525-
526-2018-01-14 Phil Thompson <phil@riverbankcomputing.com>
527-
528- * sipgen/gencode.c:
529- Fixed the generated of a default value that is a global unscoped
530- enum.
531- [8f9c478295d3] <4.19-maint>
532-
533-2018-01-09 Phil Thompson <phil@riverbankcomputing.com>
534-
535- * sipgen/gencode.c:
536- Fixed a missing quote in the docstring support.
537- [e37301b91a57] <4.19-maint>
538-
539-2018-01-07 Phil Thompson <phil@riverbankcomputing.com>
540-
541- * sipgen/gencode.c:
542- Fixed the handling of signal docstrings.
543- [5d4d28286e02] <4.19-maint>
544-
545- * sipgen/gencode.c:
546- Fixed the docstring handling for private ctors and method.
547- [8186b65687f1] <4.19-maint>
548-
549- * sipgen/gencode.c:
550- Fixed the formats of class docstrings.
551- [3af2dab08ed3] <4.19-maint>
552-
553- * sipgen/gencode.c:
554- Fixed the formatting of function/method docstrings.
555- [8e1829fdaf04] <4.19-maint>
556-
557-2018-01-06 Phil Thompson <phil@riverbankcomputing.com>
558-
559- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
560- sipgen/sip.h.in, sphinx/directives.rst:
561- Initial commit to support embeded signatures in explicit docstrings.
562- [b3d42a546701] <4.19-maint>
563-
564-2018-01-05 Phil Thompson <phil@riverbankcomputing.com>
565-
566- * sphinx/conf.py.in, sphinx/riverbank/layout.html,
567- sphinx/riverbank/static/logo.png,
568- sphinx/riverbank/static/logo_tn.ico,
569- sphinx/riverbank/static/riverbank.css, sphinx/riverbank/theme.conf,
570- sphinx/static/classic.css, sphinx/static/logo.png,
571- sphinx/static/logo_tn.ico:
572- Switched to the revised Sphinx standards.
573- [b68eecb348b9] <4.19-maint>
574-
575-2017-12-30 Phil Thompson <phil@riverbankcomputing.com>
576-
577- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
578- Fixed the handling of wchar_t constants.
579- [c0436cb89959] <4.19-maint>
580-
581-2017-12-16 Phil Thompson <phil@riverbankcomputing.com>
582-
583- * configure.py.in:
584- Readability improvement.
585- [6a635db426ea] <4.19-maint>
586-
587- * configure.py.in:
588- Fixed the location to install the code generator in a Windows venv.
589- [d0f37d83df6f] <4.19-maint>
590-
591- * configure.py.in:
592- Fixed the location of the pythonMN.lib file on Windows when building
593- in a venv.
594- [a098e2be83c2] <4.19-maint>
595-
596-2017-11-23 Phil Thompson <phil@riverbankcomputing.com>
597-
598- * .hgtags:
599- Added tag 4.19.6 for changeset 3f131525d4d5
600- [3f3a98f6a67a] <4.19-maint>
601-
602- * NEWS:
603- Released as v4.19.6.
604- [3f131525d4d5] [4.19.6] <4.19-maint>
605-
606-2017-11-21 Phil Thompson <phil@riverbankcomputing.com>
607-
608- * sphinx/annotations.rst:
609- Updated the docs for /NewThread/.
610- [30c7476904af] <4.19-maint>
611-
612-2017-11-10 Phil Thompson <phil@riverbankcomputing.com>
613-
614- * sipgen/gencode.c:
615- Fixed the handling of the default value of unscoped enums when using
616- old compilers.
617- [dd017d3e1454] <4.19-maint>
618-
619-2017-11-06 Phil Thompson <phil@riverbankcomputing.com>
620-
621- * .hgtags:
622- Added tag 4.19.5 for changeset a572b9daf87f
623- [e0419013252c] <4.19-maint>
624-
625- * NEWS:
626- Released as v4.19.5.
627- [a572b9daf87f] [4.19.5] <4.19-maint>
628-
629- * siplib/sip.h.in.in, siplib/siplib.c.in:
630- Fixed a regression in the conversion of enums which meant that an
631- object with an __int__ method was accepted as a valid value.
632- [273b01861a11] <4.19-maint>
633-
634-2017-11-05 Phil Thompson <phil@riverbankcomputing.com>
635-
636- * test/int_convertors/mk.sh, test/int_convertors/run_test.py,
637- test/int_convertors/test.h, test/int_convertors/test.sip:
638- Added the test for an overloaded function where the argument of each
639- overload is a different named enum.
640- [cac9082bdbd8] <4.19-maint>
641-
642-2017-11-02 Phil Thompson <phil@riverbankcomputing.com>
643-
644- * configure.py.in:
645- Ensure that when building on macOS using qmake the sip module is a
646- bundle.
647- [f945942bc896] <4.19-maint>
648-
649-2017-11-01 Phil Thompson <phil@riverbankcomputing.com>
650-
651- * .hgtags:
652- Added tag 4.19.4 for changeset ed56fb689db8
653- [c56a33a3ef0c] <4.19-maint>
654-
655- * NEWS:
656- Released as v4.19.4.
657- [ed56fb689db8] [4.19.4] <4.19-maint>
658-
659-2017-10-09 Phil Thompson <phil@riverbankcomputing.com>
660-
661- * siplib/siplib.c.in:
662- Build fixes for Python v2.
663- [5b2adad49340] <4.19-maint>
664-
665-2017-09-18 Phil Thompson <phil@riverbankcomputing.com>
666-
667- * sipgen/gencode.c:
668- Fixed a regression that meant that namespaces were included in the
669- types of arguments to signals. Probably only affects
670- PyQtDataVisualization.
671- [5c94d14871a3] <4.19-maint>
672-
673-2017-09-05 Phil Thompson <phil@riverbankcomputing.com>
674-
675- * sipgen/gencode.c:
676- Appy a cast to const class pointers to static instances.
677- [3db4b02ea152] <4.19-maint>
678-
679- * sphinx/incompatibilities.rst, sphinx/using.rst:
680- Added a section on overflow checking to the documentation.
681- [39409c0a5282] <4.19-maint>
682-
683- * sipgen/gencode.c:
684- Make sure the default value of scoped enums is valid.
685- [5024429c9126] <4.19-maint>
686-
687-2017-09-04 Phil Thompson <phil@riverbankcomputing.com>
688-
689- * siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst,
690- test/int_convertors/run_test.py, test/int_convertors/test.h,
691- test/int_convertors/test.sip:
692- Deprecated sipCanConvertToEnum(). sipConvertToEnum() now has single-
693- pass behaviour like the integer convertors.
694- [2065bdd284cc] <4.19-maint>
695-
696-2017-09-02 Phil Thompson <phil@riverbankcomputing.com>
697-
698- * siplib/int_convertors.c, siplib/siplib.c.in:
699- Improved the exception text when a virtual should return an enum or
700- a bool.
701- [7636b12a0789] <4.19-maint>
702-
703- * test/int_convertors/run_test.py, test/int_convertors/test.h,
704- test/int_convertors/test.sip:
705- Added the tests for converting names enums.
706- [8b5be80fda82] <4.19-maint>
707-
708- * siplib/siplib.c.in:
709- Fixed a regression where sipBadCatcherResult() is called without an
710- exception.
711- [894b51685d51] <4.19-maint>
712-
713- * test/int_convertors/run_test.py:
714- Added the remaining bool tests.
715- [1afb586f55db] <4.19-maint>
716-
717- * sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
718- siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst,
719- test/int_convertors/run_test.py, test/int_convertors/test.h,
720- test/int_convertors/test.sip:
721- Added sipConvertToBool() to the public API. Implemented the tests
722- for invalid bool values.
723- [3e8faabe48a1] <4.19-maint>
724-
725- * test/int_convertors/run_test.py, test/int_convertors/test.h,
726- test/int_convertors/test.sip:
727- Added the tests for converting char.
728- [fb34c9009048] <4.19-maint>
729-
730- * test/int_convertors/run_test.py:
731- Completed the unit tests for unsigned values.
732- [cbb776ab54f9] <4.19-maint>
733-
734-2017-09-01 Phil Thompson <phil@riverbankcomputing.com>
735-
736- * test/int_convertors/run_test.py:
737- Added the tests for valid values of unsigned types.
738- [895e5218b2a2] <4.19-maint>
739-
740- * test/int_convertors/run_test.py, test/int_convertors/test.h,
741- test/int_convertors/test.sip:
742- Added tests for virtuals returning invalid values. Added the C++ and
743- wrappers for the unsigned types tests.
744- [b42f7afd33bc] <4.19-maint>
745-
746- * test/int_convertors/run_test.py:
747- Fixed the tests for long and long long to account for the legacy
748- behaviour of the convertors.
749- [06c124a19f3c] <4.19-maint>
750-
751- * test/int_convertors/run_test.py, test/int_convertors/test.h,
752- test/int_convertors/test.sip:
753- Implemented the unit tests for int, long and long long integer
754- conversions.
755- [55a8a713a6fc] <4.19-maint>
756-
757- * test/int_convertors/mk.sh, test/int_convertors/run_test.py,
758- test/int_convertors/test.h, test/int_convertors/test.sip:
759- Added the unit tests for signed char and short integer convertors.
760- [1109afd9d851] <4.19-maint>
761-
762- * siplib/siplib.c.in:
763- The type of the exception raised when a Python re-implementation of
764- a C++ virtual raises an exception is now the same as that original
765- exception and not fixed to be TypeError.
766- [61885f427681] <4.19-maint>
767-
768-2017-08-31 Phil Thompson <phil@riverbankcomputing.com>
769-
770- * sipgen/gencode.c, siplib/siplib.c.in:
771- Fixed a regression in the generation of slots code.
772- [9e09f205e404] <4.19-maint>
773-
774-2017-08-30 Phil Thompson <phil@riverbankcomputing.com>
775-
776- * sphinx/c_api.rst:
777- Backed out the documentation change for sipConvertToEnum().
778- [fec7c90f35a2] <4.19-maint>
779-
780- * sipgen/gencode.c, siplib/siplib.c.in, sphinx/c_api.rst:
781- Removed the last call to SIPLong_AsLong().
782- [b70f7ccc3069] <4.19-maint>
783-
784- * sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
785- siplib/sipint.h, siplib/siplib.c.in, siplib/siplib.sbf.in,
786- sphinx/c_api.rst:
787- Added sipLong_AsSignedChar() ot the public API. The generated
788- variable setters now use the new convertors.
789- [85bfd5c33ae0] <4.19-maint>
790-
791- * siplib/siplib.c.in:
792- Completed the sip module changes for overflow checking.
793- [c8029d4cc754] <4.19-maint>
794-
795-2017-08-23 Phil Thompson <phil@riverbankcomputing.com>
796-
797- * siplib/siplib.c.in:
798- Migration of more module code to the new convertors.
799- [b035786f41e8] <4.19-maint>
800-
801-2017-08-21 Phil Thompson <phil@riverbankcomputing.com>
802-
803- * siplib/array.c, siplib/voidptr.c:
804- The array and voidptr types now use the new convertors.
805- [037839910d09] <4.19-maint>
806-
807- * siplib/int_convertors.c:
808- Completed the implementation of the new integer convertors.
809- [cae1cf5dfa79] <4.19-maint>
810-
811-2017-08-20 Phil Thompson <phil@riverbankcomputing.com>
812-
813- * sipgen/gencode.c, siplib/int_convertors.c, siplib/sip.h.in.in,
814- siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst:
815- Implemented the int convertor stubs and documented them.
816- [3c4d82a590ac] <4.19-maint>
817-
818- * siplib/int_convertors.c, siplib/sipint.h, siplib/siplib.c.in:
819- Refactored the support for int convertors.
820- [2b1714de0e3f] <4.19-maint>
821-
822-2017-08-19 Phil Thompson <phil@riverbankcomputing.com>
823-
824- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
825- sphinx/c_api.rst, sphinx/python_api.rst:
826- Implemented sipEnableOverflowChecking() and
827- sip.enableoverflowchecking() stubs.
828- [56266006c18f] <4.19-maint>
829-
830-2017-08-13 Phil Thompson <phil@riverbankcomputing.com>
831-
832- * NEWS, sphinx/c_api.rst, sphinx/incompatibilities.rst:
833- Updated the docs regarding support for scoped enums.
834- [0cf1c85b12bd] <4.19-maint>
835-
836- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
837- Completed the implementation of scoped enums.
838- [d0b2e8967294] <4.19-maint>
839-
840- * siplib/siplib.c.in:
841- Scoped enums are now created as Python enums.
842- [ae7df49152e3] <4.19-maint>
843-
844- * siplib/siplib.c.in, sphinx/c_api.rst:
845- More work on scoped enums.
846- [9a196aece94e] <4.19-maint>
847-
848-2017-08-12 Phil Thompson <phil@riverbankcomputing.com>
849-
850- * sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
851- siplib/siplib.c.in, sphinx/c_api.rst:
852- Created the stub of the scoped enums implementation.
853- [674f800ed250] <4.19-maint>
854-
855- * sipgen/type_hints.c:
856- Removed some unused variables.
857- [90360e454f86] <4.19-maint>
858-
859- * sipgen/gencode.c, siplib/sip.h.in.in:
860- Remove the const from the source object declaration in assignment
861- helpers.
862- [2b53ba180983] <4.19-maint>
863-
864-2017-08-11 Phil Thompson <phil@riverbankcomputing.com>
865-
866- * sipgen/metasrc/parser.y:
867- Completed the parser support for scoped enums.
868- [11b383822a47] <4.19-maint>
869-
870- * sipgen/metasrc/parser.y, sipgen/sip.h.in,
871- sphinx/specification_files.rst:
872- Added parser support for scoped enums.
873- [f5b7d5bf0624] <4.19-maint>
874-
875- * sipgen/gencode.c:
876- Use static_cast<int>() when passing values to sipConvertFromEnum().
877- [091cfd53e597] <4.19-maint>
878-
879-2017-08-08 Phil Thompson <phil@riverbankcomputing.com>
880-
881- * sipgen/transform.c:
882- Disallow (rather than ignore) invalid types in Python signatures if
883- %MethodCode and a C/C++ signature is provided.
884- [a975983c39c1] <4.19-maint>
885-
886-2017-08-07 Phil Thompson <phil@riverbankcomputing.com>
887-
888- * sipgen/gencode.c:
889- Fixed a code generation bug in the handling of signals in scoped
890- classes.
891- [7c82958d6327] <4.19-maint>
892-
893-2017-07-22 Phil Thompson <phil@riverbankcomputing.com>
894-
895- * sipgen/sip.h.in, sipgen/transform.c:
896- Fixes for the detection of recursive imports.
897- [6a7ab03d4efa] <4.19-maint>
898-
899-2017-07-14 Phil Thompson <phil@riverbankcomputing.com>
900-
901- * sipgen/transform.c:
902- Detect recursive imports as an error.
903- [ba19c3f5fb29] <4.19-maint>
904-
905-2017-07-03 Phil Thompson <phil@riverbankcomputing.com>
906-
907- * .hgtags:
908- Added tag 4.19.3 for changeset 14685a6e736e
909- [2a9f342b7f39] <4.19-maint>
910-
911- * NEWS:
912- Released as v4.19.3.
913- [14685a6e736e] [4.19.3] <4.19-maint>
914-
915-2017-07-02 Phil Thompson <phil@riverbankcomputing.com>
916-
917- * sipgen/export.c, sipgen/type_hints.c:
918- Fixes for hidden namespaces in generated XML.
919- [489321fd2475] <4.19-maint>
920-
921-2017-06-28 Phil Thompson <phil@riverbankcomputing.com>
922-
923- * sphinx/specification_files.rst:
924- Fixed an out of date statement in the docs.
925- [21539b0e74c6] <4.19-maint>
926-
927-2017-06-22 Phil Thompson <phil@riverbankcomputing.com>
928-
929- * sipgen/metasrc/parser.y, sipgen/sip.h.in:
930- Don't report template arguments of uninstantiated templates as
931- undefined classes.
932- [a69025738247] <4.19-maint>
933-
934-2017-06-21 Phil Thompson <phil@riverbankcomputing.com>
935-
936- * sipgen/metasrc/parser.y:
937- Allow empty class bodies.
938- [265b531cb6e4] <4.19-maint>
939-
940- * sipgen/gencode.c:
941- Fixed a bug handling double quotes as the default value of a char
942- argument.
943- [d86c23976619] <4.19-maint>
944-
945-2017-06-16 Phil Thompson <phil@riverbankcomputing.com>
946-
947- * sipgen/main.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
948- sipgen/transform.c:
949- Completed the implementation of non-strict parsing.
950- [8b5e498d13dd] <4.19-maint>
951-
952- * sipgen/metasrc/parser.y, sipgen/sip.h.in:
953- The relevant data structures now retain the platform information.
954- [15b6c00166a7] <4.19-maint>
955-
956- * sipgen/gencode.c, sipgen/main.c, sipgen/metasrc/parser.y,
957- sipgen/sip.h.in:
958- Added the stub of non-strict parsing that saves (but otherwise
959- ignores) the platform information.
960- [b05b36a086c2] <4.19-maint>
961-
962- * sipgen/gencode.c, sipgen/metasrc/lexer.l:
963- Improve the handling of string constants to properly support escape
964- characters.
965- [495a7635a52d] <4.19-maint>
966-
967- * sipgen/metasrc/parser.y:
968- Make sure any expanded template ctor call is a deep copy.
969- [141c98e741b6] <4.19-maint>
970-
971-2017-06-15 Phil Thompson <phil@riverbankcomputing.com>
972-
973- * sipgen/metasrc/parser.y:
974- Expand template ctor calls when they are the default values of an
975- argument.
976- [5df8870c61a7] <4.19-maint>
977-
978-2017-06-10 Phil Thompson <phil@riverbankcomputing.com>
979-
980- * sipgen/gencode.c:
981- Fixed a regression in the invocation of the dtor of shadow classes.
982- [e833dc3f9a2f] <4.19-maint>
983-
984-2017-06-06 Phil Thompson <phil@riverbankcomputing.com>
985-
986- * .hgignore:
987- Updated .hgignore for the changed build directory.
988- [b2fb251d3500] <4.19-maint>
989-
990-2017-05-27 Phil Thompson <phil@riverbankcomputing.com>
991-
992- * siplib/siplib.c.in, sphinx/c_api.rst:
993- Documented the event handler mechanism.
994- [aee09bdf1206] <4.19-maint>
995-
996- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
997- Implemented sipEventType and sipRegisterEventHandler().
998- [2a4bcf305afa] <4.19-maint>
999-
1000-2017-05-26 Phil Thompson <phil@riverbankcomputing.com>
1001-
1002- * sipgen/gencode.c, siplib/objmap.c, siplib/sip.h.in.in,
1003- siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst:
1004- Renamed sipCommonDtor() to sipInstanceDestroyed() and added it to
1005- the public API.
1006- [e7d4e6661fa0] <4.19-maint>
1007-
1008- * sipgen/metasrc/parser.y:
1009- The parser will now accept class template definitions within a
1010- class. The generated code is untested.
1011- [ec57a6e03eb3] <4.19-maint>
1012-
1013-2017-05-23 Phil Thompson <phil@riverbankcomputing.com>
1014-
1015- * sipgen/type_hints.c:
1016- Added support for type hints for properties from Scott Maxwell.
1017- [c861fe0ef6ca] <4.19-maint>
1018-
1019-2017-05-15 Phil Thompson <phil@riverbankcomputing.com>
1020-
1021- * sipgen/gencode.c:
1022- Fixes for 'char *&' argument types.
1023- [684e23c995a3] <4.19-maint>
1024-
1025-2017-05-05 Phil Thompson <phil@riverbankcomputing.com>
1026-
1027- * siplib/siplib.c.in:
1028- Removed a duplicate call.
1029- [afe3d3efc82d] <4.19-maint>
1030-
1031- * sipgen/gencode.c:
1032- Don't try and initialise the result of a virtual when the type is a
1033- template.
1034- [cce4fe835faf] <4.19-maint>
1035-
1036-2017-04-27 Phil Thompson <phil@riverbankcomputing.com>
1037-
1038- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1039- Added sipPrintObject() to the public C API.
1040- [10e10b1a2d68] <4.19-maint>
1041-
1042-2017-04-24 Phil Thompson <phil@riverbankcomputing.com>
1043-
1044- * sipgen/gencode.c, siplib/siplib.c.in:
1045- Fixed regressions in the handling of exceptions.
1046- [974a4d77314b] <4.19-maint>
1047-
1048- * sipgen/transform.c, sphinx/conf.py.in:
1049- Minor cosmetic fixes.
1050- [4ea35fd2187d] <4.19-maint>
1051-
1052-2017-04-05 Phil Thompson <phil@riverbankcomputing.com>
1053-
1054- * siplib/siplib.c.in:
1055- Effectively re-applied changeset dc06058c99dd. If there is a real
1056- problem here then we don't yet fully understand it.
1057- [95a493a417e8] <4.19-maint>
1058-
1059-2017-04-02 Phil Thompson <phil@riverbankcomputing.com>
1060-
1061- * sipgen/transform.c:
1062- Fix a regression so that a shadow class is not generated if there is
1063- a private dtor.
1064- [6b09a6d578e8] <4.19-maint>
1065-
1066-2017-03-30 Phil Thompson <phil@riverbankcomputing.com>
1067-
1068- * .hgtags:
1069- Added tag 4.19.2 for changeset 1df924860f57
1070- [6209a625ac87] <4.19-maint>
1071-
1072- * NEWS:
1073- Released as v4.19.2.
1074- [1df924860f57] [4.19.2] <4.19-maint>
1075-
1076-2017-03-23 Phil Thompson <phil@riverbankcomputing.com>
1077-
1078- * siplib/siplib.c.in:
1079- Remove an unnecessary comment.
1080- [1f31effbc614] <4.19-maint>
1081-
1082-2017-03-03 Phil Thompson <phil@riverbankcomputing.com>
1083-
1084- * siplib/siplib.c.in:
1085- Fixed a crash when a user defined class uses sip.wrappertype as it's
1086- meta-type but is not derived from sip.simplewrapper.
1087- [f5bab1986fbb] <4.19-maint>
1088-
1089-2017-02-15 Phil Thompson <phil@riverbankcomputing.com>
1090-
1091- * .hgtags:
1092- Added tag 4.19.1 for changeset ee5ea590d186
1093- [f45eb310f129] <4.19-maint>
1094-
1095- * NEWS:
1096- Released as v4.19.1.
1097- [ee5ea590d186] [4.19.1] <4.19-maint>
1098-
1099-2017-02-13 Phil Thompson <phil@riverbankcomputing.com>
1100-
1101- * sipgen/gencode.c:
1102- Fixed another regression in deprecated code.
1103- [556ca44cc535] <4.19-maint>
1104-
1105- * sipgen/gencode.c:
1106- Fixed some deprecated macros.
1107- [23a8ef68306d] <4.19-maint>
1108-
1109-2017-02-08 Phil Thompson <phil@riverbankcomputing.com>
1110-
1111- * siplib/siplib.c.in:
1112- Fixed a typo in the implementation of sipEnableGC().
1113- [c15936fc6007] <4.19-maint>
1114-
1115-2017-02-05 Phil Thompson <phil@riverbankcomputing.com>
1116-
1117- * siplib/siplib.c.in:
1118- Fixed a doesn't-work-with-old-c-compilers bug.
1119- [5775566848d1] <4.19-maint>
1120-
1121-2017-02-02 Phil Thompson <phil@riverbankcomputing.com>
1122-
1123- * sipgen/transform.c:
1124- Fixed a regression in the generation of names of protected methods
1125- in classes imported from other modules.
1126- [948e06cb1921] <4.19-maint>
1127-
1128-2017-02-01 Phil Thompson <phil@riverbankcomputing.com>
1129-
1130- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c:
1131- Fixed a regression in determining when a shadow class should be
1132- generated.
1133- [71a8ee38b2c6] <4.19-maint>
1134-
1135-2017-01-31 Phil Thompson <phil@riverbankcomputing.com>
1136-
1137- * siplib/sip.h.in.in:
1138- Updated the ABI version number.
1139- [6b23496bd532] <4.19-maint>
1140-
1141- * sphinx/annotations.rst:
1142- Added a clarification to the /Abstract/ class annotation.
1143- [adb03184b044] <4.19-maint>
1144-
1145- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1146- sphinx/c_api.rst:
1147- Added sipEnableGC() to the public API.
1148- [03b120e8fe2f] <4.19-maint>
1149-
1150-2017-01-29 Phil Thompson <phil@riverbankcomputing.com>
1151-
1152- * sipgen/metasrc/parser.y:
1153- Fixed a couple of missing types.
1154- [9737461081da] <4.19-maint>
1155-
1156-2017-01-23 Phil Thompson <phil@riverbankcomputing.com>
1157-
1158- * sipgen/gencode.c:
1159- More fixes for /NoTypeName/ applied to class templates.
1160- [8a45855e0d70] <4.19-maint>
1161-
1162-2017-01-22 Phil Thompson <phil@riverbankcomputing.com>
1163-
1164- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
1165- The /NoTypeName/ typedef annotation now affects classes
1166- instantiation from class templates.
1167- [30d9a5a61ed2] <4.19-maint>
1168-
1169-2017-01-21 Phil Thompson <phil@riverbankcomputing.com>
1170-
1171- * NEWS, sipgen/gencode.c, sipgen/metasrc/lexer.l,
1172- sipgen/metasrc/parser.y, sipgen/sip.h.in, sphinx/directives.rst:
1173- Added the %PreMethodCode implementation from Robin Dunn.
1174- [08d77fb135a2] <4.19-maint>
1175-
1176- * sipgen/metasrc/parser.y:
1177- Properly fix the template super-class regression.
1178- [3b674fc274d5] <4.19-maint>
1179-
1180- * sipgen/metasrc/parser.y:
1181- Backed out changeset b94757bc5637 It fixes the bug but breaks
1182- everything else.
1183- [f39e23bcd25b] <4.19-maint>
1184-
1185- * sipgen/metasrc/parser.y:
1186- Fixed a regression in the handling of template arguments specifying
1187- super-classes.
1188- [b94757bc5637] <4.19-maint>
1189-
1190-2017-01-20 Phil Thompson <phil@riverbankcomputing.com>
1191-
1192- * README, build.py:
1193- Fixed the build.py script so that it does a complete preparation.
1194- [85539feb92ea] <4.19-maint>
1195-
1196-2017-01-19 Phil Thompson <phil@riverbankcomputing.com>
1197-
1198- * siplib/siplib.c.in:
1199- Fixed sipGetBufferInfo().
1200- [1de5c188f98d] <4.19-maint>
1201-
1202-2017-01-10 Phil Thompson <phil@riverbankcomputing.com>
1203-
1204- * sipgen/gencode.c, sipgen/main.c, sipgen/transform.c,
1205- siplib/siplib.c.in, sphinx/command_line.rst:
1206- Added the -D command line option so that the generated code is aware
1207- of Python debug builds.
1208- [2a21ceefdf2a] <4.19-maint>
1209-
1210-2017-01-09 Phil Thompson <phil@riverbankcomputing.com>
1211-
1212- * siplib/siplib.c.in:
1213- Hopefully a better implementation of changeset dc06058c99dd.
1214- [4c135d33a5cf] <4.19-maint>
1215-
1216- * siplib/siplib.c.in:
1217- Backed out changeset dc06058c99dd The change is too drastic.
1218- [d9e95528015e] <4.19-maint>
1219-
1220-2017-01-07 Phil Thompson <phil@riverbankcomputing.com>
1221-
1222- * sipgen/transform.c:
1223- Fixed a regression in the ordering of the generated types table for
1224- a module.
1225- [06237437b446] <4.19-maint>
1226-
1227-2016-12-25 Phil Thompson <phil@riverbankcomputing.com>
1228-
1229- * .hgtags:
1230- Added tag 4.19 for changeset 0a4ee5a5511f
1231- [245c1ac3c34e]
1232-
1233- * NEWS:
1234- Released as v4.19.
1235- [0a4ee5a5511f] [4.19]
1236-
1237-2016-12-17 Phil Thompson <phil@riverbankcomputing.com>
1238-
1239- * sipgen/transform.c:
1240- Fixed a problem importing the required types for protected methods
1241- without the public/protected hack.
1242- [ccf3d8f3cc59]
1243-
1244-2016-12-14 Phil Thompson <phil@riverbankcomputing.com>
1245-
1246- * siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/python_api.rst:
1247- Implemented sip.assign() to invoke the C++ assignment operator.
1248- [4324a0bc03a4]
1249-
1250-2016-11-27 Phil Thompson <phil@riverbankcomputing.com>
1251-
1252- * configure.py.in, sphinx/installation.rst:
1253- Added the --no-stubs and --stubsdir options to configure.py to be
1254- consistent with other configuration scripts.
1255- [70e0d9d09265]
1256-
1257-2016-11-22 Phil Thompson <phil@riverbankcomputing.com>
1258-
1259- * sipgen/transform.c:
1260- Fixed the incomplete tidy-up.
1261- [69aaa13a1883]
1262-
1263-2016-11-21 Phil Thompson <phil@riverbankcomputing.com>
1264-
1265- * sipgen/transform.c:
1266- Fix a warning message.
1267- [5d7b73925360]
1268-
1269- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
1270- Reverted to pre-4.18 handling of the generated cast function. There
1271- are cases where a C++ derived class does not have the same address
1272- as its single base class.
1273- [8e9e02f1bea0]
1274-
1275-2016-11-11 Phil Thompson <phil@riverbankcomputing.com>
1276-
1277- * sipgen/metasrc/parser.y:
1278- Fixed a regression (related to scoped names) that meant that header
1279- code for template arguments wasn't being included.
1280- [04796a24e981]
1281-
1282-2016-10-28 Phil Thompson <phil@riverbankcomputing.com>
1283-
1284- * sipgen/gencode.c:
1285- iHandwritten code to be included in the sipAPI*.h file is now placed
1286- at the end so that it can make use of the generated macros and
1287- types.
1288- [ed446493da18]
1289-
1290-2016-10-26 Phil Thompson <phil@riverbankcomputing.com>
1291-
1292- * siplib/siplib.c.in:
1293- Fixed some compiler warnings when building for Python v2.
1294- [264793ee3fb0]
1295-
1296-2016-10-25 Phil Thompson <phil@riverbankcomputing.com>
1297-
1298- * sipgen/transform.c:
1299- Fixed a regression in the handling of abstratc classes.
1300- [ce1042e83d1a]
1301-
1302- * sipgen/gencode.c, sipgen/transform.c:
1303- More namespace related fixes.
1304- [73d456c2f5cc]
1305-
1306-2016-10-18 Phil Thompson <phil@riverbankcomputing.com>
1307-
1308- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1309- sipgen/transform.c, siplib/siplib.c.in:
1310- Implemented 'final' support. More fixes for the handling of scopes.
1311- [1d0d5c659b92]
1312-
1313-2016-10-17 Phil Thompson <phil@riverbankcomputing.com>
1314-
1315- * sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1316- sphinx/specification_files.rst:
1317- Added parser support for the 'final' keyword.
1318- [373d57302d56]
1319-
1320-2016-10-16 Phil Thompson <phil@riverbankcomputing.com>
1321-
1322- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/transform.c:
1323- Refactored the support for scopes so that types hav a leading '::'.
1324- [1f498dfe2888]
1325-
1326-2016-10-09 Phil Thompson <phil@riverbankcomputing.com>
1327-
1328- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1329- sipgen/transform.c:
1330- Fixed the generation of the scope of an operator moved from a
1331- namespace to a class.
1332- [f697ee13a3aa]
1333-
1334-2016-10-06 Phil Thompson <phil@riverbankcomputing.com>
1335-
1336- * sphinx/directives.rst:
1337- Documented the %HideNamespace directive.
1338- [b45a86055567]
1339-
1340- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
1341- sipgen/sip.h.in, sipgen/transform.c:
1342- Implemented the %HideNamespace directive.
1343- [6b1f471385df]
1344-
1345-2016-10-05 Phil Thompson <phil@riverbankcomputing.com>
1346-
1347- * sipgen/gencode.c:
1348- Make sure the underlying types are generated in tuple builders.
1349- [0507dfae0588]
1350-
1351- * sipgen/gencode.c:
1352- Virtual handlers use typedef names like all the rest of the
1353- generated code.
1354- [c732f0460bc3]
1355-
1356-2016-10-04 Phil Thompson <phil@riverbankcomputing.com>
1357-
1358- * sipgen/transform.c:
1359- Refactored the name lookup code.
1360- [8bd669cf535f]
1361-
1362-2016-09-29 Phil Thompson <phil@riverbankcomputing.com>
1363-
1364- * sipgen/gencode.c:
1365- Variable getters/setters now only keep a hidden reference for C
1366- character strings.
1367- [6ec87337d5e2]
1368-
1369- * sipgen/gencode.c:
1370- Fixed a bad indentation in the generated code.
1371- [cb1d8e948a2b]
1372-
1373-2016-09-25 Phil Thompson <phil@riverbankcomputing.com>
1374-
1375- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1376- sipgen/transform.c, siplib/qtlib.c, siplib/sip.h.in.in,
1377- siplib/siplib.c.in, sphinx/using.rst:
1378- Removed anll code generator support for PyQt3.
1379- [a9cc0cc567aa]
1380-
1381-2016-09-24 Phil Thompson <phil@riverbankcomputing.com>
1382-
1383- * sipgen/transform.c:
1384- A class that sub-classes an abstract class and doesn't provide an
1385- implementation of an abstract method is itself abstract.
1386- [472469f1d7ad]
1387-
1388- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1389- sipgen/transform.c:
1390- Fixes for imported types that have multiple implementations.
1391- [dc02dc4430ec]
1392-
1393- * sipgen/transform.c, siplib/sip.h.in.in:
1394- Fixed the selection of a virtual handler.
1395- [d6c07e82a3d2]
1396-
1397-2016-09-23 Phil Thompson <phil@riverbankcomputing.com>
1398-
1399- * siplib/sip.h.in.in, siplib/sipint.h:
1400- Fixed some regressions when building with the limited API disabled.
1401- [8118a2156d11]
1402-
1403- * siplib/sip.h.in.in, siplib/sipint.h:
1404- Exposed some missing macros.
1405- [d12bb44a9d7d]
1406-
1407- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1408- sphinx/c_api.rst:
1409- Added sipGetUserObject() and sipSetUserObject() to the public API.
1410- [e0352cc51b67]
1411-
1412- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/sipint.h,
1413- siplib/siplib.c.in:
1414- Added sipIsOwnedByPython() and sipIsDerivedClass() to the private
1415- API to remove more binary dependencies.
1416- [17ed5300e0dc]
1417-
1418- * sipgen/metasrc/parser.y, siplib/objmap.c, siplib/sip.h.in.in,
1419- siplib/siplib.c.in:
1420- Fix some warnings.
1421- [d0dcc6cd73b9]
1422-
1423- * sipgen/gencode.c, siplib/sip.h.in.in:
1424- Refactored how the plugin-specific generated tables are handled.
1425- [a0fcb2bc14ca]
1426-
1427-2016-09-22 Phil Thompson <phil@riverbankcomputing.com>
1428-
1429- * sipgen/transform.c:
1430- Fixed the auto-generation of default copy ctors.
1431- [508f9dd396f9]
1432-
1433- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1434- Implemented the sipCallProcedureMethod() optimisation.
1435- [948be90a3f5e]
1436-
1437- * sipgen/transform.c, siplib/sip.h.in.in:
1438- Class based exceptions should now have their type structure
1439- included.
1440- [64ac366b669f]
1441-
1442- * siplib/sip.h.in.in, siplib/siplib.c.in:
1443- Reorganised the C API structure.
1444- [a08c7533a799]
1445-
1446- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1447- Completed the refactoring to eliminate binary dependencies.
1448- [fb3b72523947]
1449-
1450- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1451- sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1452- Refactored the implementation of exceptions to eliminate the binary
1453- dependencies.
1454- [aeb733f23126]
1455-
1456- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1457- sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1458- Refactored the handling of virtual error handlers to reduce binary
1459- dependencies.
1460- [b08f6f3325e8]
1461-
1462-2016-09-21 Phil Thompson <phil@riverbankcomputing.com>
1463-
1464- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
1465- Genearte the needed types table at the right time.
1466- [26331d156a87]
1467-
1468- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
1469- Refactoring of the code that inspects a class for its visible
1470- virtuals.
1471- [082c756c263d]
1472-
1473-2016-09-20 Phil Thompson <phil@riverbankcomputing.com>
1474-
1475- * sipgen/transform.c:
1476- Fixes for regressions using the type header files in the right
1477- place.
1478- [0b1a09bbde7a]
1479-
1480- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1481- sipgen/transform.c, siplib/sip.h.in.in:
1482- Initial refactoring of virtual handlers.
1483- [d454a9b02d26]
1484-
1485-2016-09-19 Phil Thompson <phil@riverbankcomputing.com>
1486-
1487- * sipgen/gencode.c, siplib/siplib.c.in:
1488- Generate the correct type names for template based types.
1489- [1f17d1688231]
1490-
1491- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1492- sipgen/transform.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1493- sphinx/c_api.rst, sphinx/incompatibilities.rst:
1494- Refactored the handling of generated type structures so that they
1495- are only referenced by name by an importing module rather than by an
1496- index into a table. This reduces the binary dependencies between
1497- modules.
1498- [667720dbc42d]
1499-
1500-2016-09-15 Phil Thompson <phil@riverbankcomputing.com>
1501-
1502- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
1503- siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/directives.rst:
1504- Removed the support for module version numbers.
1505- [685029cadb52]
1506-
1507-2016-09-12 Phil Thompson <phil@riverbankcomputing.com>
1508-
1509- * siplib/siplib.c.in:
1510- Fixed silly bugs in the previous change.
1511- [7df5236aa50f]
1512-
1513- * siplib/sip.h.in.in, siplib/siplib.c.in:
1514- Improved the implementation of sipGetBufferInfo().
1515- [7a606d0daf37]
1516-
1517-2016-09-09 Phil Thompson <phil@riverbankcomputing.com>
1518-
1519- * sipgen/export.c, sipgen/type_hints.c:
1520- Fixed the type hint for unsigned const char *.
1521- [19f9b9eea667]
1522-
1523- * siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
1524- Updated sipGetBufferInfo() to optionally check the type.
1525- sipGetBufferInfo() only supports 1-dimensional arrays.
1526- [985d7877b3a1]
1527-
1528-2016-09-08 Phil Thompson <phil@riverbankcomputing.com>
1529-
1530- * siplib/siplib.c.in:
1531- Further fixes for invoking the new type handler.
1532- [ecdcfc0f0558]
1533-
1534- * siplib/objmap.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1535- Fixes for the invocation of the new user type handler.
1536- [a95c68d37f6e]
1537-
1538- * siplib/siplib.c.in:
1539- Fixed the invocation of the new user type handler.
1540- [d484574b76e9]
1541-
1542-2016-09-07 Phil Thompson <phil@riverbankcomputing.com>
1543-
1544- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1545- sphinx/c_api.rst:
1546- Added sipGetBufferInfo() and sipReleaseBufferInfo() to the public
1547- API.
1548- [c23d7cb8b06e]
1549-
1550-2016-09-06 Phil Thompson <phil@riverbankcomputing.com>
1551-
1552- * siplib/siplib.c.in, sphinx/c_api.rst:
1553- Documented the new Unicode-related functions.
1554- [c8408349d43c]
1555-
1556-2016-09-05 Phil Thompson <phil@riverbankcomputing.com>
1557-
1558- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1559- Added sipUnicodeNew(), sipUnicodeWrite() and sipUnicodeData() to the
1560- public API.
1561- [e05849602bef]
1562-
1563-2016-08-30 Phil Thompson <phil@riverbankcomputing.com>
1564-
1565- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1566- sphinx/c_api.rst:
1567- Added sipGetMethod(), sipFromMethod() and sipGetCFunction() ot the
1568- public API.
1569- [28f7daaa7542]
1570-
1571- * sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
1572- siplib/siplib.c.in, sphinx/c_api.rst:
1573- Added sipCheckPluginForType() ot the public API.
1574- sipSetNewUserTypeHandler() now returns the old handler to allow
1575- chaining.
1576- [7e8e4447431b]
1577-
1578-2016-08-29 Phil Thompson <phil@riverbankcomputing.com>
1579-
1580- * siplib/descriptors.c, siplib/objmap.c, siplib/sip.h.in.in,
1581- siplib/siplib.c.in:
1582- Renamed some structure fields.
1583- [cb8478e5895d]
1584-
1585- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1586- sphinx/c_api.rst:
1587- Added sipPyTypeDict() to the public API.
1588- [7f25c1fe8296]
1589-
1590- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1591- sphinx/c_api.rst:
1592- Added sipGetFrame() to the public API.
1593- [a34c213208b2]
1594-
1595- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1596- sphinx/c_api.rst:
1597- Added sipIsUserType() to the public API.
1598- [d2477eb9265e]
1599-
1600- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1601- sphinx/c_api.rst:
1602- Added the data and time functions to the public API.
1603- [7739c16f94c9]
1604-
1605-2016-08-28 Phil Thompson <phil@riverbankcomputing.com>
1606-
1607- * sphinx/c_api.rst:
1608- Documented sipPyTypeName().
1609- [c7098cf08c3a]
1610-
1611- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
1612- Added sipPyTypeName() to the public API.
1613- [319512a38c50]
1614-
1615- * siplib/sip.h.in.in:
1616- Fixed the new macros.
1617- [c361a6924e82]
1618-
1619- * siplib/sip.h.in.in:
1620- Implemented additional portablity macros for the limited API.
1621- [120e916e8608]
1622-
1623- * .hgignore, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
1624- sphinx/c_api.rst, sphinx/using.rst:
1625- Implemented sipSetNewUserTypeFunc() sipSetTypeUserData() and
1626- sipGetTypeUserData().
1627- [1f180cf4a42a]
1628-
1629-2016-08-25 Phil Thompson <phil@riverbankcomputing.com>
1630-
1631- * siplib/apiversions.c, siplib/array.c, siplib/array.h,
1632- siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
1633- siplib/sip.h.in.in, siplib/sipint.h, siplib/threads.c,
1634- siplib/voidptr.c, sphinx/c_api.rst, sphinx/directives.rst:
1635- Added the user field to the sipWrapperType structure as an
1636- alternative to defining a super-type of sipWrapperType (which isn't
1637- possible with the limited API). Bumped the major ABI version number.
1638- [5e9de8cde212]
1639-
1640-2016-08-24 Phil Thompson <phil@riverbankcomputing.com>
1641-
1642- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
1643- sipgen/sip.h.in, siplib/sip.h.in.in, siplib/siplib.c.in,
1644- sphinx/directives.rst:
1645- Added the use_limited_api argument to the %Module directive. Changed
1646- the API of %BIGetBufferCode when using the limited API.
1647- [10d7121c07e3]
1648-
1649-2016-08-23 Phil Thompson <phil@riverbankcomputing.com>
1650-
1651- * rbproduct.py:
1652- Merged the 4.18-maint branch into the trunk.
1653- [d92384aa5baf]
1654-
1655- * sipgen/gencode.c:
1656- Fixed the handling of global unsigned constants.
1657- [a45bec408ec2] <4.18-maint>
1658-
1659- * sphinx/conf.py.in:
1660- Fixed the copyright notice in the docs.
1661- [17475357a153] <4.18-maint>
1662-
1663-2016-08-08 Phil Thompson <phil@riverbankcomputing.com>
1664-
1665- * README, build.py:
1666- Removed the old internal build system leaving the minimum needed to
1667- build from hg without the new build system.
1668- [dbbced5689a8] <4.18-maint>
1669-
1670-2016-07-25 Phil Thompson <phil@riverbankcomputing.com>
1671-
1672- * .hgtags:
1673- Added tag 4.18.1 for changeset 81021a5690ce
1674- [8f5b6c8fe5f1] <4.18-maint>
1675-
1676- * NEWS:
1677- Released as v4.18.1.
1678- [81021a5690ce] [4.18.1] <4.18-maint>
1679-
1680-2016-07-22 Phil Thompson <phil@riverbankcomputing.com>
1681-
1682- * Roadmap.rst:
1683- Updated the Roadmap.
1684- [1226013f2516] <4.18-maint>
1685-
1686- * NEWS:
1687- Updated the NEWS file.
1688- [26a4fd92bf59] <4.18-maint>
1689-
1690-2016-07-03 Phil Thompson <phil@riverbankcomputing.com>
1691-
1692- * siplib/objmap.c:
1693- Fixed a problem with stale aliases for objects created by C/C++.
1694- [b493c6f3e015] <4.18-maint>
1695-
1696-2016-06-21 Phil Thompson <phil@riverbankcomputing.com>
1697-
1698- * rb-product, rbproduct.py:
1699- Replaced the product plugin with a product file.
1700- [a10b0caa91a8] <4.18-maint>
1701-
1702-2016-06-20 Phil Thompson <phil@riverbankcomputing.com>
1703-
1704- * rbproduct.py:
1705- Product plugin changes for rb-tools API changes.
1706- [86f51ad3ac30] <4.18-maint>
1707-
1708- * rbproduct.py:
1709- Debugged the product plugin.
1710- [67a81861273c] <4.18-maint>
1711-
1712- * rbproduct.py:
1713- Added support for a minimal build and release build types.
1714- [8cc794662db5] <4.18-maint>
1715-
1716-2016-06-18 Phil Thompson <phil@riverbankcomputing.com>
1717-
1718- * rbproduct.py:
1719- Tewaks to the product plugin.
1720- [b2fd658f11cf] <4.18-maint>
1721-
1722-2016-06-15 Phil Thompson <phil@riverbankcomputing.com>
1723-
1724- * rbproduct.py:
1725- Debugged the support for rb-release.
1726- [38cdb78872f4] <4.18-maint>
1727-
1728-2016-06-13 Phil Thompson <phil@riverbankcomputing.com>
1729-
1730- * rbproduct.py:
1731- Updated the product plugin to support rb-release.
1732- [ecb166af3ad3] <4.18-maint>
1733-
1734-2016-06-10 Phil Thompson <phil@riverbankcomputing.com>
1735-
1736- * sipgen/gencode.c:
1737- Fixed a regression in the handling of a cast with a diamond
1738- hierachy.
1739- [91206af66161] <4.18-maint>
1740-
1741-2016-06-02 Phil Thompson <phil@riverbankcomputing.com>
1742-
1743- * rbproduct.py:
1744- Implemented the different build types.
1745- [15184d86e394] <4.18-maint>
1746-
1747- * rbproduct.py:
1748- Updates to the product plugin.
1749- [23ca59449373] <4.18-maint>
1750-
1751-2016-06-01 Phil Thompson <phil@riverbankcomputing.com>
1752-
1753- * rbproduct.py:
1754- Updated the product plugin to simplify the class hierachy.
1755- [a977c7f870f7] <4.18-maint>
1756-
1757- * .hgignore, rbproduct.py:
1758- The product plugin will now do a default build.
1759- [8c433398f573] <4.18-maint>
1760-
1761-2016-05-09 Phil Thompson <phil@riverbankcomputing.com>
1762-
1763- * rbproduct.py:
1764- Updated the product plugin for the latest rbtools changes.
1765- [a4a0a84984dc] <4.18-maint>
1766-
1767-2016-05-05 Phil Thompson <phil@riverbankcomputing.com>
1768-
1769- * configure.py.in:
1770- Fixed a bug in out-of-source builds.
1771- [f9602fd24f17] <4.18-maint>
1772-
1773-2016-04-22 Phil Thompson <phil@riverbankcomputing.com>
1774-
1775- * METADATA.in:
1776- Updated the meta-data to say that 64-bit Linux wheels are available
1777- at PyPI.
1778- [5602445cb458] <4.18-maint>
1779-
1780-2016-04-13 Phil Thompson <phil@riverbankcomputing.com>
1781-
1782- * .hgtags:
1783- Added tag 4.18 for changeset b51768a1749e
1784- [1da474e6ccc1]
1785-
1786- * NEWS, sphinx/specification_files.rst:
1787- Released as v4.18.
1788- [b51768a1749e] [4.18]
1789-
1790- * METADATA.in, sipgen/export.c, sipgen/type_hints.c:
1791- Fixed the type hints for arrays.
1792- [02a712634ce1]
1793-
1794-2016-04-09 Phil Thompson <phil@riverbankcomputing.com>
1795-
1796- * METADATA.in:
1797- Updated the description in the meta-data.
1798- [d9eb656132f3]
1799-
1800-2016-04-08 Phil Thompson <phil@riverbankcomputing.com>
1801-
1802- * METADATA.in:
1803- Further tweak to METADATA.in.
1804- [9acfb4baa44c]
1805-
1806- * METADATA.in:
1807- Use v1.1 meta-data rather than v2.0.
1808- [8d9645471343]
1809-
1810- * METADATA.in:
1811- Fixed a typo.
1812- [4a9ee34e65c3]
1813-
1814- * METADATA.in, rbproduct.py:
1815- Added the METADATA.in file.
1816- [39106871989b]
1817-
1818-2016-04-05 Phil Thompson <phil@riverbankcomputing.com>
1819-
1820- * rbproduct.py:
1821- Updated the product plugin.
1822- [e42e999389f9]
1823-
1824- * rbproduct.py:
1825- Added the rbtools product plugin.
1826- [b9ba57967915]
1827-
1828-2016-03-30 Phil Thompson <phil@riverbankcomputing.com>
1829-
1830- * sphinx/incompatibilities.rst:
1831- Fixed a Sphinx warning message.
1832- [ae966103325c]
1833-
1834- * sipgen/main.c, sipgen/sip.h.in, sipgen/transform.c:
1835- Fixed the use of SIP_NORETURN.
1836- [b3a916e0bc78]
1837-
1838-2016-03-25 Phil Thompson <phil@riverbankcomputing.com>
1839-
1840- * sipgen/export.c:
1841- Fixed a regression in the exporting of the XML API files.
1842- [c7714bbbdae7]
1843-
1844- * build.py, sphinx/build_system.rst, sphinx/c_api.rst,
1845- sphinx/python_api.rst:
1846- Adopt the new standards for naming development versions.
1847- [72140f544ef1]
1848-
1849- * sphinx/annotations.rst:
1850- Fixed a bug in the documentation.
1851- [9e4ee12928cd]
1852-
1853- * .hgignore:
1854- Added the .hgignore file.
1855- [e1d2556ce4a2]
1856-
1857-2016-03-04 Phil Thompson <phil@riverbankcomputing.com>
1858-
1859- * sipgen/gencode.c:
1860- __long__ gets translated to __int__ for Python v3.
1861- [a4f8a7810cc3]
1862-
1863-2016-03-01 Phil Thompson <phil@riverbankcomputing.com>
1864-
1865- * sipgen/type_hints.c, sphinx/annotations.rst:
1866- Type hints are ignored if an argument is constrained.
1867- [f041cf891a29]
1868-
1869- * sipgen/type_hints.c:
1870- Implement the flattening of Unions in type hints.
1871- [ff5f0d0251e0]
1872-
1873-2016-02-29 Phil Thompson <phil@riverbankcomputing.com>
1874-
1875- * sipgen/sip.h.in, sipgen/type_hints.c:
1876- Reimplemented the type hint parser so it can handle recursive
1877- definitions properly.
1878- [506e30d92b51]
1879-
1880-2016-02-27 Phil Thompson <phil@riverbankcomputing.com>
1881-
1882- * sipgen/type_hints.c:
1883- Fixed type hints for enums in mapped types.
1884- [efb04ab24462]
1885-
1886- * sipgen/type_hints.c:
1887- Fixed type hints for the return values of functions.
1888- [b5c392c71f78]
1889-
1890- * sipgen/type_hints.c:
1891- Added Iterable to the list of known typing module objects.
1892- [a1d1a573a304]
1893-
1894-2016-02-26 Phil Thompson <phil@riverbankcomputing.com>
1895-
1896- * sipgen/sip.h.in, sipgen/type_hints.c:
1897- Fixed the handling of recursively defined type hints.
1898- [b5abe12b4968]
1899-
1900-2016-02-25 Phil Thompson <phil@riverbankcomputing.com>
1901-
1902- * sipgen/sip.h.in, sipgen/type_hints.c:
1903- The typing module is now imported as a whole rather than individual
1904- objects.
1905- [ac67b3f0bd95]
1906-
1907-2016-02-24 Phil Thompson <phil@riverbankcomputing.com>
1908-
1909- * sip.pyi:
1910- Fixed the Buffer type hint.
1911- [78a799aec114]
1912-
1913- * sipgen/type_hints.c:
1914- Don't generate type hints for the sequence concat and repeat slots
1915- (and the inplace versions).
1916- [a5ae3982ff5f]
1917-
1918- * sipgen/metasrc/parser.y, sphinx/directives.rst:
1919- Exported type hint code is no longer included in the module that
1920- defines it.
1921- [442b3ed07ae6]
1922-
1923- * sipgen/type_hints.c:
1924- Exclude external classes when looking up a class.
1925- [61fe4c76a394]
1926-
1927- * sipgen/transform.c, sipgen/type_hints.c:
1928- Fixed type hints and docstrings for const template arguments.
1929- [679c13adda6a]
1930-
1931- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c,
1932- sphinx/directives.rst:
1933- %TypeHintCode can now be used in a class.
1934- [053c7351dba2]
1935-
1936-2016-02-19 Phil Thompson <phil@riverbankcomputing.com>
1937-
1938- * sipgen/type_hints.c:
1939- Don't generate type hints for slots that can return
1940- Py_NotImplemented. Make sure callables generate a valid (but vague)
1941- type hint.
1942- [883918a8dc36]
1943-
1944-2016-02-18 Phil Thompson <phil@riverbankcomputing.com>
1945-
1946- * sip.pyi, sipgen/type_hints.c:
1947- Tweaks to the type hint support.
1948- [785978d8f7e3]
1949-
1950-2016-02-16 Phil Thompson <phil@riverbankcomputing.com>
1951-
1952- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
1953- sipgen/type_hints.c, sphinx/annotations.rst:
1954- Added the /TypeHint/, /TypeHintOut/ and /TypeHintValue/ class
1955- annotations.
1956- [4f5dc2c51d06]
1957-
1958- * sipgen/type_hints.c:
1959- Moved the old-style signal/slot type hints to PyQt4.
1960- [4689a40f7e7d]
1961-
1962-2016-02-15 Phil Thompson <phil@riverbankcomputing.com>
1963-
1964- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
1965- sphinx/annotations.rst:
1966- Implemented /TypeHintValue/ as a mapped type annotation.
1967- [2418e7f7760d]
1968-
1969- * build.py:
1970- Make sure sip.pyi is included in the source package.
1971- [1eabde271e53]
1972-
1973-2016-02-11 Phil Thompson <phil@riverbankcomputing.com>
1974-
1975- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
1976- sipgen/transform.c, siplib/siplib.c.in:
1977- Eliminate a few compiler warnings.
1978- [e864a0451a4a]
1979-
1980-2016-02-10 Phil Thompson <phil@riverbankcomputing.com>
1981-
1982- * sipgen/type_hints.c:
1983- More fixes for Optional handling.
1984- [365d31de81fd]
1985-
1986- * sipgen/type_hints.c:
1987- Use Optional properly.
1988- [ab7d66d1ea0d]
1989-
1990-2016-02-09 Phil Thompson <phil@riverbankcomputing.com>
1991-
1992- * sipgen/type_hints.c:
1993- PY_TYPE and PY_SLICE aren't actually needed.
1994- [9778770c65a5]
1995-
1996-2016-02-08 Phil Thompson <phil@riverbankcomputing.com>
1997-
1998- * sipgen/type_hints.c:
1999- Fixed the translation of Any to object in docstrings.
2000- [7571d96c1f79]
2001-
2002- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in,
2003- sipgen/type_hints.c:
2004- Docstrings now use a format based on type hints.
2005- [9de9b0470aa6]
2006-
2007-2016-02-05 Phil Thompson <phil@riverbankcomputing.com>
2008-
2009- * sipgen/transform.c:
2010- Don't complain about a lack of %SetCode when /NoSetter/ is
2011- specified.
2012- [cf4db5eb171a]
2013-
2014- * sipgen/metasrc/parser.y:
2015- Fixed some typos in error messages.
2016- [82a34911686f]
2017-
2018- * sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
2019- sphinx/directives.rst:
2020- Renamed %ModuleTypeHintCode to %TypeHintCode.
2021- [73b214c14dde]
2022-
2023- * sipgen/type_hints.c, sphinx/annotations.rst:
2024- Documented the /NoTypeHint/ annotations.
2025- [26e59a86ca45]
2026-
2027- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
2028- sipgen/type_hints.c:
2029- Implemented the /NoTypeHint/ annotation. Fixed a bug to make sure
2030- type header code is included before enum slot code needs it.
2031- [1943d4866c73]
2032-
2033- * sipgen/metasrc/parser.y, sipgen/type_hints.c:
2034- More flexible handling of ellipsis when /NoArgParser/ is specified.
2035- [7097a0008042]
2036-
2037- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c:
2038- Protect against (possible) recursion when handling type hints for
2039- mapped types.
2040- [9402857f5eb6]
2041-
2042- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
2043- sipgen/type_hints.c:
2044- Fixed class /TypeHintIn/ when used with a template.
2045- [3a914d9789e0]
2046-
2047-2016-02-04 Phil Thompson <phil@riverbankcomputing.com>
2048-
2049- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c,
2050- sphinx/annotations.rst:
2051- Added /TypeHintIn/ as a class annotation.
2052- [92d3d32ebf64]
2053-
2054-2016-02-03 Phil Thompson <phil@riverbankcomputing.com>
2055-
2056- * sipgen/export.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2057- sipgen/transform.c, sipgen/type_hints.c:
2058- Completed the implementation of /TypeHintIn/ and /TypeHintOut/.
2059- [70e9172c61b7]
2060-
2061- * sipgen/export.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
2062- Implement /TypeHintValue/ as a synonym for /DocValue/ for the
2063- moment.
2064- [df8230d91f9f]
2065-
2066- * sipgen/metasrc/parser.y, sphinx/annotations.rst:
2067- Adde the stubs of the /TypeHintIn/, /TypeHintOut/ and
2068- /TypeHintValue/ annotations.
2069- [aeb5d848b98a]
2070-
2071- * sipgen/metasrc/parser.y, sphinx/annotations.rst:
2072- Deprecated /DocType/ and /DocValue/.
2073- [ec369060cd94]
2074-
2075- * sipgen/main.c, sipgen/metasrc/parser.y, sipgen/type_hints.c,
2076- sphinx/command_line.rst:
2077- Added the -f command line option to treat warnings as errors.
2078- [fc945a2d732f]
2079-
2080-2016-02-02 Phil Thompson <phil@riverbankcomputing.com>
2081-
2082- * sipgen/type_hints.c:
2083- Added Iterator and Mapping to the objecys imported from typing.
2084- [6d439bc77538]
2085-
2086- * sipgen/type_hints.c:
2087- Fixed references to mapped types imported from other modules.
2088- [b579781f2a2a]
2089-
2090- * sipgen/type_hints.c:
2091- Don't try and create type hints for global slots.
2092- [11562a825b7c]
2093-
2094- * sipgen/type_hints.c:
2095- Bug fix when looking up enums.
2096- [a4b89fac02d3]
2097-
2098- * sipgen/type_hints.c:
2099- Added PEP 484 support for composite modules.
2100- [99e626f4fd23]
2101-
2102- * sipgen/type_hints.c:
2103- Fixed PEP 484 support for all callables with a non-default API
2104- version.
2105- [b2f8e2fed83d]
2106-
2107- * sipgen/type_hints.c:
2108- Completed the PEP 484 support for mapped types.
2109- [b06408ae2397]
2110-
2111- * sipgen/export.c, sipgen/sip.h.in, sipgen/type_hints.c:
2112- More PEP 484 bug fixes.
2113- [3e4df4d97ba5]
2114-
2115-2016-01-31 Phil Thompson <phil@riverbankcomputing.com>
2116-
2117- * NEWS, sphinx/directives.rst, sphinx/specification_files.rst:
2118- Documented the %ExportedTypeHintCode and %ModuleTypeHintCode
2119- directives.
2120- [cc7f789360b8]
2121-
2122- * NEWS, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
2123- sipgen/sip.h.in, sipgen/type_hints.c, sphinx/directives.rst:
2124- Added the %ExportedTypeHintCode and %ModuleTypeHintCode directives.
2125- [aef93197b065]
2126-
2127- * sipgen/metasrc/parser.y, sipgen/type_hints.c,
2128- sphinx/annotations.rst:
2129- Renamed /HintType/ to /TypeHint/.
2130- [70c8915f680a]
2131-
2132-2016-01-30 Phil Thompson <phil@riverbankcomputing.com>
2133-
2134- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/type_hints.c:
2135- More PEP 484 support.
2136- [ea6e7a7ae51f]
2137-
2138-2016-01-29 Phil Thompson <phil@riverbankcomputing.com>
2139-
2140- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
2141- sipgen/type_hints.c:
2142- More PEP 484 support.
2143- [aa1228396424]
2144-
2145-2016-01-28 Phil Thompson <phil@riverbankcomputing.com>
2146-
2147- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
2148- sipgen/type_hints.c:
2149- Added the stubs for parsing /HintType/ annotations.
2150- [7c0fac66f27c]
2151-
2152- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2153- sipgen/transform.c, sipgen/type_hints.c:
2154- Improved the lookup of QObject.
2155- [a2d8330df89d]
2156-
2157-2016-01-27 Phil Thompson <phil@riverbankcomputing.com>
2158-
2159- * sipgen/type_hints.c:
2160- More PEP 484 support.
2161- [336749ea71c5]
2162-
2163- * sipgen/type_hints.c, sphinx/annotations.rst:
2164- HintType will now fallback to DocType if the latter is specified.
2165- [4423da336fbb]
2166-
2167- * sipgen/metasrc/parser.y, sipgen/sip.h.in, sipgen/transform.c,
2168- sipgen/type_hints.c, sphinx/annotations.rst:
2169- Added the /HintType/ annotation.
2170- [2985d2d641d4]
2171-
2172- * sipgen/type_hints.c:
2173- More PEP 484 support.
2174- [21e70ef4b15f]
2175-
2176-2016-01-26 Phil Thompson <phil@riverbankcomputing.com>
2177-
2178- * sipgen/sip.h.in, sipgen/type_hints.c:
2179- More PEP 484 support.
2180- [dd04be5e4e4f]
2181-
2182- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in,
2183- sipgen/type_hints.c:
2184- More support for PEP 484.
2185- [353fe29217fb]
2186-
2187- * siplib/siplib.c.in:
2188- Reverted the use of simplewrapper for mapped types.
2189- [14ba1e5b1e5b]
2190-
2191- * siplib/siplib.c.in:
2192- Namespaces and mapped types now default to simplewrapper as their
2193- super-type.
2194- [f7fd77d1cd4e]
2195-
2196-2016-01-25 Phil Thompson <phil@riverbankcomputing.com>
2197-
2198- * sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h.in,
2199- sipgen/sipgen.sbf, sipgen/type_hints.c, sphinx/command_line.rst,
2200- sphinx/introduction.rst.in:
2201- Initial support for generating PEP484 type hints.
2202- [4191467f125a]
2203-
2204- * sip.pyi:
2205- Added None return types to the stub file.
2206- [314ef3cd76ed]
2207-
2208-2016-01-24 Phil Thompson <phil@riverbankcomputing.com>
2209-
2210- * configure.py.in:
2211- Hard-code the name of the stub file (rather than handle bespoke
2212- module names).
2213- [e1e4b29eb1a6]
2214-
2215- * configure.py.in, sip.pyi, sphinx/installation.rst:
2216- Added the sip.pyi type hints stub file.
2217- [30e58feee19f]
2218-
2219-2016-01-22 Phil Thompson <phil@riverbankcomputing.com>
2220-
2221- * sphinx/c_api.rst:
2222- Minor docs change.
2223- [dd03f114259c]
2224-
2225-2016-01-17 Phil Thompson <phil@riverbankcomputing.com>
2226-
2227- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2228- Deprecated SIP_SLOT.
2229- [2b821ae5e9f1]
2230-
2231- * Roadmap.rst:
2232- Updated the roadmap.
2233- [495ebc034f99]
2234-
2235- * sphinx/annotations.rst:
2236- Deprecated the SingleShot annotation.
2237- [aa46307e00b4]
2238-
2239- * sipgen/metasrc/parser.y:
2240- Deprecated SIP_RXOBJ_CON and SIP_SLOT_CON.
2241- [affb0c5b465c]
2242-
2243-2016-01-16 Phil Thompson <phil@riverbankcomputing.com>
2244-
2245- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2246- Deprecated SIP_SIGNAL.
2247- [865e00b6ffa0]
2248-
2249-2016-01-15 Phil Thompson <phil@riverbankcomputing.com>
2250-
2251- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2252- Deprecated SIP_ANYSLOT.
2253- [8199aa8980e8]
2254-
2255- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2256- Deprecated SIP_QOBJECT.
2257- [fb9c94746255]
2258-
2259- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2260- Deprecated SIP_RXOBJ_DIS.
2261- [0f26db165557]
2262-
2263- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2264- Deprecated SIP_SLOT_DIS.
2265- [051775601278]
2266-
2267-2016-01-10 Phil Thompson <phil@riverbankcomputing.com>
2268-
2269- * Merged the current maintenance branch.
2270- [b7bd085548b6]
2271-
2272- * sipgen/gencode.c, sipgen/transform.c:
2273- Fixes to the handling of fatal errors.
2274- [f35ebfa4c27f] <4.17-maint>
2275-
2276- * Merged the current maintenance branch with the default.
2277- [d244ec3a2dec]
2278-
2279-2016-01-09 Phil Thompson <phil@riverbankcomputing.com>
2280-
2281- * configure.py.in, sipgen/export.c, sipgen/gencode.c, sipgen/main.c,
2282- sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2283- sipgen/transform.c, siplib/siplib.c.in:
2284- Fixed all compiler warnings.
2285- [9dbdf30558aa] <4.17-maint>
2286-
2287- * sipgen/metasrc/parser.y, sipgen/sip.h.in, siplib/siplib.c.in,
2288- sphinx/specification_files.rst:
2289- Some minor tidy-ups.
2290- [b4edb1990e23] <4.17-maint>
2291-
2292- * Merged the current maintenance branch with the default.
2293- [782cf5e8441e]
2294-
2295-2015-12-20 Phil Thompson <phil@riverbankcomputing.com>
2296-
2297- * sipgen/gencode.c:
2298- Another attempt and preventing accesses to SIP data structures after
2299- the interpreter has gone.
2300- [138eb1eded99] <4.17-maint>
2301-
2302-2015-12-18 Phil Thompson <phil@riverbankcomputing.com>
2303-
2304- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
2305- sphinx/c_api.rst:
2306- Added sipGetInterpreter() to the public API. Avoid the Python
2307- interpreter if it has gone when getting a QMetaObject.
2308- [61d8f0f6f5c0] <4.17-maint>
2309-
2310-2015-12-12 Phil Thompson <phil@riverbankcomputing.com>
2311-
2312- * siplib/siplib.c.in:
2313- Cleared a benign exception in the handling of mixins.
2314- [602884540b54] <4.17-maint>
2315-
2316-2015-12-02 Phil Thompson <phil@riverbankcomputing.com>
2317-
2318- * siplib/siplib.c.in:
2319- Fixed the previous fix.
2320- [17876e15c41d] <4.17-maint>
2321-
2322-2015-11-25 Phil Thompson <phil@riverbankcomputing.com>
2323-
2324- * siplib/siplib.c.in:
2325- Restrict the invocation of sub-class convertors to those that handle
2326- direct sub-classes.
2327- [57cbe5142d57] <4.17-maint>
2328-
2329-2015-10-28 Phil Thompson <phil@riverbankcomputing.com>
2330-
2331- * siplib/siplib.c.in:
2332- Invoking sub-class convertor code turns out to be quite expensive so
2333- check the object map first. Check the object map again if the
2334- convertor code needed to be invoked. This change is absolutely
2335- fundamental to the inner workings so may have some unexpected
2336- consequences.
2337- [77fde6c0ee2d] <4.17-maint>
2338-
2339-2015-10-27 Phil Thompson <phil@riverbankcomputing.com>
2340-
2341- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c,
2342- siplib/siplib.c.in:
2343- Refactored the handling of casts so that cast functions are only
2344- generated for classes that multiply inherit somewhere in their class
2345- hierarchy.
2346- [14bfbaf7431a] <4.17-maint>
2347-
2348-2015-10-24 Phil Thompson <phil@riverbankcomputing.com>
2349-
2350- * .hgtags:
2351- Added tag 4.17 for changeset 0cbb680b4f69
2352- [36d16e74cf7f]
2353-
2354- * NEWS:
2355- Released as v4.17.
2356- [0cbb680b4f69] [4.17]
2357-
2358-2015-09-10 Phil Thompson <phil@riverbankcomputing.com>
2359-
2360- * siplib/sip.h.in.in:
2361- Fix extensions that use Python v3.5 slots but are being built with
2362- an earlier version.
2363- [9102d6c3daf0]
2364-
2365-2015-09-08 Phil Thompson <phil@riverbankcomputing.com>
2366-
2367- * specs/win32-msvc2015:
2368- Tweak win32-msvc2015 to suppress a warning message.
2369- [74754ca3e59f]
2370-
2371- * configure.py.in, specs/win32-msvc2010, specs/win32-msvc2015:
2372- Added win32-msvc2015 to the build system.
2373- [fca4f2fcbb39]
2374-
2375-2015-09-03 Phil Thompson <phil@riverbankcomputing.com>
2376-
2377- * siplib/sip.h.in.in:
2378- Added a comment about adding new slot types and its effect on the
2379- ABI.
2380- [50af972e1652]
2381-
2382-2015-09-02 Phil Thompson <phil@riverbankcomputing.com>
2383-
2384- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2385- siplib/sip.h.in.in, siplib/siplib.c.in,
2386- sphinx/specification_files.rst:
2387- Added support for PEP 492, ie. the __await__, __aiter__ and
2388- __anext__ special methods.
2389- [f5d07b919355]
2390-
2391- * sipgen/metasrc/parser.y, siplib/siplib.c.in:
2392- Add __aenter__ and __aexit__ and non-lazy methods.
2393- [979e23401d1d]
2394-
2395- * sipgen/metasrc/parser.y:
2396- Fixed a regression in the handling of the __len__ annotation.
2397- [cad3bdaecf3e]
2398-
2399- * sphinx/static/default.css:
2400- Merged the 4.16-main branch into the trunk.
2401- [b4f30681b90f]
2402-
2403- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2404- siplib/sip.h.in.in, siplib/siplib.c.in, siplib/voidptr.c,
2405- sphinx/annotations.rst, sphinx/specification_files.rst:
2406- Implemented support for PEP465 (array infix operator) ie. the
2407- __matmul__ and __imatmul__ special methods and function annotations
2408- of the same name.
2409- [ff867feb8f90] <4.16-maint>
2410-
2411- * siplib/voidptr.c:
2412- Tweaked an exception message to follow the style adopted in Python
2413- v3.5.
2414- [e98693bf17d7] <4.16-maint>
2415-
2416-2015-08-02 Phil Thompson <phil@riverbankcomputing.com>
2417-
2418- * siplib/siplib.c.in:
2419- Fixed the error handling of sipCallMethod() when a re-implementation
2420- raises an exception.
2421- [27c61f660fba] <4.16-maint>
2422-
2423-2015-07-17 Phil Thompson <phil@riverbankcomputing.com>
2424-
2425- * .hgtags:
2426- Added tag 4.16.9 for changeset 87de938efba2
2427- [90aaa31768c9] <4.16-maint>
2428-
2429- * NEWS:
2430- Released as v4.16.9.
2431- [87de938efba2] [4.16.9] <4.16-maint>
2432-
2433- * sipgen/export.c:
2434- Added the "virtual" attribute to the exported XML.
2435- [e37fcc2e29e2] <4.16-maint>
2436-
2437-2015-07-10 Phil Thompson <phil@riverbankcomputing.com>
2438-
2439- * siplib/siplib.c.in:
2440- Improved the detail of the text of the exception
2441- sipBadCatcherResult() raises.
2442- [4f7ad0a4e353] <4.16-maint>
2443-
2444- * siplib/siplib.c.in:
2445- Allow for an /External/ class being referenced when the module
2446- containing its implementation hasn't been imported.
2447- [1574043cc948] <4.16-maint>
2448-
2449-2015-07-07 Phil Thompson <phil@riverbankcomputing.com>
2450-
2451- * siplib/siplib.c.in:
2452- Fix a problem caused by PyQt4 wrapping the QApplication C++ instance
2453- as multiple Python objects.
2454- [42a056fbf006] <4.16-maint>
2455-
2456-2015-06-30 Phil Thompson <phil@riverbankcomputing.com>
2457-
2458- * siplib/siplib.c.in:
2459- Remove an object from the map whenever the pointer ot the C/C++
2460- instance is cleared.
2461- [8dd533ab6ce9] <4.16-maint>
2462-
2463-2015-06-20 Phil Thompson <phil@riverbankcomputing.com>
2464-
2465- * sipgen/gencode.c:
2466- Fixed a missing reference in the previous fix.
2467- [1a2704282933] <4.16-maint>
2468-
2469- * sipgen/gencode.c:
2470- Fixed a regression in the handling of static non-pointer object
2471- variables.
2472- [dafbaadea76b] <4.16-maint>
2473-
2474-2015-06-11 Phil Thompson <phil@riverbankcomputing.com>
2475-
2476- * .hgtags:
2477- Added tag 4.16.8 for changeset f87e232098eb
2478- [95abaccb67d6] <4.16-maint>
2479-
2480- * NEWS:
2481- Released as v4.16.8.
2482- [f87e232098eb] [4.16.8] <4.16-maint>
2483-
2484-2015-06-09 Phil Thompson <phil@riverbankcomputing.com>
2485-
2486- * siplib/sip.h.in.in:
2487- Bump the internal API version number.
2488- [6069463e8937] <4.16-maint>
2489-
2490- * sipgen/gencode.c, sipgen/metasrc/parser.y, siplib/sip.h.in.in,
2491- siplib/siplib.c.in:
2492- Fixed the handling of non-pointer object variables so that they are
2493- only wrapped once and the Python object cached.
2494- [11a92ebd4840] <4.16-maint>
2495-
2496-2015-06-08 Phil Thompson <phil@riverbankcomputing.com>
2497-
2498- * sphinx/using.rst:
2499- Fixed a type in the docs.
2500- [7d0d2cede024] <4.16-maint>
2501-
2502-2015-06-02 Phil Thompson <phil@riverbankcomputing.com>
2503-
2504- * NEWS:
2505- Updated the NEWS file.
2506- [92c83f02758f] <4.16-maint>
2507-
2508-2015-05-24 Phil Thompson <phil@riverbankcomputing.com>
2509-
2510- * sipgen/metasrc/parser.y, sphinx/specification_files.rst:
2511- Added support for the current Python3 exceptions.
2512- [79afcf752c2a] <4.16-maint>
2513-
2514-2015-05-08 Phil Thompson <phil@riverbankcomputing.com>
2515-
2516- * siplib/siplib.c.in:
2517- Fixed bugs maintaining the deleted state of wrapped instances.
2518- [e5674f034e48] <4.16-maint>
2519-
2520-2015-03-25 Phil Thompson <phil@riverbankcomputing.com>
2521-
2522- * sipgen/metasrc/parser.y:
2523- Fixed a regression in v4.16.7 that affects methods with %MethodCode
2524- and the __len__ annotation.
2525- [765b6874363f] <4.16-maint>
2526-
2527- * .hgtags:
2528- Added tag 4.16.7 for changeset 9076f70a012c
2529- [dffe9ad569c9] <4.16-maint>
2530-
2531- * NEWS:
2532- Released as v4.16.7.
2533- [9076f70a012c] [4.16.7] <4.16-maint>
2534-
2535- * sphinx/static/classic.css, sphinx/static/default.css:
2536- Fixed the stylesheet.
2537- [af2e27024d33] <4.16-maint>
2538-
2539-2015-03-21 Phil Thompson <phil@riverbankcomputing.com>
2540-
2541- * sipgen/gencode.c:
2542- Fix the declaration of sipRes in the %VirtualCallCode support.
2543- [bd92aad3cf7d] <4.16-maint>
2544-
2545-2015-03-19 Phil Thompson <phil@riverbankcomputing.com>
2546-
2547- * sphinx/specification_files.rst:
2548- Added %VirtualCallCode to the BNF.
2549- [cf1ad8f7be68] <4.16-maint>
2550-
2551- * sphinx/directives.rst:
2552- Documented %VirtualCallCode.
2553- [752beb1cd641] <4.16-maint>
2554-
2555- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
2556- sipgen/sip.h.in:
2557- Renamed %InvokeCode to %VirtualCallCode and only use it in a
2558- generated virtual reimplementation.
2559- [82c8303a8041] <4.16-maint>
2560-
2561- * sipgen/gencode.c, sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y,
2562- sipgen/sip.h.in:
2563- Implemented the %InvokeCode directive.
2564- [d85f3584b06f] <4.16-maint>
2565-
2566- * siplib/siplib.c.in:
2567- Fixed the handling of keyword argument when keywords can be used for
2568- all arguments.
2569- [2ae037bbfa23] <4.16-maint>
2570-
2571- * sphinx/directives.rst:
2572- Fixed a documentation typo.
2573- [fb4c980c92cc] <4.16-maint>
2574-
2575- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
2576- Backed out changeset 9e11298be101 A more correct solution is
2577- required.
2578- [e212465fed26] <4.16-maint>
2579-
2580-2015-03-16 Phil Thompson <phil@riverbankcomputing.com>
2581-
2582- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
2583- Reverted to the pre-v4.15 behavour when generating the scope of a
2584- call to a virtual implementation where the scope may be ambiguous.
2585- This may not be the right call, but at least the code compiles.
2586- [9e11298be101] <4.16-maint>
2587-
2588-2015-03-11 Phil Thompson <phil@riverbankcomputing.com>
2589-
2590- * sipgen/gencode.c, sipgen/transform.c:
2591- Fixed a bug where the original typedef of an argument of a mapped
2592- template type was being corrupted.
2593- [f652446e2462] <4.16-maint>
2594-
2595- * sphinx/conf.py.in:
2596- Updated for sphinx v1.3.
2597- [569a9695bc2f] <4.16-maint>
2598-
2599- * sipgen/sip.h.in:
2600- Fixed a regression in the handling of module flags.
2601- [3f8c05ac8e47] <4.16-maint>
2602-
2603-2015-02-25 Phil Thompson <phil@riverbankcomputing.com>
2604-
2605- * .hgtags:
2606- Added tag 4.16.6 for changeset 1c5f5c8c7416
2607- [6c73a1f41add] <4.16-maint>
2608-
2609- * NEWS:
2610- Released v4.16.6.
2611- [1c5f5c8c7416] [4.16.6] <4.16-maint>
2612-
2613- * NEWS:
2614- Updated the NEWS file.
2615- [bf261aa4b322] <4.16-maint>
2616-
2617-2015-02-23 Phil Thompson <phil@riverbankcomputing.com>
2618-
2619- * sipgen/gencode.c:
2620- Added support for module-level PyObjects.
2621- [136913548818] <4.16-maint>
2622-
2623-2015-02-14 Phil Thompson <phil@riverbankcomputing.com>
2624-
2625- * configure.py.in:
2626- Installing into a virtual env should now work.
2627- [5e133f99d74e] <4.16-maint>
2628-
2629- * siplib/siplib.c.in:
2630- Fixed the handling of an empty dict of keyword arguments.
2631- [5f5542824235] <4.16-maint>
2632-
2633-2015-02-09 Phil Thompson <phil@riverbankcomputing.com>
2634-
2635- * sipgen/main.c, sphinx/command_line.rst:
2636- The -T command line option is now ignored and deprecated. Timestamps
2637- in generated files are always disabled.
2638- [9b1a195afe04] <4.16-maint>
2639-
2640- * sipgen/main.c, sphinx/command_line.rst:
2641- Added support for the '@file' format for passing additional command
2642- line options in a file.
2643- [6c270132db87] <4.16-maint>
2644-
2645-2015-02-07 Phil Thompson <phil@riverbankcomputing.com>
2646-
2647- * sipgen/main.c, sphinx/command_line.rst:
2648- Deprecated the -z option to the code generator.
2649- [b1dff38b9766] <4.16-maint>
2650-
2651-2015-02-06 Phil Thompson <phil@riverbankcomputing.com>
2652-
2653- * siplib/siplib.c.in:
2654- Fixed a couple of compiler warnings.
2655- [d653de687fd4] <4.16-maint>
2656-
2657-2015-02-04 Phil Thompson <phil@riverbankcomputing.com>
2658-
2659- * Merged the current 4.16-maint branch into the trunk.
2660- [f207b8886557]
2661-
2662-2015-01-30 Phil Thompson <phil@riverbankcomputing.com>
2663-
2664- * siplib/siplib.c.in:
2665- Fixed the lookup of slots.
2666- [56c254273cd8] <4.16-maint>
2667-
2668-2015-01-05 Phil Thompson <phil@riverbankcomputing.com>
2669-
2670- * sipgen/metasrc/parser.y:
2671- Fixed an invalid deprecation warning.
2672- [3c5425fa3c80] <4.16-maint>
2673-
2674-2015-01-02 Phil Thompson <phil@riverbankcomputing.com>
2675-
2676- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2677- sphinx/annotations.rst:
2678- Added the /FileExtension/ class annotation.
2679- [51f7769fe32f] <4.16-maint>
2680-
2681- * LICENSE, Roadmap.rst, build.py, configure.py.in, sipgen/export.c,
2682- sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/main.c,
2683- sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2684- sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
2685- siplib/array.c, siplib/array.h, siplib/bool.cpp,
2686- siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
2687- siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
2688- siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
2689- siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
2690- Updated the copyright notices.
2691- [ccd0bdd9b21c] <4.16-maint>
2692-
2693- * siputils.py, sphinx/build_system.rst, sphinx/c_api.rst,
2694- sphinx/python_api.rst:
2695- Updated the docs in preparation for snapshots being called previews.
2696- [c42e02f71e27] <4.16-maint>
2697-
2698-2014-12-31 Phil Thompson <phil@riverbankcomputing.com>
2699-
2700- * sipgen/gencode.c:
2701- Fixed a code generation bug when a C/C++ argument was a pointer to a
2702- struct/class and the Python argument was a void*.
2703- [51b0b1f31cea] <4.16-maint>
2704-
2705-2014-12-25 Phil Thompson <phil@riverbankcomputing.com>
2706-
2707- * configure.py.in, siputils.py:
2708- Fixed the --target-py-version flag to configure.py.
2709- [0e9e078d2d18] <4.16-maint>
2710-
2711-2014-12-24 Phil Thompson <phil@riverbankcomputing.com>
2712-
2713- * .hgtags:
2714- Added tag 4.16.5 for changeset 9c27ed5e0d77
2715- [6aa131ac48e8] <4.16-maint>
2716-
2717- * NEWS:
2718- Released as v4.16.5.
2719- [9c27ed5e0d77] [4.16.5] <4.16-maint>
2720-
2721-2014-12-23 Phil Thompson <phil@riverbankcomputing.com>
2722-
2723- * sipgen/gencode.c:
2724- Fixed SIP_SLOT_CON and SIP_SLOT_DIS so that they generate const
2725- char*.
2726- [7f4c922a779f] <4.16-maint>
2727-
2728-2014-12-18 Phil Thompson <phil@riverbankcomputing.com>
2729-
2730- * siplib/array.c, siplib/voidptr.c, sphinx/c_api.rst,
2731- sphinx/python_api.rst:
2732- Added sip.voidptr.asarray().
2733- [d3b5a974ac69] <4.16-maint>
2734-
2735-2014-12-07 Phil Thompson <phil@riverbankcomputing.com>
2736-
2737- * siplib/voidptr.c:
2738- Updated a deprecated definition of method arguments.
2739- [529b8cd2ab89] <4.16-maint>
2740-
2741-2014-11-29 Phil Thompson <phil@riverbankcomputing.com>
2742-
2743- * siputils.py:
2744- Fixed a regression when adding the VPATH support for moc.
2745- [c2c285a80412] <4.16-maint>
2746-
2747-2014-11-16 Phil Thompson <phil@riverbankcomputing.com>
2748-
2749- * build.py:
2750- A source package now includes a full ChangeLog.
2751- [c005a6d2e53e] <4.16-maint>
2752-
2753-2014-11-05 Phil Thompson <phil@riverbankcomputing.com>
2754-
2755- * siputils.py:
2756- Build system fix so that generated Makefiles support VPATH with moc.
2757- [3f9301ccb08a] <4.16-maint>
2758-
2759-2014-11-04 Phil Thompson <phil@riverbankcomputing.com>
2760-
2761- * configure.py.in, siputils.py, sphinx/build_system.rst:
2762- Fixed bugs with out-of-tree builds.
2763- [4579c80da1be] <4.16-maint>
2764-
2765- * sphinx/build_system.rst, sphinx/distutils.rst:
2766- Updated the docs regarding the build system and SIP v5.
2767- [2828a3bb25af] <4.16-maint>
2768-
2769- * sphinx/c_api.rst:
2770- Updated the docs for sip.SIP_VERSION_STR.
2771- [04e7630e6a41] <4.16-maint>
2772-
2773-2014-11-03 Phil Thompson <phil@riverbankcomputing.com>
2774-
2775- * build.py:
2776- Removed the reference to MacHg in the internal build script.
2777- [b1668849c472] <4.16-maint>
2778-
2779-2014-10-23 Phil Thompson <phil@riverbankcomputing.com>
2780-
2781- * .hgtags:
2782- Added tag 4.16.4 for changeset c5d0da367a1e
2783- [cb045f5e074a] <4.16-maint>
2784-
2785- * NEWS:
2786- Released as v4.16.4.
2787- [c5d0da367a1e] [4.16.4] <4.16-maint>
2788-
2789-2014-10-19 Phil Thompson <phil@riverbankcomputing.com>
2790-
2791- * sipgen/gencode.c:
2792- Fixed a code generation bug related to encoded C string arguments to
2793- virtuals.
2794- [f230cfcebc36] <4.16-maint>
2795-
2796-2014-10-15 Phil Thompson <phil@riverbankcomputing.com>
2797-
2798- * siplib/descriptors.c:
2799- Minor fix for Python v2.5 and earlier.
2800- [3b7f6957ae4b] <4.16-maint>
2801-
2802-2014-10-06 Phil Thompson <phil@riverbankcomputing.com>
2803-
2804- * siplib/siplib.c.in:
2805- Reimplemented the __qualname__ support for enums so that it is
2806- always non_NULL (because Python accesses the value directly
2807- internally and doesn't go through the attribute interface).
2808- [c2cfa151229a] <4.16-maint>
2809-
2810-2014-10-04 Phil Thompson <phil@riverbankcomputing.com>
2811-
2812- * siplib/sip.h.in.in, sphinx/c_api.rst:
2813- Removed SIP_REACQUIRE_GIL as we no longer need it.
2814- [7e026c2613ec] <4.16-maint>
2815-
2816- * sipgen/transform.c:
2817- Fixed a recent regression in the de-duplication of virtual catchers.
2818- [65abadff114d] <4.16-maint>
2819-
2820-2014-10-03 Phil Thompson <phil@riverbankcomputing.com>
2821-
2822- * siplib/sip.h.in.in, sphinx/c_api.rst:
2823- Added SIP_REACQUIRE_GIL.
2824- [9ff042abc188] <4.16-maint>
2825-
2826-2014-10-01 Phil Thompson <phil@riverbankcomputing.com>
2827-
2828- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2829- sipgen/transform.c, sphinx/annotations.rst:
2830- Added the /AbortOnException/ function annotation.
2831- [835f4d6bcb99] <4.16-maint>
2832-
2833- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/transform.c,
2834- sphinx/annotations.rst:
2835- Added the /DisallowNone/ function annotation.
2836- [8b2f4c02e106] <4.16-maint>
2837-
2838- * sipgen/export.c, sipgen/gencode.c, sipgen/metasrc/parser.y,
2839- sipgen/sip.h.in, sphinx/annotations.rst:
2840- Implemented the /DisallowNone/ argument annotation.
2841- [d3a7fd6b1344] <4.16-maint>
2842-
2843- * sipgen/metasrc/parser.y, sipgen/transform.c, sphinx/annotations.rst,
2844- sphinx/c_api.rst:
2845- Added the AllowNone function annotation.
2846- [9d52162606b5] <4.16-maint>
2847-
2848-2014-09-26 Phil Thompson <phil@riverbankcomputing.com>
2849-
2850- * sipgen/transform.c:
2851- Virtual handlers with handwritten code can no longer be considered
2852- to be the same.
2853- [a4c712b72828] <4.16-maint>
2854-
2855-2014-09-11 Phil Thompson <phil@riverbankcomputing.com>
2856-
2857- * .hgtags:
2858- Added tag 4.16.3 for changeset 8ead57151bd1
2859- [de0c3c076ab3] <4.16-maint>
2860-
2861- * NEWS:
2862- Released as v4.16.3.
2863- [8ead57151bd1] [4.16.3] <4.16-maint>
2864-
2865-2014-09-04 Phil Thompson <phil@riverbankcomputing.com>
2866-
2867- * NEWS:
2868- Updated the NEWS file.
2869- [b5de96615389] <4.16-maint>
2870-
2871-2014-09-03 Phil Thompson <phil@riverbankcomputing.com>
2872-
2873- * siplib/array.c, siplib/bool.cpp, siplib/siplib.c.in:
2874- Eliminated all compiler warnings when building on Windows with
2875- qmake.
2876- [1a321ad68223] <4.16-maint>
2877-
2878-2014-09-02 Phil Thompson <phil@riverbankcomputing.com>
2879-
2880- * siplib/siplib.c.in:
2881- Enums now support PEP 3155 fro Python v3.3 and later.
2882- [a3f8a9b56659] <4.16-maint>
2883-
2884-2014-07-10 Phil Thompson <phil@riverbankcomputing.com>
2885-
2886- * build.py, configure.py.in:
2887- Added fixes for QTBUG-39300.
2888- [53f490fe8f52] <4.16-maint>
2889-
2890-2014-07-03 Phil Thompson <phil@riverbankcomputing.com>
2891-
2892- * .hgtags:
2893- Added tag 4.16.2 for changeset 4eb546b2c208
2894- [21412c346e75] <4.16-maint>
2895-
2896- * NEWS:
2897- Released as v4.16.2.
2898- [4eb546b2c208] [4.16.2] <4.16-maint>
2899-
2900-2014-06-22 Phil Thompson <phil@riverbankcomputing.com>
2901-
2902- * sipgen/gencode.c:
2903- Fixed a regression that introduced some "modern" C code.
2904- [449e2866018a] <4.16-maint>
2905-
2906-2014-06-16 Phil Thompson <phil@riverbankcomputing.com>
2907-
2908- * NEWS, sipgen/metasrc/parser.y, sphinx/directives.rst:
2909- Deprecated the %ConsolidatedModule directive as it won't be
2910- supported in SIP v5.
2911- [e4dc9d633742] <4.16-maint>
2912-
2913-2014-06-15 Phil Thompson <phil@riverbankcomputing.com>
2914-
2915- * sipgen/gencode.c:
2916- Fixed a bug with /Out/ class pointer arguments in virtual methods.
2917- [8abafd34bfab] <4.16-maint>
2918-
2919- * sipgen/gencode.c:
2920- Work around what looks like a Python2 bug in the handling of
2921- composite modules.
2922- [f113aea18630] <4.16-maint>
2923-
2924-2014-06-09 Phil Thompson <phil@riverbankcomputing.com>
2925-
2926- * .hgtags:
2927- Added tag 4.16.1 for changeset efd5e09a4024
2928- [787e2ce426f7] <4.16-maint>
2929-
2930- * NEWS:
2931- Released as v4.16.1.
2932- [efd5e09a4024] [4.16.1] <4.16-maint>
2933-
2934-2014-06-03 Phil Thompson <phil@riverbankcomputing.com>
2935-
2936- * configure.py.in:
2937- Fixes for Python v2.6.
2938- [3974dcb54776] <4.16-maint>
2939-
2940-2014-06-01 Phil Thompson <phil@riverbankcomputing.com>
2941-
2942- * sipgen/gencode.c:
2943- Fixed a regression in the creating of the build file when generating
2944- individual source files.
2945- [d9229cce7220] <4.16-maint>
2946-
2947-2014-05-26 Phil Thompson <phil@riverbankcomputing.com>
2948-
2949- * .hgtags:
2950- Added tag 4.16 for changeset d3a907d2acd1
2951- [2a310fa9719a]
2952-
2953- * NEWS:
2954- Released as v4.16.
2955- [d3a907d2acd1] [4.16]
2956-
2957-2014-05-25 Phil Thompson <phil@riverbankcomputing.com>
2958-
2959- * siplib/descriptors.c:
2960- Fixed a regression introduced when getting rid of warning messages.
2961- [9472e2f08313]
2962-
2963-2014-05-23 Phil Thompson <phil@riverbankcomputing.com>
2964-
2965- * configure.py.in:
2966- Fixed a regression in the handling of the --platform configure.py
2967- option.
2968- [1cc4bd967882]
2969-
2970-2014-05-18 Phil Thompson <phil@riverbankcomputing.com>
2971-
2972- * siplib/siplib.c.in:
2973- Eliminated a couple of (benign) warning messages.
2974- [f6acb8ed7b65]
2975-
2976-2014-05-16 Phil Thompson <phil@riverbankcomputing.com>
2977-
2978- * NEWS:
2979- Updated the NEWS file.
2980- [d3c64f5117e0]
2981-
2982- * sipgen/main.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
2983- sphinx/command_line.rst, sphinx/directives.rst,
2984- sphinx/incompatibilities.rst:
2985- Changed the handling of timelines so that the latest version is
2986- enabled if no known version is explicitly enabled. Added the -B
2987- option to sip to allow timeline backstops to be defined.
2988- [8a3fb94329aa]
2989-
2990-2014-05-15 Phil Thompson <phil@riverbankcomputing.com>
2991-
2992- * configure.py.in:
2993- Fixed a bug in the handling of configuration files.
2994- [61da788f455f]
2995-
2996-2014-05-14 Phil Thompson <phil@riverbankcomputing.com>
2997-
2998- * sipgen/gencode.c:
2999- Don't generate an interface file if it will be empty.
3000- [3f7d0afde4ce]
3001-
3002- * siplib/siplib.c.in:
3003- Ignore overflows when converting Python ints to C/C++.
3004- [8065fb1cb418]
3005-
3006-2014-05-13 Phil Thompson <phil@riverbankcomputing.com>
3007-
3008- * NEWS, sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
3009- sphinx/annotations.rst:
3010- Added the /NoSetter/ variable annotation.
3011- [422cc3b4ee5b]
3012-
3013- * sipgen/gencode.c:
3014- Fixed a code generation bug for variables with multi-const types.
3015- [dd6840986c03]
3016-
3017-2014-05-12 Phil Thompson <phil@riverbankcomputing.com>
3018-
3019- * siplib/array.c, siplib/descriptors.c, siplib/siplib.c.in,
3020- siplib/voidptr.c:
3021- Fixed building against Python v2.5 and earlier.
3022- [be46b0f3b785]
3023-
3024- * NEWS, configure.py.in, sphinx/installation.rst:
3025- Added the --no-tools option to configure.py.
3026- [fcc0fc5d24c4]
3027-
3028-2014-05-11 Phil Thompson <phil@riverbankcomputing.com>
3029-
3030- * sphinx/installation.rst:
3031- Some documentation fixes.
3032- [210151d0ba6a]
3033-
3034- * build.py, configurations/rpi_py3.cfg, sphinx/installation.rst:
3035- Removed the configurations directory.
3036- [4b482124587b]
3037-
3038- * siplib/apiversions.c, siplib/array.c, siplib/descriptors.c,
3039- siplib/siplib.c.in, siplib/voidptr.c:
3040- Eliminated most warning messages. Fixed a memory leak in the
3041- handling of sip.array.
3042- [63626dea7508]
3043-
3044- * configure.py.in, sphinx/installation.rst:
3045- Removed the unneeded support for continuation lines in configuration
3046- files.
3047- [95f40f9a8967]
3048-
3049- * NEWS, build.py, configurations/rpi_py3.cfg, configure.py.in,
3050- siputils.py, sphinx/installation.rst:
3051- Removed the --static-root option. Added the --configuration,
3052- --sysroot and --target-py-version options. Added the Raspberry Pi
3053- configuration file.
3054- [e57308c0ef92]
3055-
3056-2014-05-05 Phil Thompson <phil@riverbankcomputing.com>
3057-
3058- * NEWS, build.py, configure.py.in, sphinx/installation.rst:
3059- Added the --use-qmake option to configure.py so that it can be
3060- cross-compiled.
3061- [163331dc90b0]
3062-
3063-2014-05-04 Phil Thompson <phil@riverbankcomputing.com>
3064-
3065- * build.py, custom/custom.c, custom/customw.c, custom/mkcustom.py,
3066- sphinx/build_system.rst, sphinx/builtin.rst, sphinx/index.rst:
3067- Removed the (way out of date and superceded by pyqtdeploy) custom
3068- directory.
3069- [4e4a1cbe2f7e]
3070-
3071- * NEWS, configure.py.in, sphinx/installation.rst:
3072- Added the --static-root option to configure.py.
3073- [c90befbc77d2]
3074-
3075-2014-04-26 Phil Thompson <phil@riverbankcomputing.com>
3076-
3077- * siputils.py:
3078- Handle in-line comments in spec files.
3079- [044852da62d4]
3080-
3081-2014-04-24 Phil Thompson <phil@riverbankcomputing.com>
3082-
3083- * siplib/voidptr.c:
3084- Fixed the previous fix. (This is C not C++.)
3085- [a67e996e00d3]
3086-
3087-2014-04-23 Phil Thompson <phil@riverbankcomputing.com>
3088-
3089- * NEWS, siplib/voidptr.c:
3090- Implemented nb_bool for sip.voidptr.
3091- [7ca5aa6bde10]
3092-
3093-2014-04-21 Phil Thompson <phil@riverbankcomputing.com>
3094-
3095- * NEWS, siplib/qtlib.c, siplib/sipint.h:
3096- Reversed the sense of the argument to check for signal receivers.
3097- [e14829596147]
3098-
3099- * NEWS, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h.in.in,
3100- siplib/sipint.h, siplib/siplib.c.in:
3101- Added sipInvokeSlotEx() as support for the upcoming 'check_receiver'
3102- flag in PyQt's connect().
3103- [d7ef32db3967]
3104-
3105-2014-04-20 Phil Thompson <phil@riverbankcomputing.com>
3106-
3107- * sipgen/lexer.l, sipgen/parser.y:
3108- Merged the v4.15 maintenance branch into the trunk.
3109- [8e55c9f2ba87]
3110-
3111-2014-04-15 Phil Thompson <phil@riverbankcomputing.com>
3112-
3113- * sphinx/conf.py.in:
3114- Fixed the missing logo thumbnail.
3115- [f53a9094e52e] <4.15-maint>
3116-
3117-2014-04-08 Phil Thompson <phil@riverbankcomputing.com>
3118-
3119- * siplib/siplib.c.in, sphinx/build_system.rst, sphinx/using.rst:
3120- Updated the docs so that pyqtconfig is only mentioned in the context
3121- of PyQt4. Fixed some typos.
3122- [efa359fde2a4] <4.15-maint>
3123-
3124-2014-03-25 Phil Thompson <phil@riverbankcomputing.com>
3125-
3126- * sipgen/gencode.c:
3127- Fixed the generation of Qt signal signatures so that they are
3128- correct for Qt5.
3129- [3f9633204687] <4.15-maint>
3130-
3131-2014-03-21 Phil Thompson <phil@riverbankcomputing.com>
3132-
3133- * sipgen/metasrc/parser.y, sipgen/sip.h.in:
3134- Fixed the handling of platforms and features that are disabled by
3135- other platforms or features.
3136- [0c1b13e45887] <4.15-maint>
3137-
3138-2014-03-20 Phil Thompson <phil@riverbankcomputing.com>
3139-
3140- * sipgen/gencode.c:
3141- Fixed the handling of enums for C++11.
3142- [85e544458789] <4.15-maint>
3143-
3144-2014-03-14 Phil Thompson <phil@riverbankcomputing.com>
3145-
3146- * .hgtags:
3147- Added tag 4.15.5 for changeset 13906834d910
3148- [411bbc879ae6] <4.15-maint>
3149-
3150- * NEWS:
3151- Released as v4.15.5.
3152- [13906834d910] [4.15.5] <4.15-maint>
3153-
3154-2014-03-13 Phil Thompson <phil@riverbankcomputing.com>
3155-
3156- * siplib/siplib.c.in:
3157- Make sure an object doesn't already have a parent when adding it in
3158- __init__() (ie. avoid an infinite loop if __init__() is called twice
3159- for an object).
3160- [05c32deeaeed] <4.15-maint>
3161-
3162-2014-03-05 Phil Thompson <phil@riverbankcomputing.com>
3163-
3164- * NEWS:
3165- Updated the NEWS file.
3166- [8d7c37ddc55d] <4.15-maint>
3167-
3168-2014-02-22 Phil Thompson <phil@riverbankcomputing.com>
3169-
3170- * sipgen/gencode.c, siplib/sip.h.in.in:
3171- Added the PyQt signal hack #3. All versions of signals with optional
3172- arguments are now generated for PyQt4 when built against Qt5.
3173- [22c03a345d4e] <4.15-maint>
3174-
3175-2014-02-21 Phil Thompson <phil@riverbankcomputing.com>
3176-
3177- * siputils.py:
3178- Fixed the creation of wrapper scripts for Python v3.4 on OS/X.
3179- [93e30c84cbf9] <4.15-maint>
3180-
3181-2014-02-20 Phil Thompson <phil@riverbankcomputing.com>
3182-
3183- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
3184- siplib/sip.h.in.in:
3185- Support for the PyQt4 signal hacks when building against Qt5.
3186- [8bff7edb3c80] <4.15-maint>
3187-
3188-2014-02-18 Phil Thompson <phil@riverbankcomputing.com>
3189-
3190- * sipgen/gencode.c, siplib/sip.h.in.in:
3191- Implemented the PyQt5 signal emitters.
3192- [4fc63f9adb44] <4.15-maint>
3193-
3194- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
3195- siplib/sip.h.in.in, siplib/siplib.c.in:
3196- Bumped the internal API to v11.0. The PyQt4 and PyQt5 specific data
3197- structures are now completely separate in preparation for the signal
3198- changes needed by PyQt5. Renamed the PyQt4Flags and
3199- PyQt4NoQMetaObject annotations so that they are not PyQt4 specific.
3200- [b96a5e69adb6] <4.15-maint>
3201-
3202-2014-02-09 Phil Thompson <phil@riverbankcomputing.com>
3203-
3204- * sipgen/gencode.c:
3205- Fixed a name clash for a type in a module that has the same name as
3206- the module when building against Python v2.
3207- [d45411f2a001] <4.15-maint>
3208-
3209-2014-02-06 Phil Thompson <phil@riverbankcomputing.com>
3210-
3211- * siputils.py:
3212- Relax a test in the build system for PyQt v4.10.3 and earlier so
3213- that we don't have to synch releases.
3214- [e6e10c9f08b5] <4.15-maint>
3215-
3216-2014-02-05 Phil Thompson <phil@riverbankcomputing.com>
3217-
3218- * siplib/siplib.c.in:
3219- sip.wrapinstance() will now handle addresses >32 bits on Windows64.
3220- [5a95f257ccca] <4.15-maint>
3221-
3222-2014-02-04 Phil Thompson <phil@riverbankcomputing.com>
3223-
3224- * sipgen/gencode.c, sphinx/annotations.rst:
3225- Fixed the /KeepReference/ function annotation when applied to static
3226- functions.
3227- [2737c3074f4d] <4.15-maint>
3228-
3229- * siputils.py:
3230- Removed the requirement that Python must be built as a framework on
3231- OS/X.
3232- [fb6dbd80297b] <4.15-maint>
3233-
3234-2014-01-22 Phil Thompson <phil@riverbankcomputing.com>
3235-
3236- * sipgen/gencode.c, sipgen/metasrc/parser.y, sipgen/sip.h.in:
3237- Removed the unnecessary (and broken) support for __unicode__().
3238- [0b19f77489ce] <4.15-maint>
3239-
3240-2014-01-17 Phil Thompson <phil@riverbankcomputing.com>
3241-
3242- * NEWS, siputils.py, sphinx/build_system.rst:
3243- The use_arch argument of sipconfig.create_wrapper() will now accept
3244- a space separated set of architectures.
3245- [6fe353128007] <4.15-maint>
3246-
3247-2014-01-10 Phil Thompson <phil@riverbankcomputing.com>
3248-
3249- * configure.py.in:
3250- Fixed a bug building on OSX when passing a value of LIBDIR to
3251- configure.py on the command line.
3252- [577bff05ca6d] <4.15-maint>
3253-
3254-2014-01-07 Phil Thompson <phil@riverbankcomputing.com>
3255-
3256- * .hgtags:
3257- Added tag 4.15.4 for changeset 4d629a0d7510
3258- [79a5b5e82ca3] <4.15-maint>
3259-
3260- * NEWS:
3261- Released as v4.15.4.
3262- [4d629a0d7510] [4.15.4] <4.15-maint>
3263-
3264-2014-01-02 Phil Thompson <phil@riverbankcomputing.com>
3265-
3266- * LICENSE, Roadmap.rst, build.py, configure.py.in, sipgen/export.c,
3267- sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/main.c,
3268- sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/sip.h.in,
3269- sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
3270- siplib/array.c, siplib/array.h, siplib/bool.cpp,
3271- siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
3272- siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
3273- siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
3274- siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
3275- Updated the copyright notices.
3276- [b4a30e5b9970] <4.15-maint>
3277-
3278-2013-12-29 Phil Thompson <phil@riverbankcomputing.com>
3279-
3280- * siplib/siplib.c.in:
3281- Allow the pointers used to store the parsed results from Python
3282- reimplementations to be NULL.
3283- [7b83d16f7d28] <4.15-maint>
3284-
3285- * build.py, sipgen/lexer.l, sipgen/metasrc/README,
3286- sipgen/metasrc/lexer.l, sipgen/metasrc/parser.y, sipgen/parser.y:
3287- Moved the lexer and parser meta-source files to a separate directory
3288- to avoid problems with make accidentaly regenerating them.
3289- [c8d48c22ebf7] <4.15-maint>
3290-
3291- * build.py:
3292- Remove the __pycache__ directory when cleaning.
3293- [a0682feb1e94] <4.15-maint>
3294-
3295-2013-12-17 Phil Thompson <phil@riverbankcomputing.com>
3296-
3297- * NEWS, siplib/array.c, siplib/sip.h.in.in, siplib/siplib.c.in,
3298- sphinx/c_api.rst:
3299- Added SIP_SSIZE_T_FORMAT to the C API.
3300- [e74243fcc265] <4.15-maint>
3301-
3302-2013-12-16 Phil Thompson <phil@riverbankcomputing.com>
3303-
3304- * sipgen/gencode.c, sipgen/parser.y:
3305- Fixed the parsing of C++ types involving multiple const and
3306- pointers.
3307- [7a74623b6967] <4.15-maint>
3308-
3309-2013-10-21 Phil Thompson <phil@riverbankcomputing.com>
3310-
3311- * siplib/array.c, siplib/objmap.c, siplib/sipint.h,
3312- siplib/siplib.c.in, siplib/voidptr.c:
3313- Fixed all the compiler warning messages when building the sip
3314- module.
3315- [5e5fdf4cc35c] <4.15-maint>
3316-
3317-2013-10-16 Phil Thompson <phil@riverbankcomputing.com>
3318-
3319- * .hgtags:
3320- Added tag 4.15.3 for changeset a751e48db99a
3321- [dffbff1c0664] <4.15-maint>
3322-
3323- * NEWS:
3324- Released as v4.15.3.
3325- [a751e48db99a] [4.15.3] <4.15-maint>
3326-
3327-2013-10-13 Phil Thompson <phil@riverbankcomputing.com>
3328-
3329- * sipgen/transform.c:
3330- Fixed virtual re-implementations so that the number of generated
3331- Python methods slots is correct and that re-implementations
3332- explicitly marked as virtual are handled correctly.
3333- [aa7806ed2405] <4.15-maint>
3334-
3335-2013-10-03 Phil Thompson <phil@riverbankcomputing.com>
3336-
3337- * siplib/siplib.c.in:
3338- Fixed the format of an exception with Python v2.
3339- [5dc8c370157e] <4.15-maint>
3340-
3341-2013-09-14 Phil Thompson <phil@riverbankcomputing.com>
3342-
3343- * .hgtags:
3344- Added tag 4.15.2 for changeset f8fdf4d1eb87
3345- [82b599f547b1] <4.15-maint>
3346-
3347- * NEWS:
3348- Released as v4.15.2.
3349- [f8fdf4d1eb87] [4.15.2] <4.15-maint>
3350-
3351-2013-09-08 Phil Thompson <phil@riverbankcomputing.com>
3352-
3353- * siplib/array.c, siplib/array.h, siplib/sip.h.in.in,
3354- sphinx/c_api.rst:
3355- sipConvertToArray() will now optionally take ownership of the array
3356- memory. Changed the signatures of sipConvertToArray() and
3357- sipConvertToTypedArray(), but in a source and binary compatible way.
3358- [908d49322dcf] <4.15-maint>
3359-
3360- * siplib/array.c, sphinx/c_api.rst:
3361- Added support for char, unsigned char, short, int, float and double
3362- as array types.
3363- [fc41755d6481] <4.15-maint>
3364-
3365-2013-08-24 Phil Thompson <phil@riverbankcomputing.com>
3366-
3367- * sipgen/transform.c:
3368- Further fixes for the handling of virtual methods.
3369- [14732b487dda] <4.15-maint>
3370-
3371-2013-08-23 Phil Thompson <phil@riverbankcomputing.com>
3372-
3373- * .hgtags:
3374- Added tag 4.15.1 for changeset 148b813a559c
3375- [5ef6f2e04687] <4.15-maint>
3376-
3377- * NEWS:
3378- Released as v4.15.1.
3379- [148b813a559c] [4.15.1] <4.15-maint>
3380-
3381- * sipgen/transform.c:
3382- Fixed a regression in the handling of hidden virtuals.
3383- [15657c502e42] <4.15-maint>
3384-
3385-2013-08-21 Phil Thompson <phil@riverbankcomputing.com>
3386-
3387- * .hgtags:
3388- Added tag 4.15 for changeset 2f84fb045098
3389- [1f9737376184]
3390-
3391- * NEWS:
3392- Released as v4.15.
3393- [2f84fb045098] [4.15]
3394-
3395-2013-08-18 Phil Thompson <phil@riverbankcomputing.com>
3396-
3397- * sphinx/annotations.rst:
3398- Fixed a mistake in the documentation for /Factory/.
3399- [4c2fe2e7397e]
3400-
3401- * siplib/siplib.c.in:
3402- Fixed a C++ism that crept into the sip module code.
3403- [764f7fc80f1f]
3404-
3405-2013-08-17 Phil Thompson <phil@riverbankcomputing.com>
3406-
3407- * NEWS:
3408- Updated the NEWS file.
3409- [69897cf50dea]
3410-
3411-2013-08-13 Phil Thompson <phil@riverbankcomputing.com>
3412-
3413- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
3414- sphinx/c_api.rst:
3415- Added sipRegisterProxyResolver() to the public API.
3416- [66235bf9625f]
3417-
3418-2013-08-07 Phil Thompson <phil@riverbankcomputing.com>
3419-
3420- * sphinx/c_api.rst:
3421- Documented sipConvertToArray() and sipConvertToTypedArray().
3422- [bf49a3ad5612]
3423-
3424-2013-08-05 Phil Thompson <phil@riverbankcomputing.com>
3425-
3426- * siplib/array.c, siplib/sipint.h, siplib/siplib.c.in:
3427- Fixed the array support.
3428- [e2d05fb54872]
3429-
3430- * sipgen/gencode.c, siplib/array.c, siplib/array.h,
3431- siplib/sip.h.in.in, siplib/siplib.c.in:
3432- Added sipConvertToArray().
3433- [660fdd5cb10e]
3434-
3435- * sipgen/gencode.c:
3436- Eliminated unused arguments in the setters of constant variables.
3437- [e43b7d64c488]
3438-
3439-2013-08-04 Phil Thompson <phil@riverbankcomputing.com>
3440-
3441- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
3442- sphinx/annotations.rst:
3443- Added the /NoScope/ enum annotation.
3444- [aa4646c186d2]
3445-
3446- * siplib/array.c, siplib/array.h, siplib/siplib.c.in:
3447- Properly initialise the sip.array type.
3448- [a7e4f6c62b8f]
3449-
3450- * siplib/array.c, siplib/array.h, siplib/sip.h.in.in, siplib/sipint.h,
3451- siplib/siplib.c.in:
3452- Completed the array implementation for wrapped types.
3453- [9e5b63022e19]
3454-
3455-2013-08-03 Phil Thompson <phil@riverbankcomputing.com>
3456-
3457- * sipgen/gencode.c, siplib/array.c, siplib/array.h,
3458- siplib/sip.h.in.in, siplib/siplib.c.in, siplib/siplib.sbf.in:
3459- Added the stub of the array support.
3460- [ffb87d2e0fc5]
3461-
3462-2013-07-31 Phil Thompson <phil@riverbankcomputing.com>
3463-
3464- * sphinx/c_api.rst:
3465- Documented sipConvertFromNewPyType().
3466- [ba59d434b206]
3467-
3468- * siplib/sip.h.in.in, siplib/siplib.c.in:
3469- Changed the signature of sipConvertFromNewPyType() to handle
3470- ownership and hide the internals of generated derived classes.
3471- [5a9ba502593c]
3472-
3473- * sipgen/gencode.c:
3474- Fixed the PyQt5 generation of qt_metaobject() so that it supports
3475- QML.
3476- [2f18c4617542]
3477-
3478-2013-07-30 Phil Thompson <phil@riverbankcomputing.com>
3479-
3480- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/sipint.h,
3481- siplib/siplib.c.in, siplib/threads.c:
3482- Added the (as yet undocumented) sipConvertFromNewPyType().
3483- [5a65f5bad461]
3484-
3485- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
3486- sphinx/annotations.rst:
3487- Added the /ExportDerived/ class annotation.
3488- [e3c78dfd30b8]
3489-
3490-2013-07-26 Phil Thompson <phil@riverbankcomputing.com>
3491-
3492- * siplib/siplib.c.in:
3493- Clear any exceptions before trying to parse a reimplementation
3494- result.
3495- [7bebd55f50b2]
3496-
3497-2013-07-24 Phil Thompson <phil@riverbankcomputing.com>
3498-
3499- * siplib/siplib.c.in:
3500- Fixed a mixin bug where C++ was using the mixin (rather than Python)
3501- wasn't being detected properly.
3502- [52d3b8035dca]
3503-
3504-2013-07-23 Phil Thompson <phil@riverbankcomputing.com>
3505-
3506- * siplib/siplib.c.in:
3507- Fixed a bug in the dereferencing of mixins.
3508- [fc3df3e99932]
3509-
3510-2013-07-21 Phil Thompson <phil@riverbankcomputing.com>
3511-
3512- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
3513- siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
3514- Implemented the PyQt5 plugin, including support for Qt interfaces.
3515- Added sipGetMixinAddress() to the public API. Python
3516- reimplementations of abstract mixins are now handled correctly.
3517- [972540270afa]
3518-
3519-2013-07-19 Phil Thompson <phil@riverbankcomputing.com>
3520-
3521- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
3522- sipgen/transform.c:
3523- The parser now handles multiple consts in type declarations.
3524- [e7b6e4b5b1de]
3525-
3526- * sipgen/gencode.c:
3527- Properly implement /TransferBack/ even for return values that appear
3528- to be always new because the type may be a mapped collection type
3529- with elements that might not be new (e. QList<QTreeWidgetItem *>).
3530- [9c073a101fb6]
3531-
3532-2013-07-14 Phil Thompson <phil@riverbankcomputing.com>
3533-
3534- * sipgen/lexer.l:
3535- Make sure that source locations are always valid (if not always
3536- absolutely correct).
3537- [e5a66c9174a6]
3538-
3539-2013-07-13 Phil Thompson <phil@riverbankcomputing.com>
3540-
3541- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in:
3542- The parser can now handle expressions with casts.
3543- [54ec565cf24e]
3544-
3545- * sipgen/lexer.l:
3546- Added support for numbers having trailing lLuU.
3547- [88cc29113b02]
3548-
3549-2013-07-11 Phil Thompson <phil@riverbankcomputing.com>
3550-
3551- * sipgen/transform.c:
3552- Backed out changeset bd5b9927361b The problem is real (but currently
3553- not triggered), but the fix breaks PyQt.
3554- [3529b7c08228]
3555-
3556-2013-07-10 Phil Thompson <phil@riverbankcomputing.com>
3557-
3558- * sipgen/transform.c:
3559- Fixed a bug where a method with %VirtualCatcherCode was being used
3560- by a method without if they had the same signature.
3561- [bd5b9927361b]
3562-
3563- * configure.py.in:
3564- Invalidate the import caches before trying to import the newly
3565- created sipconfig.py.
3566- [1e3ae0d5e790]
3567-
3568- * sipgen/gencode.c:
3569- Fixed the mixin support when the generated class definition may be a
3570- sub-type.
3571- [aec935209f0d]
3572-
3573-2013-07-07 Phil Thompson <phil@riverbankcomputing.com>
3574-
3575- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
3576- A virtual catcher now calls the super-class implementation by via
3577- the super-class rather than needing to know exactly where the
3578- nearest implementation is.
3579- [58987948b9fd]
3580-
3581- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
3582- siplib/descriptors.c, siplib/sip.h.in.in, siplib/sipint.h,
3583- siplib/siplib.c.in, sphinx/annotations.rst:
3584- Implemented the /Mixin/ class annotation.
3585- [8b1702ce3226]
3586-
3587-2013-07-01 Phil Thompson <phil@riverbankcomputing.com>
3588-
3589- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
3590- sipgen/sip.h.in, siplib/siplib.c.in, sphinx/directives.rst:
3591- Added the call_super_init argument to the %Module directive. Updated
3592- the documentation.
3593- [42950b118753]
3594-
3595- * siplib/sip.h.in.in, siplib/siplib.c.in:
3596- Support for cooperative multi-inheritance must now be explicitly
3597- enabled because it affects compatibility. Added a shortcut so that
3598- the cooperative multi-inheritance support is skipped when it isn't
3599- needed.
3600- [07984388686f]
3601-
3602-2013-06-30 Phil Thompson <phil@riverbankcomputing.com>
3603-
3604- * NEWS, siplib/siplib.c.in:
3605- Fixed the %Finalisation support so that QObject sub-classes work.
3606- [17fc8e27b7e9]
3607-
3608- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
3609- Completed the support for cooperative multi-inheritance.
3610- [ddd13ea38870]
3611-
3612- * siplib/sip.h.in.in, siplib/siplib.c.in:
3613- Changed the API of td_final to minimise the creation of new dicts.
3614- Fixed the calling of the super-class's __init__.
3615- [195f0d1ab91c]
3616-
3617-2013-06-29 Phil Thompson <phil@riverbankcomputing.com>
3618-
3619- * siplib/siplib.c.in:
3620- Instead of calling super() to implement the cooperative multi-
3621- inheritance, just call the __init__ of the next type in the MRO.
3622- [da9edad8f7b1]
3623-
3624- * siplib/sip.h.in.in, siplib/siplib.c.in:
3625- Wrapped classes now support cooperative multi-inheritance with non-
3626- sip classes. Implemented %FinalisationCode.
3627- [aaedcb26099e]
3628-
3629- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
3630- siplib/sip.h.in.in:
3631- Added the code generator support for %FinalisationCode.
3632- [e8b4b1ab730d]
3633-
3634-2013-06-28 Phil Thompson <phil@riverbankcomputing.com>
3635-
3636- * Merged the v4.14 maintenance branch.
3637- [97beee973f94]
3638-
3639-2013-06-21 Phil Thompson <phil@riverbankcomputing.com>
3640-
3641- * siplib/voidptr.c:
3642- Fixed a reference count bug when a sip.voidptr is created from a
3643- buffer object.
3644- [02bdf6cc32c1] <4.14-maint>
3645-
3646-2013-06-16 Phil Thompson <phil@riverbankcomputing.com>
3647-
3648- * .hgtags:
3649- Added tag 4.14.7 for changeset ee771b441704
3650- [6e6cc6c60a36] <4.14-maint>
3651-
3652- * NEWS:
3653- Released as v4.14.7.
3654- [ee771b441704] [4.14.7] <4.14-maint>
3655-
3656-2013-06-12 Phil Thompson <phil@riverbankcomputing.com>
3657-
3658- * NEWS, build.py, sip.nsi.in, sphinx/installation.rst:
3659- Removed the Windows installer as we can't have co-existant PyQt4 and
3660- PyQt5 installers for other reasons.
3661- [74e1df1d9940] <4.14-maint>
3662-
3663-2013-06-11 Phil Thompson <phil@riverbankcomputing.com>
3664-
3665- * NEWS, sip.nsi.in, sphinx/installation.rst:
3666- Debugged the installer.
3667- [00678082f72e] <4.14-maint>
3668-
3669- * build.py, sip.nsi.in:
3670- Added the initial (not debugged) installer.
3671- [d22b19884c62] <4.14-maint>
3672-
3673- * sphinx/directives.rst:
3674- Fixed a broken reference to the Python documentation.
3675- [38ed755c797d] <4.14-maint>
3676-
3677-2013-06-10 Phil Thompson <phil@riverbankcomputing.com>
3678-
3679- * siplib/siplib.c.in:
3680- Fixed the last fix.
3681- [67258ffe885a] <4.14-maint>
3682-
3683-2013-06-08 Phil Thompson <phil@riverbankcomputing.com>
3684-
3685- * NEWS, sipgen/parser.y, sipgen/sip.h.in, siplib/siplib.c.in,
3686- sphinx/annotations.rst:
3687- Added the /Sequence/ function annotation. Added a work around for
3688- the Python bug whereby nb_inplace_add is wrongly copied to
3689- sq_inplace_concat if either are missing.
3690- [029828cabb4d] <4.14-maint>
3691-
3692- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
3693- sipgen/sip.h.in, siplib/sip.h.in.in, siplib/siplib.c.in,
3694- sphinx/c_api.rst, sphinx/directives.rst, sphinx/python_api.rst:
3695- Added support for classes to have %ConvertFromTypeCode. Added
3696- sipEnableAutoconversion() to the C API. Added
3697- sip.enableautoconversion() to the Python API.
3698- [4dbbc8c6c054] <4.14-maint>
3699-
3700-2013-06-07 Phil Thompson <phil@riverbankcomputing.com>
3701-
3702- * NEWS, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h.in.in,
3703- siplib/sipint.h, siplib/siplib.c.in, siplib/threads.c:
3704- Bumped the internal API to 10.0. Removed deprecated parts of the
3705- private API. Added the stub for the optional convert from class
3706- code.
3707- [50319794231a] <4.14-maint>
3708-
3709-2013-06-02 Phil Thompson <phil@riverbankcomputing.com>
3710-
3711- * siplib/qtlib.c, siplib/siplib.c.in:
3712- Add more checks to make sure that PyQt5 isn't accidentally using
3713- features that will be deprecated in SIP5.
3714- [c80745f8ee0b] <4.14-maint>
3715-
3716-2013-06-01 Phil Thompson <phil@riverbankcomputing.com>
3717-
3718- * siplib/qtlib.c:
3719- Added assertions for Qt support for all API functions that provide
3720- Qt support.
3721- [aa60efc50608] <4.14-maint>
3722-
3723-2013-05-04 Phil Thompson <phil@riverbankcomputing.com>
3724-
3725- * siplib/voidptr.c:
3726- Fixed a bug in converting an int to a voidptr.
3727- [dd473964ac33] <4.14-maint>
3728-
3729-2013-05-01 Phil Thompson <phil@riverbankcomputing.com>
3730-
3731- * NEWS, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
3732- sphinx/c_api.rst:
3733- Added sipSetDestroyOnExit() to the public C API.
3734- [40660935c75b] <4.14-maint>
3735-
3736-2013-04-25 Phil Thompson <phil@riverbankcomputing.com>
3737-
3738- * sipgen/gencode.c:
3739- Fixed a code generation bug that affected QObject sub-classes with
3740- dtor %MethodCode and with the GIL not released by default (ie.
3741- PyQt5).
3742- [bd9eccac4407] <4.14-maint>
3743-
3744-2013-04-21 Phil Thompson <phil@riverbankcomputing.com>
3745-
3746- * .hgtags:
3747- Added tag 4.14.6 for changeset 32dcb22f994c
3748- [23da2e18916b] <4.14-maint>
3749-
3750- * NEWS, Roadmap.rst:
3751- Released as v4.14.6.
3752- [32dcb22f994c] [4.14.6] <4.14-maint>
3753-
3754-2013-04-17 Phil Thompson <phil@riverbankcomputing.com>
3755-
3756- * sipgen/parser.y, sphinx/annotations.rst:
3757- Documented that sub-classing from classes with different
3758- implementations is not supported.
3759- [1773f2100851] <4.14-maint>
3760-
3761- * sipgen/parser.y:
3762- Fixed a grammar bug in the parsing of %Module with no parenthesis.
3763- [2d5256eda850] <4.14-maint>
3764-
3765-2013-04-09 Phil Thompson <phil@riverbankcomputing.com>
3766-
3767- * siplib/siplib.c.in:
3768- Fixed a bug in the parsing of SIP_ANYSLOT arguments.
3769- [a9f7473ba9c7] <4.14-maint>
3770-
3771-2013-04-06 Phil Thompson <phil@riverbankcomputing.com>
3772-
3773- * sipgen/gencode.c:
3774- Removed some redundant code generated for a component module.
3775- [395bf9f00aa6] <4.14-maint>
3776-
3777-2013-03-26 Phil Thompson <phil@riverbankcomputing.com>
3778-
3779- * .hgtags:
3780- Added tag 4.14.5 for changeset e528e634d4db
3781- [6a2bda53d2c0] <4.14-maint>
3782-
3783- * NEWS:
3784- Released as v4.14.5.
3785- [e528e634d4db] [4.14.5] <4.14-maint>
3786-
3787-2013-03-20 Phil Thompson <phil@riverbankcomputing.com>
3788-
3789- * sipgen/gencode.c:
3790- Fixed a code generation bug when using /Array, Transfer/.
3791- [054f1676c300] <4.14-maint>
3792-
3793-2013-03-06 Phil Thompson <phil@riverbankcomputing.com>
3794-
3795- * siputils.py:
3796- Fixed a build system bug for QtWebKit on Linux against Qt v5.
3797- [c65a525a0a17] <4.14-maint>
3798-
3799-2013-03-01 Phil Thompson <phil@riverbankcomputing.com>
3800-
3801- * .hgtags:
3802- Added tag 4.14.4 for changeset 4c818299f57a
3803- [72b69b39a7a8] <4.14-maint>
3804-
3805- * NEWS:
3806- Released as v4.14.4.
3807- [4c818299f57a] [4.14.4] <4.14-maint>
3808-
3809-2013-02-26 Phil Thompson <phil@riverbankcomputing.com>
3810-
3811- * configure.py.in, sphinx/installation.rst:
3812- The --sdk flag to configure.py will now default to the directory
3813- used by current versions of Xcode.
3814- [312a27229b3f] <4.14-maint>
3815-
3816-2013-02-20 Phil Thompson <phil@riverbankcomputing.com>
3817-
3818- * sipgen/gencode.c, siplib/sipint.h, siplib/siplib.c.in,
3819- siplib/threads.c:
3820- The thread support now only creates TLS when it is actually needed.
3821- This makes sipStartThread() redundant and it is now deprecated.
3822- Failing to allocate TLS will now raise an exception.
3823- [34f6f0d52c1e] <4.14-maint>
3824-
3825- * NEWS, sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
3826- sphinx/c_api.rst, sphinx/directives.rst,
3827- sphinx/incompatibilities.rst:
3828- VirtualErrorHandler code is now called with the GIL and from the
3829- thread that raised the exception. This ensures that the details of
3830- the exception can be obtained. It also means that the default
3831- handler (ie. PyErr_Print()) can also get the details.
3832- VirtualErrorHandler code is now also provided sipGILState so that it
3833- can call SIP_RELEASE_GIL() prior to changing the execution path.
3834- [45a50c6d82fe] <4.14-maint>
3835-
3836-2013-02-14 Phil Thompson <phil@riverbankcomputing.com>
3837-
3838- * sphinx/introduction.rst.in:
3839- Documentation updates regarding SIP v5.
3840- [03f33e7fdfb1] <4.14-maint>
3841-
3842-2013-02-04 Phil Thompson <phil@riverbankcomputing.com>
3843-
3844- * NEWS, sipgen/gencode.c:
3845- Fixed the generation of an unnecessary variable for array arguments.
3846- [fb45cf6e775b] <4.14-maint>
3847-
3848-2013-02-03 Phil Thompson <phil@riverbankcomputing.com>
3849-
3850- * siputils.py:
3851- The problem of the moc pathname is more widespread.
3852- [bf2062f2318f] <4.14-maint>
3853-
3854- * siputils.py:
3855- Fix the build of QtWebKit on Windows. Workaround the foward slash
3856- characters in the moc pathname on Windows/Qt5.
3857- [13ee5a9fc8bd] <4.14-maint>
3858-
3859-2013-02-02 Phil Thompson <phil@riverbankcomputing.com>
3860-
3861- * siputils.py:
3862- Fixed the QAxContainer dependencies for Qt5.
3863- [793be65e22b9] <4.14-maint>
3864-
3865- * siputils.py:
3866- Fixed the renaming of QAxContainer for Qt5.
3867- [7e67f0559595] <4.14-maint>
3868-
3869- * siputils.py:
3870- Fixed the QAxContainer dependency for Qt5.
3871- [d33f9eaa4394] <4.14-maint>
3872-
3873- * siputils.py:
3874- Build system changes for Qt5 on Windows.
3875- [9abd1d0f5d3f] <4.14-maint>
3876-
3877-2013-01-28 Phil Thompson <phil@riverbankcomputing.com>
3878-
3879- * .hgtags:
3880- Added tag 4.14.3 for changeset 6e004d396299
3881- [c9a29107c8ef] <4.14-maint>
3882-
3883- * NEWS:
3884- Released as v4.14.3.
3885- [6e004d396299] [4.14.3] <4.14-maint>
3886-
3887-2013-01-18 Phil Thompson <phil@riverbankcomputing.com>
3888-
3889- * siplib/siplib.c.in:
3890- When a Python object is garbage collected SIP no longer creates an
3891- additional reference to any child Python objects so that those
3892- children can now be handled by the garbage collector if appropriate.
3893- We used to keep the extra reference to make sure any additional
3894- attributes set in the child were preserved, however if the parent is
3895- being deleted then the C++ object it wraps must have been (or is
3896- about to be) destroyed, and therefore (if the parent/child
3897- relationships between the Python objects are correct) the child
3898- Python object is about to be deleted anyway. Before we relied on the
3899- C++ child telling us when to garbage collect the Python child via
3900- its virtual dtor - but this won't work if it was the C++ library
3901- (rather than the Python application) that created the child.
3902- [dc06058c99dd] <4.14-maint>
3903-
3904-2013-01-17 Phil Thompson <phil@riverbankcomputing.com>
3905-
3906- * siplib/siplib.c.in:
3907- Backed out changeset 4ec79ea69263 Realised that the (slight) change
3908- in behaviour could break legitimate use cases.
3909- [597c864debcc] <4.14-maint>
3910-
3911- * siplib/siplib.c.in:
3912- When a Python object is garbage collected its child Python objects
3913- are now garbage collected unless they have an instance dict.
3914- [4ec79ea69263] <4.14-maint>
3915-
3916-2013-01-11 Phil Thompson <phil@riverbankcomputing.com>
3917-
3918- * LICENSE, build.py, configure.py.in, sipgen/export.c,
3919- sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
3920- sipgen/main.c, sipgen/parser.y, sipgen/sip.h.in, sipgen/sipgen.sbf,
3921- sipgen/transform.c, siplib/apiversions.c, siplib/bool.cpp,
3922- siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
3923- siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
3924- siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
3925- siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
3926- Updated the copyright notices.
3927- [ee3b1348996c] <4.14-maint>
3928-
3929-2013-01-03 Phil Thompson <phil@riverbankcomputing.com>
3930-
3931- * NEWS, sipgen/gencode.c, sphinx/annotations.rst:
3932- The /KeepReference/ argument annotation, when applied to factories,
3933- will now keep the reference with the object created by the factory.
3934- [0ad6099f31fa] <4.14-maint>
3935-
3936-2013-01-02 Phil Thompson <phil@riverbankcomputing.com>
3937-
3938- * siplib/voidptr.c:
3939- Properly implemented the support for passing objects that implement
3940- the buffer protocol where a voidptr is expected.
3941- [171bd8e1e037] <4.14-maint>
3942-
3943- * siputils.py:
3944- Changed the test for a Python framework build so that it works with
3945- pyvenv.
3946- [a612391f667c] <4.14-maint>
3947-
3948-2012-12-29 Phil Thompson <phil@riverbankcomputing.com>
3949-
3950- * siputils.py:
3951- Further build system fixes for Linux/Qt5.
3952- [04dec290a15e] <4.14-maint>
3953-
3954- * siputils.py:
3955- Fix the build system for the Linux specific naming conventions of
3956- the Qt5 libraries.
3957- [05cb90880c2b] <4.14-maint>
3958-
3959-2012-12-18 Phil Thompson <phil@riverbankcomputing.com>
3960-
3961- * siputils.py:
3962- Fixed the build system for QtTest in Qt5.
3963- [55188026fe6d] <4.14-maint>
3964-
3965-2012-12-08 Phil Thompson <phil@riverbankcomputing.com>
3966-
3967- * .hgtags:
3968- Added tag 4.14.2 for changeset e9180a8d374f
3969- [ed864cf2277f] <4.14-maint>
3970-
3971- * NEWS:
3972- Released as v4.14.2.
3973- [e9180a8d374f] [4.14.2] <4.14-maint>
3974-
3975-2012-12-07 Phil Thompson <phil@riverbankcomputing.com>
3976-
3977- * siputils.py:
3978- Fixed the build system for Qt v5-rc1.
3979- [44586b952072] <4.14-maint>
3980-
3981-2012-11-14 Phil Thompson <phil@riverbankcomputing.com>
3982-
3983- * siputils.py:
3984- The build system now knows that QtWebKit is QtWebKitWidgets in Qt5.
3985- [b8261071d302] <4.14-maint>
3986-
3987-2012-11-11 Phil Thompson <phil@riverbankcomputing.com>
3988-
3989- * NEWS, siplib/siplib.c.in, sphinx/python_api.rst:
3990- Added sip.setdestroyonexit().
3991- [b063e90b6c20] <4.14-maint>
3992-
3993- * siplib/voidptr.c:
3994- Backed out to keep the behaviour the same as memoryview.
3995- [e8f21b0950c8] <4.14-maint>
3996-
3997- * siplib/voidptr.c:
3998- Backed out to keep the behaviour the same as memoryview.
3999- [26717fbefb61] <4.14-maint>
4000-
4001-2012-11-10 Phil Thompson <phil@riverbankcomputing.com>
4002-
4003- * sipgen/gencode.c:
4004- Patch from Matt Newell to fix /HoldGIL/ when exceptions are enabled.
4005- [669ecadaaae1] <4.14-maint>
4006-
4007-2012-11-04 Phil Thompson <phil@riverbankcomputing.com>
4008-
4009- * siplib/voidptr.c:
4010- A simple index of a sip.voidptr now returns an int rather than a
4011- string/bytes of length 1.
4012- [80ee79901dc9] <4.14-maint>
4013-
4014- * siplib/voidptr.c:
4015- Fixed simple index item assignment for voidptr.
4016- [3cb217678514] <4.14-maint>
4017-
4018- * siplib/voidptr.c:
4019- The new buffer interface was backported to v2.6.3.
4020- [47f4f489055e] <4.14-maint>
4021-
4022- * NEWS, siplib/voidptr.c, sphinx/python_api.rst:
4023- sip.voidptr() will now accept any object that implements the (old or
4024- new) buffer protocols.
4025- [cb7799eb557b] <4.14-maint>
4026-
4027- * sphinx/python_api.rst:
4028- Clarified the docs for __getitem__ and __setitem__ for sip.voidptr.
4029- [32fb8513b196] <4.14-maint>
4030-
4031-2012-10-27 Phil Thompson <phil@riverbankcomputing.com>
4032-
4033- * .hgtags:
4034- Added tag 4.14.1 for changeset d0431cee7920
4035- [6b278a98323b] <4.14-maint>
4036-
4037- * NEWS:
4038- Released as v4.14.1.
4039- [d0431cee7920] [4.14.1] <4.14-maint>
4040-
4041-2012-10-26 Phil Thompson <phil@riverbankcomputing.com>
4042-
4043- * siplib/siplib.c.in:
4044- More buffer support fixes.
4045- [1fe9c59f0f06] <4.14-maint>
4046-
4047- * siplib/siplib.c.in:
4048- Both the old and new buffer protocols are now checked.
4049- [7227f121bac9] <4.14-maint>
4050-
4051-2012-10-23 Phil Thompson <phil@riverbankcomputing.com>
4052-
4053- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
4054- sipgen/parser.y, sipgen/sip.h.in, sipgen/transform.c,
4055- siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/annotations.rst,
4056- sphinx/c_api.rst, sphinx/specification_files.rst:
4057- Added support for types that implement the buffer protocol.
4058- [4ec285852cba] <4.14-maint>
4059-
4060- * siplib/siplib.c.in:
4061- None may be provided whenever a capsule is expected.
4062- [b90e3475bdfc] <4.14-maint>
4063-
4064-2012-10-17 Phil Thompson <phil@riverbankcomputing.com>
4065-
4066- * sipgen/gencode.c, siplib/sip.h.in.in:
4067- Renamed the sipCapsule_* macros to be consistent with other similar
4068- ones.
4069- [1913168e0c8d] <4.14-maint>
4070-
4071- * sipgen/export.c:
4072- The type name of a capsule is now used in docstrings.
4073- [1c8ce8a61324] <4.14-maint>
4074-
4075- * sphinx/directives.rst:
4076- Fixed a documentation typo.
4077- [94362407c872] <4.14-maint>
4078-
4079-2012-10-16 Phil Thompson <phil@riverbankcomputing.com>
4080-
4081- * sipgen/gencode.c:
4082- Eliminated a C compiler warning message from the generated code.
4083- [e60f63cfe0d1] <4.14-maint>
4084-
4085- * NEWS, sipgen/parser.y, sipgen/sip.h.in:
4086- The C prototype foo(void) is now accepted.
4087- [54aca3c0b75e] <4.14-maint>
4088-
4089- * sipgen/lexer.l, sipgen/transform.c:
4090- Fixed a bug in the saving of line numbers for error messages when
4091- the error is on the last significant line.
4092- [7c77e368814f] <4.14-maint>
4093-
4094- * NEWS, sipdistutils.py, sphinx/distutils.rst:
4095- If no sip-opts are defined sipdistutils.py will now use any
4096- swig_opts passed to the Extension ctor.
4097- [6fcc431a81bf] <4.14-maint>
4098-
4099-2012-10-15 Phil Thompson <phil@riverbankcomputing.com>
4100-
4101- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
4102- sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
4103- siplib/siplib.c.in, sphinx/annotations.rst, sphinx/c_api.rst:
4104- Increased the API version number to 9.1. Added the /Capsule/ typedef
4105- annotation. Added the 'z' format character to sipBuildResult().
4106- Added the 'z' format character to sipParseResult().
4107- [f4bc254f96d8] <4.14-maint>
4108-
4109-2012-10-12 Phil Thompson <phil@riverbankcomputing.com>
4110-
4111- * sipgen/gencode.c:
4112- Fixed regressions in the handling of types when generating code for
4113- C modules.
4114- [3eba5b9842f0] <4.14-maint>
4115-
4116-2012-10-09 Phil Thompson <phil@riverbankcomputing.com>
4117-
4118- * siputils.py:
4119- Explicity close files in siputils.py to avoid resource warning
4120- messages.
4121- [fdc332e116b2] <4.14-maint>
4122-
4123-2012-10-07 Phil Thompson <phil@riverbankcomputing.com>
4124-
4125- * sipgen/gencode.c, siplib/sip.h.in.in:
4126- Backed out the changes to the signal table generation (and revert
4127- the API version to 9.0) because they are no longer needed.
4128- [38235401ffbc] <4.14-maint>
4129-
4130-2012-10-03 Phil Thompson <phil@riverbankcomputing.com>
4131-
4132- * sipgen/gencode.c, siplib/sip.h.in.in:
4133- Renamed PYQT4_SIGNAL_EXPLICIT to PYQT4_SIGNAL_FIXED_ARGS. Renamed
4134- PYQT4_SIGNAL_MASK to PYQT4_SIGNAL_ARGS_MASK.
4135- [cfbd55297dcd] <4.14-maint>
4136-
4137- * sipgen/gencode.c, siplib/sip.h.in.in:
4138- Added the flags member to the pyqt4QtSignal structure so that PyQT
4139- can distinguish between explicitly defined signals and those added
4140- to support optional arguments.
4141- [81617aa9e051] <4.14-maint>
4142-
4143-2012-10-01 Phil Thompson <phil@riverbankcomputing.com>
4144-
4145- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in:
4146- Revised the previous change to keep the brackets unless the signal
4147- has no arguments. (PyQt relies on the format for some of its
4148- exceptions.)
4149- [dd884ddcb239] <4.14-maint>
4150-
4151- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h.in:
4152- Changed the docstrings for signals to use parenthesis rather than
4153- brackets as it is less confusing.
4154- [3f6128385aa2] <4.14-maint>
4155-
4156-2012-09-29 Phil Thompson <phil@riverbankcomputing.com>
4157-
4158- * .hgtags:
4159- Added tag 4.14 for changeset 90ea220ecc4b
4160- [76a18a32f759]
4161-
4162- * NEWS:
4163- Released as v4.14.
4164- [90ea220ecc4b] [4.14]
4165-
4166-2012-09-28 Phil Thompson <phil@riverbankcomputing.com>
4167-
4168- * NEWS:
4169- Updated the NEWS file.
4170- [214dd6433474]
4171-
4172-2012-09-27 Phil Thompson <phil@riverbankcomputing.com>
4173-
4174- * sphinx/directives.rst, sphinx/embedding.rst,
4175- sphinx/incompatibilities.rst, sphinx/python_api.rst,
4176- sphinx/using.rst:
4177- Got rid of all Sphinx warning messages.
4178- [cbf911605931]
4179-
4180-2012-09-25 Phil Thompson <phil@riverbankcomputing.com>
4181-
4182- * configure.py.in, specs/win32-msvc2008, specs/win32-msvc2010:
4183- Updated the win32-msvc2008 spec file. Taught the build system about
4184- MSVC 2010.
4185- [5d3c5164342a]
4186-
4187-2012-09-24 Phil Thompson <phil@riverbankcomputing.com>
4188-
4189- * configure.py.in, siputils.py:
4190- Taught the build system about Qt5's CXXFLAGS_APP macro.
4191- [4e2fddd95c07]
4192-
4193- * sphinx/annotations.rst:
4194- Another correction to the /Factory/ documentation.
4195- [f030580a19f6]
4196-
4197-2012-09-21 Phil Thompson <phil@riverbankcomputing.com>
4198-
4199- * sphinx/annotations.rst:
4200- Fixed the incorrect /Factory/ documentation.
4201- [3b76a41a1f4a]
4202-
4203-2012-09-20 Phil Thompson <phil@riverbankcomputing.com>
4204-
4205- * sipgen/gencode.c:
4206- Fixed the signature for generated virtual error handler functions.
4207- [caa74f25dff8]
4208-
4209-2012-09-19 Phil Thompson <phil@riverbankcomputing.com>
4210-
4211- * sipgen/parser.y:
4212- Fixed an initialisation bug in the parser by making it resiliant to
4213- future changes.
4214- [fd2e76ea8e16]
4215-
4216-2012-09-18 Phil Thompson <phil@riverbankcomputing.com>
4217-
4218- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in:
4219- Fixed a few compiler warning messages.
4220- [a8aaecad7327]
4221-
4222-2012-09-17 Phil Thompson <phil@riverbankcomputing.com>
4223-
4224- * NEWS, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
4225- sipgen/sip.h.in, sphinx/directives.rst:
4226- Added support for the SIP_PLATFORM_* and SIP_TIMELINE_* preprocessor
4227- symbols.
4228- [664ec65acb33]
4229-
4230-2012-09-14 Phil Thompson <phil@riverbankcomputing.com>
4231-
4232- * siputils.py:
4233- A build system fix for Qt v5-beta1.
4234- [6d704a7ab6c5]
4235-
4236- * siplib/sip.h.in.in:
4237- Removed the ANY SIP v3 compatibility macro as it causes problems
4238- with Qt v5.
4239- [40aeb5a8f98e]
4240-
4241-2012-09-13 Phil Thompson <phil@riverbankcomputing.com>
4242-
4243- * sipgen/parser.y, sipgen/transform.c:
4244- The AllowNone and NoRelease mapped type annotations can now be
4245- applied to mapped type templates.
4246- [3da91337f333]
4247-
4248- * sphinx/annotations.rst:
4249- Documented the PyName mapped type annotation.
4250- [b1a5b8cab2ab]
4251-
4252- * sipgen/lexer.l:
4253- Improved the parsing of floating point literals thanks to Andrea
4254- Griffini.
4255- [be35aa0bb4b5]
4256-
4257-2012-09-01 Phil Thompson <phil@riverbankcomputing.com>
4258-
4259- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in,
4260- sphinx/c_api.rst, sphinx/directives.rst:
4261- Added sipCallErrorHandler() to the private API. A virtual error
4262- handler is now called with the GIL released. The sipGILState
4263- variable is no longer passed to an error handler.
4264- [be42df79035d]
4265-
4266-2012-08-31 Phil Thompson <phil@riverbankcomputing.com>
4267-
4268- * NEWS, sphinx/annotations.rst, sphinx/directives.rst:
4269- Updated the docs regarding the latest virtual error changes.
4270- [86a4f33db172]
4271-
4272- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
4273- siplib/sip.h.in.in, siplib/siplib.c.in:
4274- Changed the virtual error handler support yet again so that error
4275- handlers are automatically exported to sub-classes and sub-modules.
4276- [118500886fa7]
4277-
4278-2012-08-30 Phil Thompson <phil@riverbankcomputing.com>
4279-
4280- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
4281- Completed the refactoring of virtual handlers to use
4282- sipParseResultEx().
4283- [397b4ade7900]
4284-
4285- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
4286- Added sipParseResultEx() to the private API as a stub for future
4287- changes.
4288- [659fcb20bbc9]
4289-
4290- * specs/macx-xcode:
4291- Merged the 4.13 branch into the trunk.
4292- [96ef5f43f010]
4293-
4294- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
4295- sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
4296- sphinx/annotations.rst, sphinx/c_api.rst, sphinx/directives.rst:
4297- Replaced the virtual error support (again) with the
4298- %DefaultVirtualErrorHandler directive, the /NoVirtualErrorHandler/
4299- and /VirtualErrorHandler/ function annotations, and the
4300- /VirtualErrorHandler/ class annotation. Added sip_gilstate_t and
4301- SIP_RELEASE_GIL() to the public API. The Sphinx docs now use C
4302- domains where appropriate.
4303- [71c0d64913bc] <4.13-maint>
4304-
4305-2012-08-28 Phil Thompson <phil@riverbankcomputing.com>
4306-
4307- * NEWS, sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h.in.in,
4308- siplib/siplib.c.in:
4309- Bumped the API version number to 9.0. Removed the support for
4310- pre-9.0 variable structures. Changed the sipVariableGetterFunc
4311- signature to pass the Python object.
4312- [d8824768aa51] <4.13-maint>
4313-
4314- * sphinx/c_api.rst:
4315- Updated the documentation for sipConvertToType().
4316- [32c2c73f4c27] <4.13-maint>
4317-
4318-2012-08-27 Phil Thompson <phil@riverbankcomputing.com>
4319-
4320- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
4321- sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
4322- sphinx/annotations.rst, sphinx/directives.rst:
4323- Changed the support for flagging errors in Python reimplementations
4324- of virtuals by adding the %VirtualErrorCode directive and removing
4325- SIPPyException. Also replaced the all_throw_cpp_exception %Module
4326- argument with all_use_VirtualErrorCode, and the
4327- /NoThrowsCppException/ and /ThrowsCppException/ function annotations
4328- with /NoUsesVirtualErrorCode/ and /UsesVirtualErrorCode/.
4329- [523c3bccb41b] <4.13-maint>
4330-
4331-2012-08-26 Phil Thompson <phil@riverbankcomputing.com>
4332-
4333- * sipgen/gencode.c, siplib/sip.h.in.in:
4334- Fixed the support for virtual handler exceptions so that memory
4335- isn't leaked and the GIL is released.
4336- [f644e914b292] <4.13-maint>
4337-
4338- * sipgen/transform.c:
4339- A simply tidy up after the previous change.
4340- [b3cd21a00d51] <4.13-maint>
4341-
4342- * sipgen/transform.c:
4343- Backed out changeset 1066 and did it properly.
4344- [368eaa1143bd] <4.13-maint>
4345-
4346-2012-08-25 Phil Thompson <phil@riverbankcomputing.com>
4347-
4348- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
4349- sipgen/sip.h.in, sipgen/transform.c, siplib/sip.h.in.in,
4350- sphinx/annotations.rst, sphinx/directives.rst:
4351- Added the all_throw_cpp_exception argument to the %Module directive.
4352- Added the /ThrowCppException/ and /NoThrowCppException/ function
4353- annotations.
4354- [5f97352e818f] <4.13-maint>
4355-
4356-2012-08-24 Phil Thompson <phil@riverbankcomputing.com>
4357-
4358- * sipgen/transform.c:
4359- No longer require that the types of the arguments of a C/C++
4360- signature are fully defined to SIP.
4361- [01e11dc52626] <4.13-maint>
4362-
4363-2012-08-15 Phil Thompson <phil@riverbankcomputing.com>
4364-
4365- * NEWS, siplib/siplib.c.in, sphinx/c_api.rst:
4366- sipTransferTo() now increments the reference count of an object if
4367- the owner is Py_None. Fixed a type checking bug in sip.transferto().
4368- Deprecated sipTransferBreak().
4369- [f59d135ae51c] <4.13-maint>
4370-
4371-2012-08-10 Phil Thompson <phil@riverbankcomputing.com>
4372-
4373- * sipgen/gencode.c:
4374- For Python v2.x unsigned short and unsigned byte are now converted
4375- to int rather than long objects (to be consistent with the signed
4376- versions).
4377- [897e085bdd97] <4.13-maint>
4378-
4379- * siplib/siplib.c.in:
4380- Make sure an exception is raised when converting to a character when
4381- a string longer than one character is passed.
4382- [28ea90cba3a9] <4.13-maint>
4383-
4384-2012-07-22 Phil Thompson <phil@riverbankcomputing.com>
4385-
4386- * sipdistutils.py:
4387- Applied a patch from Oliver Nagy to fix sipdistutils.py for Python
4388- v3.
4389- [5775580258b3] <4.13-maint>
4390-
4391-2012-07-09 Phil Thompson <phil@riverbankcomputing.com>
4392-
4393- * siplib/siplib.c.in:
4394- Fixed the use of a Python3 specific format character.
4395- [801ae4c35450] <4.13-maint>
4396-
4397-2012-07-03 Phil Thompson <phil@riverbankcomputing.com>
4398-
4399- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
4400- sphinx/annotations.rst, sphinx/directives.rst,
4401- sphinx/specification_files.rst:
4402- Implemented the %InstanceCode directive.
4403- [9b330b545c65] <4.13-maint>
4404-
4405-2012-07-02 Phil Thompson <phil@riverbankcomputing.com>
4406-
4407- * sipgen/gencode.c:
4408- Reformatted some comments.
4409- [fa8592b30bf5] <4.13-maint>
4410-
4411- * configure.py.in, sipgen/export.c, sipgen/extracts.c,
4412- sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l, sipgen/main.c,
4413- sipgen/sip.h.in, sipgen/sipgen.sbf, sipgen/transform.c,
4414- siplib/apiversions.c, siplib/bool.cpp, siplib/descriptors.c,
4415- siplib/objmap.c, siplib/qtlib.c, siplib/sipint.h,
4416- siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
4417- sphinx/conf.py.in, sphinx/directives.rst:
4418- Updated the dates on various copyright notices.
4419- [257d223f5d45] <4.13-maint>
4420-
4421-2012-06-29 Phil Thompson <phil@riverbankcomputing.com>
4422-
4423- * sphinx/c_api.rst:
4424- Fixed a documentation typo.
4425- [e1a825c52e33] <4.13-maint>
4426-
4427-2012-06-20 Phil Thompson <phil@riverbankcomputing.com>
4428-
4429- * .hgtags:
4430- Added tag 4.13.3 for changeset 589228145d51
4431- [1cbf533ebe71] <4.13-maint>
4432-
4433- * NEWS:
4434- Released as v4.13.3.
4435- [589228145d51] [4.13.3] <4.13-maint>
4436-
4437-2012-06-05 Phil Thompson <phil@riverbankcomputing.com>
4438-
4439- * NEWS, siplib/siplib.c.in:
4440- Another fix for the handling of keyword arguments when used with
4441- unbound methods.
4442- [377e9e4763f5] <4.13-maint>
4443-
4444-2012-06-04 Phil Thompson <phil@riverbankcomputing.com>
4445-
4446- * siplib/siplib.c.in:
4447- Fixed the handling of keyword arguments when used with unbound
4448- methods.
4449- [cdd78f0c72b2] <4.13-maint>
4450-
4451-2012-06-01 Phil Thompson <phil@riverbankcomputing.com>
4452-
4453- * sipgen/gencode.c:
4454- Apply a cast to the argument to
4455- sipConvertFrom[Const]VoidPtr[AndSize]() when it was defined with a
4456- typedef. This makes it easier to use typedef as a way of hiding the
4457- complexities of a type that SIP doesn't handle.
4458- [c814c38523ff] <4.13-maint>
4459-
4460-2012-05-25 Phil Thompson <phil@riverbankcomputing.com>
4461-
4462- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
4463- siplib/siplib.c.in, sphinx/annotations.rst, sphinx/directives.rst:
4464- The /NoRaisesPyExceptions/ and /RaisesPyExceptions/ function
4465- annotations can no be used with constructors. Updated the NEWS file.
4466- [482aa7e3f1ab] <4.13-maint>
4467-
4468-2012-04-29 Phil Thompson <phil@riverbankcomputing.com>
4469-
4470- * specs/macx-xcode:
4471- Removed the macx-xcode file at it isn't supported by the build
4472- system.
4473- [31ad477ff5ae] <4.13-maint>
4474-
4475-2012-04-26 Phil Thompson <phil@riverbankcomputing.com>
4476-
4477- * sipgen/parser.y:
4478- Removed the free() of a code block filename now that filenames are
4479- retained for error messages.
4480- [16ef20290565] <4.13-maint>
4481-
4482- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
4483- sipgen/transform.c:
4484- Error messages related to callables should now include the filename
4485- and line number of the callable in the .sip source file.
4486- [fa6c71904d78] <4.13-maint>
4487-
4488-2012-04-18 Phil Thompson <phil@riverbankcomputing.com>
4489-
4490- * sipgen/gencode.c:
4491- Fixed the support for keeping an extra reference to a containing
4492- class when refering to a member variable.
4493- [fbb9cdbad791] <4.13-maint>
4494-
4495-2012-04-16 Phil Thompson <phil@riverbankcomputing.com>
4496-
4497- * siplib/siplib.c.in:
4498- Eliminate a race condition in sip_api_is_py_method().
4499- [871a7b44c8f0] <4.13-maint>
4500-
4501-2012-04-14 Phil Thompson <phil@riverbankcomputing.com>
4502-
4503- * siplib/sip.h.in.in, siplib/siplib.c.in:
4504- Improved the text of the exception raised when a wrapped C/C++
4505- object doesn't exist.
4506- [dd2d72cac87f] <4.13-maint>
4507-
4508-2012-04-09 Phil Thompson <phil@riverbankcomputing.com>
4509-
4510- * siputils.py:
4511- Taught the build system about Qt5's QtGui module.
4512- [8d2739f3225f] <4.13-maint>
4513-
4514-2012-04-02 Phil Thompson <phil@riverbankcomputing.com>
4515-
4516- * sipgen/parser.y:
4517- Allow a string as well as an identifier for arguments to various
4518- name= settings so that name="name" can be used.
4519- [d5e6a1fa39f2] <4.13-maint>
4520-
4521-2012-03-09 Phil Thompson <phil@riverbankcomputing.com>
4522-
4523- * siplib/siplib.c.in:
4524- Updated the Unicode support for Python v3.3.
4525- [0870e512d8dd] <4.13-maint>
4526-
4527-2012-03-04 Phil Thompson <phil@riverbankcomputing.com>
4528-
4529- * sipgen/gencode.c, sipgen/parser.y, siplib/sip.h.in.in:
4530- Ensure a reference is kept to the containing object when getting an
4531- instance variable that is a non-const wrapped object. This should
4532- (safely) avoid a certain kind of application bug.
4533- [0dd3cb4eff0e] <4.13-maint>
4534-
4535- * siplib/qtlib.c:
4536- Effectively backed out change 769 because it causes inconsistent
4537- behaviour when a method is connected to its object's destroyed()
4538- method.
4539- [ca0fb2b4bd89] <4.13-maint>
4540-
4541-2012-02-19 Phil Thompson <phil@riverbankcomputing.com>
4542-
4543- * siplib/siplib.c.in:
4544- If a Python reimplementation is a descriptor then use the descriptor
4545- protocol to bind it (specifically added for Nuitka).
4546- [88844f85f705] <4.13-maint>
4547-
4548-2012-02-10 Phil Thompson <phil@riverbankcomputing.com>
4549-
4550- * .hgtags:
4551- Added tag 4.13.2 for changeset 4efeefee717e
4552- [389a142d1997] <4.13-maint>
4553-
4554- * NEWS:
4555- Updated the NEWS file. Released as v4.13.2.
4556- [4efeefee717e] [4.13.2] <4.13-maint>
4557-
4558-2012-02-05 Phil Thompson <phil@riverbankcomputing.com>
4559-
4560- * sipgen/parser.y:
4561- Fixed bad pointer bugs in the parsing of exceptions.
4562- [1058b2c18309] <4.13-maint>
4563-
4564-2012-01-30 Phil Thompson <phil@riverbankcomputing.com>
4565-
4566- * siplib/objmap.c:
4567- Handle aliases properly when discovering that an object has been
4568- deleted.
4569- [f51e159f6dff] <4.13-maint>
4570-
4571-2011-12-22 Phil Thompson <phil@riverbankcomputing.com>
4572-
4573- * .hgtags:
4574- Added tag 4.13.1 for changeset a782debccd42
4575- [8a56d87be977] <4.13-maint>
4576-
4577- * NEWS:
4578- Released as v4.13.1.
4579- [a782debccd42] [4.13.1] <4.13-maint>
4580-
4581-2011-12-20 Phil Thompson <phil@riverbankcomputing.com>
4582-
4583- * sipgen/gencode.c:
4584- Fixed a bug in the generation of PyQt signal signatures that caused
4585- a "const" to be wrongly dropped.
4586- [39cf1d1d8167] <4.13-maint>
4587-
4588-2011-12-19 Phil Thompson <phil@riverbankcomputing.com>
4589-
4590- * siplib/siplib.c.in:
4591- Properly handle %PickleCode returning NULL.
4592- [29ec1c523114] <4.13-maint>
4593-
4594-2011-12-17 Phil Thompson <phil@riverbankcomputing.com>
4595-
4596- * NEWS, Roadmap.rst, sipgen/main.c:
4597- Deprecation warnings can no longer be suppressed. Updated the NEWS
4598- file. Updated the Roadmap.
4599- [358be4ede9fc] <4.13-maint>
4600-
4601-2011-12-07 Phil Thompson <phil@riverbankcomputing.com>
4602-
4603- * siplib/objmap.c:
4604- Completed the support for object aliases when garbage collecting an
4605- object.
4606- [7ab562ae0e39] <4.13-maint>
4607-
4608- * siplib/objmap.c, siplib/sip.h.in.in, siplib/sipint.h,
4609- siplib/siplib.c.in:
4610- When an object that uses multiple inheritance in its class hierachy
4611- is wrapped, all of its addresses when cast to the different super-
4612- classes are internally registered as aliases. This means that the
4613- original object will be found when given an address that is
4614- different as a result of a cast. (Note that the support for removing
4615- aliases when the object is garbage collected is not yet done.)
4616- [da88157d2f03] <4.13-maint>
4617-
4618-2011-12-05 Phil Thompson <phil@riverbankcomputing.com>
4619-
4620- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
4621- Backed out 1013. It breaks when the method is overloaded in a super-
4622- class but only one overload is reimplemented in this class so the
4623- compiler doesn't see the other overload in the super-class so we
4624- must refer to it explicitly.
4625- [82af71f0adcb] <4.13-maint>
4626-
4627- * sipgen/gencode.c:
4628- Backed out 1014.
4629- [e50d347a15db] <4.13-maint>
4630-
4631-2011-11-30 Phil Thompson <phil@riverbankcomputing.com>
4632-
4633- * sipgen/parser.y:
4634- Fixed the generation of handlers for virtuals defined in templates.
4635- [98421b9cc511] <4.13-maint>
4636-
4637- * siputils.py:
4638- The build system now handles recursively defined macros.
4639- [5d7476cbb504] <4.13-maint>
4640-
4641-2011-11-28 Phil Thompson <phil@riverbankcomputing.com>
4642-
4643- * sipgen/gencode.c:
4644- sipSelf is now generated with the correct const qualifier.
4645- [3c46012c8562] <4.13-maint>
4646-
4647- * NEWS, sipgen/parser.y, sphinx/specification_files.rst:
4648- Protected and private super-classes can now be specified but are
4649- otherwise ignored.
4650- [f331e22716d9] <4.13-maint>
4651-
4652- * custom/mkcustom.py:
4653- Support for sys.platform being 'linux3'.
4654- [01a339a7f2e9] <4.13-maint>
4655-
4656-2011-11-27 Phil Thompson <phil@riverbankcomputing.com>
4657-
4658- * NEWS, sipgen/parser.y, sphinx/annotations.rst:
4659- Added the /PyName/ typedef annotation.
4660- [8c147224120a] <4.13-maint>
4661-
4662-2011-11-23 Phil Thompson <phil@riverbankcomputing.com>
4663-
4664- * siputils.py:
4665- Fixed the build system for building a debug version of PyQt on OS/X.
4666- [3b44dc2f0efd] <4.13-maint>
4667-
4668- * NEWS, sipgen/parser.y, sipgen/sip.h.in, sipgen/transform.c:
4669- Class templates now allow template arguments to be used as a super-
4670- class.
4671- [08e44ad74137] <4.13-maint>
4672-
4673-2011-11-22 Phil Thompson <phil@riverbankcomputing.com>
4674-
4675- * NEWS, sipgen/parser.y:
4676- Added support for 'public' preceding the name of a class in a super-
4677- class list.
4678- [7fbb8a754a81] <4.13-maint>
4679-
4680- * sipgen/parser.y, sphinx/annotations.rst, sphinx/directives.rst,
4681- sphinx/specification_files.rst, sphinx/using.rst:
4682- Updated the docs where the examples refered to deprecated syntax.
4683- [36208e0a6773] <4.13-maint>
4684-
4685- * NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
4686- sphinx/annotations.rst, sphinx/directives.rst:
4687- Added the all_raise_py_exception argument to the %Module directive.
4688- Added the /NoRaisesPyException/ function annotation.
4689- [bf725fdfd029] <4.13-maint>
4690-
4691- * sipgen/gencode.c:
4692- Fixed the previous change for classes contained in namespaces.
4693- [09411053ef1b] <4.13-maint>
4694-
4695- * sipgen/gencode.c, sipgen/sip.h.in, sipgen/transform.c:
4696- Virtual catchers will now call the most recent C++ implementation
4697- (if there is no Python reimplementation) even if it is unknown to
4698- SIP rather than the most recent implementation that SIP knows about.
4699- [8893e36b8ca3] <4.13-maint>
4700-
4701-2011-11-21 Phil Thompson <phil@riverbankcomputing.com>
4702-
4703- * sipgen/gencode.c:
4704- Updated some code generator comments.
4705- [fad4bdca5bbd] <4.13-maint>
4706-
4707-2011-11-16 Phil Thompson <phil@riverbankcomputing.com>
4708-
4709- * siputils.py:
4710- Make sure PyQt's internal static support libraries don't get added
4711- to rpath.
4712- [91848382e6fd] <4.13-maint>
4713-
4714-2011-11-15 Phil Thompson <phil@riverbankcomputing.com>
4715-
4716- * sipgen/parser.y:
4717- Added support for void template arguments.
4718- [1c699c672ed7] <4.13-maint>
4719-
4720-2011-10-24 Phil Thompson <phil@riverbankcomputing.com>
4721-
4722- * .hgtags:
4723- Added tag 4.13 for changeset 0869eb93c773
4724- [3b2a3fb3fdda]
4725-
4726- * NEWS:
4727- Released as v4.13.
4728- [0869eb93c773] [4.13]
4729-
4730- * Merged the v4.12 maintenance branch into the trunk.
4731- [021e97baeeb0]
4732-
4733- * NEWS:
4734- Updated the NEWS file.
4735- [af334da384fd] <4.12-maint>
4736-
4737-2011-10-13 Phil Thompson <phil@riverbankcomputing.com>
4738-
4739- * sipgen/parser.y, sphinx/specification_files.rst:
4740- '*' and '&' are now accepted as unary operators in expressions used
4741- to define the values of default arguments.
4742- [4eba42cb2457] <4.12-maint>
4743-
4744- * sipgen/parser.y, sipgen/sip.h.in:
4745- Further fix for overloads with a variant that is protected and a
4746- variant that has optional arguments defined in a module that
4747- supports keyword arguments imported by a module that doesn't.
4748- [79951a333f30] <4.12-maint>
4749-
4750-2011-10-10 Phil Thompson <phil@riverbankcomputing.com>
4751-
4752- * sipgen/gencode.c, sphinx/annotations.rst:
4753- The /Transfer/ annotation can now be used with the /Array/
4754- annotation to prevent the freeing of the temporary array of
4755- pointers.
4756- [3a009ee97d60] <4.12-maint>
4757-
4758-2011-10-07 Phil Thompson <phil@riverbankcomputing.com>
4759-
4760- * NEWS, siplib/siplib.c.in, sphinx/directives.rst:
4761- %ConvertToSubClassCode can now cause a restart of the conversion
4762- process using a different requested type. This enables the correct
4763- handling of PyQt's QLayoutItem.
4764- [fa212070a486] <4.12-maint>
4765-
4766-2011-10-06 Phil Thompson <phil@riverbankcomputing.com>
4767-
4768- * siplib/siplib.c.in:
4769- sipIsPyMethod() now allows for an object's type's tp_mro to be NULL.
4770- This can happen when the only instance of a dynamically created type
4771- is in the process of being garbage collected.
4772- [d66046441fa8] <4.12-maint>
4773-
4774-2011-10-04 Phil Thompson <phil@riverbankcomputing.com>
4775-
4776- * siplib/siplib.c.in:
4777- Commit backout.
4778- [6e11ad753de6] <4.12-maint>
4779-
4780- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
4781- Backed out changeset 0bcc2ce09ba0 This (and the following changeset)
4782- doesn't seem to make a difference.
4783- [2df67f4a3294] <4.12-maint>
4784-
4785- * siplib/siplib.c.in:
4786- Commit backout.
4787- [4a9b20624f88] <4.12-maint>
4788-
4789- * siplib/siplib.c.in:
4790- Backed out changeset de3fe63e5dec This (and the previous changeset)
4791- doesn't seem to make a difference.
4792- [78740eff2bf4] <4.12-maint>
4793-
4794-2011-09-27 Phil Thompson <phil@riverbankcomputing.com>
4795-
4796- * siplib/siplib.c.in:
4797- Add an atexit function that will disable all Python
4798- reimplementations of virtuals.
4799- [de6a700f5faa] <4.12-maint>
4800-
4801-2011-09-26 Phil Thompson <phil@riverbankcomputing.com>
4802-
4803- * NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
4804- sphinx/directives.rst:
4805- Added the %DefaultDocstringFormat directive. Added the format
4806- argument to the %Docstring directive.
4807- [dba052605539] <4.12-maint>
4808-
4809-2011-09-24 Phil Thompson <phil@riverbankcomputing.com>
4810-
4811- * siplib/siplib.c.in:
4812- Fixed the previous fix to sipIsPyMethod() so that it doesn't retain
4813- the GIL.
4814- [de3fe63e5dec] <4.12-maint>
4815-
4816-2011-09-17 Phil Thompson <phil@riverbankcomputing.com>
4817-
4818- * sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
4819- sipIsPyMethod() now acquires the GIL before checking if the Python
4820- object has been garbage collected.
4821- [0bcc2ce09ba0] <4.12-maint>
4822-
4823- * siplib/siplib.c.in:
4824- Fixed a typo in a comment.
4825- [c4ad84eeed37] <4.12-maint>
4826-
4827- * siplib/siplib.c.in:
4828- Added a missing Py_DECREF() on a (very rarely used) error handling
4829- path.
4830- [a99ab15f7b18] <4.12-maint>
4831-
4832-2011-09-03 Phil Thompson <phil@riverbankcomputing.com>
4833-
4834- * sipgen/gencode.c:
4835- Fixed a code generation bug where a module with keyword arguments
4836- disabled derives from a class imported from a module with them
4837- enabled.
4838- [1c3d2412e35a] <4.12-maint>
4839-
4840-2011-08-26 Phil Thompson <phil@riverbankcomputing.com>
4841-
4842- * sipgen/gencode.c:
4843- PyQt will now only delete a QObject if the QObject belongs to the
4844- current thread, otherwise it calls deleteLater().
4845- [c2987628087f] <4.12-maint>
4846-
4847-2011-08-02 Phil Thompson <phil@riverbankcomputing.com>
4848-
4849- * .hgtags:
4850- Added tag 4.12.4 for changeset 7dff386f6d8c
4851- [49580889fa23] <4.12-maint>
4852-
4853- * NEWS:
4854- Released as v4.12.4.
4855- [7dff386f6d8c] [4.12.4] <4.12-maint>
4856-
4857-2011-07-29 Phil Thompson <phil@riverbankcomputing.com>
4858-
4859- * NEWS, siputils.py:
4860- Added support for Qt configured with -qtlibinfix based on a patch
4861- from Ian Scott.
4862- [d87cea364549] <4.12-maint>
4863-
4864- * NEWS, sipgen/gencode.c, siplib/siplib.c.in:
4865- Switched to using PyLong_AsUnsignedLongMask() and
4866- PyLong_AsUnsignedLongLongMask() instead of the non-mask versions so
4867- that overflow is ignored.
4868- [533e6a9e3e3a] <4.12-maint>
4869-
4870-2011-07-10 Phil Thompson <phil@riverbankcomputing.com>
4871-
4872- * sipgen/gencode.c:
4873- Make sure the %TypeHeaderCode of a /Default/ %Exception is included.
4874- [bbe43a0bad78] <4.12-maint>
4875-
4876-2011-06-23 Phil Thompson <phil@riverbankcomputing.com>
4877-
4878- * siplib/siplib.c.in:
4879- Fixed a regression introduced in the recent sipIsPyMethod() changes
4880- in the handling of special methods implemented by object (eg.
4881- __lt__).
4882- [f9f4b161c940] <4.12-maint>
4883-
4884- * siplib/siplib.c.in:
4885- Fixed some other warnings from more (undocumented) Python v3.2
4886- changes.
4887- [df42f6bf92c8] <4.12-maint>
4888-
4889- * siplib/sip.h.in.in, siplib/voidptr.c:
4890- Fixed sipConvertFromSliceObject() for Python v3.2.
4891- [3d0336c32dfa] <4.12-maint>
4892-
4893-2011-06-13 Phil Thompson <phil@riverbankcomputing.com>
4894-
4895- * build.py:
4896- Fixed the build system for MacOS as the development platform.
4897- [fdd3cecee60d] <4.12-maint>
4898-
4899-2011-05-22 Phil Thompson <phil@riverbankcomputing.com>
4900-
4901- * .hgtags:
4902- Added tag 4.12.3 for changeset 50282bee0c60
4903- [54c00a0e9c01] <4.12-maint>
4904-
4905- * NEWS:
4906- Released as v4.12.3.
4907- [50282bee0c60] [4.12.3] <4.12-maint>
4908-
4909-2011-05-20 Phil Thompson <phil@riverbankcomputing.com>
4910-
4911- * sipgen/gencode.c:
4912- Generated signal signatures no longer remove the reference '&' for
4913- non-const arguments.
4914- [274e38133e7a] <4.12-maint>
4915-
4916- * siplib/siplib.c.in:
4917- Fixed the calling of hooks for Python3.
4918- [192dfa04b3ac] <4.12-maint>
4919-
4920-2011-05-15 Phil Thompson <phil@riverbankcomputing.com>
4921-
4922- * siplib/siplib.c.in, sphinx/incompatibilities.rst:
4923- When searching for a Python reimplementation of a virtual C++
4924- method, any object that is not a C++ method wrapper is assumed to be
4925- valid. Previously, if it wasn't a Python function or method then it
4926- would be ignored. This is a potential incompatibility, but any code
4927- that is affected is either buggy or badly written.
4928- [f95ee221598d] <4.12-maint>
4929-
4930-2011-04-30 Phil Thompson <phil@riverbankcomputing.com>
4931-
4932- * .hgtags:
4933- Added tag 4.12.2 for changeset dd8f52a95d04
4934- [b99179c54a07] <4.12-maint>
4935-
4936- * NEWS:
4937- Released as v4.12.2.
4938- [dd8f52a95d04] [4.12.2] <4.12-maint>
4939-
4940-2011-04-22 Phil Thompson <phil@riverbankcomputing.com>
4941-
4942- * sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c:
4943- Added support for global inplace numeric operators.
4944- [af33bd829af3] <4.12-maint>
4945-
4946- * sipdistutils.py:
4947- Updated the license and copyright information for sipdistutils.py.
4948- [94f4971497a9] <4.12-maint>
4949-
4950-2011-04-18 Phil Thompson <phil@riverbankcomputing.com>
4951-
4952- * sipgen/parser.y:
4953- Made sure thngs were initialised to 0 properly when parsing new-
4954- style directives for variables.
4955- [c3f5a8b89968] <4.12-maint>
4956-
4957-2011-04-14 Phil Thompson <phil@riverbankcomputing.com>
4958-
4959- * NEWS, sipgen/parser.y:
4960- Handwritten code in class templates no longer has types substituted
4961- in lines that appear to be C preprocessor directives. This prevents
4962- #include'd file names getting substituted.
4963- [e039b65daa03] <4.12-maint>
4964-
4965-2011-04-08 Phil Thompson <phil@riverbankcomputing.com>
4966-
4967- * siplib/siplib.c.in:
4968- Fixed a regression in the handling of keyword arguments.
4969- [f68e042c94f5] <4.12-maint>
4970-
4971-2011-03-29 Phil Thompson <phil@riverbankcomputing.com>
4972-
4973- * NEWS:
4974- Updated the news file.
4975- [ec9807971e08] <4.12-maint>
4976-
4977-2011-03-27 Phil Thompson <phil@riverbankcomputing.com>
4978-
4979- * sipgen/parser.y:
4980- The names of optional arguments to protected methods are generated
4981- no matter what module the method is defined in.
4982- [fe4c052830ff] <4.12-maint>
4983-
4984- * sipgen/gencode.c:
4985- Another fix for the bad protected enum fix.
4986- [d112d90bcbfd] <4.12-maint>
4987-
4988- * sipgen/parser.y:
4989- Fixed a bug where keyword argument names were being generated when
4990- being defined in a parent module.
4991- [3e11c4b7d541] <4.12-maint>
4992-
4993-2011-03-26 Phil Thompson <phil@riverbankcomputing.com>
4994-
4995- * sipgen/parser.y:
4996- Mapped type template arguments now include "const" if appropriate.
4997- [22c5009485a8] <4.12-maint>
4998-
4999- * sipgen/gencode.c:
5000- Fixed a regression that caused enums in namespaces to be ignored.
5001- [f9b89f2c1c7d] <4.12-maint>
5002-
5003-2011-03-25 Phil Thompson <phil@riverbankcomputing.com>
5004-
5005- * siplib/siplib.c.in:
5006- The keyword support now explicitly checks that keywords are
5007- provided. Python handles this for ordinary methods but not for
5008- __init__.
5009- [05718fa95834] <4.12-maint>
5010-
5011-2011-03-22 Phil Thompson <phil@riverbankcomputing.com>
5012-
5013- * sipgen/gencode.c:
5014- Code is no longer generated for protected enums of /Abstract/
5015- classes.
5016- [d349bb35cdcc] <4.12-maint>
5017-
5018-2011-03-18 Phil Thompson <phil@riverbankcomputing.com>
5019-
5020- * sipgen/gencode.c:
5021- The /KeepReference/ function annotation now keeps a reference even
5022- if the result is already owned by Python.
5023- [ecb3e795382e] <4.12-maint>
5024-
5025- * sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c,
5026- sphinx/annotations.rst:
5027- /KeepReference/ can now be used as a function annotation.
5028- [dc7effca2a82] <4.12-maint>
5029-
5030- * configure.py.in:
5031- A fix for when building outside the source directory.
5032- [942f1b8ac66b] <4.12-maint>
5033-
5034-2011-03-03 Phil Thompson <phil@riverbankcomputing.com>
5035-
5036- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h.in,
5037- sipgen/transform.c:
5038- The %TypeHeaderCode from a class template is now included in the
5039- generated code.
5040- [b5992208a757] <4.12-maint>
5041-
5042-2011-02-24 Phil Thompson <phil@riverbankcomputing.com>
5043-
5044- * sipgen/parser.y, sipgen/transform.c:
5045- typedefs in class templates are now handled correctly.
5046- [62e2faa4fb81] <4.12-maint>
5047-
5048- * sipgen/transform.c:
5049- When comparing mapped type templates the number of dereferences of
5050- the template arguments is now taken into account.
5051- [9cf3969984a5] <4.12-maint>
5052-
5053-2011-02-22 Phil Thompson <phil@riverbankcomputing.com>
5054-
5055- * sipgen/gencode.c:
5056- %Docstring applied to a Qt signal is no longer ignored.
5057- [0fae9a0aae28] <4.12-maint>
5058-
5059-2011-02-21 Phil Thompson <phil@riverbankcomputing.com>
5060-
5061- * sipgen/gencode.c:
5062- Fixed /KeepReference/ when used with ctors.
5063- [1a5475b48b7c] <4.12-maint>
5064-
5065-2011-01-22 Phil Thompson <phil@riverbankcomputing.com>
5066-
5067- * .hgtags:
5068- Added tag 4.12.1 for changeset 6a8117e8b16a
5069- [2ead36288f97] <4.12-maint>
5070-
5071- * NEWS, build.py:
5072- Released as v4.12.1.
5073- [6a8117e8b16a] [4.12.1] <4.12-maint>
5074-
5075-2011-01-21 Phil Thompson <phil@riverbankcomputing.com>
5076-
5077- * siplib/siplib.c.in:
5078- Tweaked an exception message to make it easier to mimic in
5079- handwritten code.
5080- [426308437843] <4.12-maint>
5081-
5082- * sipgen/transform.c:
5083- sip will now longer complain about callables with the same Python
5084- signature if either of them has %MethodCode as it assumes that the
5085- %MethodCode will resolve any potential conflicts.
5086- [9ed59e5c8070] <4.12-maint>
5087-
5088-2011-01-15 Phil Thompson <phil@riverbankcomputing.com>
5089-
5090- * build.py, sphinx/conf.py.in, sphinx/static/default.css,
5091- sphinx/static/logo.png, sphinx/static/logo_tn.ico:
5092- Added a new Sphinx stylesheet.
5093- [c0c94278423e] <4.12-maint>
5094-
5095-2011-01-14 Phil Thompson <phil@riverbankcomputing.com>
5096-
5097- * NEWS:
5098- Updated the NEWS file.
5099- [fa100876a783] <4.12-maint>
5100-
5101-2011-01-07 Phil Thompson <phil@riverbankcomputing.com>
5102-
5103- * LICENSE, build.py, configure.py.in, sipgen/export.c,
5104- sipgen/extracts.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
5105- sipgen/main.c, sipgen/parser.y, sipgen/sip.h.in, sipgen/sipgen.sbf,
5106- sipgen/transform.c, siplib/apiversions.c, siplib/bool.cpp,
5107- siplib/descriptors.c, siplib/objmap.c, siplib/qtlib.c,
5108- siplib/sip.h.in.in, siplib/sipint.h, siplib/siplib.c.in,
5109- siplib/siplib.sbf.in, siplib/threads.c, siplib/voidptr.c,
5110- siputils.py, sphinx/conf.py.in, sphinx/directives.rst:
5111- Updated the copyright notices.
5112- [42e1cfe37140] <4.12-maint>
5113-
5114- * sphinx/directives.rst:
5115- Fixed a documentation typo.
5116- [e54f022f78f6] <4.12-maint>
5117-
5118- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
5119- sphinx/annotations.rst:
5120- Added the /RaisesPyException/ function annotation.
5121- [649736ef0ab2] <4.12-maint>
5122-
5123-2011-01-03 Phil Thompson <phil@riverbankcomputing.com>
5124-
5125- * configure.py.in, siputils.py, sphinx/build_system.rst,
5126- sphinx/installation.rst:
5127- Added the --deployment-target option to configure.py which should be
5128- used to work around bugs in the latest versions of Python on
5129- MacOS/X.
5130- [18c8fe174f38] <4.12-maint>
5131-
5132-2011-01-02 Phil Thompson <phil@riverbankcomputing.com>
5133-
5134- * sipgen/gencode.c:
5135- Fixed a code generation bug in the %MethodCode error handling for
5136- zero argument slots.
5137- [4ed8b04e7e7a] <4.12-maint>
5138-
5139-2010-12-31 Phil Thompson <phil@riverbankcomputing.com>
5140-
5141- * sipgen/lexer.l, sipgen/parser.y, sphinx/specification_files.rst:
5142- Added SIP_SSIZE_T as a pre-defined type so it can be used in .sip
5143- files.
5144- [1871ed7f3c9b] <4.12-maint>
5145-
5146- * sipgen/parser.y, sphinx/specification_files.rst:
5147- PyObject * is now a synonym for SIP_PYOBJECT in .sip files.
5148- [56e378d55db0] <4.12-maint>
5149-
5150- * siplib/siplib.c.in, sphinx/python_api.rst:
5151- Added sip.ispycreated().
5152- [e1efc2847290] <4.12-maint>
5153-
5154-2010-12-28 Phil Thompson <phil@riverbankcomputing.com>
5155-
5156- * NEWS, sipgen/parser.y, siplib/siplib.c.in,
5157- sphinx/specification_files.rst:
5158- Added support for the __getattribute__ and __getattr__ methods.
5159- [1da2e2e9fa1c] <4.12-maint>
5160-
5161-2010-12-27 Phil Thompson <phil@riverbankcomputing.com>
5162-
5163- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h.in,
5164- siplib/sip.h.in.in, siplib/siplib.c.in,
5165- sphinx/specification_files.rst:
5166- Added support for __setattr__ and __delattr__ methods.
5167- [3f7a1f5bff74] <4.12-maint>
5168-
5169- * siplib/siplib.c.in:
5170- The lazy attributes of a type are added when the first instance of
5171- the type is created. This leaves the instance tp_getattro and
5172- tp_setattro slots available.
5173- [12a8fc4ee75a] <4.12-maint>
5174-
5175-2010-12-24 Phil Thompson <phil@riverbankcomputing.com>
5176-
5177- * NEWS:
5178- Fixed some errors in the NEWS file.
5179- [44a6a3833477] <4.12-maint>
5180-
5181-2010-12-23 Phil Thompson <phil@riverbankcomputing.com>
5182-
5183- * .hgtags:
5184- Added tag 4.12 for changeset 4a79f5996bd7
5185- [111436ade941]
5186-
5187- * NEWS:
5188- Released as v4.12.
5189- [4a79f5996bd7] [4.12]
5190-
5191- * sipgen/gencode.c:
5192- A further fix for Python v2.4 and earlier.
5193- [5e655e94fc64]
5194-
5195- * sipgen/gencode.c:
5196- Fixed the code generated for a composite module an Python v2.4 and
5197- earlier.
5198- [00b0fadcf6fc]
5199-
5200- * siplib/voidptr.c:
5201- Add a couple of casts for MSVC2008.
5202- [68916b34ac59]
5203-
5204-2010-12-20 Phil Thompson <phil@riverbankcomputing.com>
5205-
5206- * sphinx/python_api.rst:
5207- Updated the documentation regarding the sip.simplewrapper type.
5208- [0f92caeb5770]
5209-
5210- * sipgen/parser.y, sipgen/transform.c:
5211- Fixed a bug looking up mapped types that are templates with enum
5212- arguments.
5213- [1212ca61ef1d]
5214-
5215-2010-12-18 Phil Thompson <phil@riverbankcomputing.com>
5216-
5217- * sipgen/transform.c:
5218- Fixed the inclusion of header files for init extenders.
5219- [171d8f4e9f3a]
5220-
5221-2010-12-11 Phil Thompson <phil@riverbankcomputing.com>
5222-
5223- * siplib/voidptr.c:
5224- sip.voidptr now uses PyLong_AsVoidPtr() for all versions of Python.
5225- [3d4ccc59c9c3]
5226-
5227-2010-12-09 Phil Thompson <phil@riverbankcomputing.com>
5228-
5229- * configure.py.in:
5230- Improved the configure.py error message when an invalid build macro
5231- is given.
5232- [631ded439583]
5233-
5234- * Roadmap.rst:
5235- Removed the section of the roadmap stating that SIP v5 will require
5236- types to be defined in advance of being used because (after thinking
5237- about it properly) in would be a complete pain for the user.
5238- [02eee09f591f]
5239-
5240- * sipgen/sip.h, sipgen/sip.h.in:
5241- Fixed an apparent hg problem with sipgen/sip.h[.in].
5242- [1fd9ca0698a0]
5243-
5244-2010-12-07 Phil Thompson <phil@riverbankcomputing.com>
5245-
5246- * sipgen/lexer.l, sipgen/sip.h:
5247- Fixed the parsing of %Extract.
5248- [393564f2cfeb]
5249-
5250- * sipgen/gencode.c:
5251- Make sure backslashes in generated #line directives are escaped.
5252- [cc58da4653e7]
5253-
5254- * sipgen/parser.y, sipgen/sip.h:
5255- A deprecation warning is issues for any argument annotations in an
5256- explicit C/C++ signature.
5257- [8d0e2a1b1d1c]
5258-
5259- * sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
5260- /AllowNone/ is a valid class annotation.
5261- [e94d52f996d7]
5262-
5263-2010-12-06 Phil Thompson <phil@riverbankcomputing.com>
5264-
5265- * sipgen/parser.y, sipgen/sip.h, sphinx/annotations.rst:
5266- Deprecation warning are now generated for any invalid annotation.
5267- Updated the docs so that annotations are mentioned in all the
5268- contexts that they can applied to.
5269- [a3715d0c74a5]
5270-
5271- * NEWS, build.py, sipgen/main.c, sipgen/main.c.in, sipgen/parser.y,
5272- sipgen/sip.h, sphinx/directives.rst:
5273- Added the automatic pseudo-%Timeline of SIP version numbers.
5274- [50fc306bfb6d]
5275-
5276- * NEWS, sphinx/annotations.rst:
5277- Documented /PyInt/ as a typedef annotation.
5278- [0d8a873e3d30]
5279-
5280-2010-12-03 Phil Thompson <phil@riverbankcomputing.com>
5281-
5282- * NEWS, siplib/sip.h.in.in, siplib/siplib.c.in, sphinx/c_api.rst:
5283- Added sipGetAddress() to the public API.
5284- [b202f0d04ba6]
5285-
5286-2010-11-30 Phil Thompson <phil@riverbankcomputing.com>
5287-
5288- * sipgen/main.c.in, sphinx/command_line.rst:
5289- Don't try and issue warnings until the -w flag has been parsed.
5290- [64e98b58216b]
5291-
5292- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/main.c.in,
5293- sipgen/parser.y, sipgen/sip.h, sphinx/annotations.rst,
5294- sphinx/command_line.rst, sphinx/directives.rst:
5295- Added the 'keyword_arguments' argument to %Module. The /KeywordArgs/
5296- annotation now takes a string value describing the level of keyword
5297- argument support. The previous behavior is deprecated. Deprecated
5298- the /NoKeywordArgs/ annotation. Deprecated the code generator's -k
5299- command line option.
5300- [2294802123f4]
5301-
5302-2010-11-28 Phil Thompson <phil@riverbankcomputing.com>
5303-
5304- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
5305- More generic parser fixes for directives that allow an argument
5306- without requiring parentheses.
5307- [1d6ba419952c]
5308-
5309-2010-11-27 Phil Thompson <phil@riverbankcomputing.com>
5310-
5311- * sipgen/parser.y, sphinx/directives.rst:
5312- Semi-colons are now not allowed after directives with no sub-
5313- directives but are now required after the closing brace after sub-
5314- directives.
5315- [1a300e9d7f80]
5316-
5317- * sipgen/parser.y:
5318- Tidy up some coding inconsistencies in the parser.
5319- [c86ace2573fd]
5320-
5321- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
5322- The (internal) %Plgin directive now uses the revised syntax.
5323- [86a793919cd1]
5324-
5325- * sipgen/lexer.l, sipgen/parser.y, sphinx/directives.rst:
5326- %Timeline now respects %If/%End.
5327- [d227e7ea1eac]
5328-
5329- * sipgen/parser.y, sphinx/directives.rst:
5330- %Platforms now respects %If/%End.
5331- [3c1e4cb9dd4c]
5332-
5333- * sipgen/parser.y, sphinx/directives.rst:
5334- %Doc and %ExportedDoc now respect %If/%End.
5335- [e3f95120f8c9]
5336-
5337- * sipgen/lexer.l, sipgen/parser.y, sphinx/directives.rst:
5338- %OptionalInclude is now deprecated.
5339- [fbfa68d0b559]
5340-
5341- * sipgen/parser.y, sphinx/directives.rst:
5342- The %MappedType sub-directives now respect %If/%End.
5343- [afb6cb9b21b9]
5344-
5345- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5346- sphinx/annotations.rst, sphinx/conf.py.in, sphinx/directives.rst:
5347- %License now uses the revised syntax.
5348- [ebeed9b2838e]
5349-
5350- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5351- sphinx/directives.rst:
5352- %Include now follows the new syntax and includes the functionality
5353- of %OptionalInclude.
5354- [b71dca41f194]
5355-
5356- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5357- sphinx/directives.rst:
5358- %Import now uses the revised syntax.
5359- [df828f381c63]
5360-
5361- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5362- sphinx/directives.rst:
5363- Changed the argument of %DefaultEncoding to 'name' to be consistent
5364- with other similar directives.
5365- [66c4f0e60cc5]
5366-
5367-2010-11-26 Phil Thompson <phil@riverbankcomputing.com>
5368-
5369- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5370- sphinx/directives.rst:
5371- %Feature now uses the revised syntax.
5372- [ca22b358ab05]
5373-
5374- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5375- sphinx/directives.rst, sphinx/specification_files.rst:
5376- %Exception now (sort of) follows the revised syntax.
5377- [b19d67575786]
5378-
5379- * sipgen/parser.y, sphinx/directives.rst:
5380- Reverted the change to make %Copying a sub-directive.
5381- [d59876780e53]
5382-
5383- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5384- sphinx/directives.rst:
5385- %DefaultEncoding now uses the revised syntax.
5386- [111024e5bcbd]
5387-
5388-2010-11-25 Phil Thompson <phil@riverbankcomputing.com>
5389-
5390- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5391- sphinx/directives.rst, sphinx/incompatibilities.rst,
5392- sphinx/specification_files.rst:
5393- Fixed some more generic parser issues. %Copying is now a sub-
5394- directive of each of the different module directives. All the module
5395- directives now support docstrings.
5396- [6244dcb1fcb9]
5397-
5398- * sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
5399- %CompositeModule and %Consolidated module now conform to the revised
5400- syntax.
5401- [18da01aba948]
5402-
5403- * sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst,
5404- sphinx/using.rst:
5405- %API now uses the revised directive syntax.
5406- [b7ba07998b37]
5407-
5408-2010-11-23 Phil Thompson <phil@riverbankcomputing.com>
5409-
5410- * sipgen/gencode.c:
5411- Generated #line directives now include the full path name of the
5412- file.
5413- [52ed45309f83]
5414-
5415- * siplib/siplib.c.in:
5416- Reverted the broken "fixes" passing sub-int values as varargs.
5417- [167ff79ec560]
5418-
5419-2010-11-22 Phil Thompson <phil@riverbankcomputing.com>
5420-
5421- * sipgen/parser.y, sipgen/sip.h, sphinx/directives.rst:
5422- The %Module and %Property sub-directives now respect %If/%End.
5423- %AccessCode, %GetCode and %SetCode are now new-style sub-directives.
5424- [7dfe49a56ec7]
5425-
5426- * Roadmap.rst:
5427- Added the v5 roadmap.
5428- [9ddab02f25a6]
5429-
5430- * sipgen/parser.y:
5431- /PyInt/ can now be applied to pointer types.
5432- [0a986be7f8e4]
5433-
5434-2010-11-21 Phil Thompson <phil@riverbankcomputing.com>
5435-
5436- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
5437- sipgen/sip.h, sipgen/transform.c, siplib/siplib.c.in,
5438- sphinx/annotations.rst, sphinx/c_api.rst:
5439- Added /PyInt/ as an argument and function annotation. Added the L
5440- and M format characters to sipBuildResult(), sipCallMethod() and
5441- sipParseResult(). Fixed a bug in sipParseResult() in the handling of
5442- encoded strings.
5443- [372703eb4e88]
5444-
5445- * sipgen/gencode.c:
5446- Fixed a bug maintaining the current line number when generating
5447- docstrings.
5448- [2327d077f65a]
5449-
5450-2010-11-20 Phil Thompson <phil@riverbankcomputing.com>
5451-
5452- * sipgen/parser.y, sphinx/specification_files.rst:
5453- Added parser support for empty namespaces. Documented how namespaces
5454- are implemented and how to achieve the different behaviors.
5455- [9101c7412e89]
5456-
5457- * sphinx/annotations.rst, sphinx/command_line.rst,
5458- sphinx/directives.rst:
5459- Documented that -I, %Import and %Include all expect POSIX style
5460- directory separators.
5461- [7b0d6bc17f28]
5462-
5463-2010-11-13 Phil Thompson <phil@riverbankcomputing.com>
5464-
5465- * siplib/sip.h.in.in, siplib/siplib.c.in, siplib/voidptr.c:
5466- Eliminate compiler warnings when building the sip module.
5467- [93040d2c716c]
5468-
5469- * siplib/siplib.c.in, siplib/voidptr.c:
5470- Fixed some Python v3 and MSVC build bugs.
5471- [43cb06769dd6]
5472-
5473-2010-11-12 Phil Thompson <phil@riverbankcomputing.com>
5474-
5475- * NEWS:
5476- More updates to the NEWS file.
5477- [c38668e9dd93]
5478-
5479- * NEWS:
5480- Updated the NEWS file.
5481- [37a725e0b83a]
5482-
5483- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, siplib/siplib.c.in:
5484- Eliminated a couple of warning messages.
5485- [8d220ed77f02]
5486-
5487- * sipgen/parser.y:
5488- %Module and %Property sub-directives can now be individually
5489- enclosed in %If/%End.
5490- [637f2357b1e4]
5491-
5492- * sphinx/annotations.rst, sphinx/directives.rst:
5493- Documented the %AutoPyName directive.
5494- [e8106eb58553]
5495-
5496- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
5497- Added the %AutoPyName directive.
5498- [85d02c95ebf7]
5499-
5500-2010-11-11 Phil Thompson <phil@riverbankcomputing.com>
5501-
5502- * sipgen/gencode.c, sipgen/main.c.in, sipgen/sip.h,
5503- sphinx/command_line.rst:
5504- Added the -T command line flag to suppress the timestamp in the
5505- header of generated source files.
5506- [d84b9db1d89d]
5507-
5508- * sipgen/gencode.c:
5509- Fixed a bug where keyword strings where being generated for /Out/
5510- arguments.
5511- [2a314426e67a]
5512-
5513- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5514- sphinx/directives.rst:
5515- Replaced the %RealArgNames directive with the use_argument_names
5516- argument to the %Module directive.
5517- [0eb004659e3d]
5518-
5519- * sipgen/parser.y, sphinx/directives.rst:
5520- The %Module directive now respects the %If directive.
5521- [9b99a6f7d295]
5522-
5523- * sphinx/directives.rst:
5524- Documented the revised %Module directive syntax.
5525- [0a7d4b89a2eb]
5526-
5527- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
5528- %Module now supports the revised directive syntax. Module docstrings
5529- are now supported. %CModule is deprecated.
5530- [2606deb743f2]
5531-
5532-2010-11-09 Phil Thompson <phil@riverbankcomputing.com>
5533-
5534- * sipgen/gencode.c:
5535- Fixed a bug in the generated of the variables table.
5536- [eac351f5cca7]
5537-
5538- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
5539- Fixed a bug in the tidying up of temporary class instances in unary
5540- operators.
5541- [990299a02451]
5542-
5543- * sphinx/directives.rst:
5544- Documented the %Property directive.
5545- [455500391b43]
5546-
5547- * sipgen/parser.y, sphinx/directives.rst:
5548- Documented the revised directive syntax. Updated %Extract so that it
5549- follows the revised syntax completely. %Extract no longer uses a
5550- quoted string as an identifer.
5551- [7970e4fa94ef]
5552-
5553- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c,
5554- siplib/sip.h.in.in, siplib/siplib.c.in:
5555- Completed the support for %Property.
5556- [dfd258dec260]
5557-
5558- * sipgen/gencode.c, sipgen/sip.h:
5559- The code generator now generates the property structure.
5560- [07134d471acd]
5561-
5562- * sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h.in.in,
5563- siplib/siplib.c.in:
5564- Migrated the existing variable support to the new runtime structure.
5565- [c66412e816ab]
5566-
5567-2010-11-08 Phil Thompson <phil@riverbankcomputing.com>
5568-
5569- * sipgen/lexer.l:
5570- Fixed the parser so that C/C++ argument names don't get confused
5571- with directive argument names.
5572- [8bad8295e12f]
5573-
5574-2010-11-07 Phil Thompson <phil@riverbankcomputing.com>
5575-
5576- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
5577- Renamed getter to get and setter to set to be consistent with
5578- %GetCode and %SetCode.
5579- [eef0c18dd0df]
5580-
5581- * sipgen/parser.y, sipgen/transform.c:
5582- The %Property getters and setters are now validated.
5583- [caf6e4cee176]
5584-
5585- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
5586- Added parser support for %Property.
5587- [41f66dca2447]
5588-
5589- * sipgen/extracts.c, sipgen/lexer.l, sipgen/main.c.in,
5590- sipgen/parser.y, sipgen/sip.h, sipgen/sipgen.sbf,
5591- sphinx/command_line.rst, sphinx/directives.rst,
5592- sphinx/specification_files.rst:
5593- Added the %Extract directive and the corresponding -X command line
5594- option.
5595- [37a7149135a9]
5596-
5597-2010-11-04 Phil Thompson <phil@riverbankcomputing.com>
5598-
5599- * sipgen/lexer.l, sipgen/main.c.in, sipgen/parser.y, sipgen/sip.h,
5600- sphinx/c_api.rst, sphinx/command_line.rst, sphinx/directives.rst,
5601- sphinx/introduction.rst.in, sphinx/python_api.rst:
5602- Issue warning messages from the parser about deprecated syntax.
5603- Updated the documentation regarding deprecations.
5604- [3a45afc8d9eb]
5605-
5606- * siplib/voidptr.c:
5607- Fixed a bug in the new sip.voidptr code for Python v2.5 and earlier.
5608- [7ff903c5cb76]
5609-
5610- * sphinx/python_api.rst:
5611- Updated the sip.voidptr documentation to describe the memoryview-
5612- like support.
5613- [b49b90639831]
5614-
5615- * sipdistutils.py:
5616- sipdistutils.py now allows the output directory to be overriden in a
5617- derived class.
5618- [5a1f9d9fff30]
5619-
5620-2010-11-02 Phil Thompson <phil@riverbankcomputing.com>
5621-
5622- * siplib/voidptr.c:
5623- Fixed a silly typo in the sip.voidptr changes.
5624- [af2d7120dd7f]
5625-
5626- * siplib/voidptr.c:
5627- sip.voidptr now supports sub-script assignment for Python v2.4 and
5628- earlier.
5629- [14186a17d310]
5630-
5631- * siplib/voidptr.c:
5632- sip.voidptr now supports sub-script assignment for Python v2.5.
5633- [67ef521ce467]
5634-
5635- * siplib/voidptr.c:
5636- sip.voidptr now supports sub-script assignment (Python v2.6 and
5637- later only at the moment).
5638- [4ad087fd7e94]
5639-
5640- * siplib/voidptr.c:
5641- sip.voidptr can now be indexed like memoryview.
5642- [76620ebb872e]
5643-
5644- * siplib/voidptr.c:
5645- sip.voidptr now fully implements the new buffer protocol for Python
5646- v2 so that memoryview works.
5647- [f9dfbda5844f]
5648-
5649- * NEWS, build.py, configure.py.in, sipgen/gencode.c, siplib/sip.h.in,
5650- siplib/sip.h.in.in, siplib/siplib.c, siplib/siplib.c.in,
5651- siplib/siplib.sbf, siplib/siplib.sbf.in, sphinx/installation.rst,
5652- sphinx/using.rst:
5653- Added the --sip-module flag to configure.py to allow private copies
5654- of the module to be built.
5655- [8b8e93a159c6]
5656-
5657-2010-10-25 Phil Thompson <phil@riverbankcomputing.com>
5658-
5659- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
5660- sphinx/directives.rst, sphinx/specification_files.rst:
5661- Added the %RealArgNames directive.
5662- [12acbffd0085]
5663-
5664-2010-10-24 Phil Thompson <phil@riverbankcomputing.com>
5665-
5666- * sipgen/lexer.l:
5667- All directives now start with the first non-whitespace character of
5668- a line.
5669- [c5a525178196]
5670-
5671- * .hgtags:
5672- Merged the v4.11 branch into the trunk.
5673- [a7689cef100b]
5674-
5675-2010-10-22 Phil Thompson <phil@riverbankcomputing.com>
5676-
5677- * NEWS:
5678- Released as v4.11.2.
5679- [13f57fe7e992] [4.11.2] <4.11-maint>
5680-
5681- * sipgen/gencode.c:
5682- Fixed the implementation of %MethodCode for dtors in C modules.
5683- [4f26704c5789] <4.11-maint>
5684-
5685-2010-10-21 Phil Thompson <phil@riverbankcomputing.com>
5686-
5687- * siplib/siplib.c:
5688- Make sure that lazy attributes have been added when searching for a
5689- Python reimplemention of a C++ method.
5690- [f45ff97a3c66] <4.11-maint>
5691-
5692- * siplib/sip.h.in:
5693- Properly set SIP_SUPPORT_PYCOBJECT in sip.h.
5694- [f1cf3fef8eb5] <4.11-maint>
5695-
5696-2010-10-12 Phil Thompson <phil@riverbankcomputing.com>
5697-
5698- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h.in,
5699- siplib/siplib.c:
5700- __enter__ and __exit__ are now handled as non-lazy methods and are
5701- added to the type dictionary when the type is created (rather than
5702- when the first attribute of the first instance is accessed). This
5703- required by a change in behaviour introduced in Python v2.7 and
5704- v3.2.
5705- [5167b98767e2] <4.11-maint>
5706-
5707-2010-10-11 Phil Thompson <phil@riverbankcomputing.com>
5708-
5709- * NEWS:
5710- Updated the NEWS file.
5711- [ed3deec59b70] <4.11-maint>
5712-
5713-2010-10-09 Phil Thompson <phil@riverbankcomputing.com>
5714-
5715- * sipgen/gencode.c:
5716- /KeepReference/ now applies to global functions.
5717- [52e6a73fd81f] <4.11-maint>
5718-
5719- * siplib/siplib.c:
5720- Fixed a regression in the handling of global class pointers (eg.
5721- qApp in PyQt3).
5722- [08328092b36b] <4.11-maint>
5723-
5724-2010-10-08 Phil Thompson <phil@riverbankcomputing.com>
5725-
5726- * sipgen/gencode.c, siplib/siplib.c:
5727- /KeepReference/ can now be applied to static methods.
5728- [43c2359df596] <4.11-maint>
5729-
5730-2010-10-03 Phil Thompson <phil@riverbankcomputing.com>
5731-
5732- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
5733- sphinx/directives.rst:
5734- %TypeCode can now be specified in a %MappedType directive.
5735- [8727e0eb0f5e] <4.11-maint>
5736-
5737- * sipgen/transform.c:
5738- Mapped types for templates no longer require the template arguments
5739- to be defined.
5740- [7ed0e265a218] <4.11-maint>
5741-
5742-2010-10-01 Phil Thompson <phil@riverbankcomputing.com>
5743-
5744- * siputils.py:
5745- Added support for the MSBUILD Makefile generator introduced in Qt
5746- v4.7 for the win32-msvc2010 target.
5747- [ff2494c0e443] <4.11-maint>
5748-
5749-2010-09-30 Phil Thompson <phil@riverbankcomputing.com>
5750-
5751- * sipgen/parser.y:
5752- A protected class enum will now trigger the generation of a shadow
5753- class.
5754- [18681651c2c7] <4.11-maint>
5755-
5756-2010-09-27 Phil Thompson <phil@riverbankcomputing.com>
5757-
5758- * sphinx/c_api.rst:
5759- A minor documentation fix.
5760- [f6df40935e99] <4.11-maint>
5761-
5762-2010-09-24 Phil Thompson <phil@riverbankcomputing.com>
5763-
5764- * configure.py.in:
5765- Fixed the rpaths problem properly (ie. didn't apply the fix to a
5766- generated file).
5767- [c93f5da3d4e4] <4.11-maint>
5768-
5769- * NEWS, siputils.py:
5770- Taught the build system about QtDeclarative. Updated the NEWS file.
5771- [2487fb909ee1] <4.11-maint>
5772-
5773-2010-09-23 Phil Thompson <phil@riverbankcomputing.com>
5774-
5775- * siputils.py:
5776- Fixed rpaths for Qt v4.7.
5777- [4d12df6526e5] <4.11-maint>
5778-
5779-2010-09-14 Phil Thompson <phil@riverbankcomputing.com>
5780-
5781- * siplib/sip.h.in:
5782- Ensured that uint is always defined.
5783- [b6508f053614] <4.11-maint>
5784-
5785-2010-09-06 Phil Thompson <phil@riverbankcomputing.com>
5786-
5787- * .hgtags:
5788- Added tag 4.11.1 for changeset fdf86b3115cd
5789- [3213dc5731bb] <4.11-maint>
5790-
5791- * NEWS:
5792- Released as v4.11.1.
5793- [fdf86b3115cd] [4.11.1] <4.11-maint>
5794-
5795-2010-09-02 Phil Thompson <phil@riverbankcomputing.com>
5796-
5797- * siplib/objmap.c:
5798- When deciding if an entry in the object map is valid the C/C++
5799- address is first checked to see if it is still valid. This detects
5800- the case (if there is a guard in place) where a new C/C++ object has
5801- been created at the same address of one that has been destroyed (but
5802- whose Python wrapper is still around).
5803-
5804- HG commit message. Lines beginning with 'HG:' are removed.
5805- [13632c7f0f2c] <4.11-maint>
5806-
5807-2010-08-31 Phil Thompson <phil@riverbankcomputing.com>
5808-
5809- * .hgtags:
5810- Added tag 4.11 for changeset 80f7c6530416
5811- [86286537601c]
5812-
5813- * NEWS:
5814- Released as v4.11.
5815- [80f7c6530416] [4.11]
5816-
5817-2010-08-23 Phil Thompson <phil@riverbankcomputing.com>
5818-
5819- * sipgen/gencode.c, siplib/objmap.c, siplib/sip.h.in, siplib/siplib.c,
5820- sphinx/c_api.rst:
5821- Objects with handwritten access functions are no longer placed in
5822- the object map as they don't have a usable key. Reworked the support
5823- for meta-type aupplied access functions so that the original address
5824- is still available (even if it is no longer valid) to be used to
5825- search the object map.
5826- [c38d259c1879]
5827-
5828-2010-08-21 Phil Thompson <phil@riverbankcomputing.com>
5829-
5830- * NEWS:
5831- Updated the NEWS file.
5832- [7cff86d70dc7]
5833-
5834-2010-08-20 Phil Thompson <phil@riverbankcomputing.com>
5835-
5836- * siplib/siplib.c:
5837- The parsing of encoded strings is now done with two passes so that
5838- encoding errors are now picked up in the second pass and raise an
5839- appropriate exception.
5840- [89ff42be167c]
5841-
5842-2010-08-19 Phil Thompson <phil@riverbankcomputing.com>
5843-
5844- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
5845- sphinx/annotations.rst:
5846- The /KeepReference/ annotation now takes an optional integer key
5847- value.
5848- [efff0d2932e1]
5849-
5850- * sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c:
5851- operator() and __call__() now support keyword arguments.
5852- [0daacc25c6ce]
5853-
5854-2010-08-18 Phil Thompson <phil@riverbankcomputing.com>
5855-
5856- * siplib/sip.h.in, siplib/siplib.c, sphinx/c_api.rst:
5857- Completed the access function implementation so that any resources
5858- created by access functions are released appropriately.
5859- [35cf486718d4]
5860-
5861-2010-08-17 Phil Thompson <phil@riverbankcomputing.com>
5862-
5863- * sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c,
5864- sphinx/c_api.rst:
5865- Removed sipRegisterObjectFinaliser() and assume that the equivalent
5866- functionality will be provided by a custom meta-class.
5867- [d028d0cecb7b]
5868-
5869- * sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c:
5870- Added sipRegisterObjectFinaliser() and related infrastructure.
5871- (Though it will probably be replaced by a meta-type based
5872- implementation.)
5873- [d525d84c9d61]
5874-
5875- * sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c, siplib/sip.h.in,
5876- siplib/sipint.h, siplib/siplib.c:
5877- All access to the C/C++ object now goes through
5878- sip_api_get_address(). Bumped the internal API version to 8.0
5879- (because the size of sipSimpleWrapper has changed).
5880- [956c80d8e9fa]
5881-
5882-2010-08-16 Phil Thompson <phil@riverbankcomputing.com>
5883-
5884- * sipgen/parser.y:
5885- Make sure #line 0 is not generated as the Intel compiler doesn't
5886- like it.
5887- [d715222f1f65]
5888-
5889- * siplib/voidptr.c, sphinx/c_api.rst, sphinx/embedding.rst,
5890- sphinx/python_api.rst:
5891- Added support for Python v3.2. Exposed the SIP_USE_PYCAPSULE macro
5892- as part of the C API.
5893- [0e34dc4e0824]
5894-
5895-2010-08-15 Phil Thompson <phil@riverbankcomputing.com>
5896-
5897- * sipgen/gencode.c:
5898- Fixed a code generation bug affecting inplace operators.
5899- [6cddd9276220]
5900-
5901-2010-08-05 Phil Thompson <phil@riverbankcomputing.com>
5902-
5903- * siplib/siplib.c:
5904- Refactored the calls to assert() when creating types to catch any
5905- recursive calls.
5906- [052b642f04a8]
5907-
5908-2010-08-03 Phil Thompson <phil@riverbankcomputing.com>
5909-
5910- * sipgen/gencode.c:
5911- Make sure the %UnitPostIncludeCode is after all #includes.
5912- [d45e8042c7da]
5913-
5914- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
5915- sipgen/sip.h, sphinx/directives.rst:
5916- Added the %UnitPostIncludeCode directive.
5917- [058d680384e7]
5918-
5919- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
5920- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
5921- sphinx/directives.rst:
5922- Removed the %RemoveNamespace directive.
5923- [18fc68280d49]
5924-
5925- * sipgen/gencode.c:
5926- Removed 'const' and '&' from signal signatures so that Qt doesn't
5927- have to.
5928- [9e9795fa36a5]
5929-
5930- * sipgen/transform.c:
5931- Fixed a problem with the recent change regarding the original types
5932- of template based mapped types.
5933- [83019d3299ea]
5934-
5935- * sipgen/gencode.c, sipgen/parser.y:
5936- Generated code now uses 'uint' rather than 'unsigned'. This is
5937- because Qt's QMetaObject::normalizedType() converts the latter to
5938- the former.
5939- [0923d067541a]
5940-
5941- * sipgen/gencode.c:
5942- The generated typedefs table now always defines a type in terms of a
5943- base type and never another typedef type.
5944- [5ed328590fd1]
5945-
5946- * sipgen/transform.c:
5947- Template based mapped types now correctly keep a reference to the
5948- original types used when invoking the template.
5949- [691852c6b0b0]
5950-
5951-2010-07-31 Phil Thompson <phil@riverbankcomputing.com>
5952-
5953- * sipgen/transform.c:
5954- Const references are now assumed to be input arguments rather than
5955- output arguments.
5956- [d11b7adf095a]
5957-
5958-2010-07-29 Phil Thompson <phil@riverbankcomputing.com>
5959-
5960- * sipgen/parser.y:
5961- An improvement on the previous fix.
5962- [086a77b99464]
5963-
5964- * sipgen/parser.y:
5965- Fixed global operators that are declared in a namespace.
5966- [c46ac8f9b1e9]
5967-
5968-2010-07-27 Phil Thompson <phil@riverbankcomputing.com>
5969-
5970- * build.py:
5971- Switched to the new format of snapshot names.
5972- [4d30378c5622]
5973-
5974- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l,
5975- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
5976- sphinx/directives.rst:
5977- Implemented the %RemoveNamespace directive.
5978- [a2eb3fe46f43]
5979-
5980- * lib/LICENSE, lib/LICENSE-GPL2.txt, lib/LICENSE-GPL3.txt,
5981- lib/LICENSE.short, lib/README, lib/configure.py,
5982- lib/sipdistutils.py, lib/siputils.py, sipgen/main.c, siplib/sip.h,
5983- sphinx/Makefile, sphinx/conf.py, sphinx/introduction.rst:
5984- Merged v4.10.5 into the trunk.
5985- [4cce948441da]
5986-
5987-2010-07-16 Phil Thompson <phil@riverbankcomputing.com>
5988-
5989- * NEWS, siplib/sip.h.in, siplib/voidptr.c, sphinx/python_api.rst:
5990- Released as v4.10.5. Fixed the build regression against Python v3
5991- introduced in SIP v4.10.4. Properly fixed the Python v2.7 workaround
5992- that SIP v4.10.4 was supposed to address.
5993- [834787fbcb72] [4.10.5] <4.10-maint>
5994-
5995-2010-07-15 Phil Thompson <phil@riverbankcomputing.com>
5996-
5997- * .hgtags:
5998- Added tag 4.10.4 for changeset 046c346a71fe
5999- [d0340fc3658c] <4.10-maint>
6000-
6001- * NEWS:
6002- Released as v4.10.4.
6003- [046c346a71fe] [4.10.4] <4.10-maint>
6004-
6005-2010-07-13 Phil Thompson <phil@riverbankcomputing.com>
6006-
6007- * NEWS, sipgen/gencode.c, siplib/siplib.c, siplib/voidptr.c:
6008- Use PyCapsule when available to work around an apparent bug in
6009- PyCObject in Python v2.7.
6010- [f5574a061fd0] <4.10-maint>
6011-
6012-2010-07-12 Phil Thompson <phil@riverbankcomputing.com>
6013-
6014- * .hgtags:
6015- Added tag 4.10.3 for changeset 2ec1a8f8560c
6016- [254b8071446e] <4.10-maint>
6017-
6018- * NEWS, README:
6019- Released as v4.10.3.
6020- [2ec1a8f8560c] [4.10.3] <4.10-maint>
6021-
6022-2010-07-08 Phil Thompson <phil@riverbankcomputing.com>
6023-
6024- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
6025- sipgen/transform.c, sphinx/annotations.rst:
6026- Added support for the __len__ annotation.
6027- [f760366cea3b] <4.10-maint>
6028-
6029- * sipgen/transform.c:
6030- Assignment helpers are now generated for classes that have a ctor
6031- where all arguments are optional.
6032- [3e647ed0f2a2] <4.10-maint>
6033-
6034-2010-06-29 Phil Thompson <phil@riverbankcomputing.com>
6035-
6036- * sipgen/gencode.c:
6037- Fixed the code generator for /NewThread/ methods so that it no
6038- longer assumes that such methods are abstract (though it still
6039- assumes they don't return a value) as QThread.run() no longer is.
6040- [710b71e6f0c6] <4.10-maint>
6041-
6042- * siputils.py:
6043- Fixed a regression introduced when fixing the += problem with spec.
6044- files.
6045- [94d177d8f426] <4.10-maint>
6046-
6047-2010-06-11 Phil Thompson <phil@riverbankcomputing.com>
6048-
6049- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
6050- Changed the generated docstrings for signals to use [] rather than
6051- () to surround the arguments.
6052- [1851f2d754e7] <4.10-maint>
6053-
6054-2010-06-10 Phil Thompson <phil@riverbankcomputing.com>
6055-
6056- * sipgen/gencode.c:
6057- Fixed a code generation bug where special methods that invoke
6058- sipNoMethod() were trying to tidy up sipParseErr rather than leaving
6059- it to sipNoMethod().
6060- [90aad46480b2] <4.10-maint>
6061-
6062-2010-06-08 Phil Thompson <phil@riverbankcomputing.com>
6063-
6064- * sipgen/gencode.c:
6065- Fixed the previous fix to avoid compiler warning messages.
6066- [0a3f45fea555] <4.10-maint>
6067-
6068- * sipgen/gencode.c:
6069- Fixed a code generation bug caused by ctor handwritten code that
6070- sets the error flag and isn't handling unused keyword arguments.
6071- [d53889ad7abe] <4.10-maint>
6072-
6073-2010-06-06 Phil Thompson <phil@riverbankcomputing.com>
6074-
6075- * NEWS, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
6076- sphinx/specification_files.rst:
6077- Added support for Q_SLOT and Q_SIGNAL.
6078- [cb323da88516] <4.10-maint>
6079-
6080-2010-06-05 Phil Thompson <phil@riverbankcomputing.com>
6081-
6082- * sipgen/lexer.l:
6083- Added support for Q_SIGNALS and Q_SLOTS as synonyms for signals and
6084- slots.
6085- [daf61465ef3c] <4.10-maint>
6086-
6087- * siputils.py:
6088- Fixed a build system regression introduced when not linking against
6089- X11 when building QtCore.
6090- [ee5415b91040] <4.10-maint>
6091-
6092-2010-06-03 Phil Thompson <phil@riverbankcomputing.com>
6093-
6094- * siputils.py:
6095- The build system now handles += in spec files properly.
6096- [f292793d6c99] <4.10-maint>
6097-
6098-2010-05-28 Phil Thompson <phil@riverbankcomputing.com>
6099-
6100- * configure.py.in, siputils.py:
6101- A build system fix for building a static version of QWebKit.
6102- [de0df36d3162] <4.10-maint>
6103-
6104- * sipgen/transform.c:
6105- Fixed a bug in the error message when reporting an unsupported
6106- signal argument type.
6107- [7adbf28d075e] <4.10-maint>
6108-
6109-2010-05-07 Phil Thompson <phil@riverbankcomputing.com>
6110-
6111- * sipgen/gencode.c:
6112- Fix a code generation bug where a protected ctor had a protected
6113- enum argument.
6114- [529660fb77a9] <4.10-maint>
6115-
6116-2010-04-23 Phil Thompson <phil@riverbankcomputing.com>
6117-
6118- * sipgen/main.c.in, siplib/qtlib.c:
6119- Invoking a slot is ignored if the underlying C++ object no longer
6120- exists.
6121- [7387fa17a780] <4.10-maint>
6122-
6123-2010-04-16 Phil Thompson <phil@riverbankcomputing.com>
6124-
6125- * .hgtags:
6126- Added tag 4.10.2 for changeset 44ac47d02467
6127- [2a980c3f0e3a] <4.10-maint>
6128-
6129- * NEWS:
6130- Released as v4.10.2.
6131- [44ac47d02467] [4.10.2] <4.10-maint>
6132-
6133-2010-04-06 Phil Thompson <phil@riverbankcomputing.com>
6134-
6135- * sphinx/using.rst:
6136- Updated the PyQt example for PyQt4.
6137- [275fa5a54910] <4.10-maint>
6138-
6139-2010-04-01 Phil Thompson <phil@riverbankcomputing.com>
6140-
6141- * siplib/siplib.c:
6142- Fixed a regression in the new-style error handling of C++ ctors that
6143- raise exceptions.
6144- [ea295d6e9e9c] <4.10-maint>
6145-
6146-2010-03-26 Phil Thompson <phil@riverbankcomputing.com>
6147-
6148- * siputils.py:
6149- The X11 libraries will only be linked for modules that depend on the
6150- QtGui module.
6151- [9fe1eb5bf1ac] <4.10-maint>
6152-
6153-2010-03-22 Phil Thompson <phil@riverbankcomputing.com>
6154-
6155- * siplib/siplib.c:
6156- Fixed a bug in the pickle support under Python v3.
6157- [9c51fda2b963] <4.10-maint>
6158-
6159-2010-03-17 Phil Thompson <phil@riverbankcomputing.com>
6160-
6161- * .hgtags:
6162- Added tag 4.10.1 for changeset 812aad0bacea
6163- [6f759792341f] <4.10-maint>
6164-
6165- * NEWS, build.py:
6166- Fixed the generation of the change log after tagging a release.
6167- Updated the NEWS file. Released as v4.10.1.
6168- [812aad0bacea] [4.10.1] <4.10-maint>
6169-
6170- * siplib/siplib.c:
6171- Removed an unused variable left over from the previous commit.
6172- [0068b2608046] <4.10-maint>
6173-
6174- * siplib/siplib.c:
6175- Fixed the implementation of sip.cast().
6176- [93bc3ab3fef5] <4.10-maint>
6177-
6178-2010-03-02 Phil Thompson <phil@riverbankcomputing.com>
6179-
6180- * NEWS:
6181- Updated the NEWS file.
6182- [752ab6580111] <4.10-maint>
6183-
6184-2010-02-26 Phil Thompson <phil@riverbankcomputing.com>
6185-
6186- * sipgen/gencode.c:
6187- Fixed a memory leak with the new error handling and most Python
6188- special methods.
6189- [637497440cb5] <4.10-maint>
6190-
6191- * sipgen/transform.c:
6192- Global operators, when moved to the correct class, are now appended
6193- to the list of any existing overloads to make sure the generated
6194- code is in the same order as the overloads in the .sip file.
6195- [5c0eb00cd19b] <4.10-maint>
6196-
6197-2010-02-25 Phil Thompson <phil@riverbankcomputing.com>
6198-
6199- * sipgen/export.c:
6200- Arguments in docstrings only have names if they are optional.
6201- [0f83f6c82600] <4.10-maint>
6202-
6203-2010-02-20 Phil Thompson <phil@riverbankcomputing.com>
6204-
6205- * sipgen/gencode.c, siplib/sip.h.in, siplib/siplib.c,
6206- sphinx/c_api.rst, sphinx/incompatibilities.rst:
6207- Fixed a bug in the handling of /Out/ arguments of virtuals where the
6208- type was a reference to a class by adding the 'H' format character
6209- to sipParseResult() (and deprecating the 'D' format character).
6210- [c723c4de2e22] <4.10-maint>
6211-
6212-2010-02-18 Phil Thompson <phil@riverbankcomputing.com>
6213-
6214- * sphinx/annotations.rst:
6215- Fixed a bug in the documentation of the NoCopy annotation.
6216- [cb2c1ea78ed5] <4.10-maint>
6217-
6218-2010-02-07 Phil Thompson <phil@riverbankcomputing.com>
6219-
6220- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
6221- sphinx/annotations.rst:
6222- Python reimplementations of C++ virtuals will now be given a copy of
6223- any const references to classes so that they can keep a reference
6224- without needing to do their own explicit copy. The previous
6225- behaviour can be obtained using the new NoCopy annotation. The
6226- NoCopy annotation can also be applied to functions and methods to
6227- prevent the automatic copying of const references to classes that
6228- are returned.
6229- [724e4236428b] <4.10-maint>
6230-
6231-2010-02-02 Phil Thompson <phil@riverbankcomputing.com>
6232-
6233- * sipgen/export.c:
6234- Fixed the XML exporting of mapped type arguments.
6235- [b514b2f196b8] <4.10-maint>
6236-
6237- * siplib/sipint.h, siplib/siplib.c, siplib/siplib.sbf,
6238- siplib/voidptr.c:
6239- Moved the voidptr code to a separate file. Eliminated a few
6240- compilation warnings that have crept into the sip module. Refactored
6241- the sip module to eliminate the (wrong) forward declaration of the
6242- static type structures.
6243- [f07ec31fbdf9] <4.10-maint>
6244-
6245- * build.py:
6246- Fixed a bug in the release action of build.py.
6247- [bcdd91cbf139] <4.10-maint>
6248-
6249-2010-01-31 Phil Thompson <phil@riverbankcomputing.com>
6250-
6251- * sipgen/main.c.in:
6252- Added the -b command line argument to the sip usage text.
6253- [7ae3aa20dfc0] <4.10-maint>
6254-
6255-2010-01-29 Phil Thompson <phil@riverbankcomputing.com>
6256-
6257- * build.py:
6258- Refactored build.py so that it can be easily used as an imported
6259- module.
6260- [9170df0b1ea3] <4.10-maint>
6261-
6262-2010-01-28 Phil Thompson <phil@riverbankcomputing.com>
6263-
6264- * build.py:
6265- Fixed a regression in the release action of build.py.
6266- [e3611c1babe7] <4.10-maint>
6267-
6268- * build.py:
6269- Changed the format of the changelog to be closer to the Mercurial
6270- default.
6271- [f1d6ba993e7f] <4.10-maint>
6272-
6273- * build.py:
6274- Added the changelog action to build.py.
6275- [8189b0595d44] <4.10-maint>
6276-
6277- * build.py:
6278- build.py now generates a version number corresponding to the next
6279- release (as the old build system did).
6280- [d09c61626663] <4.10-maint>
6281-
6282- * build.py:
6283- build.py now doesn't care about the current working directory. Fixed
6284- the handling of branch names.
6285- [3402912a0176] <4.10-maint>
6286-
6287-2010-01-27 Phil Thompson <phil@riverbankcomputing.com>
6288-
6289- * README:
6290- Updated the README to document the need for flex, bison and Sphinx.
6291- [d785bd5471f8] <4.10-maint>
6292-
6293- * sphinx/introduction.rst.in:
6294- Updated the documentation to include the URL of the Mercurial
6295- repository.
6296- [0a7fc3830b27] <4.10-maint>
6297-
6298- * LICENSE, LICENSE-GPL2, LICENSE-GPL3, README, build.py,
6299- configure.py.in, lib/LICENSE, lib/LICENSE-GPL2.txt, lib/LICENSE-
6300- GPL3.txt, lib/LICENSE.short, lib/README, lib/configure.py,
6301- lib/sipdistutils.py, lib/siputils.py, sipdistutils.py,
6302- sipgen/export.c, sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l,
6303- sipgen/main.c, sipgen/main.c.in, sipgen/parser.y, sipgen/sip.h,
6304- sipgen/sipgen.sbf, sipgen/transform.c, siplib/apiversions.c,
6305- siplib/bool.cpp, siplib/descriptors.c, siplib/objmap.c,
6306- siplib/qtlib.c, siplib/sip.h, siplib/sip.h.in, siplib/sipint.h,
6307- siplib/siplib.c, siplib/siplib.sbf, siplib/threads.c, siputils.py,
6308- sphinx/Makefile, sphinx/conf.py, sphinx/conf.py.in,
6309- sphinx/introduction.rst, sphinx/introduction.rst.in:
6310- Refactored the build.py script so that it is a documented utility
6311- for allowing SIP to be built from a Mercurial repository or archive.
6312- Updated the directory structure accordingly.
6313- [3edc3f9c777f] <4.10-maint>
6314-
6315-2010-01-27 phil <phil>
6316-
6317- * .hgtags:
6318- Import from SVN.
6319- [d6529eb1c096]
6320-
6321-2010-01-14 phil <phil>
6322-
6323- * NEWS, lib/LICENSE.short:
6324- Released as v4.10.
6325- [d7aa01036415] [4.10]
6326-
6327-2010-01-08 phil <phil>
6328-
6329- * lib/siputils.py, sipgen/gencode.c, sipgen/transform.c,
6330- siplib/siplib.c:
6331- Taught the build system about QtMultimedia. Removed some potential
6332- warning messages in virtual catchers with handwritten code. Fixed
6333- docstrings that might contain C++ rather than Python scoping.
6334- [d1214a2c892d]
6335-
6336-2010-01-02 phil <phil>
6337-
6338- * siplib/siplib.c:
6339- Fixed a crash in the error handling when trying to call sip.wrapper
6340- or sip.wrappertype explicitly.
6341- [4f7c7b09a3e4]
6342-
6343-2009-12-29 phil <phil>
6344-
6345- * siplib/apiversions.c:
6346- Fixed a memory corruption bug in the implementation of sip.setapi().
6347- [11cc05a59770]
6348-
6349-2009-12-28 phil <phil>
6350-
6351- * siplib/siplib.c:
6352- A fix for building against Stackless.
6353- [a3ce099e5002]
6354-
6355-2009-12-27 phil <phil>
6356-
6357- * siplib/siplib.c:
6358- Fixed a regression in the parsing of constrained enums.
6359- [eacac49b64df]
6360-
6361- * siplib/siplib.c:
6362- Fixed a bug in the lookup of virtual reimplementations that may only
6363- be apparent when looking up Python special methods.
6364- [97c538d2e634]
6365-
6366-2009-12-26 phil <phil>
6367-
6368- * siplib/siplib.c:
6369- Backed out the check for sub-classing from more than one wrapped
6370- type as it isn't sophisticated enough to handle mixins that share a
6371- meta-class.
6372- [34cf41855599]
6373-
6374-2009-12-23 phil <phil>
6375-
6376- * siplib/siplib.c:
6377- Added a hack for va_copy() being missing in MSVC.
6378- [e3bd9f6c1a3a]
6379-
6380-2009-12-22 phil <phil>
6381-
6382- * lib/siputils.py:
6383- Another attempt to fix creating script wrappers on MacOS to
6384- invokethe right version of Python.
6385- [39d66e33acfd]
6386-
6387- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
6388- Fixed a docstring bug handling default values that are literal
6389- strings.
6390- [a1fea3306f54]
6391-
6392-2009-12-21 phil <phil>
6393-
6394- * siplib/siplib.c:
6395- Fixed a fundamental problem with the parsing of signatures that
6396- allow keyword arguments where the current position in the format
6397- string and the var_args was being lost.
6398- [afa78322cb2d]
6399-
6400-2009-12-19 phil <phil>
6401-
6402- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
6403- Changed the signature of sipAddException(). Fixed a reference count
6404- bug in the handling of chained parse errors.
6405- [1e48cd06b448]
6406-
6407-2009-12-17 phil <phil>
6408-
6409- * NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
6410- sphinx/c_api.rst:
6411- Added sipBadCallableArg() to the C API.
6412- [4046e5d6ca66]
6413-
6414-2009-12-15 phil <phil>
6415-
6416- * sipgen/parser.y:
6417- Fixed a NULL dereference when instantiating an unscoped class
6418- template.
6419- [908f41773044]
6420-
6421-2009-12-14 phil <phil>
6422-
6423- * NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
6424- sphinx/directives.rst:
6425- Added support for sipError to %MethodCode to allow code to
6426- distinguish between user errors and system errors.
6427- [8cb9ae04484a]
6428-
6429-2009-12-12 phil <phil>
6430-
6431- * siplib/siplib.c:
6432- Raise an exception if the automatically generated cast function
6433- fails (though this, theoretcally, shouldn't happed). Explicitly test
6434- for attempting to inherit from more than one wrapped type.
6435- [ae6cee8faa67]
6436-
6437-2009-12-11 phil <phil>
6438-
6439- * sipgen/gencode.c:
6440- Fixed the generation of a bad call to sipMalloc() when generating
6441- for a C library.
6442- [a174c9456eab]
6443-
6444-2009-12-04 phil <phil>
6445-
6446- * sipgen/parser.y:
6447- Finally fixed %DefaultEncoding when set in an imported module.
6448- [d1eec2d99a95]
6449-
6450-2009-12-03 phil <phil>
6451-
6452- * siplib/siplib.c:
6453- Fixed a problem where Python wasn't creating descriptors for any
6454- enum slots which meant that explicitly calling special methods
6455- failed to invoke those slots.
6456- [ca934a1f4132]
6457-
6458-2009-12-02 phil <phil>
6459-
6460- * NEWS, sipgen/gencode.c, siplib/siplib.c, sphinx/python_api.rst:
6461- Use capsules for Python v3.1 and later. Added the
6462- sip.voidptr.ascapsule() method.
6463- [154f2c63c18d]
6464-
6465-2009-11-23 phil <phil>
6466-
6467- * NEWS, sipgen/transform.c:
6468- Fixed a bug where assignment helpers may not be generated for
6469- classes that have an alternate mapped type implementation.
6470- [6734e82522ee]
6471-
6472-2009-11-17 phil <phil>
6473-
6474- * siplib/siplib.c:
6475- Fixed a problem that meant that circular references in slots
6476- connected to objects owned by C++ weren't being detected.
6477- [b38add3f63d9]
6478-
6479-2009-11-15 phil <phil>
6480-
6481- * sipgen/parser.y:
6482- Fixed a bug where %DefaultEncoding could be ignored if %Imports were
6483- being done in an inconvenient order.
6484- [ae075b6d08ea]
6485-
6486- * sphinx/command_line.rst, sphinx/distutils.rst:
6487- Added the documentation for the updated sipdistutils.py.
6488- [c5547730f27b]
6489-
6490- * lib/sipdistutils.py:
6491- An updated sipdistutils.py from Giovanni Bajo.
6492- [62a698e9f9bd]
6493-
6494-2009-11-14 phil <phil>
6495-
6496- * sipgen/export.c, sipgen/gencode.c, sipgen/sip.h:
6497- Signal docstrings no longer include default values as they are
6498- implemented as separate overloads.
6499- [339a2114ec6d]
6500-
6501- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/sip.h, siplib/sip.h:
6502- Docstrings are now generated for use by PyQt4 signals.
6503- [18bb2e74f269]
6504-
6505-2009-11-11 phil <phil>
6506-
6507- * sipgen/gencode.c:
6508- The docstrings are now wrapped with PyDoc_STRVAR().
6509- [ef3374625928]
6510-
6511- * sipgen/transform.c:
6512- The /DocType/ annotation is now properly supported for typedefs.
6513- [b3bbd7202a88]
6514-
6515- * sipgen/gencode.c:
6516- No docstrings are generated for any part of a class that isn't the
6517- default implementation.
6518- [9db19f2694a2]
6519-
6520- * sipgen/heap.c, sipgen/parser.y, sipgen/transform.c:
6521- Added support for /DocType/ to mapped type templates.
6522- [74a135153c66]
6523-
6524-2009-11-10 phil <phil>
6525-
6526- * NEWS, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
6527- sipgen/sip.h, siplib/siplib.c, sphinx/directives.rst,
6528- sphinx/introduction.rst, sphinx/specification_files.rst:
6529- Added the %Docstring directive to specify explicit docstrings.
6530- [61b4453a9ff4]
6531-
6532- * sipgen/export.c, sipgen/gencode.c, sipgen/transform.c,
6533- siplib/siplib.c:
6534- More docstring fixes. Docstrings are not now generated for non-
6535- default implementations.
6536- [64779347846b]
6537-
6538-2009-11-09 phil <phil>
6539-
6540- * NEWS, sipgen/gencode.c:
6541- A fix for the formatting of function calls in default values for XML
6542- and docstrings.
6543- [cfd41d5169d1]
6544-
6545- * sipgen/export.c, sipgen/parser.y, sipgen/sip.h,
6546- sphinx/annotations.rst:
6547- Added the /DocValue/ argument annotation.
6548- [63dbaa87cf17]
6549-
6550- * NEWS, sipgen/parser.y:
6551- String annotations can now have feature selectors embedded in them.
6552- [d8fccc02cc21]
6553-
6554-2009-11-08 phil <phil>
6555-
6556- * NEWS, sipgen/export.c, sipgen/gencode.c, sipgen/parser.y:
6557- More docstring fixes.
6558- [98dc281a1a11]
6559-
6560- * sphinx/annotations.rst:
6561- Updated the docs as /DocType/ is also a function and variable
6562- annotation.
6563- [cad85d54df79]
6564-
6565- * sipgen/export.c:
6566- Docstrings now consider all C++ integer types to be "int".
6567- Docstrings now consider all C++ character types to be "str".
6568- [72ae0dd8d9dc]
6569-
6570-2009-11-07 phil <phil>
6571-
6572- * sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
6573- sipgen/sip.h, siplib/sip.h, sphinx/annotations.rst:
6574- Added the /DocType/ argument and mapped type annotation. More fixes
6575- for the docstring support.
6576- [99ebe42a8e10]
6577-
6578- * sipgen/export.c, sipgen/parser.y, sipgen/transform.c:
6579- Fixed a bug where a default copy ctor might be added when there
6580- aleady was one when the class had a alternative mapped type
6581- implementation.
6582- [0db8f014b7e7]
6583-
6584-2009-11-06 phil <phil>
6585-
6586- * sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
6587- sipgen/transform.c:
6588- Completed the basic support for automated docstrings (some tweaking
6589- still needed).
6590- [3d914379ef28]
6591-
6592- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
6593- Added stub docstring support for methods and classes.
6594- [b52d1ef306ae]
6595-
6596-2009-11-05 phil <phil>
6597-
6598- * sipgen/gencode.c, sipgen/main.c, sipgen/sip.h, siplib/apiversions.c,
6599- siplib/sip.h, siplib/siplib.c, sphinx/command_line.rst,
6600- sphinx/introduction.rst:
6601- Added stubbed support for function docstrings.
6602- [91a545605044]
6603-
6604-2009-11-04 phil <phil>
6605-
6606- * siplib/siplib.c:
6607- Fixed building on Python v2.
6608- [af23791238c1]
6609-
6610- * sipgen/gencode.c:
6611- Fixed a memory leak of class instances annotated with /Out/ when
6612- catching C++ exceptions.
6613- [7fe47a8dd71d]
6614-
6615- * siplib/siplib.c:
6616- Completed the basic extended (ie. without docstrings) error messages
6617- on overload parse failures.
6618- [fe018c83a8df]
6619-
6620- * siplib/siplib.c:
6621- More support for the extended errors when parsing signatures.
6622- [e837961dad1d]
6623-
6624- * sipgen/gencode.c, sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
6625- Fixed a problem where an overload that didn't take keyword arguments
6626- wasn't raising an error if one was supplied and there where other
6627- overloads that did.
6628- [f405b7102d19]
6629-
6630-2009-11-03 phil <phil>
6631-
6632- * siplib/siplib.c:
6633- Added the error detail for unbound methods. Ctor errors now don't
6634- include the module name (to match other errors).
6635- [b176dda5f1e9]
6636-
6637- * siplib/sip.h, siplib/siplib.c:
6638- Refactored the new error reporting so that it is much more
6639- lightweight in the common case of failure to parse an overload.
6640- [e801eb8ce7e6]
6641-
6642- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
6643- The SIP API major version number has changed. Implemented the basics
6644- of the revised error messages (still missing the message detail
6645- though).
6646- [aa4e0e8fd705]
6647-
6648-2009-11-02 phil <phil>
6649-
6650- * sphinx/directives.rst:
6651- Fixed a broken Sphinx directive.
6652- [fc0975814576]
6653-
6654-2009-10-30 phil <phil>
6655-
6656- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
6657- sphinx/annotations.rst, sphinx/directives.rst:
6658- Added the /Default/ exception annotation to specify an exception
6659- that will be caught if there is no throw clause. A 'catch (...)'
6660- block will now always be generated.
6661- [d65ec4986067]
6662-
6663- * siplib/siplib.c:
6664- Fixed a regression in the monkey patching of instances.
6665- [94348861afba]
6666-
6667- * sphinx/directives.rst:
6668- ...and another.
6669- [f90c80feb177]
6670-
6671- * sphinx/directives.rst:
6672- ...and another documentation typo.
6673- [c3a7ea01b1e5]
6674-
6675- * sphinx/directives.rst:
6676- Fixed a documentation typo.
6677- [80259f3cc2f5]
6678-
6679- * sipgen/gencode.c:
6680- Fixed a double delete bug with mapped types passed as references
6681- annotated with /Out/.
6682- [a788f308bbee]
6683-
6684-2009-10-28 phil <phil>
6685-
6686- * NEWS, lib/configure.py, lib/siputils.py, sphinx/build_system.rst:
6687- Adde support for out-of-tree building.
6688- [837ce5451585]
6689-
6690- * lib/siputils.py, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
6691- sipgen/sip.h, sphinx/build_system.rst, sphinx/c_api.rst,
6692- sphinx/command_line.rst, sphinx/directives.rst:
6693- Added support for building with "protected" redefined as "public" to
6694- reduce the size of generated modules.
6695- [6601a9a55993]
6696-
6697-2009-10-26 phil <phil>
6698-
6699- * siplib/siplib.c:
6700- sipFindType() now handles references as well as pointers.
6701- [2228a1ad7d3f]
6702-
6703- * specs/linux-arm-g++, specs/linux-arm-thumb-g++, specs/linux-
6704- armv6-g++:
6705- Added the Linux ARM spec files from David Boddie's PyQt embedded
6706- patch set.
6707- [9285dfaea8a2]
6708-
6709- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
6710- More keyword argument bug fixing. (PyQt now seems to work with it
6711- enabled.)
6712- [d2f15ccd7460]
6713-
6714- * sipgen/gencode.c:
6715- More keyword argument bug fixing. (PyQt now builds again.)
6716- [709ea5c81d46]
6717-
6718-2009-10-25 phil <phil>
6719-
6720- * siplib/siplib.c:
6721- Bug fixing the keyword argument support.
6722- [9f8d9cc3f521]
6723-
6724- * sipgen/gencode.c, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
6725- siplib/sip.h, siplib/siplib.c, sphinx/annotations.rst,
6726- sphinx/command_line.rst, sphinx/introduction.rst:
6727- Added support for (optional) keyword arguments - untested.
6728- [04504a7b338b]
6729-
6730-2009-10-24 phil <phil>
6731-
6732- * NEWS, sipgen/gencode.c, siplib/siplib.c:
6733- Merged v4.9.1 back into the trunk.
6734- [8e50e7601287]
6735-
6736-2009-09-26 phil <phil>
6737-
6738- * NEWS:
6739- Released as v4.9.
6740- [4d26f5a2ec9c] [4.9]
6741-
6742-2009-09-19 phil <phil>
6743-
6744- * lib/siputils.py:
6745- Fixed the dependency order of Qt libraries on Windows (which weems
6746- to only affect MinGW).
6747- [b3b353012242]
6748-
6749-2009-09-16 phil <phil>
6750-
6751- * lib/configure.py:
6752- Fixed a configure.py command line parsing problem on OS/X.
6753- [26287bd85bfd]
6754-
6755- * lib/siputils.py, sphinx/build_system.rst:
6756- The default build system values of universal and arch are now taken
6757- from the configuration.
6758- [33fab9918a24]
6759-
6760- * NEWS, siplib/siplib.c, sphinx/python_api.rst:
6761- Added sip.ispyowned().
6762- [ad556c1da3a4]
6763-
6764-2009-09-15 phil <phil>
6765-
6766- * lib/siputils.py:
6767- A fix for the last fix.
6768- [de0e5576ac75]
6769-
6770- * lib/siputils.py:
6771- More fixes for Snow Leopard.
6772- [64601a49b403]
6773-
6774-2009-09-14 phil <phil>
6775-
6776- * NEWS, sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c,
6777- sphinx/annotations.rst:
6778- Allowed the /NoArgParser/ annotation to be used for class methods.
6779- [e5ec799a3f70]
6780-
6781-2009-09-12 phil <phil>
6782-
6783- * sipgen/gencode.c:
6784- Fixed a problem when a function returns a class instance that SIP
6785- doesn't think can be copied.
6786- [bf71880486d0]
6787-
6788- * lib/configure.py, lib/siputils.py, sphinx/build_system.rst,
6789- sphinx/installation.rst:
6790- The --arch option now only implies a universal binary if it is
6791- specified more than once.
6792- [8c16580e8c21]
6793-
6794- * lib/configure.py, lib/siputils.py, sphinx/build_system.rst:
6795- Added support for specifying a MacOS architecture when creating a
6796- wrapper script.
6797- [8eeb8a1947b7]
6798-
6799-2009-09-11 phil <phil>
6800-
6801- * lib/configure.py:
6802- The MacOS specific configure.py options are no longer enabled on
6803- other platforms.
6804- [2dd928167cd9]
6805-
6806- * lib/configure.py, sphinx/installation.rst:
6807- Removed the -a short form of --arch so that it will be the same as
6808- PyQt.
6809- [239f8861bc8e]
6810-
6811- * NEWS, lib/configure.py, lib/siputils.py, sphinx/build_system.rst,
6812- sphinx/installation.rst:
6813- Added the --arch flag to configure.py to allow the architectures to
6814- be included in a MacOS/X universal binary to be specified.
6815- [b74bcfcb34b0]
6816-
6817- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
6818- Fixed a problem with the name of an API version in modules that sub-
6819- class from classes with versioned methods in a different module.
6820- [5b327c45a283]
6821-
6822-2009-09-06 phil <phil>
6823-
6824- * siplib/siplib.c:
6825- Added the support for handling keyword arguments to QObject ctors.
6826- [562b8ecd5e55]
6827-
6828-2009-09-04 phil <phil>
6829-
6830- * NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
6831- sphinx/annotations.rst, sphinx/c_api.rst:
6832- Completed the support for /Array/ applied to classes and mapped
6833- types.
6834- [f32ceb5cb246]
6835-
6836- * sipgen/gencode.c, sipgen/sip.h, siplib/siplib.c:
6837- Added support for /Array/ for classes and mapped types for non-
6838- virtual functions.
6839- [24bcbdbd0393]
6840-
6841-2009-09-03 phil <phil>
6842-
6843- * sipgen/gencode.c, sipgen/transform.c, siplib/sip.h:
6844- Added the extended assignment helper and the array allocation helper
6845- for the future support of /Array/ for classes and mapped types.
6846- [61cf6b3635ab]
6847-
6848-2009-09-01 phil <phil>
6849-
6850- * NEWS, build.py, lib/LICENSE-GPL2.txt, lib/LICENSE-GPL3.txt,
6851- lib/LICENSE.short, sphinx/introduction.rst:
6852- Added the GPL as a licensing option.
6853- [1d372e99f512]
6854-
6855- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
6856- siplib/siplib.c, sphinx/specification_files.rst:
6857- Added support for __iter__ and __next__.
6858- [d6cd069a434f]
6859-
6860-2009-08-21 phil <phil>
6861-
6862- * sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
6863- Added a check for recursive class hierarchies. Fixed the error
6864- message about type2string() by making sure it handles structs.
6865- [7af2d9cb07f8]
6866-
6867-2009-08-11 phil <phil>
6868-
6869- * siplib/siplib.c:
6870- Fixed sipIsPyMethod() to not use PyObject_GetAttr() so that
6871- reimplementations defined in mixins will be found. This was a
6872- regression introduced when attribute lookup was made less lazy when
6873- getting super() to work properly.
6874- [710a488b84b4]
6875-
6876- * siplib/siplib.c:
6877- Fixed the conversion of strings to wchar_t arrays as it was using
6878- calls that appeared in Python v2.6.
6879- [47cc56c95614]
6880-
6881-2009-08-08 phil <phil>
6882-
6883- * siplib/siplib.c:
6884- sipFindType() will now find types given as a pointer.
6885- [b693f15869c8]
6886-
6887-2009-08-06 phil <phil>
6888-
6889- * lib/sipdistutils.py:
6890- Fixed sipdistutils.py for Python v3.
6891- [4574e78f607f]
6892-
6893-2009-08-05 phil <phil>
6894-
6895- * siplib/apiversions.c, siplib/sip.h, siplib/siplib.c:
6896- Fixes for looking up types when some times have no implementation
6897- for all API versions.
6898- [e77c51f40fe0]
6899-
6900-2009-08-04 phil <phil>
6901-
6902- * sipgen/transform.c:
6903- No longer complain about methods having the same Python signature if
6904- they all are versioned.
6905- [076cbeaeb3ad]
6906-
6907- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
6908- Init extenders now respect API version numbers.
6909- [4efa4f7f246b]
6910-
6911-2009-08-03 phil <phil>
6912-
6913- * sipgen/gencode.c, sipgen/transform.c:
6914- Virtual methods now support API versions.
6915- [8ec049505369]
6916-
6917- * sipgen/gencode.c, sipgen/parser.y, sphinx/annotations.rst:
6918- Added support for the /API/ annotation to all overloaded methods.
6919- [fae5b6dd29d0]
6920-
6921- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
6922- sphinx/annotations.rst:
6923- The /API/ annotation is now supported for ctors.
6924- [a24c25aede8d]
6925-
6926-2009-08-02 phil <phil>
6927-
6928- * sipgen/gencode.c, sipgen/parser.y, siplib/siplib.c:
6929- Instantiated class templates now take their API from the scoping
6930- class.
6931- [39bf3e3fc6de]
6932-
6933-2009-08-01 phil <phil>
6934-
6935- * sipgen/gencode.c, sipgen/transform.c:
6936- Operator casts and global slots now handle classes with alternate
6937- mapped type implementations. (In a limited way, but good enough for
6938- PyQt.)
6939- [c2ed8e5bbf11]
6940-
6941-2009-07-29 phil <phil>
6942-
6943- * siplib/siplib.c:
6944- Fixed a crash with sipFindType() when the search happens to land on
6945- an unresolved external type.
6946- [ec4838cbf038]
6947-
6948- * siplib/siplib.c:
6949- Fixed the Python v3 buffer interface for sip.voidptr.
6950- [4f800839bd44]
6951-
6952-2009-07-25 phil <phil>
6953-
6954- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c,
6955- sphinx/annotations.rst, sphinx/command_line.rst,
6956- sphinx/specification_files.rst:
6957- Fixed the '/' operator for Python v3 and future import for Python
6958- v2.
6959- [fe62bcd81fa3]
6960-
6961-2009-07-18 phil <phil>
6962-
6963- * sipgen/transform.c, sphinx/python_api.rst:
6964- Fixed a typo in a couple of error messages.
6965- [c7eb3170f527]
6966-
6967-2009-07-09 phil <phil>
6968-
6969- * siplib/siplib.c:
6970- Fixed the nb_index initialiser for sip.voidptr for Python v2.4 and
6971- earler.
6972- [672b898935b5]
6973-
6974- * siplib/siplib.c:
6975- Allow the meta-type to be used with with ordinary Python classes,
6976- not just SIP generated classes.
6977- [6f724709902c]
6978-
6979-2009-07-08 phil <phil>
6980-
6981- * sipgen/gencode.c:
6982- Complete the support for mapped type static methods.
6983- [f1cf7ebed748]
6984-
6985-2009-07-07 phil <phil>
6986-
6987- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
6988- Safety commit of (mostly complete) support for static functions in
6989- mapped types.
6990- [58aa805c1867]
6991-
6992- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
6993- sphinx/annotations.rst:
6994- Extended the use of /AllowNone/ to classes with %ConvertToType code.
6995- [102fc846396e]
6996-
6997-2009-07-06 phil <phil>
6998-
6999- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
7000- siplib/siplib.c, sphinx/annotations.rst:
7001- Added the /AllowNone/ mapped type annotation for mapped types that
7002- want to place a special interpretation on None.
7003- [d449e525c5e8]
7004-
7005- * sipgen/gencode.c:
7006- The generated virtual handler code is now the same for classes and
7007- for mapped types that might have an alternate class implementation.
7008- [60ce12a7d248]
7009-
7010- * sipgen/gencode.c, siplib/siplib.c:
7011- Make sure mapped types honour the /Constrained/ annotation.
7012- [0a8916fbe3b2]
7013-
7014-2009-07-05 phil <phil>
7015-
7016- * siplib/apiversions.c, siplib/siplib.c:
7017- Debugged mapped types with namespaces.
7018- [1f55210a89de]
7019-
7020- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
7021- siplib/descriptors.c, siplib/sip.h, siplib/sipint.h,
7022- siplib/siplib.c:
7023- Safety checkin on the run-time support for mapped types with
7024- namespaces.
7025- [ec7ba808f36c]
7026-
7027-2009-06-29 phil <phil>
7028-
7029- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7030- Finished the code generation support for enums in mapped types.
7031- (Runtime support still to do.)
7032- [552a2d4950a1]
7033-
7034-2009-06-28 phil <phil>
7035-
7036- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7037- Safety commit of the support for mapped types containing enums.
7038- [d94e09ea5add]
7039-
7040- * sipgen/gencode.c, sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
7041- Implemented the sipContainerDef in anticipation of mapped types
7042- supporting enums (for the moment, static methods and variables at a
7043- later date). Fixed a problem where API version ranges wheren't being
7044- reused.
7045- [28f8f2aa4bcf]
7046-
7047- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
7048- siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
7049- siplib/siplib.c:
7050- Fixed a problem with enums in a type with alternate APIs.
7051- [e320f9cb7d19]
7052-
7053-2009-06-27 phil <phil>
7054-
7055- * lib/siputils.py:
7056- Added a workaround to the build system when using virtualenv on
7057- MacOS.
7058- [ff5b09d449d5]
7059-
7060-2009-06-25 phil <phil>
7061-
7062- * sipgen/gencode.c, siplib/siplib.c, sphinx/c_api.rst:
7063- A Python string object can now be provided when a wide character
7064- (wchar_t) is expected.
7065- [5a629389629b]
7066-
7067-2009-06-23 phil <phil>
7068-
7069- * sipgen/gencode.c, siplib/siplib.c:
7070- Some fixes for generated code for mapped types and classes not being
7071- as completely interchangeable as needed. (Still more to do.)
7072- [438a66e8e0a4]
7073-
7074-2009-06-22 phil <phil>
7075-
7076- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7077- Bug fixes to the multi-API type support - PyQt4 now builds again.
7078- [795308460def]
7079-
7080- * siplib/apiversions.c, sphinx/annotations.rst:
7081- Completed the run-time support for multi-API types.
7082- [8888d5cd3feb]
7083-
7084-2009-06-21 phil <phil>
7085-
7086- * sipgen/gencode.c:
7087- Completed the code generation changes for multi-API types.
7088- [439a95ba643e]
7089-
7090- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7091- More refactoring in preparation for multi-API support for types.
7092- [a9c3de1478d8]
7093-
7094- * sipgen/gencode.c:
7095- More changes to the multi-API support for types.
7096- [329493ac7802]
7097-
7098-2009-06-20 phil <phil>
7099-
7100- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7101- Safety commit of latest changes for support of type API selection.
7102- [9443ed19b08b]
7103-
7104-2009-06-19 phil <phil>
7105-
7106- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7107- Safety commit of parser changes to get at the API version of a class
7108- before it is defined.
7109- [c209ce56ea4d]
7110-
7111-2009-06-18 phil <phil>
7112-
7113- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
7114- siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
7115- siplib/siplib.c, sphinx/annotations.rst:
7116- Implemented API selection for global functions.
7117- [db777d90f374]
7118-
7119-2009-06-17 phil <phil>
7120-
7121- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
7122- siplib/apiversions.c, siplib/sip.h, sphinx/annotations.rst,
7123- sphinx/c_api.rst, sphinx/directives.rst, sphinx/using.rst:
7124- Completed the documentation for the API support. The %API directive
7125- can now be used any number of times in a module. Added the parser
7126- support for the API annotation.
7127- [9e63d5da36bd]
7128-
7129- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
7130- siplib/apiversions.c, siplib/sip.h, siplib/sipint.h,
7131- siplib/siplib.c, sphinx/directives.rst,
7132- sphinx/specification_files.rst:
7133- Added support for the %API directive.
7134- [076c846bb8ca]
7135-
7136-2009-06-16 phil <phil>
7137-
7138- * siplib/apiversions.c, siplib/sipint.h, siplib/siplib.c,
7139- sphinx/c_api.rst:
7140- Implemented sipIsAPIEnabled().
7141- [ade852c2131a]
7142-
7143- * siplib/apiversions.c:
7144- ...and made sure it compiles.
7145- [3e8030fe1b76]
7146-
7147- * siplib/apiversions.c, siplib/sipint.h, siplib/siplib.c,
7148- siplib/siplib.sbf, sphinx/python_api.rst, sphinx/using.rst:
7149- Fixed the reference count of the sip module in the error path if its
7150- initialisation fails. Added the sip.getapi() and sip.setapi()
7151- functions.
7152- [43c34f1c289a]
7153-
7154- * NEWS, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
7155- sipgen/transform.c, siplib/sip.h, siplib/siplib.c,
7156- sphinx/specification_files.rst:
7157- Merged v4.8.1 into the trunk.
7158- [d1bd8aecab5a]
7159-
7160-2009-06-05 phil <phil>
7161-
7162- * NEWS:
7163- Released as v4.8.
7164- [6e9fb584da32] [4.8]
7165-
7166-2009-06-03 phil <phil>
7167-
7168- * build.py:
7169- More internal build system fixes.
7170- [4f34294143b0]
7171-
7172- * NEWS, build.py, siplib/descriptors.c, sphinx/Makefile:
7173- Fixed a Python v3 portability bug. Fixed the internal build system
7174- for Python v2.5.
7175- [144adbee9ea0]
7176-
7177-2009-06-02 phil <phil>
7178-
7179- * build.py, doc/sipref.txt, sphinx/conf.py,
7180- sphinx/extensions/siproles.py:
7181- Switched to the Sphinx documentation.
7182- [16b6a4f285a6]
7183-
7184- * sphinx/build_system.rst, sphinx/builtin.rst, sphinx/distutils.rst,
7185- sphinx/python_api.rst, sphinx/using.rst:
7186- Completed the initial Sphinx docs.
7187- [d9202085c430]
7188-
7189- * sphinx/c_api.rst, sphinx/embedding.rst, sphinx/python_api.rst,
7190- sphinx/using.rst:
7191- More Sphinx docs.
7192- [f3c5b7d3dcd4]
7193-
7194-2009-06-01 phil <phil>
7195-
7196- * sphinx/annotations.rst, sphinx/c_api.rst, sphinx/command_line.rst,
7197- sphinx/directives.rst, sphinx/extensions/siproles.py,
7198- sphinx/specification_files.rst, sphinx/using.rst:
7199- More Sphinx docs.
7200- [831112f389a5]
7201-
7202- * sipgen/transform.c:
7203- Fixed a bug where nested templates where having their types resolved
7204- (when they should have been left as templates) which then meant that
7205- they were being found and were being instantiated again (possibly in
7206- a different module).
7207- [79d8261912c8]
7208-
7209- * build.py:
7210- Fixed the build system after removing the TODO file.
7211- [93ea3b759b5f]
7212-
7213-2009-05-31 phil <phil>
7214-
7215- * sphinx/annotations.rst, sphinx/builtin.rst, sphinx/c_api.rst,
7216- sphinx/conf.py, sphinx/directives.rst,
7217- sphinx/extensions/annotations.py, sphinx/extensions/siproles.py,
7218- sphinx/incompatibilities.rst, sphinx/installation.rst:
7219- More Sphinx docs.
7220- [d28f3153b2f8]
7221-
7222- * doc/sipref.txt, sphinx/annotations.rst, sphinx/c_api.rst,
7223- sphinx/conf.py, sphinx/extensions/annotations.py,
7224- sphinx/incompatibilities.rst, sphinx/using.rst:
7225- More Sphinx docs.
7226- [e4dcbba1bd9d]
7227-
7228-2009-05-30 phil <phil>
7229-
7230- * sphinx/build_system.rst, sphinx/conf.py, sphinx/distutils.rst,
7231- sphinx/introduction.rst, sphinx/python_api.rst, sphinx/using.rst:
7232- Sphinx documentation changes.
7233- [62644d47ee77]
7234-
7235- * TODO, doc/sipref.txt, siplib/siplib.c, sphinx/Makefile,
7236- sphinx/annotations.rst, sphinx/build_system.rst, sphinx/builtin.rst,
7237- sphinx/c_api.rst, sphinx/command_line.rst, sphinx/conf.py,
7238- sphinx/directives.rst, sphinx/distutils.rst, sphinx/embedding.rst,
7239- sphinx/incompatibilities.rst, sphinx/index.rst,
7240- sphinx/installation.rst, sphinx/introduction.rst,
7241- sphinx/python_api.rst, sphinx/specification_files.rst,
7242- sphinx/using.rst:
7243- Initial commit of the Sphinx documentation.
7244- [432d95fdad2f]
7245-
7246- * sipgen/parser.y, sipgen/transform.c:
7247- Reverted the previous fix and fixed the real bug which was that
7248- %DefaultEncoding wasn't being inherited properly by modules.
7249- [9abeaff1148a]
7250-
7251-2009-05-29 phil <phil>
7252-
7253- * sipgen/transform.c:
7254- Fixed a bug in comparing virtual handlers that had a char* result or
7255- argument and a default encoding was specified (ie. with Python v3).
7256- [3c92e9237373]
7257-
7258- * sipgen/gencode.c, sipgen/parser.y, siplib/descriptors.c,
7259- siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
7260- Eliminated more warning messages.
7261- [a61fb0a096f2]
7262-
7263- * sipgen/gencode.c, siplib/sip.h:
7264- Eliminated some compiler warning messages - particularly for Python
7265- v2.4.
7266- [374f079e7228]
7267-
7268-2009-05-28 phil <phil>
7269-
7270- * sipgen/gencode.c:
7271- Removed a compiler warning for the generated calls to
7272- PyInit_Module() for Python v2.5 and v2.6.
7273- [dc93a8fa4a5b]
7274-
7275-2009-05-27 phil <phil>
7276-
7277- * sipgen/gencode.c:
7278- The implicit copying of const& results is disabled for abstract
7279- classes.
7280- [705fc12e2144]
7281-
7282-2009-05-26 phil <phil>
7283-
7284- * sipgen/gencode.c:
7285- Fixed the generated code for abstract operators.
7286- [c56cc92b0917]
7287-
7288- * siplib/siplib.c:
7289- Added the missing initialisation of the sipVariableDescr_Type type.
7290- [2c0779527ed3]
7291-
7292-2009-05-25 phil <phil>
7293-
7294- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
7295- sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
7296- __bool__ is now synonymous with __nonzero__. __truediv__ and
7297- __itruediv__ are now explicit. __div__ and __idiv__ are now Python
7298- v2 only. Added support for __floordiv__, __ifloordiv__ and
7299- __index__.
7300- [537579d9318e]
7301-
7302- * sipgen/parser.y:
7303- Hopefully fixed the regression with specific mapped types not
7304- properly superceding template mapped types that was affecting PyKDE3
7305- and PyKDE4.
7306- [25a665370099]
7307-
7308-2009-05-24 phil <phil>
7309-
7310- * siplib/descriptors.c, siplib/sipint.h:
7311- Added a repr() method to sip.methoddescriptor.
7312- [149f6c3f12a5]
7313-
7314- * sipgen/transform.c:
7315- Fixed a bug where the name of an automatically generated
7316- complementary slot wasn't being generated.
7317- [0f304e850331]
7318-
7319- * sipgen/export.c:
7320- Added support for images in the generated Scintilla API files from a
7321- patch from Detlev Offenbach.
7322- [83966cc9950a]
7323-
7324-2009-04-30 phil <phil>
7325-
7326- * doc/sipref.txt, sipgen/transform.c, siplib/qtlib.c:
7327- %DefaultSupertype now only changes the default for the current
7328- module. (%DefaultMetatype still affects importing modules.) This
7329- should mean that modules that extend PyQt4 will continue to work
7330- without having to make super-type or meta-type changes.
7331- [5fc24c675796]
7332-
7333-2009-04-24 phil <phil>
7334-
7335- * siplib/siplib.c:
7336- Fixed the lookup of generated slot functions in sub-types. Moved
7337- some assertions to more appropriate places when a generated slot
7338- function isn't found.
7339- [5b59bd703dff]
7340-
7341-2009-04-20 phil <phil>
7342-
7343- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
7344- Disabled the new implicit copying of const reference results where
7345- the class doesn't have a public copy ctor.
7346- [70cd90b1d5b9]
7347-
7348-2009-04-18 phil <phil>
7349-
7350- * siplib/siplib.c:
7351- Fixed a problem handling __setitem__ when being used to support
7352- multi-dimensional mappings.
7353- [705be62a3cd0]
7354-
7355-2009-04-09 phil <phil>
7356-
7357- * siplib/siplib.c:
7358- Print any exception raised by __dtor__.
7359- [0d56ac42feac]
7360-
7361-2009-04-01 phil <phil>
7362-
7363- * sipgen/gencode.c, sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
7364- Added support for PyQt4's support for signals that have overloaded
7365- methods.
7366- [c0ad968503e4]
7367-
7368-2009-03-30 phil <phil>
7369-
7370- * sipgen/gencode.c:
7371- Fixed a compiler warning message if sipCpp isn't used by
7372- %BIGetBufferCode.
7373- [26269a7e86f4]
7374-
7375- * sipgen/gencode.c, siplib/siplib.c:
7376- Fixed the declaration of the module initialisation function when
7377- building static modules for Python v3.
7378- [6f48c809c90b]
7379-
7380-2009-03-27 phil <phil>
7381-
7382- * siplib/siplib.c:
7383- Fixed a couple of missing calls to clear the error flag while
7384- parsing strings.
7385- [2275585e4c08]
7386-
7387-2009-03-26 phil <phil>
7388-
7389- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
7390- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
7391- siplib/siplib.c:
7392- Replaced the new /Byte/ annotation with the even newer /Encoding/
7393- annotation and %DefaultEncoding directive.
7394- [7c648d9cdd13]
7395-
7396-2009-03-24 phil <phil>
7397-
7398- * sipgen/gencode.c:
7399- Changed the order in which PyQt4 signals are generated so that those
7400- with optional arguments appear with the most arguments first and
7401- least last.
7402- [4d0b9c852cf8]
7403-
7404-2009-03-23 phil <phil>
7405-
7406- * doc/sipref.txt, sipgen/gencode.c:
7407- Backed out the removal of sipSelfWasArg and supporting code as it
7408- really is needed. However, changed how it was set so that super()
7409- should still work.
7410- [29d1813e4566]
7411-
7412-2009-03-21 phil <phil>
7413-
7414- * sipgen/gencode.c:
7415- Fixed a bug in the code generated for protected methods with
7416- multiple Python names.
7417- [7aa8d62ddf7c]
7418-
7419-2009-03-20 phil <phil>
7420-
7421- * siplib/siplib.c:
7422- Bytes and the buffer protocol are now also supported for non-byte
7423- char and char * (howver the buffer protocol support seems to be
7424- broken).
7425- [1c5b994cd2d6]
7426-
7427- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
7428- sipgen/sip.h, sipgen/transform.c, siplib/descriptors.c,
7429- siplib/sip.h, siplib/siplib.c:
7430- Many changes to the wrapping of strings for Python v3 so that char
7431- and char * (unless the /Byte/ annotation is specified) are handled
7432- as Unicode rather than bytes. Such strings must be able to be
7433- encoded as Latin-1. Related to the above, the generated code is much
7434- more careful than it used to be about keeping Python string objects
7435- alive while their data is being used.
7436- [49cf3c9e7b69]
7437-
7438-2009-03-18 phil <phil>
7439-
7440- * sipgen/gencode.c:
7441- Fixed a long-standing bug in the handling of the /NoArgParser/
7442- annotation that only came to light with Python v3.
7443- [2c44dd616d6d]
7444-
7445- * sipgen/gencode.c, sipgen/parser.y, sipgen/transform.c:
7446- More fixes for consolidated modules. Python v2 and v3 should now be
7447- working.
7448- [b966b1df2bb1]
7449-
7450-2009-03-17 phil <phil>
7451-
7452- * sipgen/gencode.c, sipgen/transform.c:
7453- Some fixes for consolidated module support for both Python v2 and
7454- v3.
7455- [b17d4cdf4709]
7456-
7457- * lib/siputils.py:
7458- Tweaked the build system to make it easier for Makefile sub-classes
7459- to add commands to targets.
7460- [abe3ecd83256]
7461-
7462-2009-03-16 phil <phil>
7463-
7464- * doc/sipref.txt, sipgen/gencode.c:
7465- Fixed a bug in generating Python v3 consolidated modules.
7466- [8fc22b7be6fd]
7467-
7468- * siplib/siplib.c:
7469- Fixed a typo that broke the build of the sip module for Python v2.
7470- [348b333af022]
7471-
7472-2009-03-15 phil <phil>
7473-
7474- * siplib/sip.h:
7475- Tweaks to the Python portability macros.
7476- [c1f795ce8a5a]
7477-
7478- * siplib/sip.h:
7479- More Python portability macros.
7480- [b3d39099f350]
7481-
7482-2009-03-14 phil <phil>
7483-
7484- * lib/configure.py:
7485- Fixed a Mac build regression handling the location of the SDK.
7486- [2c8cf43905e1]
7487-
7488- * siplib/sip.h:
7489- Added some more Python porting macros.
7490- [c046cc5bb268]
7491-
7492- * lib/siputils.py:
7493- Removed a remaining Python v2 specific call from the build system.
7494- [c1527c576e1d]
7495-
7496- * NEWS, sipgen/gencode.c, siplib/sip.h:
7497- The generated code now supports Python v3.
7498- [c60f38353478]
7499-
7500- * siplib/siplib.c:
7501- The sip module can now be imported by Python v3.
7502- [a8bd1e5a5a4b]
7503-
7504-2009-03-13 phil <phil>
7505-
7506- * doc/sipref.txt, siplib/siplib.c:
7507- Ported the PyString_ calls in the sip module to Python v3.
7508- [337e7e627054]
7509-
7510- * sipgen/gencode.c:
7511- Updated the generated module initialisation code for Python v3 - but
7512- not for consolidated modules yet.
7513- [985c336dd059]
7514-
7515- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7516- Moved to PyLong_* for Python v3.
7517- [a1d1a376920b]
7518-
7519-2009-03-12 phil <phil>
7520-
7521- * lib/siputils.py, sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c,
7522- siplib/sip.h, siplib/siplib.c:
7523- More porting of the sip module. It now compiles but still calls
7524- Python v2 functions.
7525- [9f4570a090e1]
7526-
7527- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
7528- sipgen/parser.y, sipgen/sip.h, siplib/descriptors.c, siplib/sip.h,
7529- siplib/siplib.c:
7530- Partially ported the sip module to Python v3. Added the
7531- %BIGetBufferCode and %BIReleaseBufferCode directives to support the
7532- buffer interface of Python v3.
7533- [0631013fd5ae]
7534-
7535-2009-03-11 phil <phil>
7536-
7537- * doc/sipref.txt, lib/configure.py, lib/siputils.py:
7538- configure.py now uses optparse. configure.py and the build system
7539- will now run under Python3.
7540- [89bbb0b49865]
7541-
7542- * siplib/siplib.c:
7543- Implemented __dict__ for sipsimplewrapper.
7544- [cf1c9edeb56a]
7545-
7546- * sipgen/gencode.c, siplib/sip.h:
7547- Added the SIP_PYMETHODDEF_CAST compatibility macro for Python v2.4
7548- and earlier.
7549- [43e5b0afa42d]
7550-
7551-2009-03-10 phil <phil>
7552-
7553- * sipgen/gencode.c:
7554- Changed the code generated for variable getters so that a copy is
7555- only returned if the variable is const.
7556- [22c2ae7bdc37]
7557-
7558-2009-03-09 phil <phil>
7559-
7560- * sipgen/gencode.c:
7561- Changed the generation of the string pool to get around MSVC's
7562- limitation on the size of a string.
7563- [e15683c4034a]
7564-
7565- * NEWS:
7566- Updated the NEWS file.
7567- [262f29053a78]
7568-
7569- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7570- Made sure all generated code doesn't break strict aliasing.
7571- [ae62345de148]
7572-
7573- * sipgen/gencode.c:
7574- SIP now automatically copies objects when they are returned as a
7575- const reference.
7576- [3d0c7011cb93]
7577-
7578- * doc/sipref.txt, sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
7579- A further fix to the order in which modules have their types
7580- resolved.
7581- [d7ebeff5a7ce]
7582-
7583-2009-03-06 phil <phil>
7584-
7585- * lib/siputils.py:
7586- Taught the build system about the QtScriptTools module.
7587- [6c0d66e4ef0b]
7588-
7589- * sipgen/transform.c:
7590- Fixed a bug where types were being resolved in outer modules before
7591- inner modules. This meant that template-based types created on the
7592- fly might be created in the wrong module.
7593- [cd2a99e505be]
7594-
7595-2009-03-05 phil <phil>
7596-
7597- * lib/siputils.py:
7598- Taught the build system about the new dependency of QtXmlPatterns on
7599- QtNetwork.
7600- [50a9e41802c2]
7601-
7602-2009-03-04 phil <phil>
7603-
7604- * siplib/siplib.c:
7605- Fixes for the updated method cache.
7606- [d82c3be07e1b]
7607-
7608- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
7609- Greatly simplified the virtual reimplementation method cache now
7610- that attribute lookup has been cleaned up.
7611- [0cc40f47e6d5]
7612-
7613-2009-03-03 phil <phil>
7614-
7615- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
7616- sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
7617- Implemented the /KeepReference/ argument annotation.
7618- [c8e2e1961f50]
7619-
7620-2009-02-27 phil <phil>
7621-
7622- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7623- Added sipCanConvertToEnum() to the public API.
7624- [2748f0bbb0ab]
7625-
7626-2009-02-26 phil <phil>
7627-
7628- * siplib/sipint.h, siplib/siplib.c:
7629- Removed the __dict__ getter as it is no longer needed. Changed the
7630- declaration of the descriptors as they don't need to be exported.
7631- [ddd2710b42fd]
7632-
7633-2009-02-25 phil <phil>
7634-
7635- * NEWS, doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
7636- Reverted to using type's and object's attribute getters and setters
7637- now that we populate the type dictionary of a generated type with
7638- all its lazy attributes in one go. Changed how an external
7639- attributer getter works now that it only needs to populate the type
7640- dictionary.
7641- [8a22253728be]
7642-
7643- * sipgen/gencode.c, siplib/siplib.c:
7644- Safety checking of the working (but still to be changed) attribute
7645- lookup code.
7646- [d7244d817b9f]
7647-
7648- * sipgen/gencode.c, siplib/descriptors.c, siplib/sip.h,
7649- siplib/siplib.c:
7650- Refactored the support for setting instance variables.
7651- [cc8a22386009]
7652-
7653- * sipgen/gencode.c, sipgen/parser.y, siplib/descriptors.c,
7654- siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
7655- The refactored support for getting variables now works.
7656- [c3e7dc58b020]
7657-
7658-2009-02-24 phil <phil>
7659-
7660- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7661- Safety commit of refactored wrapping of class variables.
7662- [fa8ba6ef243b]
7663-
7664-2009-02-23 phil <phil>
7665-
7666- * siplib/siplib.c:
7667- Fixed the problem with looking up external lazy attributes - wrapped
7668- variables are the only thing not working.
7669- [ab3e207d555b]
7670-
7671- * siplib/descriptors.c, siplib/sip.h, siplib/sipint.h,
7672- siplib/siplib.c, siplib/siplib.sbf:
7673- Safety commit of new attribute lookup code. Don't use this - it's
7674- broken.
7675- [2673bc2add5c]
7676-
7677- * siplib/siplib.c:
7678- Fixed a reference count leak when an external lazy attribute was a
7679- descriptor.
7680- [1047169d1ba8]
7681-
7682- * siplib/siplib.c:
7683- Fixed a crash when accessing a wrapped instance variable as a class
7684- variable.
7685- [e922b386c5aa]
7686-
7687-2009-02-22 phil <phil>
7688-
7689- * siplib/siplib.c:
7690- Fixed a bug in the refactored attribute lookup.
7691- [ddad97af22ec]
7692-
7693- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7694- Completed the support for the lazy attribute lookup hook.
7695- [1f7bc8f488a8]
7696-
7697-2009-02-21 phil <phil>
7698-
7699- * sipgen/gencode.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
7700- Added initial support for registering lazy attribute getters.
7701- [9aae0eb78368]
7702-
7703- * sipgen/export.c, sipgen/gencode.c:
7704- The PyQt4 signal table is now generated. The XML export now marks
7705- the default signal.
7706- [dbf0c7f47b6b]
7707-
7708-2009-02-20 phil <phil>
7709-
7710- * lib/LICENSE, sipgen/gencode.c, siplib/sip.h:
7711- Added the stub of signal table for PyQt4.
7712- [f53134503038]
7713-
7714-2009-02-16 phil <phil>
7715-
7716- * siplib/sip.h, siplib/siplib.c:
7717- Removed some compiler warnings.
7718- [a3c24034045a]
7719-
7720-2009-02-14 phil <phil>
7721-
7722- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7723- More signal/slot refactoring fixes.
7724- [e1c0b895f0d1]
7725-
7726- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
7727- Debugged the signal/slot refactoring.
7728- [a4a47ea6fd1e]
7729-
7730- * doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
7731- siplib/sipint.h, siplib/siplib.c:
7732- Safety commit of latest signal/slot refactoring.
7733- [751cebc544cc]
7734-
7735-2009-02-13 phil <phil>
7736-
7737- * siplib/qtlib.c, siplib/siplib.c:
7738- Fixed a build problem with Python 2.4.x and earlier.
7739- [df846f30a329]
7740-
7741- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
7742- sipgen/transform.c, siplib/siplib.c:
7743- PyQt3 signal support is now enabled with the %Plugin directive
7744- instead of %SIPOptions. Removed %SIPOptions.
7745- [d511ad00cc71]
7746-
7747- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
7748- siplib/sip.h, siplib/siplib.c:
7749- The generated typedefs table is now sorted.
7750- [abd1a7d60330]
7751-
7752-2009-02-12 phil <phil>
7753-
7754- * siplib/siplib.c:
7755- An unconstrained enum can now be a sub-class of int.
7756- [60366594aa80]
7757-
7758-2009-02-11 phil <phil>
7759-
7760- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h:
7761- Renamed TypeFlags to PyQt4Flags. Renamed NoQMetaObject to
7762- PyQt4NoQMetaObject. Moved the type flags into the PyQt4-specific
7763- type structure.
7764- [259fceeadbbe]
7765-
7766- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
7767- Removed the registration of wrapped types with the Qt meta-type
7768- system as it is no longer needed by PyQt4.
7769- [71f80e789732]
7770-
7771-2009-02-07 phil <phil>
7772-
7773- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
7774- siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
7775- Removed sipAssignType() and moved the helpers to the PyQt4 plugin.
7776- [305f07cd3ce2]
7777-
7778-2009-02-02 phil <phil>
7779-
7780- * sipgen/gencode.c, siplib/qtlib.c:
7781- The QObject.sender() support is now PyQt3 only again.
7782- [e732e65c15b5]
7783-
7784-2009-02-01 phil <phil>
7785-
7786- * sipgen/gencode.c, siplib/siplib.c:
7787- Fixed a bug in the generation of the sipParseArgs() sub-format
7788- character for types.
7789- [fadc9f7074f1]
7790-
7791- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
7792- Changed the QObject::sender() support for PyQt4.
7793- [9d6d9918bb1f]
7794-
7795- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
7796- Debugged the merged types table.
7797- [cf4e643c28b5]
7798-
7799-2009-01-31 phil <phil>
7800-
7801- * sipgen/gencode.c, sipgen/heap.c, sipgen/sip.h, sipgen/transform.c,
7802- siplib/sip.h, siplib/siplib.c:
7803- Safety commit of the merge of the class, mapped types and enum
7804- tables.
7805- [33a1dbf992df]
7806-
7807-2009-01-30 phil <phil>
7808-
7809- * siplib/sip.h, siplib/siplib.c:
7810- Wrapped classes are now created as they are needed and not in the
7811- order they appear in the generated class table. Therefore the class,
7812- mapped type and enum tables can now be merged and ordered by the
7813- type name (and searched using a binary search).
7814- [4a72c9cee88f]
7815-
7816-2009-01-29 phil <phil>
7817-
7818- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7819- Moved the last of the type parsing to PyQt3.
7820- [b7d7695e3d8e]
7821-
7822- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
7823- Moved the registering of int types to PyQt4.
7824- [e63f85d857bd]
7825-
7826-2009-01-28 phil <phil>
7827-
7828- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7829- Refactored the support for looking up typedefs.
7830- [42851fe9a2cb]
7831-
7832- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
7833- siplib/siplib.c:
7834- Moved the type parsing support to PyQt3.
7835- [531e8244cfd3]
7836-
7837-2009-01-27 phil <phil>
7838-
7839- * sipgen/gencode.c:
7840- Removed a remaining call to sipReleaseMappedType().
7841- [2a9cbf86c86a]
7842-
7843-2009-01-25 phil <phil>
7844-
7845- * sipgen/gencode.c:
7846- Fixed a too-few-arguments-to-a-print bug in the code generator.
7847- [1260503c2021]
7848-
7849- * siplib/siplib.c:
7850- Fixed compilation issues.
7851- [635ffd53597b]
7852-
7853-2009-01-18 phil <phil>
7854-
7855- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h:
7856- Replaced sipFindConnection() with sipFindSlot().
7857- [30f0174c05f4]
7858-
7859-2009-01-13 phil <phil>
7860-
7861- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
7862- siplib/siplib.c:
7863- Replaced sipFreeSignature() with sipFreeSipslot().
7864- [e5275f031458]
7865-
7866-2009-01-12 phil <phil>
7867-
7868- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
7869- siplib/siplib.c:
7870- Pushed the parsing of signatures into PyQt.
7871- [b2e616d5c92f]
7872-
7873-2009-01-11 phil <phil>
7874-
7875- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
7876- siplib/siplib.c:
7877- Replaced sipConvertRx() with sipConvertRxEx().
7878- [cc0e4fe70f50]
7879-
7880-2009-01-10 phil <phil>
7881-
7882- * sipgen/gencode.c:
7883- Removed the generation of an old Qt API entry.
7884- [30f044ed1723]
7885-
7886-2009-01-09 phil <phil>
7887-
7888- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
7889- Safety commit of partial refactoring of the Qt signal support.
7890- [429673b02dcd]
7891-
7892-2009-01-04 phil <phil>
7893-
7894- * lib/LICENSE, lib/LICENSE.short, sipgen/gencode.c:
7895- Don't import the qt_register_type symbol if it isn't needed. Updated
7896- copyright notices.
7897- [f2dbc98f7144]
7898-
7899-2008-12-30 phil <phil>
7900-
7901- * doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
7902- sipTypeFromPyTypeObject() now takes a PyTypeObject* rather than a
7903- PyObject*.
7904- [077c2ad4451f]
7905-
7906- * doc/sipref.txt, sipgen/gencode.c, siplib/objmap.c, siplib/sip.h,
7907- siplib/sipint.h, siplib/siplib.c, siplib/threads.c:
7908- Added sipTypeName() and sipTypeScope() to the public SIP API.
7909- [701c6915d3e3]
7910-
7911-2008-12-29 phil <phil>
7912-
7913- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, siplib/sip.h,
7914- siplib/sipint.h, siplib/siplib.c:
7915- Migrated sipEnum_* to sipType_*.
7916- [e0417099f5a9]
7917-
7918-2008-12-27 phil <phil>
7919-
7920- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7921- sipType_* are now generated for enums. These are used internally but
7922- the SIP API has not yet been changed.
7923- [ca45e1d31af2]
7924-
7925- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
7926- Broke out the generated type structures for mapped and class types
7927- to different structures with a common header.
7928- [ff4bec0abd37]
7929-
7930-2008-12-26 phil <phil>
7931-
7932- * siplib/siplib.c:
7933- Wrapped enums now have their own meta-type. This is the hook that
7934- will allow the C++ name of an enum to be derived from the enum's
7935- Python type object.
7936- [ea550b12904c]
7937-
7938-2008-12-24 phil <phil>
7939-
7940- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
7941- siplib/siplib.c:
7942- Added sip_api_init_module() to make sure dependent modules can be
7943- fully initialised before they are needed.
7944- [fed394659169]
7945-
7946- * sipgen/gencode.c, siplib/sip.h:
7947- Removed the Qt meta-type id from the pyqt4TypeDef structure as we
7948- want to use it for mapped types as well but we would never know when
7949- it was safe to cast from a sipTypeDef pointer.
7950- [92c012de8c02]
7951-
7952-2008-12-21 phil <phil>
7953-
7954- * sipgen/gencode.c:
7955- The PyQt4-specific extension to the generated type structure is now
7956- used for mapped types as well.
7957- [f49b6d447292]
7958-
7959-2008-12-20 phil <phil>
7960-
7961- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
7962- siplib/sip.h, siplib/siplib.c:
7963- Changed the PyQt4-specifc handling of Qt meta-type registration.
7964- [d112840accfd]
7965-
7966- * sipgen/gencode.c, siplib/siplib.c:
7967- A generated type structure now has its Python type object set
7968- earlier so that sub-meta-types can use sipIsExactWrappedType().
7969- Calls to QObject::metaObject() are no longer need to trigger the
7970- creation of the meta-object.
7971- [8d816e1f3008]
7972-
7973- * doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
7974- sipgen/sip.h, siplib/sip.h:
7975- Added %Plugin and use it to support pyqt4TypeDef.
7976- [0f236470d582]
7977-
7978-2008-12-19 phil <phil>
7979-
7980- * siplib/sip.h:
7981- Moved the qt_qobject member out of sipWrapperType and into PyQt
7982- where it belongs.
7983- [babe6a91d801]
7984-
7985- * sipgen/gencode.c, siplib/siplib.c:
7986- Completed the migration of sipClass_* to sipType_*.
7987- [e7c00163d819]
7988-
7989- * doc/sipref.txt:
7990- Documentation updates. All uses of sipClass_* are only by deprecated
7991- parts of the API.
7992- [cfa2b5ca880e]
7993-
7994- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
7995- Deprecated the 'B' and 'C' format characters to sipBuildResult() and
7996- sipCallMethod(). Added the new 'N' format character to
7997- sipBuildResult() and sipCallMethod().
7998- [d685f1b18287]
7999-
8000-2008-12-17 phil <phil>
8001-
8002- * doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
8003- Deprecated the 'C' format character of sipParseResult() in favor of
8004- the existing 'D' character.
8005- [be1f044d9828]
8006-
8007- * doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
8008- siplib/siplib.c:
8009- Migrated the sub-class convertor code to using sipType rather than
8010- sipClass.
8011- [a4424a9ac5a5]
8012-
8013-2008-12-16 phil <phil>
8014-
8015- * sipgen/transform.c:
8016- Fixed a bug where names of mapped type templates where being
8017- generated for modules that didn't need them.
8018- [176171583343]
8019-
8020-2008-12-14 phil <phil>
8021-
8022- * doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h,
8023- siplib/sipint.h, siplib/siplib.c:
8024- Replaced the deprecated sipConvertFromInstance() and
8025- sipConvertFromNewInstance() with sipConvertFromType() and
8026- sipConvertFromNewType().
8027- [6f6e06ceaace]
8028-
8029- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8030- Replaced the deprecated sipForceConvertToInstance() and
8031- sipForceConvertToMappedType() with sipForceConvertToType().
8032- [fc54ee3b5308]
8033-
8034- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8035- Replaced the deprecated sipConvertToInstance() and
8036- sipConvertToMappedType() with sipConvertToType().
8037- [8e66284398dd]
8038-
8039- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8040- Replaced the deprecated sipCanConvertToInstance() and
8041- sipCanConvertToMappedType() by sipCanConvertToType().
8042- [c1f1b170b263]
8043-
8044-2008-12-13 phil <phil>
8045-
8046- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8047- Replaced the deprecated sipReleaseInstance() and
8048- sipReleaseMappedType() with sipReleaseType().
8049- [7ce45ed9ae89]
8050-
8051- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8052- Replaced the deprecated sipGetWrapper() with sipGetPyObject().
8053- [8cb295b72e62]
8054-
8055- * doc/sipref.txt, sipgen/gencode.c, siplib/objmap.c, siplib/qtlib.c,
8056- siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8057- More moves from sipClass_* to sipType_*.
8058- [4e7936a90f99]
8059-
8060- * sipgen/gencode.c, siplib/objmap.c, siplib/sip.h, siplib/sipint.h,
8061- siplib/siplib.c:
8062- More conversions from sipClass_* to sipType_*.
8063- [75eed80555d4]
8064-
8065-2008-12-12 phil <phil>
8066-
8067- * sipgen/gencode.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c,
8068- siplib/threads.c:
8069- Merged the adding of type instances.
8070- [d2db3775a993]
8071-
8072-2008-12-08 phil <phil>
8073-
8074- * lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8075- Started the port from sipClass_* to sipType_*. Added support for
8076- assert() to the build system.
8077- [231826fe6d04]
8078-
8079- * sipgen/gencode.c:
8080- Renamed sipMappedType_* to sipType_*.
8081- [8df5a86247e8]
8082-
8083-2008-12-07 phil <phil>
8084-
8085- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8086- Added sipType_* for wrapped types. sipClass_* is now defined in
8087- terms of sipType_*.
8088- [bb37272a3113]
8089-
8090- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8091- Deprecated sipClassName().
8092- [de0402f5112c]
8093-
8094- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
8095- siplib/sip.h, siplib/siplib.c:
8096- Mapped types are now described by the same sipTypeDef structure that
8097- describes wrapped types.
8098- [77ce210b751e]
8099-
8100-2008-12-06 phil <phil>
8101-
8102- * doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
8103- Moved the 'user' field from sip.wrapper to sip.simplewrapper because
8104- PyQt uses it for some non-QObject types.
8105- [0bb916ce4818]
8106-
8107- * doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
8108- sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
8109- Restored %DefaultMetatype and the /Metatype/ class annotation. This
8110- support is now complete. Documented the meta-type and super-type
8111- support.
8112- [15f1b60f808f]
8113-
8114-2008-12-03 phil <phil>
8115-
8116- * doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h,
8117- siplib/siplib.c:
8118- Code generator changes to support sipSimpleWrapper.
8119- [ebd5b0b103ae]
8120-
8121- * siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8122- The sip module now compiles again without any unexpected warnings.
8123- [6fb536d5333e]
8124-
8125-2008-12-02 phil <phil>
8126-
8127- * siplib/objmap.c, siplib/qtlib.c, siplib/sip.h, siplib/sipint.h,
8128- siplib/siplib.c:
8129- Various compilation fixes.
8130- [ace8e0f95607]
8131-
8132-2008-12-01 phil <phil>
8133-
8134- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8135- Safety checkin of the support for the new sip.simplewrapper type.
8136- [3d87512e3a5c]
8137-
8138- * NEWS, doc/sipref.txt, siplib/siplib.c:
8139- Added support for %InitialisationCode. (Actually in the previous
8140- commit but I forgotto mention it.) The text of an attribute
8141- exception now mimics that produced by the Python interpreter.
8142- [70d0f5dc259b]
8143-
8144-2008-11-30 phil <phil>
8145-
8146- * doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
8147- sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
8148- Refactored the super-type and meta-type support. Meta-types are now
8149- handled implicitly.
8150- [2676976c88bf]
8151-
8152-2008-11-29 phil <phil>
8153-
8154- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
8155- siplib/siplib.c:
8156- Debugged the metatype support.
8157- [e7e9b5d303c3]
8158-
8159-2008-11-27 phil <phil>
8160-
8161- * sipgen/gencode.c, siplib/siplib.c:
8162- The metatypes are now registered and readied.
8163- [5c4757c83b70]
8164-
8165- * sipgen/export.c, sipgen/gencode.c, sipgen/parser.y,
8166- sipgen/transform.c, siplib/siplib.c:
8167- Fixes for various regressions.
8168- [eea6dc713727]
8169-
8170-2008-11-26 phil <phil>
8171-
8172- * sipgen/gencode.c:
8173- Use the string pool for calls to qRegisterMetaType().
8174- [954bd63eb830]
8175-
8176- * sipgen/gencode.c, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
8177- Completed the code generator support for user defined metatypes.
8178- [6c09f41b9eec]
8179-
8180-2008-11-24 phil <phil>
8181-
8182- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h,
8183- sipgen/transform.c, siplib/sip.h:
8184- Added the parser support for %Metatype and %DefaultMetatype.
8185- [6af8f6a12eb5]
8186-
8187-2008-11-23 phil <phil>
8188-
8189- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8190- The string pool now overlaps strings where possible.
8191- [4873718f6e82]
8192-
8193- * sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
8194- siplib/sip.h, siplib/siplib.c:
8195- Enum names now use the string pool.
8196- [b6414c99a03a]
8197-
8198- * sipgen/parser.y, siplib/sip.h, siplib/siplib.c:
8199- Fixed a regression in the handling of nested namespaces.
8200- [a49433be0291]
8201-
8202- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
8203- siplib/sip.h, siplib/siplib.c:
8204- Python and C++ type names now use the string pool. The string pool
8205- is currently broken for namespace extenders.
8206- [b08a2ca9d7fd]
8207-
8208-2008-11-22 phil <phil>
8209-
8210- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
8211- sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
8212- The generated name cache is now a single (const) string.
8213- [0296eda5e61a]
8214-
8215- * doc/sipref.txt, lib/configure.py, lib/siputils.py, sipgen/gencode.c,
8216- siplib/sip.h, siplib/siplib.c:
8217- Removed all deprecated parts of the API and generated code.
8218- [0a00c20f5c5b]
8219-
8220-2008-11-21 phil <phil>
8221-
8222- * lib/siputils.py:
8223- Use "-undefined dynamic_lookup" rather than linking against the
8224- Python framework on MacOS.
8225- [773c8920c04f]
8226-
8227-2008-11-18 phil <phil>
8228-
8229- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8230- Added sipWrapperType_Check() to the public API.
8231- [42d9ec7403f4]
8232-
8233-2008-11-17 phil <phil>
8234-
8235- * NEWS, sipgen/gencode.c:
8236- Merged v4.7.9 into the trunk.
8237- [63aff4a6e0f0]
8238-
8239-2008-11-08 phil <phil>
8240-
8241- * NEWS, TODO, build.py, doc/default.css, doc/sipref.txt, lib/LICENSE,
8242- lib/LICENSE.short, lib/README.HP-UX, lib/THANKS, lib/configure.py,
8243- lib/siputils.py, sipgen/export.c, sipgen/gencode.c, sipgen/heap.c,
8244- sipgen/lexer.l, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
8245- sipgen/transform.c, siplib/objmap.c, siplib/qtlib.c, siplib/sip.h,
8246- siplib/sipint.h, siplib/siplib.c, specs/linux-icc,
8247- specs/win32-msvc2005, specs/win32-msvc2008:
8248- Merged v4.7.8 into the trunk.
8249- [9cc6147a1067]
8250-
8251-2007-07-30 phil <phil>
8252-
8253- * NEWS:
8254- Released as v4.7.
8255- [a458d43a6fbb] [4.7]
8256-
8257-2007-07-28 phil <phil>
8258-
8259- * sipgen/gencode.c:
8260- Fixed a memory leak with mapped types with the /Out/ annotation.
8261- [5c156cb3b313]
8262-
8263-2007-07-27 phil <phil>
8264-
8265- * siplib/qtlib.c:
8266- Fixed a bug preventing wrapped C++ slots from being disconnected.
8267- [43fc1981c30d]
8268-
8269-2007-07-14 phil <phil>
8270-
8271- * siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8272- Rather than only lambda functions being given an extra reference
8273- when used as a slot, anything other that a method or wrapped C
8274- function is given an extra reference. Specifically this means that
8275- partial functions can now be used as slots.
8276- [2562db168ce9]
8277-
8278-2007-07-04 phil <phil>
8279-
8280- * sipgen/transform.c:
8281- Relaxed the restriction that /Out/ arguments couldn't be const.
8282- [546fba30aac6]
8283-
8284-2007-06-25 phil <phil>
8285-
8286- * sipgen/gencode.c:
8287- Fixed a compiler warning message about an unused argument in
8288- generated code.
8289- [5713835ff863]
8290-
8291- * sipgen/parser.y:
8292- Fixed a bug in the previous fix so that it only applies to mapped
8293- types.
8294- [68a7fd2c1ea4]
8295-
8296- * sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8297- Fixed a bug where template based types where overwriting the header
8298- code of any previously defined type based on the same interface
8299- file.
8300- [f41edc04b3cf]
8301-
8302-2007-06-23 phil <phil>
8303-
8304- * NEWS, sipgen/gencode.c:
8305- Consolidated modules are now generated as either C or C++ (rather
8306- than always C) so that the name cache names are consistently
8307- mangled.
8308- [83c24c956277]
8309-
8310-2007-06-22 phil <phil>
8311-
8312- * lib/siputils.py:
8313- Fixed a build system problem for PyQt on Windows against a static
8314- Qt.
8315- [3ff5f3d1e074]
8316-
8317- * sipgen/gencode.c:
8318- Fixed silly code generation typo.
8319- [3232af13c3f6]
8320-
8321- * lib/siputils.py:
8322- Changed the build system so that missing macros default to being
8323- empty rather than causing an error. (Qt v4.3.0 contains such a
8324- case.)
8325- [213c1dd11448]
8326-
8327-2007-06-20 phil <phil>
8328-
8329- * doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l, sipgen/main.c,
8330- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
8331- siplib/siplib.c:
8332- Split the consolidated module concept into separate consolidated and
8333- composite module types, which significantly simplifies things.
8334- [eb0502b5bb27]
8335-
8336-2007-06-19 phil <phil>
8337-
8338- * lib/siputils.py:
8339- Updated some comments in the build system.
8340- [f38ba63f0f97]
8341-
8342- * siplib/siplib.c:
8343- Fixed a bug in the sip module consolidated module support. Otherwise
8344- everything seems to work.
8345- [a9d7eeffdf81]
8346-
8347- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8348- More consolidated module refactoring.
8349- [9c629ca01a4a]
8350-
8351-2007-06-18 phil <phil>
8352-
8353- * sipgen/export.c, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
8354- sipgen/sip.h, sipgen/transform.c:
8355- More consolidated module refactoring. PyQt4 with only QtCore enabled
8356- now compiles.
8357- [bec649674da2]
8358-
8359-2007-06-16 phil <phil>
8360-
8361- * sipgen/gencode.c, sipgen/parser.y:
8362- More consolidated module support.
8363- [b7455f328486]
8364-
8365-2007-06-12 phil <phil>
8366-
8367- * siplib/siplib.c:
8368- Hopefully fixed a bug in the handling of the 'C' and 'D' format
8369- characters in sipParseResult().
8370- [c28fa1333976]
8371-
8372- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8373- More refactoring for consolidated module support. SIP no longer
8374- generates lots of .h files. Note that SIP is now less tolerant of
8375- missing #includes in %TypeHeaderCode and %ModuleHeaderCode.
8376- [ae2dec8da410]
8377-
8378-2007-06-04 phil <phil>
8379-
8380- * sipgen/gencode.c:
8381- Removed the need to generate the shadow class definition in a header
8382- file and put it in the original class's C++ file instead.
8383- [30cd539612c7]
8384-
8385-2007-06-03 phil <phil>
8386-
8387- * sipgen/export.c, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
8388- sipgen/transform.c:
8389- More consolidated module refactoring.
8390- [9fbe5340767f]
8391-
8392-2007-06-01 phil <phil>
8393-
8394- * sipgen/parser.y:
8395- Fixed a missing return in parser.y.
8396- [3f160ab4ae5b]
8397-
8398-2007-05-28 phil <phil>
8399-
8400- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8401- A bit more consolidated module support.
8402- [f714935139bb]
8403-
8404- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
8405- siplib/siplib.c:
8406- More work on consolidated modules.
8407- [bde47f2343cf]
8408-
8409-2007-05-27 phil <phil>
8410-
8411- * sipgen/gencode.c, sipgen/sip.h, siplib/sip.h, siplib/siplib.c:
8412- The component stub modules (ie. those requested with the -p flag)
8413- are now generated.
8414- [21119384ab4f]
8415-
8416- * doc/sipref.txt, sipgen/gencode.c, sipgen/main.c, sipgen/sip.h:
8417- Added the stubs of the -n and -p command line options for the
8418- remaining consolidated module support. Documented the
8419- %ConsolidatedModule directive.
8420- [744cf0ed0857]
8421-
8422-2007-05-24 phil <phil>
8423-
8424- * sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h:
8425- Completed the implementation of %ConsolidatedModule for the simple
8426- case (where the consolidated module populates itself from the
8427- component modules).
8428- [78406f2fdcb4]
8429-
8430-2007-05-23 phil <phil>
8431-
8432- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
8433- A bit more refactoring for the consolidated module support.
8434- [51a36ed46e45]
8435-
8436- * siplib/objmap.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8437- When deciding if an instance is already wrapped, sip only considers
8438- if the candidate is a sub-class of the expected class. (Before it
8439- used to consider if the candidate was a super-class of the expected
8440- class as well. However this shouldn't be necessary as the candidates
8441- class should be correct if all the sub-class convertor code is
8442- working properly.)
8443- [014d6fb553a9]
8444-
8445- * sipgen/lexer.l, sipgen/parser.y, sipgen/sip.h, siplib/objmap.c:
8446- Added the start of the support for %ConsolidatedModule.
8447- [2cdafc7810be]
8448-
8449-2007-05-20 phil <phil>
8450-
8451- * doc/sipref.txt, siplib/siplib.c:
8452- Added the dump() funtion to the sip module.
8453- [299d67a0fe51]
8454-
8455-2007-05-13 phil <phil>
8456-
8457- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8458- Added sipTransferBreak() for removing hidden references without
8459- changing owndership.
8460- [5d298052a2e5]
8461-
8462- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h:
8463- Added support for /Transfer/ as a function annotation.
8464- [ab6bd827b7a0]
8465-
8466-2007-05-12 phil <phil>
8467-
8468- * lib/siputils.py:
8469- Added the build system hooks for PyQt's QtScript module.
8470- [6fdf6cb0ade1]
8471-
8472- * sipgen/parser.y:
8473- Fixed some parser problems related to versioning.
8474- [a4ffe24c61bd]
8475-
8476-2007-05-11 phil <phil>
8477-
8478- * sipgen/parser.y:
8479- Relaxed the restriction that the arguments to mapped type templates
8480- had to be simple names and not basic types.
8481- [04d512a7ddee]
8482-
8483- * sipgen/gencode.c:
8484- Generated the sipClass_* for namespaces.
8485- [234dfbd619d5]
8486-
8487-2007-05-07 phil <phil>
8488-
8489- * sipgen/gencode.c:
8490- More fixes to mapped type templates - should be Ok now.
8491- [3e7528f5ec18]
8492-
8493-2007-05-04 phil <phil>
8494-
8495- * doc/sipref.txt:
8496- Fixed a couple of documentation bugs regarding exceptions.
8497- [21138bd0e4dd]
8498-
8499-2007-05-03 phil <phil>
8500-
8501- * sipgen/transform.c:
8502- Fixed a bug where generated .h files for template argument types
8503- were being included in the mapped type rather than the mapped type's
8504- own .h file.
8505- [015e7bc362e3]
8506-
8507-2007-04-28 phil <phil>
8508-
8509- * siplib/siplib.c:
8510- Removed the need for the copy_reg module. This marks the completion
8511- if the pickle support.
8512- [855e5b2a3bfc]
8513-
8514- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8515- Pickling nested types now works.
8516- [d10779f3268e]
8517-
8518- * siplib/siplib.c:
8519- Minor refactoring of the pickle code prior to adding support for
8520- nested classes.
8521- [33badbfc5ee1]
8522-
8523-2007-04-27 phil <phil>
8524-
8525- * doc/sipref.txt, siplib/siplib.c:
8526- Named enums that are nested within other types can now be pickled.
8527- (Note that the pickle format for classes will be changed in the next
8528- few days to allow nested classes to be pickled in the same way.)
8529- [ad31cd17972b]
8530-
8531-2007-04-26 phil <phil>
8532-
8533- * siplib/siplib.c:
8534- More improvements to the pick code.
8535- [7387a6436f4f]
8536-
8537- * sipgen/gencode.c:
8538- Slight improvement to the generated pickle code.
8539- [250d4acde794]
8540-
8541-2007-04-22 phil <phil>
8542-
8543- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
8544- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
8545- siplib/siplib.c:
8546- Added %PickleCode to allow wrapped objects to be pickled.
8547- [45059aeff1d0]
8548-
8549- * siplib/siplib.c:
8550- Module level enums can now be pickled. Removed the None
8551- implementations of __reduce__ and __reduce_ex__ and fixed the
8552- segfault that pickling was causing.
8553- [960a54bd61d7]
8554-
8555-2007-04-10 phil <phil>
8556-
8557- * NEWS:
8558- Released as v4.6.
8559- [9d849b09a8d4] [4.6]
8560-
8561-2007-04-07 phil <phil>
8562-
8563- * sipgen/export.c:
8564- Changed the API file generation to generate the __init__ form of a
8565- ctor as well as the callable type form.
8566- [316e430f8a37]
8567-
8568-2007-04-02 phil <phil>
8569-
8570- * NEWS:
8571- Updated the NEWS file.
8572- [5c6477d8ee0d]
8573-
8574- * NEWS, doc/sipref.txt, lib/configure.py, lib/siputils.py:
8575- Added the -n flag to configure.py to build universal binaries on
8576- MacOS/X.
8577- [e892f0a63956]
8578-
8579- * siplib/siplib.c:
8580- Fixed a MinGW warning message.
8581- [79ac369e6efa]
8582-
8583- * siplib/siplib.c:
8584- Backed out the save and restore of the exception state in
8585- sipWrapper_dealloc() as it can get called when there is no current
8586- thread state (which results in a segfault).
8587- [f66e13ead83b]
8588-
8589- * NEWS:
8590- Updated the NEWS file.
8591- [c7488adf6abf]
8592-
8593- * siplib/siplib.c:
8594- Fixed a bug handling sub-class convertor code with multiple
8595- inheritance.
8596- [8ac3a23e1e3c]
8597-
8598- * doc/sipref.txt, sipgen/gencode.c:
8599- Virtuals that return a wchar_t * now keep then free the previous
8600- result to limit the possible memory leaks.
8601- [48b87ba8bc6a]
8602-
8603-2007-04-01 phil <phil>
8604-
8605- * sipgen/gencode.c, sipgen/transform.c:
8606- Fixed a bug in the wchar_t support with const wchar_t * arguments.
8607- Fixed a bug in the wchar_t support with char and wchar_t being
8608- considered equivalent.
8609- [541c7556314d]
8610-
8611-2007-03-26 phil <phil>
8612-
8613- * siplib/siplib.c:
8614- Fixed problem where lambda slots connected to QObject.destroyed()
8615- were cleared before the signal was emitted.
8616- [2ace696800c4]
8617-
8618-2007-03-25 phil <phil>
8619-
8620- * doc/sipref.txt, sipgen/gencode.c:
8621- Completed the wchar_t support.
8622- [14c15deefc3b]
8623-
8624-2007-03-24 phil <phil>
8625-
8626- * sipgen/export.c, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y,
8627- sipgen/sip.h, sipgen/transform.c, siplib/qtlib.c, siplib/sip.h,
8628- siplib/siplib.c:
8629- Added support for wchar_t - undocumented and certainly untested.
8630- [14559b49bd9d]
8631-
8632-2007-03-10 phil <phil>
8633-
8634- * sipgen/gencode.c, siplib/siplib.c:
8635- No longer generate the forward declaration of an opaque class. It
8636- shouldn't be necessary and means that the class could be a C
8637- structure.
8638- [647d2f4b8561]
8639-
8640-2007-03-02 phil <phil>
8641-
8642- * sipgen/lexer.l:
8643- SIP should now handle DOS format files on UNIX systems.
8644- [1935d8be814b]
8645-
8646-2007-02-27 phil <phil>
8647-
8648- * doc/sipref.txt, sipgen/gencode.c, sipgen/main.c, sipgen/parser.y,
8649- sipgen/sip.h:
8650- Undeprecated the -g command line option. Added the /HoldGIL/
8651- annotation.
8652- [fbf1aaec1094]
8653-
8654-2007-02-25 phil <phil>
8655-
8656- * sipgen/transform.c, siplib/siplib.c:
8657- Fixed the previous fix related to signatures for the cases where the
8658- Python and C++ signatures have different numbers of arguments.
8659- [66f4866a1393]
8660-
8661- * doc/sipref.txt, siplib/siplib.c:
8662- Included Matt Newell's fix for making sure that a sub-class
8663- convertor returns the most specific type available.
8664- [7b9b628d5c50]
8665-
8666-2007-02-24 phil <phil>
8667-
8668- * doc/sipref.txt, sipgen/transform.c:
8669- Fixed some documentation references to Py_ssize_t. sip now takes C++
8670- as well as Python signatures into account when deciding what
8671- interface files a class need to include.
8672- [ac3ecfcc08d3]
8673-
8674- * doc/sipref.txt, siplib/qtlib.c:
8675- Leave it to the Qt support code to release the GIL when connecting
8676- signals.
8677- [8c907b07ad8f]
8678-
8679-2007-02-20 phil <phil>
8680-
8681- * siplib/qtlib.c, siplib/sipint.h, siplib/siplib.c:
8682- An instance dictionary is not longer created automatically. Python
8683- will create it if and when it is needed. lambda slots are now
8684- cleaned up in the clear function rather than being left to the slot
8685- proxy dtor.
8686- [61eac95ed77e]
8687-
8688- * siplib/siplib.c:
8689- Fixed a bug in the implementation of /Transfer/ when the object was
8690- aleady owned by C++ but the owning object had been garbage
8691- collected.
8692- [4d64b0e0db86]
8693-
8694-2007-02-18 phil <phil>
8695-
8696- * siplib/siplib.c:
8697- Fixed a bug in the clearing of reference cycles with lambda slots.
8698- Although the slot is visited, it is no longer cleared - that is left
8699- to the proxy dtor.
8700- [aac8236a8970]
8701-
8702-2007-02-16 phil <phil>
8703-
8704- * lib/siputils.py, sipgen/gencode.c:
8705- Fixed a bug in the build system for QtDesigner on Windows. The
8706- Q_OBJECT support code now uses metaObject() rather than
8707- staticMetaObject because the latter is private in the ActiveQt
8708- classes.
8709- [4b8647dbb036]
8710-
8711-2007-02-10 phil <phil>
8712-
8713- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
8714- sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
8715- Added support for /TypeFlags/. Added sipFindClass() and
8716- sipFindNamedEnum() to the public API.
8717- [530b7a1aa547]
8718-
8719-2007-02-06 phil <phil>
8720-
8721- * sipgen/gencode.c, siplib/sip.h:
8722- More changes to the Q_OBJECT support.
8723- [b46c77268a1c]
8724-
8725-2007-02-04 phil <phil>
8726-
8727- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h:
8728- Renamed "Qt4MetaObject" to "Qt4Q_OBJECT".
8729- [9b8809b3f254]
8730-
8731-2007-02-01 phil <phil>
8732-
8733- * sipgen/gencode.c:
8734- Changed the metaObject() hook so that it won't crash if the C++
8735- instance has gone.
8736- [5241cd5c39d3]
8737-
8738-2007-01-30 phil <phil>
8739-
8740- * sipgen/gencode.c:
8741- Changed the metaObject() hook again.
8742- [77da534919cb]
8743-
8744- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8745- Changed the metaObject() hooks.
8746- [272f63959180]
8747-
8748-2007-01-27 phil <phil>
8749-
8750- * sipgen/gencode.c:
8751- Changed the way the Qt support API is created so that new SIPs can
8752- build old PyQts.
8753- [15c8d8be611d]
8754-
8755- * NEWS, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8756- Added the hooks to allow PyQt to build a proper meta-object when a
8757- new Python class is defined.
8758- [c82c3d1b50aa]
8759-
8760-2007-01-25 phil <phil>
8761-
8762- * lib/siputils.py, siplib/qtlib.c:
8763- Fixed a build system bug that affected non-MinGW Windows compilers
8764- when building static modules. Taught the build system about the
8765- QtDesigner module.
8766- [0029d3937d59]
8767-
8768-2007-01-23 phil <phil>
8769-
8770- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8771- Reimplemented the support for qt_metacall() so that it is a bit
8772- cleaner and can't be called from Python.
8773- [c3701e916110]
8774-
8775-2007-01-22 phil <phil>
8776-
8777- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/qtlib.c,
8778- siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8779- Added support for the QtMetaClass option. Added sipParseSignature()
8780- to the private Qt API. (Both of the above are needed for David
8781- Boddie's support for Python widgets in Qt Designer.)
8782- [51250dc9185b]
8783-
8784-2007-01-21 phil <phil>
8785-
8786- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8787- Extended the cyclic garbage collector support for lambda slots so it
8788- works with SIGNALs as well as PYSIGNALs. Incremented the SIP API
8789- version number to 3.4.
8790- [fcf4f2b51bd7]
8791-
8792- * siplib/qtlib.c, siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
8793- Fixed garbage collection support for lambda slots (at the moment
8794- only when the slot is connected to a PYSIGNAL).
8795- [8bf735cda5bf]
8796-
8797-2007-01-16 phil <phil>
8798-
8799- * siplib/sip.h:
8800- Added #undef slots to sip.h for when embedding Python 2.3 in Qt
8801- applications.
8802- [33ab2adb9d0c]
8803-
8804- * sipgen/gencode.c:
8805- qRegisterMetaType() is now called for every candidate class at
8806- module initialisation rather than when the first instance is created
8807- from Python.
8808- [a31d12e3d9c2]
8809-
8810-2007-01-15 phil <phil>
8811-
8812- * doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
8813- Allowed /TransferThis/ to be specified more than once.
8814- [e8246e9dc928]
8815-
8816- * doc/sipref.txt, lib/LICENSE.short, siplib/threads.c:
8817- Updated the copyright notices. Fixed a reentrancy problem in
8818- wrapping objects obtained from C/C++ (thanks to Giovanni Bajo for
8819- the fix).
8820- [117d2c42c517]
8821-
8822-2007-01-10 phil <phil>
8823-
8824- * siplib/sip.h, siplib/siplib.c:
8825- Added support for __truediv__ and __itruediv__ by making them
8826- synonyms for __div__ and __idiv__.
8827- [1c6e71aeb203]
8828-
8829-2007-01-07 phil <phil>
8830-
8831- * sipgen/gencode.c, siplib/siplib.c:
8832- Hopefully fixed a bug in the generation of the typedefs table that
8833- wasn't using the full name of foreign modules.
8834- [a193602041a2]
8835-
8836-2006-12-28 phil <phil>
8837-
8838- * siplib/sip.h:
8839- Fixed a bug in the sipResetCppHasRef() macro that breaks the
8840- /TransferBack/ annotation.
8841- [30e9fc168db0]
8842-
8843-2006-12-20 phil <phil>
8844-
8845- * lib/siputils.py:
8846- Fixed a MacOS specific bug in create_wrapper() in the build system.
8847- [34641513890f]
8848-
8849- * lib/sipdistutils.py:
8850- Applied a patch to sipdistutils.py from Giovanni Bajo to allow .sip
8851- files to be used in the "depends" argument to setup().
8852- [912613b39701]
8853-
8854-2006-12-16 phil <phil>
8855-
8856- * NEWS, lib/siputils.py:
8857- Fixed a bug in the build system that meant that lines in the top
8858- level mkspec file were being ignored after the last include.
8859- [c2ee167686b7]
8860-
8861-2006-12-09 phil <phil>
8862-
8863- * lib/siputils.py:
8864- Fixed a MacOS build problem caused by another change to Qt installs.
8865- [90c588f6fa54]
8866-
8867- * NEWS, build.py:
8868- Updated the NEWS file. Fixed the internal build system for later
8869- versions of docutils.
8870- [4bcf93b8836e]
8871-
8872-2006-12-06 phil <phil>
8873-
8874- * NEWS, siplib/qtlib.c:
8875- "PyQt_PyObject" is now used instead of "PyObject *". lamda functions
8876- can now be used as slots.
8877- [33493621d63e]
8878-
8879-2006-11-26 phil <phil>
8880-
8881- * siplib/sip.h, siplib/siplib.c:
8882- Fixed an incorrect assumption that if a Python wrapper of a C++
8883- owned object was being garbage collected then its Python children
8884- (ie. things it owns) should also be garbage collected. It may be
8885- that the parent is a "temporary" object (eg. the argument of a
8886- reimplementation of a virtual) but the children are "permanent". The
8887- case in PyQt is the parent argument of
8888- QAbstractItemDelegate.createEditor().
8889- [b981a814a1b2]
8890-
8891-2006-11-25 phil <phil>
8892-
8893- * doc/sipref.txt, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
8894- PEP 353 fixes from Ulli.
8895- [d22c558be4b9]
8896-
8897- * siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
8898- Some "char *" to "const char *" fixes from Ulli.
8899- [208ba44fcddc]
8900-
8901-2006-11-18 phil <phil>
8902-
8903- * sipgen/transform.c:
8904- Fixed a broken pointer bug in the API file generation.
8905- [b80f4ae42e97]
8906-
8907-2006-11-17 phil <phil>
8908-
8909- * sipgen/export.c, sipgen/lexer.l:
8910- Fixed a misleading error message when instantiating templates. Fixed
8911- a bug generating global functions in API files.
8912- [6b6804bacc4f]
8913-
8914-2006-11-11 phil <phil>
8915-
8916- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
8917- Fixed a bug with virtual handlers when a module %Imports from two
8918- other (independent) modules.
8919- [56ca50343b62]
8920-
8921-2006-11-04 phil <phil>
8922-
8923- * NEWS:
8924- Released as v4.5.
8925- [5982951360f3] [4.5]
8926-
8927-2006-10-28 phil <phil>
8928-
8929- * lib/siputils.py:
8930- The build system now handles .prl files on MacOS.
8931- [25b8444de255]
8932-
8933-2006-10-27 phil <phil>
8934-
8935- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
8936- sipgen/sip.h, sipgen/transform.c:
8937- Changed NoDefaultCopyCtor to NoDefaultCtors. Updated the NEWS file.
8938- [57307ed6d154]
8939-
8940-2006-10-22 phil <phil>
8941-
8942- * doc/sipref.txt, lib/siputils.py, sipgen/parser.y, sipgen/sip.h,
8943- sipgen/transform.c, siplib/qtlib.c:
8944- A fix for configuring QtAssistant in PyQt for Qt v4.2 on MacOS.
8945- Added the NoDefaultCopyCtor class annotation.
8946- [ed57b3a6fd1c]
8947-
8948-2006-10-21 phil <phil>
8949-
8950- * doc/sipref.txt, siplib/siplib.c:
8951- Fixed a Python 2.4/2.5 change that was missed. Added
8952- sip.setdeleted().
8953- [2db4a119d6c6]
8954-
8955-2006-10-20 phil <phil>
8956-
8957- * doc/sipref.txt, lib/siputils.py, specs/hurd-g++, specs/solaris-cc:
8958- Platform portability fixes from Ulli. Fix for conditional includes
8959- in spec files from Ulli. Qt4 module include directories are now
8960- searched before the main Qt4 include directory. Handle the change in
8961- debug libraries in Qt v4.2.
8962- [3f72b2b88460]
8963-
8964-2006-10-15 phil <phil>
8965-
8966- * sipgen/parser.y:
8967- Allow virtual signals if the NoEmitters option is set.
8968- [6657a8d15171]
8969-
8970- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
8971- Fixed a bug where the first argument to a global comparison operator
8972- was mishandled if it was a pointer rather than a reference.
8973- [5c5c0d5f6b65]
8974-
8975-2006-10-13 phil <phil>
8976-
8977- * siplib/siplib.c:
8978- Improved the previous fix for the incorrect ctor exception.
8979- [3d9f787fedf8]
8980-
8981-2006-10-08 phil <phil>
8982-
8983- * lib/siputils.py, siplib/siplib.c:
8984- Fixed bug where handwritten traverse and clear code wasn't being
8985- called for derived classes. Fixed an incorrect Python exception
8986- raised when a C++ exception is thrown by a ctor. The build system
8987- now displayed an error if a non-framework build of Python is used on
8988- MacOS. Untested fix for building a static module with MinGW.
8989- [9c60ee47e4d5]
8990-
8991-2006-10-07 phil <phil>
8992-
8993- * lib/siputils.py:
8994- Build system fixes for Qt v4.2.0 based on a patch from Matt Newell.
8995- [e7f12b65d105]
8996-
8997-2006-09-30 phil <phil>
8998-
8999- * lib/siputils.py:
9000- Fixes for building QtTest on Windows.
9001- [a8b3716e682a]
9002-
9003-2006-09-23 phil <phil>
9004-
9005- * lib/siputils.py, sipgen/parser.y:
9006- Taught the build system about QtTest. Fixed a bug in the handling of
9007- namespaces split across multiple header files.
9008- [89b8c6c6b8c6]
9009-
9010- * TODO, doc/sipref.txt, siplib/siplib.c:
9011- Added support for hooking into the C++ dtor from Python by
9012- implementing __dtor__() from a patch by Jean Jacques Lecler.
9013- [38da61ef1711]
9014-
9015- * NEWS, doc/sipref.txt, siplib/siplib.c:
9016- Added sip.delete() (based on a patch from Jean Jacques Lecler) and
9017- sip.isdeleted().
9018- [8946500be6fa]
9019-
9020- * doc/sipref.txt, sipgen/export.c, sipgen/main.c, sipgen/sip.h:
9021- Removed the -n flag to sip now I think I've decided how to change
9022- code completion in QScintilla.
9023- [69cb56ba58f1]
9024-
9025-2006-09-22 phil <phil>
9026-
9027- * sipgen/parser.y:
9028- Backed out the check that abstract methods are virtual - because
9029- they don't have to be.
9030- [1c753a1e011a]
9031-
9032-2006-09-17 phil <phil>
9033-
9034- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
9035- sipgen/transform.c:
9036- Added support for pure virtual dtors. Fixed a bug where abstract
9037- operators weren't flagging the class as being abstract.
9038- [867e6aa1d499]
9039-
9040-2006-09-03 phil <phil>
9041-
9042- * sipgen/gencode.c, siplib/siplib.c:
9043- Defeated a GCC v4 warning message on generated code.
9044- [be5889f172fb]
9045-
9046-2006-08-17 phil <phil>
9047-
9048- * sipgen/gencode.c:
9049- Minor code generation formatting tidyups.
9050- [c4397d6c3aca]
9051-
9052- * siplib/sip.h, siplib/siplib.c, specs/linux-lsb:
9053- Added argument type checking to sipRegisterIntTypes().
9054- [aa1a3cf373d0]
9055-
9056-2006-08-16 phil <phil>
9057-
9058- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
9059- Added sipRegisterIntTypes() to the private Qt support API so that
9060- PyQt4 can implement Q_ENUMS and Q_FLAGS.
9061- [0909d2f2b376]
9062-
9063-2006-08-05 phil <phil>
9064-
9065- * lib/siputils.py:
9066- Added support for QAxContainer in the build system.
9067- [5ddf72d045fb]
9068-
9069-2006-07-19 phil <phil>
9070-
9071- * lib/configure.py, lib/siputils.py, specs/hurd-g++, specs/linux-pgcc,
9072- specs/solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
9073- specs/solaris-g++-64, specs/win32-icc, specs/win32-msvc,
9074- specs/win32-msvc.net, specs/win32-msvc2005:
9075- Updated the spec files from Qt v4.1.4. Added (completely untested)
9076- support for embedding manifests for MSVC v8.
9077- [db5efb4cac5b]
9078-
9079-2006-07-16 phil <phil>
9080-
9081- * doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
9082- More Python v2.5 changes.
9083- [d54e5c462956]
9084-
9085-2006-07-15 phil <phil>
9086-
9087- * siplib/objmap.c, siplib/sip.h, siplib/siplib.c:
9088- The sip module will now build against Python v2.5. (The 64 bit
9089- changes still need to be done.)
9090- [00cc5cf214cf]
9091-
9092-2006-07-08 phil <phil>
9093-
9094- * lib/configure.py:
9095- Fixed the use of sys.lib in configure.py.
9096- [a10f12367272]
9097-
9098-2006-07-06 phil <phil>
9099-
9100- * lib/configure.py:
9101- configure.py uses sys.lib if it is defined (for some 64 bit Linux
9102- distros).
9103- [0dbaacd9a231]
9104-
9105-2006-07-04 phil <phil>
9106-
9107- * sipgen/gencode.c:
9108- Always call a dtor if there is one, even if we can't see how the
9109- instance could have been created.
9110- [47bb2a6a914a]
9111-
9112-2006-07-01 phil <phil>
9113-
9114- * sipgen/export.c:
9115- Fixed default arguments and C++ scoped names in the new API file
9116- handling.
9117- [6909ffb3bb65]
9118-
9119-2006-06-30 phil <phil>
9120-
9121- * NEWS, doc/sipref.txt, sipgen/export.c, sipgen/gencode.c,
9122- sipgen/genxml.c, sipgen/main.c, sipgen/sip.h, sipgen/sipgen.sbf:
9123- Added the -n command line option (possibly only temporarily).
9124- Changed the API generation so that it is more complete and uses
9125- Python types rather than C/C++ types.
9126- [1cd867db4c66]
9127-
9128-2006-06-29 phil <phil>
9129-
9130- * lib/configure.py:
9131- Added sip_config_args to sipconfig.py. Added __hex__() to
9132- sip.voidptr.
9133- [d60d22ffda1c]
9134-
9135- * NEWS, doc/sipref.txt, lib/configure.py, siplib/siplib.c:
9136-
9137- [16c887e1169c]
9138-
9139-2006-06-19 phil <phil>
9140-
9141- * lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
9142- More warning fixes from Ulli.
9143- [4ba06471ee46]
9144-
9145-2006-06-17 phil <phil>
9146-
9147- * sipgen/gencode.c:
9148- Changed the explicit C linkage to retain the benefit of using
9149- static.
9150- [b2f02ca5a819]
9151-
9152-2006-06-13 phil <phil>
9153-
9154- * sipgen/gencode.c, sipgen/parser.y:
9155- Signals and slots are now const char * rather than char *.
9156- [a43a225ba180]
9157-
9158-2006-06-10 phil <phil>
9159-
9160- * doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y, siplib/sip.h,
9161- siplib/siplib.c:
9162- Fixed the implementation of /TransferBack/ for virtuals. Changed all
9163- API arguments that take a format string from char * to const char *
9164- for Solaris. Used explicit C linkage for all generated function
9165- calls when genarting C++. (May need more work in this area.)
9166- [2d05ea691d29]
9167-
9168-2006-06-06 phil <phil>
9169-
9170- * sipgen/genxml.c:
9171- Changed the XML handling of opaque classes.
9172- [86888971690a]
9173-
9174-2006-06-05 phil <phil>
9175-
9176- * sipgen/genxml.c:
9177- Added support for opaque classes to the XML.
9178- [427fc4186f14]
9179-
9180-2006-06-03 phil <phil>
9181-
9182- * sipgen/gencode.c:
9183- More XML generation changes.
9184- [b204d646b580]
9185-
9186-2006-05-31 phil <phil>
9187-
9188- * sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
9189- More XML generation changes.
9190- [91acee878afd]
9191-
9192-2006-05-30 phil <phil>
9193-
9194- * sipgen/gencode.c, sipgen/genxml.c, sipgen/parser.y, sipgen/sip.h:
9195- More XML generation changes.
9196- [7d79341cfc58]
9197-
9198-2006-05-28 phil <phil>
9199-
9200- * sipgen/genxml.c:
9201- More XML generation changes.
9202- [a95f90a9f6d2]
9203-
9204-2006-05-25 phil <phil>
9205-
9206- * sipgen/genxml.c, siplib/qtlib.c:
9207- Fixed bug disconnecting Python signals.
9208- [7a44ec54ef69]
9209-
9210-2006-05-20 phil <phil>
9211-
9212- * sipgen/genxml.c:
9213- More XML generation changes.
9214- [7e8538e5e080]
9215-
9216- * sipgen/genxml.c, sipgen/transform.c:
9217- Backed out the change that treated "char" and "char *" as equivalent
9218- when comparing Python signatures. (The former is different to the
9219- latter if it appears first.)
9220- [f411eb8c010c]
9221-
9222-2006-05-18 phil <phil>
9223-
9224- * sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
9225- More XML generation changes.
9226- [e42fe590a33c]
9227-
9228-2006-05-16 phil <phil>
9229-
9230- * sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h, sipgen/transform.c:
9231- Tightened up on detecting clashing Python signatures involving
9232- strings and longs. Changes to the XML file generation.
9233- [180930e69638]
9234-
9235-2006-05-13 phil <phil>
9236-
9237- * siplib/siplib.c:
9238- Removed some Python API calls made after the interpreter is known to
9239- have gone.
9240- [dc80be8d888f]
9241-
9242- * siplib/siplib.c:
9243- Fixed a sip module bug that meant that the Python API might be
9244- called after the interpreter had gone.
9245- [a9470b7f1479]
9246-
9247- * sipgen/gencode.c:
9248- Fixed code generation bug with abstract operators.
9249- [473bd3cea296]
9250-
9251- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
9252- sipgen/parser.y, sipgen/sip.h:
9253- Added %UnitCode.
9254- [2f3ad3e3a582]
9255-
9256-2006-05-11 phil <phil>
9257-
9258- * NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
9259- siplib/siplib.c:
9260- Added sipExportSymbol() and sipImportSymbol(). Bumped the API
9261- version number to 3.2.
9262- [ee671f33f9a8]
9263-
9264-2006-05-08 phil <phil>
9265-
9266- * sipgen/heap.c:
9267- Removed (hopefully) two new warning messages.
9268- [a347b1964dd2]
9269-
9270-2006-05-07 phil <phil>
9271-
9272- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
9273- sipgen/parser.y, sipgen/sip.h:
9274- Added support for %ExportedHeaderCode.
9275- [1fc6cbb5421c]
9276-
9277- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c:
9278- Fixed bug in handling of virtuals with different Python and C++
9279- signatures.
9280- [7c64bcb52e90]
9281-
9282-2006-05-05 phil <phil>
9283-
9284- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/heap.c,
9285- sipgen/lexer.l, sipgen/main.c, sipgen/parser.y, sipgen/sip.h,
9286- sipgen/transform.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
9287- Fixes for compiler warnings and a couple of minor bugs from Ulli.
9288- Deprecated %SIPNoEmitters and replaced it with %SIPOptions. Added
9289- the RegisterTypes option so that appropriate classes are registered
9290- with Qt automatically when needed - so PyQt4 doesn't need to
9291- implement qRegisterMetaType().
9292- [b80581e367f3]
9293-
9294- * sipgen/gencode.c, sipgen/genxml.c, sipgen/sip.h:
9295- Fixed some compiler warnings.
9296- [5c4467450cbe]
9297-
9298-2006-05-01 phil <phil>
9299-
9300- * sipgen/genxml.c, sipgen/transform.c:
9301- More work on the XML generation.
9302- [cb5eec12561a]
9303-
9304-2006-04-30 phil <phil>
9305-
9306- * sipgen/gencode.c, sipgen/genxml.c, sipgen/main.c, sipgen/sip.h,
9307- sipgen/sipgen.sbf:
9308- Added the -m flag to generate the XML representation of the Pythonic
9309- API.
9310- [57d825e6a61f]
9311-
9312-2006-04-28 phil <phil>
9313-
9314- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h, siplib/siplib.c:
9315- Replaced long long with PY_LONG_LONG for MSVC 6.
9316- [19dc39dffac6]
9317-
9318-2006-04-27 phil <phil>
9319-
9320- * lib/siputils.py, sipgen/parser.y:
9321- Fixed bug in handling multiple instances of the same namespace. The
9322- build system allows Apple's Python to be used if there is also a
9323- later python.org installation. MacOS modules are now bundles rather
9324- than dynamic libraries and can now be loaded by Pythons from
9325- python.org. Released as v4.4.3.
9326- [809972a88944]
9327-
9328-2006-04-21 phil <phil>
9329-
9330- * sipgen/gencode.c:
9331- Fixed the previous const mapped type fix.
9332- [1a5385651af1]
9333-
9334-2006-04-20 phil <phil>
9335-
9336- * lib/siputils.py, sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
9337- Fixed the GUI enabled interpreter in sipconfig.create_wrapper() for
9338- MacOS. Fixed static const mapped types.
9339- [def8fea45725]
9340-
9341-2006-04-18 phil <phil>
9342-
9343- * doc/sipref.txt, lib/configure.py, lib/siputils.py:
9344- Fixed the build system for when sys.prefix != sys.exec_prefix.
9345- [83449c4ab4f2]
9346-
9347-2006-04-16 phil <phil>
9348-
9349- * doc/sipref.txt, lib/siputils.py:
9350- Added the export_all argument to the ModuleMakefile constructor of
9351- the build system so that exports can be handled on a per module
9352- basis. This is needed to get around a (not properly understood)
9353- problem with modules that wrap C++ exceptions.
9354- [89709d0957bd]
9355-
9356-2006-04-15 phil <phil>
9357-
9358- * lib/siputils.py, siplib/qtlib.c, specs/hurd-g++, specs/solaris-cc:
9359- The build system now complains if a property is used in a spec file
9360- when no properties have been defined. Removed Qt specific properties
9361- from the solaris-cc and hurd-g++ spec files. Fixed the disconnecting
9362- of short-circuited signals.
9363- [0c4ee0a3db80]
9364-
9365-2006-04-08 phil <phil>
9366-
9367- * lib/siputils.py:
9368- Fixed the build system to better support frameworks on MacOS.
9369- [864b17931a7b]
9370-
9371-2006-04-07 phil <phil>
9372-
9373- * doc/sipref.txt, siplib/sip.h, siplib/siplib.c:
9374- Made sure that all uses of sipMappedType * in the API are const.
9375- [0d3533b681e3]
9376-
9377-2006-04-06 phil <phil>
9378-
9379- * lib/siputils.py:
9380- The sipconfig module now uses qt_data_dir (if set) to find the qmake
9381- spec files.
9382- [2f81428640de]
9383-
9384-2006-04-05 phil <phil>
9385-
9386- * NEWS, TODO, sipgen/parser.y, sipgen/transform.c:
9387- Merged v4.4.1 into the trunk. SIP now properly detects duplicate
9388- Python signatures.
9389- [9c53b26de67b]
9390-
9391-2006-04-02 phil <phil>
9392-
9393- * siplib/siplib.c:
9394- Fixed a regression in the handling of __dict__.
9395- [33a17c1ed42d]
9396-
9397-2006-04-01 phil <phil>
9398-
9399- * siplib/sip.h, siplib/siplib.c:
9400- Make the sip module's support for long long and unsigned long long
9401- conditional on HAVE_LONG_LONG so that it will build with older
9402- compilers.
9403- [e655c6a8a748]
9404-
9405-2006-03-29 phil <phil>
9406-
9407- * NEWS, sipgen/gencode.c:
9408- Removed extraneous brackets in generated code.
9409- [a64c7cdb2ee9]
9410-
9411-2006-03-28 phil <phil>
9412-
9413- * sipgen/gencode.c:
9414- Fixed some C++ code wrongly appearing in C modules.
9415- [7e80756dae4d]
9416-
9417-2006-03-25 phil <phil>
9418-
9419- * NEWS, sipgen/parser.y:
9420- Fixed a regression in the handling of namespaces.
9421- [7a22e2205ba9]
9422-
9423-2006-03-24 phil <phil>
9424-
9425- * NEWS, doc/sipref.txt, sipgen/gencode.c:
9426- Documented sipModule and sipModuleDict as being available to
9427- %PostInitialisationCode. Released as v4.4.
9428- [8acdabcf6a08] [4.4]
9429-
9430-2006-03-21 phil <phil>
9431-
9432- * doc/sipref.txt, lib/sipdistutils.py, siplib/sip.h, siplib/siplib.c:
9433- Applied patch for sipdistuils.py from Giovanni. Documented
9434- sipConvertFromNamedEnum(). Wrapped types now define __reduce_ex__
9435- and __reduce__ attributes set to None so that pickle knows they
9436- can't be pickled.
9437- [94694c47891e]
9438-
9439-2006-03-20 phil <phil>
9440-
9441- * siplib/siplib.c:
9442- Fixed the special handling of the __dict__ attribute so that it
9443- doesn't apply to Python sub-classes of wrapped classes.
9444- [6835562cf526]
9445-
9446-2006-03-19 phil <phil>
9447-
9448- * doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h,
9449- siplib/siplib.c, siplib/threads.c:
9450- Documentation tweaks. Generate sipSelf for ctor %MethodCode now that
9451- it's existence is documented. Fixed a second place where slots with
9452- no underlying C++ instance might be invoked.
9453- [ba7b9c9371e1]
9454-
9455-2006-03-17 phil <phil>
9456-
9457- * doc/sipref.txt, sipgen/gencode.c:
9458- Removed __unicode__ from the documentation. Fixed a bug with virtual
9459- methods that returned a reference to a type that had
9460- %ConvertToTypeCode.
9461- [6dc8ddba43ed]
9462-
9463-2006-03-15 phil <phil>
9464-
9465- * sipgen/gencode.c, siplib/qtlib.c, siplib/sipint.h, siplib/siplib.c:
9466- Removal of a now redundant error message. Fixed a leaking weak
9467- reference object. Another attempt at fixing calling slots where the
9468- underlying C++ instance has disappeared.
9469- [8f7b10cbc372]
9470-
9471-2006-03-14 phil <phil>
9472-
9473- * lib/siputils.py, sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h,
9474- sipgen/transform.c:
9475- More const void * fixes. Fixed bug with building debug modules using
9476- MinGW. Fixed feature where too many names were being generated from
9477- imported modules. SIP now handles nested imports properly and
9478- doesn't require all modules to be explcitly imported.
9479- [f7b3774f05bf]
9480-
9481-2006-03-13 phil <phil>
9482-
9483- * build.py, doc/sipref.txt, lib/README.Fink, lib/siputils.py,
9484- sipgen/parser.y:
9485- Build system changes to support MacOS properly. Fixed crash when
9486- %TypeHeaderCode was used outside of a scope.
9487- [fc9cf357273b]
9488-
9489-2006-03-12 phil <phil>
9490-
9491- * TODO, sipgen/gencode.c:
9492- Fixed calls to sipConvertFromVoidPtr() with a const argument.
9493- [1d20b7ddf5b7]
9494-
9495-2006-03-11 phil <phil>
9496-
9497- * lib/siputils.py:
9498- Minor changes to sipconfig.py for PyQt4's pyqtconfig.py.
9499- [5c35ed3d0e90]
9500-
9501- * lib/siputils.py, sipgen/parser.y:
9502- Fixed handling of generating code for the version before the first
9503- %Timeline version.
9504- [3ffe3ddaa678]
9505-
9506-2006-03-08 phil <phil>
9507-
9508- * siplib/qtlib.c:
9509- Fixed a bug in the handling of QVariant * and PyObject * signal
9510- arguments.
9511- [c04f60565120]
9512-
9513-2006-03-06 phil <phil>
9514-
9515- * sipgen/gencode.c:
9516- Fixed a regression in handling of enums defined in an imported
9517- module.
9518- [305954bab24d]
9519-
9520- * sipgen/gencode.c:
9521- Fixed bug in handling the typedef void hack.
9522- [f5ec81faf924]
9523-
9524-2006-03-05 phil <phil>
9525-
9526- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, siplib/sip.h,
9527- siplib/siplib.c:
9528- Fixed bug with abstract classes with %ConvertToSubClassCode.
9529- Reimplemented namspaces split across modules so that there is a
9530- single namespace implemented in the original module.
9531- [e04e87b70f29]
9532-
9533- * sipgen/transform.c:
9534- Fixed missing #include for classes that aren't an immediate parent.
9535- [5f28954fe478]
9536-
9537-2006-03-04 phil <phil>
9538-
9539- * sipgen/gencode.c:
9540- Fixed a regression in the wrappers around protected methods.
9541- [65fc03434a16]
9542-
9543- * siplib/qtlib.c:
9544- Suppressed the exception about the underlying object disappearing
9545- when calling a Python slot. This is because we don't automatically
9546- disconnect Python slots.
9547- [5a90239b615c]
9548-
9549-2006-03-02 phil <phil>
9550-
9551- * NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
9552- siplib/siplib.c:
9553- Added sipLong_AsUnsignedLong() to work around a bug in
9554- PyLong_AsUnsignedLong().
9555- [ae6bdfc7d774]
9556-
9557-2006-02-26 phil <phil>
9558-
9559- * sipgen/gencode.c:
9560- Fixed bug in handling class arguments with /Out/ specified.
9561- [a39d9d9a8d5a]
9562-
9563- * lib/siputils.py, sipgen/gencode.c, sipgen/lexer.l, sipgen/parser.y:
9564- Recognise NULL as a synonym for 0. Some build system changes for
9565- Cygwin. Fixed the deletion of temporary instances in catch clauses.
9566- [1b9e30dd13fb]
9567-
9568- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
9569- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/qtlib.c,
9570- siplib/sip.h:
9571- SIP now treats signed char as a type distinct from char.
9572- [01500c239ace]
9573-
9574- * sipgen/gencode.c, sipgen/parser.y, sipgen/sip.h, sipgen/transform.c,
9575- siplib/sip.h, siplib/siplib.c:
9576- Tore up the recent changes for handling cross module namespaces. A
9577- namespace is now defined in each module it is used. That makes
9578- things easier to implement and should be less confusing for the
9579- user. The API and data structures should now be stable.
9580- [02277356e12c]
9581-
9582-2006-02-25 phil <phil>
9583-
9584- * sipgen/parser.y:
9585- Fixed bug in handling of variables introduced in the previous
9586- commit.
9587- [aadd2d0daa3e]
9588-
9589- * sipgen/gencode.c, sipgen/parser.y:
9590- Added support for variables defined in namespaces defined in other
9591- modules.
9592- [a1210912bb6c]
9593-
9594- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
9595- Completed the support for enums in namespaces originating in other
9596- modules.
9597- [590dbde2e463]
9598-
9599-2006-02-21 phil <phil>
9600-
9601- * NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/siplib.c:
9602- Added the 't' and 'u' format characters to sipParseArgs(),
9603- sipParseResult(), sipCallMethod() and sipBuildResult(). unsigned and
9604- unsigned short are now implemented as Python long objects instead of
9605- integer objects.
9606- [f8c047d7f8df]
9607-
9608-2006-02-19 phil <phil>
9609-
9610- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
9611- Implemented disconnects for universal signals.
9612- [6cd1a4dc4e73]
9613-
9614-2006-02-18 phil <phil>
9615-
9616- * sipgen/gencode.c, siplib/qtlib.c, siplib/sip.h:
9617- Implemented support for signal arguments of type PyObject *.
9618- Implemented support for shortcircuited Python signals (ie. just the
9619- name without arguments) that will only work with other
9620- shortcircuited Python signals and Python slots - bit don't need to
9621- do any conversions between Python and C++.
9622- [6748c4088281]
9623-
9624-2006-02-17 phil <phil>
9625-
9626- * doc/sipref.txt, sipgen/gencode.c:
9627- Fixed bug in the implementation of /TransferBack/ in virtual
9628- handlers. Fixed bug in methods with a void result and a single /Out/
9629- argument that was a mapped type or class.
9630- [f6486c697de5]
9631-
9632-2006-02-16 phil <phil>
9633-
9634- * doc/sipref.txt, sipgen/gencode.c:
9635- Fixed bug in generating code that called sipCallMethod(). Updated
9636- the documentation where it was still referring to the legacy type
9637- convertors.
9638- [acdd622dba74]
9639-
9640- * sipgen/gencode.c:
9641- Fixed bug in generated legacy mapped type convertor names.
9642- [8424561f0d54]
9643-
9644-2006-02-15 phil <phil>
9645-
9646- * sipgen/gencode.c:
9647- Fixed bug that could easily result in deleting non-heap instances.
9648- [9ab37451f8f0]
9649-
9650-2006-02-13 phil <phil>
9651-
9652- * doc/sipref.txt, lib/siputils.py:
9653- Fixes to PythonModuleMakefile.
9654- [684799b183d5]
9655-
9656- * NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/qtlib.c,
9657- siplib/sip.h, siplib/sipint.h, siplib/siplib.c:
9658- Renamed the new sipCheckConvert functions to sipForceConvert
9659- functions. Added the 'B', 'C' and 'D' format character to
9660- sipBuildResult() and sipCallMethod(). Removed the 'L' format
9661- character from sipBuildResult() and sipCallMethod(). Added
9662- sipConvertFromInstance(), sipConvertFromNewInstance() and
9663- sipConvertFromMappedType().
9664- [f6324b7c7ab1]
9665-
9666-2006-02-12 phil <phil>
9667-
9668- * NEWS, TODO, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
9669- siplib/sip.h, siplib/siplib.c, siplib/threads.c:
9670- Overhauled how %ConvertToTypeCode should be written - detail below.
9671- (Still need to overhaul %ConvertFromTypeCode.) Added
9672- sipCanConvertToInstance(), sipConvertToInstance(),
9673- sipCheckConvertToInstance() and sipReleaseInstance(). Added
9674- sipCanConvertToMappedType(), sipConvertToMappedType(),
9675- sipCheckConvertToMappedType(), sipReleaseMappedType() and
9676- sipFindMappedType(). Changed the order of the arguments to
9677- sipConvertToCppTransfer(). Added the 'C' and 'D' format characters
9678- to sipParseResult(). Changed the meaning of the 'J' and 'M' format
9679- characters in sipParseArgs(). Removed the sipConvertTo_*()
9680- functions. Removed sipConvertToCppTransfer(). Took all of the None
9681- handling out of %ConvertToTypeCode.
9682- [7122e755a332]
9683-
9684-2006-01-28 phil <phil>
9685-
9686- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
9687- Fixed the support for __hash__.
9688- [f57b38d29839]
9689-
9690-2006-01-26 phil <phil>
9691-
9692- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/lexer.l,
9693- sipgen/parser.y, sipgen/sip.h, siplib/qtlib.c, siplib/sip.h,
9694- siplib/sipint.h:
9695- Added %SIPNoEmitters to stop SIP generating signal emitters for a
9696- module and any module that imports it. Changed the signal/slot
9697- support so that Python signals can be implemented with proxies.
9698- [ebc0499b0e99]
9699-
9700-2006-01-20 phil <phil>
9701-
9702- * sipgen/gencode.c, siplib/sip.h, siplib/siplib.c:
9703- Fixed a bug in sipTransferTo() that caused some objects to be
9704- garbage collected while ownership was being transferred. Check that
9705- abstract methods are only ever called as bound methods.
9706- [7f66705a98e7]
9707-
9708-2006-01-19 phil <phil>
9709-
9710- * doc/sipref.txt, siplib/siplib.c:
9711- Updated the documentation for sipConnectRx(). The __dict__ attribute
9712- of a wrapper type now returns a regular dictionary rather than a
9713- proxy (because PyDict_Next() doesn't iterate over proxies).
9714- [b7b57265c54c]
9715-
9716-2006-01-14 phil <phil>
9717-
9718- * siplib/siplib.c:
9719- Fixed the searching of signal types.
9720- [d24efdbe5952]
9721-
9722-2006-01-11 phil <phil>
9723-
9724- * siplib/siplib.c:
9725- The previous fix wasn't quite so trivial.
9726- [a598de0cf451]
9727-
9728- * siplib/siplib.c:
9729- Added missing function prototype.
9730- [5d6320a5e0a1]
9731-
9732-2006-01-10 phil <phil>
9733-
9734- * NEWS, doc/sipref.txt, lib/siputils.py, sipgen/gencode.c,
9735- sipgen/parser.y, sipgen/sip.h, sipgen/transform.c, siplib/sip.h,
9736- siplib/siplib.c:
9737- Fixed code generation bugs in new virtual handling code that was
9738- triggered by PyKDE. Build system changes for MinGW. Added support
9739- for constrained bools. Generate code to wrap static enum instances
9740- with inline code rather than through tables (as is done with class
9741- instances) for Windows.
9742- [48a76f76e9b8]
9743-
9744-2006-01-09 phil <phil>
9745-
9746- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y:
9747- Changed the signatures of sipForceConvertTo_*() and
9748- sipConvertFrom_*() back to their SIP 4.3 versions, deprecated them,
9749- and introduced the Transfer variants.
9750- [422ea1e3fee9]
9751-
9752- * NEWS, doc/sipref.txt, lib/configure.py, lib/siputils.py:
9753- More build system changes for Windows. Added the platform macro to
9754- sipconfig.py. The default Windows platform Python 2.4 and later is
9755- now win32-msvc.net rather than win32-msvc.
9756- [e9d83bea0e38]
9757-
9758-2006-01-08 phil <phil>
9759-
9760- * lib/configure.py, lib/siputils.py:
9761- Various build system changes needed by PyQt4 on Windows.
9762- [dcbf196c14bb]
9763-
9764-2006-01-07 phil <phil>
9765-
9766- * lib/LICENSE.short, lib/configure.py, lib/sipdistutils.py,
9767- lib/siputils.py, specs/aix-g++, specs/aix-g++-64, specs/aix-xlc,
9768- specs/aix-xlc-64, specs/darwin-g++, specs/freebsd-g++,
9769- specs/freebsd-g++34, specs/freebsd-g++40, specs/freebsd-icc, specs
9770- /hpux-acc, specs/hpux-acc-64, specs/hpux-acc-o64, specs/hpux-g++,
9771- specs/hpux-g++-64, specs/hpuxi-acc, specs/hpuxi-acc-32, specs/hpuxi-
9772- acc-64, specs/hurd-g++, specs/irix-cc, specs/irix-cc-64,
9773- specs/irix-g++, specs/irix-g++-64, specs/linux-cxx, specs/linux-
9774- ecc-64, specs/linux-g++, specs/linux-g++-32, specs/linux-g++-64,
9775- specs/linux-icc, specs/linux-kcc, specs/linux-kylix, specs/linux-
9776- pgcc, specs/lynxos-g++, specs/macx-g++, specs/macx-mwerks, specs
9777- /macx-pbuilder, specs/macx-xcode, specs/macx-xlc, specs/netbsd-g++,
9778- specs/openbsd-g++, specs/qnx-g++, specs/sco-cc, specs/sco-g++, specs
9779- /solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
9780- specs/solaris-g++-64, specs/tru64-cxx, specs/tru64-g++, specs
9781- /unixware-cc, specs/unixware-g++, specs/win32-borland,
9782- specs/win32-g++, specs/win32-icc, specs/win32-msvc,
9783- specs/win32-msvc.net, specs/win32-msvc2005:
9784- Updated the spec files from Qt v4.1. Added support for the $$()
9785- method of accessing environment variables in qmake spec files.
9786- sipdistutils.py fix from Giovanni. Changes to the build system for
9787- the slightly different macro names on Windows.
9788- [5030a64bab73]
9789-
9790-2006-01-04 phil <phil>
9791-
9792- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
9793- sipgen/transform.c:
9794- Added support for the /NoDerived/ annotation.
9795- [496e87667614]
9796-
9797-2006-01-03 phil <phil>
9798-
9799- * siplib/siplib.c:
9800- Fixed bug in handling of delayed dtors.
9801- [9ad8378e1bbd]
9802-
9803-2006-01-02 phil <phil>
9804-
9805- * sipgen/transform.c:
9806- Fixed another bug with the new handling of virtual function calls
9807- (where re-implementations from another module weren't picked up).
9808- [b4a5f97c4acd]
9809-
9810-2005-12-30 phil <phil>
9811-
9812- * sipgen/gencode.c, sipgen/sip.h, sipgen/transform.c:
9813- Fixed bugs with the new handling of virtuals that caused recursions.
9814- [e15093e5d260]
9815-
9816-2005-12-29 phil <phil>
9817-
9818- * lib/siputils.py:
9819- Taught the build system about the QtAssistantClient library.
9820- [ef92ee748d4c]
9821-
9822- * sipgen/gencode.c:
9823- Fixed bugs related to global operators with an enum as the first
9824- argument.
9825- [2379d714c099]
9826-
9827-2005-12-28 phil <phil>
9828-
9829- * NEWS, doc/sipref.txt, sipgen/gencode.c, siplib/sip.h,
9830- siplib/siplib.c:
9831- Added sipConvertToCppTransfer(). Changed the signatures for the type
9832- convertor functions. Added the 'L' format character to
9833- sipBuildResult() and sipCallMethod().
9834- [2bf4d76eefe2]
9835-
9836-2005-12-27 phil <phil>
9837-
9838- * NEWS, doc/sipref.txt, sipgen/gencode.c, sipgen/parser.y,
9839- sipgen/sip.h, sipgen/transform.c, siplib/sip.h, siplib/siplib.c:
9840- Added support for the /DelayDtor/ class annotation to control the
9841- order of dtor calls when the interpreter exits. Fixed bugs with cast
9842- operators.
9843- [5a03f38f92c7]
9844-
9845-2005-12-26 phil <phil>
9846-
9847- * doc/sipref.txt, sipgen/gencode.c:
9848- Fixed a documentation bug. Slightly changed the declaration of the
9849- sipProtectVirt wrappers.
9850- [bc65dd63ac7d]
9851-
9852-2005-12-24 phil <phil>
9853-
9854- * NEWS, doc/sipref.txt, sipgen/gencode.c:
9855- Class methods called as class.method(self, ...) is now equivalent to
9856- this->class::method(...). Class methods called as self.method(...)
9857- is now equivalent to this->method(...). Introduced sipSelfWasArg and
9858- the sipProtectVirt wrappers in order to support the above.
9859- [d49dc239a2d7]
9860-
9861-2005-12-22 phil <phil>
9862-
9863- * siplib/qtlib.c, siplib/siplib.c:
9864- SIP no longer complains if a slot to be disconnected isn't actually
9865- connected (and hopes Qt will then behave appropriately).
9866- [7e93c92ec9b9]
9867-
9868-2005-12-19 phil <phil>
9869-
9870- * sipgen/parser.y:
9871- Backed out the recent change that ignored abstract specifications if
9872- the methods wasn't virtual.
9873- [72f23df36c23]
9874-
9875- * doc/sipref.txt, lib/siputils.py:
9876- Various changes to the build system to better support Qt v4.
9877- [0a793291a2db]
9878-
9879-2005-12-18 phil <phil>
9880-
9881- * NEWS, doc/sipref.txt, lib/siputils.py:
9882- Added the PythonModuleMakefile class and create_wrapper() function
9883- to the build system.
9884- [70cd55448b1c]
9885-
9886-2005-12-15 phil <phil>
9887-
9888- * .repoman, NEWS, build.py, doc/sipref.txt, sipgen/main.c,
9889- siplib/qtlib.c, siplib/qtlib.cpp, siplib/sip.h:
9890- Internally renamed qtlib.cpp to qtlib.c. Small changes to the
9891- internal build system caused by the move to SVN. Removed SIP_BUILD
9892- from sip.h.
9893- [efe612146497]
9894-
9895-2005-12-14 phil <phil>
9896-
9897- * .repoman, NEWS, TODO, build.py, custom/custom.c, custom/customw.c,
9898- custom/mkcustom.py, doc/default.css, doc/sipref.txt, lib/LICENSE,
9899- lib/LICENSE.short, lib/README, lib/README.Fink, lib/README.HP-UX,
9900- lib/THANKS, lib/configure.py, lib/sipdistutils.py, lib/siputils.py,
9901- sipgen/gencode.c, sipgen/heap.c, sipgen/lexer.l, sipgen/main.c,
9902- sipgen/parser.y, sipgen/sip.h, sipgen/sipgen.sbf,
9903- sipgen/transform.c, siplib/bool.cpp, siplib/objmap.c,
9904- siplib/qtlib.cpp, siplib/sip.h, siplib/sipint.h, siplib/siplib.c,
9905- siplib/siplib.sbf, siplib/threads.c, specs/aix-g++,
9906- specs/aix-g++-64, specs/aix-xlc, specs/aix-xlc-64, specs/bsdi-g++,
9907- specs/cygwin-g++, specs/darwin-g++, specs/dgux-g++,
9908- specs/freebsd-g++, specs/freebsd-g++34, specs/freebsd-icc, specs
9909- /hpux-acc, specs/hpux-acc-64, specs/hpux-acc-o64, specs/hpux-cc,
9910- specs/hpux-g++, specs/hpux-g++-64, specs/hpuxi-acc-32, specs/hpuxi-
9911- acc-64, specs/hurd-g++, specs/irix-cc, specs/irix-cc-64, specs/irix-
9912- cc-o32, specs/irix-g++, specs/linux-cxx, specs/linux-ecc-64,
9913- specs/linux-g++, specs/linux-g++-64, specs/linux-icc, specs/linux-
9914- kcc, specs/linux-kylix, specs/linux-pgcc, specs/lynxos-g++,
9915- specs/macx-g++, specs/macx-mwerks, specs/macx-pbuilder, specs/macx-
9916- xlc, specs/netbsd-g++, specs/openbsd-g++, specs/qnx-g++, specs
9917- /reliant-cds, specs/reliant-cds-64, specs/sco-cc, specs/sco-g++,
9918- specs/solaris-cc, specs/solaris-cc-64, specs/solaris-g++,
9919- specs/solaris-g++-64, specs/tru64-cxx, specs/tru64-g++, specs
9920- /unixware-cc, specs/unixware-g++, specs/win32-borland,
9921- specs/win32-g++, specs/win32-icc, specs/win32-msvc,
9922- specs/win32-msvc.net, specs/win32-msvc2005, specs/win32-watcom:
9923- Initial import of sip from CVS
9924- [1fd77e66a56d]
9925diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/configure.py sip/configure.py
2--- ./sip-4.19.12.orig/configure.py 2018-07-05 05:55:19.000000000 -0400 9926--- ./sip-4.19.12.orig/configure.py 2018-07-05 05:55:19.000000000 -0400
3+++ sip-4.19.12/configure.py 2018-09-07 16:41:18.102569271 -0400 9927+++ sip/configure.py 2018-09-18 18:12:23.643053242 -0400
4@@ -949,10 +949,10 @@ 9928@@ -30,8 +30,8 @@
9929
9930
9931 # Initialise the globals.
9932-sip_version = 0x04130c
9933-sip_version_str = "4.19.12"
9934+sip_version = 0x04ffff
9935+sip_version_str = "4.255.255"
9936 py_version = sys.hexversion >> 8
9937 py_platform = sys.platform
9938 plat_py_site_dir = None
9939@@ -46,6 +46,7 @@
9940 sip_inc_dir = ''
9941 sip_root_dir = ''
9942 sip_module_dir = ''
9943+sip_module_dest_dir = ''
9944 sip_sip_dir = ''
9945 pyi_dir = ''
9946 sysroot = ''
9947@@ -185,7 +186,7 @@
9948 siputils.inform("The sip.h header file will be installed in %s." % sip_inc_dir)
9949
9950 if not opts.no_module:
9951- siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dir))
9952+ siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dest_dir))
9953
9954 if opts.pyi:
9955 siputils.inform("The sip.pyi stub file will be installed in %s." % pyi_dir)
9956@@ -302,30 +303,35 @@
9957 cfg.set_build_macros(macros)
9958
9959 all_installs = []
9960- installs = []
9961+ top_installs = []
9962+ gen_installs = []
9963 subdirs = []
9964
9965 if not opts.no_tools:
9966 subdirs.append('sipgen')
9967- installs.append(
9968+ top_installs.append(
9969 (["sipconfig.py", os.path.join(src_dir, "sipdistutils.py")],
9970 cfg.sip_root_dir))
9971+ gen_installs.append(
9972+ (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
9973
9974 if not opts.no_module:
9975 subdirs.append('siplib')
9976
9977- all_installs += installs
9978+ all_installs.extend(top_installs)
9979+ all_installs.extend(gen_installs)
9980
9981 # The command to run to generate the dist-info directory.
9982 mk_distinfo = os.path.join(os.path.dirname(os.path.abspath(__file__)),
9983 'mk_distinfo.py')
9984- distinfo_dir = os.path.join(cfg.sip_root_dir,
9985+ distinfo_dir = os.path.join(cfg.sip_module_dir,
9986 '%s-%s.dist-info' % (sip_module_name.replace('.', '_'),
9987 sip_version_str))
9988- run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (sys.executable,
9989- mk_distinfo, distinfo_dir)
9990
9991 if opts.use_qmake:
9992+ run_mk_distinfo = '%s %s \\\"$(INSTALL_ROOT)\\\" %s installed.txt' % (
9993+ sys.executable, mk_distinfo, distinfo_dir)
9994+
9995 sipconfig.inform("Creating top level .pro file...")
9996
9997 pro = open("sip.pro", "w")
9998@@ -333,8 +339,9 @@
9999 pro.write("TEMPLATE = subdirs\n")
10000 pro.write("SUBDIRS = %s\n" % " ".join(subdirs))
10001
10002- if installs:
10003- files, path = installs
10004+ if top_installs:
10005+ # There will only be one element.
10006+ files, path = top_installs[0]
10007 pro.write("\n")
10008 pro.write("build_system.files = %s\n" % " ".join(files))
10009 pro.write("build_system.path = %s\n" % quote(path))
10010@@ -343,22 +350,25 @@
10011 if opts.distinfo:
10012 pro.write("\n")
10013 pro.write("distinfo.extra = %s\n" % run_mk_distinfo)
10014- pro.write("distinfo.path = %s\n" % quote(cfg.sip_root_dir))
10015+ pro.write("distinfo.path = %s\n" % quote(cfg.sip_module_dir))
10016 pro.write("INSTALLS += distinfo\n")
10017
10018 pro.close()
10019 else:
10020+ run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (
10021+ sys.executable, mk_distinfo, distinfo_dir)
10022+
10023 sipconfig.inform("Creating top level Makefile...")
10024
10025 # Note that mk_distinfo.py won't exist if we are building from the
10026 # repository.
10027 if opts.distinfo and os.path.isfile(mk_distinfo):
10028- installs.append((run_mk_distinfo, None))
10029+ top_installs.append((run_mk_distinfo, None))
10030
10031 sipconfig.ParentMakefile(
10032 configuration=cfg,
10033 subdirs=subdirs,
10034- installs=installs
10035+ installs=top_installs
10036 ).generate()
10037
10038 if opts.use_qmake:
10039@@ -390,6 +400,14 @@
10040 pro.write("HEADERS = %s\n" % " ".join(
10041 [qmake_quote(h) for h in headers]))
10042
10043+ if gen_installs:
10044+ # There will only be one element.
10045+ files, path = gen_installs[0]
10046+ pro.write("\n")
10047+ pro.write("sip_h.files = %s\n" % " ".join(files))
10048+ pro.write("sip_h.path = %s\n" % quote(path))
10049+ pro.write("INSTALLS += sip_h\n")
10050+
10051 pro.close()
10052 else:
10053 sipconfig.inform("Creating sip code generator Makefile...")
10054@@ -399,6 +417,7 @@
10055 build_file=os.path.join(src_dir, "sipgen", "sipgen.sbf"),
10056 dir="sipgen",
10057 install_dir=os.path.dirname(cfg.sip_bin),
10058+ installs=gen_installs,
10059 console=1,
10060 warnings=1,
10061 universal=opts.universal,
10062@@ -406,7 +425,7 @@
10063 deployment_target=opts.deployment_target
10064 ).generate()
10065
10066- # The code generator installs.
10067+ # The implied code generator installs.
10068 if not opts.no_tools:
10069 sip_dir, sip_exe = os.path.split(cfg.sip_bin)
10070 if sys.platform == 'win32':
10071@@ -417,18 +436,18 @@
10072 # The module installs.
10073 module_installs=[]
10074
10075- if not opts.no_tools:
10076- module_installs.append(
10077- (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
10078-
10079 if opts.pyi:
10080 module_installs.append((os.path.join(src_dir, 'sip.pyi'), pyi_dir))
10081
10082 all_installs.extend(module_installs)
10083
10084 if not opts.no_module:
10085- mod_ext = '.pyd' if sys.platform == 'win32' else '.so'
10086- all_installs.append(('sip' + mod_ext, cfg.sip_module_dir))
10087+ if sys.platform == 'win32':
10088+ mod = 'sip.lib' if opts.static else 'sip.pyd'
10089+ else:
10090+ mod = 'libsip.a' if opts.static else 'sip.so'
10091+
10092+ all_installs.append((mod, sip_module_dest_dir))
10093
10094 if opts.use_qmake:
10095 sipconfig.inform("Creating sip module .pro file...")
10096@@ -453,7 +472,11 @@
10097
10098 if sip_module_name != 'sip':
10099 pro.write("\n")
10100- pro.write('DEFINES += SIP_MODULE_NAME=\\\\\\"%s\\\\\\"\n' % sip_module_name)
10101+ pro.write('DEFINES += SIP_MODULE_NAME=%s\n' % sip_module_name)
10102+
10103+ base_name = sip_module_name.split('.')[-1]
10104+ if base_name != 'sip':
10105+ pro.write('DEFINES += SIP_MODULE_BASENAME=%s\n' % base_name)
10106
10107 if not opts.static:
10108 # These only need to be correct for Windows.
10109@@ -485,7 +508,7 @@
10110 """ % (debug_suffix, link_lib_dir))
10111
10112 pro.write("\n")
10113- pro.write("target.path = %s\n" % cfg.sip_module_dir)
10114+ pro.write("target.path = %s\n" % sip_module_dest_dir)
10115 pro.write("INSTALLS += target\n")
10116
10117 if opts.pyi:
10118@@ -494,12 +517,6 @@
10119 pro.write("sip_pyi.path = %s\n" % pyi_dir)
10120 pro.write("INSTALLS += sip_pyi\n")
10121
10122- if not opts.no_tools:
10123- pro.write("\n")
10124- pro.write("sip_h.files = sip.h\n")
10125- pro.write("sip_h.path = %s\n" % cfg.sip_inc_dir)
10126- pro.write("INSTALLS += sip_h\n")
10127-
10128 c_sources = get_sources("siplib", "*.c")
10129 cpp_sources = get_sources("siplib", "*.cpp")
10130 pro.write("\n")
10131@@ -521,7 +538,7 @@
10132 configuration=cfg,
10133 build_file=os.path.join(src_dir, "siplib", "siplib.sbf"),
10134 dir="siplib",
10135- install_dir=cfg.sip_module_dir,
10136+ install_dir=sip_module_dest_dir,
10137 installs=module_installs,
10138 console=1,
10139 warnings=1,
10140@@ -533,8 +550,11 @@
10141 )
10142
10143 if sip_module_name != 'sip':
10144- makefile.DEFINES.append(
10145- 'SIP_MODULE_NAME=\\"%s\\"' % sip_module_name)
10146+ makefile.DEFINES.append('SIP_MODULE_NAME=%s' % sip_module_name)
10147+
10148+ base_name = sip_module_name.split('.')[-1]
10149+ if base_name != 'sip':
10150+ makefile.DEFINES.append('SIP_MODULE_BASENAME=%s' % base_name)
10151
10152 if src_dir != build_dir:
10153 src_siplib_dir = os.path.join(src_dir, "siplib")
10154@@ -908,7 +928,7 @@
10155 global plat_bin_dir, plat_py_conf_inc_dir, plat_py_inc_dir
10156 global plat_py_lib_dir, plat_py_site_dir, plat_sip_dir
10157 global sip_bin_dir, sip_inc_dir, sip_root_dir, sip_module_dir, sip_sip_dir
10158- global pyi_dir
10159+ global sip_module_dest_dir, sip_module_name, pyi_dir
10160
10161 # Set defaults.
10162 sip_bin_dir = plat_bin_dir
10163@@ -941,7 +961,9 @@
10164 if opts.destdir is not None:
10165 sip_root_dir = opts.destdir
10166
10167- global sip_module_name
10168+ # The module directory might have been set in a configuration file.
10169+ if not sip_module_dir:
10170+ sip_module_dir = sip_root_dir
10171
10172 sip_module_name = opts.sip_module
10173
10174@@ -949,10 +971,10 @@
5 10175
6 if len(module_path) > 1: 10176 if len(module_path) > 1:
7 del module_path[-1] 10177 del module_path[-1]
8- module_path.insert(0, sip_root_dir) 10178- module_path.insert(0, sip_root_dir)
10179- sip_module_dir = os.path.join(*module_path)
9+ module_path.insert(0, sip_module_dir) 10180+ module_path.insert(0, sip_module_dir)
10 sip_module_dir = os.path.join(*module_path) 10181+ sip_module_dest_dir = os.path.join(*module_path)
11 else: 10182 else:
12- sip_module_dir = sip_root_dir 10183- sip_module_dir = sip_root_dir
13+ sip_module_dir = sip_module_dir 10184+ sip_module_dest_dir = sip_module_dir
14 10185
15 # Override from the command line. 10186 # Override from the command line.
16 if opts.platform is not None: 10187 if opts.platform is not None:
10188@@ -970,7 +992,7 @@
10189 if opts.pyidir is not None:
10190 pyi_dir = opts.pyidir
10191 else:
10192- pyi_dir = sip_module_dir
10193+ pyi_dir = sip_module_dest_dir
10194
10195 # Get the platform specific macros for building.
10196 macros = siputils.parse_build_macros(
10197diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/configure.py.in sip/configure.py.in
10198--- ./sip-4.19.12.orig/configure.py.in 1969-12-31 19:00:00.000000000 -0500
10199+++ sip/configure.py.in 2018-09-18 18:00:57.923048048 -0400
10200@@ -0,0 +1,1031 @@
10201+# This script handles the SIP configuration and generates the Makefiles.
10202+#
10203+# Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
10204+#
10205+# This file is part of SIP.
10206+#
10207+# This copy of SIP is licensed for use under the terms of the SIP License
10208+# Agreement. See the file LICENSE for more details.
10209+#
10210+# This copy of SIP may also used under the terms of the GNU General Public
10211+# License v2 or v3 as published by the Free Software Foundation which can be
10212+# found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
10213+#
10214+# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
10215+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10216+
10217+
10218+import sys
10219+import os
10220+import glob
10221+import optparse
10222+from distutils import sysconfig
10223+
10224+try:
10225+ from importlib import invalidate_caches
10226+except ImportError:
10227+ invalidate_caches = lambda: None
10228+
10229+import siputils
10230+
10231+
10232+# Initialise the globals.
10233+sip_version = 0x@RM_HEXVERSION@
10234+sip_version_str = "@RM_RELEASE@"
10235+py_version = sys.hexversion >> 8
10236+py_platform = sys.platform
10237+plat_py_site_dir = None
10238+plat_py_inc_dir = None
10239+plat_py_venv_inc_dir = None
10240+plat_py_conf_inc_dir = None
10241+plat_py_lib_dir = None
10242+plat_sip_dir = None
10243+plat_bin_dir = None
10244+platform_specs = []
10245+sip_bin_dir = ''
10246+sip_inc_dir = ''
10247+sip_root_dir = ''
10248+sip_module_dir = ''
10249+sip_module_dest_dir = ''
10250+sip_sip_dir = ''
10251+pyi_dir = ''
10252+sysroot = ''
10253+src_dir = os.path.dirname(os.path.abspath(__file__))
10254+sip_module_name = None
10255+build_platform = None
10256+
10257+# Constants.
10258+DEFAULT_MACOSX_ARCH = 'i386 ppc'
10259+MACOSX_SDK_DIRS = ('/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs', '/Developer/SDKs')
10260+
10261+# The names of build macros extracted from the platform specific configuration
10262+# files.
10263+build_macro_names = [
10264+ "DEFINES", "CONFIG",
10265+ "CC",
10266+ "CFLAGS",
10267+ "CFLAGS_RELEASE", "CFLAGS_DEBUG",
10268+ "CFLAGS_CONSOLE", "CFLAGS_SHLIB", "CFLAGS_APP", "CFLAGS_THREAD",
10269+ "CFLAGS_MT", "CFLAGS_MT_DBG", "CFLAGS_MT_DLL", "CFLAGS_MT_DLLDBG",
10270+ "CFLAGS_EXCEPTIONS_ON", "CFLAGS_EXCEPTIONS_OFF",
10271+ "CFLAGS_RTTI_ON", "CFLAGS_RTTI_OFF",
10272+ "CFLAGS_STL_ON", "CFLAGS_STL_OFF",
10273+ "CFLAGS_WARN_ON", "CFLAGS_WARN_OFF",
10274+ "CHK_DIR_EXISTS", "COPY",
10275+ "CXX",
10276+ "CXXFLAGS",
10277+ "CXXFLAGS_RELEASE", "CXXFLAGS_DEBUG",
10278+ "CXXFLAGS_CONSOLE", "CXXFLAGS_SHLIB", "CXXFLAGS_APP", "CXXFLAGS_THREAD",
10279+ "CXXFLAGS_MT", "CXXFLAGS_MT_DBG", "CXXFLAGS_MT_DLL", "CXXFLAGS_MT_DLLDBG",
10280+ "CXXFLAGS_EXCEPTIONS_ON", "CXXFLAGS_EXCEPTIONS_OFF",
10281+ "CXXFLAGS_RTTI_ON", "CXXFLAGS_RTTI_OFF",
10282+ "CXXFLAGS_STL_ON", "CXXFLAGS_STL_OFF",
10283+ "CXXFLAGS_WARN_ON", "CXXFLAGS_WARN_OFF",
10284+ "DEL_FILE",
10285+ "EXTENSION_SHLIB", "EXTENSION_PLUGIN",
10286+ "INCDIR", "INCDIR_X11", "INCDIR_OPENGL",
10287+ "LIBS_CORE", "LIBS_GUI", "LIBS_NETWORK", "LIBS_OPENGL", "LIBS_WEBKIT",
10288+ "LINK", "LINK_SHLIB", "AIX_SHLIB", "LINK_SHLIB_CMD",
10289+ "LFLAGS", "LFLAGS_CONSOLE", "LFLAGS_CONSOLE_DLL", "LFLAGS_DEBUG",
10290+ "LFLAGS_DLL",
10291+ "LFLAGS_PLUGIN", "LFLAGS_RELEASE", "LFLAGS_SHLIB", "LFLAGS_SONAME",
10292+ "LFLAGS_THREAD", "LFLAGS_WINDOWS", "LFLAGS_WINDOWS_DLL", "LFLAGS_OPENGL",
10293+ "LIBDIR", "LIBDIR_X11", "LIBDIR_OPENGL",
10294+ "LIBS", "LIBS_CONSOLE", "LIBS_RT",
10295+ "LIBS_RTMT", "LIBS_THREAD", "LIBS_WINDOWS", "LIBS_X11",
10296+ "MAKEFILE_GENERATOR",
10297+ "MKDIR",
10298+ "RPATH", "LFLAGS_RPATH",
10299+ "AR", "RANLIB", "LIB", "STRIP"
10300+]
10301+
10302+
10303+def show_platforms():
10304+ """Display the different platform/compilers.
10305+ """
10306+ sys.stdout.write("""
10307+The following platform/compiler configurations are supported:
10308+
10309+""")
10310+
10311+ platform_specs.sort()
10312+ sys.stdout.write(siputils.format(", ".join(platform_specs), leftmargin=2))
10313+ sys.stdout.write("\n\n")
10314+
10315+
10316+def show_macros():
10317+ """Display the different build macros.
10318+ """
10319+ sys.stdout.write("""
10320+The following options may be used to adjust the compiler configuration:
10321+
10322+""")
10323+
10324+ build_macro_names.sort()
10325+ sys.stdout.write(siputils.format(", ".join(build_macro_names), leftmargin=2))
10326+ sys.stdout.write("\n\n")
10327+
10328+
10329+def set_build_platform():
10330+ """ Initialise the build platform. """
10331+
10332+ global build_platform
10333+
10334+ # Set the platform specific default specification.
10335+ platdefaults = {
10336+ "aix": "aix-xlc",
10337+ "bsd": "bsdi-g++",
10338+ "cygwin": "cygwin-g++",
10339+ "darwin": "macx-g++",
10340+ "dgux": "dgux-g++",
10341+ "freebsd": "freebsd-g++",
10342+ "gnu": "hurd-g++",
10343+ "hp-ux": "hpux-acc",
10344+ "irix": "irix-cc",
10345+ "linux": "linux-g++",
10346+ "lynxos": "lynxos-g++",
10347+ "netbsd": "netbsd-g++",
10348+ "openbsd": "openbsd-g++",
10349+ "openunix": "unixware-cc",
10350+ "osf1": "tru64-cxx",
10351+ "qnx": "qnx-g++",
10352+ "reliantunix": "reliant-cds",
10353+ "sco_sv": "sco-cc",
10354+ "sinix": "reliant-cds",
10355+ "sunos5": "solaris-cc",
10356+ "ultrix": "ultrix-g++",
10357+ "unix_sv": "unixware-g++",
10358+ "unixware": "unixware-cc"
10359+ }
10360+
10361+ build_platform = "none"
10362+
10363+ if py_platform == "win32":
10364+ if py_version >= 0x030500:
10365+ build_platform = "win32-msvc2015"
10366+ elif py_version >= 0x030300:
10367+ build_platform = "win32-msvc2010"
10368+ elif py_version >= 0x020600:
10369+ build_platform = "win32-msvc2008"
10370+ elif py_version >= 0x020400:
10371+ build_platform = "win32-msvc.net"
10372+ else:
10373+ build_platform = "win32-msvc"
10374+ else:
10375+ for pd in list(platdefaults.keys()):
10376+ if py_platform[:len(pd)] == pd:
10377+ build_platform = platdefaults[pd]
10378+ break
10379+
10380+
10381+def inform_user():
10382+ """ Tell the user the option values that are going to be used. """
10383+
10384+ if not opts.no_tools:
10385+ siputils.inform("The SIP code generator will be installed in %s." % sip_bin_dir)
10386+ siputils.inform("The sip.h header file will be installed in %s." % sip_inc_dir)
10387+
10388+ if not opts.no_module:
10389+ siputils.inform("The %s module will be installed in %s." % (sip_module_name, sip_module_dest_dir))
10390+
10391+ if opts.pyi:
10392+ siputils.inform("The sip.pyi stub file will be installed in %s." % pyi_dir)
10393+
10394+ if opts.static:
10395+ siputils.inform("The %s module will be built as a static library." % sip_module_name)
10396+
10397+ siputils.inform("The default directory to install .sip files in is %s." % sip_sip_dir)
10398+
10399+ if opts.use_qmake is None:
10400+ siputils.inform("The platform/compiler configuration is %s." % build_platform)
10401+
10402+ if opts.arch:
10403+ siputils.inform("MacOS/X binaries will be created for %s." % (", ".join(opts.arch.split())))
10404+
10405+ if opts.universal:
10406+ siputils.inform("MacOS/X universal binaries will be created using %s." % opts.universal)
10407+
10408+ if opts.deployment_target:
10409+ siputils.inform("MacOS/X deployment target is %s." % opts.deployment_target)
10410+
10411+
10412+def set_platform_directories():
10413+ """ Initialise the global variables relating to platform-specific
10414+ directories.
10415+ """
10416+ global plat_py_site_dir, plat_py_inc_dir, plat_py_venv_inc_dir
10417+ global plat_py_conf_inc_dir, plat_bin_dir, plat_py_lib_dir, plat_sip_dir
10418+
10419+ # We trust distutils for some stuff.
10420+ plat_py_site_dir = sysconfig.get_python_lib(plat_specific=1)
10421+ plat_py_inc_dir = sysconfig.get_python_inc()
10422+ plat_py_venv_inc_dir = sysconfig.get_python_inc(prefix=sys.prefix)
10423+ plat_py_conf_inc_dir = os.path.dirname(sysconfig.get_config_h_filename())
10424+
10425+ if sys.platform == "win32":
10426+ bin_dir = sys.exec_prefix
10427+
10428+ try:
10429+ # Python v3.3 and later.
10430+ base_prefix = sys.base_prefix
10431+
10432+ if sys.exec_prefix != sys.base_exec_prefix:
10433+ bin_dir += '\\Scripts'
10434+
10435+ except AttributeError:
10436+ try:
10437+ # virtualenv for Python v2.
10438+ base_prefix = sys.real_prefix
10439+ bin_dir += '\\Scripts'
10440+
10441+ except AttributeError:
10442+ # We can't detect the base prefix in Python v3 prior to v3.3.
10443+ base_prefix = sys.prefix
10444+
10445+ plat_py_lib_dir = base_prefix + "\\libs"
10446+ plat_bin_dir = bin_dir
10447+ plat_sip_dir = sys.prefix + "\\sip"
10448+ else:
10449+ lib_dir = sysconfig.get_python_lib(plat_specific=1, standard_lib=1)
10450+
10451+ plat_py_lib_dir = lib_dir + "/config"
10452+ plat_bin_dir = sys.exec_prefix + "/bin"
10453+ plat_sip_dir = sys.prefix + "/share/sip"
10454+
10455+
10456+def create_config(module, template, macros):
10457+ """Create the SIP configuration module so that it can be imported by build
10458+ scripts.
10459+
10460+ module is the module file name.
10461+ template is the template file name.
10462+ macros is the dictionary of build macros.
10463+ """
10464+ siputils.inform("Creating %s..." % module)
10465+
10466+ content = {
10467+ "sip_config_args": sys.argv[1:],
10468+ "sip_version": sip_version,
10469+ "sip_version_str": sip_version_str,
10470+ "platform": build_platform,
10471+ "sip_bin": os.path.join(sip_bin_dir, "sip"),
10472+ "sip_inc_dir": sip_inc_dir,
10473+ "sip_root_dir": sip_root_dir,
10474+ "sip_module_dir": sip_module_dir,
10475+ "default_bin_dir": plat_bin_dir,
10476+ "default_mod_dir": plat_py_site_dir,
10477+ "default_sip_dir": sip_sip_dir,
10478+ "py_version": py_version,
10479+ "py_inc_dir": plat_py_inc_dir,
10480+ "py_conf_inc_dir": plat_py_conf_inc_dir,
10481+ "py_lib_dir": plat_py_lib_dir,
10482+ "universal": opts.universal,
10483+ "arch": opts.arch,
10484+ "deployment_target": opts.deployment_target,
10485+ "qt_framework": 0
10486+ }
10487+
10488+ siputils.create_config_module(module, template, content, macros)
10489+
10490+
10491+def create_makefiles(macros):
10492+ """Create the Makefiles.
10493+
10494+ macros is the dictionary of platform specific build macros.
10495+ """
10496+ # Bootstrap. Make sure we get the right one.
10497+ sys.path.insert(0, os.path.curdir)
10498+ invalidate_caches()
10499+ import sipconfig
10500+
10501+ cfg = sipconfig.Configuration()
10502+
10503+ cfg.set_build_macros(macros)
10504+
10505+ all_installs = []
10506+ top_installs = []
10507+ gen_installs = []
10508+ subdirs = []
10509+
10510+ if not opts.no_tools:
10511+ subdirs.append('sipgen')
10512+ top_installs.append(
10513+ (["sipconfig.py", os.path.join(src_dir, "sipdistutils.py")],
10514+ cfg.sip_root_dir))
10515+ gen_installs.append(
10516+ (os.path.join(src_dir, "siplib", "sip.h"), cfg.sip_inc_dir))
10517+
10518+ if not opts.no_module:
10519+ subdirs.append('siplib')
10520+
10521+ all_installs.extend(top_installs)
10522+ all_installs.extend(gen_installs)
10523+
10524+ # The command to run to generate the dist-info directory.
10525+ mk_distinfo = os.path.join(os.path.dirname(os.path.abspath(__file__)),
10526+ 'mk_distinfo.py')
10527+ distinfo_dir = os.path.join(cfg.sip_module_dir,
10528+ '%s-%s.dist-info' % (sip_module_name.replace('.', '_'),
10529+ sip_version_str))
10530+
10531+ if opts.use_qmake:
10532+ run_mk_distinfo = '%s %s \\\"$(INSTALL_ROOT)\\\" %s installed.txt' % (
10533+ sys.executable, mk_distinfo, distinfo_dir)
10534+
10535+ sipconfig.inform("Creating top level .pro file...")
10536+
10537+ pro = open("sip.pro", "w")
10538+
10539+ pro.write("TEMPLATE = subdirs\n")
10540+ pro.write("SUBDIRS = %s\n" % " ".join(subdirs))
10541+
10542+ if top_installs:
10543+ # There will only be one element.
10544+ files, path = top_installs[0]
10545+ pro.write("\n")
10546+ pro.write("build_system.files = %s\n" % " ".join(files))
10547+ pro.write("build_system.path = %s\n" % quote(path))
10548+ pro.write("INSTALLS += build_system\n")
10549+
10550+ if opts.distinfo:
10551+ pro.write("\n")
10552+ pro.write("distinfo.extra = %s\n" % run_mk_distinfo)
10553+ pro.write("distinfo.path = %s\n" % quote(cfg.sip_module_dir))
10554+ pro.write("INSTALLS += distinfo\n")
10555+
10556+ pro.close()
10557+ else:
10558+ run_mk_distinfo = '%s %s "$(DESTDIR)" %s installed.txt' % (
10559+ sys.executable, mk_distinfo, distinfo_dir)
10560+
10561+ sipconfig.inform("Creating top level Makefile...")
10562+
10563+ # Note that mk_distinfo.py won't exist if we are building from the
10564+ # repository.
10565+ if opts.distinfo and os.path.isfile(mk_distinfo):
10566+ top_installs.append((run_mk_distinfo, None))
10567+
10568+ sipconfig.ParentMakefile(
10569+ configuration=cfg,
10570+ subdirs=subdirs,
10571+ installs=top_installs
10572+ ).generate()
10573+
10574+ if opts.use_qmake:
10575+ sipconfig.inform("Creating sip code generator .pro file...")
10576+
10577+ pro = open(os.path.join("sipgen", "sipgen.pro"), "w")
10578+
10579+ pro.write("TEMPLATE = app\n")
10580+ pro.write("TARGET = sip\n")
10581+ pro.write("CONFIG -= qt app_bundle\n")
10582+ pro.write("CONFIG += warn_on exceptions_off console %s\n" % (
10583+ ("debug" if opts.debug else "release")))
10584+
10585+ pro.write("\n")
10586+ pro.write("# Work around QTBUG-39300.\n")
10587+ pro.write("CONFIG -= android_install\n")
10588+
10589+ pro.write("\n")
10590+ pro.write("target.path = %s\n" % os.path.dirname(cfg.sip_bin))
10591+ pro.write("INSTALLS += target\n")
10592+
10593+ c_sources = get_sources("sipgen", "*.c")
10594+ pro.write("\n")
10595+ pro.write("SOURCES = %s\n" % " ".join(
10596+ [qmake_quote(s) for s in c_sources]))
10597+
10598+ headers = get_sources("sipgen", "*.h")
10599+ pro.write("\n")
10600+ pro.write("HEADERS = %s\n" % " ".join(
10601+ [qmake_quote(h) for h in headers]))
10602+
10603+ if gen_installs:
10604+ # There will only be one element.
10605+ files, path = gen_installs[0]
10606+ pro.write("\n")
10607+ pro.write("sip_h.files = %s\n" % " ".join(files))
10608+ pro.write("sip_h.path = %s\n" % quote(path))
10609+ pro.write("INSTALLS += sip_h\n")
10610+
10611+ pro.close()
10612+ else:
10613+ sipconfig.inform("Creating sip code generator Makefile...")
10614+
10615+ sipconfig.ProgramMakefile(
10616+ configuration=cfg,
10617+ build_file=os.path.join(src_dir, "sipgen", "sipgen.sbf"),
10618+ dir="sipgen",
10619+ install_dir=os.path.dirname(cfg.sip_bin),
10620+ installs=gen_installs,
10621+ console=1,
10622+ warnings=1,
10623+ universal=opts.universal,
10624+ arch=opts.arch,
10625+ deployment_target=opts.deployment_target
10626+ ).generate()
10627+
10628+ # The implied code generator installs.
10629+ if not opts.no_tools:
10630+ sip_dir, sip_exe = os.path.split(cfg.sip_bin)
10631+ if sys.platform == 'win32':
10632+ sip_exe += '.exe'
10633+
10634+ all_installs.append((sip_exe, sip_dir))
10635+
10636+ # The module installs.
10637+ module_installs=[]
10638+
10639+ if opts.pyi:
10640+ module_installs.append((os.path.join(src_dir, 'sip.pyi'), pyi_dir))
10641+
10642+ all_installs.extend(module_installs)
10643+
10644+ if not opts.no_module:
10645+ if sys.platform == 'win32':
10646+ mod = 'sip.lib' if opts.static else 'sip.pyd'
10647+ else:
10648+ mod = 'libsip.a' if opts.static else 'sip.so'
10649+
10650+ all_installs.append((mod, sip_module_dest_dir))
10651+
10652+ if opts.use_qmake:
10653+ sipconfig.inform("Creating sip module .pro file...")
10654+
10655+ pro = open(os.path.join("siplib", "siplib.pro"), "w")
10656+
10657+ pro.write("TEMPLATE = lib\n")
10658+ pro.write("TARGET = sip\n")
10659+ pro.write("CONFIG -= qt\n")
10660+ pro.write("CONFIG += warn_on exceptions_off %s %s\n" % (
10661+ ("staticlib" if opts.static else "plugin plugin_bundle"),
10662+ ("debug" if opts.debug else "release")))
10663+
10664+ pro.write("\n")
10665+ pro.write("# Work around QTBUG-39300.\n")
10666+ pro.write("CONFIG -= android_install\n")
10667+
10668+ pro.write("\n")
10669+ pro.write("INCLUDEPATH += %s\n" % cfg.py_inc_dir)
10670+ if cfg.py_conf_inc_dir != cfg.py_inc_dir:
10671+ pro.write("INCLUDEPATH += %s\n" % cfg.py_conf_inc_dir)
10672+
10673+ if sip_module_name != 'sip':
10674+ pro.write("\n")
10675+ pro.write('DEFINES += SIP_MODULE_NAME=%s\n' % sip_module_name)
10676+
10677+ base_name = sip_module_name.split('.')[-1]
10678+ if base_name != 'sip':
10679+ pro.write('DEFINES += SIP_MODULE_BASENAME=%s\n' % base_name)
10680+
10681+ if not opts.static:
10682+ # These only need to be correct for Windows.
10683+ debug_suffix = "_d" if opts.debug else ""
10684+ link_lib_dir = quote("-L" + cfg.py_lib_dir)
10685+
10686+ pro.write("""
10687+win32 {
10688+ PY_MODULE = sip%s.pyd
10689+ PY_MODULE_SRC = $(DESTDIR_TARGET)
10690+
10691+ LIBS += %s
10692+} else {
10693+ PY_MODULE = sip.so
10694+
10695+ macx {
10696+ PY_MODULE_SRC = $(TARGET).plugin/Contents/MacOS/$(TARGET)
10697+
10698+ QMAKE_LFLAGS += "-undefined dynamic_lookup"
10699+ } else {
10700+ PY_MODULE_SRC = $(TARGET)
10701+ }
10702+}
10703+
10704+QMAKE_POST_LINK = $(COPY_FILE) $$PY_MODULE_SRC $$PY_MODULE
10705+
10706+target.CONFIG = no_check_exist
10707+target.files = $$PY_MODULE
10708+""" % (debug_suffix, link_lib_dir))
10709+
10710+ pro.write("\n")
10711+ pro.write("target.path = %s\n" % sip_module_dest_dir)
10712+ pro.write("INSTALLS += target\n")
10713+
10714+ if opts.pyi:
10715+ pro.write("\n")
10716+ pro.write("sip_pyi.files = sip.pyi\n")
10717+ pro.write("sip_pyi.path = %s\n" % pyi_dir)
10718+ pro.write("INSTALLS += sip_pyi\n")
10719+
10720+ c_sources = get_sources("siplib", "*.c")
10721+ cpp_sources = get_sources("siplib", "*.cpp")
10722+ pro.write("\n")
10723+ pro.write("SOURCES = %s\n" % " ".join(
10724+ [qmake_quote(s) for s in c_sources + cpp_sources]))
10725+
10726+ headers = get_sources("siplib", "*.h")
10727+ pro.write("\n")
10728+ pro.write("HEADERS = %s\n" % " ".join(
10729+ [qmake_quote(h) for h in headers]))
10730+
10731+ pro.close()
10732+ else:
10733+ sipconfig.inform("Creating sip module Makefile...")
10734+
10735+ build_dir = os.getcwd()
10736+
10737+ makefile = sipconfig.ModuleMakefile(
10738+ configuration=cfg,
10739+ build_file=os.path.join(src_dir, "siplib", "siplib.sbf"),
10740+ dir="siplib",
10741+ install_dir=sip_module_dest_dir,
10742+ installs=module_installs,
10743+ console=1,
10744+ warnings=1,
10745+ static=opts.static,
10746+ debug=opts.debug,
10747+ universal=opts.universal,
10748+ arch=opts.arch,
10749+ deployment_target=opts.deployment_target
10750+ )
10751+
10752+ if sip_module_name != 'sip':
10753+ makefile.DEFINES.append('SIP_MODULE_NAME=%s' % sip_module_name)
10754+
10755+ base_name = sip_module_name.split('.')[-1]
10756+ if base_name != 'sip':
10757+ makefile.DEFINES.append('SIP_MODULE_BASENAME=%s' % base_name)
10758+
10759+ if src_dir != build_dir:
10760+ src_siplib_dir = os.path.join(src_dir, "siplib")
10761+ makefile.extra_include_dirs.append(src_siplib_dir)
10762+ makefile.extra_source_dirs.append(src_siplib_dir)
10763+
10764+ makefile.generate()
10765+
10766+ # Create the file containing all installed files.
10767+ if opts.distinfo:
10768+ installed = open('installed.txt', 'w')
10769+
10770+ for sources, dst in all_installs:
10771+ if not isinstance(sources, (list, tuple)):
10772+ sources = [sources]
10773+
10774+ for src in sources:
10775+ installed.write(
10776+ os.path.join(dst, os.path.basename(src)) + '\n')
10777+
10778+ installed.close()
10779+
10780+
10781+def get_sources(sources_dir, ext):
10782+ """ Get the quoted files with the specified extension from a directory. """
10783+
10784+ return [quote(f) for f in glob.glob(os.path.join(src_dir, sources_dir, ext))]
10785+
10786+
10787+def quote(path):
10788+ """ Return a path that is quoted if necessary. """
10789+
10790+ if ' ' in path:
10791+ path = '"' + path + '"'
10792+
10793+ return path
10794+
10795+
10796+def qmake_quote(path):
10797+ """ Return a path quoted for qmake if it contains spaces. path is the
10798+ path.
10799+ """
10800+
10801+ if ' ' in path:
10802+ path = '$$quote(%s)' % path
10803+
10804+ return path
10805+
10806+
10807+# Look out for recursive definitions.
10808+_extrapolating = []
10809+
10810+def _get_configuration_value(config, name, default=None):
10811+ """ Get a configuration value while extrapolating. """
10812+
10813+ value = config.get(name)
10814+ if value is None:
10815+ if default is None:
10816+ siputils.error("Configuration file references non-existent name '%s'." % name)
10817+
10818+ return default
10819+
10820+ parts = value.split('%(', 1)
10821+ while len(parts) == 2:
10822+ prefix, tail = parts
10823+
10824+ parts = tail.split(')', 1)
10825+ if len(parts) != 2:
10826+ siputils.error("Configuration file contains unterminated extrapolated name '%s'." % tail)
10827+
10828+ xtra_name, suffix = parts
10829+
10830+ if xtra_name in _extrapolating:
10831+ siputils.error("Configuration file contains a recursive reference to '%s'." % xtra_name)
10832+
10833+ _extrapolating.append(xtra_name)
10834+ xtra_value = _get_configuration_value(config, xtra_name)
10835+ _extrapolating.pop()
10836+
10837+ value = prefix + xtra_value + suffix
10838+
10839+ parts = value.split('%(', 1)
10840+
10841+ return value
10842+
10843+
10844+def update_from_configuration_file(config_file):
10845+ """ Update a number of globals from values read from a configuration file.
10846+ """
10847+
10848+ siputils.inform("Reading configuration from %s..." % config_file)
10849+
10850+ config = {}
10851+
10852+ # Read the file into the dict.
10853+ cfg = open(config_file)
10854+ line_nr = 0
10855+
10856+ for l in cfg:
10857+ line_nr += 1
10858+
10859+ # Strip comments and blank lines.
10860+ l = l.split('#')[0].strip()
10861+ if l == '':
10862+ continue
10863+
10864+ parts = l.split('=', 1)
10865+ if len(parts) == 2:
10866+ name = parts[0].strip()
10867+ value = parts[1].strip()
10868+ else:
10869+ name = value = ''
10870+
10871+ if name == '' or value == '':
10872+ siputils.error("%s:%d: Invalid line." % (config_file, line_nr))
10873+
10874+ config[name] = value
10875+ last_name = name
10876+
10877+ cfg.close()
10878+
10879+ # Enforce the presets.
10880+ version = siputils.version_to_string(py_version).split('.')
10881+ config['py_major'] = version[0]
10882+ config['py_minor'] = version[1]
10883+ config['sysroot'] = sysroot
10884+
10885+ # Override the relevant values.
10886+ global py_platform, plat_py_conf_inc_dir, plat_py_inc_dir, plat_py_lib_dir
10887+ global sip_bin_dir, sip_inc_dir, sip_module_dir, sip_sip_dir
10888+
10889+ py_platform = _get_configuration_value(config, 'py_platform', py_platform)
10890+ plat_py_inc_dir = _get_configuration_value(config, 'py_inc_dir',
10891+ plat_py_inc_dir)
10892+ plat_py_lib_dir = _get_configuration_value(config, 'py_pylib_dir',
10893+ plat_py_lib_dir)
10894+
10895+ # The pyconfig.h directory defaults to the Python.h directory.
10896+ plat_py_conf_inc_dir = _get_configuration_value(config, 'py_conf_inc_dir',
10897+ plat_py_inc_dir)
10898+
10899+ sip_bin_dir = _get_configuration_value(config, 'sip_bin_dir', sip_bin_dir)
10900+ sip_module_dir = _get_configuration_value(config, 'sip_module_dir',
10901+ sip_module_dir)
10902+
10903+ # Note that this defaults to any 'py_inc_dir' specified in the
10904+ # configuration file.
10905+ sip_inc_dir = _get_configuration_value(config, 'sip_inc_dir',
10906+ plat_py_inc_dir)
10907+
10908+ # Note that this is only used when creating sipconfig.py.
10909+ sip_sip_dir = _get_configuration_value(config, 'sip_sip_dir', sip_sip_dir)
10910+
10911+
10912+def create_optparser(sdk_dir):
10913+ """Create the parser for the command line.
10914+ """
10915+ def store_abspath(option, opt_str, value, parser):
10916+ setattr(parser.values, option.dest, os.path.abspath(value))
10917+
10918+ def store_abspath_dir(option, opt_str, value, parser):
10919+ if not os.path.isdir(value):
10920+ raise optparse.OptionValueError("'%s' is not a directory" % value)
10921+ setattr(parser.values, option.dest, os.path.abspath(value))
10922+
10923+ def store_abspath_file(option, opt_str, value, parser):
10924+ if not os.path.isfile(value):
10925+ raise optparse.OptionValueError("'%s' is not a file" % value)
10926+ setattr(parser.values, option.dest, os.path.abspath(value))
10927+
10928+ def store_version(option, opt_str, value, parser):
10929+ version = siputils.version_from_string(value)
10930+ if version is None:
10931+ raise optparse.OptionValueError(
10932+ "'%s' is not a valid version number" % value)
10933+ setattr(parser.values, option.dest, version)
10934+
10935+ p = optparse.OptionParser(usage="python %prog [opts] [macro=value] "
10936+ "[macro+=value]", version=sip_version_str)
10937+
10938+ # Note: we don't use %default to be compatible with Python 2.3.
10939+ p.add_option("-k", "--static", action="store_true", default=False,
10940+ dest="static", help="build the SIP module as a static library")
10941+ p.add_option("-p", "--platform", action="store", type="string",
10942+ metavar="PLATFORM", dest="platform", help="the platform/compiler "
10943+ "configuration [default: %s]" % build_platform)
10944+ p.add_option("-u", "--debug", action="store_true", default=False,
10945+ help="build with debugging symbols")
10946+ p.add_option("--sip-module", action="store", default="sip", type="string",
10947+ metavar="NAME", dest="sip_module", help="the package.module name "
10948+ "of the sip module [default: sip]")
10949+ p.add_option("--configuration", dest='config_file', type='string',
10950+ action='callback', callback=store_abspath_file, metavar="FILE",
10951+ help="FILE contains the target configuration")
10952+ p.add_option("--target-py-version", dest='target_py_version',
10953+ type='string', action='callback', callback=store_version,
10954+ metavar="VERSION",
10955+ help="the major.minor version of the target Python [default: "
10956+ "%s]" % siputils.version_to_string(py_version, parts=2))
10957+ p.add_option("--sysroot", dest='sysroot', type='string', action='callback',
10958+ callback=store_abspath_dir, metavar="DIR",
10959+ help="DIR is the target system root directory")
10960+ p.add_option("--no-module", action="store_true", default=False,
10961+ dest="no_module", help="disable the installation of the sip "
10962+ "module [default: enabled]")
10963+ p.add_option("--no-tools", action="store_true", default=False,
10964+ dest="no_tools", help="disable the building of the code generator "
10965+ "and the installation of the build system [default: enabled]")
10966+ p.add_option("--use-qmake", action="store_true", default=False,
10967+ dest="use_qmake", help="generate qmake .pro files instead of "
10968+ "Makefiles")
10969+
10970+ if sys.platform == 'darwin':
10971+ # Get the latest SDK to use as the default.
10972+ sdks = glob.glob(sdk_dir + '/MacOSX*.sdk')
10973+ if len(sdks) > 0:
10974+ sdks.sort()
10975+ _, default_sdk = os.path.split(sdks[-1])
10976+ else:
10977+ default_sdk = 'MacOSX10.4u.sdk'
10978+
10979+ g = optparse.OptionGroup(p, title="MacOS X Configuration")
10980+ g.add_option("--arch", action="append", default=[], dest="arch",
10981+ choices=["i386", "x86_64", "ppc"],
10982+ help="build for architecture ARCH")
10983+ g.add_option("--deployment-target", action="store", default='',
10984+ metavar="VERSION", dest="deployment_target",
10985+ help="set the value of the MACOSX_DEPLOYMENT_TARGET "
10986+ "environment variable in generated Makefiles")
10987+ g.add_option("-n", "--universal", action="store_true", default=False,
10988+ dest="universal",
10989+ help="build the SIP code generator and module as universal "
10990+ "binaries")
10991+ g.add_option("-s", "--sdk", action="store", default=default_sdk,
10992+ type="string", metavar="SDK", dest="sdk",
10993+ help="the name of the SDK used when building universal "
10994+ "binaries [default: %s]" % default_sdk)
10995+ p.add_option_group(g)
10996+
10997+ # Querying.
10998+ g = optparse.OptionGroup(p, title="Query")
10999+ g.add_option("--show-platforms", action="store_true", default=False,
11000+ dest="show_platforms", help="show the list of supported "
11001+ "platform/compiler configurations")
11002+ g.add_option("--show-build-macros", action="store_true", default=False,
11003+ dest="show_build_macros", help="show the list of supported build "
11004+ "macros")
11005+ p.add_option_group(g)
11006+
11007+ # Installation.
11008+ g = optparse.OptionGroup(p, title="Installation")
11009+ g.add_option("-b", "--bindir", action="callback", type="string",
11010+ metavar="DIR", dest="sipbindir", callback=store_abspath,
11011+ help="where the SIP code generator will be installed [default: "
11012+ "%s]" % plat_bin_dir)
11013+ g.add_option("-d", "--destdir", action="callback", type="string",
11014+ metavar="DIR", dest="destdir", callback=store_abspath,
11015+ help="where the SIP module will be installed [default: "
11016+ "%s]" % plat_py_site_dir)
11017+ g.add_option("-e", "--incdir", action="callback", type="string",
11018+ metavar="DIR", dest="sipincdir", callback=store_abspath,
11019+ help="where the SIP header file will be installed [default: "
11020+ "%s]" % plat_py_venv_inc_dir)
11021+ g.add_option("-v", "--sipdir", action="callback", type="string",
11022+ metavar="DIR", dest="sipsipdir", callback=store_abspath,
11023+ help="where .sip files are normally installed [default: "
11024+ "%s]" % plat_sip_dir)
11025+ g.add_option("--no-dist-info", action="store_false", default=True,
11026+ dest="distinfo",
11027+ help="do not install the dist-info directory")
11028+ g.add_option("--no-stubs", "--no-pyi", action="store_false", default=True,
11029+ dest="pyi",
11030+ help="do not install the sip.pyi stub file")
11031+ g.add_option("--stubsdir", "--pyidir", action="callback", type="string",
11032+ metavar="DIR", dest="pyidir", callback=store_abspath,
11033+ help="where the sip.pyi stub file will be installed [default: "
11034+ "%s]" % plat_py_site_dir)
11035+ p.add_option_group(g)
11036+
11037+ return p
11038+
11039+
11040+def main(argv):
11041+ """Create the configuration module module.
11042+
11043+ argv is the list of command line arguments.
11044+ """
11045+ siputils.inform("This is SIP %s for Python %s on %s." % (sip_version_str, sys.version.split()[0], sys.platform))
11046+
11047+ global py_version, build_platform
11048+
11049+ if py_version < 0x020300:
11050+ siputils.error("This version of SIP requires Python v2.3 or later.")
11051+
11052+ # Basic initialisation.
11053+ set_platform_directories()
11054+ set_build_platform()
11055+
11056+ # Build up the list of valid specs.
11057+ for s in os.listdir(os.path.join(src_dir, "specs")):
11058+ platform_specs.append(s)
11059+
11060+ # Determine the directory containing the default OS/X SDK.
11061+ if sys.platform == 'darwin':
11062+ for sdk_dir in MACOSX_SDK_DIRS:
11063+ if os.path.isdir(sdk_dir):
11064+ break
11065+ else:
11066+ sdk_dir = MACOSX_SDK_DIRS[0]
11067+ else:
11068+ sdk_dir = ''
11069+
11070+ # Parse the command line.
11071+ global opts
11072+
11073+ p = create_optparser(sdk_dir)
11074+ opts, args = p.parse_args()
11075+
11076+ # Override defaults that affect subsequent configuration.
11077+ if opts.target_py_version is not None:
11078+ py_version = opts.target_py_version
11079+
11080+ if opts.sysroot is not None:
11081+ global sysroot
11082+ sysroot = opts.sysroot
11083+
11084+ # Make sure MacOS specific options get initialised.
11085+ if sys.platform != 'darwin':
11086+ opts.universal = ''
11087+ opts.arch = []
11088+ opts.sdk = ''
11089+ opts.deployment_target = ''
11090+
11091+ # Handle the query options.
11092+ if opts.show_platforms or opts.show_build_macros:
11093+ if opts.show_platforms:
11094+ show_platforms()
11095+
11096+ if opts.show_build_macros:
11097+ show_macros()
11098+
11099+ sys.exit()
11100+
11101+ # Convert the list 'arch' option to a string. Multiple architectures
11102+ # imply a universal binary.
11103+ if len(opts.arch) > 1:
11104+ opts.universal = True
11105+
11106+ opts.arch = ' '.join(opts.arch)
11107+
11108+ # Convert the boolean 'universal' option to a string.
11109+ if opts.universal:
11110+ if '/' in opts.sdk:
11111+ opts.universal = os.path.abspath(opts.sdk)
11112+ else:
11113+ opts.universal = sdk_dir + '/' + opts.sdk
11114+
11115+ if not os.path.isdir(opts.universal):
11116+ siputils.error("Unable to find the SDK directory %s. Use the --sdk flag to specify the name of the SDK or its full path." % opts.universal)
11117+
11118+ if opts.arch == '':
11119+ opts.arch = DEFAULT_MACOSX_ARCH
11120+ else:
11121+ opts.universal = ''
11122+
11123+ # No sip module also implies no stubs.
11124+ if opts.no_module:
11125+ opts.pyi = False
11126+
11127+ # Apply the overrides from any configuration file.
11128+ global plat_bin_dir, plat_py_conf_inc_dir, plat_py_inc_dir
11129+ global plat_py_lib_dir, plat_py_site_dir, plat_sip_dir
11130+ global sip_bin_dir, sip_inc_dir, sip_root_dir, sip_module_dir, sip_sip_dir
11131+ global sip_module_dest_dir, sip_module_name, pyi_dir
11132+
11133+ # Set defaults.
11134+ sip_bin_dir = plat_bin_dir
11135+ sip_inc_dir = plat_py_venv_inc_dir
11136+ sip_root_dir = plat_py_site_dir
11137+ sip_sip_dir = plat_sip_dir
11138+
11139+ if opts.config_file is not None:
11140+ update_from_configuration_file(opts.config_file)
11141+ elif sysroot != '':
11142+ def apply_sysroot(d):
11143+ if d.startswith(sys.prefix):
11144+ d = sysroot + d[len(sys.prefix):]
11145+
11146+ return d
11147+
11148+ plat_bin_dir = apply_sysroot(plat_bin_dir)
11149+ plat_py_conf_inc_dir = apply_sysroot(plat_py_conf_inc_dir)
11150+ plat_py_inc_dir = apply_sysroot(plat_py_inc_dir)
11151+ plat_py_lib_dir = apply_sysroot(plat_py_lib_dir)
11152+ plat_py_site_dir = apply_sysroot(plat_py_site_dir)
11153+ plat_sip_dir = apply_sysroot(plat_sip_dir)
11154+
11155+ sip_bin_dir = apply_sysroot(sip_bin_dir)
11156+ sip_inc_dir = apply_sysroot(sip_inc_dir)
11157+ sip_root_dir = apply_sysroot(sip_root_dir)
11158+ sip_sip_dir = apply_sysroot(sip_sip_dir)
11159+
11160+ # Fix the name of the sip module.
11161+ if opts.destdir is not None:
11162+ sip_root_dir = opts.destdir
11163+
11164+ # The module directory might have been set in a configuration file.
11165+ if not sip_module_dir:
11166+ sip_module_dir = sip_root_dir
11167+
11168+ sip_module_name = opts.sip_module
11169+
11170+ module_path = sip_module_name.split(".")
11171+
11172+ if len(module_path) > 1:
11173+ del module_path[-1]
11174+ module_path.insert(0, sip_module_dir)
11175+ sip_module_dest_dir = os.path.join(*module_path)
11176+ else:
11177+ sip_module_dest_dir = sip_module_dir
11178+
11179+ # Override from the command line.
11180+ if opts.platform is not None:
11181+ build_platform = opts.platform
11182+
11183+ if opts.sipbindir is not None:
11184+ sip_bin_dir = opts.sipbindir
11185+
11186+ if opts.sipincdir is not None:
11187+ sip_inc_dir = opts.sipincdir
11188+
11189+ if opts.sipsipdir is not None:
11190+ sip_sip_dir = opts.sipsipdir
11191+
11192+ if opts.pyidir is not None:
11193+ pyi_dir = opts.pyidir
11194+ else:
11195+ pyi_dir = sip_module_dest_dir
11196+
11197+ # Get the platform specific macros for building.
11198+ macros = siputils.parse_build_macros(
11199+ os.path.join(src_dir, "specs", build_platform), build_macro_names,
11200+ args)
11201+
11202+ if macros is None:
11203+ siputils.error("Unsupported macro name specified. Use the --show-build-macros flag to see a list of supported macros.")
11204+ sys.exit(2)
11205+
11206+ # Tell the user what's been found.
11207+ inform_user()
11208+
11209+ # Install the configuration module.
11210+ create_config("sipconfig.py", os.path.join(src_dir, "siputils.py"),
11211+ macros)
11212+
11213+ # Create the Makefiles.
11214+ create_makefiles(macros)
11215+
11216+
11217+###############################################################################
11218+# The script starts here.
11219+###############################################################################
11220+
11221+if __name__ == "__main__":
11222+ try:
11223+ main(sys.argv)
11224+ except SystemExit:
11225+ raise
11226+ except:
11227+ sys.stderr.write(
11228+"""An internal error occured. Please report all the output from the program,
11229+including the following traceback, to support@riverbankcomputing.com.
11230+""")
11231+ raise
11232diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/METADATA.in sip/METADATA.in
11233--- ./sip-4.19.12.orig/METADATA.in 1969-12-31 19:00:00.000000000 -0500
11234+++ sip/METADATA.in 2018-09-18 17:52:23.267544161 -0400
11235@@ -0,0 +1,81 @@
11236+Metadata-Version: 1.1
11237+Name: PyQt5_sip
11238+Version: @RB_VERSION@
11239+Summary: Python extension module support for PyQt5
11240+Home-page: https://www.riverbankcomputing.com/software/sip/
11241+Author: Riverbank Computing Limited
11242+Author-email: info@riverbankcomputing.com
11243+Platform: UNIX
11244+Platform: OS X
11245+Platform: Windows
11246+Platform: iOS
11247+Platform: Android
11248+
11249+SIP - A Python Extension Module Generator for C and C++ Libraries
11250+=================================================================
11251+
11252+What is SIP?
11253+------------
11254+
11255+One of the features of Python that makes it so powerful is the ability to take
11256+existing libraries, written in C or C++, and make them available as Python
11257+extension modules. Such extension modules are often called bindings for the
11258+library.
11259+
11260+SIP is a tool that makes it very easy to create Python bindings for C and C++
11261+libraries. It was originally developed to create PyQt, the Python bindings for
11262+the Qt toolkit, but can be used to create bindings for any C or C++ library.
11263+
11264+SIP comprises a code generator and a Python module. The code generator
11265+processes a set of specification files and generates C or C++ code which is
11266+then compiled to create the bindings extension module. The Python module
11267+provides support functions to the automatically generated code. Normally a
11268+package containing SIP generated bindings includes a private copy of the
11269+Python module.
11270+
11271+The specification files contain a description of the interface of the C or C++
11272+library, i.e. the classes, methods, functions and variables. The format of a
11273+specification file is almost identical to a C or C++ header file, so much so
11274+that the easiest way of creating a specification file is to edit the
11275+corresponding header file.
11276+
11277+SIP makes it easy to exploit existing C or C++ libraries in a productive
11278+interpretive programming environment. SIP also makes it easy to take a Python
11279+application (maybe a prototype) and selectively implement parts of the
11280+application (maybe for performance reasons) in C or C++.
11281+
11282+
11283+Author
11284+------
11285+
11286+SIP is copyright (c) Riverbank Computing Limited. Its homepage is
11287+https://www.riverbankcomputing.com/software/sip/.
11288+
11289+Support may be obtained from the PyQt mailing list at
11290+https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
11291+
11292+
11293+License
11294+-------
11295+
11296+SIP is released under the GPL v2, GPL v3 licenses, and under a license similar
11297+to the BSD license.
11298+
11299+
11300+Installation
11301+------------
11302+
11303+SIP source packages can be dowloaded from
11304+https://www.riverbankcomputing.com/software/sip/download/.
11305+
11306+Wheels containing the private copy of the Python module for PyQt5 for 32 and
11307+64-bit Windows, 64-bit macOS and 64-bit Linux can be installed from PyPI::
11308+
11309+ pip3 install PyQt5_sip
11310+
11311+
11312+Documentation
11313+-------------
11314+
11315+The documentation for the latest release can be found
11316+`here <http://pyqt.sourceforge.net/Docs/sip4/>`__.
11317diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/mk_distinfo.py sip/mk_distinfo.py
11318--- ./sip-4.19.12.orig/mk_distinfo.py 2018-07-04 12:00:06.000000000 -0400
11319+++ sip/mk_distinfo.py 1969-12-31 19:00:00.000000000 -0500
11320@@ -1,120 +0,0 @@
11321-# This script handles the creation of the PEP 376 .dist-info directory for a
11322-# package.
11323-#
11324-# Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
11325-#
11326-# This script is distributed under the terms of the GNU General Public License
11327-# v3 as published by the Free Software Foundation.
11328-#
11329-# This script is supplied WITHOUT ANY WARRANTY; without even the implied
11330-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11331-
11332-
11333-import base64
11334-import hashlib
11335-import os
11336-import shutil
11337-import sys
11338-
11339-
11340-def error(message):
11341- """ Display an error message and terminate. """
11342-
11343- sys.stderr.write(message + '\n')
11344- sys.exit(1)
11345-
11346-
11347-# Parse the command line.
11348-if len(sys.argv) != 4:
11349- error("usage: {0} prefix dist-info installed".format(sys.argv[0]))
11350-
11351-prefix_dir = sys.argv[1]
11352-distinfo_dir = sys.argv[2]
11353-installed_fn = sys.argv[3]
11354-
11355-# Read the list of installed files.
11356-installed_f = open(installed_fn)
11357-installed = installed_f.read().strip().split('\n')
11358-installed_f.close()
11359-
11360-# The prefix directory corresponds to DESTDIR or INSTALL_ROOT.
11361-real_distinfo_dir = prefix_dir + distinfo_dir
11362-
11363-# Remove any existing dist-info directory and create an empty one.
11364-if os.path.exists(real_distinfo_dir):
11365- try:
11366- shutil.rmtree(real_distinfo_dir)
11367- except:
11368- error("unable to delete existing {0}".format(real_distinfo_dir))
11369-
11370-try:
11371- os.mkdir(real_distinfo_dir)
11372-except:
11373- error("unable to create {0}".format(real_distinfo_dir))
11374-
11375-# Create the INSTALLER file. We pretend that pip was the installer.
11376-installer_fn = os.path.join(distinfo_dir, 'INSTALLER')
11377-installer_f = open(prefix_dir + installer_fn, 'w')
11378-installer_f.write('pip\n')
11379-installer_f.close()
11380-
11381-installed.append(installer_fn)
11382-
11383-# Create the METADATA file.
11384-METADATA = '''Metadata-Version: 1.1
11385-Name: {0}
11386-Version: {1}
11387-'''
11388-
11389-distinfo_path, distinfo_base = os.path.split(distinfo_dir)
11390-pkg_name, version = os.path.splitext(distinfo_base)[0].split('-')
11391-
11392-metadata_fn = os.path.join(distinfo_dir, 'METADATA')
11393-metadata_f = open(prefix_dir + metadata_fn, 'w')
11394-metadata_f.write(METADATA.format(pkg_name, version))
11395-metadata_f.close()
11396-
11397-installed.append(metadata_fn)
11398-
11399-# Create the RECORD file.
11400-record_fn = os.path.join(distinfo_dir, 'RECORD')
11401-record_f = open(prefix_dir + record_fn, 'w')
11402-
11403-for name in installed:
11404- native_name = prefix_dir + name.replace('/', os.sep)
11405- if os.path.isdir(native_name):
11406- all_fns = []
11407-
11408- for root, dirs, files in os.walk(native_name):
11409- for f in files:
11410- all_fns.append(os.path.join(root, f).replace(os.sep, '/'))
11411-
11412- if '__pycache__' in dirs:
11413- dirs.remove('__pycache__')
11414- else:
11415- all_fns = [prefix_dir + name]
11416-
11417- for fn in all_fns:
11418- real_distinfo_path = prefix_dir + distinfo_path
11419-
11420- if fn.startswith(real_distinfo_path):
11421- fn_name = fn[len(real_distinfo_path) + 1:].replace('\\', '/')
11422- elif fn.startswith(prefix_dir + sys.prefix):
11423- fn_name = os.path.relpath(
11424- fn, real_distinfo_path).replace('\\', '/')
11425- else:
11426- fn_name = fn[len(prefix_dir):]
11427-
11428- fn_f = open(fn, 'rb')
11429- data = fn_f.read()
11430- fn_f.close()
11431-
11432- digest = base64.urlsafe_b64encode(
11433- hashlib.sha256(data).digest()).rstrip(b'=').decode('ascii')
11434-
11435- record_f.write(
11436- '{0},sha256={1},{2}\n'.format(fn_name, digest, len(data)))
11437-
11438-record_f.write('{0}/RECORD,,\n'.format(distinfo_base))
11439-
11440-record_f.close()
11441diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/rb-product sip/rb-product
11442--- ./sip-4.19.12.orig/rb-product 1969-12-31 19:00:00.000000000 -0500
11443+++ sip/rb-product 2018-09-18 17:52:23.269544132 -0400
11444@@ -0,0 +1 @@
11445+sip
11446diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/Roadmap.rst sip/Roadmap.rst
11447--- ./sip-4.19.12.orig/Roadmap.rst 1969-12-31 19:00:00.000000000 -0500
11448+++ sip/Roadmap.rst 2018-09-18 17:52:23.268544146 -0400
11449@@ -0,0 +1,75 @@
11450+SIP v5 Roadmap
11451+==============
11452+
11453+The next major release of SIP will be v5 and is currently being planned.
11454+
11455+The major focus of v5 will be to:
11456+
11457+- eliminate inconsistencies in the syntax of specification files
11458+
11459+- fill in some gaps in the C/C++ support
11460+
11461+- restructure, refactor and rewrite the code as appropriate to ensure that it
11462+ is easy to test, maintain and enhance over the long term.
11463+
11464+There is no plan to introduce any significant new functionality.
11465+
11466+Any feedback on the roadmap is very welcome.
11467+
11468+
11469+Migration from SIP v4 to v5
11470+---------------------------
11471+
11472+SIP v4.19.x will be the final series of SIP v4 releases. All features that
11473+will be removed in SIP v5 will trigger a deprecation warning. These will be
11474+Use of the old syntax will trigger deprecation warning messages. These will be
11475+disabled by default and will be enabled by passing the ``-w`` command line
11476+option to the code generator.
11477+
11478+A set of specification files that does not trigger any deprecation warnings
11479+with SIP v4.19.x should work unchanged with SIP v5.
11480+
11481+
11482+Roadmap
11483+-------
11484+
11485+Here we list specific changes that are planned. Note that no changes are
11486+planned for the ``sip`` extension module.
11487+
11488+- The syntax of directives will be revised to follow a standard pattern that
11489+ supports arguments and sub-directives in a consistent manner.
11490+
11491+- All directives will behave consistently when enclosed in ``%If``/``%End``
11492+ blocks.
11493+
11494+- Support will be added for fixed sized arrays of any type.
11495+
11496+- Support for optionally detecting overflows when converting from Python
11497+ integers to C/C++ types will be investigated.
11498+
11499+- Invalid annotations will trigger an error message rather than being silently
11500+ ignored.
11501+
11502+- Error messages will be improved and will always include a reference to the
11503+ originating file and line number.
11504+
11505+- Support for the generation of QScintilla API files will be removed. A
11506+ utility to create these files from the XML export file will be added to
11507+ QScintilla.
11508+
11509+- The code generator's ``-I`` command line option will support Windows style
11510+ path names.
11511+
11512+- The code generator may be extended using plugins.
11513+
11514+- All PyQt specific support will be removed and implemented in appropriate
11515+ plugins that will be distributed as part of PyQt.
11516+
11517+- The design of the code generator will allow for the implementation of plugins
11518+ to support generating bindings for languages other than Python.
11519+
11520+- The code generator will be reimplemented using Python v3. It will be able to
11521+ be used as a standalone application or a package.
11522+
11523+- The build system will be removed. SIP itself will be distributed as a
11524+ ``distutils`` package.
11525diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/export.c sip/sipgen/export.c
11526--- ./sip-4.19.12.orig/sipgen/export.c 2018-07-05 05:54:58.000000000 -0400
11527+++ sip/sipgen/export.c 2018-09-24 13:12:20.671276115 -0400
11528@@ -1,7 +1,7 @@
11529 /*
11530 * The XML and API file generator module for SIP.
11531 *
11532- * Copyright (c) 2015 Riverbank Computing Limited <info@riverbankcomputing.com>
11533+ * Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
11534 *
11535 * This file is part of SIP.
11536 *
11537@@ -34,32 +34,34 @@
11538
11539 static void apiEnums(sipSpec *pt, moduleDef *mod, classDef *scope, FILE *fp);
11540 static void apiVars(sipSpec *pt, moduleDef *mod, classDef *scope, FILE *fp);
11541-static int apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11542- int sec, FILE *fp);
11543-static int apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11544- overDef *od, int sec, FILE *fp);
11545+static void apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11546+ FILE *fp);
11547+static void apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11548+ overDef *od, FILE *fp);
11549 static int apiArgument(sipSpec *pt, argDef *ad, int out, int need_comma,
11550- int sec, int names, int defaults, int in_str, FILE *fp);
11551+ int names, int defaults, int in_str, FILE *fp);
11552 static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp);
11553 static void xmlEnums(sipSpec *pt, moduleDef *mod, classDef *scope, int indent,
11554 FILE *fp);
11555 static void xmlVars(sipSpec *pt, moduleDef *mod, classDef *scope, int indent,
11556 FILE *fp);
11557-static void xmlFunction(sipSpec *pt, classDef *scope, memberDef *md,
11558- overDef *oloads, int indent, FILE *fp);
11559-static int xmlCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
11560+static void xmlFunction(sipSpec *pt, moduleDef *mod, classDef *scope,
11561+ memberDef *md, overDef *oloads, int indent, FILE *fp);
11562+static void xmlCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11563 int indent, FILE *fp);
11564-static int xmlOverload(sipSpec *pt, classDef *scope, memberDef *md,
11565- overDef *od, classDef *xtnds, int stat, int sec, int indent, FILE *fp);
11566+static void xmlOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11567+ memberDef *md, overDef *od, classDef *xtnds, int stat, int indent,
11568+ FILE *fp);
11569 static void xmlCppSignature(FILE *fp, overDef *od);
11570-static void xmlArgument(sipSpec *pt, argDef *ad, const char *dir, int res_xfer,
11571- int sec, int indent, FILE *fp);
11572-static void xmlType(sipSpec *pt, argDef *ad, int sec, FILE *fp);
11573+static void xmlArgument(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
11574+ KwArgs kwargs, int res_xfer, int indent, FILE *fp);
11575+static void xmlType(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
11576+ KwArgs kwargs, FILE *fp);
11577 static void xmlIndent(int indent, FILE *fp);
11578-static const char *dirAttribute(argDef *ad);
11579-static const char *pyType(sipSpec *pt, argDef *ad, int sec, classDef **scope);
11580-static int exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
11581- int sec, int names, int defaults, int in_str, int is_signal);
11582+static void xmlRealName(scopedNameDef *fqcname, FILE *fp);
11583+static const char *pyType(sipSpec *pt, argDef *ad, classDef **scope);
11584+static void exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
11585+ int names, int defaults, int in_str, int is_signal);
11586
11587
11588 /*
11589@@ -86,8 +88,7 @@
11590 if (od->common->slot != no_slot)
11591 continue;
11592
11593- if (apiOverload(pt, mod, NULL, od, FALSE, fp))
11594- apiOverload(pt, mod, NULL, od, TRUE, fp);
11595+ apiOverload(pt, mod, NULL, od, fp);
11596 }
11597
11598 for (cd = pt->classes; cd != NULL; cd = cd->next)
11599@@ -108,8 +109,7 @@
11600 if (isPrivateCtor(ct))
11601 continue;
11602
11603- if (apiCtor(pt, mod, cd, ct, FALSE, fp))
11604- apiCtor(pt, mod, cd, ct, TRUE, fp);
11605+ apiCtor(pt, mod, cd, ct, fp);
11606 }
11607
11608 for (od = cd->overs; od != NULL; od = od->next)
11609@@ -120,8 +120,7 @@
11610 if (od->common->slot != no_slot)
11611 continue;
11612
11613- if (apiOverload(pt, mod, cd, od, FALSE, fp))
11614- apiOverload(pt, mod, cd, od, TRUE, fp);
11615+ apiOverload(pt, mod, cd, od, fp);
11616 }
11617 }
11618
11619@@ -132,10 +131,10 @@
11620 /*
11621 * Generate an API ctor.
11622 */
11623-static int apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11624- int sec, FILE *fp)
11625+static void apiCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11626+ FILE *fp)
11627 {
11628- int need_sec = FALSE, need_comma, a;
11629+ int need_comma, a;
11630
11631 /* Do the callable type form. */
11632 fprintf(fp, "%s.", mod->name);
11633@@ -148,11 +147,8 @@
11634 {
11635 argDef *ad = &ct->pysig.args[a];
11636
11637- need_comma = apiArgument(pt, ad, FALSE, need_comma, sec, TRUE, TRUE,
11638- FALSE, fp);
11639-
11640- if (ad->atype == rxcon_type || ad->atype == rxdis_type)
11641- need_sec = TRUE;
11642+ need_comma = apiArgument(pt, ad, FALSE, need_comma, TRUE, TRUE, FALSE,
11643+ fp);
11644 }
11645
11646 fprintf(fp, ")\n");
11647@@ -163,12 +159,10 @@
11648 fprintf(fp, ".__init__?%d(self", CLASS_ID);
11649
11650 for (a = 0; a < ct->pysig.nrArgs; ++a)
11651- apiArgument(pt, &ct->pysig.args[a], FALSE, TRUE, sec, TRUE, TRUE,
11652- FALSE, fp);
11653+ apiArgument(pt, &ct->pysig.args[a], FALSE, TRUE, TRUE, TRUE, FALSE,
11654+ fp);
11655
11656 fprintf(fp, ")\n");
11657-
11658- return need_sec;
11659 }
11660
11661
11662@@ -231,21 +225,16 @@
11663 /*
11664 * Generate a single API overload.
11665 */
11666-static int apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11667- overDef *od, int sec, FILE *fp)
11668+static void apiOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11669+ overDef *od, FILE *fp)
11670 {
11671- int need_sec;
11672-
11673 fprintf(fp, "%s.", mod->name);
11674 prScopedPythonName(fp, scope, od->common->pyname->text);
11675 fprintf(fp, "?%d", METHOD_ID);
11676
11677- need_sec = exportPythonSignature(pt, fp, &od->pysig, sec, TRUE, TRUE,
11678- FALSE, FALSE);
11679+ exportPythonSignature(pt, fp, &od->pysig, TRUE, TRUE, FALSE, FALSE);
11680
11681 fprintf(fp, "\n");
11682-
11683- return need_sec;
11684 }
11685
11686
11687@@ -253,7 +242,7 @@
11688 * Generate the API for an argument.
11689 */
11690 static int apiArgument(sipSpec *pt, argDef *ad, int out, int need_comma,
11691- int sec, int names, int defaults, int in_str, FILE *fp)
11692+ int names, int defaults, int in_str, FILE *fp)
11693 {
11694 const char *tname;
11695 classDef *tscope;
11696@@ -261,10 +250,7 @@
11697 if (isArraySize(ad))
11698 return need_comma;
11699
11700- if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
11701- return need_comma;
11702-
11703- if ((tname = pyType(pt, ad, sec, &tscope)) == NULL)
11704+ if ((tname = pyType(pt, ad, &tscope)) == NULL)
11705 return need_comma;
11706
11707 if (need_comma)
11708@@ -327,7 +313,7 @@
11709 xmlVars(pt, mod, NULL, 1, fp);
11710
11711 for (md = mod->othfuncs; md != NULL; md = md->next)
11712- xmlFunction(pt, NULL, md, mod->overs, 1, fp);
11713+ xmlFunction(pt, mod, NULL, md, mod->overs, 1, fp);
11714
11715 fprintf(fp, "</Module>\n");
11716
11717@@ -336,6 +322,26 @@
11718
11719
11720 /*
11721+ * Generate a 'realname' attribute containing a fully qualified C/C++ name.
11722+ */
11723+static void xmlRealName(scopedNameDef *fqcname, FILE *fp)
11724+{
11725+ const char *sep = "";
11726+ scopedNameDef *snd;
11727+
11728+ fprintf(fp, " realname=\"");
11729+
11730+ for (snd = removeGlobalScope(fqcname); snd != NULL; snd = snd->next)
11731+ {
11732+ fprintf(fp, "%s%s", sep, snd->name);
11733+ sep = "::";
11734+ }
11735+
11736+ fprintf(fp, "\"");
11737+}
11738+
11739+
11740+/*
11741 * Generate the XML for a class.
11742 */
11743 static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp)
11744@@ -358,9 +364,11 @@
11745 {
11746 xmlIndent(indent++, fp);
11747 fprintf(fp, "<Class name=\"");
11748- prScopedPythonName(fp, cd->ecd, cd->pyname->text);
11749+ restPyClass(cd, FALSE, fp);
11750 fprintf(fp, "\"");
11751
11752+ xmlRealName(classFQCName(cd), fp);
11753+
11754 if (cd->picklecode != NULL)
11755 fprintf(fp, " pickle=\"1\"");
11756
11757@@ -384,7 +392,7 @@
11758 if (cl != cd->supers)
11759 fprintf(fp, " ");
11760
11761- prScopedPythonName(fp, cl->cd->ecd, cl->cd->pyname->text);
11762+ restPyClass(cl->cd, TRUE, fp);
11763 }
11764
11765 fprintf(fp, "\"");
11766@@ -398,15 +406,14 @@
11767 if (isPrivateCtor(ct))
11768 continue;
11769
11770- if (xmlCtor(pt, cd, ct, FALSE, indent, fp))
11771- xmlCtor(pt, cd, ct, TRUE, indent, fp);
11772+ xmlCtor(pt, mod, cd, ct, indent, fp);
11773 }
11774
11775 xmlEnums(pt, mod, cd, indent, fp);
11776 xmlVars(pt, mod, cd, indent, fp);
11777
11778 for (md = cd->members; md != NULL; md = md->next)
11779- xmlFunction(pt, cd, md, cd->overs, indent, fp);
11780+ xmlFunction(pt, mod, cd, md, cd->overs, indent, fp);
11781
11782 if (!isHiddenNamespace(cd))
11783 {
11784@@ -438,15 +445,22 @@
11785
11786 xmlIndent(indent++, fp);
11787 fprintf(fp, "<Enum name=\"");
11788- prScopedPythonName(fp, ed->ecd, ed->pyname->text);
11789- fprintf(fp, "\">\n");
11790+ restPyEnum(ed, FALSE, fp);
11791+ fprintf(fp, "\"");
11792+
11793+ xmlRealName(ed->fqcname, fp);
11794+
11795+ fprintf(fp, ">\n");
11796
11797 for (emd = ed->members; emd != NULL; emd = emd->next)
11798 {
11799 xmlIndent(indent, fp);
11800- fprintf(fp, "<EnumMember name=\"");
11801- prScopedPythonName(fp, ed->ecd, emd->pyname->text);
11802- fprintf(fp, "\"/>\n");
11803+ fprintf(fp, "<EnumMember name=\"%s\"", emd->pyname->text);
11804+
11805+ if (strcmp(emd->pyname->text, emd->cname) != 0)
11806+ fprintf(fp, " realname=\"%s\"", emd->cname);
11807+
11808+ fprintf(fp, "/>\n");
11809 }
11810
11811 xmlIndent(--indent, fp);
11812@@ -495,7 +509,7 @@
11813 if (isStaticVar(vd))
11814 fprintf(fp, " static=\"1\"");
11815
11816- xmlType(pt, &vd->type, FALSE, fp);
11817+ xmlType(pt, mod, &vd->type, FALSE, NoKwArgs, fp);
11818 fprintf(fp, "/>\n");
11819 }
11820 }
11821@@ -504,10 +518,10 @@
11822 /*
11823 * Generate the XML for a ctor.
11824 */
11825-static int xmlCtor(sipSpec *pt, classDef *scope, ctorDef *ct, int sec,
11826+static void xmlCtor(sipSpec *pt, moduleDef *mod, classDef *scope, ctorDef *ct,
11827 int indent, FILE *fp)
11828 {
11829- int a, need_sec;
11830+ int a;
11831
11832 xmlIndent(indent++, fp);
11833 fprintf(fp, "<Function name=\"");
11834@@ -518,38 +532,34 @@
11835 if (ct->pysig.nrArgs == 0)
11836 {
11837 fprintf(fp, "/>\n");
11838- return FALSE;
11839+ return;
11840 }
11841
11842 fprintf(fp, ">\n");
11843
11844- need_sec = FALSE;
11845-
11846 for (a = 0; a < ct->pysig.nrArgs; ++a)
11847 {
11848 argDef *ad = &ct->pysig.args[a];
11849
11850- xmlArgument(pt, ad, dirAttribute(ad), FALSE, sec, indent, fp);
11851+ if (isInArg(ad))
11852+ xmlArgument(pt, mod, ad, FALSE, ct->kwargs, FALSE, indent, fp);
11853
11854- if (ad->atype == rxcon_type || ad->atype == rxdis_type)
11855- need_sec = TRUE;
11856+ if (isOutArg(ad))
11857+ xmlArgument(pt, mod, ad, TRUE, ct->kwargs, FALSE, indent, fp);
11858 }
11859
11860 xmlIndent(--indent, fp);
11861 fprintf(fp, "</Function>\n");
11862-
11863- return need_sec;
11864 }
11865
11866
11867 /*
11868 * Generate the XML for a function.
11869 */
11870-static void xmlFunction(sipSpec *pt, classDef *scope, memberDef *md,
11871- overDef *oloads, int indent, FILE *fp)
11872+static void xmlFunction(sipSpec *pt, moduleDef *mod, classDef *scope,
11873+ memberDef *md, overDef *oloads, int indent, FILE *fp)
11874 {
11875 overDef *od;
11876- const char *default_str = "default=\"1\" ";
11877
11878 for (od = oloads; od != NULL; od = od->next)
11879 {
11880@@ -564,14 +574,33 @@
11881
11882 if (isSignal(od))
11883 {
11884- xmlIndent(indent, fp);
11885- fprintf(fp, "<Signal %sname=\"", default_str);
11886+ int a;
11887+
11888+ xmlIndent(indent++, fp);
11889+ fprintf(fp, "<Signal name=\"");
11890 prScopedPythonName(fp, scope, md->pyname->text);
11891- fprintf(fp, "\" sig=\"");
11892- xmlCppSignature(fp, od);
11893- fprintf(fp, "\"/>\n");
11894+ /* TODO: add the C++ signature. */
11895+ /* fprintf(fp, "\" sig=\""); */
11896+ /* xmlCppSignature(fp, od); */
11897
11898- default_str = "";
11899+ /* Handle the trivial case. */
11900+ if (od->pysig.nrArgs == 0)
11901+ {
11902+ fprintf(fp, "\"/>\n");
11903+ continue;
11904+ }
11905+
11906+ fprintf(fp, "\">\n");
11907+
11908+ for (a = 0; a < od->pysig.nrArgs; ++a)
11909+ {
11910+ argDef *ad = &od->pysig.args[a];
11911+
11912+ xmlArgument(pt, mod, ad, FALSE, od->kwargs, FALSE, indent, fp);
11913+ }
11914+
11915+ xmlIndent(--indent, fp);
11916+ fprintf(fp, "</Signal>\n");
11917
11918 continue;
11919 }
11920@@ -585,8 +614,7 @@
11921 isstat = FALSE;
11922 }
11923
11924- if (xmlOverload(pt, scope, md, od, xtnds, isstat, FALSE, indent, fp))
11925- xmlOverload(pt, scope, md, od, xtnds, isstat, TRUE, indent, fp);
11926+ xmlOverload(pt, mod, scope, md, od, xtnds, isstat, indent, fp);
11927 }
11928 }
11929
11930@@ -594,10 +622,11 @@
11931 /*
11932 * Generate the XML for an overload.
11933 */
11934-static int xmlOverload(sipSpec *pt, classDef *scope, memberDef *md,
11935- overDef *od, classDef *xtnds, int stat, int sec, int indent, FILE *fp)
11936+static void xmlOverload(sipSpec *pt, moduleDef *mod, classDef *scope,
11937+ memberDef *md, overDef *od, classDef *xtnds, int stat, int indent,
11938+ FILE *fp)
11939 {
11940- int a, need_sec, no_res;
11941+ int a, no_res;
11942
11943 xmlIndent(indent++, fp);
11944 fprintf(fp, "<Function name=\"");
11945@@ -635,16 +664,14 @@
11946 if (no_res && od->pysig.nrArgs == 0)
11947 {
11948 fprintf(fp, "/>\n");
11949- return FALSE;
11950+ return;
11951 }
11952
11953 fprintf(fp, ">\n");
11954
11955 if (!no_res)
11956- xmlArgument(pt, &od->pysig.result, "out", isResultTransferredBack(od),
11957- FALSE, indent, fp);
11958-
11959- need_sec = FALSE;
11960+ xmlArgument(pt, mod, &od->pysig.result, TRUE, NoKwArgs,
11961+ isResultTransferredBack(od), indent, fp);
11962
11963 for (a = 0; a < od->pysig.nrArgs; ++a)
11964 {
11965@@ -654,16 +681,15 @@
11966 if (isNumberSlot(md) && a == 0 && od->pysig.nrArgs == 2)
11967 continue;
11968
11969- xmlArgument(pt, ad, dirAttribute(ad), FALSE, sec, indent, fp);
11970+ if (isInArg(ad))
11971+ xmlArgument(pt, mod, ad, FALSE, od->kwargs, FALSE, indent, fp);
11972
11973- if (ad->atype == rxcon_type || ad->atype == rxdis_type)
11974- need_sec = TRUE;
11975+ if (isOutArg(ad))
11976+ xmlArgument(pt, mod, ad, TRUE, od->kwargs, FALSE, indent, fp);
11977 }
11978
11979 xmlIndent(--indent, fp);
11980 fprintf(fp, "</Function>\n");
11981-
11982- return need_sec;
11983 }
11984
11985
11986@@ -679,65 +705,35 @@
11987
11988
11989 /*
11990- * Convert an arguments direction to an XML attribute value.
11991- */
11992-static const char *dirAttribute(argDef *ad)
11993-{
11994- if (isInArg(ad))
11995- {
11996- if (isOutArg(ad))
11997- return "inout";
11998-
11999- return NULL;
12000- }
12001-
12002- return "out";
12003-}
12004-
12005-
12006-/*
12007 * Generate the XML for an argument.
12008 */
12009-static void xmlArgument(sipSpec *pt, argDef *ad, const char *dir, int res_xfer,
12010- int sec, int indent, FILE *fp)
12011+static void xmlArgument(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
12012+ KwArgs kwargs, int res_xfer, int indent, FILE *fp)
12013 {
12014 if (isArraySize(ad))
12015 return;
12016
12017- if (sec && (ad->atype == slotcon_type || ad->atype == slotdis_type))
12018- return;
12019-
12020 xmlIndent(indent, fp);
12021- fprintf(fp, "<Argument");
12022- xmlType(pt, ad, sec, fp);
12023+ fprintf(fp, "<%s", (out ? "Return" : "Argument"));
12024+ xmlType(pt, mod, ad, out, kwargs, fp);
12025
12026- if (dir != NULL)
12027- fprintf(fp, " dir=\"%s\"", dir);
12028+ if (!out)
12029+ {
12030+ if (isAllowNone(ad))
12031+ fprintf(fp, " allownone=\"1\"");
12032
12033- if (isAllowNone(ad))
12034- fprintf(fp, " allownone=\"1\"");
12035+ if (isDisallowNone(ad))
12036+ fprintf(fp, " disallownone=\"1\"");
12037
12038- if (isDisallowNone(ad))
12039- fprintf(fp, " disallownone=\"1\"");
12040+ if (isTransferred(ad))
12041+ fprintf(fp, " transfer=\"to\"");
12042+ else if (isThisTransferred(ad))
12043+ fprintf(fp, " transfer=\"this\"");
12044+ }
12045
12046- if (isTransferred(ad))
12047- fprintf(fp, " transfer=\"to\"");
12048- else if (isThisTransferred(ad))
12049- fprintf(fp, " transfer=\"this\"");
12050- else if (res_xfer || isTransferredBack(ad))
12051+ if (res_xfer || isTransferredBack(ad))
12052 fprintf(fp, " transfer=\"back\"");
12053
12054- /*
12055- * Handle the default value, but ignore it if it is an output only
12056- * argument.
12057- */
12058- if (ad->defval && (dir == NULL || strcmp(dir, "out") != 0))
12059- {
12060- prcode(fp, " default=\"");
12061- prDefaultValue(ad, FALSE, fp);
12062- prcode(fp, "\"");
12063- }
12064-
12065 fprintf(fp, "/>\n");
12066 }
12067
12068@@ -745,73 +741,68 @@
12069 /*
12070 * Generate the XML for a type.
12071 */
12072-static void xmlType(sipSpec *pt, argDef *ad, int sec, FILE *fp)
12073+static void xmlType(sipSpec *pt, moduleDef *mod, argDef *ad, int out,
12074+ KwArgs kwargs, FILE *fp)
12075 {
12076- const char *type_type = NULL, *type_name;
12077+ const char *type_name;
12078 classDef *type_scope;
12079+ typeHintDef *thd;
12080
12081 fprintf(fp, " typename=\"");
12082
12083- switch (ad->atype)
12084+ /* Handle the argument name. */
12085+ if (!out && ad->name != NULL)
12086 {
12087- case class_type:
12088- type_type = (isOpaque(ad->u.cd) ? "opaque" : "class");
12089- break;
12090-
12091- case enum_type:
12092- if (ad->u.ed->pyname != NULL)
12093- type_type = "enum";
12094- break;
12095-
12096- case rxcon_type:
12097- case rxdis_type:
12098- if (!sec)
12099- type_type = "class";
12100- break;
12101+ if (kwargs == AllKwArgs || (kwargs == OptionalKwArgs && ad->defval != NULL))
12102+ fprintf(fp, "%s: ", ad->name->text);
12103+ }
12104
12105- case qobject_type:
12106- type_type = "class";
12107- break;
12108+ /* Use any explicit type hint unless the argument is constrained. */
12109+ thd = (out ? ad->typehint_out : (isConstrained(ad) ? NULL : ad->typehint_in));
12110
12111- case slotcon_type:
12112- case slotdis_type:
12113+ if (thd != NULL)
12114+ {
12115+ pyiTypeHint(pt, thd, mod, out, NULL, FALSE, TRUE, fp);
12116+ }
12117+ else
12118+ {
12119+ switch (ad->atype)
12120 {
12121- int a;
12122-
12123- prcode(fp, "SLOT(");
12124-
12125- for (a = 0; a < ad->u.sa->nrArgs; ++a)
12126- {
12127- if (a > 0)
12128- prcode(fp, ", ");
12129+ case class_type:
12130+ restPyClass(ad->u.cd, TRUE, fp);
12131+ break;
12132
12133- prcode(fp, "%M%B%M", &ad->u.sa->args[a]);
12134- }
12135+ case enum_type:
12136+ if (ad->u.ed->pyname != NULL)
12137+ restPyEnum(ad->u.ed, TRUE, fp);
12138+ else
12139+ fprintf(fp, "int");
12140
12141- prcode(fp, ")");
12142- }
12143+ break;
12144
12145- break;
12146+ case qobject_type:
12147+ restPyClass(pt->qobject_cd, TRUE, fp);
12148+ break;
12149
12150- case mapped_type:
12151- type_type = "mappedtype";
12152- break;
12153+ case mapped_type:
12154+ /* There would normally be a type hint. */
12155+ fprintf(fp, "unknown-type");
12156+ break;
12157
12158- /* Suppress a compiler warning. */
12159- default:
12160- ;
12161+ default:
12162+ if ((type_name = pyType(pt, ad, &type_scope)) != NULL)
12163+ prScopedPythonName(fp, type_scope, type_name);
12164+ }
12165 }
12166
12167- if ((type_name = pyType(pt, ad, sec, &type_scope)) != NULL)
12168- prScopedPythonName(fp, type_scope, type_name);
12169+ if (!out && ad->name != NULL && ad->defval != NULL)
12170+ {
12171+ fprintf(fp, " = ");
12172+ /* TODO: use reST references where appropriate. */
12173+ prDefaultValue(ad, FALSE, fp);
12174+ }
12175
12176 fprintf(fp, "\"");
12177-
12178- if (type_type != NULL)
12179- fprintf(fp, " typetype=\"%s\"", type_type);
12180-
12181- if (ad->name != NULL)
12182- fprintf(fp, " name=\"%s\"", ad->name->text);
12183 }
12184
12185
12186@@ -828,7 +819,7 @@
12187 /*
12188 * Get the Python representation of a type.
12189 */
12190-static const char *pyType(sipSpec *pt, argDef *ad, int sec, classDef **scope)
12191+static const char *pyType(sipSpec *pt, argDef *ad, classDef **scope)
12192 {
12193 const char *type_name;
12194
12195@@ -947,23 +938,6 @@
12196 type_name = "int";
12197 break;
12198
12199- case signal_type:
12200- type_name = "SIGNAL()";
12201- break;
12202-
12203- case slot_type:
12204- type_name = "SLOT()";
12205- break;
12206-
12207- case rxcon_type:
12208- case rxdis_type:
12209- if (sec)
12210- type_name = "callable";
12211- else
12212- type_name = "QObject";
12213-
12214- break;
12215-
12216 case qobject_type:
12217 type_name = "QObject";
12218 break;
12219@@ -1046,11 +1020,6 @@
12220 type_name = "...";
12221 break;
12222
12223- case slotcon_type:
12224- case anyslot_type:
12225- type_name = "SLOT()";
12226- break;
12227-
12228 default:
12229 type_name = NULL;
12230 }
12231@@ -1062,10 +1031,10 @@
12232 /*
12233 * Generate a Python signature.
12234 */
12235-static int exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
12236- int sec, int names, int defaults, int in_str, int is_signal)
12237+static void exportPythonSignature(sipSpec *pt, FILE *fp, signatureDef *sd,
12238+ int names, int defaults, int in_str, int is_signal)
12239 {
12240- int need_sec = FALSE, need_comma = FALSE, is_res, nr_out, a;
12241+ int need_comma = FALSE, is_res, nr_out, a;
12242
12243 if (is_signal)
12244 {
12245@@ -1089,11 +1058,8 @@
12246 if (!isInArg(ad))
12247 continue;
12248
12249- need_comma = apiArgument(pt, ad, FALSE, need_comma, sec, names,
12250- defaults, in_str, fp);
12251-
12252- if (ad->atype == rxcon_type || ad->atype == rxdis_type)
12253- need_sec = TRUE;
12254+ need_comma = apiArgument(pt, ad, FALSE, need_comma, names, defaults,
12255+ in_str, fp);
12256 }
12257
12258 if (is_signal)
12259@@ -1118,7 +1084,7 @@
12260 fprintf(fp, "(");
12261
12262 if (is_res)
12263- need_comma = apiArgument(pt, &sd->result, TRUE, FALSE, sec, FALSE,
12264+ need_comma = apiArgument(pt, &sd->result, TRUE, FALSE, FALSE,
12265 FALSE, in_str, fp);
12266 else
12267 need_comma = FALSE;
12268@@ -1129,13 +1095,43 @@
12269
12270 if (isOutArg(ad))
12271 /* We don't want the name in the result tuple. */
12272- need_comma = apiArgument(pt, ad, TRUE, need_comma, sec, FALSE,
12273+ need_comma = apiArgument(pt, ad, TRUE, need_comma, FALSE,
12274 FALSE, in_str, fp);
12275 }
12276
12277 if ((is_res && nr_out > 0) || nr_out > 1)
12278 fprintf(fp, ")");
12279 }
12280+}
12281
12282- return need_sec;
12283+
12284+/*
12285+ * Generate a fully qualified class name optionally as a reST reference.
12286+ */
12287+void restPyClass(classDef *cd, int as_ref, FILE *fp)
12288+{
12289+ if (as_ref)
12290+ fprintf(fp, ":sip:class:`~");
12291+
12292+ fprintf(fp, "%s.", cd->iff->module->fullname->text);
12293+ prScopedPythonName(fp, cd->ecd, cd->pyname->text);
12294+
12295+ if (as_ref)
12296+ fprintf(fp, "`");
12297+}
12298+
12299+
12300+/*
12301+ * Generate a fully qualified enum name optionally as a reST reference.
12302+ */
12303+void restPyEnum(enumDef *ed, int as_ref, FILE *fp)
12304+{
12305+ if (as_ref)
12306+ fprintf(fp, ":sip:enum:`~");
12307+
12308+ fprintf(fp, "%s.", ed->module->fullname->text);
12309+ prScopedPythonName(fp, ed->ecd, ed->pyname->text);
12310+
12311+ if (as_ref)
12312+ fprintf(fp, "`");
12313 }
12314diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/lexer.c sip/sipgen/lexer.c
12315--- ./sip-4.19.12.orig/sipgen/lexer.c 2018-07-05 05:55:19.000000000 -0400
12316+++ sip/sipgen/lexer.c 2018-09-18 18:12:23.334057750 -0400
12317@@ -1,6 +1,6 @@
12318-#line 2 "sip-4.19.12/sipgen/lexer.c"
12319+#line 2 "sipgen/lexer.c"
12320
12321-#line 4 "sip-4.19.12/sipgen/lexer.c"
12322+#line 4 "sipgen/lexer.c"
12323
12324 #define YY_INT_ALIGNED short int
12325
12326@@ -8,8 +8,8 @@
12327
12328 #define FLEX_SCANNER
12329 #define YY_FLEX_MAJOR_VERSION 2
12330-#define YY_FLEX_MINOR_VERSION 5
12331-#define YY_FLEX_SUBMINOR_VERSION 35
12332+#define YY_FLEX_MINOR_VERSION 6
12333+#define YY_FLEX_SUBMINOR_VERSION 1
12334 #if YY_FLEX_SUBMINOR_VERSION > 0
12335 #define FLEX_BETA
12336 #endif
12337@@ -47,7 +47,6 @@
12338 typedef uint16_t flex_uint16_t;
12339 typedef int32_t flex_int32_t;
12340 typedef uint32_t flex_uint32_t;
12341-typedef uint64_t flex_uint64_t;
12342 #else
12343 typedef signed char flex_int8_t;
12344 typedef short int flex_int16_t;
12345@@ -55,7 +54,6 @@
12346 typedef unsigned char flex_uint8_t;
12347 typedef unsigned short int flex_uint16_t;
12348 typedef unsigned int flex_uint32_t;
12349-#endif /* ! C99 */
12350
12351 /* Limits of integral types. */
12352 #ifndef INT8_MIN
12353@@ -86,27 +84,17 @@
12354 #define UINT32_MAX (4294967295U)
12355 #endif
12356
12357-#endif /* ! FLEXINT_H */
12358-
12359-#ifdef __cplusplus
12360-
12361-/* The "const" storage-class-modifier is valid. */
12362-#define YY_USE_CONST
12363-
12364-#else /* ! __cplusplus */
12365-
12366-/* C99 requires __STDC__ to be defined as 1. */
12367-#if defined (__STDC__)
12368-
12369-#define YY_USE_CONST
12370+#endif /* ! C99 */
12371
12372-#endif /* defined (__STDC__) */
12373-#endif /* ! __cplusplus */
12374+#endif /* ! FLEXINT_H */
12375
12376-#ifdef YY_USE_CONST
12377+/* TODO: this is always defined, so inline it */
12378 #define yyconst const
12379+
12380+#if defined(__GNUC__) && __GNUC__ >= 3
12381+#define yynoreturn __attribute__((__noreturn__))
12382 #else
12383-#define yyconst
12384+#define yynoreturn
12385 #endif
12386
12387 /* Returned upon end-of-file. */
12388@@ -142,7 +130,15 @@
12389
12390 /* Size of default input buffer. */
12391 #ifndef YY_BUF_SIZE
12392+#ifdef __ia64__
12393+/* On IA-64, the buffer size is 16k, not 8k.
12394+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
12395+ * Ditto for the __ia64__ case accordingly.
12396+ */
12397+#define YY_BUF_SIZE 32768
12398+#else
12399 #define YY_BUF_SIZE 16384
12400+#endif /* __ia64__ */
12401 #endif
12402
12403 /* The state buf must be large enough to hold one state per character in the main buffer.
12404@@ -159,7 +155,7 @@
12405 typedef size_t yy_size_t;
12406 #endif
12407
12408-extern yy_size_t yyleng;
12409+extern int yyleng;
12410
12411 extern FILE *yyin, *yyout;
12412
12413@@ -168,13 +164,14 @@
12414 #define EOB_ACT_LAST_MATCH 2
12415
12416 #define YY_LESS_LINENO(n)
12417+ #define YY_LINENO_REWIND_TO(ptr)
12418
12419 /* Return all but the first "n" matched characters back to the input stream. */
12420 #define yyless(n) \
12421 do \
12422 { \
12423 /* Undo effects of setting up yytext. */ \
12424- int yyless_macro_arg = (n); \
12425+ yy_size_t yyless_macro_arg = (n); \
12426 YY_LESS_LINENO(yyless_macro_arg);\
12427 *yy_cp = (yy_hold_char); \
12428 YY_RESTORE_YY_MORE_OFFSET \
12429@@ -197,12 +194,12 @@
12430 /* Size of input buffer in bytes, not including room for EOB
12431 * characters.
12432 */
12433- yy_size_t yy_buf_size;
12434+ int yy_buf_size;
12435
12436 /* Number of characters read into yy_ch_buf, not including EOB
12437 * characters.
12438 */
12439- yy_size_t yy_n_chars;
12440+ int yy_n_chars;
12441
12442 /* Whether we "own" the buffer - i.e., we know we created it,
12443 * and can realloc() it to grow it, and should free() it to
12444@@ -253,7 +250,7 @@
12445 /* Stack of input buffers. */
12446 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
12447 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
12448-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
12449+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
12450
12451 /* We provide macros for accessing buffer states in case in the
12452 * future we want to put the buffer states in a more general
12453@@ -272,11 +269,11 @@
12454
12455 /* yy_hold_char holds the character lost when yytext is formed. */
12456 static char yy_hold_char;
12457-static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
12458-yy_size_t yyleng;
12459+static int yy_n_chars; /* number of characters read into yy_ch_buf */
12460+int yyleng;
12461
12462 /* Points to current character in buffer. */
12463-static char *yy_c_buf_p = (char *) 0;
12464+static char *yy_c_buf_p = NULL;
12465 static int yy_init = 0; /* whether we need to initialize */
12466 static int yy_start = 0; /* start state number */
12467
12468@@ -301,7 +298,7 @@
12469
12470 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
12471 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
12472-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
12473+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
12474
12475 void *yyalloc (yy_size_t );
12476 void *yyrealloc (void *,yy_size_t );
12477@@ -335,7 +332,7 @@
12478
12479 typedef unsigned char YY_CHAR;
12480
12481-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
12482+FILE *yyin = NULL, *yyout = NULL;
12483
12484 typedef int yy_state_type;
12485
12486@@ -344,19 +341,22 @@
12487 int yylineno = 1;
12488
12489 extern char *yytext;
12490+#ifdef yytext_ptr
12491+#undef yytext_ptr
12492+#endif
12493 #define yytext_ptr yytext
12494
12495 static yy_state_type yy_get_previous_state (void );
12496 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
12497 static int yy_get_next_buffer (void );
12498-static void yy_fatal_error (yyconst char msg[] );
12499+static void yynoreturn yy_fatal_error (yyconst char* msg );
12500
12501 /* Done after the current pattern has been matched and before the
12502 * corresponding action - sets up yytext.
12503 */
12504 #define YY_DO_BEFORE_ACTION \
12505 (yytext_ptr) = yy_bp; \
12506- yyleng = (yy_size_t) (yy_cp - yy_bp); \
12507+ yyleng = (int) (yy_cp - yy_bp); \
12508 (yy_hold_char) = *yy_cp; \
12509 *yy_cp = '\0'; \
12510 (yy_c_buf_p) = yy_cp;
12511@@ -509,7 +509,7 @@
12512 131, 113, 0, 113, 0, 113, 7, 113, 101, 0
12513 } ;
12514
12515-static yyconst flex_int32_t yy_ec[256] =
12516+static yyconst YY_CHAR yy_ec[256] =
12517 { 0,
12518 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
12519 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
12520@@ -541,7 +541,7 @@
12521 1, 1, 1, 1, 1
12522 } ;
12523
12524-static yyconst flex_int32_t yy_meta[70] =
12525+static yyconst YY_CHAR yy_meta[70] =
12526 { 0,
12527 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
12528 1, 3, 3, 3, 4, 4, 1, 4, 4, 4,
12529@@ -552,7 +552,7 @@
12530 3, 3, 3, 3, 3, 3, 3, 3, 1
12531 } ;
12532
12533-static yyconst flex_int16_t yy_base[1239] =
12534+static yyconst flex_uint16_t yy_base[1239] =
12535 { 0,
12536 0, 68, 2823, 69, 70, 73, 75, 75, 2817, 80,
12537 2824, 2827, 2827, 2827, 73, 82, 77, 87, 77, 128,
12538@@ -832,7 +832,7 @@
12539 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230
12540 } ;
12541
12542-static yyconst flex_int16_t yy_nxt[2897] =
12543+static yyconst flex_uint16_t yy_nxt[2897] =
12544 { 0,
12545 12, 13, 14, 13, 15, 12, 16, 12, 12, 12,
12546 12, 17, 18, 19, 20, 21, 22, 23, 23, 23,
12547@@ -1492,7 +1492,7 @@
12548 #define YY_MORE_ADJ 0
12549 #define YY_RESTORE_YY_MORE_OFFSET
12550 char *yytext;
12551-#line 1 "sip-4.19.12/sipgen/metasrc/lexer.l"
12552+#line 1 "sipgen/metasrc/lexer.l"
12553 /*
12554 * The SIP lexer.
12555 *
12556@@ -1510,7 +1510,7 @@
12557 * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
12558 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12559 */
12560-#line 20 "sip-4.19.12/sipgen/metasrc/lexer.l"
12561+#line 20 "sipgen/metasrc/lexer.l"
12562 #include <stdio.h>
12563 #include <stdlib.h>
12564 #include <string.h>
12565@@ -1560,7 +1560,7 @@
12566
12567
12568
12569-#line 1564 "sip-4.19.12/sipgen/lexer.c"
12570+#line 1564 "sipgen/lexer.c"
12571
12572 #define INITIAL 0
12573 #define code 1
12574@@ -1597,19 +1597,19 @@
12575
12576 FILE *yyget_in (void );
12577
12578-void yyset_in (FILE * in_str );
12579+void yyset_in (FILE * _in_str );
12580
12581 FILE *yyget_out (void );
12582
12583-void yyset_out (FILE * out_str );
12584+void yyset_out (FILE * _out_str );
12585
12586-yy_size_t yyget_leng (void );
12587+ int yyget_leng (void );
12588
12589 char *yyget_text (void );
12590
12591 int yyget_lineno (void );
12592
12593-void yyset_lineno (int line_number );
12594+void yyset_lineno (int _line_number );
12595
12596 /* Macros after this point can all be overridden by user definitions in
12597 * section 1.
12598@@ -1623,8 +1623,12 @@
12599 #endif
12600 #endif
12601
12602+#ifndef YY_NO_UNPUT
12603+
12604 static void yyunput (int c,char *buf_ptr );
12605
12606+#endif
12607+
12608 #ifndef yytext_ptr
12609 static void yy_flex_strncpy (char *,yyconst char *,int );
12610 #endif
12611@@ -1647,7 +1651,7 @@
12612 static int yy_start_stack_depth = 0;
12613 static int *yy_start_stack = NULL;
12614
12615- static void yy_push_state (int new_state );
12616+ static void yy_push_state (int _new_state );
12617
12618 static void yy_pop_state (void );
12619
12620@@ -1655,7 +1659,12 @@
12621
12622 /* Amount of stuff to slurp up with each read. */
12623 #ifndef YY_READ_BUF_SIZE
12624+#ifdef __ia64__
12625+/* On IA-64, the buffer size is 16k, not 8k */
12626+#define YY_READ_BUF_SIZE 16384
12627+#else
12628 #define YY_READ_BUF_SIZE 8192
12629+#endif /* __ia64__ */
12630 #endif
12631
12632 /* Copy whatever the last rule matched to the standard output. */
12633@@ -1663,7 +1672,7 @@
12634 /* This used to be an fputs(), but since the string might contain NUL's,
12635 * we now use fwrite().
12636 */
12637-#define ECHO fwrite( yytext, yyleng, 1, yyout )
12638+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
12639 #endif
12640
12641 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
12642@@ -1674,7 +1683,7 @@
12643 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
12644 { \
12645 int c = '*'; \
12646- yy_size_t n; \
12647+ int n; \
12648 for ( n = 0; n < max_size && \
12649 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
12650 buf[n] = (char) c; \
12651@@ -1687,7 +1696,7 @@
12652 else \
12653 { \
12654 errno=0; \
12655- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
12656+ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
12657 { \
12658 if( errno != EINTR) \
12659 { \
12660@@ -1742,7 +1751,7 @@
12661
12662 /* Code executed at the end of each rule. */
12663 #ifndef YY_BREAK
12664-#define YY_BREAK break;
12665+#define YY_BREAK /*LINTED*/break;
12666 #endif
12667
12668 #define YY_RULE_SETUP \
12669@@ -1755,15 +1764,10 @@
12670 */
12671 YY_DECL
12672 {
12673- register yy_state_type yy_current_state;
12674- register char *yy_cp, *yy_bp;
12675- register int yy_act;
12676+ yy_state_type yy_current_state;
12677+ char *yy_cp, *yy_bp;
12678+ int yy_act;
12679
12680-#line 74 "sip-4.19.12/sipgen/metasrc/lexer.l"
12681-
12682-
12683-#line 1766 "sip-4.19.12/sipgen/lexer.c"
12684-
12685 if ( !(yy_init) )
12686 {
12687 (yy_init) = 1;
12688@@ -1790,7 +1794,13 @@
12689 yy_load_buffer_state( );
12690 }
12691
12692- while ( 1 ) /* loops until end-of-file is reached */
12693+ {
12694+#line 74 "sipgen/metasrc/lexer.l"
12695+
12696+
12697+#line 1802 "sipgen/lexer.c"
12698+
12699+ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
12700 {
12701 yy_cp = (yy_c_buf_p);
12702
12703@@ -1807,7 +1817,7 @@
12704 yy_match:
12705 do
12706 {
12707- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
12708+ YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
12709 if ( yy_accept[yy_current_state] )
12710 {
12711 (yy_last_accepting_state) = yy_current_state;
12712@@ -1819,7 +1829,7 @@
12713 if ( yy_current_state >= 1231 )
12714 yy_c = yy_meta[(unsigned int) yy_c];
12715 }
12716- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
12717+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
12718 ++yy_cp;
12719 }
12720 while ( yy_base[yy_current_state] != 2827 );
12721@@ -1848,527 +1858,527 @@
12722
12723 case 1:
12724 YY_RULE_SETUP
12725-#line 76 "sip-4.19.12/sipgen/metasrc/lexer.l"
12726+#line 76 "sipgen/metasrc/lexer.l"
12727 {BEGIN directive_start; return TK_API;}
12728 YY_BREAK
12729 case 2:
12730 YY_RULE_SETUP
12731-#line 77 "sip-4.19.12/sipgen/metasrc/lexer.l"
12732+#line 77 "sipgen/metasrc/lexer.l"
12733 {BEGIN directive_start; return TK_AUTOPYNAME;}
12734 YY_BREAK
12735 case 3:
12736 YY_RULE_SETUP
12737-#line 78 "sip-4.19.12/sipgen/metasrc/lexer.l"
12738+#line 78 "sipgen/metasrc/lexer.l"
12739 {return TK_CMODULE;}
12740 YY_BREAK
12741 case 4:
12742 YY_RULE_SETUP
12743-#line 79 "sip-4.19.12/sipgen/metasrc/lexer.l"
12744+#line 79 "sipgen/metasrc/lexer.l"
12745 {BEGIN directive_start; return TK_COMPOMODULE;}
12746 YY_BREAK
12747 case 5:
12748 YY_RULE_SETUP
12749-#line 80 "sip-4.19.12/sipgen/metasrc/lexer.l"
12750+#line 80 "sipgen/metasrc/lexer.l"
12751 {BEGIN directive_start; return TK_CONSMODULE;}
12752 YY_BREAK
12753 case 6:
12754 YY_RULE_SETUP
12755-#line 81 "sip-4.19.12/sipgen/metasrc/lexer.l"
12756+#line 81 "sipgen/metasrc/lexer.l"
12757 {BEGIN directive_start; return TK_DEFDOCSTRFMT;}
12758 YY_BREAK
12759 case 7:
12760 YY_RULE_SETUP
12761-#line 82 "sip-4.19.12/sipgen/metasrc/lexer.l"
12762+#line 82 "sipgen/metasrc/lexer.l"
12763 {BEGIN directive_start; return TK_DEFDOCSTRSIG;}
12764 YY_BREAK
12765 case 8:
12766 YY_RULE_SETUP
12767-#line 83 "sip-4.19.12/sipgen/metasrc/lexer.l"
12768+#line 83 "sipgen/metasrc/lexer.l"
12769 {BEGIN directive_start; return TK_DEFENCODING;}
12770 YY_BREAK
12771 case 9:
12772 YY_RULE_SETUP
12773-#line 84 "sip-4.19.12/sipgen/metasrc/lexer.l"
12774+#line 84 "sipgen/metasrc/lexer.l"
12775 {BEGIN directive_start; return TK_DEFMETATYPE;}
12776 YY_BREAK
12777 case 10:
12778 YY_RULE_SETUP
12779-#line 85 "sip-4.19.12/sipgen/metasrc/lexer.l"
12780+#line 85 "sipgen/metasrc/lexer.l"
12781 {BEGIN directive_start; return TK_DEFSUPERTYPE;}
12782 YY_BREAK
12783 case 11:
12784 YY_RULE_SETUP
12785-#line 86 "sip-4.19.12/sipgen/metasrc/lexer.l"
12786+#line 86 "sipgen/metasrc/lexer.l"
12787 {return TK_END;}
12788 YY_BREAK
12789 case 12:
12790 YY_RULE_SETUP
12791-#line 87 "sip-4.19.12/sipgen/metasrc/lexer.l"
12792+#line 87 "sipgen/metasrc/lexer.l"
12793 {BEGIN INITIAL; return TK_END;}
12794 YY_BREAK
12795 case 13:
12796 YY_RULE_SETUP
12797-#line 88 "sip-4.19.12/sipgen/metasrc/lexer.l"
12798+#line 88 "sipgen/metasrc/lexer.l"
12799 {return TK_EXCEPTION;}
12800 YY_BREAK
12801 case 14:
12802 YY_RULE_SETUP
12803-#line 89 "sip-4.19.12/sipgen/metasrc/lexer.l"
12804+#line 89 "sipgen/metasrc/lexer.l"
12805 {BEGIN directive_start; return TK_FEATURE;}
12806 YY_BREAK
12807 case 15:
12808 YY_RULE_SETUP
12809-#line 90 "sip-4.19.12/sipgen/metasrc/lexer.l"
12810+#line 90 "sipgen/metasrc/lexer.l"
12811 {BEGIN directive_start; return TK_HIDE_NS;}
12812 YY_BREAK
12813 case 16:
12814 YY_RULE_SETUP
12815-#line 91 "sip-4.19.12/sipgen/metasrc/lexer.l"
12816+#line 91 "sipgen/metasrc/lexer.l"
12817 {return TK_IF;}
12818 YY_BREAK
12819 case 17:
12820 YY_RULE_SETUP
12821-#line 92 "sip-4.19.12/sipgen/metasrc/lexer.l"
12822+#line 92 "sipgen/metasrc/lexer.l"
12823 {BEGIN directive_start; return TK_IMPORT;}
12824 YY_BREAK
12825 case 18:
12826 YY_RULE_SETUP
12827-#line 93 "sip-4.19.12/sipgen/metasrc/lexer.l"
12828+#line 93 "sipgen/metasrc/lexer.l"
12829 {BEGIN directive_start; return TK_INCLUDE;}
12830 YY_BREAK
12831 case 19:
12832 YY_RULE_SETUP
12833-#line 94 "sip-4.19.12/sipgen/metasrc/lexer.l"
12834+#line 94 "sipgen/metasrc/lexer.l"
12835 {BEGIN directive_start; return TK_LICENSE;}
12836 YY_BREAK
12837 case 20:
12838 YY_RULE_SETUP
12839-#line 95 "sip-4.19.12/sipgen/metasrc/lexer.l"
12840+#line 95 "sipgen/metasrc/lexer.l"
12841 {return TK_MAPPEDTYPE;}
12842 YY_BREAK
12843 case 21:
12844 YY_RULE_SETUP
12845-#line 96 "sip-4.19.12/sipgen/metasrc/lexer.l"
12846+#line 96 "sipgen/metasrc/lexer.l"
12847 {BEGIN directive_start; return TK_MODULE;}
12848 YY_BREAK
12849 case 22:
12850 YY_RULE_SETUP
12851-#line 97 "sip-4.19.12/sipgen/metasrc/lexer.l"
12852+#line 97 "sipgen/metasrc/lexer.l"
12853 {return TK_OPTINCLUDE;}
12854 YY_BREAK
12855 case 23:
12856 YY_RULE_SETUP
12857-#line 98 "sip-4.19.12/sipgen/metasrc/lexer.l"
12858+#line 98 "sipgen/metasrc/lexer.l"
12859 {return TK_PLATFORMS;}
12860 YY_BREAK
12861 case 24:
12862 YY_RULE_SETUP
12863-#line 99 "sip-4.19.12/sipgen/metasrc/lexer.l"
12864+#line 99 "sipgen/metasrc/lexer.l"
12865 {BEGIN directive_start; return TK_PLUGIN;}
12866 YY_BREAK
12867 case 25:
12868 YY_RULE_SETUP
12869-#line 100 "sip-4.19.12/sipgen/metasrc/lexer.l"
12870+#line 100 "sipgen/metasrc/lexer.l"
12871 {BEGIN directive_start; return TK_PROPERTY;}
12872 YY_BREAK
12873 case 26:
12874 YY_RULE_SETUP
12875-#line 101 "sip-4.19.12/sipgen/metasrc/lexer.l"
12876+#line 101 "sipgen/metasrc/lexer.l"
12877 {return TK_TIMELINE;}
12878 YY_BREAK
12879 case 27:
12880 YY_RULE_SETUP
12881-#line 103 "sip-4.19.12/sipgen/metasrc/lexer.l"
12882+#line 103 "sipgen/metasrc/lexer.l"
12883 {return TK_CLASS;}
12884 YY_BREAK
12885 case 28:
12886 YY_RULE_SETUP
12887-#line 104 "sip-4.19.12/sipgen/metasrc/lexer.l"
12888+#line 104 "sipgen/metasrc/lexer.l"
12889 {return TK_STRUCT;}
12890 YY_BREAK
12891 case 29:
12892 YY_RULE_SETUP
12893-#line 105 "sip-4.19.12/sipgen/metasrc/lexer.l"
12894+#line 105 "sipgen/metasrc/lexer.l"
12895 {return TK_PUBLIC;}
12896 YY_BREAK
12897 case 30:
12898 YY_RULE_SETUP
12899-#line 106 "sip-4.19.12/sipgen/metasrc/lexer.l"
12900+#line 106 "sipgen/metasrc/lexer.l"
12901 {return TK_PROTECTED;}
12902 YY_BREAK
12903 case 31:
12904 YY_RULE_SETUP
12905-#line 107 "sip-4.19.12/sipgen/metasrc/lexer.l"
12906+#line 107 "sipgen/metasrc/lexer.l"
12907 {return TK_PRIVATE;}
12908 YY_BREAK
12909 case 32:
12910 YY_RULE_SETUP
12911-#line 108 "sip-4.19.12/sipgen/metasrc/lexer.l"
12912+#line 108 "sipgen/metasrc/lexer.l"
12913 {return TK_SIGNALS;}
12914 YY_BREAK
12915 case 33:
12916 YY_RULE_SETUP
12917-#line 109 "sip-4.19.12/sipgen/metasrc/lexer.l"
12918+#line 109 "sipgen/metasrc/lexer.l"
12919 {return TK_SIGNALS;}
12920 YY_BREAK
12921 case 34:
12922 YY_RULE_SETUP
12923-#line 110 "sip-4.19.12/sipgen/metasrc/lexer.l"
12924+#line 110 "sipgen/metasrc/lexer.l"
12925 {return TK_SIGNAL_METHOD;}
12926 YY_BREAK
12927 case 35:
12928 YY_RULE_SETUP
12929-#line 111 "sip-4.19.12/sipgen/metasrc/lexer.l"
12930+#line 111 "sipgen/metasrc/lexer.l"
12931 {return TK_SLOTS;}
12932 YY_BREAK
12933 case 36:
12934 YY_RULE_SETUP
12935-#line 112 "sip-4.19.12/sipgen/metasrc/lexer.l"
12936+#line 112 "sipgen/metasrc/lexer.l"
12937 {return TK_SLOTS;}
12938 YY_BREAK
12939 case 37:
12940 YY_RULE_SETUP
12941-#line 113 "sip-4.19.12/sipgen/metasrc/lexer.l"
12942+#line 113 "sipgen/metasrc/lexer.l"
12943 {return TK_SLOT_METHOD;}
12944 YY_BREAK
12945 case 38:
12946 YY_RULE_SETUP
12947-#line 114 "sip-4.19.12/sipgen/metasrc/lexer.l"
12948+#line 114 "sipgen/metasrc/lexer.l"
12949 {return TK_CHAR;}
12950 YY_BREAK
12951 case 39:
12952 YY_RULE_SETUP
12953-#line 115 "sip-4.19.12/sipgen/metasrc/lexer.l"
12954+#line 115 "sipgen/metasrc/lexer.l"
12955 {return TK_WCHAR_T;}
12956 YY_BREAK
12957 case 40:
12958 YY_RULE_SETUP
12959-#line 116 "sip-4.19.12/sipgen/metasrc/lexer.l"
12960+#line 116 "sipgen/metasrc/lexer.l"
12961 {return TK_BOOL;}
12962 YY_BREAK
12963 case 41:
12964 YY_RULE_SETUP
12965-#line 117 "sip-4.19.12/sipgen/metasrc/lexer.l"
12966+#line 117 "sipgen/metasrc/lexer.l"
12967 {return TK_SHORT;}
12968 YY_BREAK
12969 case 42:
12970 YY_RULE_SETUP
12971-#line 118 "sip-4.19.12/sipgen/metasrc/lexer.l"
12972+#line 118 "sipgen/metasrc/lexer.l"
12973 {return TK_INT;}
12974 YY_BREAK
12975 case 43:
12976 YY_RULE_SETUP
12977-#line 119 "sip-4.19.12/sipgen/metasrc/lexer.l"
12978+#line 119 "sipgen/metasrc/lexer.l"
12979 {return TK_LONG;}
12980 YY_BREAK
12981 case 44:
12982 YY_RULE_SETUP
12983-#line 120 "sip-4.19.12/sipgen/metasrc/lexer.l"
12984+#line 120 "sipgen/metasrc/lexer.l"
12985 {return TK_FLOAT;}
12986 YY_BREAK
12987 case 45:
12988 YY_RULE_SETUP
12989-#line 121 "sip-4.19.12/sipgen/metasrc/lexer.l"
12990+#line 121 "sipgen/metasrc/lexer.l"
12991 {return TK_DOUBLE;}
12992 YY_BREAK
12993 case 46:
12994 YY_RULE_SETUP
12995-#line 122 "sip-4.19.12/sipgen/metasrc/lexer.l"
12996+#line 122 "sipgen/metasrc/lexer.l"
12997 {return TK_VOID;}
12998 YY_BREAK
12999 case 47:
13000 YY_RULE_SETUP
13001-#line 123 "sip-4.19.12/sipgen/metasrc/lexer.l"
13002+#line 123 "sipgen/metasrc/lexer.l"
13003 {return TK_VIRTUAL;}
13004 YY_BREAK
13005 case 48:
13006 YY_RULE_SETUP
13007-#line 124 "sip-4.19.12/sipgen/metasrc/lexer.l"
13008+#line 124 "sipgen/metasrc/lexer.l"
13009 {return TK_ENUM;}
13010 YY_BREAK
13011 case 49:
13012 YY_RULE_SETUP
13013-#line 125 "sip-4.19.12/sipgen/metasrc/lexer.l"
13014+#line 125 "sipgen/metasrc/lexer.l"
13015 {return TK_SIGNED;}
13016 YY_BREAK
13017 case 50:
13018 YY_RULE_SETUP
13019-#line 126 "sip-4.19.12/sipgen/metasrc/lexer.l"
13020+#line 126 "sipgen/metasrc/lexer.l"
13021 {return TK_UNSIGNED;}
13022 YY_BREAK
13023 case 51:
13024 YY_RULE_SETUP
13025-#line 127 "sip-4.19.12/sipgen/metasrc/lexer.l"
13026+#line 127 "sipgen/metasrc/lexer.l"
13027 {return TK_CONST;}
13028 YY_BREAK
13029 case 52:
13030 YY_RULE_SETUP
13031-#line 128 "sip-4.19.12/sipgen/metasrc/lexer.l"
13032+#line 128 "sipgen/metasrc/lexer.l"
13033 {return TK_STATIC;}
13034 YY_BREAK
13035 case 53:
13036 YY_RULE_SETUP
13037-#line 129 "sip-4.19.12/sipgen/metasrc/lexer.l"
13038+#line 129 "sipgen/metasrc/lexer.l"
13039 {return TK_TRUE_VALUE;}
13040 YY_BREAK
13041 case 54:
13042 YY_RULE_SETUP
13043-#line 130 "sip-4.19.12/sipgen/metasrc/lexer.l"
13044+#line 130 "sipgen/metasrc/lexer.l"
13045 {return TK_FALSE_VALUE;}
13046 YY_BREAK
13047 case 55:
13048 YY_RULE_SETUP
13049-#line 131 "sip-4.19.12/sipgen/metasrc/lexer.l"
13050+#line 131 "sipgen/metasrc/lexer.l"
13051 {return TK_NULL_VALUE;}
13052 YY_BREAK
13053 case 56:
13054 YY_RULE_SETUP
13055-#line 132 "sip-4.19.12/sipgen/metasrc/lexer.l"
13056+#line 132 "sipgen/metasrc/lexer.l"
13057 {return TK_TYPEDEF;}
13058 YY_BREAK
13059 case 57:
13060 YY_RULE_SETUP
13061-#line 133 "sip-4.19.12/sipgen/metasrc/lexer.l"
13062+#line 133 "sipgen/metasrc/lexer.l"
13063 {return TK_NAMESPACE;}
13064 YY_BREAK
13065 case 58:
13066 YY_RULE_SETUP
13067-#line 134 "sip-4.19.12/sipgen/metasrc/lexer.l"
13068+#line 134 "sipgen/metasrc/lexer.l"
13069 {return TK_OPERATOR;}
13070 YY_BREAK
13071 case 59:
13072 YY_RULE_SETUP
13073-#line 135 "sip-4.19.12/sipgen/metasrc/lexer.l"
13074+#line 135 "sipgen/metasrc/lexer.l"
13075 {return TK_THROW;}
13076 YY_BREAK
13077 case 60:
13078 YY_RULE_SETUP
13079-#line 136 "sip-4.19.12/sipgen/metasrc/lexer.l"
13080+#line 136 "sipgen/metasrc/lexer.l"
13081 {return TK_EXPLICIT;}
13082 YY_BREAK
13083 case 61:
13084 YY_RULE_SETUP
13085-#line 137 "sip-4.19.12/sipgen/metasrc/lexer.l"
13086+#line 137 "sipgen/metasrc/lexer.l"
13087 {return TK_TEMPLATE;}
13088 YY_BREAK
13089 case 62:
13090 YY_RULE_SETUP
13091-#line 138 "sip-4.19.12/sipgen/metasrc/lexer.l"
13092+#line 138 "sipgen/metasrc/lexer.l"
13093 {return TK_FINAL;}
13094 YY_BREAK
13095 case 63:
13096 YY_RULE_SETUP
13097-#line 139 "sip-4.19.12/sipgen/metasrc/lexer.l"
13098+#line 139 "sipgen/metasrc/lexer.l"
13099 {return TK_SCOPE;}
13100 YY_BREAK
13101 case 64:
13102 YY_RULE_SETUP
13103-#line 140 "sip-4.19.12/sipgen/metasrc/lexer.l"
13104+#line 140 "sipgen/metasrc/lexer.l"
13105 {return TK_LOGICAL_OR;}
13106 YY_BREAK
13107 case 65:
13108 YY_RULE_SETUP
13109-#line 141 "sip-4.19.12/sipgen/metasrc/lexer.l"
13110+#line 141 "sipgen/metasrc/lexer.l"
13111 {return TK_PYOBJECT;}
13112 YY_BREAK
13113 case 66:
13114 YY_RULE_SETUP
13115-#line 142 "sip-4.19.12/sipgen/metasrc/lexer.l"
13116+#line 142 "sipgen/metasrc/lexer.l"
13117 {return TK_PYTUPLE;}
13118 YY_BREAK
13119 case 67:
13120 YY_RULE_SETUP
13121-#line 143 "sip-4.19.12/sipgen/metasrc/lexer.l"
13122+#line 143 "sipgen/metasrc/lexer.l"
13123 {return TK_PYLIST;}
13124 YY_BREAK
13125 case 68:
13126 YY_RULE_SETUP
13127-#line 144 "sip-4.19.12/sipgen/metasrc/lexer.l"
13128+#line 144 "sipgen/metasrc/lexer.l"
13129 {return TK_PYDICT;}
13130 YY_BREAK
13131 case 69:
13132 YY_RULE_SETUP
13133-#line 145 "sip-4.19.12/sipgen/metasrc/lexer.l"
13134+#line 145 "sipgen/metasrc/lexer.l"
13135 {return TK_PYCALLABLE;}
13136 YY_BREAK
13137 case 70:
13138 YY_RULE_SETUP
13139-#line 146 "sip-4.19.12/sipgen/metasrc/lexer.l"
13140+#line 146 "sipgen/metasrc/lexer.l"
13141 {return TK_PYSLICE;}
13142 YY_BREAK
13143 case 71:
13144 YY_RULE_SETUP
13145-#line 147 "sip-4.19.12/sipgen/metasrc/lexer.l"
13146+#line 147 "sipgen/metasrc/lexer.l"
13147 {return TK_PYTYPE;}
13148 YY_BREAK
13149 case 72:
13150 YY_RULE_SETUP
13151-#line 148 "sip-4.19.12/sipgen/metasrc/lexer.l"
13152+#line 148 "sipgen/metasrc/lexer.l"
13153 {return TK_PYBUFFER;}
13154 YY_BREAK
13155 case 73:
13156 YY_RULE_SETUP
13157-#line 149 "sip-4.19.12/sipgen/metasrc/lexer.l"
13158+#line 149 "sipgen/metasrc/lexer.l"
13159 {return TK_SIPSIGNAL;}
13160 YY_BREAK
13161 case 74:
13162 YY_RULE_SETUP
13163-#line 150 "sip-4.19.12/sipgen/metasrc/lexer.l"
13164+#line 150 "sipgen/metasrc/lexer.l"
13165 {return TK_SIPSLOT;}
13166 YY_BREAK
13167 case 75:
13168 YY_RULE_SETUP
13169-#line 151 "sip-4.19.12/sipgen/metasrc/lexer.l"
13170+#line 151 "sipgen/metasrc/lexer.l"
13171 {return TK_SIPANYSLOT;}
13172 YY_BREAK
13173 case 76:
13174 YY_RULE_SETUP
13175-#line 152 "sip-4.19.12/sipgen/metasrc/lexer.l"
13176+#line 152 "sipgen/metasrc/lexer.l"
13177 {return TK_SIPRXCON;}
13178 YY_BREAK
13179 case 77:
13180 YY_RULE_SETUP
13181-#line 153 "sip-4.19.12/sipgen/metasrc/lexer.l"
13182+#line 153 "sipgen/metasrc/lexer.l"
13183 {return TK_SIPRXDIS;}
13184 YY_BREAK
13185 case 78:
13186 YY_RULE_SETUP
13187-#line 154 "sip-4.19.12/sipgen/metasrc/lexer.l"
13188+#line 154 "sipgen/metasrc/lexer.l"
13189 {return TK_SIPSLOTCON;}
13190 YY_BREAK
13191 case 79:
13192 YY_RULE_SETUP
13193-#line 155 "sip-4.19.12/sipgen/metasrc/lexer.l"
13194+#line 155 "sipgen/metasrc/lexer.l"
13195 {return TK_SIPSLOTDIS;}
13196 YY_BREAK
13197 case 80:
13198 YY_RULE_SETUP
13199-#line 156 "sip-4.19.12/sipgen/metasrc/lexer.l"
13200+#line 156 "sipgen/metasrc/lexer.l"
13201 {return TK_SIPSSIZET;}
13202 YY_BREAK
13203 case 81:
13204 YY_RULE_SETUP
13205-#line 157 "sip-4.19.12/sipgen/metasrc/lexer.l"
13206+#line 157 "sipgen/metasrc/lexer.l"
13207 {return TK_QOBJECT;}
13208 YY_BREAK
13209 case 82:
13210 YY_RULE_SETUP
13211-#line 158 "sip-4.19.12/sipgen/metasrc/lexer.l"
13212+#line 158 "sipgen/metasrc/lexer.l"
13213 {return TK_ELLIPSIS;}
13214 YY_BREAK
13215 case 83:
13216 YY_RULE_SETUP
13217-#line 160 "sip-4.19.12/sipgen/metasrc/lexer.l"
13218+#line 160 "sipgen/metasrc/lexer.l"
13219 {return TK_FORMAT;}
13220 YY_BREAK
13221 case 84:
13222 YY_RULE_SETUP
13223-#line 161 "sip-4.19.12/sipgen/metasrc/lexer.l"
13224+#line 161 "sipgen/metasrc/lexer.l"
13225 {return TK_GET;}
13226 YY_BREAK
13227 case 85:
13228 YY_RULE_SETUP
13229-#line 162 "sip-4.19.12/sipgen/metasrc/lexer.l"
13230+#line 162 "sipgen/metasrc/lexer.l"
13231 {return TK_ID;}
13232 YY_BREAK
13233 case 86:
13234 YY_RULE_SETUP
13235-#line 163 "sip-4.19.12/sipgen/metasrc/lexer.l"
13236+#line 163 "sipgen/metasrc/lexer.l"
13237 {return TK_KWARGS;}
13238 YY_BREAK
13239 case 87:
13240 YY_RULE_SETUP
13241-#line 164 "sip-4.19.12/sipgen/metasrc/lexer.l"
13242+#line 164 "sipgen/metasrc/lexer.l"
13243 {return TK_LANGUAGE;}
13244 YY_BREAK
13245 case 88:
13246 YY_RULE_SETUP
13247-#line 165 "sip-4.19.12/sipgen/metasrc/lexer.l"
13248+#line 165 "sipgen/metasrc/lexer.l"
13249 {return TK_LICENSEE;}
13250 YY_BREAK
13251 case 89:
13252 YY_RULE_SETUP
13253-#line 166 "sip-4.19.12/sipgen/metasrc/lexer.l"
13254+#line 166 "sipgen/metasrc/lexer.l"
13255 {return TK_NAME;}
13256 YY_BREAK
13257 case 90:
13258 YY_RULE_SETUP
13259-#line 167 "sip-4.19.12/sipgen/metasrc/lexer.l"
13260+#line 167 "sipgen/metasrc/lexer.l"
13261 {return TK_OPTIONAL;}
13262 YY_BREAK
13263 case 91:
13264 YY_RULE_SETUP
13265-#line 168 "sip-4.19.12/sipgen/metasrc/lexer.l"
13266+#line 168 "sipgen/metasrc/lexer.l"
13267 {return TK_ORDER;}
13268 YY_BREAK
13269 case 92:
13270 YY_RULE_SETUP
13271-#line 169 "sip-4.19.12/sipgen/metasrc/lexer.l"
13272+#line 169 "sipgen/metasrc/lexer.l"
13273 {return TK_REMOVELEADING;}
13274 YY_BREAK
13275 case 93:
13276 YY_RULE_SETUP
13277-#line 170 "sip-4.19.12/sipgen/metasrc/lexer.l"
13278+#line 170 "sipgen/metasrc/lexer.l"
13279 {return TK_SET;}
13280 YY_BREAK
13281 case 94:
13282 YY_RULE_SETUP
13283-#line 171 "sip-4.19.12/sipgen/metasrc/lexer.l"
13284+#line 171 "sipgen/metasrc/lexer.l"
13285 {return TK_SIGNATURE;}
13286 YY_BREAK
13287 case 95:
13288 YY_RULE_SETUP
13289-#line 172 "sip-4.19.12/sipgen/metasrc/lexer.l"
13290+#line 172 "sipgen/metasrc/lexer.l"
13291 {return TK_TIMESTAMP;}
13292 YY_BREAK
13293 case 96:
13294 YY_RULE_SETUP
13295-#line 173 "sip-4.19.12/sipgen/metasrc/lexer.l"
13296+#line 173 "sipgen/metasrc/lexer.l"
13297 {return TK_TYPE;}
13298 YY_BREAK
13299 case 97:
13300 YY_RULE_SETUP
13301-#line 174 "sip-4.19.12/sipgen/metasrc/lexer.l"
13302+#line 174 "sipgen/metasrc/lexer.l"
13303 {return TK_USEARGNAMES;}
13304 YY_BREAK
13305 case 98:
13306 YY_RULE_SETUP
13307-#line 175 "sip-4.19.12/sipgen/metasrc/lexer.l"
13308+#line 175 "sipgen/metasrc/lexer.l"
13309 {return TK_USELIMITEDAPI;}
13310 YY_BREAK
13311 case 99:
13312 YY_RULE_SETUP
13313-#line 176 "sip-4.19.12/sipgen/metasrc/lexer.l"
13314+#line 176 "sipgen/metasrc/lexer.l"
13315 {return TK_ALLRAISEPYEXC;}
13316 YY_BREAK
13317 case 100:
13318 YY_RULE_SETUP
13319-#line 177 "sip-4.19.12/sipgen/metasrc/lexer.l"
13320+#line 177 "sipgen/metasrc/lexer.l"
13321 {return TK_CALLSUPERINIT;}
13322 YY_BREAK
13323 case 101:
13324 YY_RULE_SETUP
13325-#line 178 "sip-4.19.12/sipgen/metasrc/lexer.l"
13326+#line 178 "sipgen/metasrc/lexer.l"
13327 {return TK_DEFERRORHANDLER;}
13328 YY_BREAK
13329 case 102:
13330 YY_RULE_SETUP
13331-#line 179 "sip-4.19.12/sipgen/metasrc/lexer.l"
13332+#line 179 "sipgen/metasrc/lexer.l"
13333 {return TK_VERSION;}
13334 YY_BREAK
13335 case 103:
13336 YY_RULE_SETUP
13337-#line 181 "sip-4.19.12/sipgen/metasrc/lexer.l"
13338+#line 181 "sipgen/metasrc/lexer.l"
13339 {return TK_TRUE_VALUE;}
13340 YY_BREAK
13341 case 104:
13342 YY_RULE_SETUP
13343-#line 182 "sip-4.19.12/sipgen/metasrc/lexer.l"
13344+#line 182 "sipgen/metasrc/lexer.l"
13345 {return TK_FALSE_VALUE;}
13346 YY_BREAK
13347 case 105:
13348 YY_RULE_SETUP
13349-#line 185 "sip-4.19.12/sipgen/metasrc/lexer.l"
13350+#line 185 "sipgen/metasrc/lexer.l"
13351 {
13352 /* Ignore whitespace. */
13353 ;
13354@@ -2376,7 +2386,7 @@
13355 YY_BREAK
13356 case 106:
13357 YY_RULE_SETUP
13358-#line 190 "sip-4.19.12/sipgen/metasrc/lexer.l"
13359+#line 190 "sipgen/metasrc/lexer.l"
13360 {
13361 /*
13362 * Maintain the parenthesis depth so that we don't enter the 'code' state
13363@@ -2391,7 +2401,7 @@
13364 YY_BREAK
13365 case 107:
13366 YY_RULE_SETUP
13367-#line 202 "sip-4.19.12/sipgen/metasrc/lexer.l"
13368+#line 202 "sipgen/metasrc/lexer.l"
13369 {
13370 /* Maintain the parenthesis depth. */
13371 --parenDepth;
13372@@ -2404,7 +2414,7 @@
13373 case 108:
13374 /* rule 108 can match eol */
13375 YY_RULE_SETUP
13376-#line 211 "sip-4.19.12/sipgen/metasrc/lexer.l"
13377+#line 211 "sipgen/metasrc/lexer.l"
13378 {
13379 /* Maintain the line number. */
13380 ++inputFileStack[currentFile].sloc.linenr;
13381@@ -2417,7 +2427,7 @@
13382 YY_BREAK
13383 case 109:
13384 YY_RULE_SETUP
13385-#line 221 "sip-4.19.12/sipgen/metasrc/lexer.l"
13386+#line 221 "sipgen/metasrc/lexer.l"
13387 {
13388 /* Ignore C++ style comments. */
13389 ;
13390@@ -2425,7 +2435,7 @@
13391 YY_BREAK
13392 case 110:
13393 YY_RULE_SETUP
13394-#line 227 "sip-4.19.12/sipgen/metasrc/lexer.l"
13395+#line 227 "sipgen/metasrc/lexer.l"
13396 {
13397 /* A signed decimal number. */
13398 yylval.number = strtol(yytext,NULL,0);
13399@@ -2434,7 +2444,7 @@
13400 YY_BREAK
13401 case 111:
13402 YY_RULE_SETUP
13403-#line 234 "sip-4.19.12/sipgen/metasrc/lexer.l"
13404+#line 234 "sipgen/metasrc/lexer.l"
13405 {
13406 /* A floating point number. */
13407 yylval.real = strtod(yytext,NULL);
13408@@ -2443,7 +2453,7 @@
13409 YY_BREAK
13410 case 112:
13411 YY_RULE_SETUP
13412-#line 241 "sip-4.19.12/sipgen/metasrc/lexer.l"
13413+#line 241 "sipgen/metasrc/lexer.l"
13414 {
13415 /* An unsigned hexadecimal number. */
13416 yylval.number = strtol(yytext,NULL,16);
13417@@ -2452,7 +2462,7 @@
13418 YY_BREAK
13419 case 113:
13420 YY_RULE_SETUP
13421-#line 248 "sip-4.19.12/sipgen/metasrc/lexer.l"
13422+#line 248 "sipgen/metasrc/lexer.l"
13423 {
13424 /* An identifier name. */
13425 yylval.text = sipStrdup(yytext);
13426@@ -2461,7 +2471,7 @@
13427 YY_BREAK
13428 case 114:
13429 YY_RULE_SETUP
13430-#line 255 "sip-4.19.12/sipgen/metasrc/lexer.l"
13431+#line 255 "sipgen/metasrc/lexer.l"
13432 {
13433 /* A relative pathname. */
13434 yylval.text = sipStrdup(yytext);
13435@@ -2471,7 +2481,7 @@
13436 case 115:
13437 /* rule 115 can match eol */
13438 YY_RULE_SETUP
13439-#line 262 "sip-4.19.12/sipgen/metasrc/lexer.l"
13440+#line 262 "sipgen/metasrc/lexer.l"
13441 {
13442 /* A double-quoted string. */
13443 char ch, *dp, *sp;
13444@@ -2510,7 +2520,7 @@
13445 case 116:
13446 /* rule 116 can match eol */
13447 YY_RULE_SETUP
13448-#line 298 "sip-4.19.12/sipgen/metasrc/lexer.l"
13449+#line 298 "sipgen/metasrc/lexer.l"
13450 {
13451 /* A single-quoted character. */
13452 if (strlen(yytext) != 3)
13453@@ -2523,7 +2533,7 @@
13454 YY_BREAK
13455 case 117:
13456 YY_RULE_SETUP
13457-#line 309 "sip-4.19.12/sipgen/metasrc/lexer.l"
13458+#line 309 "sipgen/metasrc/lexer.l"
13459 {
13460 /* Ignore C-style comments. */
13461 yy_push_state(ccomment);
13462@@ -2532,28 +2542,28 @@
13463 case 118:
13464 /* rule 118 can match eol */
13465 YY_RULE_SETUP
13466-#line 313 "sip-4.19.12/sipgen/metasrc/lexer.l"
13467+#line 313 "sipgen/metasrc/lexer.l"
13468 {
13469 ++inputFileStack[currentFile].sloc.linenr;
13470 }
13471 YY_BREAK
13472 case 119:
13473 YY_RULE_SETUP
13474-#line 316 "sip-4.19.12/sipgen/metasrc/lexer.l"
13475+#line 316 "sipgen/metasrc/lexer.l"
13476 {
13477 yy_pop_state();
13478 }
13479 YY_BREAK
13480 case 120:
13481 YY_RULE_SETUP
13482-#line 319 "sip-4.19.12/sipgen/metasrc/lexer.l"
13483+#line 319 "sipgen/metasrc/lexer.l"
13484 {
13485 ;
13486 }
13487 YY_BREAK
13488 case 121:
13489 YY_RULE_SETUP
13490-#line 324 "sip-4.19.12/sipgen/metasrc/lexer.l"
13491+#line 324 "sipgen/metasrc/lexer.l"
13492 {
13493 /* The software license. */
13494 codeIdx = 0;
13495@@ -2562,7 +2572,7 @@
13496 YY_BREAK
13497 case 122:
13498 YY_RULE_SETUP
13499-#line 330 "sip-4.19.12/sipgen/metasrc/lexer.l"
13500+#line 330 "sipgen/metasrc/lexer.l"
13501 {
13502 /* The start of a from-type code block. */
13503 codeIdx = 0;
13504@@ -2571,7 +2581,7 @@
13505 YY_BREAK
13506 case 123:
13507 YY_RULE_SETUP
13508-#line 336 "sip-4.19.12/sipgen/metasrc/lexer.l"
13509+#line 336 "sipgen/metasrc/lexer.l"
13510 {
13511 /* The start of a to-type code block. */
13512 codeIdx = 0;
13513@@ -2580,7 +2590,7 @@
13514 YY_BREAK
13515 case 124:
13516 YY_RULE_SETUP
13517-#line 342 "sip-4.19.12/sipgen/metasrc/lexer.l"
13518+#line 342 "sipgen/metasrc/lexer.l"
13519 {
13520 /* The start of a to-sub-class code block. */
13521 codeIdx = 0;
13522@@ -2589,7 +2599,7 @@
13523 YY_BREAK
13524 case 125:
13525 YY_RULE_SETUP
13526-#line 348 "sip-4.19.12/sipgen/metasrc/lexer.l"
13527+#line 348 "sipgen/metasrc/lexer.l"
13528 {
13529 /* The start of an exported header code block. */
13530 codeIdx = 0;
13531@@ -2598,7 +2608,7 @@
13532 YY_BREAK
13533 case 126:
13534 YY_RULE_SETUP
13535-#line 354 "sip-4.19.12/sipgen/metasrc/lexer.l"
13536+#line 354 "sipgen/metasrc/lexer.l"
13537 {
13538 /* The start of part of an extract. */
13539 codeIdx = 0;
13540@@ -2610,7 +2620,7 @@
13541 YY_BREAK
13542 case 127:
13543 YY_RULE_SETUP
13544-#line 363 "sip-4.19.12/sipgen/metasrc/lexer.l"
13545+#line 363 "sipgen/metasrc/lexer.l"
13546 {
13547 /* The start of a module header code block. */
13548 codeIdx = 0;
13549@@ -2619,7 +2629,7 @@
13550 YY_BREAK
13551 case 128:
13552 YY_RULE_SETUP
13553-#line 369 "sip-4.19.12/sipgen/metasrc/lexer.l"
13554+#line 369 "sipgen/metasrc/lexer.l"
13555 {
13556 /* The start of a type header code block. */
13557 codeIdx = 0;
13558@@ -2628,7 +2638,7 @@
13559 YY_BREAK
13560 case 129:
13561 YY_RULE_SETUP
13562-#line 375 "sip-4.19.12/sipgen/metasrc/lexer.l"
13563+#line 375 "sipgen/metasrc/lexer.l"
13564 {
13565 /* The start of a pre-initialisation code block. */
13566 codeIdx = 0;
13567@@ -2637,7 +2647,7 @@
13568 YY_BREAK
13569 case 130:
13570 YY_RULE_SETUP
13571-#line 381 "sip-4.19.12/sipgen/metasrc/lexer.l"
13572+#line 381 "sipgen/metasrc/lexer.l"
13573 {
13574 /* The start of an initialisation code block. */
13575 codeIdx = 0;
13576@@ -2646,7 +2656,7 @@
13577 YY_BREAK
13578 case 131:
13579 YY_RULE_SETUP
13580-#line 387 "sip-4.19.12/sipgen/metasrc/lexer.l"
13581+#line 387 "sipgen/metasrc/lexer.l"
13582 {
13583 /* The start of a post-initialisation code block. */
13584 codeIdx = 0;
13585@@ -2655,7 +2665,7 @@
13586 YY_BREAK
13587 case 132:
13588 YY_RULE_SETUP
13589-#line 393 "sip-4.19.12/sipgen/metasrc/lexer.l"
13590+#line 393 "sipgen/metasrc/lexer.l"
13591 {
13592 /* The start of a class finalisation code block. */
13593 codeIdx = 0;
13594@@ -2664,7 +2674,7 @@
13595 YY_BREAK
13596 case 133:
13597 YY_RULE_SETUP
13598-#line 399 "sip-4.19.12/sipgen/metasrc/lexer.l"
13599+#line 399 "sipgen/metasrc/lexer.l"
13600 {
13601 /* The start of a unit code block. */
13602 codeIdx = 0;
13603@@ -2673,7 +2683,7 @@
13604 YY_BREAK
13605 case 134:
13606 YY_RULE_SETUP
13607-#line 405 "sip-4.19.12/sipgen/metasrc/lexer.l"
13608+#line 405 "sipgen/metasrc/lexer.l"
13609 {
13610 /* The start of a unit post-include code block. */
13611 codeIdx = 0;
13612@@ -2682,7 +2692,7 @@
13613 YY_BREAK
13614 case 135:
13615 YY_RULE_SETUP
13616-#line 411 "sip-4.19.12/sipgen/metasrc/lexer.l"
13617+#line 411 "sipgen/metasrc/lexer.l"
13618 {
13619 /* The start of a module code block. */
13620 codeIdx = 0;
13621@@ -2691,7 +2701,7 @@
13622 YY_BREAK
13623 case 136:
13624 YY_RULE_SETUP
13625-#line 417 "sip-4.19.12/sipgen/metasrc/lexer.l"
13626+#line 417 "sipgen/metasrc/lexer.l"
13627 {
13628 /* The start of a type code block. */
13629 codeIdx = 0;
13630@@ -2700,7 +2710,7 @@
13631 YY_BREAK
13632 case 137:
13633 YY_RULE_SETUP
13634-#line 423 "sip-4.19.12/sipgen/metasrc/lexer.l"
13635+#line 423 "sipgen/metasrc/lexer.l"
13636 {
13637 /* The start of a C++ method code block. */
13638 codeIdx = 0;
13639@@ -2709,7 +2719,7 @@
13640 YY_BREAK
13641 case 138:
13642 YY_RULE_SETUP
13643-#line 429 "sip-4.19.12/sipgen/metasrc/lexer.l"
13644+#line 429 "sipgen/metasrc/lexer.l"
13645 {
13646 /* The start of a C++ code block to insert before the MethodCode. */
13647 codeIdx = 0;
13648@@ -2718,7 +2728,7 @@
13649 YY_BREAK
13650 case 139:
13651 YY_RULE_SETUP
13652-#line 435 "sip-4.19.12/sipgen/metasrc/lexer.l"
13653+#line 435 "sipgen/metasrc/lexer.l"
13654 {
13655 /* The start of a C++ virtual call code block. */
13656 codeIdx = 0;
13657@@ -2727,7 +2737,7 @@
13658 YY_BREAK
13659 case 140:
13660 YY_RULE_SETUP
13661-#line 441 "sip-4.19.12/sipgen/metasrc/lexer.l"
13662+#line 441 "sipgen/metasrc/lexer.l"
13663 {
13664 /* The start of a C++ virtual code block. */
13665 codeIdx = 0;
13666@@ -2736,7 +2746,7 @@
13667 YY_BREAK
13668 case 141:
13669 YY_RULE_SETUP
13670-#line 447 "sip-4.19.12/sipgen/metasrc/lexer.l"
13671+#line 447 "sipgen/metasrc/lexer.l"
13672 {
13673 /* The start of a traverse code block. */
13674 codeIdx = 0;
13675@@ -2745,7 +2755,7 @@
13676 YY_BREAK
13677 case 142:
13678 YY_RULE_SETUP
13679-#line 453 "sip-4.19.12/sipgen/metasrc/lexer.l"
13680+#line 453 "sipgen/metasrc/lexer.l"
13681 {
13682 /* The start of a clear code block. */
13683 codeIdx = 0;
13684@@ -2754,7 +2764,7 @@
13685 YY_BREAK
13686 case 143:
13687 YY_RULE_SETUP
13688-#line 459 "sip-4.19.12/sipgen/metasrc/lexer.l"
13689+#line 459 "sipgen/metasrc/lexer.l"
13690 {
13691 /* The start of a get buffer code block. */
13692 codeIdx = 0;
13693@@ -2763,7 +2773,7 @@
13694 YY_BREAK
13695 case 144:
13696 YY_RULE_SETUP
13697-#line 465 "sip-4.19.12/sipgen/metasrc/lexer.l"
13698+#line 465 "sipgen/metasrc/lexer.l"
13699 {
13700 /* The start of a release buffer code block. */
13701 codeIdx = 0;
13702@@ -2772,7 +2782,7 @@
13703 YY_BREAK
13704 case 145:
13705 YY_RULE_SETUP
13706-#line 471 "sip-4.19.12/sipgen/metasrc/lexer.l"
13707+#line 471 "sipgen/metasrc/lexer.l"
13708 {
13709 /* The start of a read buffer code block. */
13710 codeIdx = 0;
13711@@ -2781,7 +2791,7 @@
13712 YY_BREAK
13713 case 146:
13714 YY_RULE_SETUP
13715-#line 477 "sip-4.19.12/sipgen/metasrc/lexer.l"
13716+#line 477 "sipgen/metasrc/lexer.l"
13717 {
13718 /* The start of a write buffer code block. */
13719 codeIdx = 0;
13720@@ -2790,7 +2800,7 @@
13721 YY_BREAK
13722 case 147:
13723 YY_RULE_SETUP
13724-#line 483 "sip-4.19.12/sipgen/metasrc/lexer.l"
13725+#line 483 "sipgen/metasrc/lexer.l"
13726 {
13727 /* The start of a segment count code block. */
13728 codeIdx = 0;
13729@@ -2799,7 +2809,7 @@
13730 YY_BREAK
13731 case 148:
13732 YY_RULE_SETUP
13733-#line 489 "sip-4.19.12/sipgen/metasrc/lexer.l"
13734+#line 489 "sipgen/metasrc/lexer.l"
13735 {
13736 /* The start of a char buffer code block. */
13737 codeIdx = 0;
13738@@ -2808,7 +2818,7 @@
13739 YY_BREAK
13740 case 149:
13741 YY_RULE_SETUP
13742-#line 495 "sip-4.19.12/sipgen/metasrc/lexer.l"
13743+#line 495 "sipgen/metasrc/lexer.l"
13744 {
13745 /* The start of a create instance code block. */
13746 codeIdx = 0;
13747@@ -2817,7 +2827,7 @@
13748 YY_BREAK
13749 case 150:
13750 YY_RULE_SETUP
13751-#line 501 "sip-4.19.12/sipgen/metasrc/lexer.l"
13752+#line 501 "sipgen/metasrc/lexer.l"
13753 {
13754 /* The start of a pickle code block. */
13755 codeIdx = 0;
13756@@ -2826,7 +2836,7 @@
13757 YY_BREAK
13758 case 151:
13759 YY_RULE_SETUP
13760-#line 507 "sip-4.19.12/sipgen/metasrc/lexer.l"
13761+#line 507 "sipgen/metasrc/lexer.l"
13762 {
13763 /* The start of a pre-Python code block. */
13764 deprecated("%PrePythonCode is deprecated");
13765@@ -2837,7 +2847,7 @@
13766 YY_BREAK
13767 case 152:
13768 YY_RULE_SETUP
13769-#line 515 "sip-4.19.12/sipgen/metasrc/lexer.l"
13770+#line 515 "sipgen/metasrc/lexer.l"
13771 {
13772 /* The start of a raise Python exception code block. */
13773 codeIdx = 0;
13774@@ -2846,7 +2856,7 @@
13775 YY_BREAK
13776 case 153:
13777 YY_RULE_SETUP
13778-#line 521 "sip-4.19.12/sipgen/metasrc/lexer.l"
13779+#line 521 "sipgen/metasrc/lexer.l"
13780 {
13781 /* The start of an exported type hint code block. */
13782 codeIdx = 0;
13783@@ -2855,7 +2865,7 @@
13784 YY_BREAK
13785 case 154:
13786 YY_RULE_SETUP
13787-#line 527 "sip-4.19.12/sipgen/metasrc/lexer.l"
13788+#line 527 "sipgen/metasrc/lexer.l"
13789 {
13790 /* The start of a type hint code block. */
13791 codeIdx = 0;
13792@@ -2864,7 +2874,7 @@
13793 YY_BREAK
13794 case 155:
13795 YY_RULE_SETUP
13796-#line 533 "sip-4.19.12/sipgen/metasrc/lexer.l"
13797+#line 533 "sipgen/metasrc/lexer.l"
13798 {
13799 /* The start of a docstring block. */
13800 codeIdx = 0;
13801@@ -2876,7 +2886,7 @@
13802 YY_BREAK
13803 case 156:
13804 YY_RULE_SETUP
13805-#line 542 "sip-4.19.12/sipgen/metasrc/lexer.l"
13806+#line 542 "sipgen/metasrc/lexer.l"
13807 {
13808 /* The start of a documentation block. */
13809 deprecated("%Doc is deprecated, use %Extract instead");
13810@@ -2887,7 +2897,7 @@
13811 YY_BREAK
13812 case 157:
13813 YY_RULE_SETUP
13814-#line 550 "sip-4.19.12/sipgen/metasrc/lexer.l"
13815+#line 550 "sipgen/metasrc/lexer.l"
13816 {
13817 /* The start of an exported documentation block. */
13818 deprecated("%ExportedDoc is deprecated, use %Extract instead");
13819@@ -2898,7 +2908,7 @@
13820 YY_BREAK
13821 case 158:
13822 YY_RULE_SETUP
13823-#line 558 "sip-4.19.12/sipgen/metasrc/lexer.l"
13824+#line 558 "sipgen/metasrc/lexer.l"
13825 {
13826 /* The start of a Makefile code block. */
13827 deprecated("%Makefile is deprecated");
13828@@ -2909,7 +2919,7 @@
13829 YY_BREAK
13830 case 159:
13831 YY_RULE_SETUP
13832-#line 566 "sip-4.19.12/sipgen/metasrc/lexer.l"
13833+#line 566 "sipgen/metasrc/lexer.l"
13834 {
13835 /* The start of an access code block. */
13836 codeIdx = 0;
13837@@ -2918,7 +2928,7 @@
13838 YY_BREAK
13839 case 160:
13840 YY_RULE_SETUP
13841-#line 572 "sip-4.19.12/sipgen/metasrc/lexer.l"
13842+#line 572 "sipgen/metasrc/lexer.l"
13843 {
13844 /* The start of a get code block. */
13845 codeIdx = 0;
13846@@ -2927,7 +2937,7 @@
13847 YY_BREAK
13848 case 161:
13849 YY_RULE_SETUP
13850-#line 578 "sip-4.19.12/sipgen/metasrc/lexer.l"
13851+#line 578 "sipgen/metasrc/lexer.l"
13852 {
13853 /* The start of a set code block. */
13854 codeIdx = 0;
13855@@ -2936,7 +2946,7 @@
13856 YY_BREAK
13857 case 162:
13858 YY_RULE_SETUP
13859-#line 584 "sip-4.19.12/sipgen/metasrc/lexer.l"
13860+#line 584 "sipgen/metasrc/lexer.l"
13861 {
13862 /* The start of part of a virtual error handler. */
13863 codeIdx = 0;
13864@@ -2948,7 +2958,7 @@
13865 YY_BREAK
13866 case 163:
13867 YY_RULE_SETUP
13868-#line 593 "sip-4.19.12/sipgen/metasrc/lexer.l"
13869+#line 593 "sipgen/metasrc/lexer.l"
13870 {
13871 /* The end of a code block. */
13872 BEGIN INITIAL;
13873@@ -2959,7 +2969,7 @@
13874 case 164:
13875 /* rule 164 can match eol */
13876 YY_RULE_SETUP
13877-#line 600 "sip-4.19.12/sipgen/metasrc/lexer.l"
13878+#line 600 "sipgen/metasrc/lexer.l"
13879 {
13880 /* The end of a code line . */
13881 struct inputFile *ifp;
13882@@ -2981,7 +2991,7 @@
13883 YY_BREAK
13884 case 165:
13885 YY_RULE_SETUP
13886-#line 619 "sip-4.19.12/sipgen/metasrc/lexer.l"
13887+#line 619 "sipgen/metasrc/lexer.l"
13888 {
13889 /* The contents of a code line. */
13890 if (codeIdx == MAX_CODE_LINE_LENGTH)
13891@@ -2992,7 +3002,7 @@
13892 YY_BREAK
13893 case 166:
13894 YY_RULE_SETUP
13895-#line 627 "sip-4.19.12/sipgen/metasrc/lexer.l"
13896+#line 627 "sipgen/metasrc/lexer.l"
13897 {
13898 /* Anything else is returned as is. */
13899 return yytext[0];
13900@@ -3000,10 +3010,10 @@
13901 YY_BREAK
13902 case 167:
13903 YY_RULE_SETUP
13904-#line 632 "sip-4.19.12/sipgen/metasrc/lexer.l"
13905+#line 632 "sipgen/metasrc/lexer.l"
13906 ECHO;
13907 YY_BREAK
13908-#line 3007 "sip-4.19.12/sipgen/lexer.c"
13909+#line 3017 "sipgen/lexer.c"
13910 case YY_STATE_EOF(INITIAL):
13911 case YY_STATE_EOF(code):
13912 case YY_STATE_EOF(ccomment):
13913@@ -3138,6 +3148,7 @@
13914 "fatal flex scanner internal error--no action found" );
13915 } /* end of action switch */
13916 } /* end of scanning one token */
13917+ } /* end of user's declarations */
13918 } /* end of yylex */
13919
13920 /* yy_get_next_buffer - try to read in a new buffer
13921@@ -3149,9 +3160,9 @@
13922 */
13923 static int yy_get_next_buffer (void)
13924 {
13925- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
13926- register char *source = (yytext_ptr);
13927- register int number_to_move, i;
13928+ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
13929+ char *source = (yytext_ptr);
13930+ yy_size_t number_to_move, i;
13931 int ret_val;
13932
13933 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
13934@@ -3180,7 +3191,7 @@
13935 /* Try to read more data. */
13936
13937 /* First move last chars to start of buffer. */
13938- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
13939+ number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
13940
13941 for ( i = 0; i < number_to_move; ++i )
13942 *(dest++) = *(source++);
13943@@ -3193,21 +3204,21 @@
13944
13945 else
13946 {
13947- yy_size_t num_to_read =
13948+ int num_to_read =
13949 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
13950
13951 while ( num_to_read <= 0 )
13952 { /* Not enough room in the buffer - grow it. */
13953
13954 /* just a shorter name for the current buffer */
13955- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
13956+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
13957
13958 int yy_c_buf_p_offset =
13959 (int) ((yy_c_buf_p) - b->yy_ch_buf);
13960
13961 if ( b->yy_is_our_buffer )
13962 {
13963- yy_size_t new_size = b->yy_buf_size * 2;
13964+ int new_size = b->yy_buf_size * 2;
13965
13966 if ( new_size <= 0 )
13967 b->yy_buf_size += b->yy_buf_size / 8;
13968@@ -3216,11 +3227,11 @@
13969
13970 b->yy_ch_buf = (char *)
13971 /* Include room in for 2 EOB chars. */
13972- yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
13973+ yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) );
13974 }
13975 else
13976 /* Can't grow it, we don't own it. */
13977- b->yy_ch_buf = 0;
13978+ b->yy_ch_buf = NULL;
13979
13980 if ( ! b->yy_ch_buf )
13981 YY_FATAL_ERROR(
13982@@ -3262,10 +3273,10 @@
13983 else
13984 ret_val = EOB_ACT_CONTINUE_SCAN;
13985
13986- if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
13987+ if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
13988 /* Extend the array by 50%, plus the number we really need. */
13989- yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
13990- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
13991+ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
13992+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size );
13993 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
13994 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
13995 }
13996@@ -3283,15 +3294,15 @@
13997
13998 static yy_state_type yy_get_previous_state (void)
13999 {
14000- register yy_state_type yy_current_state;
14001- register char *yy_cp;
14002+ yy_state_type yy_current_state;
14003+ char *yy_cp;
14004
14005 yy_current_state = (yy_start);
14006 yy_current_state += YY_AT_BOL();
14007
14008 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
14009 {
14010- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
14011+ YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
14012 if ( yy_accept[yy_current_state] )
14013 {
14014 (yy_last_accepting_state) = yy_current_state;
14015@@ -3303,7 +3314,7 @@
14016 if ( yy_current_state >= 1231 )
14017 yy_c = yy_meta[(unsigned int) yy_c];
14018 }
14019- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
14020+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
14021 }
14022
14023 return yy_current_state;
14024@@ -3316,10 +3327,10 @@
14025 */
14026 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
14027 {
14028- register int yy_is_jam;
14029- register char *yy_cp = (yy_c_buf_p);
14030+ int yy_is_jam;
14031+ char *yy_cp = (yy_c_buf_p);
14032
14033- register YY_CHAR yy_c = 1;
14034+ YY_CHAR yy_c = 1;
14035 if ( yy_accept[yy_current_state] )
14036 {
14037 (yy_last_accepting_state) = yy_current_state;
14038@@ -3331,15 +3342,17 @@
14039 if ( yy_current_state >= 1231 )
14040 yy_c = yy_meta[(unsigned int) yy_c];
14041 }
14042- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
14043+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
14044 yy_is_jam = (yy_current_state == 1230);
14045
14046- return yy_is_jam ? 0 : yy_current_state;
14047+ return yy_is_jam ? 0 : yy_current_state;
14048 }
14049
14050- static void yyunput (int c, register char * yy_bp )
14051+#ifndef YY_NO_UNPUT
14052+
14053+ static void yyunput (int c, char * yy_bp )
14054 {
14055- register char *yy_cp;
14056+ char *yy_cp;
14057
14058 yy_cp = (yy_c_buf_p);
14059
14060@@ -3349,10 +3362,10 @@
14061 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
14062 { /* need to shift things up to make room */
14063 /* +2 for EOB chars. */
14064- register yy_size_t number_to_move = (yy_n_chars) + 2;
14065- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
14066+ int number_to_move = (yy_n_chars) + 2;
14067+ char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
14068 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
14069- register char *source =
14070+ char *source =
14071 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
14072
14073 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
14074@@ -3361,7 +3374,7 @@
14075 yy_cp += (int) (dest - source);
14076 yy_bp += (int) (dest - source);
14077 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
14078- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
14079+ (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
14080
14081 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
14082 YY_FATAL_ERROR( "flex scanner push-back overflow" );
14083@@ -3374,6 +3387,8 @@
14084 (yy_c_buf_p) = yy_cp;
14085 }
14086
14087+#endif
14088+
14089 #ifndef YY_NO_INPUT
14090 #ifdef __cplusplus
14091 static int yyinput (void)
14092@@ -3398,7 +3413,7 @@
14093
14094 else
14095 { /* need more input */
14096- yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
14097+ int offset = (yy_c_buf_p) - (yytext_ptr);
14098 ++(yy_c_buf_p);
14099
14100 switch ( yy_get_next_buffer( ) )
14101@@ -3530,7 +3545,7 @@
14102 /* yy_ch_buf has to be 2 characters longer than the size given because
14103 * we need to put in 2 end-of-buffer characters.
14104 */
14105- b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
14106+ b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) );
14107 if ( ! b->yy_ch_buf )
14108 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
14109
14110@@ -3560,10 +3575,6 @@
14111 yyfree((void *) b );
14112 }
14113
14114-#ifndef __cplusplus
14115-extern int isatty (int );
14116-#endif /* __cplusplus */
14117-
14118 /* Initializes or reinitializes a buffer.
14119 * This function is sometimes called more than once on the same buffer,
14120 * such as during a yyrestart() or at EOF.
14121@@ -3676,7 +3687,7 @@
14122 */
14123 static void yyensure_buffer_stack (void)
14124 {
14125- yy_size_t num_to_alloc;
14126+ int num_to_alloc;
14127
14128 if (!(yy_buffer_stack)) {
14129
14130@@ -3684,7 +3695,7 @@
14131 * scanner will even need a stack. We use 2 instead of 1 to avoid an
14132 * immediate realloc on the next call.
14133 */
14134- num_to_alloc = 1;
14135+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
14136 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
14137 (num_to_alloc * sizeof(struct yy_buffer_state*)
14138 );
14139@@ -3701,7 +3712,7 @@
14140 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
14141
14142 /* Increase the buffer to prepare for a possible push. */
14143- int grow_size = 8 /* arbitrary grow size */;
14144+ yy_size_t grow_size = 8 /* arbitrary grow size */;
14145
14146 num_to_alloc = (yy_buffer_stack_max) + grow_size;
14147 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
14148@@ -3731,16 +3742,16 @@
14149 base[size-2] != YY_END_OF_BUFFER_CHAR ||
14150 base[size-1] != YY_END_OF_BUFFER_CHAR )
14151 /* They forgot to leave room for the EOB's. */
14152- return 0;
14153+ return NULL;
14154
14155 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
14156 if ( ! b )
14157 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
14158
14159- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
14160+ b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
14161 b->yy_buf_pos = b->yy_ch_buf = base;
14162 b->yy_is_our_buffer = 0;
14163- b->yy_input_file = 0;
14164+ b->yy_input_file = NULL;
14165 b->yy_n_chars = b->yy_buf_size;
14166 b->yy_is_interactive = 0;
14167 b->yy_at_bol = 1;
14168@@ -3763,24 +3774,25 @@
14169 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
14170 {
14171
14172- return yy_scan_bytes(yystr,strlen(yystr) );
14173+ return yy_scan_bytes(yystr,(int) strlen(yystr) );
14174 }
14175
14176 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
14177 * scan from a @e copy of @a bytes.
14178- * @param bytes the byte buffer to scan
14179- * @param len the number of bytes in the buffer pointed to by @a bytes.
14180+ * @param yybytes the byte buffer to scan
14181+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
14182 *
14183 * @return the newly allocated buffer state object.
14184 */
14185-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
14186+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
14187 {
14188 YY_BUFFER_STATE b;
14189 char *buf;
14190- yy_size_t n, i;
14191+ yy_size_t n;
14192+ yy_size_t i;
14193
14194 /* Get memory for full buffer, including space for trailing EOB's. */
14195- n = _yybytes_len + 2;
14196+ n = (yy_size_t) _yybytes_len + 2;
14197 buf = (char *) yyalloc(n );
14198 if ( ! buf )
14199 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
14200@@ -3802,14 +3814,14 @@
14201 return b;
14202 }
14203
14204- static void yy_push_state (int new_state )
14205+ static void yy_push_state (int _new_state )
14206 {
14207 if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
14208 {
14209 yy_size_t new_size;
14210
14211 (yy_start_stack_depth) += YY_START_STACK_INCR;
14212- new_size = (yy_start_stack_depth) * sizeof( int );
14213+ new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
14214
14215 if ( ! (yy_start_stack) )
14216 (yy_start_stack) = (int *) yyalloc(new_size );
14217@@ -3823,7 +3835,7 @@
14218
14219 (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
14220
14221- BEGIN(new_state);
14222+ BEGIN(_new_state);
14223 }
14224
14225 static void yy_pop_state (void)
14226@@ -3843,9 +3855,9 @@
14227 #define YY_EXIT_FAILURE 2
14228 #endif
14229
14230-static void yy_fatal_error (yyconst char* msg )
14231+static void yynoreturn yy_fatal_error (yyconst char* msg )
14232 {
14233- (void) fprintf( stderr, "%s\n", msg );
14234+ (void) fprintf( stderr, "%s\n", msg );
14235 exit( YY_EXIT_FAILURE );
14236 }
14237
14238@@ -3856,7 +3868,7 @@
14239 do \
14240 { \
14241 /* Undo effects of setting up yytext. */ \
14242- int yyless_macro_arg = (n); \
14243+ yy_size_t yyless_macro_arg = (n); \
14244 YY_LESS_LINENO(yyless_macro_arg);\
14245 yytext[yyleng] = (yy_hold_char); \
14246 (yy_c_buf_p) = yytext + yyless_macro_arg; \
14247@@ -3896,7 +3908,7 @@
14248 /** Get the length of the current token.
14249 *
14250 */
14251-yy_size_t yyget_leng (void)
14252+int yyget_leng (void)
14253 {
14254 return yyleng;
14255 }
14256@@ -3911,29 +3923,29 @@
14257 }
14258
14259 /** Set the current line number.
14260- * @param line_number
14261+ * @param _line_number line number
14262 *
14263 */
14264-void yyset_lineno (int line_number )
14265+void yyset_lineno (int _line_number )
14266 {
14267
14268- yylineno = line_number;
14269+ yylineno = _line_number;
14270 }
14271
14272 /** Set the input stream. This does not discard the current
14273 * input buffer.
14274- * @param in_str A readable stream.
14275+ * @param _in_str A readable stream.
14276 *
14277 * @see yy_switch_to_buffer
14278 */
14279-void yyset_in (FILE * in_str )
14280+void yyset_in (FILE * _in_str )
14281 {
14282- yyin = in_str ;
14283+ yyin = _in_str ;
14284 }
14285
14286-void yyset_out (FILE * out_str )
14287+void yyset_out (FILE * _out_str )
14288 {
14289- yyout = out_str ;
14290+ yyout = _out_str ;
14291 }
14292
14293 int yyget_debug (void)
14294@@ -3941,9 +3953,9 @@
14295 return yy_flex_debug;
14296 }
14297
14298-void yyset_debug (int bdebug )
14299+void yyset_debug (int _bdebug )
14300 {
14301- yy_flex_debug = bdebug ;
14302+ yy_flex_debug = _bdebug ;
14303 }
14304
14305 static int yy_init_globals (void)
14306@@ -3952,10 +3964,10 @@
14307 * This function is called from yylex_destroy(), so don't allocate here.
14308 */
14309
14310- (yy_buffer_stack) = 0;
14311+ (yy_buffer_stack) = NULL;
14312 (yy_buffer_stack_top) = 0;
14313 (yy_buffer_stack_max) = 0;
14314- (yy_c_buf_p) = (char *) 0;
14315+ (yy_c_buf_p) = NULL;
14316 (yy_init) = 0;
14317 (yy_start) = 0;
14318
14319@@ -3968,8 +3980,8 @@
14320 yyin = stdin;
14321 yyout = stdout;
14322 #else
14323- yyin = (FILE *) 0;
14324- yyout = (FILE *) 0;
14325+ yyin = NULL;
14326+ yyout = NULL;
14327 #endif
14328
14329 /* For future reference: Set errno on error, since we are called by
14330@@ -4011,7 +4023,8 @@
14331 #ifndef yytext_ptr
14332 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
14333 {
14334- register int i;
14335+
14336+ int i;
14337 for ( i = 0; i < n; ++i )
14338 s1[i] = s2[i];
14339 }
14340@@ -4020,7 +4033,7 @@
14341 #ifdef YY_NEED_STRLEN
14342 static int yy_flex_strlen (yyconst char * s )
14343 {
14344- register int n;
14345+ int n;
14346 for ( n = 0; s[n]; ++n )
14347 ;
14348
14349@@ -4030,11 +4043,12 @@
14350
14351 void *yyalloc (yy_size_t size )
14352 {
14353- return (void *) malloc( size );
14354+ return malloc(size);
14355 }
14356
14357 void *yyrealloc (void * ptr, yy_size_t size )
14358 {
14359+
14360 /* The cast to (char *) in the following accommodates both
14361 * implementations that use char* generic pointers, and those
14362 * that use void* generic pointers. It works with the latter
14363@@ -4042,17 +4056,17 @@
14364 * any pointer type to void*, and deal with argument conversions
14365 * as though doing an assignment.
14366 */
14367- return (void *) realloc( (char *) ptr, size );
14368+ return realloc(ptr, size);
14369 }
14370
14371 void yyfree (void * ptr )
14372 {
14373- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
14374+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
14375 }
14376
14377 #define YYTABLES_NAME "yytables"
14378
14379-#line 632 "sip-4.19.12/sipgen/metasrc/lexer.l"
14380+#line 632 "sipgen/metasrc/lexer.l"
14381
14382
14383
14384diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/metasrc/parser.y sip/sipgen/metasrc/parser.y
14385--- ./sip-4.19.12.orig/sipgen/metasrc/parser.y 2018-07-05 05:54:58.000000000 -0400
14386+++ sip/sipgen/metasrc/parser.y 2018-09-24 13:12:20.673276084 -0400
14387@@ -7586,7 +7586,7 @@
14388 if (getDeprecated(optflgs))
14389 setIsDeprecated(od);
14390
14391- if (!isPrivate(od) && !isSignal(od) && (od->common->slot == no_slot || od->common->slot == call_slot))
14392+ if (!isPrivate(od) && (od->common->slot == no_slot || od->common->slot == call_slot))
14393 {
14394 od->kwargs = keywordArgs(mod, optflgs, &od->pysig, hasProtected(od->common));
14395
14396@@ -7598,7 +7598,7 @@
14397 * we need to make sure that any other overloads' keyword argument
14398 * names are marked as used.
14399 */
14400- if (isProtected(od) && !inMainModule())
14401+ if (!isSignal(od) && isProtected(od) && !inMainModule())
14402 {
14403 overDef *kwod;
14404
14405diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/parser.c sip/sipgen/parser.c
14406--- ./sip-4.19.12.orig/sipgen/parser.c 2018-07-05 05:55:19.000000000 -0400
14407+++ sip/sipgen/parser.c 2018-09-18 18:12:23.641053271 -0400
14408@@ -1,14 +1,13 @@
14409-/* A Bison parser, made by GNU Bison 2.3. */
14410+/* A Bison parser, made by GNU Bison 3.0.4. */
14411
14412-/* Skeleton implementation for Bison's Yacc-like parsers in C
14413+/* Bison implementation for Yacc-like parsers in C
14414
14415- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
14416- Free Software Foundation, Inc.
14417+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
14418
14419- This program is free software; you can redistribute it and/or modify
14420+ This program is free software: you can redistribute it and/or modify
14421 it under the terms of the GNU General Public License as published by
14422- the Free Software Foundation; either version 2, or (at your option)
14423- any later version.
14424+ the Free Software Foundation, either version 3 of the License, or
14425+ (at your option) any later version.
14426
14427 This program is distributed in the hope that it will be useful,
14428 but WITHOUT ANY WARRANTY; without even the implied warranty of
14429@@ -16,9 +15,7 @@
14430 GNU General Public License for more details.
14431
14432 You should have received a copy of the GNU General Public License
14433- along with this program; if not, write to the Free Software
14434- Foundation, Inc., 51 Franklin Street, Fifth Floor,
14435- Boston, MA 02110-1301, USA. */
14436+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
14437
14438 /* As a special exception, you may create a larger work that contains
14439 part or all of the Bison parser skeleton and distribute that work
14440@@ -47,7 +44,7 @@
14441 #define YYBISON 1
14442
14443 /* Bison version. */
14444-#define YYBISON_VERSION "2.3"
14445+#define YYBISON_VERSION "3.0.4"
14446
14447 /* Skeleton name. */
14448 #define YYSKELETON_NAME "yacc.c"
14449@@ -55,324 +52,17 @@
14450 /* Pure parsers. */
14451 #define YYPURE 0
14452
14453-/* Using locations. */
14454-#define YYLSP_NEEDED 0
14455-
14456-
14457+/* Push parsers. */
14458+#define YYPUSH 0
14459
14460-/* Tokens. */
14461-#ifndef YYTOKENTYPE
14462-# define YYTOKENTYPE
14463- /* Put the tokens into the symbol table, so that GDB and other debuggers
14464- know about them. */
14465- enum yytokentype {
14466- TK_API = 258,
14467- TK_AUTOPYNAME = 259,
14468- TK_DEFDOCSTRFMT = 260,
14469- TK_DEFDOCSTRSIG = 261,
14470- TK_DEFENCODING = 262,
14471- TK_PLUGIN = 263,
14472- TK_VIRTERRORHANDLER = 264,
14473- TK_EXPTYPEHINTCODE = 265,
14474- TK_TYPEHINTCODE = 266,
14475- TK_DOCSTRING = 267,
14476- TK_DOC = 268,
14477- TK_EXPORTEDDOC = 269,
14478- TK_EXTRACT = 270,
14479- TK_MAKEFILE = 271,
14480- TK_ACCESSCODE = 272,
14481- TK_GETCODE = 273,
14482- TK_SETCODE = 274,
14483- TK_PREINITCODE = 275,
14484- TK_INITCODE = 276,
14485- TK_POSTINITCODE = 277,
14486- TK_FINALCODE = 278,
14487- TK_UNITCODE = 279,
14488- TK_UNITPOSTINCLUDECODE = 280,
14489- TK_MODCODE = 281,
14490- TK_TYPECODE = 282,
14491- TK_PREPYCODE = 283,
14492- TK_COPYING = 284,
14493- TK_MAPPEDTYPE = 285,
14494- TK_CODELINE = 286,
14495- TK_IF = 287,
14496- TK_END = 288,
14497- TK_NAME_VALUE = 289,
14498- TK_PATH_VALUE = 290,
14499- TK_STRING_VALUE = 291,
14500- TK_VIRTUALCATCHERCODE = 292,
14501- TK_TRAVERSECODE = 293,
14502- TK_CLEARCODE = 294,
14503- TK_GETBUFFERCODE = 295,
14504- TK_RELEASEBUFFERCODE = 296,
14505- TK_READBUFFERCODE = 297,
14506- TK_WRITEBUFFERCODE = 298,
14507- TK_SEGCOUNTCODE = 299,
14508- TK_CHARBUFFERCODE = 300,
14509- TK_PICKLECODE = 301,
14510- TK_VIRTUALCALLCODE = 302,
14511- TK_METHODCODE = 303,
14512- TK_PREMETHODCODE = 304,
14513- TK_INSTANCECODE = 305,
14514- TK_FROMTYPE = 306,
14515- TK_TOTYPE = 307,
14516- TK_TOSUBCLASS = 308,
14517- TK_INCLUDE = 309,
14518- TK_OPTINCLUDE = 310,
14519- TK_IMPORT = 311,
14520- TK_EXPHEADERCODE = 312,
14521- TK_MODHEADERCODE = 313,
14522- TK_TYPEHEADERCODE = 314,
14523- TK_MODULE = 315,
14524- TK_CMODULE = 316,
14525- TK_CONSMODULE = 317,
14526- TK_COMPOMODULE = 318,
14527- TK_CLASS = 319,
14528- TK_STRUCT = 320,
14529- TK_PUBLIC = 321,
14530- TK_PROTECTED = 322,
14531- TK_PRIVATE = 323,
14532- TK_SIGNALS = 324,
14533- TK_SIGNAL_METHOD = 325,
14534- TK_SLOTS = 326,
14535- TK_SLOT_METHOD = 327,
14536- TK_BOOL = 328,
14537- TK_SHORT = 329,
14538- TK_INT = 330,
14539- TK_LONG = 331,
14540- TK_FLOAT = 332,
14541- TK_DOUBLE = 333,
14542- TK_CHAR = 334,
14543- TK_WCHAR_T = 335,
14544- TK_VOID = 336,
14545- TK_PYOBJECT = 337,
14546- TK_PYTUPLE = 338,
14547- TK_PYLIST = 339,
14548- TK_PYDICT = 340,
14549- TK_PYCALLABLE = 341,
14550- TK_PYSLICE = 342,
14551- TK_PYTYPE = 343,
14552- TK_PYBUFFER = 344,
14553- TK_VIRTUAL = 345,
14554- TK_ENUM = 346,
14555- TK_SIGNED = 347,
14556- TK_UNSIGNED = 348,
14557- TK_SCOPE = 349,
14558- TK_LOGICAL_OR = 350,
14559- TK_CONST = 351,
14560- TK_STATIC = 352,
14561- TK_SIPSIGNAL = 353,
14562- TK_SIPSLOT = 354,
14563- TK_SIPANYSLOT = 355,
14564- TK_SIPRXCON = 356,
14565- TK_SIPRXDIS = 357,
14566- TK_SIPSLOTCON = 358,
14567- TK_SIPSLOTDIS = 359,
14568- TK_SIPSSIZET = 360,
14569- TK_NUMBER_VALUE = 361,
14570- TK_REAL_VALUE = 362,
14571- TK_TYPEDEF = 363,
14572- TK_NAMESPACE = 364,
14573- TK_TIMELINE = 365,
14574- TK_PLATFORMS = 366,
14575- TK_FEATURE = 367,
14576- TK_LICENSE = 368,
14577- TK_QCHAR_VALUE = 369,
14578- TK_TRUE_VALUE = 370,
14579- TK_FALSE_VALUE = 371,
14580- TK_NULL_VALUE = 372,
14581- TK_OPERATOR = 373,
14582- TK_THROW = 374,
14583- TK_QOBJECT = 375,
14584- TK_EXCEPTION = 376,
14585- TK_RAISECODE = 377,
14586- TK_VIRTERRORCODE = 378,
14587- TK_EXPLICIT = 379,
14588- TK_TEMPLATE = 380,
14589- TK_FINAL = 381,
14590- TK_ELLIPSIS = 382,
14591- TK_DEFMETATYPE = 383,
14592- TK_DEFSUPERTYPE = 384,
14593- TK_PROPERTY = 385,
14594- TK_HIDE_NS = 386,
14595- TK_FORMAT = 387,
14596- TK_GET = 388,
14597- TK_ID = 389,
14598- TK_KWARGS = 390,
14599- TK_LANGUAGE = 391,
14600- TK_LICENSEE = 392,
14601- TK_NAME = 393,
14602- TK_OPTIONAL = 394,
14603- TK_ORDER = 395,
14604- TK_REMOVELEADING = 396,
14605- TK_SET = 397,
14606- TK_SIGNATURE = 398,
14607- TK_TIMESTAMP = 399,
14608- TK_TYPE = 400,
14609- TK_USEARGNAMES = 401,
14610- TK_USELIMITEDAPI = 402,
14611- TK_ALLRAISEPYEXC = 403,
14612- TK_CALLSUPERINIT = 404,
14613- TK_DEFERRORHANDLER = 405,
14614- TK_VERSION = 406
14615- };
14616-#endif
14617-/* Tokens. */
14618-#define TK_API 258
14619-#define TK_AUTOPYNAME 259
14620-#define TK_DEFDOCSTRFMT 260
14621-#define TK_DEFDOCSTRSIG 261
14622-#define TK_DEFENCODING 262
14623-#define TK_PLUGIN 263
14624-#define TK_VIRTERRORHANDLER 264
14625-#define TK_EXPTYPEHINTCODE 265
14626-#define TK_TYPEHINTCODE 266
14627-#define TK_DOCSTRING 267
14628-#define TK_DOC 268
14629-#define TK_EXPORTEDDOC 269
14630-#define TK_EXTRACT 270
14631-#define TK_MAKEFILE 271
14632-#define TK_ACCESSCODE 272
14633-#define TK_GETCODE 273
14634-#define TK_SETCODE 274
14635-#define TK_PREINITCODE 275
14636-#define TK_INITCODE 276
14637-#define TK_POSTINITCODE 277
14638-#define TK_FINALCODE 278
14639-#define TK_UNITCODE 279
14640-#define TK_UNITPOSTINCLUDECODE 280
14641-#define TK_MODCODE 281
14642-#define TK_TYPECODE 282
14643-#define TK_PREPYCODE 283
14644-#define TK_COPYING 284
14645-#define TK_MAPPEDTYPE 285
14646-#define TK_CODELINE 286
14647-#define TK_IF 287
14648-#define TK_END 288
14649-#define TK_NAME_VALUE 289
14650-#define TK_PATH_VALUE 290
14651-#define TK_STRING_VALUE 291
14652-#define TK_VIRTUALCATCHERCODE 292
14653-#define TK_TRAVERSECODE 293
14654-#define TK_CLEARCODE 294
14655-#define TK_GETBUFFERCODE 295
14656-#define TK_RELEASEBUFFERCODE 296
14657-#define TK_READBUFFERCODE 297
14658-#define TK_WRITEBUFFERCODE 298
14659-#define TK_SEGCOUNTCODE 299
14660-#define TK_CHARBUFFERCODE 300
14661-#define TK_PICKLECODE 301
14662-#define TK_VIRTUALCALLCODE 302
14663-#define TK_METHODCODE 303
14664-#define TK_PREMETHODCODE 304
14665-#define TK_INSTANCECODE 305
14666-#define TK_FROMTYPE 306
14667-#define TK_TOTYPE 307
14668-#define TK_TOSUBCLASS 308
14669-#define TK_INCLUDE 309
14670-#define TK_OPTINCLUDE 310
14671-#define TK_IMPORT 311
14672-#define TK_EXPHEADERCODE 312
14673-#define TK_MODHEADERCODE 313
14674-#define TK_TYPEHEADERCODE 314
14675-#define TK_MODULE 315
14676-#define TK_CMODULE 316
14677-#define TK_CONSMODULE 317
14678-#define TK_COMPOMODULE 318
14679-#define TK_CLASS 319
14680-#define TK_STRUCT 320
14681-#define TK_PUBLIC 321
14682-#define TK_PROTECTED 322
14683-#define TK_PRIVATE 323
14684-#define TK_SIGNALS 324
14685-#define TK_SIGNAL_METHOD 325
14686-#define TK_SLOTS 326
14687-#define TK_SLOT_METHOD 327
14688-#define TK_BOOL 328
14689-#define TK_SHORT 329
14690-#define TK_INT 330
14691-#define TK_LONG 331
14692-#define TK_FLOAT 332
14693-#define TK_DOUBLE 333
14694-#define TK_CHAR 334
14695-#define TK_WCHAR_T 335
14696-#define TK_VOID 336
14697-#define TK_PYOBJECT 337
14698-#define TK_PYTUPLE 338
14699-#define TK_PYLIST 339
14700-#define TK_PYDICT 340
14701-#define TK_PYCALLABLE 341
14702-#define TK_PYSLICE 342
14703-#define TK_PYTYPE 343
14704-#define TK_PYBUFFER 344
14705-#define TK_VIRTUAL 345
14706-#define TK_ENUM 346
14707-#define TK_SIGNED 347
14708-#define TK_UNSIGNED 348
14709-#define TK_SCOPE 349
14710-#define TK_LOGICAL_OR 350
14711-#define TK_CONST 351
14712-#define TK_STATIC 352
14713-#define TK_SIPSIGNAL 353
14714-#define TK_SIPSLOT 354
14715-#define TK_SIPANYSLOT 355
14716-#define TK_SIPRXCON 356
14717-#define TK_SIPRXDIS 357
14718-#define TK_SIPSLOTCON 358
14719-#define TK_SIPSLOTDIS 359
14720-#define TK_SIPSSIZET 360
14721-#define TK_NUMBER_VALUE 361
14722-#define TK_REAL_VALUE 362
14723-#define TK_TYPEDEF 363
14724-#define TK_NAMESPACE 364
14725-#define TK_TIMELINE 365
14726-#define TK_PLATFORMS 366
14727-#define TK_FEATURE 367
14728-#define TK_LICENSE 368
14729-#define TK_QCHAR_VALUE 369
14730-#define TK_TRUE_VALUE 370
14731-#define TK_FALSE_VALUE 371
14732-#define TK_NULL_VALUE 372
14733-#define TK_OPERATOR 373
14734-#define TK_THROW 374
14735-#define TK_QOBJECT 375
14736-#define TK_EXCEPTION 376
14737-#define TK_RAISECODE 377
14738-#define TK_VIRTERRORCODE 378
14739-#define TK_EXPLICIT 379
14740-#define TK_TEMPLATE 380
14741-#define TK_FINAL 381
14742-#define TK_ELLIPSIS 382
14743-#define TK_DEFMETATYPE 383
14744-#define TK_DEFSUPERTYPE 384
14745-#define TK_PROPERTY 385
14746-#define TK_HIDE_NS 386
14747-#define TK_FORMAT 387
14748-#define TK_GET 388
14749-#define TK_ID 389
14750-#define TK_KWARGS 390
14751-#define TK_LANGUAGE 391
14752-#define TK_LICENSEE 392
14753-#define TK_NAME 393
14754-#define TK_OPTIONAL 394
14755-#define TK_ORDER 395
14756-#define TK_REMOVELEADING 396
14757-#define TK_SET 397
14758-#define TK_SIGNATURE 398
14759-#define TK_TIMESTAMP 399
14760-#define TK_TYPE 400
14761-#define TK_USEARGNAMES 401
14762-#define TK_USELIMITEDAPI 402
14763-#define TK_ALLRAISEPYEXC 403
14764-#define TK_CALLSUPERINIT 404
14765-#define TK_DEFERRORHANDLER 405
14766-#define TK_VERSION 406
14767+/* Pull parsers. */
14768+#define YYPULL 1
14769
14770
14771
14772
14773 /* Copy the first part of user declarations. */
14774-#line 19 "sip-4.19.12/sipgen/metasrc/parser.y"
14775+#line 19 "sipgen/metasrc/parser.y" /* yacc.c:339 */
14776
14777 #include <stdlib.h>
14778 #include <string.h>
14779@@ -556,11 +246,15 @@
14780 static void checkEllipsis(signatureDef *sd);
14781 static scopedNameDef *fullyQualifiedName(scopedNameDef *snd);
14782
14783+#line 250 "sipgen/parser.c" /* yacc.c:339 */
14784
14785-/* Enabling traces. */
14786-#ifndef YYDEBUG
14787-# define YYDEBUG 0
14788-#endif
14789+# ifndef YY_NULLPTR
14790+# if defined __cplusplus && 201103L <= __cplusplus
14791+# define YY_NULLPTR nullptr
14792+# else
14793+# define YY_NULLPTR 0
14794+# endif
14795+# endif
14796
14797 /* Enabling verbose error messages. */
14798 #ifdef YYERROR_VERBOSE
14799@@ -570,15 +264,332 @@
14800 # define YYERROR_VERBOSE 0
14801 #endif
14802
14803-/* Enabling the token table. */
14804-#ifndef YYTOKEN_TABLE
14805-# define YYTOKEN_TABLE 0
14806+/* In a future release of Bison, this section will be replaced
14807+ by #include "parser.h". */
14808+#ifndef YY_YY_SIPGEN_PARSER_H_INCLUDED
14809+# define YY_YY_SIPGEN_PARSER_H_INCLUDED
14810+/* Debug traces. */
14811+#ifndef YYDEBUG
14812+# define YYDEBUG 0
14813+#endif
14814+#if YYDEBUG
14815+extern int yydebug;
14816 #endif
14817
14818+/* Token type. */
14819+#ifndef YYTOKENTYPE
14820+# define YYTOKENTYPE
14821+ enum yytokentype
14822+ {
14823+ TK_API = 258,
14824+ TK_AUTOPYNAME = 259,
14825+ TK_DEFDOCSTRFMT = 260,
14826+ TK_DEFDOCSTRSIG = 261,
14827+ TK_DEFENCODING = 262,
14828+ TK_PLUGIN = 263,
14829+ TK_VIRTERRORHANDLER = 264,
14830+ TK_EXPTYPEHINTCODE = 265,
14831+ TK_TYPEHINTCODE = 266,
14832+ TK_DOCSTRING = 267,
14833+ TK_DOC = 268,
14834+ TK_EXPORTEDDOC = 269,
14835+ TK_EXTRACT = 270,
14836+ TK_MAKEFILE = 271,
14837+ TK_ACCESSCODE = 272,
14838+ TK_GETCODE = 273,
14839+ TK_SETCODE = 274,
14840+ TK_PREINITCODE = 275,
14841+ TK_INITCODE = 276,
14842+ TK_POSTINITCODE = 277,
14843+ TK_FINALCODE = 278,
14844+ TK_UNITCODE = 279,
14845+ TK_UNITPOSTINCLUDECODE = 280,
14846+ TK_MODCODE = 281,
14847+ TK_TYPECODE = 282,
14848+ TK_PREPYCODE = 283,
14849+ TK_COPYING = 284,
14850+ TK_MAPPEDTYPE = 285,
14851+ TK_CODELINE = 286,
14852+ TK_IF = 287,
14853+ TK_END = 288,
14854+ TK_NAME_VALUE = 289,
14855+ TK_PATH_VALUE = 290,
14856+ TK_STRING_VALUE = 291,
14857+ TK_VIRTUALCATCHERCODE = 292,
14858+ TK_TRAVERSECODE = 293,
14859+ TK_CLEARCODE = 294,
14860+ TK_GETBUFFERCODE = 295,
14861+ TK_RELEASEBUFFERCODE = 296,
14862+ TK_READBUFFERCODE = 297,
14863+ TK_WRITEBUFFERCODE = 298,
14864+ TK_SEGCOUNTCODE = 299,
14865+ TK_CHARBUFFERCODE = 300,
14866+ TK_PICKLECODE = 301,
14867+ TK_VIRTUALCALLCODE = 302,
14868+ TK_METHODCODE = 303,
14869+ TK_PREMETHODCODE = 304,
14870+ TK_INSTANCECODE = 305,
14871+ TK_FROMTYPE = 306,
14872+ TK_TOTYPE = 307,
14873+ TK_TOSUBCLASS = 308,
14874+ TK_INCLUDE = 309,
14875+ TK_OPTINCLUDE = 310,
14876+ TK_IMPORT = 311,
14877+ TK_EXPHEADERCODE = 312,
14878+ TK_MODHEADERCODE = 313,
14879+ TK_TYPEHEADERCODE = 314,
14880+ TK_MODULE = 315,
14881+ TK_CMODULE = 316,
14882+ TK_CONSMODULE = 317,
14883+ TK_COMPOMODULE = 318,
14884+ TK_CLASS = 319,
14885+ TK_STRUCT = 320,
14886+ TK_PUBLIC = 321,
14887+ TK_PROTECTED = 322,
14888+ TK_PRIVATE = 323,
14889+ TK_SIGNALS = 324,
14890+ TK_SIGNAL_METHOD = 325,
14891+ TK_SLOTS = 326,
14892+ TK_SLOT_METHOD = 327,
14893+ TK_BOOL = 328,
14894+ TK_SHORT = 329,
14895+ TK_INT = 330,
14896+ TK_LONG = 331,
14897+ TK_FLOAT = 332,
14898+ TK_DOUBLE = 333,
14899+ TK_CHAR = 334,
14900+ TK_WCHAR_T = 335,
14901+ TK_VOID = 336,
14902+ TK_PYOBJECT = 337,
14903+ TK_PYTUPLE = 338,
14904+ TK_PYLIST = 339,
14905+ TK_PYDICT = 340,
14906+ TK_PYCALLABLE = 341,
14907+ TK_PYSLICE = 342,
14908+ TK_PYTYPE = 343,
14909+ TK_PYBUFFER = 344,
14910+ TK_VIRTUAL = 345,
14911+ TK_ENUM = 346,
14912+ TK_SIGNED = 347,
14913+ TK_UNSIGNED = 348,
14914+ TK_SCOPE = 349,
14915+ TK_LOGICAL_OR = 350,
14916+ TK_CONST = 351,
14917+ TK_STATIC = 352,
14918+ TK_SIPSIGNAL = 353,
14919+ TK_SIPSLOT = 354,
14920+ TK_SIPANYSLOT = 355,
14921+ TK_SIPRXCON = 356,
14922+ TK_SIPRXDIS = 357,
14923+ TK_SIPSLOTCON = 358,
14924+ TK_SIPSLOTDIS = 359,
14925+ TK_SIPSSIZET = 360,
14926+ TK_NUMBER_VALUE = 361,
14927+ TK_REAL_VALUE = 362,
14928+ TK_TYPEDEF = 363,
14929+ TK_NAMESPACE = 364,
14930+ TK_TIMELINE = 365,
14931+ TK_PLATFORMS = 366,
14932+ TK_FEATURE = 367,
14933+ TK_LICENSE = 368,
14934+ TK_QCHAR_VALUE = 369,
14935+ TK_TRUE_VALUE = 370,
14936+ TK_FALSE_VALUE = 371,
14937+ TK_NULL_VALUE = 372,
14938+ TK_OPERATOR = 373,
14939+ TK_THROW = 374,
14940+ TK_QOBJECT = 375,
14941+ TK_EXCEPTION = 376,
14942+ TK_RAISECODE = 377,
14943+ TK_VIRTERRORCODE = 378,
14944+ TK_EXPLICIT = 379,
14945+ TK_TEMPLATE = 380,
14946+ TK_FINAL = 381,
14947+ TK_ELLIPSIS = 382,
14948+ TK_DEFMETATYPE = 383,
14949+ TK_DEFSUPERTYPE = 384,
14950+ TK_PROPERTY = 385,
14951+ TK_HIDE_NS = 386,
14952+ TK_FORMAT = 387,
14953+ TK_GET = 388,
14954+ TK_ID = 389,
14955+ TK_KWARGS = 390,
14956+ TK_LANGUAGE = 391,
14957+ TK_LICENSEE = 392,
14958+ TK_NAME = 393,
14959+ TK_OPTIONAL = 394,
14960+ TK_ORDER = 395,
14961+ TK_REMOVELEADING = 396,
14962+ TK_SET = 397,
14963+ TK_SIGNATURE = 398,
14964+ TK_TIMESTAMP = 399,
14965+ TK_TYPE = 400,
14966+ TK_USEARGNAMES = 401,
14967+ TK_USELIMITEDAPI = 402,
14968+ TK_ALLRAISEPYEXC = 403,
14969+ TK_CALLSUPERINIT = 404,
14970+ TK_DEFERRORHANDLER = 405,
14971+ TK_VERSION = 406
14972+ };
14973+#endif
14974+/* Tokens. */
14975+#define TK_API 258
14976+#define TK_AUTOPYNAME 259
14977+#define TK_DEFDOCSTRFMT 260
14978+#define TK_DEFDOCSTRSIG 261
14979+#define TK_DEFENCODING 262
14980+#define TK_PLUGIN 263
14981+#define TK_VIRTERRORHANDLER 264
14982+#define TK_EXPTYPEHINTCODE 265
14983+#define TK_TYPEHINTCODE 266
14984+#define TK_DOCSTRING 267
14985+#define TK_DOC 268
14986+#define TK_EXPORTEDDOC 269
14987+#define TK_EXTRACT 270
14988+#define TK_MAKEFILE 271
14989+#define TK_ACCESSCODE 272
14990+#define TK_GETCODE 273
14991+#define TK_SETCODE 274
14992+#define TK_PREINITCODE 275
14993+#define TK_INITCODE 276
14994+#define TK_POSTINITCODE 277
14995+#define TK_FINALCODE 278
14996+#define TK_UNITCODE 279
14997+#define TK_UNITPOSTINCLUDECODE 280
14998+#define TK_MODCODE 281
14999+#define TK_TYPECODE 282
15000+#define TK_PREPYCODE 283
15001+#define TK_COPYING 284
15002+#define TK_MAPPEDTYPE 285
15003+#define TK_CODELINE 286
15004+#define TK_IF 287
15005+#define TK_END 288
15006+#define TK_NAME_VALUE 289
15007+#define TK_PATH_VALUE 290
15008+#define TK_STRING_VALUE 291
15009+#define TK_VIRTUALCATCHERCODE 292
15010+#define TK_TRAVERSECODE 293
15011+#define TK_CLEARCODE 294
15012+#define TK_GETBUFFERCODE 295
15013+#define TK_RELEASEBUFFERCODE 296
15014+#define TK_READBUFFERCODE 297
15015+#define TK_WRITEBUFFERCODE 298
15016+#define TK_SEGCOUNTCODE 299
15017+#define TK_CHARBUFFERCODE 300
15018+#define TK_PICKLECODE 301
15019+#define TK_VIRTUALCALLCODE 302
15020+#define TK_METHODCODE 303
15021+#define TK_PREMETHODCODE 304
15022+#define TK_INSTANCECODE 305
15023+#define TK_FROMTYPE 306
15024+#define TK_TOTYPE 307
15025+#define TK_TOSUBCLASS 308
15026+#define TK_INCLUDE 309
15027+#define TK_OPTINCLUDE 310
15028+#define TK_IMPORT 311
15029+#define TK_EXPHEADERCODE 312
15030+#define TK_MODHEADERCODE 313
15031+#define TK_TYPEHEADERCODE 314
15032+#define TK_MODULE 315
15033+#define TK_CMODULE 316
15034+#define TK_CONSMODULE 317
15035+#define TK_COMPOMODULE 318
15036+#define TK_CLASS 319
15037+#define TK_STRUCT 320
15038+#define TK_PUBLIC 321
15039+#define TK_PROTECTED 322
15040+#define TK_PRIVATE 323
15041+#define TK_SIGNALS 324
15042+#define TK_SIGNAL_METHOD 325
15043+#define TK_SLOTS 326
15044+#define TK_SLOT_METHOD 327
15045+#define TK_BOOL 328
15046+#define TK_SHORT 329
15047+#define TK_INT 330
15048+#define TK_LONG 331
15049+#define TK_FLOAT 332
15050+#define TK_DOUBLE 333
15051+#define TK_CHAR 334
15052+#define TK_WCHAR_T 335
15053+#define TK_VOID 336
15054+#define TK_PYOBJECT 337
15055+#define TK_PYTUPLE 338
15056+#define TK_PYLIST 339
15057+#define TK_PYDICT 340
15058+#define TK_PYCALLABLE 341
15059+#define TK_PYSLICE 342
15060+#define TK_PYTYPE 343
15061+#define TK_PYBUFFER 344
15062+#define TK_VIRTUAL 345
15063+#define TK_ENUM 346
15064+#define TK_SIGNED 347
15065+#define TK_UNSIGNED 348
15066+#define TK_SCOPE 349
15067+#define TK_LOGICAL_OR 350
15068+#define TK_CONST 351
15069+#define TK_STATIC 352
15070+#define TK_SIPSIGNAL 353
15071+#define TK_SIPSLOT 354
15072+#define TK_SIPANYSLOT 355
15073+#define TK_SIPRXCON 356
15074+#define TK_SIPRXDIS 357
15075+#define TK_SIPSLOTCON 358
15076+#define TK_SIPSLOTDIS 359
15077+#define TK_SIPSSIZET 360
15078+#define TK_NUMBER_VALUE 361
15079+#define TK_REAL_VALUE 362
15080+#define TK_TYPEDEF 363
15081+#define TK_NAMESPACE 364
15082+#define TK_TIMELINE 365
15083+#define TK_PLATFORMS 366
15084+#define TK_FEATURE 367
15085+#define TK_LICENSE 368
15086+#define TK_QCHAR_VALUE 369
15087+#define TK_TRUE_VALUE 370
15088+#define TK_FALSE_VALUE 371
15089+#define TK_NULL_VALUE 372
15090+#define TK_OPERATOR 373
15091+#define TK_THROW 374
15092+#define TK_QOBJECT 375
15093+#define TK_EXCEPTION 376
15094+#define TK_RAISECODE 377
15095+#define TK_VIRTERRORCODE 378
15096+#define TK_EXPLICIT 379
15097+#define TK_TEMPLATE 380
15098+#define TK_FINAL 381
15099+#define TK_ELLIPSIS 382
15100+#define TK_DEFMETATYPE 383
15101+#define TK_DEFSUPERTYPE 384
15102+#define TK_PROPERTY 385
15103+#define TK_HIDE_NS 386
15104+#define TK_FORMAT 387
15105+#define TK_GET 388
15106+#define TK_ID 389
15107+#define TK_KWARGS 390
15108+#define TK_LANGUAGE 391
15109+#define TK_LICENSEE 392
15110+#define TK_NAME 393
15111+#define TK_OPTIONAL 394
15112+#define TK_ORDER 395
15113+#define TK_REMOVELEADING 396
15114+#define TK_SET 397
15115+#define TK_SIGNATURE 398
15116+#define TK_TIMESTAMP 399
15117+#define TK_TYPE 400
15118+#define TK_USEARGNAMES 401
15119+#define TK_USELIMITEDAPI 402
15120+#define TK_ALLRAISEPYEXC 403
15121+#define TK_CALLSUPERINIT 404
15122+#define TK_DEFERRORHANDLER 405
15123+#define TK_VERSION 406
15124+
15125+/* Value type. */
15126 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
15127-typedef union YYSTYPE
15128-#line 203 "sip-4.19.12/sipgen/metasrc/parser.y"
15129+
15130+union YYSTYPE
15131 {
15132+#line 203 "sipgen/metasrc/parser.y" /* yacc.c:355 */
15133+
15134 char qchar;
15135 char *text;
15136 long number;
15137@@ -621,22 +632,25 @@
15138 variableCfg variable;
15139 vehCfg veh;
15140 int token;
15141-}
15142-/* Line 193 of yacc.c. */
15143-#line 627 "sip-4.19.12/sipgen/parser.c"
15144- YYSTYPE;
15145-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
15146-# define YYSTYPE_IS_DECLARED 1
15147+
15148+#line 637 "sipgen/parser.c" /* yacc.c:355 */
15149+};
15150+
15151+typedef union YYSTYPE YYSTYPE;
15152 # define YYSTYPE_IS_TRIVIAL 1
15153+# define YYSTYPE_IS_DECLARED 1
15154 #endif
15155
15156
15157+extern YYSTYPE yylval;
15158
15159-/* Copy the second part of user declarations. */
15160+int yyparse (void);
15161
15162+#endif /* !YY_YY_SIPGEN_PARSER_H_INCLUDED */
15163
15164-/* Line 216 of yacc.c. */
15165-#line 640 "sip-4.19.12/sipgen/parser.c"
15166+/* Copy the second part of user declarations. */
15167+
15168+#line 654 "sipgen/parser.c" /* yacc.c:358 */
15169
15170 #ifdef short
15171 # undef short
15172@@ -650,11 +664,8 @@
15173
15174 #ifdef YYTYPE_INT8
15175 typedef YYTYPE_INT8 yytype_int8;
15176-#elif (defined __STDC__ || defined __C99__FUNC__ \
15177- || defined __cplusplus || defined _MSC_VER)
15178-typedef signed char yytype_int8;
15179 #else
15180-typedef short int yytype_int8;
15181+typedef signed char yytype_int8;
15182 #endif
15183
15184 #ifdef YYTYPE_UINT16
15185@@ -674,8 +685,7 @@
15186 # define YYSIZE_T __SIZE_TYPE__
15187 # elif defined size_t
15188 # define YYSIZE_T size_t
15189-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
15190- || defined __cplusplus || defined _MSC_VER)
15191+# elif ! defined YYSIZE_T
15192 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
15193 # define YYSIZE_T size_t
15194 # else
15195@@ -689,39 +699,68 @@
15196 # if defined YYENABLE_NLS && YYENABLE_NLS
15197 # if ENABLE_NLS
15198 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
15199-# define YY_(msgid) dgettext ("bison-runtime", msgid)
15200+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
15201 # endif
15202 # endif
15203 # ifndef YY_
15204-# define YY_(msgid) msgid
15205+# define YY_(Msgid) Msgid
15206+# endif
15207+#endif
15208+
15209+#ifndef YY_ATTRIBUTE
15210+# if (defined __GNUC__ \
15211+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
15212+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
15213+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
15214+# else
15215+# define YY_ATTRIBUTE(Spec) /* empty */
15216+# endif
15217+#endif
15218+
15219+#ifndef YY_ATTRIBUTE_PURE
15220+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
15221+#endif
15222+
15223+#ifndef YY_ATTRIBUTE_UNUSED
15224+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
15225+#endif
15226+
15227+#if !defined _Noreturn \
15228+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
15229+# if defined _MSC_VER && 1200 <= _MSC_VER
15230+# define _Noreturn __declspec (noreturn)
15231+# else
15232+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
15233 # endif
15234 #endif
15235
15236 /* Suppress unused-variable warnings by "using" E. */
15237 #if ! defined lint || defined __GNUC__
15238-# define YYUSE(e) ((void) (e))
15239+# define YYUSE(E) ((void) (E))
15240 #else
15241-# define YYUSE(e) /* empty */
15242+# define YYUSE(E) /* empty */
15243 #endif
15244
15245-/* Identity function, used to suppress warnings about constant conditions. */
15246-#ifndef lint
15247-# define YYID(n) (n)
15248-#else
15249-#if (defined __STDC__ || defined __C99__FUNC__ \
15250- || defined __cplusplus || defined _MSC_VER)
15251-static int
15252-YYID (int i)
15253+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
15254+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
15255+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
15256+ _Pragma ("GCC diagnostic push") \
15257+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
15258+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
15259+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
15260+ _Pragma ("GCC diagnostic pop")
15261 #else
15262-static int
15263-YYID (i)
15264- int i;
15265+# define YY_INITIAL_VALUE(Value) Value
15266 #endif
15267-{
15268- return i;
15269-}
15270+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
15271+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
15272+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
15273+#endif
15274+#ifndef YY_INITIAL_VALUE
15275+# define YY_INITIAL_VALUE(Value) /* Nothing. */
15276 #endif
15277
15278+
15279 #if ! defined yyoverflow || YYERROR_VERBOSE
15280
15281 /* The parser invokes alloca or malloc; define the necessary symbols. */
15282@@ -739,11 +778,11 @@
15283 # define alloca _alloca
15284 # else
15285 # define YYSTACK_ALLOC alloca
15286-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
15287- || defined __cplusplus || defined _MSC_VER)
15288+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
15289 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
15290-# ifndef _STDLIB_H
15291-# define _STDLIB_H 1
15292+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
15293+# ifndef EXIT_SUCCESS
15294+# define EXIT_SUCCESS 0
15295 # endif
15296 # endif
15297 # endif
15298@@ -751,8 +790,8 @@
15299 # endif
15300
15301 # ifdef YYSTACK_ALLOC
15302- /* Pacify GCC's `empty if-body' warning. */
15303-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
15304+ /* Pacify GCC's 'empty if-body' warning. */
15305+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
15306 # ifndef YYSTACK_ALLOC_MAXIMUM
15307 /* The OS might guarantee only one guard page at the bottom of the stack,
15308 and a page size can be as small as 4096 bytes. So we cannot safely
15309@@ -766,25 +805,23 @@
15310 # ifndef YYSTACK_ALLOC_MAXIMUM
15311 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
15312 # endif
15313-# if (defined __cplusplus && ! defined _STDLIB_H \
15314+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
15315 && ! ((defined YYMALLOC || defined malloc) \
15316- && (defined YYFREE || defined free)))
15317+ && (defined YYFREE || defined free)))
15318 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
15319-# ifndef _STDLIB_H
15320-# define _STDLIB_H 1
15321+# ifndef EXIT_SUCCESS
15322+# define EXIT_SUCCESS 0
15323 # endif
15324 # endif
15325 # ifndef YYMALLOC
15326 # define YYMALLOC malloc
15327-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
15328- || defined __cplusplus || defined _MSC_VER)
15329+# if ! defined malloc && ! defined EXIT_SUCCESS
15330 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
15331 # endif
15332 # endif
15333 # ifndef YYFREE
15334 # define YYFREE free
15335-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
15336- || defined __cplusplus || defined _MSC_VER)
15337+# if ! defined free && ! defined EXIT_SUCCESS
15338 void free (void *); /* INFRINGES ON USER NAME SPACE */
15339 # endif
15340 # endif
15341@@ -794,14 +831,14 @@
15342
15343 #if (! defined yyoverflow \
15344 && (! defined __cplusplus \
15345- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
15346+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
15347
15348 /* A type that is properly aligned for any stack member. */
15349 union yyalloc
15350 {
15351- yytype_int16 yyss;
15352- YYSTYPE yyvs;
15353- };
15354+ yytype_int16 yyss_alloc;
15355+ YYSTYPE yyvs_alloc;
15356+};
15357
15358 /* The size of the maximum gap between one aligned stack and the next. */
15359 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
15360@@ -812,42 +849,46 @@
15361 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
15362 + YYSTACK_GAP_MAXIMUM)
15363
15364-/* Copy COUNT objects from FROM to TO. The source and destination do
15365- not overlap. */
15366-# ifndef YYCOPY
15367-# if defined __GNUC__ && 1 < __GNUC__
15368-# define YYCOPY(To, From, Count) \
15369- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
15370-# else
15371-# define YYCOPY(To, From, Count) \
15372- do \
15373- { \
15374- YYSIZE_T yyi; \
15375- for (yyi = 0; yyi < (Count); yyi++) \
15376- (To)[yyi] = (From)[yyi]; \
15377- } \
15378- while (YYID (0))
15379-# endif
15380-# endif
15381+# define YYCOPY_NEEDED 1
15382
15383 /* Relocate STACK from its old location to the new one. The
15384 local variables YYSIZE and YYSTACKSIZE give the old and new number of
15385 elements in the stack, and YYPTR gives the new location of the
15386 stack. Advance YYPTR to a properly aligned location for the next
15387 stack. */
15388-# define YYSTACK_RELOCATE(Stack) \
15389- do \
15390- { \
15391- YYSIZE_T yynewbytes; \
15392- YYCOPY (&yyptr->Stack, Stack, yysize); \
15393- Stack = &yyptr->Stack; \
15394- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
15395- yyptr += yynewbytes / sizeof (*yyptr); \
15396- } \
15397- while (YYID (0))
15398+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
15399+ do \
15400+ { \
15401+ YYSIZE_T yynewbytes; \
15402+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
15403+ Stack = &yyptr->Stack_alloc; \
15404+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
15405+ yyptr += yynewbytes / sizeof (*yyptr); \
15406+ } \
15407+ while (0)
15408
15409 #endif
15410
15411+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
15412+/* Copy COUNT objects from SRC to DST. The source and destination do
15413+ not overlap. */
15414+# ifndef YYCOPY
15415+# if defined __GNUC__ && 1 < __GNUC__
15416+# define YYCOPY(Dst, Src, Count) \
15417+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
15418+# else
15419+# define YYCOPY(Dst, Src, Count) \
15420+ do \
15421+ { \
15422+ YYSIZE_T yyi; \
15423+ for (yyi = 0; yyi < (Count); yyi++) \
15424+ (Dst)[yyi] = (Src)[yyi]; \
15425+ } \
15426+ while (0)
15427+# endif
15428+# endif
15429+#endif /* !YYCOPY_NEEDED */
15430+
15431 /* YYFINAL -- State number of the termination state. */
15432 #define YYFINAL 4
15433 /* YYLAST -- Last index in YYTABLE. */
15434@@ -859,17 +900,19 @@
15435 #define YYNNTS 254
15436 /* YYNRULES -- Number of rules. */
15437 #define YYNRULES 594
15438-/* YYNRULES -- Number of states. */
15439+/* YYNSTATES -- Number of states. */
15440 #define YYNSTATES 1042
15441
15442-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
15443+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
15444+ by yylex, with out-of-bounds checking. */
15445 #define YYUNDEFTOK 2
15446 #define YYMAXUTOK 406
15447
15448-#define YYTRANSLATE(YYX) \
15449+#define YYTRANSLATE(YYX) \
15450 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
15451
15452-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
15453+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
15454+ as returned by yylex, without out-of-bounds checking. */
15455 static const yytype_uint8 yytranslate[] =
15456 {
15457 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15458@@ -916,250 +959,7 @@
15459 };
15460
15461 #if YYDEBUG
15462-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
15463- YYRHS. */
15464-static const yytype_uint16 yyprhs[] =
15465-{
15466- 0, 0, 3, 5, 8, 9, 12, 14, 16, 18,
15467- 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
15468- 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
15469- 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
15470- 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,
15471- 100, 102, 104, 106, 108, 110, 112, 115, 117, 121,
15472- 123, 127, 131, 134, 136, 140, 142, 146, 150, 153,
15473- 155, 159, 161, 165, 169, 172, 174, 178, 180, 184,
15474- 188, 192, 194, 198, 200, 204, 208, 211, 214, 218,
15475- 220, 224, 228, 232, 238, 239, 243, 248, 250, 253,
15476- 255, 257, 259, 261, 264, 265, 271, 272, 279, 284,
15477- 286, 289, 291, 293, 295, 297, 300, 303, 305, 307,
15478- 309, 324, 325, 331, 332, 336, 338, 341, 342, 348,
15479- 350, 353, 355, 358, 360, 364, 366, 370, 374, 375,
15480- 381, 383, 386, 388, 389, 395, 397, 400, 404, 409,
15481- 411, 415, 417, 421, 422, 424, 428, 430, 434, 438,
15482- 442, 446, 450, 453, 455, 459, 461, 465, 469, 472,
15483- 474, 478, 480, 484, 488, 491, 493, 497, 499, 503,
15484- 507, 511, 513, 517, 519, 523, 527, 528, 533, 535,
15485- 538, 540, 542, 544, 548, 550, 554, 556, 560, 564,
15486- 565, 570, 572, 575, 577, 579, 581, 585, 589, 590,
15487- 594, 598, 600, 604, 608, 612, 616, 620, 624, 628,
15488- 632, 636, 640, 641, 646, 648, 651, 653, 655, 657,
15489- 659, 661, 663, 664, 666, 669, 671, 675, 677, 681,
15490- 685, 689, 692, 695, 697, 701, 703, 707, 711, 712,
15491- 715, 716, 719, 720, 723, 726, 729, 732, 735, 738,
15492- 741, 744, 747, 750, 753, 756, 759, 762, 765, 768,
15493- 771, 774, 777, 780, 783, 786, 789, 792, 795, 798,
15494- 801, 804, 807, 810, 814, 816, 820, 824, 828, 829,
15495- 831, 835, 837, 841, 845, 849, 850, 852, 856, 858,
15496- 862, 864, 868, 872, 876, 881, 884, 886, 889, 890,
15497- 900, 901, 903, 905, 906, 908, 909, 911, 912, 914,
15498- 916, 919, 921, 923, 928, 929, 931, 932, 935, 936,
15499- 939, 941, 945, 947, 949, 951, 953, 955, 957, 958,
15500- 960, 962, 964, 966, 968, 970, 974, 975, 979, 982,
15501- 984, 986, 990, 992, 994, 996, 998, 1003, 1005, 1007,
15502- 1009, 1011, 1013, 1015, 1016, 1018, 1022, 1029, 1042, 1043,
15503- 1044, 1053, 1054, 1058, 1063, 1064, 1065, 1074, 1075, 1078,
15504- 1080, 1084, 1087, 1088, 1090, 1092, 1094, 1095, 1099, 1100,
15505- 1102, 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121,
15506- 1123, 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141,
15507- 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157, 1159, 1161,
15508- 1164, 1167, 1170, 1174, 1178, 1182, 1185, 1189, 1193, 1195,
15509- 1199, 1203, 1207, 1211, 1212, 1217, 1219, 1222, 1224, 1226,
15510- 1228, 1230, 1232, 1233, 1235, 1248, 1249, 1253, 1255, 1267,
15511- 1268, 1269, 1276, 1277, 1278, 1286, 1287, 1289, 1307, 1315,
15512- 1333, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364, 1366,
15513- 1369, 1372, 1375, 1378, 1381, 1384, 1387, 1390, 1393, 1396,
15514- 1400, 1404, 1406, 1409, 1412, 1414, 1417, 1420, 1423, 1425,
15515- 1428, 1429, 1431, 1432, 1434, 1435, 1438, 1439, 1443, 1445,
15516- 1449, 1451, 1455, 1457, 1463, 1465, 1467, 1468, 1471, 1472,
15517- 1475, 1476, 1479, 1480, 1483, 1485, 1486, 1488, 1492, 1497,
15518- 1502, 1507, 1511, 1515, 1522, 1529, 1533, 1536, 1537, 1541,
15519- 1542, 1546, 1548, 1549, 1553, 1555, 1557, 1559, 1560, 1564,
15520- 1566, 1575, 1576, 1580, 1582, 1585, 1587, 1589, 1592, 1595,
15521- 1598, 1603, 1607, 1611, 1612, 1614, 1615, 1619, 1622, 1624,
15522- 1629, 1632, 1635, 1637, 1639, 1642, 1644, 1646, 1649, 1652,
15523- 1656, 1658, 1660, 1662, 1665, 1668, 1670, 1672, 1674, 1676,
15524- 1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696,
15525- 1700, 1701, 1706, 1707, 1709
15526-};
15527-
15528-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
15529-static const yytype_int16 yyrhs[] =
15530-{
15531- 175, 0, -1, 176, -1, 175, 176, -1, -1, 177,
15532- 178, -1, 269, -1, 255, -1, 262, -1, 192, -1,
15533- 291, -1, 279, -1, 283, -1, 284, -1, 200, -1,
15534- 230, -1, 222, -1, 226, -1, 239, -1, 180, -1,
15535- 184, -1, 188, -1, 243, -1, 247, -1, 251, -1,
15536- 292, -1, 293, -1, 306, -1, 308, -1, 309, -1,
15537- 310, -1, 311, -1, 312, -1, 313, -1, 314, -1,
15538- 315, -1, 317, -1, 318, -1, 328, -1, 332, -1,
15539- 210, -1, 212, -1, 196, -1, 179, -1, 234, -1,
15540- 238, -1, 218, -1, 358, -1, 364, -1, 361, -1,
15541- 204, -1, 357, -1, 335, -1, 392, -1, 416, -1,
15542- 294, -1, 5, 181, -1, 36, -1, 152, 182, 153,
15543- -1, 183, -1, 182, 154, 183, -1, 138, 155, 36,
15544- -1, 6, 185, -1, 36, -1, 152, 186, 153, -1,
15545- 187, -1, 186, 154, 187, -1, 138, 155, 36, -1,
15546- 7, 189, -1, 36, -1, 152, 190, 153, -1, 191,
15547- -1, 190, 154, 191, -1, 138, 155, 36, -1, 8,
15548- 193, -1, 34, -1, 152, 194, 153, -1, 195, -1,
15549- 194, 154, 195, -1, 138, 155, 34, -1, 9, 197,
15550- 333, -1, 34, -1, 152, 198, 153, -1, 199, -1,
15551- 198, 154, 199, -1, 138, 155, 34, -1, 3, 201,
15552- -1, 34, 106, -1, 152, 202, 153, -1, 203, -1,
15553- 202, 154, 203, -1, 138, 155, 381, -1, 151, 155,
15554- 106, -1, 121, 351, 205, 397, 206, -1, -1, 152,
15555- 351, 153, -1, 156, 207, 157, 158, -1, 208, -1,
15556- 207, 208, -1, 234, -1, 238, -1, 209, -1, 294,
15557- -1, 122, 333, -1, -1, 30, 424, 397, 211, 214,
15558- -1, -1, 363, 30, 424, 397, 213, 214, -1, 156,
15559- 215, 157, 158, -1, 216, -1, 215, 216, -1, 234,
15560- -1, 238, -1, 294, -1, 307, -1, 51, 333, -1,
15561- 52, 333, -1, 303, -1, 335, -1, 217, -1, 97,
15562- 420, 34, 152, 405, 153, 394, 426, 397, 389, 158,
15563- 327, 403, 402, -1, -1, 109, 34, 219, 220, 158,
15564- -1, -1, 156, 221, 157, -1, 179, -1, 221, 179,
15565- -1, -1, 111, 223, 156, 224, 157, -1, 225, -1,
15566- 224, 225, -1, 34, -1, 112, 227, -1, 34, -1,
15567- 152, 228, 153, -1, 229, -1, 228, 154, 229, -1,
15568- 138, 155, 381, -1, -1, 110, 231, 156, 232, 157,
15569- -1, 233, -1, 232, 233, -1, 34, -1, -1, 32,
15570- 152, 235, 237, 153, -1, 34, -1, 159, 34, -1,
15571- 236, 95, 34, -1, 236, 95, 159, 34, -1, 236,
15572- -1, 339, 160, 339, -1, 33, -1, 113, 240, 397,
15573- -1, -1, 36, -1, 152, 241, 153, -1, 242, -1,
15574- 241, 154, 242, -1, 145, 155, 36, -1, 137, 155,
15575- 36, -1, 143, 155, 36, -1, 144, 155, 36, -1,
15576- 128, 244, -1, 277, -1, 152, 245, 153, -1, 246,
15577- -1, 245, 154, 246, -1, 138, 155, 277, -1, 129,
15578- 248, -1, 277, -1, 152, 249, 153, -1, 250, -1,
15579- 249, 154, 250, -1, 138, 155, 277, -1, 131, 252,
15580- -1, 351, -1, 152, 253, 153, -1, 254, -1, 253,
15581- 154, 254, -1, 138, 155, 351, -1, 62, 256, 259,
15582- -1, 277, -1, 152, 257, 153, -1, 258, -1, 257,
15583- 154, 258, -1, 138, 155, 277, -1, -1, 156, 260,
15584- 157, 158, -1, 261, -1, 260, 261, -1, 234, -1,
15585- 238, -1, 323, -1, 63, 263, 266, -1, 277, -1,
15586- 152, 264, 153, -1, 265, -1, 264, 154, 265, -1,
15587- 138, 155, 277, -1, -1, 156, 267, 157, 158, -1,
15588- 268, -1, 267, 268, -1, 234, -1, 238, -1, 323,
15589- -1, 60, 270, 274, -1, 61, 277, 278, -1, -1,
15590- 277, 271, 278, -1, 152, 272, 153, -1, 273, -1,
15591- 272, 154, 273, -1, 135, 155, 36, -1, 136, 155,
15592- 36, -1, 138, 155, 277, -1, 146, 155, 354, -1,
15593- 147, 155, 354, -1, 148, 155, 354, -1, 149, 155,
15594- 354, -1, 150, 155, 34, -1, 151, 155, 106, -1,
15595- -1, 156, 275, 157, 158, -1, 276, -1, 275, 276,
15596- -1, 234, -1, 238, -1, 319, -1, 323, -1, 34,
15597- -1, 35, -1, -1, 106, -1, 54, 280, -1, 35,
15598- -1, 152, 281, 153, -1, 282, -1, 281, 154, 282,
15599- -1, 138, 155, 35, -1, 139, 155, 354, -1, 55,
15600- 35, -1, 56, 285, -1, 35, -1, 152, 286, 153,
15601- -1, 287, -1, 286, 154, 287, -1, 138, 155, 35,
15602- -1, -1, 17, 333, -1, -1, 18, 333, -1, -1,
15603- 19, 333, -1, 29, 333, -1, 57, 333, -1, 58,
15604- 333, -1, 59, 333, -1, 38, 333, -1, 39, 333,
15605- -1, 40, 333, -1, 41, 333, -1, 42, 333, -1,
15606- 43, 333, -1, 44, 333, -1, 45, 333, -1, 50,
15607- 333, -1, 46, 333, -1, 23, 333, -1, 26, 333,
15608- -1, 27, 333, -1, 20, 333, -1, 21, 333, -1,
15609- 22, 333, -1, 24, 333, -1, 25, 333, -1, 28,
15610- 333, -1, 10, 333, -1, 11, 333, -1, 11, 333,
15611- -1, 13, 333, -1, 14, 333, -1, 4, 320, -1,
15612- 152, 321, 153, -1, 322, -1, 321, 154, 322, -1,
15613- 141, 155, 36, -1, 12, 324, 333, -1, -1, 36,
15614- -1, 152, 325, 153, -1, 326, -1, 325, 154, 326,
15615- -1, 132, 155, 36, -1, 143, 155, 36, -1, -1,
15616- 323, -1, 15, 329, 333, -1, 34, -1, 152, 330,
15617- 153, -1, 331, -1, 330, 154, 331, -1, 134, 155,
15618- 34, -1, 140, 155, 106, -1, 16, 35, 338, 333,
15619- -1, 334, 33, -1, 31, -1, 334, 31, -1, -1,
15620- 91, 337, 339, 397, 336, 156, 340, 157, 158, -1,
15621- -1, 64, -1, 65, -1, -1, 35, -1, -1, 34,
15622- -1, -1, 341, -1, 342, -1, 341, 342, -1, 234,
15623- -1, 238, -1, 34, 344, 397, 343, -1, -1, 154,
15624- -1, -1, 155, 349, -1, -1, 155, 346, -1, 349,
15625- -1, 346, 347, 349, -1, 160, -1, 161, -1, 162,
15626- -1, 163, -1, 164, -1, 165, -1, -1, 159, -1,
15627- 166, -1, 160, -1, 161, -1, 162, -1, 164, -1,
15628- 350, 348, 355, -1, -1, 152, 351, 153, -1, 94,
15629- 352, -1, 352, -1, 353, -1, 352, 94, 353, -1,
15630- 34, -1, 115, -1, 116, -1, 351, -1, 424, 152,
15631- 356, 153, -1, 107, -1, 106, -1, 354, -1, 117,
15632- -1, 36, -1, 114, -1, -1, 346, -1, 356, 154,
15633- 346, -1, 108, 420, 34, 397, 158, 327, -1, 108,
15634- 420, 152, 162, 34, 153, 152, 425, 153, 397, 158,
15635- 327, -1, -1, -1, 65, 351, 359, 367, 397, 360,
15636- 371, 158, -1, -1, 363, 362, 364, -1, 125, 167,
15637- 425, 168, -1, -1, -1, 64, 351, 365, 367, 397,
15638- 366, 371, 158, -1, -1, 169, 368, -1, 369, -1,
15639- 368, 154, 369, -1, 370, 351, -1, -1, 66, -1,
15640- 67, -1, 68, -1, -1, 156, 372, 157, -1, -1,
15641- 373, -1, 372, 373, -1, 234, -1, 238, -1, 218,
15642- -1, 358, -1, 364, -1, 361, -1, 204, -1, 357,
15643- -1, 335, -1, 374, -1, 323, -1, 307, -1, 294,
15644- -1, 295, -1, 296, -1, 297, -1, 298, -1, 299,
15645- -1, 300, -1, 301, -1, 302, -1, 303, -1, 304,
15646- -1, 305, -1, 316, -1, 384, -1, 383, -1, 408,
15647- -1, 53, 333, -1, 52, 333, -1, 51, 333, -1,
15648- 66, 382, 169, -1, 67, 382, 169, -1, 68, 382,
15649- 169, -1, 69, 169, -1, 130, 375, 378, -1, 152,
15650- 376, 153, -1, 377, -1, 376, 154, 377, -1, 133,
15651- 155, 34, -1, 138, 155, 381, -1, 142, 155, 34,
15652- -1, -1, 156, 379, 157, 158, -1, 380, -1, 379,
15653- 380, -1, 234, -1, 238, -1, 323, -1, 34, -1,
15654- 36, -1, -1, 71, -1, 391, 166, 34, 152, 153,
15655- 426, 396, 397, 158, 403, 402, 404, -1, -1, 124,
15656- 385, 386, -1, 386, -1, 34, 152, 405, 153, 426,
15657- 397, 387, 158, 327, 403, 402, -1, -1, -1, 170,
15658- 388, 152, 405, 153, 171, -1, -1, -1, 170, 390,
15659- 420, 152, 405, 153, 171, -1, -1, 90, -1, 420,
15660- 34, 152, 405, 153, 394, 395, 426, 396, 397, 389,
15661- 158, 327, 403, 402, 404, 401, -1, 420, 118, 155,
15662- 152, 420, 153, 158, -1, 420, 118, 393, 152, 405,
15663- 153, 394, 395, 426, 396, 397, 389, 158, 403, 402,
15664- 404, 401, -1, 118, 420, 152, 405, 153, 394, 395,
15665- 426, 396, 397, 389, 158, 403, 402, 404, 401, -1,
15666- 161, -1, 160, -1, 162, -1, 163, -1, 172, -1,
15667- 164, -1, 165, -1, 173, -1, 167, 167, -1, 168,
15668- 168, -1, 161, 155, -1, 160, 155, -1, 162, 155,
15669- -1, 163, 155, -1, 172, 155, -1, 164, 155, -1,
15670- 165, 155, -1, 173, 155, -1, 167, 167, 155, -1,
15671- 168, 168, 155, -1, 166, -1, 152, 153, -1, 170,
15672- 171, -1, 167, -1, 167, 155, -1, 155, 155, -1,
15673- 159, 155, -1, 168, -1, 168, 155, -1, -1, 96,
15674- -1, -1, 126, -1, -1, 155, 106, -1, -1, 163,
15675- 398, 163, -1, 399, -1, 398, 154, 399, -1, 34,
15676- -1, 34, 155, 400, -1, 277, -1, 34, 169, 278,
15677- 160, 278, -1, 36, -1, 106, -1, -1, 47, 333,
15678- -1, -1, 48, 333, -1, -1, 49, 333, -1, -1,
15679- 37, 333, -1, 406, -1, -1, 407, -1, 406, 154,
15680- 407, -1, 98, 339, 397, 345, -1, 99, 339, 397,
15681- 345, -1, 100, 339, 397, 345, -1, 101, 339, 397,
15682- -1, 102, 339, 397, -1, 103, 152, 405, 153, 339,
15683- 397, -1, 104, 152, 405, 153, 339, 397, -1, 120,
15684- 339, 397, -1, 421, 345, -1, -1, 70, 409, 411,
15685- -1, -1, 72, 410, 411, -1, 411, -1, -1, 97,
15686- 412, 413, -1, 413, -1, 414, -1, 416, -1, -1,
15687- 90, 415, 392, -1, 392, -1, 420, 34, 397, 417,
15688- 158, 288, 289, 290, -1, -1, 156, 418, 157, -1,
15689- 419, -1, 418, 419, -1, 234, -1, 238, -1, 17,
15690- 333, -1, 18, 333, -1, 19, 333, -1, 96, 424,
15691- 423, 422, -1, 424, 423, 422, -1, 420, 339, 397,
15692- -1, -1, 164, -1, -1, 423, 162, 96, -1, 423,
15693- 162, -1, 351, -1, 351, 167, 425, 168, -1, 65,
15694- 351, -1, 93, 74, -1, 74, -1, 93, -1, 93,
15695- 75, -1, 75, -1, 76, -1, 93, 76, -1, 76,
15696- 76, -1, 93, 76, 76, -1, 77, -1, 78, -1,
15697- 73, -1, 92, 79, -1, 93, 79, -1, 79, -1,
15698- 80, -1, 81, -1, 82, -1, 83, -1, 84, -1,
15699- 85, -1, 86, -1, 87, -1, 88, -1, 89, -1,
15700- 105, -1, 127, -1, 420, -1, 425, 154, 420, -1,
15701- -1, 119, 152, 427, 153, -1, -1, 351, -1, 427,
15702- 154, 351, -1
15703-};
15704-
15705-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
15706+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
15707 static const yytype_uint16 yyrline[] =
15708 {
15709 0, 576, 576, 577, 580, 580, 599, 600, 601, 602,
15710@@ -1225,7 +1025,7 @@
15711 };
15712 #endif
15713
15714-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
15715+#if YYDEBUG || YYERROR_VERBOSE || 0
15716 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
15717 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
15718 static const char *const yytname[] =
15719@@ -1268,7 +1068,7 @@
15720 "TK_CALLSUPERINIT", "TK_DEFERRORHANDLER", "TK_VERSION", "'('", "')'",
15721 "','", "'='", "'{'", "'}'", "';'", "'!'", "'-'", "'+'", "'*'", "'/'",
15722 "'&'", "'|'", "'~'", "'<'", "'>'", "':'", "'['", "']'", "'%'", "'^'",
15723- "$accept", "specification", "statement", "@1", "modstatement",
15724+ "$accept", "specification", "statement", "$@1", "modstatement",
15725 "nsstatement", "defdocstringfmt", "defdocstringfmt_args",
15726 "defdocstringfmt_arg_list", "defdocstringfmt_arg", "defdocstringsig",
15727 "defdocstringsig_args", "defdocstringsig_arg_list",
15728@@ -1278,13 +1078,13 @@
15729 "veh_arg_list", "veh_arg", "api", "api_args", "api_arg_list", "api_arg",
15730 "exception", "baseexception", "exception_body",
15731 "exception_body_directives", "exception_body_directive", "raisecode",
15732- "mappedtype", "@2", "mappedtypetmpl", "@3", "mtdefinition", "mtbody",
15733- "mtline", "mtfunction", "namespace", "@4", "optnsbody", "nsbody",
15734- "platforms", "@5", "platformlist", "platform", "feature", "feature_args",
15735- "feature_arg_list", "feature_arg", "timeline", "@6", "qualifierlist",
15736- "qualifiername", "ifstart", "@7", "oredqualifiers", "qualifiers",
15737- "ifend", "license", "license_args", "license_arg_list", "license_arg",
15738- "defmetatype", "defmetatype_args", "defmetatype_arg_list",
15739+ "mappedtype", "$@2", "mappedtypetmpl", "$@3", "mtdefinition", "mtbody",
15740+ "mtline", "mtfunction", "namespace", "$@4", "optnsbody", "nsbody",
15741+ "platforms", "$@5", "platformlist", "platform", "feature",
15742+ "feature_args", "feature_arg_list", "feature_arg", "timeline", "$@6",
15743+ "qualifierlist", "qualifiername", "ifstart", "$@7", "oredqualifiers",
15744+ "qualifiers", "ifend", "license", "license_args", "license_arg_list",
15745+ "license_arg", "defmetatype", "defmetatype_args", "defmetatype_arg_list",
15746 "defmetatype_arg", "defsupertype", "defsupertype_args",
15747 "defsupertype_arg_list", "defsupertype_arg", "hiddenns", "hiddenns_args",
15748 "hiddenns_arg_list", "hiddenns_arg", "consmodule", "consmodule_args",
15749@@ -1292,7 +1092,7 @@
15750 "consmodule_body_directives", "consmodule_body_directive", "compmodule",
15751 "compmodule_args", "compmodule_arg_list", "compmodule_arg",
15752 "compmodule_body", "compmodule_body_directives",
15753- "compmodule_body_directive", "module", "module_args", "@8",
15754+ "compmodule_body_directive", "module", "module_args", "$@8",
15755 "module_arg_list", "module_arg", "module_body", "module_body_directives",
15756 "module_body_directive", "dottedname", "optnumber", "include",
15757 "include_args", "include_arg_list", "include_arg", "optinclude",
15758@@ -1307,31 +1107,31 @@
15759 "autopyname_args", "autopyname_arg_list", "autopyname_arg", "docstring",
15760 "docstring_args", "docstring_arg_list", "docstring_arg", "optdocstring",
15761 "extract", "extract_args", "extract_arg_list", "extract_arg", "makefile",
15762- "codeblock", "codelines", "enum", "@9", "optenumkey", "optfilename",
15763+ "codeblock", "codelines", "enum", "$@9", "optenumkey", "optfilename",
15764 "optname", "optenumbody", "enumbody", "enumline", "optcomma",
15765 "optenumassign", "optassign", "expr", "binop", "optunop", "value",
15766 "optcast", "scopedname", "scopednamehead", "scopepart", "bool_value",
15767- "simplevalue", "exprlist", "typedef", "struct", "@10", "@11",
15768- "classtmpl", "@12", "template", "class", "@13", "@14", "superclasses",
15769+ "simplevalue", "exprlist", "typedef", "struct", "$@10", "$@11",
15770+ "classtmpl", "$@12", "template", "class", "$@13", "$@14", "superclasses",
15771 "superlist", "superclass", "class_access", "optclassbody", "classbody",
15772 "classline", "property", "property_args", "property_arg_list",
15773 "property_arg", "property_body", "property_body_directives",
15774 "property_body_directive", "name_or_string", "optslot", "dtor", "ctor",
15775- "@15", "simplector", "optctorsig", "@16", "optsig", "@17", "optvirtual",
15776- "function", "operatorname", "optconst", "optfinal", "optabstract",
15777- "optflags", "flaglist", "flag", "flagvalue", "virtualcallcode",
15778- "methodcode", "premethodcode", "virtualcatchercode", "arglist",
15779- "rawarglist", "argvalue", "varmember", "@18", "@19", "simple_varmem",
15780- "@20", "varmem", "member", "@21", "variable", "variable_body",
15781- "variable_body_directives", "variable_body_directive", "cpptype",
15782- "argtype", "optref", "deref", "basetype", "cpptypelist", "optexceptions",
15783- "exceptionlist", 0
15784+ "$@15", "simplector", "optctorsig", "$@16", "optsig", "$@17",
15785+ "optvirtual", "function", "operatorname", "optconst", "optfinal",
15786+ "optabstract", "optflags", "flaglist", "flag", "flagvalue",
15787+ "virtualcallcode", "methodcode", "premethodcode", "virtualcatchercode",
15788+ "arglist", "rawarglist", "argvalue", "varmember", "$@18", "$@19",
15789+ "simple_varmem", "$@20", "varmem", "member", "$@21", "variable",
15790+ "variable_body", "variable_body_directives", "variable_body_directive",
15791+ "cpptype", "argtype", "optref", "deref", "basetype", "cpptypelist",
15792+ "optexceptions", "exceptionlist", YY_NULLPTR
15793 };
15794 #endif
15795
15796 # ifdef YYPRINT
15797-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
15798- token YYLEX-NUM. */
15799+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
15800+ (internal) symbol number NUM (which must be that of a token). */
15801 static const yytype_uint16 yytoknum[] =
15802 {
15803 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
15804@@ -1355,282 +1155,18 @@
15805 };
15806 # endif
15807
15808-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
15809-static const yytype_uint16 yyr1[] =
15810-{
15811- 0, 174, 175, 175, 177, 176, 178, 178, 178, 178,
15812- 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
15813- 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
15814- 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
15815- 178, 178, 178, 178, 179, 179, 179, 179, 179, 179,
15816- 179, 179, 179, 179, 179, 179, 180, 181, 181, 182,
15817- 182, 183, 184, 185, 185, 186, 186, 187, 188, 189,
15818- 189, 190, 190, 191, 192, 193, 193, 194, 194, 195,
15819- 196, 197, 197, 198, 198, 199, 200, 201, 201, 202,
15820- 202, 203, 203, 204, 205, 205, 206, 207, 207, 208,
15821- 208, 208, 208, 209, 211, 210, 213, 212, 214, 215,
15822- 215, 216, 216, 216, 216, 216, 216, 216, 216, 216,
15823- 217, 219, 218, 220, 220, 221, 221, 223, 222, 224,
15824- 224, 225, 226, 227, 227, 228, 228, 229, 231, 230,
15825- 232, 232, 233, 235, 234, 236, 236, 236, 236, 237,
15826- 237, 238, 239, 240, 240, 240, 241, 241, 242, 242,
15827- 242, 242, 243, 244, 244, 245, 245, 246, 247, 248,
15828- 248, 249, 249, 250, 251, 252, 252, 253, 253, 254,
15829- 255, 256, 256, 257, 257, 258, 259, 259, 260, 260,
15830- 261, 261, 261, 262, 263, 263, 264, 264, 265, 266,
15831- 266, 267, 267, 268, 268, 268, 269, 269, 271, 270,
15832- 270, 272, 272, 273, 273, 273, 273, 273, 273, 273,
15833- 273, 273, 274, 274, 275, 275, 276, 276, 276, 276,
15834- 277, 277, 278, 278, 279, 280, 280, 281, 281, 282,
15835- 282, 283, 284, 285, 285, 286, 286, 287, 288, 288,
15836- 289, 289, 290, 290, 291, 292, 293, 294, 295, 296,
15837- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
15838- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
15839- 317, 318, 319, 320, 321, 321, 322, 323, 324, 324,
15840- 324, 325, 325, 326, 326, 327, 327, 328, 329, 329,
15841- 330, 330, 331, 331, 332, 333, 334, 334, 336, 335,
15842- 337, 337, 337, 338, 338, 339, 339, 340, 340, 341,
15843- 341, 342, 342, 342, 343, 343, 344, 344, 345, 345,
15844- 346, 346, 347, 347, 347, 347, 347, 347, 348, 348,
15845- 348, 348, 348, 348, 348, 349, 350, 350, 351, 351,
15846- 352, 352, 353, 354, 354, 355, 355, 355, 355, 355,
15847- 355, 355, 355, 356, 356, 356, 357, 357, 359, 360,
15848- 358, 362, 361, 363, 365, 366, 364, 367, 367, 368,
15849- 368, 369, 370, 370, 370, 370, 371, 371, 372, 372,
15850- 372, 373, 373, 373, 373, 373, 373, 373, 373, 373,
15851- 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
15852- 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
15853- 373, 373, 373, 373, 373, 373, 374, 375, 376, 376,
15854- 377, 377, 377, 378, 378, 379, 379, 380, 380, 380,
15855- 381, 381, 382, 382, 383, 385, 384, 384, 386, 387,
15856- 388, 387, 389, 390, 389, 391, 391, 392, 392, 392,
15857- 392, 393, 393, 393, 393, 393, 393, 393, 393, 393,
15858- 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
15859- 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
15860- 394, 394, 395, 395, 396, 396, 397, 397, 398, 398,
15861- 399, 399, 400, 400, 400, 400, 401, 401, 402, 402,
15862- 403, 403, 404, 404, 405, 406, 406, 406, 407, 407,
15863- 407, 407, 407, 407, 407, 407, 407, 409, 408, 410,
15864- 408, 408, 412, 411, 411, 413, 413, 415, 414, 414,
15865- 416, 417, 417, 418, 418, 419, 419, 419, 419, 419,
15866- 420, 420, 421, 422, 422, 423, 423, 423, 424, 424,
15867- 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
15868- 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
15869- 424, 424, 424, 424, 424, 424, 424, 424, 425, 425,
15870- 426, 426, 427, 427, 427
15871-};
15872+#define YYPACT_NINF -848
15873
15874-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
15875-static const yytype_uint8 yyr2[] =
15876-{
15877- 0, 2, 1, 2, 0, 2, 1, 1, 1, 1,
15878- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15879- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15880- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15881- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15882- 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
15883- 3, 3, 2, 1, 3, 1, 3, 3, 2, 1,
15884- 3, 1, 3, 3, 2, 1, 3, 1, 3, 3,
15885- 3, 1, 3, 1, 3, 3, 2, 2, 3, 1,
15886- 3, 3, 3, 5, 0, 3, 4, 1, 2, 1,
15887- 1, 1, 1, 2, 0, 5, 0, 6, 4, 1,
15888- 2, 1, 1, 1, 1, 2, 2, 1, 1, 1,
15889- 14, 0, 5, 0, 3, 1, 2, 0, 5, 1,
15890- 2, 1, 2, 1, 3, 1, 3, 3, 0, 5,
15891- 1, 2, 1, 0, 5, 1, 2, 3, 4, 1,
15892- 3, 1, 3, 0, 1, 3, 1, 3, 3, 3,
15893- 3, 3, 2, 1, 3, 1, 3, 3, 2, 1,
15894- 3, 1, 3, 3, 2, 1, 3, 1, 3, 3,
15895- 3, 1, 3, 1, 3, 3, 0, 4, 1, 2,
15896- 1, 1, 1, 3, 1, 3, 1, 3, 3, 0,
15897- 4, 1, 2, 1, 1, 1, 3, 3, 0, 3,
15898- 3, 1, 3, 3, 3, 3, 3, 3, 3, 3,
15899- 3, 3, 0, 4, 1, 2, 1, 1, 1, 1,
15900- 1, 1, 0, 1, 2, 1, 3, 1, 3, 3,
15901- 3, 2, 2, 1, 3, 1, 3, 3, 0, 2,
15902- 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
15903- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15904- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15905- 2, 2, 2, 3, 1, 3, 3, 3, 0, 1,
15906- 3, 1, 3, 3, 3, 0, 1, 3, 1, 3,
15907- 1, 3, 3, 3, 4, 2, 1, 2, 0, 9,
15908- 0, 1, 1, 0, 1, 0, 1, 0, 1, 1,
15909- 2, 1, 1, 4, 0, 1, 0, 2, 0, 2,
15910- 1, 3, 1, 1, 1, 1, 1, 1, 0, 1,
15911- 1, 1, 1, 1, 1, 3, 0, 3, 2, 1,
15912- 1, 3, 1, 1, 1, 1, 4, 1, 1, 1,
15913- 1, 1, 1, 0, 1, 3, 6, 12, 0, 0,
15914- 8, 0, 3, 4, 0, 0, 8, 0, 2, 1,
15915- 3, 2, 0, 1, 1, 1, 0, 3, 0, 1,
15916- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15917- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15918- 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
15919- 2, 2, 3, 3, 3, 2, 3, 3, 1, 3,
15920- 3, 3, 3, 0, 4, 1, 2, 1, 1, 1,
15921- 1, 1, 0, 1, 12, 0, 3, 1, 11, 0,
15922- 0, 6, 0, 0, 7, 0, 1, 17, 7, 17,
15923- 16, 1, 1, 1, 1, 1, 1, 1, 1, 2,
15924- 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
15925- 3, 1, 2, 2, 1, 2, 2, 2, 1, 2,
15926- 0, 1, 0, 1, 0, 2, 0, 3, 1, 3,
15927- 1, 3, 1, 5, 1, 1, 0, 2, 0, 2,
15928- 0, 2, 0, 2, 1, 0, 1, 3, 4, 4,
15929- 4, 3, 3, 6, 6, 3, 2, 0, 3, 0,
15930- 3, 1, 0, 3, 1, 1, 1, 0, 3, 1,
15931- 8, 0, 3, 1, 2, 1, 1, 2, 2, 2,
15932- 4, 3, 3, 0, 1, 0, 3, 2, 1, 4,
15933- 2, 2, 1, 1, 2, 1, 1, 2, 2, 3,
15934- 1, 1, 1, 2, 2, 1, 1, 1, 1, 1,
15935- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
15936- 0, 4, 0, 1, 3
15937-};
15938+#define yypact_value_is_default(Yystate) \
15939+ (!!((Yystate) == (-848)))
15940
15941-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
15942- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
15943- means the default is an error. */
15944-static const yytype_uint16 yydefact[] =
15945-{
15946- 4, 4, 2, 0, 1, 3, 0, 0, 0, 0,
15947- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15948- 0, 0, 0, 0, 0, 0, 0, 0, 151, 352,
15949- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15950- 0, 0, 572, 562, 565, 566, 570, 571, 575, 576,
15951- 577, 578, 579, 580, 581, 582, 583, 584, 585, 310,
15952- 0, 563, 0, 0, 586, 0, 0, 138, 127, 0,
15953- 153, 0, 0, 0, 587, 0, 0, 0, 5, 43,
15954- 19, 20, 21, 9, 42, 14, 50, 40, 41, 46,
15955- 16, 17, 15, 44, 45, 18, 22, 23, 24, 7,
15956- 8, 6, 11, 12, 13, 10, 25, 26, 55, 27,
15957- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
15958- 38, 39, 52, 558, 349, 350, 51, 47, 49, 371,
15959- 48, 53, 54, 0, 555, 0, 0, 86, 57, 0,
15960- 56, 63, 0, 62, 69, 0, 68, 75, 0, 74,
15961- 81, 0, 0, 306, 277, 0, 278, 280, 281, 298,
15962- 0, 0, 313, 271, 272, 273, 274, 275, 269, 276,
15963- 254, 0, 496, 143, 235, 0, 234, 241, 243, 0,
15964- 242, 255, 256, 257, 230, 231, 0, 222, 208, 232,
15965- 0, 186, 181, 0, 199, 194, 374, 368, 568, 311,
15966- 312, 315, 573, 561, 564, 567, 574, 348, 555, 0,
15967- 121, 0, 0, 133, 0, 132, 154, 0, 496, 0,
15968- 94, 0, 0, 162, 163, 0, 168, 169, 0, 174,
15969- 175, 0, 0, 0, 0, 496, 0, 553, 87, 0,
15970- 0, 0, 89, 0, 0, 59, 0, 0, 65, 0,
15971- 0, 71, 0, 0, 77, 0, 0, 83, 80, 307,
15972- 305, 0, 0, 0, 300, 297, 314, 0, 560, 0,
15973- 104, 315, 0, 0, 0, 237, 0, 0, 245, 0,
15974- 0, 0, 0, 0, 0, 0, 0, 0, 0, 211,
15975- 0, 206, 232, 233, 207, 0, 0, 183, 0, 180,
15976- 0, 0, 196, 0, 193, 377, 377, 316, 496, 569,
15977- 553, 496, 0, 123, 0, 0, 0, 0, 135, 0,
15978- 0, 0, 0, 0, 156, 152, 515, 0, 496, 588,
15979- 0, 0, 0, 165, 0, 0, 171, 0, 0, 177,
15980- 0, 351, 496, 372, 515, 541, 0, 0, 0, 462,
15981- 461, 463, 464, 466, 467, 481, 484, 488, 0, 465,
15982- 468, 0, 557, 554, 551, 0, 0, 88, 0, 0,
15983- 58, 0, 0, 64, 0, 0, 70, 0, 0, 76,
15984- 0, 0, 82, 0, 0, 0, 299, 0, 304, 500,
15985- 0, 498, 0, 145, 0, 149, 0, 0, 0, 0,
15986- 236, 0, 0, 244, 0, 0, 0, 0, 0, 0,
15987- 0, 0, 0, 0, 210, 0, 0, 288, 226, 227,
15988- 0, 224, 228, 229, 209, 0, 182, 0, 190, 191,
15989- 0, 188, 192, 0, 195, 0, 203, 204, 0, 201,
15990- 205, 382, 496, 496, 308, 550, 0, 0, 0, 0,
15991- 142, 0, 140, 131, 0, 129, 0, 134, 0, 0,
15992- 0, 0, 0, 155, 0, 315, 315, 315, 315, 315,
15993- 0, 0, 315, 0, 514, 516, 315, 328, 0, 0,
15994- 0, 373, 0, 164, 0, 0, 170, 0, 0, 176,
15995- 0, 559, 106, 0, 0, 0, 482, 0, 486, 487,
15996- 472, 471, 473, 474, 476, 477, 485, 469, 489, 470,
15997- 483, 475, 478, 515, 556, 440, 441, 91, 92, 90,
15998- 61, 60, 67, 66, 73, 72, 79, 78, 85, 84,
15999- 302, 303, 301, 0, 0, 497, 0, 105, 146, 0,
16000- 144, 315, 239, 353, 354, 240, 238, 247, 246, 213,
16001- 214, 215, 216, 217, 218, 219, 220, 221, 212, 0,
16002- 282, 289, 0, 0, 0, 225, 185, 184, 0, 189,
16003- 198, 197, 0, 202, 383, 384, 385, 378, 379, 0,
16004- 375, 369, 0, 295, 0, 125, 0, 371, 122, 139,
16005- 141, 128, 130, 137, 136, 159, 160, 161, 158, 157,
16006- 496, 496, 496, 496, 496, 515, 515, 496, 490, 0,
16007- 496, 346, 526, 95, 0, 93, 589, 167, 166, 173,
16008- 172, 179, 178, 0, 490, 0, 0, 0, 545, 546,
16009- 0, 543, 248, 0, 479, 480, 0, 230, 504, 505,
16010- 502, 501, 499, 0, 0, 0, 0, 0, 0, 109,
16011- 119, 111, 112, 113, 117, 114, 118, 147, 0, 150,
16012- 0, 0, 284, 0, 0, 0, 291, 287, 223, 187,
16013- 200, 382, 381, 386, 386, 317, 296, 366, 0, 124,
16014- 126, 328, 328, 328, 521, 522, 0, 0, 525, 491,
16015- 492, 517, 552, 0, 329, 330, 338, 0, 0, 97,
16016- 101, 99, 100, 102, 107, 492, 547, 548, 549, 542,
16017- 544, 0, 250, 0, 490, 232, 270, 266, 115, 116,
16018- 0, 0, 110, 148, 0, 283, 0, 0, 0, 290,
16019- 0, 380, 388, 0, 0, 326, 321, 322, 0, 318,
16020- 319, 0, 518, 519, 520, 315, 315, 493, 590, 0,
16021- 332, 333, 334, 335, 336, 337, 346, 339, 341, 342,
16022- 343, 344, 340, 0, 103, 0, 98, 590, 249, 0,
16023- 252, 458, 492, 0, 0, 108, 286, 285, 293, 294,
16024- 292, 0, 0, 352, 0, 0, 0, 0, 0, 0,
16025- 0, 0, 0, 0, 0, 0, 442, 442, 442, 0,
16026- 527, 529, 537, 532, 445, 0, 397, 393, 391, 392,
16027- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
16028- 413, 414, 402, 415, 401, 399, 398, 394, 396, 395,
16029- 455, 389, 400, 417, 416, 447, 0, 539, 418, 531,
16030- 534, 535, 536, 376, 370, 346, 496, 0, 320, 0,
16031- 496, 496, 0, 494, 347, 331, 361, 358, 357, 362,
16032- 360, 355, 359, 345, 0, 96, 494, 251, 0, 540,
16033- 590, 232, 515, 279, 268, 515, 258, 259, 260, 261,
16034- 262, 263, 264, 265, 267, 421, 420, 419, 443, 0,
16035- 0, 0, 425, 0, 0, 0, 0, 0, 0, 433,
16036- 387, 390, 0, 327, 324, 309, 496, 523, 524, 592,
16037- 0, 496, 346, 496, 253, 494, 503, 0, 0, 422,
16038- 423, 424, 537, 528, 530, 538, 0, 533, 0, 446,
16039- 0, 0, 0, 0, 428, 0, 426, 0, 325, 323,
16040- 0, 593, 0, 495, 452, 364, 0, 452, 496, 490,
16041- 590, 0, 0, 0, 0, 427, 0, 437, 438, 439,
16042- 0, 435, 0, 295, 591, 0, 453, 0, 356, 346,
16043- 0, 452, 590, 496, 430, 431, 432, 429, 0, 436,
16044- 590, 367, 594, 0, 510, 365, 295, 0, 496, 449,
16045- 434, 494, 0, 0, 508, 510, 510, 452, 450, 0,
16046- 496, 515, 511, 0, 512, 508, 508, 0, 0, 295,
16047- 0, 0, 509, 0, 506, 512, 512, 295, 515, 510,
16048- 510, 0, 513, 0, 460, 506, 506, 510, 0, 508,
16049- 508, 454, 507, 457, 459, 508, 0, 448, 512, 120,
16050- 451, 444
16051-};
16052+#define YYTABLE_NINF -561
16053
16054-/* YYDEFGOTO[NTERM-NUM]. */
16055-static const yytype_int16 yydefgoto[] =
16056-{
16057- -1, 1, 2, 3, 78, 79, 80, 140, 244, 245,
16058- 81, 143, 247, 248, 82, 146, 250, 251, 83, 149,
16059- 253, 254, 84, 152, 256, 257, 85, 137, 241, 242,
16060- 86, 328, 615, 698, 699, 700, 87, 392, 88, 623,
16061- 537, 648, 649, 650, 89, 313, 449, 586, 90, 212,
16062- 454, 455, 91, 215, 317, 318, 92, 211, 451, 452,
16063- 93, 271, 395, 396, 94, 95, 218, 323, 324, 96,
16064- 223, 332, 333, 97, 226, 335, 336, 98, 229, 338,
16065- 339, 99, 191, 296, 297, 299, 430, 431, 100, 194,
16066- 301, 302, 304, 438, 439, 101, 187, 292, 288, 289,
16067- 291, 420, 421, 188, 294, 102, 176, 274, 275, 103,
16068- 104, 180, 277, 278, 712, 770, 869, 105, 106, 107,
16069- 108, 811, 812, 813, 814, 815, 816, 817, 818, 654,
16070- 820, 821, 109, 655, 110, 111, 112, 113, 114, 115,
16071- 116, 117, 823, 118, 119, 422, 560, 661, 662, 676,
16072- 563, 665, 666, 677, 120, 161, 263, 264, 121, 154,
16073- 155, 122, 582, 201, 267, 308, 738, 739, 740, 939,
16074- 846, 612, 694, 756, 763, 695, 696, 123, 124, 125,
16075- 545, 863, 946, 126, 127, 306, 674, 128, 234, 587,
16076- 130, 305, 673, 442, 577, 578, 579, 733, 830, 831,
16077- 832, 899, 933, 934, 936, 960, 961, 517, 889, 833,
16078- 834, 897, 835, 999, 1008, 967, 983, 836, 837, 361,
16079- 690, 748, 911, 270, 390, 391, 641, 1024, 1004, 994,
16080- 1014, 473, 474, 475, 838, 893, 894, 839, 896, 840,
16081- 841, 895, 842, 495, 630, 631, 476, 477, 364, 237,
16082- 134, 330, 853, 942
16083-};
16084+#define yytable_value_is_error(Yytable_value) \
16085+ 0
16086
16087-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
16088- STATE-NUM. */
16089-#define YYPACT_NINF -848
16090+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
16091+ STATE-NUM. */
16092 static const yytype_int16 yypact[] =
16093 {
16094 -848, 264, -848, 1011, -848, -848, 67, 30, 64, 89,
16095@@ -1740,7 +1276,119 @@
16096 -848, -848
16097 };
16098
16099-/* YYPGOTO[NTERM-NUM]. */
16100+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
16101+ Performed when YYTABLE does not specify something else to do. Zero
16102+ means the default is an error. */
16103+static const yytype_uint16 yydefact[] =
16104+{
16105+ 4, 4, 2, 0, 1, 3, 0, 0, 0, 0,
16106+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
16107+ 0, 0, 0, 0, 0, 0, 0, 0, 151, 352,
16108+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
16109+ 0, 0, 572, 562, 565, 566, 570, 571, 575, 576,
16110+ 577, 578, 579, 580, 581, 582, 583, 584, 585, 310,
16111+ 0, 563, 0, 0, 586, 0, 0, 138, 127, 0,
16112+ 153, 0, 0, 0, 587, 0, 0, 0, 5, 43,
16113+ 19, 20, 21, 9, 42, 14, 50, 40, 41, 46,
16114+ 16, 17, 15, 44, 45, 18, 22, 23, 24, 7,
16115+ 8, 6, 11, 12, 13, 10, 25, 26, 55, 27,
16116+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
16117+ 38, 39, 52, 558, 349, 350, 51, 47, 49, 371,
16118+ 48, 53, 54, 0, 555, 0, 0, 86, 57, 0,
16119+ 56, 63, 0, 62, 69, 0, 68, 75, 0, 74,
16120+ 81, 0, 0, 306, 277, 0, 278, 280, 281, 298,
16121+ 0, 0, 313, 271, 272, 273, 274, 275, 269, 276,
16122+ 254, 0, 496, 143, 235, 0, 234, 241, 243, 0,
16123+ 242, 255, 256, 257, 230, 231, 0, 222, 208, 232,
16124+ 0, 186, 181, 0, 199, 194, 374, 368, 568, 311,
16125+ 312, 315, 573, 561, 564, 567, 574, 348, 555, 0,
16126+ 121, 0, 0, 133, 0, 132, 154, 0, 496, 0,
16127+ 94, 0, 0, 162, 163, 0, 168, 169, 0, 174,
16128+ 175, 0, 0, 0, 0, 496, 0, 553, 87, 0,
16129+ 0, 0, 89, 0, 0, 59, 0, 0, 65, 0,
16130+ 0, 71, 0, 0, 77, 0, 0, 83, 80, 307,
16131+ 305, 0, 0, 0, 300, 297, 314, 0, 560, 0,
16132+ 104, 315, 0, 0, 0, 237, 0, 0, 245, 0,
16133+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 211,
16134+ 0, 206, 232, 233, 207, 0, 0, 183, 0, 180,
16135+ 0, 0, 196, 0, 193, 377, 377, 316, 496, 569,
16136+ 553, 496, 0, 123, 0, 0, 0, 0, 135, 0,
16137+ 0, 0, 0, 0, 156, 152, 515, 0, 496, 588,
16138+ 0, 0, 0, 165, 0, 0, 171, 0, 0, 177,
16139+ 0, 351, 496, 372, 515, 541, 0, 0, 0, 462,
16140+ 461, 463, 464, 466, 467, 481, 484, 488, 0, 465,
16141+ 468, 0, 557, 554, 551, 0, 0, 88, 0, 0,
16142+ 58, 0, 0, 64, 0, 0, 70, 0, 0, 76,
16143+ 0, 0, 82, 0, 0, 0, 299, 0, 304, 500,
16144+ 0, 498, 0, 145, 0, 149, 0, 0, 0, 0,
16145+ 236, 0, 0, 244, 0, 0, 0, 0, 0, 0,
16146+ 0, 0, 0, 0, 210, 0, 0, 288, 226, 227,
16147+ 0, 224, 228, 229, 209, 0, 182, 0, 190, 191,
16148+ 0, 188, 192, 0, 195, 0, 203, 204, 0, 201,
16149+ 205, 382, 496, 496, 308, 550, 0, 0, 0, 0,
16150+ 142, 0, 140, 131, 0, 129, 0, 134, 0, 0,
16151+ 0, 0, 0, 155, 0, 315, 315, 315, 315, 315,
16152+ 0, 0, 315, 0, 514, 516, 315, 328, 0, 0,
16153+ 0, 373, 0, 164, 0, 0, 170, 0, 0, 176,
16154+ 0, 559, 106, 0, 0, 0, 482, 0, 486, 487,
16155+ 472, 471, 473, 474, 476, 477, 485, 469, 489, 470,
16156+ 483, 475, 478, 515, 556, 440, 441, 91, 92, 90,
16157+ 61, 60, 67, 66, 73, 72, 79, 78, 85, 84,
16158+ 302, 303, 301, 0, 0, 497, 0, 105, 146, 0,
16159+ 144, 315, 239, 353, 354, 240, 238, 247, 246, 213,
16160+ 214, 215, 216, 217, 218, 219, 220, 221, 212, 0,
16161+ 282, 289, 0, 0, 0, 225, 185, 184, 0, 189,
16162+ 198, 197, 0, 202, 383, 384, 385, 378, 379, 0,
16163+ 375, 369, 0, 295, 0, 125, 0, 371, 122, 139,
16164+ 141, 128, 130, 137, 136, 159, 160, 161, 158, 157,
16165+ 496, 496, 496, 496, 496, 515, 515, 496, 490, 0,
16166+ 496, 346, 526, 95, 0, 93, 589, 167, 166, 173,
16167+ 172, 179, 178, 0, 490, 0, 0, 0, 545, 546,
16168+ 0, 543, 248, 0, 479, 480, 0, 230, 504, 505,
16169+ 502, 501, 499, 0, 0, 0, 0, 0, 0, 109,
16170+ 119, 111, 112, 113, 117, 114, 118, 147, 0, 150,
16171+ 0, 0, 284, 0, 0, 0, 291, 287, 223, 187,
16172+ 200, 382, 381, 386, 386, 317, 296, 366, 0, 124,
16173+ 126, 328, 328, 328, 521, 522, 0, 0, 525, 491,
16174+ 492, 517, 552, 0, 329, 330, 338, 0, 0, 97,
16175+ 101, 99, 100, 102, 107, 492, 547, 548, 549, 542,
16176+ 544, 0, 250, 0, 490, 232, 270, 266, 115, 116,
16177+ 0, 0, 110, 148, 0, 283, 0, 0, 0, 290,
16178+ 0, 380, 388, 0, 0, 326, 321, 322, 0, 318,
16179+ 319, 0, 518, 519, 520, 315, 315, 493, 590, 0,
16180+ 332, 333, 334, 335, 336, 337, 346, 339, 341, 342,
16181+ 343, 344, 340, 0, 103, 0, 98, 590, 249, 0,
16182+ 252, 458, 492, 0, 0, 108, 286, 285, 293, 294,
16183+ 292, 0, 0, 352, 0, 0, 0, 0, 0, 0,
16184+ 0, 0, 0, 0, 0, 0, 442, 442, 442, 0,
16185+ 527, 529, 537, 532, 445, 0, 397, 393, 391, 392,
16186+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
16187+ 413, 414, 402, 415, 401, 399, 398, 394, 396, 395,
16188+ 455, 389, 400, 417, 416, 447, 0, 539, 418, 531,
16189+ 534, 535, 536, 376, 370, 346, 496, 0, 320, 0,
16190+ 496, 496, 0, 494, 347, 331, 361, 358, 357, 362,
16191+ 360, 355, 359, 345, 0, 96, 494, 251, 0, 540,
16192+ 590, 232, 515, 279, 268, 515, 258, 259, 260, 261,
16193+ 262, 263, 264, 265, 267, 421, 420, 419, 443, 0,
16194+ 0, 0, 425, 0, 0, 0, 0, 0, 0, 433,
16195+ 387, 390, 0, 327, 324, 309, 496, 523, 524, 592,
16196+ 0, 496, 346, 496, 253, 494, 503, 0, 0, 422,
16197+ 423, 424, 537, 528, 530, 538, 0, 533, 0, 446,
16198+ 0, 0, 0, 0, 428, 0, 426, 0, 325, 323,
16199+ 0, 593, 0, 495, 452, 364, 0, 452, 496, 490,
16200+ 590, 0, 0, 0, 0, 427, 0, 437, 438, 439,
16201+ 0, 435, 0, 295, 591, 0, 453, 0, 356, 346,
16202+ 0, 452, 590, 496, 430, 431, 432, 429, 0, 436,
16203+ 590, 367, 594, 0, 510, 365, 295, 0, 496, 449,
16204+ 434, 494, 0, 0, 508, 510, 510, 452, 450, 0,
16205+ 496, 515, 511, 0, 512, 508, 508, 0, 0, 295,
16206+ 0, 0, 509, 0, 506, 512, 512, 295, 515, 510,
16207+ 510, 0, 513, 0, 460, 506, 506, 510, 0, 508,
16208+ 508, 454, 507, 457, 459, 508, 0, 448, 512, 120,
16209+ 451, 444
16210+};
16211+
16212+ /* YYPGOTO[NTERM-NUM]. */
16213 static const yytype_int16 yypgoto[] =
16214 {
16215 -848, -848, 761, -848, -848, -397, -848, -848, -848, 427,
16216@@ -1771,11 +1419,40 @@
16217 -10, -204, -732, -848
16218 };
16219
16220-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
16221- positive, shift that token. If negative, reduce the rule which
16222- number is the opposite. If zero, do what YYDEFACT says.
16223- If YYTABLE_NINF, syntax error. */
16224-#define YYTABLE_NINF -561
16225+ /* YYDEFGOTO[NTERM-NUM]. */
16226+static const yytype_int16 yydefgoto[] =
16227+{
16228+ -1, 1, 2, 3, 78, 79, 80, 140, 244, 245,
16229+ 81, 143, 247, 248, 82, 146, 250, 251, 83, 149,
16230+ 253, 254, 84, 152, 256, 257, 85, 137, 241, 242,
16231+ 86, 328, 615, 698, 699, 700, 87, 392, 88, 623,
16232+ 537, 648, 649, 650, 89, 313, 449, 586, 90, 212,
16233+ 454, 455, 91, 215, 317, 318, 92, 211, 451, 452,
16234+ 93, 271, 395, 396, 94, 95, 218, 323, 324, 96,
16235+ 223, 332, 333, 97, 226, 335, 336, 98, 229, 338,
16236+ 339, 99, 191, 296, 297, 299, 430, 431, 100, 194,
16237+ 301, 302, 304, 438, 439, 101, 187, 292, 288, 289,
16238+ 291, 420, 421, 188, 294, 102, 176, 274, 275, 103,
16239+ 104, 180, 277, 278, 712, 770, 869, 105, 106, 107,
16240+ 108, 811, 812, 813, 814, 815, 816, 817, 818, 654,
16241+ 820, 821, 109, 655, 110, 111, 112, 113, 114, 115,
16242+ 116, 117, 823, 118, 119, 422, 560, 661, 662, 676,
16243+ 563, 665, 666, 677, 120, 161, 263, 264, 121, 154,
16244+ 155, 122, 582, 201, 267, 308, 738, 739, 740, 939,
16245+ 846, 612, 694, 756, 763, 695, 696, 123, 124, 125,
16246+ 545, 863, 946, 126, 127, 306, 674, 128, 234, 587,
16247+ 130, 305, 673, 442, 577, 578, 579, 733, 830, 831,
16248+ 832, 899, 933, 934, 936, 960, 961, 517, 889, 833,
16249+ 834, 897, 835, 999, 1008, 967, 983, 836, 837, 361,
16250+ 690, 748, 911, 270, 390, 391, 641, 1024, 1004, 994,
16251+ 1014, 473, 474, 475, 838, 893, 894, 839, 896, 840,
16252+ 841, 895, 842, 495, 630, 631, 476, 477, 364, 237,
16253+ 134, 330, 853, 942
16254+};
16255+
16256+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
16257+ positive, shift that token. If negative, reduce the rule whose
16258+ number is the opposite. If YYTABLE_NINF, syntax error. */
16259 static const yytype_int16 yytable[] =
16260 {
16261 156, 157, 158, 133, 493, 163, 164, 165, 166, 167,
16262@@ -2108,8 +1785,8 @@
16263 -1, 127
16264 };
16265
16266-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
16267- symbol of state STATE-NUM. */
16268+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
16269+ symbol of state STATE-NUM. */
16270 static const yytype_uint16 yystos[] =
16271 {
16272 0, 175, 176, 177, 0, 176, 3, 5, 6, 7,
16273@@ -2219,95 +1896,171 @@
16274 171, 404
16275 };
16276
16277-#define yyerrok (yyerrstatus = 0)
16278-#define yyclearin (yychar = YYEMPTY)
16279-#define YYEMPTY (-2)
16280-#define YYEOF 0
16281+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
16282+static const yytype_uint16 yyr1[] =
16283+{
16284+ 0, 174, 175, 175, 177, 176, 178, 178, 178, 178,
16285+ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
16286+ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
16287+ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
16288+ 178, 178, 178, 178, 179, 179, 179, 179, 179, 179,
16289+ 179, 179, 179, 179, 179, 179, 180, 181, 181, 182,
16290+ 182, 183, 184, 185, 185, 186, 186, 187, 188, 189,
16291+ 189, 190, 190, 191, 192, 193, 193, 194, 194, 195,
16292+ 196, 197, 197, 198, 198, 199, 200, 201, 201, 202,
16293+ 202, 203, 203, 204, 205, 205, 206, 207, 207, 208,
16294+ 208, 208, 208, 209, 211, 210, 213, 212, 214, 215,
16295+ 215, 216, 216, 216, 216, 216, 216, 216, 216, 216,
16296+ 217, 219, 218, 220, 220, 221, 221, 223, 222, 224,
16297+ 224, 225, 226, 227, 227, 228, 228, 229, 231, 230,
16298+ 232, 232, 233, 235, 234, 236, 236, 236, 236, 237,
16299+ 237, 238, 239, 240, 240, 240, 241, 241, 242, 242,
16300+ 242, 242, 243, 244, 244, 245, 245, 246, 247, 248,
16301+ 248, 249, 249, 250, 251, 252, 252, 253, 253, 254,
16302+ 255, 256, 256, 257, 257, 258, 259, 259, 260, 260,
16303+ 261, 261, 261, 262, 263, 263, 264, 264, 265, 266,
16304+ 266, 267, 267, 268, 268, 268, 269, 269, 271, 270,
16305+ 270, 272, 272, 273, 273, 273, 273, 273, 273, 273,
16306+ 273, 273, 274, 274, 275, 275, 276, 276, 276, 276,
16307+ 277, 277, 278, 278, 279, 280, 280, 281, 281, 282,
16308+ 282, 283, 284, 285, 285, 286, 286, 287, 288, 288,
16309+ 289, 289, 290, 290, 291, 292, 293, 294, 295, 296,
16310+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
16311+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
16312+ 317, 318, 319, 320, 321, 321, 322, 323, 324, 324,
16313+ 324, 325, 325, 326, 326, 327, 327, 328, 329, 329,
16314+ 330, 330, 331, 331, 332, 333, 334, 334, 336, 335,
16315+ 337, 337, 337, 338, 338, 339, 339, 340, 340, 341,
16316+ 341, 342, 342, 342, 343, 343, 344, 344, 345, 345,
16317+ 346, 346, 347, 347, 347, 347, 347, 347, 348, 348,
16318+ 348, 348, 348, 348, 348, 349, 350, 350, 351, 351,
16319+ 352, 352, 353, 354, 354, 355, 355, 355, 355, 355,
16320+ 355, 355, 355, 356, 356, 356, 357, 357, 359, 360,
16321+ 358, 362, 361, 363, 365, 366, 364, 367, 367, 368,
16322+ 368, 369, 370, 370, 370, 370, 371, 371, 372, 372,
16323+ 372, 373, 373, 373, 373, 373, 373, 373, 373, 373,
16324+ 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
16325+ 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
16326+ 373, 373, 373, 373, 373, 373, 374, 375, 376, 376,
16327+ 377, 377, 377, 378, 378, 379, 379, 380, 380, 380,
16328+ 381, 381, 382, 382, 383, 385, 384, 384, 386, 387,
16329+ 388, 387, 389, 390, 389, 391, 391, 392, 392, 392,
16330+ 392, 393, 393, 393, 393, 393, 393, 393, 393, 393,
16331+ 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
16332+ 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
16333+ 394, 394, 395, 395, 396, 396, 397, 397, 398, 398,
16334+ 399, 399, 400, 400, 400, 400, 401, 401, 402, 402,
16335+ 403, 403, 404, 404, 405, 406, 406, 406, 407, 407,
16336+ 407, 407, 407, 407, 407, 407, 407, 409, 408, 410,
16337+ 408, 408, 412, 411, 411, 413, 413, 415, 414, 414,
16338+ 416, 417, 417, 418, 418, 419, 419, 419, 419, 419,
16339+ 420, 420, 421, 422, 422, 423, 423, 423, 424, 424,
16340+ 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
16341+ 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
16342+ 424, 424, 424, 424, 424, 424, 424, 424, 425, 425,
16343+ 426, 426, 427, 427, 427
16344+};
16345
16346-#define YYACCEPT goto yyacceptlab
16347-#define YYABORT goto yyabortlab
16348-#define YYERROR goto yyerrorlab
16349+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
16350+static const yytype_uint8 yyr2[] =
16351+{
16352+ 0, 2, 1, 2, 0, 2, 1, 1, 1, 1,
16353+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16354+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16355+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16356+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16357+ 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
16358+ 3, 3, 2, 1, 3, 1, 3, 3, 2, 1,
16359+ 3, 1, 3, 3, 2, 1, 3, 1, 3, 3,
16360+ 3, 1, 3, 1, 3, 3, 2, 2, 3, 1,
16361+ 3, 3, 3, 5, 0, 3, 4, 1, 2, 1,
16362+ 1, 1, 1, 2, 0, 5, 0, 6, 4, 1,
16363+ 2, 1, 1, 1, 1, 2, 2, 1, 1, 1,
16364+ 14, 0, 5, 0, 3, 1, 2, 0, 5, 1,
16365+ 2, 1, 2, 1, 3, 1, 3, 3, 0, 5,
16366+ 1, 2, 1, 0, 5, 1, 2, 3, 4, 1,
16367+ 3, 1, 3, 0, 1, 3, 1, 3, 3, 3,
16368+ 3, 3, 2, 1, 3, 1, 3, 3, 2, 1,
16369+ 3, 1, 3, 3, 2, 1, 3, 1, 3, 3,
16370+ 3, 1, 3, 1, 3, 3, 0, 4, 1, 2,
16371+ 1, 1, 1, 3, 1, 3, 1, 3, 3, 0,
16372+ 4, 1, 2, 1, 1, 1, 3, 3, 0, 3,
16373+ 3, 1, 3, 3, 3, 3, 3, 3, 3, 3,
16374+ 3, 3, 0, 4, 1, 2, 1, 1, 1, 1,
16375+ 1, 1, 0, 1, 2, 1, 3, 1, 3, 3,
16376+ 3, 2, 2, 1, 3, 1, 3, 3, 0, 2,
16377+ 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
16378+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
16379+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
16380+ 2, 2, 2, 3, 1, 3, 3, 3, 0, 1,
16381+ 3, 1, 3, 3, 3, 0, 1, 3, 1, 3,
16382+ 1, 3, 3, 3, 4, 2, 1, 2, 0, 9,
16383+ 0, 1, 1, 0, 1, 0, 1, 0, 1, 1,
16384+ 2, 1, 1, 4, 0, 1, 0, 2, 0, 2,
16385+ 1, 3, 1, 1, 1, 1, 1, 1, 0, 1,
16386+ 1, 1, 1, 1, 1, 3, 0, 3, 2, 1,
16387+ 1, 3, 1, 1, 1, 1, 4, 1, 1, 1,
16388+ 1, 1, 1, 0, 1, 3, 6, 12, 0, 0,
16389+ 8, 0, 3, 4, 0, 0, 8, 0, 2, 1,
16390+ 3, 2, 0, 1, 1, 1, 0, 3, 0, 1,
16391+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16392+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
16393+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
16394+ 2, 2, 3, 3, 3, 2, 3, 3, 1, 3,
16395+ 3, 3, 3, 0, 4, 1, 2, 1, 1, 1,
16396+ 1, 1, 0, 1, 12, 0, 3, 1, 11, 0,
16397+ 0, 6, 0, 0, 7, 0, 1, 17, 7, 17,
16398+ 16, 1, 1, 1, 1, 1, 1, 1, 1, 2,
16399+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
16400+ 3, 1, 2, 2, 1, 2, 2, 2, 1, 2,
16401+ 0, 1, 0, 1, 0, 2, 0, 3, 1, 3,
16402+ 1, 3, 1, 5, 1, 1, 0, 2, 0, 2,
16403+ 0, 2, 0, 2, 1, 0, 1, 3, 4, 4,
16404+ 4, 3, 3, 6, 6, 3, 2, 0, 3, 0,
16405+ 3, 1, 0, 3, 1, 1, 1, 0, 3, 1,
16406+ 8, 0, 3, 1, 2, 1, 1, 2, 2, 2,
16407+ 4, 3, 3, 0, 1, 0, 3, 2, 1, 4,
16408+ 2, 2, 1, 1, 2, 1, 1, 2, 2, 3,
16409+ 1, 1, 1, 2, 2, 1, 1, 1, 1, 1,
16410+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
16411+ 0, 4, 0, 1, 3
16412+};
16413
16414
16415-/* Like YYERROR except do call yyerror. This remains here temporarily
16416- to ease the transition to the new meaning of YYERROR, for GCC.
16417- Once GCC version 2 has supplanted version 1, this can go. */
16418+#define yyerrok (yyerrstatus = 0)
16419+#define yyclearin (yychar = YYEMPTY)
16420+#define YYEMPTY (-2)
16421+#define YYEOF 0
16422+
16423+#define YYACCEPT goto yyacceptlab
16424+#define YYABORT goto yyabortlab
16425+#define YYERROR goto yyerrorlab
16426
16427-#define YYFAIL goto yyerrlab
16428
16429 #define YYRECOVERING() (!!yyerrstatus)
16430
16431-#define YYBACKUP(Token, Value) \
16432-do \
16433- if (yychar == YYEMPTY && yylen == 1) \
16434- { \
16435- yychar = (Token); \
16436- yylval = (Value); \
16437- yytoken = YYTRANSLATE (yychar); \
16438- YYPOPSTACK (1); \
16439- goto yybackup; \
16440- } \
16441- else \
16442- { \
16443+#define YYBACKUP(Token, Value) \
16444+do \
16445+ if (yychar == YYEMPTY) \
16446+ { \
16447+ yychar = (Token); \
16448+ yylval = (Value); \
16449+ YYPOPSTACK (yylen); \
16450+ yystate = *yyssp; \
16451+ goto yybackup; \
16452+ } \
16453+ else \
16454+ { \
16455 yyerror (YY_("syntax error: cannot back up")); \
16456- YYERROR; \
16457- } \
16458-while (YYID (0))
16459-
16460-
16461-#define YYTERROR 1
16462-#define YYERRCODE 256
16463-
16464-
16465-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
16466- If N is 0, then set CURRENT to the empty location which ends
16467- the previous symbol: RHS[0] (always defined). */
16468-
16469-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
16470-#ifndef YYLLOC_DEFAULT
16471-# define YYLLOC_DEFAULT(Current, Rhs, N) \
16472- do \
16473- if (YYID (N)) \
16474- { \
16475- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
16476- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
16477- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
16478- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
16479- } \
16480- else \
16481- { \
16482- (Current).first_line = (Current).last_line = \
16483- YYRHSLOC (Rhs, 0).last_line; \
16484- (Current).first_column = (Current).last_column = \
16485- YYRHSLOC (Rhs, 0).last_column; \
16486- } \
16487- while (YYID (0))
16488-#endif
16489-
16490-
16491-/* YY_LOCATION_PRINT -- Print the location on the stream.
16492- This macro was not mandated originally: define only if we know
16493- we won't break user code: when these are the locations we know. */
16494-
16495-#ifndef YY_LOCATION_PRINT
16496-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
16497-# define YY_LOCATION_PRINT(File, Loc) \
16498- fprintf (File, "%d.%d-%d.%d", \
16499- (Loc).first_line, (Loc).first_column, \
16500- (Loc).last_line, (Loc).last_column)
16501-# else
16502-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
16503-# endif
16504-#endif
16505+ YYERROR; \
16506+ } \
16507+while (0)
16508
16509+/* Error token number */
16510+#define YYTERROR 1
16511+#define YYERRCODE 256
16512
16513-/* YYLEX -- calling `yylex' with the right arguments. */
16514
16515-#ifdef YYLEX_PARAM
16516-# define YYLEX yylex (YYLEX_PARAM)
16517-#else
16518-# define YYLEX yylex ()
16519-#endif
16520
16521 /* Enable debugging if requested. */
16522 #if YYDEBUG
16523@@ -2317,54 +2070,46 @@
16524 # define YYFPRINTF fprintf
16525 # endif
16526
16527-# define YYDPRINTF(Args) \
16528-do { \
16529- if (yydebug) \
16530- YYFPRINTF Args; \
16531-} while (YYID (0))
16532+# define YYDPRINTF(Args) \
16533+do { \
16534+ if (yydebug) \
16535+ YYFPRINTF Args; \
16536+} while (0)
16537
16538-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
16539-do { \
16540- if (yydebug) \
16541- { \
16542- YYFPRINTF (stderr, "%s ", Title); \
16543- yy_symbol_print (stderr, \
16544- Type, Value); \
16545- YYFPRINTF (stderr, "\n"); \
16546- } \
16547-} while (YYID (0))
16548+/* This macro is provided for backward compatibility. */
16549+#ifndef YY_LOCATION_PRINT
16550+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
16551+#endif
16552
16553
16554-/*--------------------------------.
16555-| Print this symbol on YYOUTPUT. |
16556-`--------------------------------*/
16557+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
16558+do { \
16559+ if (yydebug) \
16560+ { \
16561+ YYFPRINTF (stderr, "%s ", Title); \
16562+ yy_symbol_print (stderr, \
16563+ Type, Value); \
16564+ YYFPRINTF (stderr, "\n"); \
16565+ } \
16566+} while (0)
16567+
16568+
16569+/*----------------------------------------.
16570+| Print this symbol's value on YYOUTPUT. |
16571+`----------------------------------------*/
16572
16573-/*ARGSUSED*/
16574-#if (defined __STDC__ || defined __C99__FUNC__ \
16575- || defined __cplusplus || defined _MSC_VER)
16576 static void
16577 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
16578-#else
16579-static void
16580-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
16581- FILE *yyoutput;
16582- int yytype;
16583- YYSTYPE const * const yyvaluep;
16584-#endif
16585 {
16586+ FILE *yyo = yyoutput;
16587+ YYUSE (yyo);
16588 if (!yyvaluep)
16589 return;
16590 # ifdef YYPRINT
16591 if (yytype < YYNTOKENS)
16592 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
16593-# else
16594- YYUSE (yyoutput);
16595 # endif
16596- switch (yytype)
16597- {
16598- default:
16599- break;
16600- }
16601+ YYUSE (yytype);
16602 }
16603
16604
16605@@ -2372,22 +2117,11 @@
16606 | Print this symbol on YYOUTPUT. |
16607 `--------------------------------*/
16608
16609-#if (defined __STDC__ || defined __C99__FUNC__ \
16610- || defined __cplusplus || defined _MSC_VER)
16611 static void
16612 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
16613-#else
16614-static void
16615-yy_symbol_print (yyoutput, yytype, yyvaluep)
16616- FILE *yyoutput;
16617- int yytype;
16618- YYSTYPE const * const yyvaluep;
16619-#endif
16620 {
16621- if (yytype < YYNTOKENS)
16622- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
16623- else
16624- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
16625+ YYFPRINTF (yyoutput, "%s %s (",
16626+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
16627
16628 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
16629 YYFPRINTF (yyoutput, ")");
16630@@ -2398,66 +2132,54 @@
16631 | TOP (included). |
16632 `------------------------------------------------------------------*/
16633
16634-#if (defined __STDC__ || defined __C99__FUNC__ \
16635- || defined __cplusplus || defined _MSC_VER)
16636-static void
16637-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
16638-#else
16639 static void
16640-yy_stack_print (bottom, top)
16641- yytype_int16 *bottom;
16642- yytype_int16 *top;
16643-#endif
16644+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
16645 {
16646 YYFPRINTF (stderr, "Stack now");
16647- for (; bottom <= top; ++bottom)
16648- YYFPRINTF (stderr, " %d", *bottom);
16649+ for (; yybottom <= yytop; yybottom++)
16650+ {
16651+ int yybot = *yybottom;
16652+ YYFPRINTF (stderr, " %d", yybot);
16653+ }
16654 YYFPRINTF (stderr, "\n");
16655 }
16656
16657-# define YY_STACK_PRINT(Bottom, Top) \
16658-do { \
16659- if (yydebug) \
16660- yy_stack_print ((Bottom), (Top)); \
16661-} while (YYID (0))
16662+# define YY_STACK_PRINT(Bottom, Top) \
16663+do { \
16664+ if (yydebug) \
16665+ yy_stack_print ((Bottom), (Top)); \
16666+} while (0)
16667
16668
16669 /*------------------------------------------------.
16670 | Report that the YYRULE is going to be reduced. |
16671 `------------------------------------------------*/
16672
16673-#if (defined __STDC__ || defined __C99__FUNC__ \
16674- || defined __cplusplus || defined _MSC_VER)
16675 static void
16676-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
16677-#else
16678-static void
16679-yy_reduce_print (yyvsp, yyrule)
16680- YYSTYPE *yyvsp;
16681- int yyrule;
16682-#endif
16683+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
16684 {
16685+ unsigned long int yylno = yyrline[yyrule];
16686 int yynrhs = yyr2[yyrule];
16687 int yyi;
16688- unsigned long int yylno = yyrline[yyrule];
16689 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
16690- yyrule - 1, yylno);
16691+ yyrule - 1, yylno);
16692 /* The symbols being reduced. */
16693 for (yyi = 0; yyi < yynrhs; yyi++)
16694 {
16695- fprintf (stderr, " $%d = ", yyi + 1);
16696- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
16697- &(yyvsp[(yyi + 1) - (yynrhs)])
16698- );
16699- fprintf (stderr, "\n");
16700+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
16701+ yy_symbol_print (stderr,
16702+ yystos[yyssp[yyi + 1 - yynrhs]],
16703+ &(yyvsp[(yyi + 1) - (yynrhs)])
16704+ );
16705+ YYFPRINTF (stderr, "\n");
16706 }
16707 }
16708
16709-# define YY_REDUCE_PRINT(Rule) \
16710-do { \
16711- if (yydebug) \
16712- yy_reduce_print (yyvsp, Rule); \
16713-} while (YYID (0))
16714+# define YY_REDUCE_PRINT(Rule) \
16715+do { \
16716+ if (yydebug) \
16717+ yy_reduce_print (yyssp, yyvsp, Rule); \
16718+} while (0)
16719
16720 /* Nonzero means print parse trace. It is left uninitialized so that
16721 multiple parsers can coexist. */
16722@@ -2471,7 +2193,7 @@
16723
16724
16725 /* YYINITDEPTH -- initial size of the parser's stacks. */
16726-#ifndef YYINITDEPTH
16727+#ifndef YYINITDEPTH
16728 # define YYINITDEPTH 200
16729 #endif
16730
16731@@ -2486,7 +2208,6 @@
16732 # define YYMAXDEPTH 10000
16733 #endif
16734
16735-
16736
16737 #if YYERROR_VERBOSE
16738
16739@@ -2495,15 +2216,8 @@
16740 # define yystrlen strlen
16741 # else
16742 /* Return the length of YYSTR. */
16743-#if (defined __STDC__ || defined __C99__FUNC__ \
16744- || defined __cplusplus || defined _MSC_VER)
16745 static YYSIZE_T
16746 yystrlen (const char *yystr)
16747-#else
16748-static YYSIZE_T
16749-yystrlen (yystr)
16750- const char *yystr;
16751-#endif
16752 {
16753 YYSIZE_T yylen;
16754 for (yylen = 0; yystr[yylen]; yylen++)
16755@@ -2519,16 +2233,8 @@
16756 # else
16757 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
16758 YYDEST. */
16759-#if (defined __STDC__ || defined __C99__FUNC__ \
16760- || defined __cplusplus || defined _MSC_VER)
16761 static char *
16762 yystpcpy (char *yydest, const char *yysrc)
16763-#else
16764-static char *
16765-yystpcpy (yydest, yysrc)
16766- char *yydest;
16767- const char *yysrc;
16768-#endif
16769 {
16770 char *yyd = yydest;
16771 const char *yys = yysrc;
16772@@ -2558,27 +2264,27 @@
16773 char const *yyp = yystr;
16774
16775 for (;;)
16776- switch (*++yyp)
16777- {
16778- case '\'':
16779- case ',':
16780- goto do_not_strip_quotes;
16781+ switch (*++yyp)
16782+ {
16783+ case '\'':
16784+ case ',':
16785+ goto do_not_strip_quotes;
16786
16787- case '\\':
16788- if (*++yyp != '\\')
16789- goto do_not_strip_quotes;
16790- /* Fall through. */
16791- default:
16792- if (yyres)
16793- yyres[yyn] = *yyp;
16794- yyn++;
16795- break;
16796+ case '\\':
16797+ if (*++yyp != '\\')
16798+ goto do_not_strip_quotes;
16799+ /* Fall through. */
16800+ default:
16801+ if (yyres)
16802+ yyres[yyn] = *yyp;
16803+ yyn++;
16804+ break;
16805
16806- case '"':
16807- if (yyres)
16808- yyres[yyn] = '\0';
16809- return yyn;
16810- }
16811+ case '"':
16812+ if (yyres)
16813+ yyres[yyn] = '\0';
16814+ return yyn;
16815+ }
16816 do_not_strip_quotes: ;
16817 }
16818
16819@@ -2589,211 +2295,209 @@
16820 }
16821 # endif
16822
16823-/* Copy into YYRESULT an error message about the unexpected token
16824- YYCHAR while in state YYSTATE. Return the number of bytes copied,
16825- including the terminating null byte. If YYRESULT is null, do not
16826- copy anything; just return the number of bytes that would be
16827- copied. As a special case, return 0 if an ordinary "syntax error"
16828- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
16829- size calculation. */
16830-static YYSIZE_T
16831-yysyntax_error (char *yyresult, int yystate, int yychar)
16832+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
16833+ about the unexpected token YYTOKEN for the state stack whose top is
16834+ YYSSP.
16835+
16836+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
16837+ not large enough to hold the message. In that case, also set
16838+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
16839+ required number of bytes is too large to store. */
16840+static int
16841+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
16842+ yytype_int16 *yyssp, int yytoken)
16843 {
16844- int yyn = yypact[yystate];
16845+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
16846+ YYSIZE_T yysize = yysize0;
16847+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
16848+ /* Internationalized format string. */
16849+ const char *yyformat = YY_NULLPTR;
16850+ /* Arguments of yyformat. */
16851+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
16852+ /* Number of reported tokens (one for the "unexpected", one per
16853+ "expected"). */
16854+ int yycount = 0;
16855
16856- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
16857- return 0;
16858- else
16859+ /* There are many possibilities here to consider:
16860+ - If this state is a consistent state with a default action, then
16861+ the only way this function was invoked is if the default action
16862+ is an error action. In that case, don't check for expected
16863+ tokens because there are none.
16864+ - The only way there can be no lookahead present (in yychar) is if
16865+ this state is a consistent state with a default action. Thus,
16866+ detecting the absence of a lookahead is sufficient to determine
16867+ that there is no unexpected or expected token to report. In that
16868+ case, just report a simple "syntax error".
16869+ - Don't assume there isn't a lookahead just because this state is a
16870+ consistent state with a default action. There might have been a
16871+ previous inconsistent state, consistent state with a non-default
16872+ action, or user semantic action that manipulated yychar.
16873+ - Of course, the expected token list depends on states to have
16874+ correct lookahead information, and it depends on the parser not
16875+ to perform extra reductions after fetching a lookahead from the
16876+ scanner and before detecting a syntax error. Thus, state merging
16877+ (from LALR or IELR) and default reductions corrupt the expected
16878+ token list. However, the list is correct for canonical LR with
16879+ one exception: it will still contain any token that will not be
16880+ accepted due to an error action in a later state.
16881+ */
16882+ if (yytoken != YYEMPTY)
16883 {
16884- int yytype = YYTRANSLATE (yychar);
16885- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
16886- YYSIZE_T yysize = yysize0;
16887- YYSIZE_T yysize1;
16888- int yysize_overflow = 0;
16889- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
16890- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
16891- int yyx;
16892-
16893-# if 0
16894- /* This is so xgettext sees the translatable formats that are
16895- constructed on the fly. */
16896- YY_("syntax error, unexpected %s");
16897- YY_("syntax error, unexpected %s, expecting %s");
16898- YY_("syntax error, unexpected %s, expecting %s or %s");
16899- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
16900- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
16901-# endif
16902- char *yyfmt;
16903- char const *yyf;
16904- static char const yyunexpected[] = "syntax error, unexpected %s";
16905- static char const yyexpecting[] = ", expecting %s";
16906- static char const yyor[] = " or %s";
16907- char yyformat[sizeof yyunexpected
16908- + sizeof yyexpecting - 1
16909- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
16910- * (sizeof yyor - 1))];
16911- char const *yyprefix = yyexpecting;
16912-
16913- /* Start YYX at -YYN if negative to avoid negative indexes in
16914- YYCHECK. */
16915- int yyxbegin = yyn < 0 ? -yyn : 0;
16916-
16917- /* Stay within bounds of both yycheck and yytname. */
16918- int yychecklim = YYLAST - yyn + 1;
16919- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
16920- int yycount = 1;
16921-
16922- yyarg[0] = yytname[yytype];
16923- yyfmt = yystpcpy (yyformat, yyunexpected);
16924+ int yyn = yypact[*yyssp];
16925+ yyarg[yycount++] = yytname[yytoken];
16926+ if (!yypact_value_is_default (yyn))
16927+ {
16928+ /* Start YYX at -YYN if negative to avoid negative indexes in
16929+ YYCHECK. In other words, skip the first -YYN actions for
16930+ this state because they are default actions. */
16931+ int yyxbegin = yyn < 0 ? -yyn : 0;
16932+ /* Stay within bounds of both yycheck and yytname. */
16933+ int yychecklim = YYLAST - yyn + 1;
16934+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
16935+ int yyx;
16936
16937- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
16938- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
16939- {
16940- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
16941- {
16942- yycount = 1;
16943- yysize = yysize0;
16944- yyformat[sizeof yyunexpected - 1] = '\0';
16945- break;
16946- }
16947- yyarg[yycount++] = yytname[yyx];
16948- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
16949- yysize_overflow |= (yysize1 < yysize);
16950- yysize = yysize1;
16951- yyfmt = yystpcpy (yyfmt, yyprefix);
16952- yyprefix = yyor;
16953- }
16954+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
16955+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
16956+ && !yytable_value_is_error (yytable[yyx + yyn]))
16957+ {
16958+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
16959+ {
16960+ yycount = 1;
16961+ yysize = yysize0;
16962+ break;
16963+ }
16964+ yyarg[yycount++] = yytname[yyx];
16965+ {
16966+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
16967+ if (! (yysize <= yysize1
16968+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
16969+ return 2;
16970+ yysize = yysize1;
16971+ }
16972+ }
16973+ }
16974+ }
16975
16976- yyf = YY_(yyformat);
16977- yysize1 = yysize + yystrlen (yyf);
16978- yysize_overflow |= (yysize1 < yysize);
16979- yysize = yysize1;
16980+ switch (yycount)
16981+ {
16982+# define YYCASE_(N, S) \
16983+ case N: \
16984+ yyformat = S; \
16985+ break
16986+ YYCASE_(0, YY_("syntax error"));
16987+ YYCASE_(1, YY_("syntax error, unexpected %s"));
16988+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
16989+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
16990+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
16991+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
16992+# undef YYCASE_
16993+ }
16994
16995- if (yysize_overflow)
16996- return YYSIZE_MAXIMUM;
16997+ {
16998+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
16999+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
17000+ return 2;
17001+ yysize = yysize1;
17002+ }
17003
17004- if (yyresult)
17005- {
17006- /* Avoid sprintf, as that infringes on the user's name space.
17007- Don't have undefined behavior even if the translation
17008- produced a string with the wrong number of "%s"s. */
17009- char *yyp = yyresult;
17010- int yyi = 0;
17011- while ((*yyp = *yyf) != '\0')
17012- {
17013- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
17014- {
17015- yyp += yytnamerr (yyp, yyarg[yyi++]);
17016- yyf += 2;
17017- }
17018- else
17019- {
17020- yyp++;
17021- yyf++;
17022- }
17023- }
17024- }
17025- return yysize;
17026+ if (*yymsg_alloc < yysize)
17027+ {
17028+ *yymsg_alloc = 2 * yysize;
17029+ if (! (yysize <= *yymsg_alloc
17030+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
17031+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
17032+ return 1;
17033 }
17034+
17035+ /* Avoid sprintf, as that infringes on the user's name space.
17036+ Don't have undefined behavior even if the translation
17037+ produced a string with the wrong number of "%s"s. */
17038+ {
17039+ char *yyp = *yymsg;
17040+ int yyi = 0;
17041+ while ((*yyp = *yyformat) != '\0')
17042+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
17043+ {
17044+ yyp += yytnamerr (yyp, yyarg[yyi++]);
17045+ yyformat += 2;
17046+ }
17047+ else
17048+ {
17049+ yyp++;
17050+ yyformat++;
17051+ }
17052+ }
17053+ return 0;
17054 }
17055 #endif /* YYERROR_VERBOSE */
17056-
17057
17058 /*-----------------------------------------------.
17059 | Release the memory associated to this symbol. |
17060 `-----------------------------------------------*/
17061
17062-/*ARGSUSED*/
17063-#if (defined __STDC__ || defined __C99__FUNC__ \
17064- || defined __cplusplus || defined _MSC_VER)
17065 static void
17066 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
17067-#else
17068-static void
17069-yydestruct (yymsg, yytype, yyvaluep)
17070- const char *yymsg;
17071- int yytype;
17072- YYSTYPE *yyvaluep;
17073-#endif
17074 {
17075 YYUSE (yyvaluep);
17076-
17077 if (!yymsg)
17078 yymsg = "Deleting";
17079 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
17080
17081- switch (yytype)
17082- {
17083-
17084- default:
17085- break;
17086- }
17087+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17088+ YYUSE (yytype);
17089+ YY_IGNORE_MAYBE_UNINITIALIZED_END
17090 }
17091-
17092-
17093-/* Prevent warnings from -Wmissing-prototypes. */
17094
17095-#ifdef YYPARSE_PARAM
17096-#if defined __STDC__ || defined __cplusplus
17097-int yyparse (void *YYPARSE_PARAM);
17098-#else
17099-int yyparse ();
17100-#endif
17101-#else /* ! YYPARSE_PARAM */
17102-#if defined __STDC__ || defined __cplusplus
17103-int yyparse (void);
17104-#else
17105-int yyparse ();
17106-#endif
17107-#endif /* ! YYPARSE_PARAM */
17108
17109
17110
17111-/* The look-ahead symbol. */
17112+/* The lookahead symbol. */
17113 int yychar;
17114
17115-/* The semantic value of the look-ahead symbol. */
17116+/* The semantic value of the lookahead symbol. */
17117 YYSTYPE yylval;
17118-
17119 /* Number of syntax errors so far. */
17120 int yynerrs;
17121
17122
17123-
17124 /*----------.
17125 | yyparse. |
17126 `----------*/
17127
17128-#ifdef YYPARSE_PARAM
17129-#if (defined __STDC__ || defined __C99__FUNC__ \
17130- || defined __cplusplus || defined _MSC_VER)
17131-int
17132-yyparse (void *YYPARSE_PARAM)
17133-#else
17134-int
17135-yyparse (YYPARSE_PARAM)
17136- void *YYPARSE_PARAM;
17137-#endif
17138-#else /* ! YYPARSE_PARAM */
17139-#if (defined __STDC__ || defined __C99__FUNC__ \
17140- || defined __cplusplus || defined _MSC_VER)
17141 int
17142 yyparse (void)
17143-#else
17144-int
17145-yyparse ()
17146-
17147-#endif
17148-#endif
17149 {
17150-
17151- int yystate;
17152+ int yystate;
17153+ /* Number of tokens to shift before error messages enabled. */
17154+ int yyerrstatus;
17155+
17156+ /* The stacks and their tools:
17157+ 'yyss': related to states.
17158+ 'yyvs': related to semantic values.
17159+
17160+ Refer to the stacks through separate pointers, to allow yyoverflow
17161+ to reallocate them elsewhere. */
17162+
17163+ /* The state stack. */
17164+ yytype_int16 yyssa[YYINITDEPTH];
17165+ yytype_int16 *yyss;
17166+ yytype_int16 *yyssp;
17167+
17168+ /* The semantic value stack. */
17169+ YYSTYPE yyvsa[YYINITDEPTH];
17170+ YYSTYPE *yyvs;
17171+ YYSTYPE *yyvsp;
17172+
17173+ YYSIZE_T yystacksize;
17174+
17175 int yyn;
17176 int yyresult;
17177- /* Number of tokens to shift before error messages enabled. */
17178- int yyerrstatus;
17179- /* Look-ahead token as an internal (translated) token number. */
17180+ /* Lookahead token as an internal (translated) token number. */
17181 int yytoken = 0;
17182+ /* The variables used to return semantic value and location from the
17183+ action routines. */
17184+ YYSTYPE yyval;
17185+
17186 #if YYERROR_VERBOSE
17187 /* Buffer for error messages, and its allocated size. */
17188 char yymsgbuf[128];
17189@@ -2801,54 +2505,22 @@
17190 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
17191 #endif
17192
17193- /* Three stacks and their tools:
17194- `yyss': related to states,
17195- `yyvs': related to semantic values,
17196- `yyls': related to locations.
17197-
17198- Refer to the stacks thru separate pointers, to allow yyoverflow
17199- to reallocate them elsewhere. */
17200-
17201- /* The state stack. */
17202- yytype_int16 yyssa[YYINITDEPTH];
17203- yytype_int16 *yyss = yyssa;
17204- yytype_int16 *yyssp;
17205-
17206- /* The semantic value stack. */
17207- YYSTYPE yyvsa[YYINITDEPTH];
17208- YYSTYPE *yyvs = yyvsa;
17209- YYSTYPE *yyvsp;
17210-
17211-
17212-
17213 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
17214
17215- YYSIZE_T yystacksize = YYINITDEPTH;
17216-
17217- /* The variables used to return semantic value and location from the
17218- action routines. */
17219- YYSTYPE yyval;
17220-
17221-
17222 /* The number of symbols on the RHS of the reduced rule.
17223 Keep to zero when no symbol should be popped. */
17224 int yylen = 0;
17225
17226+ yyssp = yyss = yyssa;
17227+ yyvsp = yyvs = yyvsa;
17228+ yystacksize = YYINITDEPTH;
17229+
17230 YYDPRINTF ((stderr, "Starting parse\n"));
17231
17232 yystate = 0;
17233 yyerrstatus = 0;
17234 yynerrs = 0;
17235- yychar = YYEMPTY; /* Cause a token to be read. */
17236-
17237- /* Initialize stack pointers.
17238- Waste one element of value and location stack
17239- so that they stay on the same level as the state stack.
17240- The wasted elements are never initialized. */
17241-
17242- yyssp = yyss;
17243- yyvsp = yyvs;
17244-
17245+ yychar = YYEMPTY; /* Cause a token to be read. */
17246 goto yysetstate;
17247
17248 /*------------------------------------------------------------.
17249@@ -2869,25 +2541,23 @@
17250
17251 #ifdef yyoverflow
17252 {
17253- /* Give user a chance to reallocate the stack. Use copies of
17254- these so that the &'s don't force the real ones into
17255- memory. */
17256- YYSTYPE *yyvs1 = yyvs;
17257- yytype_int16 *yyss1 = yyss;
17258-
17259-
17260- /* Each stack pointer address is followed by the size of the
17261- data in use in that stack, in bytes. This used to be a
17262- conditional around just the two extra args, but that might
17263- be undefined if yyoverflow is a macro. */
17264- yyoverflow (YY_("memory exhausted"),
17265- &yyss1, yysize * sizeof (*yyssp),
17266- &yyvs1, yysize * sizeof (*yyvsp),
17267+ /* Give user a chance to reallocate the stack. Use copies of
17268+ these so that the &'s don't force the real ones into
17269+ memory. */
17270+ YYSTYPE *yyvs1 = yyvs;
17271+ yytype_int16 *yyss1 = yyss;
17272
17273- &yystacksize);
17274+ /* Each stack pointer address is followed by the size of the
17275+ data in use in that stack, in bytes. This used to be a
17276+ conditional around just the two extra args, but that might
17277+ be undefined if yyoverflow is a macro. */
17278+ yyoverflow (YY_("memory exhausted"),
17279+ &yyss1, yysize * sizeof (*yyssp),
17280+ &yyvs1, yysize * sizeof (*yyvsp),
17281+ &yystacksize);
17282
17283- yyss = yyss1;
17284- yyvs = yyvs1;
17285+ yyss = yyss1;
17286+ yyvs = yyvs1;
17287 }
17288 #else /* no yyoverflow */
17289 # ifndef YYSTACK_RELOCATE
17290@@ -2895,23 +2565,22 @@
17291 # else
17292 /* Extend the stack our own way. */
17293 if (YYMAXDEPTH <= yystacksize)
17294- goto yyexhaustedlab;
17295+ goto yyexhaustedlab;
17296 yystacksize *= 2;
17297 if (YYMAXDEPTH < yystacksize)
17298- yystacksize = YYMAXDEPTH;
17299+ yystacksize = YYMAXDEPTH;
17300
17301 {
17302- yytype_int16 *yyss1 = yyss;
17303- union yyalloc *yyptr =
17304- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
17305- if (! yyptr)
17306- goto yyexhaustedlab;
17307- YYSTACK_RELOCATE (yyss);
17308- YYSTACK_RELOCATE (yyvs);
17309-
17310+ yytype_int16 *yyss1 = yyss;
17311+ union yyalloc *yyptr =
17312+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
17313+ if (! yyptr)
17314+ goto yyexhaustedlab;
17315+ YYSTACK_RELOCATE (yyss_alloc, yyss);
17316+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
17317 # undef YYSTACK_RELOCATE
17318- if (yyss1 != yyssa)
17319- YYSTACK_FREE (yyss1);
17320+ if (yyss1 != yyssa)
17321+ YYSTACK_FREE (yyss1);
17322 }
17323 # endif
17324 #endif /* no yyoverflow */
17325@@ -2919,16 +2588,18 @@
17326 yyssp = yyss + yysize - 1;
17327 yyvsp = yyvs + yysize - 1;
17328
17329-
17330 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
17331- (unsigned long int) yystacksize));
17332+ (unsigned long int) yystacksize));
17333
17334 if (yyss + yystacksize - 1 <= yyssp)
17335- YYABORT;
17336+ YYABORT;
17337 }
17338
17339 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
17340
17341+ if (yystate == YYFINAL)
17342+ YYACCEPT;
17343+
17344 goto yybackup;
17345
17346 /*-----------.
17347@@ -2937,20 +2608,20 @@
17348 yybackup:
17349
17350 /* Do appropriate processing given the current state. Read a
17351- look-ahead token if we need one and don't already have one. */
17352+ lookahead token if we need one and don't already have one. */
17353
17354- /* First try to decide what to do without reference to look-ahead token. */
17355+ /* First try to decide what to do without reference to lookahead token. */
17356 yyn = yypact[yystate];
17357- if (yyn == YYPACT_NINF)
17358+ if (yypact_value_is_default (yyn))
17359 goto yydefault;
17360
17361- /* Not known => get a look-ahead token if don't already have one. */
17362+ /* Not known => get a lookahead token if don't already have one. */
17363
17364- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
17365+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
17366 if (yychar == YYEMPTY)
17367 {
17368 YYDPRINTF ((stderr, "Reading a token: "));
17369- yychar = YYLEX;
17370+ yychar = yylex ();
17371 }
17372
17373 if (yychar <= YYEOF)
17374@@ -2972,29 +2643,27 @@
17375 yyn = yytable[yyn];
17376 if (yyn <= 0)
17377 {
17378- if (yyn == 0 || yyn == YYTABLE_NINF)
17379- goto yyerrlab;
17380+ if (yytable_value_is_error (yyn))
17381+ goto yyerrlab;
17382 yyn = -yyn;
17383 goto yyreduce;
17384 }
17385
17386- if (yyn == YYFINAL)
17387- YYACCEPT;
17388-
17389 /* Count tokens shifted since error; after three, turn off error
17390 status. */
17391 if (yyerrstatus)
17392 yyerrstatus--;
17393
17394- /* Shift the look-ahead token. */
17395+ /* Shift the lookahead token. */
17396 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
17397
17398- /* Discard the shifted token unless it is eof. */
17399- if (yychar != YYEOF)
17400- yychar = YYEMPTY;
17401+ /* Discard the shifted token. */
17402+ yychar = YYEMPTY;
17403
17404 yystate = yyn;
17405+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17406 *++yyvsp = yylval;
17407+ YY_IGNORE_MAYBE_UNINITIALIZED_END
17408
17409 goto yynewstate;
17410
17411@@ -3017,7 +2686,7 @@
17412 yylen = yyr2[yyn];
17413
17414 /* If YYLEN is nonzero, implement the default value of the action:
17415- `$$ = $1'.
17416+ '$$ = $1'.
17417
17418 Otherwise, the following line sets YYVAL to garbage.
17419 This behavior is undocumented and Bison
17420@@ -3031,7 +2700,7 @@
17421 switch (yyn)
17422 {
17423 case 4:
17424-#line 580 "sip-4.19.12/sipgen/metasrc/parser.y"
17425+#line 580 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17426 {
17427 /*
17428 * We don't do these in parserEOF() because the parser is reading
17429@@ -3049,10 +2718,11 @@
17430 previousFile = NULL;
17431 }
17432 }
17433+#line 2722 "sipgen/parser.c" /* yacc.c:1646 */
17434 break;
17435
17436 case 55:
17437-#line 650 "sip-4.19.12/sipgen/metasrc/parser.y"
17438+#line 650 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17439 {
17440 if (notSkipping())
17441 {
17442@@ -3061,151 +2731,167 @@
17443 if (scope == NULL)
17444 yyerror("%TypeHeaderCode can only be used in a namespace, class or mapped type");
17445
17446- appendCodeBlock(&scope->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
17447+ appendCodeBlock(&scope->iff->hdrcode, (yyvsp[0].codeb));
17448 }
17449 }
17450+#line 2738 "sipgen/parser.c" /* yacc.c:1646 */
17451 break;
17452
17453 case 56:
17454-#line 663 "sip-4.19.12/sipgen/metasrc/parser.y"
17455+#line 663 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17456 {
17457 if (notSkipping())
17458- currentModule->defdocstringfmt = convertFormat((yyvsp[(2) - (2)].defdocstringfmt).name);
17459+ currentModule->defdocstringfmt = convertFormat((yyvsp[0].defdocstringfmt).name);
17460 }
17461+#line 2747 "sipgen/parser.c" /* yacc.c:1646 */
17462 break;
17463
17464 case 57:
17465-#line 669 "sip-4.19.12/sipgen/metasrc/parser.y"
17466+#line 669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17467 {
17468 resetLexerState();
17469
17470- (yyval.defdocstringfmt).name = (yyvsp[(1) - (1)].text);
17471+ (yyval.defdocstringfmt).name = (yyvsp[0].text);
17472 }
17473+#line 2757 "sipgen/parser.c" /* yacc.c:1646 */
17474 break;
17475
17476 case 58:
17477-#line 674 "sip-4.19.12/sipgen/metasrc/parser.y"
17478+#line 674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17479 {
17480- (yyval.defdocstringfmt) = (yyvsp[(2) - (3)].defdocstringfmt);
17481+ (yyval.defdocstringfmt) = (yyvsp[-1].defdocstringfmt);
17482 }
17483+#line 2765 "sipgen/parser.c" /* yacc.c:1646 */
17484 break;
17485
17486 case 60:
17487-#line 680 "sip-4.19.12/sipgen/metasrc/parser.y"
17488+#line 680 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17489 {
17490- (yyval.defdocstringfmt) = (yyvsp[(1) - (3)].defdocstringfmt);
17491+ (yyval.defdocstringfmt) = (yyvsp[-2].defdocstringfmt);
17492
17493- switch ((yyvsp[(3) - (3)].defdocstringfmt).token)
17494+ switch ((yyvsp[0].defdocstringfmt).token)
17495 {
17496- case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].defdocstringfmt).name; break;
17497+ case TK_NAME: (yyval.defdocstringfmt).name = (yyvsp[0].defdocstringfmt).name; break;
17498 }
17499 }
17500+#line 2778 "sipgen/parser.c" /* yacc.c:1646 */
17501 break;
17502
17503 case 61:
17504-#line 690 "sip-4.19.12/sipgen/metasrc/parser.y"
17505+#line 690 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17506 {
17507 (yyval.defdocstringfmt).token = TK_NAME;
17508
17509- (yyval.defdocstringfmt).name = (yyvsp[(3) - (3)].text);
17510+ (yyval.defdocstringfmt).name = (yyvsp[0].text);
17511 }
17512+#line 2788 "sipgen/parser.c" /* yacc.c:1646 */
17513 break;
17514
17515 case 62:
17516-#line 697 "sip-4.19.12/sipgen/metasrc/parser.y"
17517+#line 697 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17518 {
17519 if (notSkipping())
17520- currentModule->defdocstringsig = convertSignature((yyvsp[(2) - (2)].defdocstringsig).name);
17521+ currentModule->defdocstringsig = convertSignature((yyvsp[0].defdocstringsig).name);
17522 }
17523+#line 2797 "sipgen/parser.c" /* yacc.c:1646 */
17524 break;
17525
17526 case 63:
17527-#line 703 "sip-4.19.12/sipgen/metasrc/parser.y"
17528+#line 703 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17529 {
17530 resetLexerState();
17531
17532- (yyval.defdocstringsig).name = (yyvsp[(1) - (1)].text);
17533+ (yyval.defdocstringsig).name = (yyvsp[0].text);
17534 }
17535+#line 2807 "sipgen/parser.c" /* yacc.c:1646 */
17536 break;
17537
17538 case 64:
17539-#line 708 "sip-4.19.12/sipgen/metasrc/parser.y"
17540+#line 708 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17541 {
17542- (yyval.defdocstringsig) = (yyvsp[(2) - (3)].defdocstringsig);
17543+ (yyval.defdocstringsig) = (yyvsp[-1].defdocstringsig);
17544 }
17545+#line 2815 "sipgen/parser.c" /* yacc.c:1646 */
17546 break;
17547
17548 case 66:
17549-#line 714 "sip-4.19.12/sipgen/metasrc/parser.y"
17550+#line 714 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17551 {
17552- (yyval.defdocstringsig) = (yyvsp[(1) - (3)].defdocstringsig);
17553+ (yyval.defdocstringsig) = (yyvsp[-2].defdocstringsig);
17554
17555- switch ((yyvsp[(3) - (3)].defdocstringsig).token)
17556+ switch ((yyvsp[0].defdocstringsig).token)
17557 {
17558- case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].defdocstringsig).name; break;
17559+ case TK_NAME: (yyval.defdocstringsig).name = (yyvsp[0].defdocstringsig).name; break;
17560 }
17561 }
17562+#line 2828 "sipgen/parser.c" /* yacc.c:1646 */
17563 break;
17564
17565 case 67:
17566-#line 724 "sip-4.19.12/sipgen/metasrc/parser.y"
17567+#line 724 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17568 {
17569 (yyval.defdocstringsig).token = TK_NAME;
17570
17571- (yyval.defdocstringsig).name = (yyvsp[(3) - (3)].text);
17572+ (yyval.defdocstringsig).name = (yyvsp[0].text);
17573 }
17574+#line 2838 "sipgen/parser.c" /* yacc.c:1646 */
17575 break;
17576
17577 case 68:
17578-#line 731 "sip-4.19.12/sipgen/metasrc/parser.y"
17579+#line 731 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17580 {
17581 if (notSkipping())
17582 {
17583- if ((currentModule->encoding = convertEncoding((yyvsp[(2) - (2)].defencoding).name)) == no_type)
17584+ if ((currentModule->encoding = convertEncoding((yyvsp[0].defencoding).name)) == no_type)
17585 yyerror("The %DefaultEncoding name must be one of \"ASCII\", \"Latin-1\", \"UTF-8\" or \"None\"");
17586 }
17587 }
17588+#line 2850 "sipgen/parser.c" /* yacc.c:1646 */
17589 break;
17590
17591 case 69:
17592-#line 740 "sip-4.19.12/sipgen/metasrc/parser.y"
17593+#line 740 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17594 {
17595 resetLexerState();
17596
17597- (yyval.defencoding).name = (yyvsp[(1) - (1)].text);
17598+ (yyval.defencoding).name = (yyvsp[0].text);
17599 }
17600+#line 2860 "sipgen/parser.c" /* yacc.c:1646 */
17601 break;
17602
17603 case 70:
17604-#line 745 "sip-4.19.12/sipgen/metasrc/parser.y"
17605+#line 745 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17606 {
17607- (yyval.defencoding) = (yyvsp[(2) - (3)].defencoding);
17608+ (yyval.defencoding) = (yyvsp[-1].defencoding);
17609 }
17610+#line 2868 "sipgen/parser.c" /* yacc.c:1646 */
17611 break;
17612
17613 case 72:
17614-#line 751 "sip-4.19.12/sipgen/metasrc/parser.y"
17615+#line 751 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17616 {
17617- (yyval.defencoding) = (yyvsp[(1) - (3)].defencoding);
17618+ (yyval.defencoding) = (yyvsp[-2].defencoding);
17619
17620- switch ((yyvsp[(3) - (3)].defencoding).token)
17621+ switch ((yyvsp[0].defencoding).token)
17622 {
17623- case TK_NAME: (yyval.defencoding).name = (yyvsp[(3) - (3)].defencoding).name; break;
17624+ case TK_NAME: (yyval.defencoding).name = (yyvsp[0].defencoding).name; break;
17625 }
17626 }
17627+#line 2881 "sipgen/parser.c" /* yacc.c:1646 */
17628 break;
17629
17630 case 73:
17631-#line 761 "sip-4.19.12/sipgen/metasrc/parser.y"
17632+#line 761 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17633 {
17634 (yyval.defencoding).token = TK_NAME;
17635
17636- (yyval.defencoding).name = (yyvsp[(3) - (3)].text);
17637+ (yyval.defencoding).name = (yyvsp[0].text);
17638 }
17639+#line 2891 "sipgen/parser.c" /* yacc.c:1646 */
17640 break;
17641
17642 case 74:
17643-#line 768 "sip-4.19.12/sipgen/metasrc/parser.y"
17644+#line 768 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17645 {
17646 /*
17647 * Note that %Plugin is internal in SIP v4. The current thinking
17648@@ -3213,51 +2899,56 @@
17649 */
17650
17651 if (notSkipping())
17652- appendString(&currentSpec->plugins, (yyvsp[(2) - (2)].plugin).name);
17653+ appendString(&currentSpec->plugins, (yyvsp[0].plugin).name);
17654 }
17655+#line 2905 "sipgen/parser.c" /* yacc.c:1646 */
17656 break;
17657
17658 case 75:
17659-#line 779 "sip-4.19.12/sipgen/metasrc/parser.y"
17660+#line 779 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17661 {
17662 resetLexerState();
17663
17664- (yyval.plugin).name = (yyvsp[(1) - (1)].text);
17665+ (yyval.plugin).name = (yyvsp[0].text);
17666 }
17667+#line 2915 "sipgen/parser.c" /* yacc.c:1646 */
17668 break;
17669
17670 case 76:
17671-#line 784 "sip-4.19.12/sipgen/metasrc/parser.y"
17672+#line 784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17673 {
17674- (yyval.plugin) = (yyvsp[(2) - (3)].plugin);
17675+ (yyval.plugin) = (yyvsp[-1].plugin);
17676 }
17677+#line 2923 "sipgen/parser.c" /* yacc.c:1646 */
17678 break;
17679
17680 case 78:
17681-#line 790 "sip-4.19.12/sipgen/metasrc/parser.y"
17682+#line 790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17683 {
17684- (yyval.plugin) = (yyvsp[(1) - (3)].plugin);
17685+ (yyval.plugin) = (yyvsp[-2].plugin);
17686
17687- switch ((yyvsp[(3) - (3)].plugin).token)
17688+ switch ((yyvsp[0].plugin).token)
17689 {
17690- case TK_NAME: (yyval.plugin).name = (yyvsp[(3) - (3)].plugin).name; break;
17691+ case TK_NAME: (yyval.plugin).name = (yyvsp[0].plugin).name; break;
17692 }
17693 }
17694+#line 2936 "sipgen/parser.c" /* yacc.c:1646 */
17695 break;
17696
17697 case 79:
17698-#line 800 "sip-4.19.12/sipgen/metasrc/parser.y"
17699+#line 800 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17700 {
17701 (yyval.plugin).token = TK_NAME;
17702
17703- (yyval.plugin).name = (yyvsp[(3) - (3)].text);
17704+ (yyval.plugin).name = (yyvsp[0].text);
17705 }
17706+#line 2946 "sipgen/parser.c" /* yacc.c:1646 */
17707 break;
17708
17709 case 80:
17710-#line 807 "sip-4.19.12/sipgen/metasrc/parser.y"
17711+#line 807 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17712 {
17713- if ((yyvsp[(2) - (3)].veh).name == NULL)
17714+ if ((yyvsp[-1].veh).name == NULL)
17715 yyerror("%VirtualErrorHandler must have a 'name' argument");
17716
17717 if (notSkipping())
17718@@ -3266,7 +2957,7 @@
17719
17720 /* Check there isn't already a handler with the same name. */
17721 for (tailp = &currentSpec->errorhandlers; (veh = *tailp) != NULL; tailp = &veh->next)
17722- if (strcmp(veh->name, (yyvsp[(2) - (3)].veh).name) == 0)
17723+ if (strcmp(veh->name, (yyvsp[-1].veh).name) == 0)
17724 break;
17725
17726 if (veh != NULL)
17727@@ -3274,8 +2965,8 @@
17728
17729 veh = sipMalloc(sizeof (virtErrorHandler));
17730
17731- veh->name = (yyvsp[(2) - (3)].veh).name;
17732- appendCodeBlock(&veh->code, (yyvsp[(3) - (3)].codeb));
17733+ veh->name = (yyvsp[-1].veh).name;
17734+ appendCodeBlock(&veh->code, (yyvsp[0].codeb));
17735 veh->mod = currentModule;
17736 veh->index = -1;
17737 veh->next = NULL;
17738@@ -3283,62 +2974,67 @@
17739 *tailp = veh;
17740 }
17741 }
17742+#line 2978 "sipgen/parser.c" /* yacc.c:1646 */
17743 break;
17744
17745 case 81:
17746-#line 836 "sip-4.19.12/sipgen/metasrc/parser.y"
17747+#line 836 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17748 {
17749 resetLexerState();
17750
17751- (yyval.veh).name = (yyvsp[(1) - (1)].text);
17752+ (yyval.veh).name = (yyvsp[0].text);
17753 }
17754+#line 2988 "sipgen/parser.c" /* yacc.c:1646 */
17755 break;
17756
17757 case 82:
17758-#line 841 "sip-4.19.12/sipgen/metasrc/parser.y"
17759+#line 841 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17760 {
17761- (yyval.veh) = (yyvsp[(2) - (3)].veh);
17762+ (yyval.veh) = (yyvsp[-1].veh);
17763 }
17764+#line 2996 "sipgen/parser.c" /* yacc.c:1646 */
17765 break;
17766
17767 case 84:
17768-#line 847 "sip-4.19.12/sipgen/metasrc/parser.y"
17769+#line 847 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17770 {
17771- (yyval.veh) = (yyvsp[(1) - (3)].veh);
17772+ (yyval.veh) = (yyvsp[-2].veh);
17773
17774- switch ((yyvsp[(3) - (3)].veh).token)
17775+ switch ((yyvsp[0].veh).token)
17776 {
17777- case TK_NAME: (yyval.veh).name = (yyvsp[(3) - (3)].veh).name; break;
17778+ case TK_NAME: (yyval.veh).name = (yyvsp[0].veh).name; break;
17779 }
17780 }
17781+#line 3009 "sipgen/parser.c" /* yacc.c:1646 */
17782 break;
17783
17784 case 85:
17785-#line 857 "sip-4.19.12/sipgen/metasrc/parser.y"
17786+#line 857 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17787 {
17788 (yyval.veh).token = TK_NAME;
17789
17790- (yyval.veh).name = (yyvsp[(3) - (3)].text);
17791+ (yyval.veh).name = (yyvsp[0].text);
17792 }
17793+#line 3019 "sipgen/parser.c" /* yacc.c:1646 */
17794 break;
17795
17796 case 86:
17797-#line 864 "sip-4.19.12/sipgen/metasrc/parser.y"
17798+#line 864 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17799 {
17800 if (notSkipping())
17801 {
17802 apiVersionRangeDef *avd;
17803
17804- if (findAPI(currentSpec, (yyvsp[(2) - (2)].api).name) != NULL)
17805+ if (findAPI(currentSpec, (yyvsp[0].api).name) != NULL)
17806 yyerror("The API name in the %API directive has already been defined");
17807
17808- if ((yyvsp[(2) - (2)].api).version < 1)
17809+ if ((yyvsp[0].api).version < 1)
17810 yyerror("The version number in the %API directive must be greater than or equal to 1");
17811
17812 avd = sipMalloc(sizeof (apiVersionRangeDef));
17813
17814- avd->api_name = cacheName(currentSpec, (yyvsp[(2) - (2)].api).name);
17815- avd->from = (yyvsp[(2) - (2)].api).version;
17816+ avd->api_name = cacheName(currentSpec, (yyvsp[0].api).name);
17817+ avd->from = (yyvsp[0].api).version;
17818 avd->to = -1;
17819
17820 avd->next = currentModule->api_versions;
17821@@ -3348,62 +3044,68 @@
17822 setIsUsedName(avd->api_name);
17823 }
17824 }
17825+#line 3048 "sipgen/parser.c" /* yacc.c:1646 */
17826 break;
17827
17828 case 87:
17829-#line 890 "sip-4.19.12/sipgen/metasrc/parser.y"
17830+#line 890 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17831 {
17832 resetLexerState();
17833
17834 deprecated("%API name and version number should be specified using the 'name' and 'version' arguments");
17835
17836- (yyval.api).name = (yyvsp[(1) - (2)].text);
17837- (yyval.api).version = (yyvsp[(2) - (2)].number);
17838+ (yyval.api).name = (yyvsp[-1].text);
17839+ (yyval.api).version = (yyvsp[0].number);
17840 }
17841+#line 3061 "sipgen/parser.c" /* yacc.c:1646 */
17842 break;
17843
17844 case 88:
17845-#line 898 "sip-4.19.12/sipgen/metasrc/parser.y"
17846+#line 898 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17847 {
17848- (yyval.api) = (yyvsp[(2) - (3)].api);
17849+ (yyval.api) = (yyvsp[-1].api);
17850 }
17851+#line 3069 "sipgen/parser.c" /* yacc.c:1646 */
17852 break;
17853
17854 case 90:
17855-#line 904 "sip-4.19.12/sipgen/metasrc/parser.y"
17856+#line 904 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17857 {
17858- (yyval.api) = (yyvsp[(1) - (3)].api);
17859+ (yyval.api) = (yyvsp[-2].api);
17860
17861- switch ((yyvsp[(3) - (3)].api).token)
17862+ switch ((yyvsp[0].api).token)
17863 {
17864- case TK_NAME: (yyval.api).name = (yyvsp[(3) - (3)].api).name; break;
17865- case TK_VERSION: (yyval.api).version = (yyvsp[(3) - (3)].api).version; break;
17866+ case TK_NAME: (yyval.api).name = (yyvsp[0].api).name; break;
17867+ case TK_VERSION: (yyval.api).version = (yyvsp[0].api).version; break;
17868 }
17869 }
17870+#line 3083 "sipgen/parser.c" /* yacc.c:1646 */
17871 break;
17872
17873 case 91:
17874-#line 915 "sip-4.19.12/sipgen/metasrc/parser.y"
17875+#line 915 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17876 {
17877 (yyval.api).token = TK_NAME;
17878
17879- (yyval.api).name = (yyvsp[(3) - (3)].text);
17880+ (yyval.api).name = (yyvsp[0].text);
17881 (yyval.api).version = 0;
17882 }
17883+#line 3094 "sipgen/parser.c" /* yacc.c:1646 */
17884 break;
17885
17886 case 92:
17887-#line 921 "sip-4.19.12/sipgen/metasrc/parser.y"
17888+#line 921 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17889 {
17890 (yyval.api).token = TK_VERSION;
17891
17892 (yyval.api).name = NULL;
17893- (yyval.api).version = (yyvsp[(3) - (3)].number);
17894+ (yyval.api).version = (yyvsp[0].number);
17895 }
17896+#line 3105 "sipgen/parser.c" /* yacc.c:1646 */
17897 break;
17898
17899 case 93:
17900-#line 929 "sip-4.19.12/sipgen/metasrc/parser.y"
17901+#line 929 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17902 {
17903 if (notSkipping())
17904 {
17905@@ -3416,20 +3118,20 @@
17906 exceptionDef *xd;
17907 const char *pyname;
17908
17909- checkAnnos(&(yyvsp[(4) - (5)].optflags), annos);
17910+ checkAnnos(&(yyvsp[-1].optflags), annos);
17911
17912 if (currentSpec->genc)
17913 yyerror("%Exception not allowed in a C module");
17914
17915- if ((yyvsp[(5) - (5)].exception).raise_code == NULL)
17916+ if ((yyvsp[0].exception).raise_code == NULL)
17917 yyerror("%Exception must have a %RaiseCode sub-directive");
17918
17919- pyname = getPythonName(currentModule, &(yyvsp[(4) - (5)].optflags), scopedNameTail((yyvsp[(2) - (5)].scpvalp)));
17920+ pyname = getPythonName(currentModule, &(yyvsp[-1].optflags), scopedNameTail((yyvsp[-3].scpvalp)));
17921
17922 checkAttributes(currentSpec, currentModule, NULL, NULL,
17923 pyname, FALSE);
17924
17925- xd = findException(currentSpec, (yyvsp[(2) - (5)].scpvalp), TRUE);
17926+ xd = findException(currentSpec, (yyvsp[-3].scpvalp), TRUE);
17927
17928 if (xd->cd != NULL)
17929 yyerror("%Exception name has already been seen as a class name - it must be defined before being used");
17930@@ -3439,28 +3141,30 @@
17931
17932 /* Complete the definition. */
17933 xd->iff->module = currentModule;
17934- appendCodeBlock(&xd->iff->hdrcode, (yyvsp[(5) - (5)].exception).type_header_code);
17935+ appendCodeBlock(&xd->iff->hdrcode, (yyvsp[0].exception).type_header_code);
17936 xd->pyname = pyname;
17937- xd->bibase = (yyvsp[(3) - (5)].exceptionbase).bibase;
17938- xd->base = (yyvsp[(3) - (5)].exceptionbase).base;
17939- appendCodeBlock(&xd->raisecode, (yyvsp[(5) - (5)].exception).raise_code);
17940+ xd->bibase = (yyvsp[-2].exceptionbase).bibase;
17941+ xd->base = (yyvsp[-2].exceptionbase).base;
17942+ appendCodeBlock(&xd->raisecode, (yyvsp[0].exception).raise_code);
17943
17944- if (getOptFlag(&(yyvsp[(4) - (5)].optflags), "Default", bool_flag) != NULL)
17945+ if (getOptFlag(&(yyvsp[-1].optflags), "Default", bool_flag) != NULL)
17946 currentModule->defexception = xd;
17947 }
17948 }
17949+#line 3155 "sipgen/parser.c" /* yacc.c:1646 */
17950 break;
17951
17952 case 94:
17953-#line 976 "sip-4.19.12/sipgen/metasrc/parser.y"
17954+#line 976 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17955 {
17956 (yyval.exceptionbase).bibase = NULL;
17957 (yyval.exceptionbase).base = NULL;
17958 }
17959+#line 3164 "sipgen/parser.c" /* yacc.c:1646 */
17960 break;
17961
17962 case 95:
17963-#line 980 "sip-4.19.12/sipgen/metasrc/parser.y"
17964+#line 980 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
17965 {
17966 exceptionDef *xd;
17967
17968@@ -3469,13 +3173,13 @@
17969
17970 /* See if it is a defined exception. */
17971 for (xd = currentSpec->exceptions; xd != NULL; xd = xd->next)
17972- if (compareScopedNames(xd->iff->fqcname, (yyvsp[(2) - (3)].scpvalp)) == 0)
17973+ if (compareScopedNames(xd->iff->fqcname, (yyvsp[-1].scpvalp)) == 0)
17974 {
17975 (yyval.exceptionbase).base = xd;
17976 break;
17977 }
17978
17979- if (xd == NULL && (yyvsp[(2) - (3)].scpvalp)->next == NULL && strncmp((yyvsp[(2) - (3)].scpvalp)->name, "SIP_", 4) == 0)
17980+ if (xd == NULL && (yyvsp[-1].scpvalp)->next == NULL && strncmp((yyvsp[-1].scpvalp)->name, "SIP_", 4) == 0)
17981 {
17982 /* See if it is a builtin exception. */
17983
17984@@ -3556,7 +3260,7 @@
17985 char **cp;
17986
17987 for (cp = builtins; *cp != NULL; ++cp)
17988- if (strcmp((yyvsp[(2) - (3)].scpvalp)->name + 4, *cp) == 0)
17989+ if (strcmp((yyvsp[-1].scpvalp)->name + 4, *cp) == 0)
17990 {
17991 (yyval.exceptionbase).bibase = *cp;
17992 break;
17993@@ -3566,49 +3270,54 @@
17994 if ((yyval.exceptionbase).bibase == NULL && (yyval.exceptionbase).base == NULL)
17995 yyerror("Unknown exception base type");
17996 }
17997+#line 3274 "sipgen/parser.c" /* yacc.c:1646 */
17998 break;
17999
18000 case 96:
18001-#line 1087 "sip-4.19.12/sipgen/metasrc/parser.y"
18002+#line 1087 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18003 {
18004- (yyval.exception) = (yyvsp[(2) - (4)].exception);
18005+ (yyval.exception) = (yyvsp[-2].exception);
18006 }
18007+#line 3282 "sipgen/parser.c" /* yacc.c:1646 */
18008 break;
18009
18010 case 98:
18011-#line 1093 "sip-4.19.12/sipgen/metasrc/parser.y"
18012+#line 1093 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18013 {
18014- (yyval.exception) = (yyvsp[(1) - (2)].exception);
18015+ (yyval.exception) = (yyvsp[-1].exception);
18016
18017- switch ((yyvsp[(2) - (2)].exception).token)
18018+ switch ((yyvsp[0].exception).token)
18019 {
18020- case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[(2) - (2)].exception).raise_code; break;
18021- case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[(2) - (2)].exception).type_header_code; break;
18022+ case TK_RAISECODE: (yyval.exception).raise_code = (yyvsp[0].exception).raise_code; break;
18023+ case TK_TYPEHEADERCODE: (yyval.exception).type_header_code = (yyvsp[0].exception).type_header_code; break;
18024 }
18025 }
18026+#line 3296 "sipgen/parser.c" /* yacc.c:1646 */
18027 break;
18028
18029 case 99:
18030-#line 1104 "sip-4.19.12/sipgen/metasrc/parser.y"
18031+#line 1104 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18032 {
18033 (yyval.exception).token = TK_IF;
18034 }
18035+#line 3304 "sipgen/parser.c" /* yacc.c:1646 */
18036 break;
18037
18038 case 100:
18039-#line 1107 "sip-4.19.12/sipgen/metasrc/parser.y"
18040+#line 1107 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18041 {
18042 (yyval.exception).token = TK_END;
18043 }
18044+#line 3312 "sipgen/parser.c" /* yacc.c:1646 */
18045 break;
18046
18047 case 101:
18048-#line 1110 "sip-4.19.12/sipgen/metasrc/parser.y"
18049+#line 1110 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18050 {
18051 if (notSkipping())
18052 {
18053 (yyval.exception).token = TK_RAISECODE;
18054- (yyval.exception).raise_code = (yyvsp[(1) - (1)].codeb);
18055+ (yyval.exception).raise_code = (yyvsp[0].codeb);
18056 }
18057 else
18058 {
18059@@ -3618,15 +3327,16 @@
18060
18061 (yyval.exception).type_header_code = NULL;
18062 }
18063+#line 3331 "sipgen/parser.c" /* yacc.c:1646 */
18064 break;
18065
18066 case 102:
18067-#line 1124 "sip-4.19.12/sipgen/metasrc/parser.y"
18068+#line 1124 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18069 {
18070 if (notSkipping())
18071 {
18072 (yyval.exception).token = TK_TYPEHEADERCODE;
18073- (yyval.exception).type_header_code = (yyvsp[(1) - (1)].codeb);
18074+ (yyval.exception).type_header_code = (yyvsp[0].codeb);
18075 }
18076 else
18077 {
18078@@ -3636,17 +3346,19 @@
18079
18080 (yyval.exception).raise_code = NULL;
18081 }
18082+#line 3350 "sipgen/parser.c" /* yacc.c:1646 */
18083 break;
18084
18085 case 103:
18086-#line 1140 "sip-4.19.12/sipgen/metasrc/parser.y"
18087+#line 1140 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18088 {
18089- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
18090+ (yyval.codeb) = (yyvsp[0].codeb);
18091 }
18092+#line 3358 "sipgen/parser.c" /* yacc.c:1646 */
18093 break;
18094
18095 case 104:
18096-#line 1145 "sip-4.19.12/sipgen/metasrc/parser.y"
18097+#line 1145 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18098 {
18099 if (notSkipping())
18100 {
18101@@ -3663,15 +3375,16 @@
18102 NULL
18103 };
18104
18105- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
18106+ checkAnnos(&(yyvsp[0].optflags), annos);
18107
18108- currentMappedType = newMappedType(currentSpec, &(yyvsp[(2) - (3)].memArg), &(yyvsp[(3) - (3)].optflags));
18109+ currentMappedType = newMappedType(currentSpec, &(yyvsp[-1].memArg), &(yyvsp[0].optflags));
18110 }
18111 }
18112+#line 3384 "sipgen/parser.c" /* yacc.c:1646 */
18113 break;
18114
18115 case 106:
18116-#line 1168 "sip-4.19.12/sipgen/metasrc/parser.y"
18117+#line 1168 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18118 {
18119 if (notSkipping())
18120 {
18121@@ -3690,7 +3403,7 @@
18122 mappedTypeTmplDef *mtt;
18123 ifaceFileDef *iff;
18124
18125- checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
18126+ checkAnnos(&(yyvsp[0].optflags), annos);
18127
18128 if (currentSpec->genc)
18129 yyerror("%MappedType templates not allowed in a C module");
18130@@ -3699,32 +3412,32 @@
18131 * Check the template arguments are basic types or simple
18132 * names.
18133 */
18134- for (a = 0; a < (yyvsp[(1) - (4)].signature).nrArgs; ++a)
18135+ for (a = 0; a < (yyvsp[-3].signature).nrArgs; ++a)
18136 {
18137- argDef *ad = &(yyvsp[(1) - (4)].signature).args[a];
18138+ argDef *ad = &(yyvsp[-3].signature).args[a];
18139
18140 if (ad->atype == defined_type && ad->u.snd->next != NULL)
18141 yyerror("%MappedType template arguments must be simple names");
18142 }
18143
18144- if ((yyvsp[(3) - (4)].memArg).atype != template_type)
18145+ if ((yyvsp[-1].memArg).atype != template_type)
18146 yyerror("%MappedType template must map a template type");
18147
18148- (yyvsp[(3) - (4)].memArg).u.td->fqname = fullyQualifiedName((yyvsp[(3) - (4)].memArg).u.td->fqname);
18149+ (yyvsp[-1].memArg).u.td->fqname = fullyQualifiedName((yyvsp[-1].memArg).u.td->fqname);
18150
18151 /* Check a template hasn't already been provided. */
18152 for (mtt = currentSpec->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
18153- if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[(3) - (4)].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[(3) - (4)].memArg).u.td->types, TRUE))
18154+ if (compareScopedNames(mtt->mt->type.u.td->fqname, (yyvsp[-1].memArg).u.td->fqname ) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &(yyvsp[-1].memArg).u.td->types, TRUE))
18155 yyerror("%MappedType template for this type has already been defined");
18156
18157- (yyvsp[(3) - (4)].memArg).nrderefs = 0;
18158- (yyvsp[(3) - (4)].memArg).argflags = 0;
18159+ (yyvsp[-1].memArg).nrderefs = 0;
18160+ (yyvsp[-1].memArg).argflags = 0;
18161
18162 mtt = sipMalloc(sizeof (mappedTypeTmplDef));
18163
18164- mtt->sig = (yyvsp[(1) - (4)].signature);
18165- mtt->mt = allocMappedType(currentSpec, &(yyvsp[(3) - (4)].memArg));
18166- mappedTypeAnnos(mtt->mt, &(yyvsp[(4) - (4)].optflags));
18167+ mtt->sig = (yyvsp[-3].signature);
18168+ mtt->mt = allocMappedType(currentSpec, &(yyvsp[-1].memArg));
18169+ mappedTypeAnnos(mtt->mt, &(yyvsp[0].optflags));
18170 mtt->next = currentSpec->mappedtypetemplates;
18171
18172 currentSpec->mappedtypetemplates = mtt;
18173@@ -3737,10 +3450,11 @@
18174 mtt->mt->iff = iff;
18175 }
18176 }
18177+#line 3454 "sipgen/parser.c" /* yacc.c:1646 */
18178 break;
18179
18180 case 108:
18181-#line 1235 "sip-4.19.12/sipgen/metasrc/parser.y"
18182+#line 1235 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18183 {
18184 if (notSkipping())
18185 {
18186@@ -3753,82 +3467,89 @@
18187 currentMappedType = NULL;
18188 }
18189 }
18190+#line 3471 "sipgen/parser.c" /* yacc.c:1646 */
18191 break;
18192
18193 case 113:
18194-#line 1255 "sip-4.19.12/sipgen/metasrc/parser.y"
18195+#line 1255 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18196 {
18197 if (notSkipping())
18198- appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
18199+ appendCodeBlock(&currentMappedType->iff->hdrcode, (yyvsp[0].codeb));
18200 }
18201+#line 3480 "sipgen/parser.c" /* yacc.c:1646 */
18202 break;
18203
18204 case 114:
18205-#line 1259 "sip-4.19.12/sipgen/metasrc/parser.y"
18206+#line 1259 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18207 {
18208 if (notSkipping())
18209- appendCodeBlock(&currentMappedType->typecode, (yyvsp[(1) - (1)].codeb));
18210+ appendCodeBlock(&currentMappedType->typecode, (yyvsp[0].codeb));
18211 }
18212+#line 3489 "sipgen/parser.c" /* yacc.c:1646 */
18213 break;
18214
18215 case 115:
18216-#line 1263 "sip-4.19.12/sipgen/metasrc/parser.y"
18217+#line 1263 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18218 {
18219 if (notSkipping())
18220 {
18221 if (currentMappedType->convfromcode != NULL)
18222 yyerror("%MappedType has more than one %ConvertFromTypeCode directive");
18223
18224- appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[(2) - (2)].codeb));
18225+ appendCodeBlock(&currentMappedType->convfromcode, (yyvsp[0].codeb));
18226 }
18227 }
18228+#line 3503 "sipgen/parser.c" /* yacc.c:1646 */
18229 break;
18230
18231 case 116:
18232-#line 1272 "sip-4.19.12/sipgen/metasrc/parser.y"
18233+#line 1272 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18234 {
18235 if (notSkipping())
18236 {
18237 if (currentMappedType->convtocode != NULL)
18238 yyerror("%MappedType has more than one %ConvertToTypeCode directive");
18239
18240- appendCodeBlock(&currentMappedType->convtocode, (yyvsp[(2) - (2)].codeb));
18241+ appendCodeBlock(&currentMappedType->convtocode, (yyvsp[0].codeb));
18242 }
18243 }
18244+#line 3517 "sipgen/parser.c" /* yacc.c:1646 */
18245 break;
18246
18247 case 117:
18248-#line 1281 "sip-4.19.12/sipgen/metasrc/parser.y"
18249+#line 1281 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18250 {
18251 if (notSkipping())
18252 {
18253 if (currentMappedType->instancecode != NULL)
18254 yyerror("%MappedType has more than one %InstanceCode directive");
18255
18256- appendCodeBlock(&currentMappedType->instancecode, (yyvsp[(1) - (1)].codeb));
18257+ appendCodeBlock(&currentMappedType->instancecode, (yyvsp[0].codeb));
18258 }
18259 }
18260+#line 3531 "sipgen/parser.c" /* yacc.c:1646 */
18261 break;
18262
18263 case 120:
18264-#line 1294 "sip-4.19.12/sipgen/metasrc/parser.y"
18265+#line 1294 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18266 {
18267 if (notSkipping())
18268 {
18269- applyTypeFlags(currentModule, &(yyvsp[(2) - (14)].memArg), &(yyvsp[(9) - (14)].optflags));
18270+ applyTypeFlags(currentModule, &(yyvsp[-12].memArg), &(yyvsp[-5].optflags));
18271
18272- (yyvsp[(5) - (14)].signature).result = (yyvsp[(2) - (14)].memArg);
18273+ (yyvsp[-9].signature).result = (yyvsp[-12].memArg);
18274
18275 newFunction(currentSpec, currentModule, NULL, NULL,
18276- currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[(3) - (14)].text),
18277- &(yyvsp[(5) - (14)].signature), (yyvsp[(7) - (14)].number), FALSE, &(yyvsp[(9) - (14)].optflags), (yyvsp[(14) - (14)].codeb), NULL, NULL, (yyvsp[(8) - (14)].throwlist), (yyvsp[(10) - (14)].optsignature), (yyvsp[(12) - (14)].docstr),
18278- FALSE, (yyvsp[(13) - (14)].codeb));
18279+ currentMappedType, 0, TRUE, FALSE, FALSE, FALSE, (yyvsp[-11].text),
18280+ &(yyvsp[-9].signature), (yyvsp[-7].number), FALSE, &(yyvsp[-5].optflags), (yyvsp[0].codeb), NULL, NULL, (yyvsp[-6].throwlist), (yyvsp[-4].optsignature), (yyvsp[-2].docstr),
18281+ FALSE, (yyvsp[-1].codeb));
18282 }
18283 }
18284+#line 3549 "sipgen/parser.c" /* yacc.c:1646 */
18285 break;
18286
18287 case 121:
18288-#line 1309 "sip-4.19.12/sipgen/metasrc/parser.y"
18289+#line 1309 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18290 {
18291 if (currentSpec -> genc)
18292 yyerror("namespace definition not allowed in a C module");
18293@@ -3844,17 +3565,18 @@
18294 scope = NULL;
18295
18296 ns = newClass(currentSpec, namespace_iface, NULL,
18297- text2scopedName(scope, (yyvsp[(2) - (2)].text)), NULL, NULL, NULL, NULL);
18298+ text2scopedName(scope, (yyvsp[0].text)), NULL, NULL, NULL, NULL);
18299
18300 pushScope(ns);
18301
18302 sectionFlags = 0;
18303 }
18304 }
18305+#line 3576 "sipgen/parser.c" /* yacc.c:1646 */
18306 break;
18307
18308 case 122:
18309-#line 1330 "sip-4.19.12/sipgen/metasrc/parser.y"
18310+#line 1330 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18311 {
18312 if (notSkipping())
18313 {
18314@@ -3869,10 +3591,11 @@
18315 popScope();
18316 }
18317 }
18318+#line 3595 "sipgen/parser.c" /* yacc.c:1646 */
18319 break;
18320
18321 case 127:
18322-#line 1354 "sip-4.19.12/sipgen/metasrc/parser.y"
18323+#line 1354 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18324 {
18325 if (notSkipping())
18326 {
18327@@ -3883,10 +3606,11 @@
18328 yyerror("%Platforms has already been defined for this module");
18329 }
18330 }
18331+#line 3610 "sipgen/parser.c" /* yacc.c:1646 */
18332 break;
18333
18334 case 128:
18335-#line 1364 "sip-4.19.12/sipgen/metasrc/parser.y"
18336+#line 1364 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18337 {
18338 if (notSkipping())
18339 {
18340@@ -3904,70 +3628,78 @@
18341 yyerror("No more than one of these %Platforms must be specified with the -t flag");
18342 }
18343 }
18344+#line 3632 "sipgen/parser.c" /* yacc.c:1646 */
18345 break;
18346
18347 case 131:
18348-#line 1387 "sip-4.19.12/sipgen/metasrc/parser.y"
18349+#line 1387 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18350 {
18351- newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(1) - (1)].text),
18352+ newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].text),
18353 platform_qualifier);
18354 }
18355+#line 3641 "sipgen/parser.c" /* yacc.c:1646 */
18356 break;
18357
18358 case 132:
18359-#line 1393 "sip-4.19.12/sipgen/metasrc/parser.y"
18360+#line 1393 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18361 {
18362- newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[(2) - (2)].feature).name,
18363+ newQualifier(currentModule, -1, -1, notSkipping(), (yyvsp[0].feature).name,
18364 feature_qualifier);
18365 }
18366+#line 3650 "sipgen/parser.c" /* yacc.c:1646 */
18367 break;
18368
18369 case 133:
18370-#line 1399 "sip-4.19.12/sipgen/metasrc/parser.y"
18371+#line 1399 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18372 {
18373 resetLexerState();
18374
18375- (yyval.feature).name = (yyvsp[(1) - (1)].text);
18376+ (yyval.feature).name = (yyvsp[0].text);
18377 }
18378+#line 3660 "sipgen/parser.c" /* yacc.c:1646 */
18379 break;
18380
18381 case 134:
18382-#line 1404 "sip-4.19.12/sipgen/metasrc/parser.y"
18383+#line 1404 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18384 {
18385- (yyval.feature) = (yyvsp[(2) - (3)].feature);
18386+ (yyval.feature) = (yyvsp[-1].feature);
18387 }
18388+#line 3668 "sipgen/parser.c" /* yacc.c:1646 */
18389 break;
18390
18391 case 136:
18392-#line 1410 "sip-4.19.12/sipgen/metasrc/parser.y"
18393+#line 1410 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18394 {
18395- (yyval.feature) = (yyvsp[(1) - (3)].feature);
18396+ (yyval.feature) = (yyvsp[-2].feature);
18397
18398- switch ((yyvsp[(3) - (3)].feature).token)
18399+ switch ((yyvsp[0].feature).token)
18400 {
18401- case TK_NAME: (yyval.feature).name = (yyvsp[(3) - (3)].feature).name; break;
18402+ case TK_NAME: (yyval.feature).name = (yyvsp[0].feature).name; break;
18403 }
18404 }
18405+#line 3681 "sipgen/parser.c" /* yacc.c:1646 */
18406 break;
18407
18408 case 137:
18409-#line 1420 "sip-4.19.12/sipgen/metasrc/parser.y"
18410+#line 1420 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18411 {
18412 (yyval.feature).token = TK_NAME;
18413
18414- (yyval.feature).name = (yyvsp[(3) - (3)].text);
18415+ (yyval.feature).name = (yyvsp[0].text);
18416 }
18417+#line 3691 "sipgen/parser.c" /* yacc.c:1646 */
18418 break;
18419
18420 case 138:
18421-#line 1427 "sip-4.19.12/sipgen/metasrc/parser.y"
18422+#line 1427 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18423 {
18424 currentTimelineOrder = 0;
18425 }
18426+#line 3699 "sipgen/parser.c" /* yacc.c:1646 */
18427 break;
18428
18429 case 139:
18430-#line 1430 "sip-4.19.12/sipgen/metasrc/parser.y"
18431+#line 1430 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18432 {
18433 if (notSkipping())
18434 {
18435@@ -3989,25 +3721,28 @@
18436 currentModule->nrtimelines++;
18437 }
18438 }
18439+#line 3725 "sipgen/parser.c" /* yacc.c:1646 */
18440 break;
18441
18442 case 142:
18443-#line 1457 "sip-4.19.12/sipgen/metasrc/parser.y"
18444+#line 1457 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18445 {
18446 newQualifier(currentModule, currentModule->nrtimelines,
18447- currentTimelineOrder++, TRUE, (yyvsp[(1) - (1)].text), time_qualifier);
18448+ currentTimelineOrder++, TRUE, (yyvsp[0].text), time_qualifier);
18449 }
18450+#line 3734 "sipgen/parser.c" /* yacc.c:1646 */
18451 break;
18452
18453 case 143:
18454-#line 1463 "sip-4.19.12/sipgen/metasrc/parser.y"
18455+#line 1463 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18456 {
18457 currentPlatforms = NULL;
18458 }
18459+#line 3742 "sipgen/parser.c" /* yacc.c:1646 */
18460 break;
18461
18462 case 144:
18463-#line 1465 "sip-4.19.12/sipgen/metasrc/parser.y"
18464+#line 1465 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18465 {
18466 if (stackPtr >= MAX_NESTED_IF)
18467 yyerror("Internal error: increase the value of MAX_NESTED_IF");
18468@@ -4015,102 +3750,110 @@
18469 /* Nested %Ifs are implicit logical ands. */
18470
18471 if (stackPtr > 0)
18472- (yyvsp[(4) - (5)].boolean) = ((yyvsp[(4) - (5)].boolean) && skipStack[stackPtr - 1]);
18473+ (yyvsp[-1].boolean) = ((yyvsp[-1].boolean) && skipStack[stackPtr - 1]);
18474
18475- skipStack[stackPtr] = (yyvsp[(4) - (5)].boolean);
18476+ skipStack[stackPtr] = (yyvsp[-1].boolean);
18477
18478 platformStack[stackPtr] = currentPlatforms;
18479
18480 ++stackPtr;
18481 }
18482+#line 3762 "sipgen/parser.c" /* yacc.c:1646 */
18483 break;
18484
18485 case 145:
18486-#line 1482 "sip-4.19.12/sipgen/metasrc/parser.y"
18487+#line 1482 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18488 {
18489- (yyval.boolean) = platOrFeature((yyvsp[(1) - (1)].text), FALSE);
18490+ (yyval.boolean) = platOrFeature((yyvsp[0].text), FALSE);
18491 }
18492+#line 3770 "sipgen/parser.c" /* yacc.c:1646 */
18493 break;
18494
18495 case 146:
18496-#line 1485 "sip-4.19.12/sipgen/metasrc/parser.y"
18497+#line 1485 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18498 {
18499- (yyval.boolean) = platOrFeature((yyvsp[(2) - (2)].text), TRUE);
18500+ (yyval.boolean) = platOrFeature((yyvsp[0].text), TRUE);
18501 }
18502+#line 3778 "sipgen/parser.c" /* yacc.c:1646 */
18503 break;
18504
18505 case 147:
18506-#line 1488 "sip-4.19.12/sipgen/metasrc/parser.y"
18507+#line 1488 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18508 {
18509- (yyval.boolean) = (platOrFeature((yyvsp[(3) - (3)].text), FALSE) || (yyvsp[(1) - (3)].boolean));
18510+ (yyval.boolean) = (platOrFeature((yyvsp[0].text), FALSE) || (yyvsp[-2].boolean));
18511 }
18512+#line 3786 "sipgen/parser.c" /* yacc.c:1646 */
18513 break;
18514
18515 case 148:
18516-#line 1491 "sip-4.19.12/sipgen/metasrc/parser.y"
18517+#line 1491 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18518 {
18519- (yyval.boolean) = (platOrFeature((yyvsp[(4) - (4)].text), TRUE) || (yyvsp[(1) - (4)].boolean));
18520+ (yyval.boolean) = (platOrFeature((yyvsp[0].text), TRUE) || (yyvsp[-3].boolean));
18521 }
18522+#line 3794 "sipgen/parser.c" /* yacc.c:1646 */
18523 break;
18524
18525 case 150:
18526-#line 1497 "sip-4.19.12/sipgen/metasrc/parser.y"
18527+#line 1497 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18528 {
18529- (yyval.boolean) = timePeriod((yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text));
18530+ (yyval.boolean) = timePeriod((yyvsp[-2].text), (yyvsp[0].text));
18531 }
18532+#line 3802 "sipgen/parser.c" /* yacc.c:1646 */
18533 break;
18534
18535 case 151:
18536-#line 1502 "sip-4.19.12/sipgen/metasrc/parser.y"
18537+#line 1502 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18538 {
18539 if (stackPtr-- <= 0)
18540 yyerror("Too many %End directives");
18541
18542 currentPlatforms = (stackPtr == 0 ? NULL : platformStack[stackPtr - 1]);
18543 }
18544+#line 3813 "sipgen/parser.c" /* yacc.c:1646 */
18545 break;
18546
18547 case 152:
18548-#line 1510 "sip-4.19.12/sipgen/metasrc/parser.y"
18549+#line 1510 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18550 {
18551 optFlag *of;
18552
18553- if ((yyvsp[(3) - (3)].optflags).nrFlags != 0)
18554+ if ((yyvsp[0].optflags).nrFlags != 0)
18555 deprecated("%License annotations are deprecated, use arguments instead");
18556
18557- if ((yyvsp[(2) - (3)].license).type == NULL)
18558- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Type", string_flag)) != NULL)
18559- (yyvsp[(2) - (3)].license).type = of->fvalue.sval;
18560+ if ((yyvsp[-1].license).type == NULL)
18561+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Type", string_flag)) != NULL)
18562+ (yyvsp[-1].license).type = of->fvalue.sval;
18563
18564- if ((yyvsp[(2) - (3)].license).licensee == NULL)
18565- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Licensee", string_flag)) != NULL)
18566- (yyvsp[(2) - (3)].license).licensee = of->fvalue.sval;
18567+ if ((yyvsp[-1].license).licensee == NULL)
18568+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Licensee", string_flag)) != NULL)
18569+ (yyvsp[-1].license).licensee = of->fvalue.sval;
18570
18571- if ((yyvsp[(2) - (3)].license).signature == NULL)
18572- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Signature", string_flag)) != NULL)
18573- (yyvsp[(2) - (3)].license).signature = of->fvalue.sval;
18574+ if ((yyvsp[-1].license).signature == NULL)
18575+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Signature", string_flag)) != NULL)
18576+ (yyvsp[-1].license).signature = of->fvalue.sval;
18577
18578- if ((yyvsp[(2) - (3)].license).timestamp == NULL)
18579- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "Timestamp", string_flag)) != NULL)
18580- (yyvsp[(2) - (3)].license).timestamp = of->fvalue.sval;
18581+ if ((yyvsp[-1].license).timestamp == NULL)
18582+ if ((of = getOptFlag(&(yyvsp[0].optflags), "Timestamp", string_flag)) != NULL)
18583+ (yyvsp[-1].license).timestamp = of->fvalue.sval;
18584
18585- if ((yyvsp[(2) - (3)].license).type == NULL)
18586+ if ((yyvsp[-1].license).type == NULL)
18587 yyerror("%License must have a 'type' argument");
18588
18589 if (notSkipping())
18590 {
18591 currentModule->license = sipMalloc(sizeof (licenseDef));
18592
18593- currentModule->license->type = (yyvsp[(2) - (3)].license).type;
18594- currentModule->license->licensee = (yyvsp[(2) - (3)].license).licensee;
18595- currentModule->license->sig = (yyvsp[(2) - (3)].license).signature;
18596- currentModule->license->timestamp = (yyvsp[(2) - (3)].license).timestamp;
18597+ currentModule->license->type = (yyvsp[-1].license).type;
18598+ currentModule->license->licensee = (yyvsp[-1].license).licensee;
18599+ currentModule->license->sig = (yyvsp[-1].license).signature;
18600+ currentModule->license->timestamp = (yyvsp[-1].license).timestamp;
18601 }
18602 }
18603+#line 3853 "sipgen/parser.c" /* yacc.c:1646 */
18604 break;
18605
18606 case 153:
18607-#line 1547 "sip-4.19.12/sipgen/metasrc/parser.y"
18608+#line 1547 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18609 {
18610 resetLexerState();
18611
18612@@ -4119,241 +3862,264 @@
18613 (yyval.license).signature = NULL;
18614 (yyval.license).timestamp = NULL;
18615 }
18616+#line 3866 "sipgen/parser.c" /* yacc.c:1646 */
18617 break;
18618
18619 case 154:
18620-#line 1555 "sip-4.19.12/sipgen/metasrc/parser.y"
18621+#line 1555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18622 {
18623- (yyval.license).type = (yyvsp[(1) - (1)].text);
18624+ (yyval.license).type = (yyvsp[0].text);
18625 (yyval.license).licensee = NULL;
18626 (yyval.license).signature = NULL;
18627 (yyval.license).timestamp = NULL;
18628 }
18629+#line 3877 "sipgen/parser.c" /* yacc.c:1646 */
18630 break;
18631
18632 case 155:
18633-#line 1561 "sip-4.19.12/sipgen/metasrc/parser.y"
18634+#line 1561 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18635 {
18636- (yyval.license) = (yyvsp[(2) - (3)].license);
18637+ (yyval.license) = (yyvsp[-1].license);
18638 }
18639+#line 3885 "sipgen/parser.c" /* yacc.c:1646 */
18640 break;
18641
18642 case 157:
18643-#line 1567 "sip-4.19.12/sipgen/metasrc/parser.y"
18644+#line 1567 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18645 {
18646- (yyval.license) = (yyvsp[(1) - (3)].license);
18647+ (yyval.license) = (yyvsp[-2].license);
18648
18649- switch ((yyvsp[(3) - (3)].license).token)
18650+ switch ((yyvsp[0].license).token)
18651 {
18652- case TK_TYPE: (yyval.license).type = (yyvsp[(3) - (3)].license).type; break;
18653- case TK_LICENSEE: (yyval.license).licensee = (yyvsp[(3) - (3)].license).licensee; break;
18654- case TK_SIGNATURE: (yyval.license).signature = (yyvsp[(3) - (3)].license).signature; break;
18655- case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[(3) - (3)].license).timestamp; break;
18656+ case TK_TYPE: (yyval.license).type = (yyvsp[0].license).type; break;
18657+ case TK_LICENSEE: (yyval.license).licensee = (yyvsp[0].license).licensee; break;
18658+ case TK_SIGNATURE: (yyval.license).signature = (yyvsp[0].license).signature; break;
18659+ case TK_TIMESTAMP: (yyval.license).timestamp = (yyvsp[0].license).timestamp; break;
18660 }
18661 }
18662+#line 3901 "sipgen/parser.c" /* yacc.c:1646 */
18663 break;
18664
18665 case 158:
18666-#line 1580 "sip-4.19.12/sipgen/metasrc/parser.y"
18667+#line 1580 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18668 {
18669 (yyval.license).token = TK_NAME;
18670
18671- (yyval.license).type = (yyvsp[(3) - (3)].text);
18672+ (yyval.license).type = (yyvsp[0].text);
18673 (yyval.license).licensee = NULL;
18674 (yyval.license).signature = NULL;
18675 (yyval.license).timestamp = NULL;
18676 }
18677+#line 3914 "sipgen/parser.c" /* yacc.c:1646 */
18678 break;
18679
18680 case 159:
18681-#line 1588 "sip-4.19.12/sipgen/metasrc/parser.y"
18682+#line 1588 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18683 {
18684 (yyval.license).token = TK_LICENSEE;
18685
18686 (yyval.license).type = NULL;
18687- (yyval.license).licensee = (yyvsp[(3) - (3)].text);
18688+ (yyval.license).licensee = (yyvsp[0].text);
18689 (yyval.license).signature = NULL;
18690 (yyval.license).timestamp = NULL;
18691 }
18692+#line 3927 "sipgen/parser.c" /* yacc.c:1646 */
18693 break;
18694
18695 case 160:
18696-#line 1596 "sip-4.19.12/sipgen/metasrc/parser.y"
18697+#line 1596 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18698 {
18699 (yyval.license).token = TK_SIGNATURE;
18700
18701 (yyval.license).type = NULL;
18702 (yyval.license).licensee = NULL;
18703- (yyval.license).signature = (yyvsp[(3) - (3)].text);
18704+ (yyval.license).signature = (yyvsp[0].text);
18705 (yyval.license).timestamp = NULL;
18706 }
18707+#line 3940 "sipgen/parser.c" /* yacc.c:1646 */
18708 break;
18709
18710 case 161:
18711-#line 1604 "sip-4.19.12/sipgen/metasrc/parser.y"
18712+#line 1604 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18713 {
18714 (yyval.license).token = TK_TIMESTAMP;
18715
18716 (yyval.license).type = NULL;
18717 (yyval.license).licensee = NULL;
18718 (yyval.license).signature = NULL;
18719- (yyval.license).timestamp = (yyvsp[(3) - (3)].text);
18720+ (yyval.license).timestamp = (yyvsp[0].text);
18721 }
18722+#line 3953 "sipgen/parser.c" /* yacc.c:1646 */
18723 break;
18724
18725 case 162:
18726-#line 1614 "sip-4.19.12/sipgen/metasrc/parser.y"
18727+#line 1614 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18728 {
18729 if (notSkipping())
18730 {
18731 if (currentModule->defmetatype != NULL)
18732 yyerror("%DefaultMetatype has already been defined for this module");
18733
18734- currentModule->defmetatype = cacheName(currentSpec, (yyvsp[(2) - (2)].defmetatype).name);
18735+ currentModule->defmetatype = cacheName(currentSpec, (yyvsp[0].defmetatype).name);
18736 }
18737 }
18738+#line 3967 "sipgen/parser.c" /* yacc.c:1646 */
18739 break;
18740
18741 case 163:
18742-#line 1625 "sip-4.19.12/sipgen/metasrc/parser.y"
18743+#line 1625 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18744 {
18745 resetLexerState();
18746
18747- (yyval.defmetatype).name = (yyvsp[(1) - (1)].text);
18748+ (yyval.defmetatype).name = (yyvsp[0].text);
18749 }
18750+#line 3977 "sipgen/parser.c" /* yacc.c:1646 */
18751 break;
18752
18753 case 164:
18754-#line 1630 "sip-4.19.12/sipgen/metasrc/parser.y"
18755+#line 1630 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18756 {
18757- (yyval.defmetatype) = (yyvsp[(2) - (3)].defmetatype);
18758+ (yyval.defmetatype) = (yyvsp[-1].defmetatype);
18759 }
18760+#line 3985 "sipgen/parser.c" /* yacc.c:1646 */
18761 break;
18762
18763 case 166:
18764-#line 1636 "sip-4.19.12/sipgen/metasrc/parser.y"
18765+#line 1636 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18766 {
18767- (yyval.defmetatype) = (yyvsp[(1) - (3)].defmetatype);
18768+ (yyval.defmetatype) = (yyvsp[-2].defmetatype);
18769
18770- switch ((yyvsp[(3) - (3)].defmetatype).token)
18771+ switch ((yyvsp[0].defmetatype).token)
18772 {
18773- case TK_NAME: (yyval.defmetatype).name = (yyvsp[(3) - (3)].defmetatype).name; break;
18774+ case TK_NAME: (yyval.defmetatype).name = (yyvsp[0].defmetatype).name; break;
18775 }
18776 }
18777+#line 3998 "sipgen/parser.c" /* yacc.c:1646 */
18778 break;
18779
18780 case 167:
18781-#line 1646 "sip-4.19.12/sipgen/metasrc/parser.y"
18782+#line 1646 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18783 {
18784 (yyval.defmetatype).token = TK_NAME;
18785
18786- (yyval.defmetatype).name = (yyvsp[(3) - (3)].text);
18787+ (yyval.defmetatype).name = (yyvsp[0].text);
18788 }
18789+#line 4008 "sipgen/parser.c" /* yacc.c:1646 */
18790 break;
18791
18792 case 168:
18793-#line 1653 "sip-4.19.12/sipgen/metasrc/parser.y"
18794+#line 1653 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18795 {
18796 if (notSkipping())
18797 {
18798 if (currentModule->defsupertype != NULL)
18799 yyerror("%DefaultSupertype has already been defined for this module");
18800
18801- currentModule->defsupertype = cacheName(currentSpec, (yyvsp[(2) - (2)].defsupertype).name);
18802+ currentModule->defsupertype = cacheName(currentSpec, (yyvsp[0].defsupertype).name);
18803 }
18804 }
18805+#line 4022 "sipgen/parser.c" /* yacc.c:1646 */
18806 break;
18807
18808 case 169:
18809-#line 1664 "sip-4.19.12/sipgen/metasrc/parser.y"
18810+#line 1664 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18811 {
18812 resetLexerState();
18813
18814- (yyval.defsupertype).name = (yyvsp[(1) - (1)].text);
18815+ (yyval.defsupertype).name = (yyvsp[0].text);
18816 }
18817+#line 4032 "sipgen/parser.c" /* yacc.c:1646 */
18818 break;
18819
18820 case 170:
18821-#line 1669 "sip-4.19.12/sipgen/metasrc/parser.y"
18822+#line 1669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18823 {
18824- (yyval.defsupertype) = (yyvsp[(2) - (3)].defsupertype);
18825+ (yyval.defsupertype) = (yyvsp[-1].defsupertype);
18826 }
18827+#line 4040 "sipgen/parser.c" /* yacc.c:1646 */
18828 break;
18829
18830 case 172:
18831-#line 1675 "sip-4.19.12/sipgen/metasrc/parser.y"
18832+#line 1675 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18833 {
18834- (yyval.defsupertype) = (yyvsp[(1) - (3)].defsupertype);
18835+ (yyval.defsupertype) = (yyvsp[-2].defsupertype);
18836
18837- switch ((yyvsp[(3) - (3)].defsupertype).token)
18838+ switch ((yyvsp[0].defsupertype).token)
18839 {
18840- case TK_NAME: (yyval.defsupertype).name = (yyvsp[(3) - (3)].defsupertype).name; break;
18841+ case TK_NAME: (yyval.defsupertype).name = (yyvsp[0].defsupertype).name; break;
18842 }
18843 }
18844+#line 4053 "sipgen/parser.c" /* yacc.c:1646 */
18845 break;
18846
18847 case 173:
18848-#line 1685 "sip-4.19.12/sipgen/metasrc/parser.y"
18849+#line 1685 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18850 {
18851 (yyval.defsupertype).token = TK_NAME;
18852
18853- (yyval.defsupertype).name = (yyvsp[(3) - (3)].text);
18854+ (yyval.defsupertype).name = (yyvsp[0].text);
18855 }
18856+#line 4063 "sipgen/parser.c" /* yacc.c:1646 */
18857 break;
18858
18859 case 174:
18860-#line 1692 "sip-4.19.12/sipgen/metasrc/parser.y"
18861+#line 1692 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18862 {
18863 if (notSkipping())
18864 {
18865 classDef *ns;
18866
18867 ns = newClass(currentSpec, namespace_iface, NULL,
18868- fullyQualifiedName((yyvsp[(2) - (2)].hiddenns).name), NULL, NULL, NULL, NULL);
18869+ fullyQualifiedName((yyvsp[0].hiddenns).name), NULL, NULL, NULL, NULL);
18870 setHiddenNamespace(ns);
18871 }
18872 }
18873+#line 4078 "sipgen/parser.c" /* yacc.c:1646 */
18874 break;
18875
18876 case 175:
18877-#line 1704 "sip-4.19.12/sipgen/metasrc/parser.y"
18878+#line 1704 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18879 {
18880 resetLexerState();
18881
18882- (yyval.hiddenns).name = (yyvsp[(1) - (1)].scpvalp);
18883+ (yyval.hiddenns).name = (yyvsp[0].scpvalp);
18884 }
18885+#line 4088 "sipgen/parser.c" /* yacc.c:1646 */
18886 break;
18887
18888 case 176:
18889-#line 1709 "sip-4.19.12/sipgen/metasrc/parser.y"
18890+#line 1709 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18891 {
18892- (yyval.hiddenns) = (yyvsp[(2) - (3)].hiddenns);
18893+ (yyval.hiddenns) = (yyvsp[-1].hiddenns);
18894 }
18895+#line 4096 "sipgen/parser.c" /* yacc.c:1646 */
18896 break;
18897
18898 case 178:
18899-#line 1715 "sip-4.19.12/sipgen/metasrc/parser.y"
18900+#line 1715 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18901 {
18902- (yyval.hiddenns) = (yyvsp[(1) - (3)].hiddenns);
18903+ (yyval.hiddenns) = (yyvsp[-2].hiddenns);
18904
18905- switch ((yyvsp[(3) - (3)].hiddenns).token)
18906+ switch ((yyvsp[0].hiddenns).token)
18907 {
18908- case TK_NAME: (yyval.hiddenns).name = (yyvsp[(3) - (3)].hiddenns).name; break;
18909+ case TK_NAME: (yyval.hiddenns).name = (yyvsp[0].hiddenns).name; break;
18910 }
18911 }
18912+#line 4109 "sipgen/parser.c" /* yacc.c:1646 */
18913 break;
18914
18915 case 179:
18916-#line 1725 "sip-4.19.12/sipgen/metasrc/parser.y"
18917+#line 1725 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18918 {
18919 (yyval.hiddenns).token = TK_NAME;
18920
18921- (yyval.hiddenns).name = (yyvsp[(3) - (3)].scpvalp);
18922+ (yyval.hiddenns).name = (yyvsp[0].scpvalp);
18923 }
18924+#line 4119 "sipgen/parser.c" /* yacc.c:1646 */
18925 break;
18926
18927 case 180:
18928-#line 1732 "sip-4.19.12/sipgen/metasrc/parser.y"
18929+#line 1732 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18930 {
18931 deprecated("%ConsolidatedModule is deprecated and will not be supported by SIP v5");
18932
18933@@ -4366,99 +4132,109 @@
18934 if (currentModule->fullname != NULL)
18935 yyerror("%ConsolidatedModule must appear before any %Module or %CModule directive");
18936
18937- setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].consmodule).name);
18938- currentModule->docstring = (yyvsp[(3) - (3)].consmodule).docstring;
18939+ setModuleName(currentSpec, currentModule, (yyvsp[-1].consmodule).name);
18940+ currentModule->docstring = (yyvsp[0].consmodule).docstring;
18941
18942 setIsConsolidated(currentModule);
18943 }
18944 }
18945+#line 4142 "sipgen/parser.c" /* yacc.c:1646 */
18946 break;
18947
18948 case 181:
18949-#line 1752 "sip-4.19.12/sipgen/metasrc/parser.y"
18950+#line 1752 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18951 {
18952 resetLexerState();
18953
18954- (yyval.consmodule).name = (yyvsp[(1) - (1)].text);
18955+ (yyval.consmodule).name = (yyvsp[0].text);
18956 }
18957+#line 4152 "sipgen/parser.c" /* yacc.c:1646 */
18958 break;
18959
18960 case 182:
18961-#line 1757 "sip-4.19.12/sipgen/metasrc/parser.y"
18962+#line 1757 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18963 {
18964- (yyval.consmodule) = (yyvsp[(2) - (3)].consmodule);
18965+ (yyval.consmodule) = (yyvsp[-1].consmodule);
18966 }
18967+#line 4160 "sipgen/parser.c" /* yacc.c:1646 */
18968 break;
18969
18970 case 184:
18971-#line 1763 "sip-4.19.12/sipgen/metasrc/parser.y"
18972+#line 1763 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18973 {
18974- (yyval.consmodule) = (yyvsp[(1) - (3)].consmodule);
18975+ (yyval.consmodule) = (yyvsp[-2].consmodule);
18976
18977- switch ((yyvsp[(3) - (3)].consmodule).token)
18978+ switch ((yyvsp[0].consmodule).token)
18979 {
18980- case TK_NAME: (yyval.consmodule).name = (yyvsp[(3) - (3)].consmodule).name; break;
18981+ case TK_NAME: (yyval.consmodule).name = (yyvsp[0].consmodule).name; break;
18982 }
18983 }
18984+#line 4173 "sipgen/parser.c" /* yacc.c:1646 */
18985 break;
18986
18987 case 185:
18988-#line 1773 "sip-4.19.12/sipgen/metasrc/parser.y"
18989+#line 1773 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
18990 {
18991 (yyval.consmodule).token = TK_NAME;
18992
18993- (yyval.consmodule).name = (yyvsp[(3) - (3)].text);
18994+ (yyval.consmodule).name = (yyvsp[0].text);
18995 }
18996+#line 4183 "sipgen/parser.c" /* yacc.c:1646 */
18997 break;
18998
18999 case 186:
19000-#line 1780 "sip-4.19.12/sipgen/metasrc/parser.y"
19001+#line 1780 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19002 {
19003 (yyval.consmodule).token = 0;
19004 (yyval.consmodule).docstring = NULL;
19005 }
19006+#line 4192 "sipgen/parser.c" /* yacc.c:1646 */
19007 break;
19008
19009 case 187:
19010-#line 1784 "sip-4.19.12/sipgen/metasrc/parser.y"
19011+#line 1784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19012 {
19013- (yyval.consmodule) = (yyvsp[(2) - (4)].consmodule);
19014+ (yyval.consmodule) = (yyvsp[-2].consmodule);
19015 }
19016+#line 4200 "sipgen/parser.c" /* yacc.c:1646 */
19017 break;
19018
19019 case 189:
19020-#line 1790 "sip-4.19.12/sipgen/metasrc/parser.y"
19021+#line 1790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19022 {
19023- (yyval.consmodule) = (yyvsp[(1) - (2)].consmodule);
19024+ (yyval.consmodule) = (yyvsp[-1].consmodule);
19025
19026- switch ((yyvsp[(2) - (2)].consmodule).token)
19027+ switch ((yyvsp[0].consmodule).token)
19028 {
19029- case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[(2) - (2)].consmodule).docstring; break;
19030+ case TK_DOCSTRING: (yyval.consmodule).docstring = (yyvsp[0].consmodule).docstring; break;
19031 }
19032 }
19033+#line 4213 "sipgen/parser.c" /* yacc.c:1646 */
19034 break;
19035
19036 case 190:
19037-#line 1800 "sip-4.19.12/sipgen/metasrc/parser.y"
19038+#line 1800 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19039 {
19040 (yyval.consmodule).token = TK_IF;
19041 }
19042+#line 4221 "sipgen/parser.c" /* yacc.c:1646 */
19043 break;
19044
19045 case 191:
19046-#line 1803 "sip-4.19.12/sipgen/metasrc/parser.y"
19047+#line 1803 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19048 {
19049 (yyval.consmodule).token = TK_END;
19050 }
19051+#line 4229 "sipgen/parser.c" /* yacc.c:1646 */
19052 break;
19053
19054 case 192:
19055-#line 1806 "sip-4.19.12/sipgen/metasrc/parser.y"
19056+#line 1806 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19057 {
19058 if (notSkipping())
19059 {
19060 (yyval.consmodule).token = TK_DOCSTRING;
19061- (yyval.consmodule).docstring = (yyvsp[(1) - (1)].docstr);
19062+ (yyval.consmodule).docstring = (yyvsp[0].docstr);
19063 }
19064 else
19065 {
19066@@ -4466,10 +4242,11 @@
19067 (yyval.consmodule).docstring = NULL;
19068 }
19069 }
19070+#line 4246 "sipgen/parser.c" /* yacc.c:1646 */
19071 break;
19072
19073 case 193:
19074-#line 1820 "sip-4.19.12/sipgen/metasrc/parser.y"
19075+#line 1820 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19076 {
19077 if (notSkipping())
19078 {
19079@@ -4480,99 +4257,109 @@
19080 if (currentModule->fullname != NULL)
19081 yyerror("%CompositeModule must appear before any %Module directive");
19082
19083- setModuleName(currentSpec, currentModule, (yyvsp[(2) - (3)].compmodule).name);
19084- currentModule->docstring = (yyvsp[(3) - (3)].compmodule).docstring;
19085+ setModuleName(currentSpec, currentModule, (yyvsp[-1].compmodule).name);
19086+ currentModule->docstring = (yyvsp[0].compmodule).docstring;
19087
19088 setIsComposite(currentModule);
19089 }
19090 }
19091+#line 4267 "sipgen/parser.c" /* yacc.c:1646 */
19092 break;
19093
19094 case 194:
19095-#line 1838 "sip-4.19.12/sipgen/metasrc/parser.y"
19096+#line 1838 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19097 {
19098 resetLexerState();
19099
19100- (yyval.compmodule).name = (yyvsp[(1) - (1)].text);
19101+ (yyval.compmodule).name = (yyvsp[0].text);
19102 }
19103+#line 4277 "sipgen/parser.c" /* yacc.c:1646 */
19104 break;
19105
19106 case 195:
19107-#line 1843 "sip-4.19.12/sipgen/metasrc/parser.y"
19108+#line 1843 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19109 {
19110- (yyval.compmodule) = (yyvsp[(2) - (3)].compmodule);
19111+ (yyval.compmodule) = (yyvsp[-1].compmodule);
19112 }
19113+#line 4285 "sipgen/parser.c" /* yacc.c:1646 */
19114 break;
19115
19116 case 197:
19117-#line 1849 "sip-4.19.12/sipgen/metasrc/parser.y"
19118+#line 1849 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19119 {
19120- (yyval.compmodule) = (yyvsp[(1) - (3)].compmodule);
19121+ (yyval.compmodule) = (yyvsp[-2].compmodule);
19122
19123- switch ((yyvsp[(3) - (3)].compmodule).token)
19124+ switch ((yyvsp[0].compmodule).token)
19125 {
19126- case TK_NAME: (yyval.compmodule).name = (yyvsp[(3) - (3)].compmodule).name; break;
19127+ case TK_NAME: (yyval.compmodule).name = (yyvsp[0].compmodule).name; break;
19128 }
19129 }
19130+#line 4298 "sipgen/parser.c" /* yacc.c:1646 */
19131 break;
19132
19133 case 198:
19134-#line 1859 "sip-4.19.12/sipgen/metasrc/parser.y"
19135+#line 1859 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19136 {
19137 (yyval.compmodule).token = TK_NAME;
19138
19139- (yyval.compmodule).name = (yyvsp[(3) - (3)].text);
19140+ (yyval.compmodule).name = (yyvsp[0].text);
19141 }
19142+#line 4308 "sipgen/parser.c" /* yacc.c:1646 */
19143 break;
19144
19145 case 199:
19146-#line 1866 "sip-4.19.12/sipgen/metasrc/parser.y"
19147+#line 1866 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19148 {
19149 (yyval.compmodule).token = 0;
19150 (yyval.compmodule).docstring = NULL;
19151 }
19152+#line 4317 "sipgen/parser.c" /* yacc.c:1646 */
19153 break;
19154
19155 case 200:
19156-#line 1870 "sip-4.19.12/sipgen/metasrc/parser.y"
19157+#line 1870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19158 {
19159- (yyval.compmodule) = (yyvsp[(2) - (4)].compmodule);
19160+ (yyval.compmodule) = (yyvsp[-2].compmodule);
19161 }
19162+#line 4325 "sipgen/parser.c" /* yacc.c:1646 */
19163 break;
19164
19165 case 202:
19166-#line 1876 "sip-4.19.12/sipgen/metasrc/parser.y"
19167+#line 1876 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19168 {
19169- (yyval.compmodule) = (yyvsp[(1) - (2)].compmodule);
19170+ (yyval.compmodule) = (yyvsp[-1].compmodule);
19171
19172- switch ((yyvsp[(2) - (2)].compmodule).token)
19173+ switch ((yyvsp[0].compmodule).token)
19174 {
19175- case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[(2) - (2)].compmodule).docstring; break;
19176+ case TK_DOCSTRING: (yyval.compmodule).docstring = (yyvsp[0].compmodule).docstring; break;
19177 }
19178 }
19179+#line 4338 "sipgen/parser.c" /* yacc.c:1646 */
19180 break;
19181
19182 case 203:
19183-#line 1886 "sip-4.19.12/sipgen/metasrc/parser.y"
19184+#line 1886 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19185 {
19186 (yyval.compmodule).token = TK_IF;
19187 }
19188+#line 4346 "sipgen/parser.c" /* yacc.c:1646 */
19189 break;
19190
19191 case 204:
19192-#line 1889 "sip-4.19.12/sipgen/metasrc/parser.y"
19193+#line 1889 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19194 {
19195 (yyval.compmodule).token = TK_END;
19196 }
19197+#line 4354 "sipgen/parser.c" /* yacc.c:1646 */
19198 break;
19199
19200 case 205:
19201-#line 1892 "sip-4.19.12/sipgen/metasrc/parser.y"
19202+#line 1892 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19203 {
19204 if (notSkipping())
19205 {
19206 (yyval.compmodule).token = TK_DOCSTRING;
19207- (yyval.compmodule).docstring = (yyvsp[(1) - (1)].docstr);
19208+ (yyval.compmodule).docstring = (yyvsp[0].docstr);
19209 }
19210 else
19211 {
19212@@ -4580,90 +4367,97 @@
19213 (yyval.compmodule).docstring = NULL;
19214 }
19215 }
19216+#line 4371 "sipgen/parser.c" /* yacc.c:1646 */
19217 break;
19218
19219 case 206:
19220-#line 1906 "sip-4.19.12/sipgen/metasrc/parser.y"
19221+#line 1906 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19222 {
19223- if ((yyvsp[(2) - (3)].module).name == NULL)
19224+ if ((yyvsp[-1].module).name == NULL)
19225 yyerror("%Module must have a 'name' argument");
19226
19227 if (notSkipping())
19228 currentModule = configureModule(currentSpec, currentModule,
19229- currentContext.filename, (yyvsp[(2) - (3)].module).name, (yyvsp[(2) - (3)].module).c_module,
19230- (yyvsp[(2) - (3)].module).kwargs, (yyvsp[(2) - (3)].module).use_arg_names, (yyvsp[(2) - (3)].module).use_limited_api,
19231- (yyvsp[(2) - (3)].module).call_super_init, (yyvsp[(2) - (3)].module).all_raise_py_exc,
19232- (yyvsp[(2) - (3)].module).def_error_handler, (yyvsp[(3) - (3)].module).docstring);
19233+ currentContext.filename, (yyvsp[-1].module).name, (yyvsp[-1].module).c_module,
19234+ (yyvsp[-1].module).kwargs, (yyvsp[-1].module).use_arg_names, (yyvsp[-1].module).use_limited_api,
19235+ (yyvsp[-1].module).call_super_init, (yyvsp[-1].module).all_raise_py_exc,
19236+ (yyvsp[-1].module).def_error_handler, (yyvsp[0].module).docstring);
19237 }
19238+#line 4387 "sipgen/parser.c" /* yacc.c:1646 */
19239 break;
19240
19241 case 207:
19242-#line 1917 "sip-4.19.12/sipgen/metasrc/parser.y"
19243+#line 1917 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19244 {
19245 deprecated("%CModule is deprecated, use %Module and the 'language' argument instead");
19246
19247 if (notSkipping())
19248 currentModule = configureModule(currentSpec, currentModule,
19249- currentContext.filename, (yyvsp[(2) - (3)].text), TRUE, defaultKwArgs,
19250+ currentContext.filename, (yyvsp[-1].text), TRUE, defaultKwArgs,
19251 FALSE, FALSE, -1, FALSE, NULL, NULL);
19252 }
19253+#line 4400 "sipgen/parser.c" /* yacc.c:1646 */
19254 break;
19255
19256 case 208:
19257-#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
19258+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19259 {resetLexerState();}
19260+#line 4406 "sipgen/parser.c" /* yacc.c:1646 */
19261 break;
19262
19263 case 209:
19264-#line 1927 "sip-4.19.12/sipgen/metasrc/parser.y"
19265+#line 1927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19266 {
19267- if ((yyvsp[(3) - (3)].number) >= 0)
19268+ if ((yyvsp[0].number) >= 0)
19269 deprecated("%Module version number should be specified using the 'version' argument");
19270
19271 (yyval.module).c_module = FALSE;
19272 (yyval.module).kwargs = defaultKwArgs;
19273- (yyval.module).name = (yyvsp[(1) - (3)].text);
19274+ (yyval.module).name = (yyvsp[-2].text);
19275 (yyval.module).use_arg_names = FALSE;
19276 (yyval.module).use_limited_api = FALSE;
19277 (yyval.module).all_raise_py_exc = FALSE;
19278 (yyval.module).call_super_init = -1;
19279 (yyval.module).def_error_handler = NULL;
19280 }
19281+#line 4424 "sipgen/parser.c" /* yacc.c:1646 */
19282 break;
19283
19284 case 210:
19285-#line 1940 "sip-4.19.12/sipgen/metasrc/parser.y"
19286+#line 1940 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19287 {
19288- (yyval.module) = (yyvsp[(2) - (3)].module);
19289+ (yyval.module) = (yyvsp[-1].module);
19290 }
19291+#line 4432 "sipgen/parser.c" /* yacc.c:1646 */
19292 break;
19293
19294 case 212:
19295-#line 1946 "sip-4.19.12/sipgen/metasrc/parser.y"
19296+#line 1946 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19297 {
19298- (yyval.module) = (yyvsp[(1) - (3)].module);
19299+ (yyval.module) = (yyvsp[-2].module);
19300
19301- switch ((yyvsp[(3) - (3)].module).token)
19302+ switch ((yyvsp[0].module).token)
19303 {
19304- case TK_KWARGS: (yyval.module).kwargs = (yyvsp[(3) - (3)].module).kwargs; break;
19305- case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[(3) - (3)].module).c_module; break;
19306- case TK_NAME: (yyval.module).name = (yyvsp[(3) - (3)].module).name; break;
19307- case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[(3) - (3)].module).use_arg_names; break;
19308- case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[(3) - (3)].module).use_limited_api; break;
19309- case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].module).all_raise_py_exc; break;
19310- case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[(3) - (3)].module).call_super_init; break;
19311- case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[(3) - (3)].module).def_error_handler; break;
19312+ case TK_KWARGS: (yyval.module).kwargs = (yyvsp[0].module).kwargs; break;
19313+ case TK_LANGUAGE: (yyval.module).c_module = (yyvsp[0].module).c_module; break;
19314+ case TK_NAME: (yyval.module).name = (yyvsp[0].module).name; break;
19315+ case TK_USEARGNAMES: (yyval.module).use_arg_names = (yyvsp[0].module).use_arg_names; break;
19316+ case TK_USELIMITEDAPI: (yyval.module).use_limited_api = (yyvsp[0].module).use_limited_api; break;
19317+ case TK_ALLRAISEPYEXC: (yyval.module).all_raise_py_exc = (yyvsp[0].module).all_raise_py_exc; break;
19318+ case TK_CALLSUPERINIT: (yyval.module).call_super_init = (yyvsp[0].module).call_super_init; break;
19319+ case TK_DEFERRORHANDLER: (yyval.module).def_error_handler = (yyvsp[0].module).def_error_handler; break;
19320 }
19321 }
19322+#line 4452 "sipgen/parser.c" /* yacc.c:1646 */
19323 break;
19324
19325 case 213:
19326-#line 1963 "sip-4.19.12/sipgen/metasrc/parser.y"
19327+#line 1963 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19328 {
19329 (yyval.module).token = TK_KWARGS;
19330
19331 (yyval.module).c_module = FALSE;
19332- (yyval.module).kwargs = convertKwArgs((yyvsp[(3) - (3)].text));
19333+ (yyval.module).kwargs = convertKwArgs((yyvsp[0].text));
19334 (yyval.module).name = NULL;
19335 (yyval.module).use_arg_names = FALSE;
19336 (yyval.module).use_limited_api = FALSE;
19337@@ -4671,16 +4465,17 @@
19338 (yyval.module).call_super_init = -1;
19339 (yyval.module).def_error_handler = NULL;
19340 }
19341+#line 4469 "sipgen/parser.c" /* yacc.c:1646 */
19342 break;
19343
19344 case 214:
19345-#line 1975 "sip-4.19.12/sipgen/metasrc/parser.y"
19346+#line 1975 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19347 {
19348 (yyval.module).token = TK_LANGUAGE;
19349
19350- if (strcmp((yyvsp[(3) - (3)].text), "C++") == 0)
19351+ if (strcmp((yyvsp[0].text), "C++") == 0)
19352 (yyval.module).c_module = FALSE;
19353- else if (strcmp((yyvsp[(3) - (3)].text), "C") == 0)
19354+ else if (strcmp((yyvsp[0].text), "C") == 0)
19355 (yyval.module).c_module = TRUE;
19356 else
19357 yyerror("%Module 'language' argument must be either \"C++\" or \"C\"");
19358@@ -4693,42 +4488,45 @@
19359 (yyval.module).call_super_init = -1;
19360 (yyval.module).def_error_handler = NULL;
19361 }
19362+#line 4492 "sipgen/parser.c" /* yacc.c:1646 */
19363 break;
19364
19365 case 215:
19366-#line 1993 "sip-4.19.12/sipgen/metasrc/parser.y"
19367+#line 1993 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19368 {
19369 (yyval.module).token = TK_NAME;
19370
19371 (yyval.module).c_module = FALSE;
19372 (yyval.module).kwargs = defaultKwArgs;
19373- (yyval.module).name = (yyvsp[(3) - (3)].text);
19374+ (yyval.module).name = (yyvsp[0].text);
19375 (yyval.module).use_arg_names = FALSE;
19376 (yyval.module).use_limited_api = FALSE;
19377 (yyval.module).all_raise_py_exc = FALSE;
19378 (yyval.module).call_super_init = -1;
19379 (yyval.module).def_error_handler = NULL;
19380 }
19381+#line 4509 "sipgen/parser.c" /* yacc.c:1646 */
19382 break;
19383
19384 case 216:
19385-#line 2005 "sip-4.19.12/sipgen/metasrc/parser.y"
19386+#line 2005 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19387 {
19388 (yyval.module).token = TK_USEARGNAMES;
19389
19390 (yyval.module).c_module = FALSE;
19391 (yyval.module).kwargs = defaultKwArgs;
19392 (yyval.module).name = NULL;
19393- (yyval.module).use_arg_names = (yyvsp[(3) - (3)].boolean);
19394+ (yyval.module).use_arg_names = (yyvsp[0].boolean);
19395 (yyval.module).use_limited_api = FALSE;
19396 (yyval.module).all_raise_py_exc = FALSE;
19397 (yyval.module).call_super_init = -1;
19398 (yyval.module).def_error_handler = NULL;
19399 }
19400+#line 4526 "sipgen/parser.c" /* yacc.c:1646 */
19401 break;
19402
19403 case 217:
19404-#line 2017 "sip-4.19.12/sipgen/metasrc/parser.y"
19405+#line 2017 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19406 {
19407 (yyval.module).token = TK_USELIMITEDAPI;
19408
19409@@ -4736,15 +4534,16 @@
19410 (yyval.module).kwargs = defaultKwArgs;
19411 (yyval.module).name = NULL;
19412 (yyval.module).use_arg_names = FALSE;
19413- (yyval.module).use_limited_api = (yyvsp[(3) - (3)].boolean);
19414+ (yyval.module).use_limited_api = (yyvsp[0].boolean);
19415 (yyval.module).all_raise_py_exc = FALSE;
19416 (yyval.module).call_super_init = -1;
19417 (yyval.module).def_error_handler = NULL;
19418 }
19419+#line 4543 "sipgen/parser.c" /* yacc.c:1646 */
19420 break;
19421
19422 case 218:
19423-#line 2029 "sip-4.19.12/sipgen/metasrc/parser.y"
19424+#line 2029 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19425 {
19426 (yyval.module).token = TK_ALLRAISEPYEXC;
19427
19428@@ -4753,14 +4552,15 @@
19429 (yyval.module).name = NULL;
19430 (yyval.module).use_arg_names = FALSE;
19431 (yyval.module).use_limited_api = FALSE;
19432- (yyval.module).all_raise_py_exc = (yyvsp[(3) - (3)].boolean);
19433+ (yyval.module).all_raise_py_exc = (yyvsp[0].boolean);
19434 (yyval.module).call_super_init = -1;
19435 (yyval.module).def_error_handler = NULL;
19436 }
19437+#line 4560 "sipgen/parser.c" /* yacc.c:1646 */
19438 break;
19439
19440 case 219:
19441-#line 2041 "sip-4.19.12/sipgen/metasrc/parser.y"
19442+#line 2041 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19443 {
19444 (yyval.module).token = TK_CALLSUPERINIT;
19445
19446@@ -4770,13 +4570,14 @@
19447 (yyval.module).use_arg_names = FALSE;
19448 (yyval.module).use_limited_api = FALSE;
19449 (yyval.module).all_raise_py_exc = FALSE;
19450- (yyval.module).call_super_init = (yyvsp[(3) - (3)].boolean);
19451+ (yyval.module).call_super_init = (yyvsp[0].boolean);
19452 (yyval.module).def_error_handler = NULL;
19453 }
19454+#line 4577 "sipgen/parser.c" /* yacc.c:1646 */
19455 break;
19456
19457 case 220:
19458-#line 2053 "sip-4.19.12/sipgen/metasrc/parser.y"
19459+#line 2053 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19460 {
19461 (yyval.module).token = TK_DEFERRORHANDLER;
19462
19463@@ -4787,16 +4588,17 @@
19464 (yyval.module).use_limited_api = FALSE;
19465 (yyval.module).all_raise_py_exc = FALSE;
19466 (yyval.module).call_super_init = -1;
19467- (yyval.module).def_error_handler = (yyvsp[(3) - (3)].text);
19468+ (yyval.module).def_error_handler = (yyvsp[0].text);
19469 }
19470+#line 4594 "sipgen/parser.c" /* yacc.c:1646 */
19471 break;
19472
19473 case 221:
19474-#line 2065 "sip-4.19.12/sipgen/metasrc/parser.y"
19475+#line 2065 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19476 {
19477 deprecated("%Module version numbers are deprecated and ignored");
19478
19479- if ((yyvsp[(3) - (3)].number) < 0)
19480+ if ((yyvsp[0].number) < 0)
19481 yyerror("%Module 'version' argument cannot be negative");
19482
19483 (yyval.module).token = TK_VERSION;
19484@@ -4810,63 +4612,70 @@
19485 (yyval.module).call_super_init = -1;
19486 (yyval.module).def_error_handler = NULL;
19487 }
19488+#line 4616 "sipgen/parser.c" /* yacc.c:1646 */
19489 break;
19490
19491 case 222:
19492-#line 2084 "sip-4.19.12/sipgen/metasrc/parser.y"
19493+#line 2084 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19494 {
19495 (yyval.module).token = 0;
19496 (yyval.module).docstring = NULL;
19497 }
19498+#line 4625 "sipgen/parser.c" /* yacc.c:1646 */
19499 break;
19500
19501 case 223:
19502-#line 2088 "sip-4.19.12/sipgen/metasrc/parser.y"
19503+#line 2088 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19504 {
19505- (yyval.module) = (yyvsp[(2) - (4)].module);
19506+ (yyval.module) = (yyvsp[-2].module);
19507 }
19508+#line 4633 "sipgen/parser.c" /* yacc.c:1646 */
19509 break;
19510
19511 case 225:
19512-#line 2094 "sip-4.19.12/sipgen/metasrc/parser.y"
19513+#line 2094 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19514 {
19515- (yyval.module) = (yyvsp[(1) - (2)].module);
19516+ (yyval.module) = (yyvsp[-1].module);
19517
19518- switch ((yyvsp[(2) - (2)].module).token)
19519+ switch ((yyvsp[0].module).token)
19520 {
19521- case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[(2) - (2)].module).docstring; break;
19522+ case TK_DOCSTRING: (yyval.module).docstring = (yyvsp[0].module).docstring; break;
19523 }
19524 }
19525+#line 4646 "sipgen/parser.c" /* yacc.c:1646 */
19526 break;
19527
19528 case 226:
19529-#line 2104 "sip-4.19.12/sipgen/metasrc/parser.y"
19530+#line 2104 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19531 {
19532 (yyval.module).token = TK_IF;
19533 }
19534+#line 4654 "sipgen/parser.c" /* yacc.c:1646 */
19535 break;
19536
19537 case 227:
19538-#line 2107 "sip-4.19.12/sipgen/metasrc/parser.y"
19539+#line 2107 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19540 {
19541 (yyval.module).token = TK_END;
19542 }
19543+#line 4662 "sipgen/parser.c" /* yacc.c:1646 */
19544 break;
19545
19546 case 228:
19547-#line 2110 "sip-4.19.12/sipgen/metasrc/parser.y"
19548+#line 2110 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19549 {
19550 (yyval.module).token = TK_AUTOPYNAME;
19551 }
19552+#line 4670 "sipgen/parser.c" /* yacc.c:1646 */
19553 break;
19554
19555 case 229:
19556-#line 2113 "sip-4.19.12/sipgen/metasrc/parser.y"
19557+#line 2113 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19558 {
19559 if (notSkipping())
19560 {
19561 (yyval.module).token = TK_DOCSTRING;
19562- (yyval.module).docstring = (yyvsp[(1) - (1)].docstr);
19563+ (yyval.module).docstring = (yyvsp[0].docstr);
19564 }
19565 else
19566 {
19567@@ -4874,10 +4683,11 @@
19568 (yyval.module).docstring = NULL;
19569 }
19570 }
19571+#line 4687 "sipgen/parser.c" /* yacc.c:1646 */
19572 break;
19573
19574 case 231:
19575-#line 2128 "sip-4.19.12/sipgen/metasrc/parser.y"
19576+#line 2128 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19577 {
19578 /*
19579 * The grammar design is a bit broken and this is the easiest way
19580@@ -4886,435 +4696,487 @@
19581
19582 char *cp;
19583
19584- for (cp = (yyvsp[(1) - (1)].text); *cp != '\0'; ++cp)
19585+ for (cp = (yyvsp[0].text); *cp != '\0'; ++cp)
19586 if (*cp != '.' && *cp != '_' && !isalnum(*cp))
19587 yyerror("Invalid character in name");
19588
19589- (yyval.text) = (yyvsp[(1) - (1)].text);
19590+ (yyval.text) = (yyvsp[0].text);
19591 }
19592+#line 4706 "sipgen/parser.c" /* yacc.c:1646 */
19593 break;
19594
19595 case 232:
19596-#line 2144 "sip-4.19.12/sipgen/metasrc/parser.y"
19597+#line 2144 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19598 {
19599 (yyval.number) = -1;
19600 }
19601+#line 4714 "sipgen/parser.c" /* yacc.c:1646 */
19602 break;
19603
19604 case 234:
19605-#line 2150 "sip-4.19.12/sipgen/metasrc/parser.y"
19606+#line 2150 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19607 {
19608- if ((yyvsp[(2) - (2)].include).name == NULL)
19609+ if ((yyvsp[0].include).name == NULL)
19610 yyerror("%Include must have a 'name' argument");
19611
19612 if (notSkipping())
19613- parseFile(NULL, (yyvsp[(2) - (2)].include).name, NULL, (yyvsp[(2) - (2)].include).optional);
19614+ parseFile(NULL, (yyvsp[0].include).name, NULL, (yyvsp[0].include).optional);
19615 }
19616+#line 4726 "sipgen/parser.c" /* yacc.c:1646 */
19617 break;
19618
19619 case 235:
19620-#line 2159 "sip-4.19.12/sipgen/metasrc/parser.y"
19621+#line 2159 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19622 {
19623 resetLexerState();
19624
19625- (yyval.include).name = (yyvsp[(1) - (1)].text);
19626+ (yyval.include).name = (yyvsp[0].text);
19627 (yyval.include).optional = FALSE;
19628 }
19629+#line 4737 "sipgen/parser.c" /* yacc.c:1646 */
19630 break;
19631
19632 case 236:
19633-#line 2165 "sip-4.19.12/sipgen/metasrc/parser.y"
19634+#line 2165 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19635 {
19636- (yyval.include) = (yyvsp[(2) - (3)].include);
19637+ (yyval.include) = (yyvsp[-1].include);
19638 }
19639+#line 4745 "sipgen/parser.c" /* yacc.c:1646 */
19640 break;
19641
19642 case 238:
19643-#line 2171 "sip-4.19.12/sipgen/metasrc/parser.y"
19644+#line 2171 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19645 {
19646- (yyval.include) = (yyvsp[(1) - (3)].include);
19647+ (yyval.include) = (yyvsp[-2].include);
19648
19649- switch ((yyvsp[(3) - (3)].include).token)
19650+ switch ((yyvsp[0].include).token)
19651 {
19652- case TK_NAME: (yyval.include).name = (yyvsp[(3) - (3)].include).name; break;
19653- case TK_OPTIONAL: (yyval.include).optional = (yyvsp[(3) - (3)].include).optional; break;
19654+ case TK_NAME: (yyval.include).name = (yyvsp[0].include).name; break;
19655+ case TK_OPTIONAL: (yyval.include).optional = (yyvsp[0].include).optional; break;
19656 }
19657 }
19658+#line 4759 "sipgen/parser.c" /* yacc.c:1646 */
19659 break;
19660
19661 case 239:
19662-#line 2182 "sip-4.19.12/sipgen/metasrc/parser.y"
19663+#line 2182 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19664 {
19665 (yyval.include).token = TK_NAME;
19666
19667- (yyval.include).name = (yyvsp[(3) - (3)].text);
19668+ (yyval.include).name = (yyvsp[0].text);
19669 (yyval.include).optional = FALSE;
19670 }
19671+#line 4770 "sipgen/parser.c" /* yacc.c:1646 */
19672 break;
19673
19674 case 240:
19675-#line 2188 "sip-4.19.12/sipgen/metasrc/parser.y"
19676+#line 2188 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19677 {
19678 (yyval.include).token = TK_OPTIONAL;
19679
19680 (yyval.include).name = NULL;
19681- (yyval.include).optional = (yyvsp[(3) - (3)].boolean);
19682+ (yyval.include).optional = (yyvsp[0].boolean);
19683 }
19684+#line 4781 "sipgen/parser.c" /* yacc.c:1646 */
19685 break;
19686
19687 case 241:
19688-#line 2196 "sip-4.19.12/sipgen/metasrc/parser.y"
19689+#line 2196 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19690 {
19691 deprecated("%OptionalInclude is deprecated, use %Include and the 'optional' argument instead");
19692
19693 if (notSkipping())
19694- parseFile(NULL, (yyvsp[(2) - (2)].text), NULL, TRUE);
19695+ parseFile(NULL, (yyvsp[0].text), NULL, TRUE);
19696 }
19697+#line 4792 "sipgen/parser.c" /* yacc.c:1646 */
19698 break;
19699
19700 case 242:
19701-#line 2204 "sip-4.19.12/sipgen/metasrc/parser.y"
19702+#line 2204 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19703 {
19704 if (notSkipping())
19705- newImport((yyvsp[(2) - (2)].import).name);
19706+ newImport((yyvsp[0].import).name);
19707 }
19708+#line 4801 "sipgen/parser.c" /* yacc.c:1646 */
19709 break;
19710
19711 case 243:
19712-#line 2210 "sip-4.19.12/sipgen/metasrc/parser.y"
19713+#line 2210 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19714 {
19715 resetLexerState();
19716
19717- (yyval.import).name = (yyvsp[(1) - (1)].text);
19718+ (yyval.import).name = (yyvsp[0].text);
19719 }
19720+#line 4811 "sipgen/parser.c" /* yacc.c:1646 */
19721 break;
19722
19723 case 244:
19724-#line 2215 "sip-4.19.12/sipgen/metasrc/parser.y"
19725+#line 2215 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19726 {
19727- (yyval.import) = (yyvsp[(2) - (3)].import);
19728+ (yyval.import) = (yyvsp[-1].import);
19729 }
19730+#line 4819 "sipgen/parser.c" /* yacc.c:1646 */
19731 break;
19732
19733 case 246:
19734-#line 2221 "sip-4.19.12/sipgen/metasrc/parser.y"
19735+#line 2221 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19736 {
19737- (yyval.import) = (yyvsp[(1) - (3)].import);
19738+ (yyval.import) = (yyvsp[-2].import);
19739
19740- switch ((yyvsp[(3) - (3)].import).token)
19741+ switch ((yyvsp[0].import).token)
19742 {
19743- case TK_NAME: (yyval.import).name = (yyvsp[(3) - (3)].import).name; break;
19744+ case TK_NAME: (yyval.import).name = (yyvsp[0].import).name; break;
19745 }
19746 }
19747+#line 4832 "sipgen/parser.c" /* yacc.c:1646 */
19748 break;
19749
19750 case 247:
19751-#line 2231 "sip-4.19.12/sipgen/metasrc/parser.y"
19752+#line 2231 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19753 {
19754 (yyval.import).token = TK_NAME;
19755
19756- (yyval.import).name = (yyvsp[(3) - (3)].text);
19757+ (yyval.import).name = (yyvsp[0].text);
19758 }
19759+#line 4842 "sipgen/parser.c" /* yacc.c:1646 */
19760 break;
19761
19762 case 248:
19763-#line 2238 "sip-4.19.12/sipgen/metasrc/parser.y"
19764+#line 2238 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19765 {
19766 (yyval.codeb) = NULL;
19767 }
19768+#line 4850 "sipgen/parser.c" /* yacc.c:1646 */
19769 break;
19770
19771 case 249:
19772-#line 2241 "sip-4.19.12/sipgen/metasrc/parser.y"
19773+#line 2241 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19774 {
19775- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19776+ (yyval.codeb) = (yyvsp[0].codeb);
19777 }
19778+#line 4858 "sipgen/parser.c" /* yacc.c:1646 */
19779 break;
19780
19781 case 250:
19782-#line 2246 "sip-4.19.12/sipgen/metasrc/parser.y"
19783+#line 2246 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19784 {
19785 (yyval.codeb) = NULL;
19786 }
19787+#line 4866 "sipgen/parser.c" /* yacc.c:1646 */
19788 break;
19789
19790 case 251:
19791-#line 2249 "sip-4.19.12/sipgen/metasrc/parser.y"
19792+#line 2249 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19793 {
19794- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19795+ (yyval.codeb) = (yyvsp[0].codeb);
19796 }
19797+#line 4874 "sipgen/parser.c" /* yacc.c:1646 */
19798 break;
19799
19800 case 252:
19801-#line 2254 "sip-4.19.12/sipgen/metasrc/parser.y"
19802+#line 2254 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19803 {
19804 (yyval.codeb) = NULL;
19805 }
19806+#line 4882 "sipgen/parser.c" /* yacc.c:1646 */
19807 break;
19808
19809 case 253:
19810-#line 2257 "sip-4.19.12/sipgen/metasrc/parser.y"
19811+#line 2257 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19812 {
19813- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19814+ (yyval.codeb) = (yyvsp[0].codeb);
19815 }
19816+#line 4890 "sipgen/parser.c" /* yacc.c:1646 */
19817 break;
19818
19819 case 254:
19820-#line 2262 "sip-4.19.12/sipgen/metasrc/parser.y"
19821+#line 2262 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19822 {
19823 if (notSkipping())
19824- appendCodeBlock(&currentModule->copying, (yyvsp[(2) - (2)].codeb));
19825+ appendCodeBlock(&currentModule->copying, (yyvsp[0].codeb));
19826 }
19827+#line 4899 "sipgen/parser.c" /* yacc.c:1646 */
19828 break;
19829
19830 case 255:
19831-#line 2268 "sip-4.19.12/sipgen/metasrc/parser.y"
19832+#line 2268 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19833 {
19834 if (notSkipping())
19835- appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[(2) - (2)].codeb));
19836+ appendCodeBlock(&currentSpec->exphdrcode, (yyvsp[0].codeb));
19837 }
19838+#line 4908 "sipgen/parser.c" /* yacc.c:1646 */
19839 break;
19840
19841 case 256:
19842-#line 2274 "sip-4.19.12/sipgen/metasrc/parser.y"
19843+#line 2274 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19844 {
19845 if (notSkipping())
19846- appendCodeBlock(&currentModule->hdrcode, (yyvsp[(2) - (2)].codeb));
19847+ appendCodeBlock(&currentModule->hdrcode, (yyvsp[0].codeb));
19848 }
19849+#line 4917 "sipgen/parser.c" /* yacc.c:1646 */
19850 break;
19851
19852 case 257:
19853-#line 2280 "sip-4.19.12/sipgen/metasrc/parser.y"
19854+#line 2280 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19855 {
19856- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19857+ (yyval.codeb) = (yyvsp[0].codeb);
19858 }
19859+#line 4925 "sipgen/parser.c" /* yacc.c:1646 */
19860 break;
19861
19862 case 258:
19863-#line 2285 "sip-4.19.12/sipgen/metasrc/parser.y"
19864+#line 2285 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19865 {
19866- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19867+ (yyval.codeb) = (yyvsp[0].codeb);
19868 }
19869+#line 4933 "sipgen/parser.c" /* yacc.c:1646 */
19870 break;
19871
19872 case 259:
19873-#line 2290 "sip-4.19.12/sipgen/metasrc/parser.y"
19874+#line 2290 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19875 {
19876- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19877+ (yyval.codeb) = (yyvsp[0].codeb);
19878 }
19879+#line 4941 "sipgen/parser.c" /* yacc.c:1646 */
19880 break;
19881
19882 case 260:
19883-#line 2295 "sip-4.19.12/sipgen/metasrc/parser.y"
19884+#line 2295 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19885 {
19886- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19887+ (yyval.codeb) = (yyvsp[0].codeb);
19888 }
19889+#line 4949 "sipgen/parser.c" /* yacc.c:1646 */
19890 break;
19891
19892 case 261:
19893-#line 2300 "sip-4.19.12/sipgen/metasrc/parser.y"
19894+#line 2300 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19895 {
19896- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19897+ (yyval.codeb) = (yyvsp[0].codeb);
19898 }
19899+#line 4957 "sipgen/parser.c" /* yacc.c:1646 */
19900 break;
19901
19902 case 262:
19903-#line 2305 "sip-4.19.12/sipgen/metasrc/parser.y"
19904+#line 2305 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19905 {
19906- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19907+ (yyval.codeb) = (yyvsp[0].codeb);
19908 }
19909+#line 4965 "sipgen/parser.c" /* yacc.c:1646 */
19910 break;
19911
19912 case 263:
19913-#line 2310 "sip-4.19.12/sipgen/metasrc/parser.y"
19914+#line 2310 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19915 {
19916- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19917+ (yyval.codeb) = (yyvsp[0].codeb);
19918 }
19919+#line 4973 "sipgen/parser.c" /* yacc.c:1646 */
19920 break;
19921
19922 case 264:
19923-#line 2315 "sip-4.19.12/sipgen/metasrc/parser.y"
19924+#line 2315 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19925 {
19926- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19927+ (yyval.codeb) = (yyvsp[0].codeb);
19928 }
19929+#line 4981 "sipgen/parser.c" /* yacc.c:1646 */
19930 break;
19931
19932 case 265:
19933-#line 2320 "sip-4.19.12/sipgen/metasrc/parser.y"
19934+#line 2320 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19935 {
19936- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19937+ (yyval.codeb) = (yyvsp[0].codeb);
19938 }
19939+#line 4989 "sipgen/parser.c" /* yacc.c:1646 */
19940 break;
19941
19942 case 266:
19943-#line 2325 "sip-4.19.12/sipgen/metasrc/parser.y"
19944+#line 2325 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19945 {
19946- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19947+ (yyval.codeb) = (yyvsp[0].codeb);
19948 }
19949+#line 4997 "sipgen/parser.c" /* yacc.c:1646 */
19950 break;
19951
19952 case 267:
19953-#line 2330 "sip-4.19.12/sipgen/metasrc/parser.y"
19954+#line 2330 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19955 {
19956- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19957+ (yyval.codeb) = (yyvsp[0].codeb);
19958 }
19959+#line 5005 "sipgen/parser.c" /* yacc.c:1646 */
19960 break;
19961
19962 case 268:
19963-#line 2335 "sip-4.19.12/sipgen/metasrc/parser.y"
19964+#line 2335 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19965 {
19966- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19967+ (yyval.codeb) = (yyvsp[0].codeb);
19968 }
19969+#line 5013 "sipgen/parser.c" /* yacc.c:1646 */
19970 break;
19971
19972 case 269:
19973-#line 2340 "sip-4.19.12/sipgen/metasrc/parser.y"
19974+#line 2340 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19975 {
19976 if (notSkipping())
19977- appendCodeBlock(&currentModule->cppcode, (yyvsp[(2) - (2)].codeb));
19978+ appendCodeBlock(&currentModule->cppcode, (yyvsp[0].codeb));
19979 }
19980+#line 5022 "sipgen/parser.c" /* yacc.c:1646 */
19981 break;
19982
19983 case 270:
19984-#line 2346 "sip-4.19.12/sipgen/metasrc/parser.y"
19985+#line 2346 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19986 {
19987- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
19988+ (yyval.codeb) = (yyvsp[0].codeb);
19989 }
19990+#line 5030 "sipgen/parser.c" /* yacc.c:1646 */
19991 break;
19992
19993 case 271:
19994-#line 2351 "sip-4.19.12/sipgen/metasrc/parser.y"
19995+#line 2351 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
19996 {
19997 if (notSkipping())
19998- appendCodeBlock(&currentModule->preinitcode, (yyvsp[(2) - (2)].codeb));
19999+ appendCodeBlock(&currentModule->preinitcode, (yyvsp[0].codeb));
20000 }
20001+#line 5039 "sipgen/parser.c" /* yacc.c:1646 */
20002 break;
20003
20004 case 272:
20005-#line 2357 "sip-4.19.12/sipgen/metasrc/parser.y"
20006+#line 2357 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20007 {
20008 if (notSkipping())
20009- appendCodeBlock(&currentModule->initcode, (yyvsp[(2) - (2)].codeb));
20010+ appendCodeBlock(&currentModule->initcode, (yyvsp[0].codeb));
20011 }
20012+#line 5048 "sipgen/parser.c" /* yacc.c:1646 */
20013 break;
20014
20015 case 273:
20016-#line 2363 "sip-4.19.12/sipgen/metasrc/parser.y"
20017+#line 2363 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20018 {
20019 if (notSkipping())
20020- appendCodeBlock(&currentModule->postinitcode, (yyvsp[(2) - (2)].codeb));
20021+ appendCodeBlock(&currentModule->postinitcode, (yyvsp[0].codeb));
20022 }
20023+#line 5057 "sipgen/parser.c" /* yacc.c:1646 */
20024 break;
20025
20026 case 274:
20027-#line 2369 "sip-4.19.12/sipgen/metasrc/parser.y"
20028+#line 2369 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20029 {
20030 if (notSkipping())
20031- appendCodeBlock(&currentModule->unitcode, (yyvsp[(2) - (2)].codeb));
20032+ appendCodeBlock(&currentModule->unitcode, (yyvsp[0].codeb));
20033 }
20034+#line 5066 "sipgen/parser.c" /* yacc.c:1646 */
20035 break;
20036
20037 case 275:
20038-#line 2375 "sip-4.19.12/sipgen/metasrc/parser.y"
20039+#line 2375 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20040 {
20041 if (notSkipping())
20042- appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[(2) - (2)].codeb));
20043+ appendCodeBlock(&currentModule->unitpostinccode, (yyvsp[0].codeb));
20044 }
20045+#line 5075 "sipgen/parser.c" /* yacc.c:1646 */
20046 break;
20047
20048 case 276:
20049-#line 2381 "sip-4.19.12/sipgen/metasrc/parser.y"
20050+#line 2381 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20051 {
20052 /* Deprecated. */
20053 }
20054+#line 5083 "sipgen/parser.c" /* yacc.c:1646 */
20055 break;
20056
20057 case 277:
20058-#line 2386 "sip-4.19.12/sipgen/metasrc/parser.y"
20059+#line 2386 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20060 {
20061 if (notSkipping() && !inMainModule())
20062- appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[(2) - (2)].codeb));
20063+ appendCodeBlock(&currentSpec->exptypehintcode, (yyvsp[0].codeb));
20064 }
20065+#line 5092 "sipgen/parser.c" /* yacc.c:1646 */
20066 break;
20067
20068 case 278:
20069-#line 2392 "sip-4.19.12/sipgen/metasrc/parser.y"
20070+#line 2392 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20071 {
20072 if (notSkipping())
20073- appendCodeBlock(&currentModule->typehintcode, (yyvsp[(2) - (2)].codeb));
20074+ appendCodeBlock(&currentModule->typehintcode, (yyvsp[0].codeb));
20075 }
20076+#line 5101 "sipgen/parser.c" /* yacc.c:1646 */
20077 break;
20078
20079 case 279:
20080-#line 2398 "sip-4.19.12/sipgen/metasrc/parser.y"
20081+#line 2398 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20082 {
20083- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
20084+ (yyval.codeb) = (yyvsp[0].codeb);
20085 }
20086+#line 5109 "sipgen/parser.c" /* yacc.c:1646 */
20087 break;
20088
20089 case 280:
20090-#line 2403 "sip-4.19.12/sipgen/metasrc/parser.y"
20091+#line 2403 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20092 {
20093 if (notSkipping() && inMainModule())
20094- appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
20095+ appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
20096 }
20097+#line 5118 "sipgen/parser.c" /* yacc.c:1646 */
20098 break;
20099
20100 case 281:
20101-#line 2409 "sip-4.19.12/sipgen/metasrc/parser.y"
20102+#line 2409 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20103 {
20104 if (notSkipping())
20105- appendCodeBlock(&currentSpec->docs, (yyvsp[(2) - (2)].codeb));
20106+ appendCodeBlock(&currentSpec->docs, (yyvsp[0].codeb));
20107 }
20108+#line 5127 "sipgen/parser.c" /* yacc.c:1646 */
20109 break;
20110
20111 case 282:
20112-#line 2415 "sip-4.19.12/sipgen/metasrc/parser.y"
20113+#line 2415 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20114 {
20115 if (notSkipping())
20116- addAutoPyName(currentModule, (yyvsp[(2) - (2)].autopyname).remove_leading);
20117+ addAutoPyName(currentModule, (yyvsp[0].autopyname).remove_leading);
20118 }
20119+#line 5136 "sipgen/parser.c" /* yacc.c:1646 */
20120 break;
20121
20122 case 283:
20123-#line 2421 "sip-4.19.12/sipgen/metasrc/parser.y"
20124+#line 2421 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20125 {
20126- (yyval.autopyname) = (yyvsp[(2) - (3)].autopyname);
20127+ (yyval.autopyname) = (yyvsp[-1].autopyname);
20128 }
20129+#line 5144 "sipgen/parser.c" /* yacc.c:1646 */
20130 break;
20131
20132 case 285:
20133-#line 2427 "sip-4.19.12/sipgen/metasrc/parser.y"
20134+#line 2427 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20135 {
20136- (yyval.autopyname) = (yyvsp[(1) - (3)].autopyname);
20137+ (yyval.autopyname) = (yyvsp[-2].autopyname);
20138
20139- switch ((yyvsp[(3) - (3)].autopyname).token)
20140+ switch ((yyvsp[0].autopyname).token)
20141 {
20142- case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].autopyname).remove_leading; break;
20143+ case TK_REMOVELEADING: (yyval.autopyname).remove_leading = (yyvsp[0].autopyname).remove_leading; break;
20144 }
20145 }
20146+#line 5157 "sipgen/parser.c" /* yacc.c:1646 */
20147 break;
20148
20149 case 286:
20150-#line 2437 "sip-4.19.12/sipgen/metasrc/parser.y"
20151+#line 2437 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20152 {
20153 (yyval.autopyname).token = TK_REMOVELEADING;
20154
20155- (yyval.autopyname).remove_leading = (yyvsp[(3) - (3)].text);
20156+ (yyval.autopyname).remove_leading = (yyvsp[0].text);
20157 }
20158+#line 5167 "sipgen/parser.c" /* yacc.c:1646 */
20159 break;
20160
20161 case 287:
20162-#line 2444 "sip-4.19.12/sipgen/metasrc/parser.y"
20163+#line 2444 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20164 {
20165 (yyval.docstr) = sipMalloc(sizeof(docstringDef));
20166
20167- (yyval.docstr)->signature = (yyvsp[(2) - (3)].docstring).signature;
20168- (yyval.docstr)->text = (yyvsp[(3) - (3)].codeb)->frag;
20169- free((yyvsp[(3) - (3)].codeb));
20170+ (yyval.docstr)->signature = (yyvsp[-1].docstring).signature;
20171+ (yyval.docstr)->text = (yyvsp[0].codeb)->frag;
20172+ free((yyvsp[0].codeb));
20173
20174 /* Format the docstring. */
20175- if ((yyvsp[(2) - (3)].docstring).format == deindented)
20176+ if ((yyvsp[-1].docstring).format == deindented)
20177 {
20178 const char *cp;
20179 char *dp;
20180@@ -5388,158 +5250,174 @@
20181 *dp = '\0';
20182 }
20183 }
20184+#line 5254 "sipgen/parser.c" /* yacc.c:1646 */
20185 break;
20186
20187 case 288:
20188-#line 2528 "sip-4.19.12/sipgen/metasrc/parser.y"
20189+#line 2528 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20190 {
20191 (yyval.docstring).format = currentModule->defdocstringfmt;
20192 (yyval.docstring).signature = currentModule->defdocstringsig;
20193 }
20194+#line 5263 "sipgen/parser.c" /* yacc.c:1646 */
20195 break;
20196
20197 case 289:
20198-#line 2532 "sip-4.19.12/sipgen/metasrc/parser.y"
20199+#line 2532 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20200 {
20201 resetLexerState();
20202
20203- (yyval.docstring).format = convertFormat((yyvsp[(1) - (1)].text));
20204+ (yyval.docstring).format = convertFormat((yyvsp[0].text));
20205 (yyval.docstring).signature = currentModule->defdocstringsig;
20206 }
20207+#line 5274 "sipgen/parser.c" /* yacc.c:1646 */
20208 break;
20209
20210 case 290:
20211-#line 2538 "sip-4.19.12/sipgen/metasrc/parser.y"
20212+#line 2538 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20213 {
20214- (yyval.docstring) = (yyvsp[(2) - (3)].docstring);
20215+ (yyval.docstring) = (yyvsp[-1].docstring);
20216 }
20217+#line 5282 "sipgen/parser.c" /* yacc.c:1646 */
20218 break;
20219
20220 case 292:
20221-#line 2544 "sip-4.19.12/sipgen/metasrc/parser.y"
20222+#line 2544 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20223 {
20224- (yyval.docstring) = (yyvsp[(1) - (3)].docstring);
20225+ (yyval.docstring) = (yyvsp[-2].docstring);
20226
20227- switch ((yyvsp[(3) - (3)].docstring).token)
20228+ switch ((yyvsp[0].docstring).token)
20229 {
20230- case TK_FORMAT: (yyval.docstring).format = (yyvsp[(3) - (3)].docstring).format; break;
20231- case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[(3) - (3)].docstring).signature; break;
20232+ case TK_FORMAT: (yyval.docstring).format = (yyvsp[0].docstring).format; break;
20233+ case TK_SIGNATURE: (yyval.docstring).signature = (yyvsp[0].docstring).signature; break;
20234 }
20235 }
20236+#line 5296 "sipgen/parser.c" /* yacc.c:1646 */
20237 break;
20238
20239 case 293:
20240-#line 2555 "sip-4.19.12/sipgen/metasrc/parser.y"
20241+#line 2555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20242 {
20243 (yyval.docstring).token = TK_FORMAT;
20244
20245- (yyval.docstring).format = convertFormat((yyvsp[(3) - (3)].text));
20246+ (yyval.docstring).format = convertFormat((yyvsp[0].text));
20247 (yyval.docstring).signature = currentModule->defdocstringsig;
20248 }
20249+#line 5307 "sipgen/parser.c" /* yacc.c:1646 */
20250 break;
20251
20252 case 294:
20253-#line 2561 "sip-4.19.12/sipgen/metasrc/parser.y"
20254+#line 2561 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20255 {
20256 (yyval.docstring).token = TK_SIGNATURE;
20257
20258 (yyval.docstring).format = currentModule->defdocstringfmt;
20259- (yyval.docstring).signature = convertSignature((yyvsp[(3) - (3)].text));
20260+ (yyval.docstring).signature = convertSignature((yyvsp[0].text));
20261 }
20262+#line 5318 "sipgen/parser.c" /* yacc.c:1646 */
20263 break;
20264
20265 case 295:
20266-#line 2569 "sip-4.19.12/sipgen/metasrc/parser.y"
20267+#line 2569 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20268 {
20269 (yyval.docstr) = NULL;
20270 }
20271+#line 5326 "sipgen/parser.c" /* yacc.c:1646 */
20272 break;
20273
20274 case 297:
20275-#line 2575 "sip-4.19.12/sipgen/metasrc/parser.y"
20276+#line 2575 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20277 {
20278- if ((yyvsp[(2) - (3)].extract).id == NULL)
20279+ if ((yyvsp[-1].extract).id == NULL)
20280 yyerror("%Extract must have an 'id' argument");
20281
20282 if (notSkipping())
20283- addExtractPart(currentSpec, (yyvsp[(2) - (3)].extract).id, (yyvsp[(2) - (3)].extract).order, (yyvsp[(3) - (3)].codeb));
20284+ addExtractPart(currentSpec, (yyvsp[-1].extract).id, (yyvsp[-1].extract).order, (yyvsp[0].codeb));
20285 }
20286+#line 5338 "sipgen/parser.c" /* yacc.c:1646 */
20287 break;
20288
20289 case 298:
20290-#line 2584 "sip-4.19.12/sipgen/metasrc/parser.y"
20291+#line 2584 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20292 {
20293 resetLexerState();
20294
20295- (yyval.extract).id = (yyvsp[(1) - (1)].text);
20296+ (yyval.extract).id = (yyvsp[0].text);
20297 (yyval.extract).order = -1;
20298 }
20299+#line 5349 "sipgen/parser.c" /* yacc.c:1646 */
20300 break;
20301
20302 case 299:
20303-#line 2590 "sip-4.19.12/sipgen/metasrc/parser.y"
20304+#line 2590 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20305 {
20306- (yyval.extract) = (yyvsp[(2) - (3)].extract);
20307+ (yyval.extract) = (yyvsp[-1].extract);
20308 }
20309+#line 5357 "sipgen/parser.c" /* yacc.c:1646 */
20310 break;
20311
20312 case 301:
20313-#line 2596 "sip-4.19.12/sipgen/metasrc/parser.y"
20314+#line 2596 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20315 {
20316- (yyval.extract) = (yyvsp[(1) - (3)].extract);
20317+ (yyval.extract) = (yyvsp[-2].extract);
20318
20319- switch ((yyvsp[(3) - (3)].extract).token)
20320+ switch ((yyvsp[0].extract).token)
20321 {
20322- case TK_ID: (yyval.extract).id = (yyvsp[(3) - (3)].extract).id; break;
20323- case TK_ORDER: (yyval.extract).order = (yyvsp[(3) - (3)].extract).order; break;
20324+ case TK_ID: (yyval.extract).id = (yyvsp[0].extract).id; break;
20325+ case TK_ORDER: (yyval.extract).order = (yyvsp[0].extract).order; break;
20326 }
20327 }
20328+#line 5371 "sipgen/parser.c" /* yacc.c:1646 */
20329 break;
20330
20331 case 302:
20332-#line 2607 "sip-4.19.12/sipgen/metasrc/parser.y"
20333+#line 2607 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20334 {
20335 (yyval.extract).token = TK_ID;
20336
20337- (yyval.extract).id = (yyvsp[(3) - (3)].text);
20338+ (yyval.extract).id = (yyvsp[0].text);
20339 (yyval.extract).order = -1;
20340 }
20341+#line 5382 "sipgen/parser.c" /* yacc.c:1646 */
20342 break;
20343
20344 case 303:
20345-#line 2613 "sip-4.19.12/sipgen/metasrc/parser.y"
20346+#line 2613 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20347 {
20348 (yyval.extract).token = TK_ORDER;
20349
20350- if ((yyvsp[(3) - (3)].number) < 0)
20351+ if ((yyvsp[0].number) < 0)
20352 yyerror("The 'order' of an %Extract directive must not be negative");
20353
20354 (yyval.extract).id = NULL;
20355- (yyval.extract).order = (yyvsp[(3) - (3)].number);
20356+ (yyval.extract).order = (yyvsp[0].number);
20357 }
20358+#line 5396 "sipgen/parser.c" /* yacc.c:1646 */
20359 break;
20360
20361 case 304:
20362-#line 2624 "sip-4.19.12/sipgen/metasrc/parser.y"
20363+#line 2624 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20364 {
20365 /* Deprecated. */
20366 }
20367+#line 5404 "sipgen/parser.c" /* yacc.c:1646 */
20368 break;
20369
20370 case 307:
20371-#line 2633 "sip-4.19.12/sipgen/metasrc/parser.y"
20372+#line 2633 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20373 {
20374- (yyval.codeb) = (yyvsp[(1) - (2)].codeb);
20375+ (yyval.codeb) = (yyvsp[-1].codeb);
20376
20377- append(&(yyval.codeb)->frag, (yyvsp[(2) - (2)].codeb)->frag);
20378+ append(&(yyval.codeb)->frag, (yyvsp[0].codeb)->frag);
20379
20380- free((yyvsp[(2) - (2)].codeb)->frag);
20381- free((yyvsp[(2) - (2)].codeb));
20382+ free((yyvsp[0].codeb)->frag);
20383+ free((yyvsp[0].codeb));
20384 }
20385+#line 5417 "sipgen/parser.c" /* yacc.c:1646 */
20386 break;
20387
20388 case 308:
20389-#line 2643 "sip-4.19.12/sipgen/metasrc/parser.y"
20390+#line 2643 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20391 {
20392 if (notSkipping())
20393 {
20394@@ -5550,71 +5428,79 @@
20395 NULL
20396 };
20397
20398- checkAnnos(&(yyvsp[(4) - (4)].optflags), annos);
20399+ checkAnnos(&(yyvsp[0].optflags), annos);
20400
20401 if (sectionFlags != 0 && (sectionFlags & ~(SECT_IS_PUBLIC | SECT_IS_PROT)) != 0)
20402 yyerror("Class enums must be in the public or protected sections");
20403
20404- if (currentSpec->genc && (yyvsp[(2) - (4)].boolean))
20405+ if (currentSpec->genc && (yyvsp[-2].boolean))
20406 yyerror("Scoped enums not allowed in a C module");
20407
20408 currentEnum = newEnum(currentSpec, currentModule,
20409- currentMappedType, (yyvsp[(3) - (4)].text), &(yyvsp[(4) - (4)].optflags), sectionFlags, (yyvsp[(2) - (4)].boolean));
20410+ currentMappedType, (yyvsp[-1].text), &(yyvsp[0].optflags), sectionFlags, (yyvsp[-2].boolean));
20411 }
20412 }
20413+#line 5444 "sipgen/parser.c" /* yacc.c:1646 */
20414 break;
20415
20416 case 310:
20417-#line 2667 "sip-4.19.12/sipgen/metasrc/parser.y"
20418+#line 2667 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20419 {
20420 (yyval.boolean) = FALSE;
20421 }
20422+#line 5452 "sipgen/parser.c" /* yacc.c:1646 */
20423 break;
20424
20425 case 311:
20426-#line 2670 "sip-4.19.12/sipgen/metasrc/parser.y"
20427+#line 2670 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20428 {
20429 (yyval.boolean) = TRUE;
20430 }
20431+#line 5460 "sipgen/parser.c" /* yacc.c:1646 */
20432 break;
20433
20434 case 312:
20435-#line 2673 "sip-4.19.12/sipgen/metasrc/parser.y"
20436+#line 2673 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20437 {
20438 (yyval.boolean) = TRUE;
20439 }
20440+#line 5468 "sipgen/parser.c" /* yacc.c:1646 */
20441 break;
20442
20443 case 313:
20444-#line 2678 "sip-4.19.12/sipgen/metasrc/parser.y"
20445+#line 2678 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20446 {
20447 (yyval.text) = NULL;
20448 }
20449+#line 5476 "sipgen/parser.c" /* yacc.c:1646 */
20450 break;
20451
20452 case 314:
20453-#line 2681 "sip-4.19.12/sipgen/metasrc/parser.y"
20454+#line 2681 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20455 {
20456- (yyval.text) = (yyvsp[(1) - (1)].text);
20457+ (yyval.text) = (yyvsp[0].text);
20458 }
20459+#line 5484 "sipgen/parser.c" /* yacc.c:1646 */
20460 break;
20461
20462 case 315:
20463-#line 2686 "sip-4.19.12/sipgen/metasrc/parser.y"
20464+#line 2686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20465 {
20466 (yyval.text) = NULL;
20467 }
20468+#line 5492 "sipgen/parser.c" /* yacc.c:1646 */
20469 break;
20470
20471 case 316:
20472-#line 2689 "sip-4.19.12/sipgen/metasrc/parser.y"
20473+#line 2689 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20474 {
20475- (yyval.text) = (yyvsp[(1) - (1)].text);
20476+ (yyval.text) = (yyvsp[0].text);
20477 }
20478+#line 5500 "sipgen/parser.c" /* yacc.c:1646 */
20479 break;
20480
20481 case 323:
20482-#line 2704 "sip-4.19.12/sipgen/metasrc/parser.y"
20483+#line 2704 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20484 {
20485 if (notSkipping())
20486 {
20487@@ -5626,15 +5512,15 @@
20488
20489 enumMemberDef *emd, **tail;
20490
20491- checkAnnos(&(yyvsp[(3) - (4)].optflags), annos);
20492+ checkAnnos(&(yyvsp[-1].optflags), annos);
20493
20494 /* Note that we don't use the assigned value. */
20495 emd = sipMalloc(sizeof (enumMemberDef));
20496
20497 emd->pyname = cacheName(currentSpec,
20498- getPythonName(currentModule, &(yyvsp[(3) - (4)].optflags), (yyvsp[(1) - (4)].text)));
20499- emd->cname = (yyvsp[(1) - (4)].text);
20500- emd->no_typehint = getNoTypeHint(&(yyvsp[(3) - (4)].optflags));
20501+ getPythonName(currentModule, &(yyvsp[-1].optflags), (yyvsp[-3].text)));
20502+ emd->cname = (yyvsp[-3].text);
20503+ emd->no_typehint = getNoTypeHint(&(yyvsp[-1].optflags));
20504 emd->ed = currentEnum;
20505 emd->platforms = currentPlatforms;
20506 emd->next = NULL;
20507@@ -5652,207 +5538,232 @@
20508 setIsUsedName(emd->pyname);
20509 }
20510 }
20511+#line 5542 "sipgen/parser.c" /* yacc.c:1646 */
20512 break;
20513
20514 case 328:
20515-#line 2751 "sip-4.19.12/sipgen/metasrc/parser.y"
20516+#line 2751 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20517 {
20518 (yyval.valp) = NULL;
20519 }
20520+#line 5550 "sipgen/parser.c" /* yacc.c:1646 */
20521 break;
20522
20523 case 329:
20524-#line 2754 "sip-4.19.12/sipgen/metasrc/parser.y"
20525+#line 2754 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20526 {
20527- (yyval.valp) = (yyvsp[(2) - (2)].valp);
20528+ (yyval.valp) = (yyvsp[0].valp);
20529 }
20530+#line 5558 "sipgen/parser.c" /* yacc.c:1646 */
20531 break;
20532
20533 case 331:
20534-#line 2760 "sip-4.19.12/sipgen/metasrc/parser.y"
20535+#line 2760 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20536 {
20537 valueDef *vd;
20538
20539- if ((yyvsp[(1) - (3)].valp) -> vtype == string_value || (yyvsp[(3) - (3)].valp) -> vtype == string_value)
20540+ if ((yyvsp[-2].valp) -> vtype == string_value || (yyvsp[0].valp) -> vtype == string_value)
20541 yyerror("Invalid binary operator for string");
20542
20543 /* Find the last value in the existing expression. */
20544
20545- for (vd = (yyvsp[(1) - (3)].valp); vd -> next != NULL; vd = vd -> next)
20546+ for (vd = (yyvsp[-2].valp); vd -> next != NULL; vd = vd -> next)
20547 ;
20548
20549- vd -> vbinop = (yyvsp[(2) - (3)].qchar);
20550- vd -> next = (yyvsp[(3) - (3)].valp);
20551+ vd -> vbinop = (yyvsp[-1].qchar);
20552+ vd -> next = (yyvsp[0].valp);
20553
20554- (yyval.valp) = (yyvsp[(1) - (3)].valp);
20555+ (yyval.valp) = (yyvsp[-2].valp);
20556 }
20557+#line 5579 "sipgen/parser.c" /* yacc.c:1646 */
20558 break;
20559
20560 case 332:
20561-#line 2778 "sip-4.19.12/sipgen/metasrc/parser.y"
20562+#line 2778 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20563 {
20564 (yyval.qchar) = '-';
20565 }
20566+#line 5587 "sipgen/parser.c" /* yacc.c:1646 */
20567 break;
20568
20569 case 333:
20570-#line 2781 "sip-4.19.12/sipgen/metasrc/parser.y"
20571+#line 2781 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20572 {
20573 (yyval.qchar) = '+';
20574 }
20575+#line 5595 "sipgen/parser.c" /* yacc.c:1646 */
20576 break;
20577
20578 case 334:
20579-#line 2784 "sip-4.19.12/sipgen/metasrc/parser.y"
20580+#line 2784 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20581 {
20582 (yyval.qchar) = '*';
20583 }
20584+#line 5603 "sipgen/parser.c" /* yacc.c:1646 */
20585 break;
20586
20587 case 335:
20588-#line 2787 "sip-4.19.12/sipgen/metasrc/parser.y"
20589+#line 2787 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20590 {
20591 (yyval.qchar) = '/';
20592 }
20593+#line 5611 "sipgen/parser.c" /* yacc.c:1646 */
20594 break;
20595
20596 case 336:
20597-#line 2790 "sip-4.19.12/sipgen/metasrc/parser.y"
20598+#line 2790 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20599 {
20600 (yyval.qchar) = '&';
20601 }
20602+#line 5619 "sipgen/parser.c" /* yacc.c:1646 */
20603 break;
20604
20605 case 337:
20606-#line 2793 "sip-4.19.12/sipgen/metasrc/parser.y"
20607+#line 2793 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20608 {
20609 (yyval.qchar) = '|';
20610 }
20611+#line 5627 "sipgen/parser.c" /* yacc.c:1646 */
20612 break;
20613
20614 case 338:
20615-#line 2798 "sip-4.19.12/sipgen/metasrc/parser.y"
20616+#line 2798 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20617 {
20618 (yyval.qchar) = '\0';
20619 }
20620+#line 5635 "sipgen/parser.c" /* yacc.c:1646 */
20621 break;
20622
20623 case 339:
20624-#line 2801 "sip-4.19.12/sipgen/metasrc/parser.y"
20625+#line 2801 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20626 {
20627 (yyval.qchar) = '!';
20628 }
20629+#line 5643 "sipgen/parser.c" /* yacc.c:1646 */
20630 break;
20631
20632 case 340:
20633-#line 2804 "sip-4.19.12/sipgen/metasrc/parser.y"
20634+#line 2804 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20635 {
20636 (yyval.qchar) = '~';
20637 }
20638+#line 5651 "sipgen/parser.c" /* yacc.c:1646 */
20639 break;
20640
20641 case 341:
20642-#line 2807 "sip-4.19.12/sipgen/metasrc/parser.y"
20643+#line 2807 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20644 {
20645 (yyval.qchar) = '-';
20646 }
20647+#line 5659 "sipgen/parser.c" /* yacc.c:1646 */
20648 break;
20649
20650 case 342:
20651-#line 2810 "sip-4.19.12/sipgen/metasrc/parser.y"
20652+#line 2810 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20653 {
20654 (yyval.qchar) = '+';
20655 }
20656+#line 5667 "sipgen/parser.c" /* yacc.c:1646 */
20657 break;
20658
20659 case 343:
20660-#line 2813 "sip-4.19.12/sipgen/metasrc/parser.y"
20661+#line 2813 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20662 {
20663 (yyval.qchar) = '*';
20664 }
20665+#line 5675 "sipgen/parser.c" /* yacc.c:1646 */
20666 break;
20667
20668 case 344:
20669-#line 2816 "sip-4.19.12/sipgen/metasrc/parser.y"
20670+#line 2816 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20671 {
20672 (yyval.qchar) = '&';
20673 }
20674+#line 5683 "sipgen/parser.c" /* yacc.c:1646 */
20675 break;
20676
20677 case 345:
20678-#line 2821 "sip-4.19.12/sipgen/metasrc/parser.y"
20679+#line 2821 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20680 {
20681- if ((yyvsp[(2) - (3)].qchar) != '\0' && (yyvsp[(3) - (3)].value).vtype == string_value)
20682+ if ((yyvsp[-1].qchar) != '\0' && (yyvsp[0].value).vtype == string_value)
20683 yyerror("Invalid unary operator for string");
20684
20685 /* Convert the value to a simple expression on the heap. */
20686 (yyval.valp) = sipMalloc(sizeof (valueDef));
20687
20688- *(yyval.valp) = (yyvsp[(3) - (3)].value);
20689- (yyval.valp)->vunop = (yyvsp[(2) - (3)].qchar);
20690+ *(yyval.valp) = (yyvsp[0].value);
20691+ (yyval.valp)->vunop = (yyvsp[-1].qchar);
20692 (yyval.valp)->vbinop = '\0';
20693- (yyval.valp)->cast = (yyvsp[(1) - (3)].scpvalp);
20694+ (yyval.valp)->cast = (yyvsp[-2].scpvalp);
20695 (yyval.valp)->next = NULL;
20696 }
20697+#line 5701 "sipgen/parser.c" /* yacc.c:1646 */
20698 break;
20699
20700 case 346:
20701-#line 2836 "sip-4.19.12/sipgen/metasrc/parser.y"
20702+#line 2836 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20703 {
20704 (yyval.scpvalp) = NULL;
20705 }
20706+#line 5709 "sipgen/parser.c" /* yacc.c:1646 */
20707 break;
20708
20709 case 347:
20710-#line 2839 "sip-4.19.12/sipgen/metasrc/parser.y"
20711+#line 2839 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20712 {
20713- (yyval.scpvalp) = (yyvsp[(2) - (3)].scpvalp);
20714+ (yyval.scpvalp) = (yyvsp[-1].scpvalp);
20715 }
20716+#line 5717 "sipgen/parser.c" /* yacc.c:1646 */
20717 break;
20718
20719 case 348:
20720-#line 2844 "sip-4.19.12/sipgen/metasrc/parser.y"
20721+#line 2844 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20722 {
20723 if (currentSpec->genc)
20724 yyerror("Scoped names are not allowed in a C module");
20725
20726- (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[(2) - (2)].scpvalp));
20727+ (yyval.scpvalp) = scopeScopedName(NULL, (yyvsp[0].scpvalp));
20728 }
20729+#line 5728 "sipgen/parser.c" /* yacc.c:1646 */
20730 break;
20731
20732 case 351:
20733-#line 2854 "sip-4.19.12/sipgen/metasrc/parser.y"
20734+#line 2854 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20735 {
20736 if (currentSpec->genc)
20737 yyerror("Scoped names are not allowed in a C module");
20738
20739- appendScopedName(&(yyvsp[(1) - (3)].scpvalp), (yyvsp[(3) - (3)].scpvalp));
20740+ appendScopedName(&(yyvsp[-2].scpvalp), (yyvsp[0].scpvalp));
20741 }
20742+#line 5739 "sipgen/parser.c" /* yacc.c:1646 */
20743 break;
20744
20745 case 352:
20746-#line 2862 "sip-4.19.12/sipgen/metasrc/parser.y"
20747+#line 2862 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20748 {
20749- (yyval.scpvalp) = text2scopePart((yyvsp[(1) - (1)].text));
20750+ (yyval.scpvalp) = text2scopePart((yyvsp[0].text));
20751 }
20752+#line 5747 "sipgen/parser.c" /* yacc.c:1646 */
20753 break;
20754
20755 case 353:
20756-#line 2867 "sip-4.19.12/sipgen/metasrc/parser.y"
20757+#line 2867 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20758 {
20759 (yyval.boolean) = TRUE;
20760 }
20761+#line 5755 "sipgen/parser.c" /* yacc.c:1646 */
20762 break;
20763
20764 case 354:
20765-#line 2870 "sip-4.19.12/sipgen/metasrc/parser.y"
20766+#line 2870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20767 {
20768 (yyval.boolean) = FALSE;
20769 }
20770+#line 5763 "sipgen/parser.c" /* yacc.c:1646 */
20771 break;
20772
20773 case 355:
20774-#line 2875 "sip-4.19.12/sipgen/metasrc/parser.y"
20775+#line 2875 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20776 {
20777 /*
20778 * We let the C++ compiler decide if the value is a valid one - no
20779@@ -5860,93 +5771,103 @@
20780 */
20781
20782 (yyval.value).vtype = scoped_value;
20783- (yyval.value).u.vscp = (yyvsp[(1) - (1)].scpvalp);
20784+ (yyval.value).u.vscp = (yyvsp[0].scpvalp);
20785 }
20786+#line 5777 "sipgen/parser.c" /* yacc.c:1646 */
20787 break;
20788
20789 case 356:
20790-#line 2884 "sip-4.19.12/sipgen/metasrc/parser.y"
20791+#line 2884 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20792 {
20793 fcallDef *fcd;
20794
20795 fcd = sipMalloc(sizeof (fcallDef));
20796- *fcd = (yyvsp[(3) - (4)].fcall);
20797- fcd -> type = (yyvsp[(1) - (4)].memArg);
20798+ *fcd = (yyvsp[-1].fcall);
20799+ fcd -> type = (yyvsp[-3].memArg);
20800
20801 (yyval.value).vtype = fcall_value;
20802 (yyval.value).u.fcd = fcd;
20803 }
20804+#line 5792 "sipgen/parser.c" /* yacc.c:1646 */
20805 break;
20806
20807 case 357:
20808-#line 2894 "sip-4.19.12/sipgen/metasrc/parser.y"
20809+#line 2894 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20810 {
20811 (yyval.value).vtype = real_value;
20812- (yyval.value).u.vreal = (yyvsp[(1) - (1)].real);
20813+ (yyval.value).u.vreal = (yyvsp[0].real);
20814 }
20815+#line 5801 "sipgen/parser.c" /* yacc.c:1646 */
20816 break;
20817
20818 case 358:
20819-#line 2898 "sip-4.19.12/sipgen/metasrc/parser.y"
20820+#line 2898 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20821 {
20822 (yyval.value).vtype = numeric_value;
20823- (yyval.value).u.vnum = (yyvsp[(1) - (1)].number);
20824+ (yyval.value).u.vnum = (yyvsp[0].number);
20825 }
20826+#line 5810 "sipgen/parser.c" /* yacc.c:1646 */
20827 break;
20828
20829 case 359:
20830-#line 2902 "sip-4.19.12/sipgen/metasrc/parser.y"
20831+#line 2902 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20832 {
20833 (yyval.value).vtype = numeric_value;
20834- (yyval.value).u.vnum = (yyvsp[(1) - (1)].boolean);
20835+ (yyval.value).u.vnum = (yyvsp[0].boolean);
20836 }
20837+#line 5819 "sipgen/parser.c" /* yacc.c:1646 */
20838 break;
20839
20840 case 360:
20841-#line 2906 "sip-4.19.12/sipgen/metasrc/parser.y"
20842+#line 2906 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20843 {
20844 (yyval.value).vtype = numeric_value;
20845 (yyval.value).u.vnum = 0;
20846 }
20847+#line 5828 "sipgen/parser.c" /* yacc.c:1646 */
20848 break;
20849
20850 case 361:
20851-#line 2910 "sip-4.19.12/sipgen/metasrc/parser.y"
20852+#line 2910 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20853 {
20854 (yyval.value).vtype = string_value;
20855- (yyval.value).u.vstr = (yyvsp[(1) - (1)].text);
20856+ (yyval.value).u.vstr = (yyvsp[0].text);
20857 }
20858+#line 5837 "sipgen/parser.c" /* yacc.c:1646 */
20859 break;
20860
20861 case 362:
20862-#line 2914 "sip-4.19.12/sipgen/metasrc/parser.y"
20863+#line 2914 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20864 {
20865 (yyval.value).vtype = qchar_value;
20866- (yyval.value).u.vqchar = (yyvsp[(1) - (1)].qchar);
20867+ (yyval.value).u.vqchar = (yyvsp[0].qchar);
20868 }
20869+#line 5846 "sipgen/parser.c" /* yacc.c:1646 */
20870 break;
20871
20872 case 363:
20873-#line 2920 "sip-4.19.12/sipgen/metasrc/parser.y"
20874+#line 2920 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20875 {
20876 /* No values. */
20877
20878 (yyval.fcall).nrArgs = 0;
20879 }
20880+#line 5856 "sipgen/parser.c" /* yacc.c:1646 */
20881 break;
20882
20883 case 364:
20884-#line 2925 "sip-4.19.12/sipgen/metasrc/parser.y"
20885+#line 2925 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20886 {
20887 /* The single or first expression. */
20888
20889- (yyval.fcall).args[0] = (yyvsp[(1) - (1)].valp);
20890+ (yyval.fcall).args[0] = (yyvsp[0].valp);
20891 (yyval.fcall).nrArgs = 1;
20892 }
20893+#line 5867 "sipgen/parser.c" /* yacc.c:1646 */
20894 break;
20895
20896 case 365:
20897-#line 2931 "sip-4.19.12/sipgen/metasrc/parser.y"
20898+#line 2931 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20899 {
20900 /* Check that it wasn't ...(,expression...). */
20901
20902@@ -5955,18 +5876,19 @@
20903
20904 /* Check there is room. */
20905
20906- if ((yyvsp[(1) - (3)].fcall).nrArgs == MAX_NR_ARGS)
20907+ if ((yyvsp[-2].fcall).nrArgs == MAX_NR_ARGS)
20908 yyerror("Internal error - increase the value of MAX_NR_ARGS");
20909
20910- (yyval.fcall) = (yyvsp[(1) - (3)].fcall);
20911+ (yyval.fcall) = (yyvsp[-2].fcall);
20912
20913- (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[(3) - (3)].valp);
20914+ (yyval.fcall).args[(yyval.fcall).nrArgs] = (yyvsp[0].valp);
20915 (yyval.fcall).nrArgs++;
20916 }
20917+#line 5888 "sipgen/parser.c" /* yacc.c:1646 */
20918 break;
20919
20920 case 366:
20921-#line 2949 "sip-4.19.12/sipgen/metasrc/parser.y"
20922+#line 2949 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20923 {
20924 if (notSkipping())
20925 {
20926@@ -5983,16 +5905,17 @@
20927 NULL
20928 };
20929
20930- checkAnnos(&(yyvsp[(4) - (6)].optflags), annos);
20931+ checkAnnos(&(yyvsp[-2].optflags), annos);
20932
20933- applyTypeFlags(currentModule, &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags));
20934- newTypedef(currentSpec, currentModule, (yyvsp[(3) - (6)].text), &(yyvsp[(2) - (6)].memArg), &(yyvsp[(4) - (6)].optflags), (yyvsp[(6) - (6)].docstr));
20935+ applyTypeFlags(currentModule, &(yyvsp[-4].memArg), &(yyvsp[-2].optflags));
20936+ newTypedef(currentSpec, currentModule, (yyvsp[-3].text), &(yyvsp[-4].memArg), &(yyvsp[-2].optflags), (yyvsp[0].docstr));
20937 }
20938 }
20939+#line 5915 "sipgen/parser.c" /* yacc.c:1646 */
20940 break;
20941
20942 case 367:
20943-#line 2971 "sip-4.19.12/sipgen/metasrc/parser.y"
20944+#line 2971 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20945 {
20946 if (notSkipping())
20947 {
20948@@ -6011,40 +5934,42 @@
20949 signatureDef *sig;
20950 argDef ftype;
20951
20952- checkAnnos(&(yyvsp[(10) - (12)].optflags), annos);
20953+ checkAnnos(&(yyvsp[-2].optflags), annos);
20954
20955- applyTypeFlags(currentModule, &(yyvsp[(2) - (12)].memArg), &(yyvsp[(10) - (12)].optflags));
20956+ applyTypeFlags(currentModule, &(yyvsp[-10].memArg), &(yyvsp[-2].optflags));
20957
20958 memset(&ftype, 0, sizeof (argDef));
20959
20960 /* Create the full signature on the heap. */
20961 sig = sipMalloc(sizeof (signatureDef));
20962- *sig = (yyvsp[(8) - (12)].signature);
20963- sig->result = (yyvsp[(2) - (12)].memArg);
20964+ *sig = (yyvsp[-4].signature);
20965+ sig->result = (yyvsp[-10].memArg);
20966
20967 /* Create the full type. */
20968 ftype.atype = function_type;
20969 ftype.nrderefs = 1;
20970 ftype.u.sa = sig;
20971
20972- newTypedef(currentSpec, currentModule, (yyvsp[(5) - (12)].text), &ftype, &(yyvsp[(10) - (12)].optflags), (yyvsp[(12) - (12)].docstr));
20973+ newTypedef(currentSpec, currentModule, (yyvsp[-7].text), &ftype, &(yyvsp[-2].optflags), (yyvsp[0].docstr));
20974 }
20975 }
20976+#line 5957 "sipgen/parser.c" /* yacc.c:1646 */
20977 break;
20978
20979 case 368:
20980-#line 3010 "sip-4.19.12/sipgen/metasrc/parser.y"
20981+#line 3010 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20982 {
20983- if (currentSpec -> genc && (yyvsp[(2) - (2)].scpvalp)->next != NULL)
20984+ if (currentSpec -> genc && (yyvsp[0].scpvalp)->next != NULL)
20985 yyerror("Namespaces not allowed in a C module");
20986
20987 if (notSkipping())
20988 currentSupers = NULL;
20989 }
20990+#line 5969 "sipgen/parser.c" /* yacc.c:1646 */
20991 break;
20992
20993 case 369:
20994-#line 3016 "sip-4.19.12/sipgen/metasrc/parser.y"
20995+#line 3016 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
20996 {
20997 if (notSkipping())
20998 {
20999@@ -6074,32 +5999,35 @@
21000 NULL
21001 };
21002
21003- checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
21004+ checkAnnos(&(yyvsp[0].optflags), annos);
21005
21006 if (currentSpec->genc && currentSupers != NULL)
21007 yyerror("Super-classes not allowed in a C module struct");
21008
21009- defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
21010+ defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
21011 sectionFlags = SECT_IS_PUBLIC;
21012 }
21013 }
21014+#line 6012 "sipgen/parser.c" /* yacc.c:1646 */
21015 break;
21016
21017 case 370:
21018-#line 3053 "sip-4.19.12/sipgen/metasrc/parser.y"
21019+#line 3053 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21020 {
21021 if (notSkipping())
21022- completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
21023+ completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
21024 }
21025+#line 6021 "sipgen/parser.c" /* yacc.c:1646 */
21026 break;
21027
21028 case 371:
21029-#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
21030+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21031 {currentIsTemplate = TRUE;}
21032+#line 6027 "sipgen/parser.c" /* yacc.c:1646 */
21033 break;
21034
21035 case 372:
21036-#line 3059 "sip-4.19.12/sipgen/metasrc/parser.y"
21037+#line 3059 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21038 {
21039 if (currentSpec->genc)
21040 yyerror("Class templates not allowed in a C module");
21041@@ -6111,12 +6039,12 @@
21042 /*
21043 * Make sure there is room for the extra class name argument.
21044 */
21045- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
21046+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
21047 yyerror("Internal error - increase the value of MAX_NR_ARGS");
21048
21049 tcd = sipMalloc(sizeof (classTmplDef));
21050- tcd->sig = (yyvsp[(1) - (3)].signature);
21051- tcd->cd = (yyvsp[(3) - (3)].klass);
21052+ tcd->sig = (yyvsp[-2].signature);
21053+ tcd->cd = (yyvsp[0].klass);
21054 tcd->next = currentSpec->classtemplates;
21055
21056 currentSpec->classtemplates = tcd;
21057@@ -6124,17 +6052,19 @@
21058
21059 currentIsTemplate = FALSE;
21060 }
21061+#line 6056 "sipgen/parser.c" /* yacc.c:1646 */
21062 break;
21063
21064 case 373:
21065-#line 3085 "sip-4.19.12/sipgen/metasrc/parser.y"
21066+#line 3085 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21067 {
21068- (yyval.signature) = (yyvsp[(3) - (4)].signature);
21069+ (yyval.signature) = (yyvsp[-1].signature);
21070 }
21071+#line 6064 "sipgen/parser.c" /* yacc.c:1646 */
21072 break;
21073
21074 case 374:
21075-#line 3090 "sip-4.19.12/sipgen/metasrc/parser.y"
21076+#line 3090 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21077 {
21078 if (currentSpec->genc)
21079 yyerror("Class definition not allowed in a C module");
21080@@ -6142,10 +6072,11 @@
21081 if (notSkipping())
21082 currentSupers = NULL;
21083 }
21084+#line 6076 "sipgen/parser.c" /* yacc.c:1646 */
21085 break;
21086
21087 case 375:
21088-#line 3096 "sip-4.19.12/sipgen/metasrc/parser.y"
21089+#line 3096 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21090 {
21091 if (notSkipping())
21092 {
21093@@ -6174,30 +6105,32 @@
21094 NULL
21095 };
21096
21097- checkAnnos(&(yyvsp[(5) - (5)].optflags), annos);
21098+ checkAnnos(&(yyvsp[0].optflags), annos);
21099
21100- defineClass((yyvsp[(2) - (5)].scpvalp), currentSupers, &(yyvsp[(5) - (5)].optflags));
21101+ defineClass((yyvsp[-3].scpvalp), currentSupers, &(yyvsp[0].optflags));
21102 sectionFlags = SECT_IS_PRIVATE;
21103 }
21104 }
21105+#line 6115 "sipgen/parser.c" /* yacc.c:1646 */
21106 break;
21107
21108 case 376:
21109-#line 3129 "sip-4.19.12/sipgen/metasrc/parser.y"
21110+#line 3129 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21111 {
21112 if (notSkipping())
21113- (yyval.klass) = completeClass((yyvsp[(2) - (8)].scpvalp), &(yyvsp[(5) - (8)].optflags), (yyvsp[(7) - (8)].boolean));
21114+ (yyval.klass) = completeClass((yyvsp[-6].scpvalp), &(yyvsp[-3].optflags), (yyvsp[-1].boolean));
21115 }
21116+#line 6124 "sipgen/parser.c" /* yacc.c:1646 */
21117 break;
21118
21119 case 381:
21120-#line 3143 "sip-4.19.12/sipgen/metasrc/parser.y"
21121+#line 3143 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21122 {
21123- if (notSkipping() && (yyvsp[(1) - (2)].token) == TK_PUBLIC)
21124+ if (notSkipping() && (yyvsp[-1].token) == TK_PUBLIC)
21125 {
21126 argDef ad;
21127 classDef *super;
21128- scopedNameDef *snd = (yyvsp[(2) - (2)].scpvalp);
21129+ scopedNameDef *snd = (yyvsp[0].scpvalp);
21130
21131 /*
21132 * This is a hack to allow typedef'ed classes to be used before
21133@@ -6242,52 +6175,59 @@
21134 appendToClassList(&currentSupers, super);
21135 }
21136 }
21137+#line 6179 "sipgen/parser.c" /* yacc.c:1646 */
21138 break;
21139
21140 case 382:
21141-#line 3195 "sip-4.19.12/sipgen/metasrc/parser.y"
21142+#line 3195 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21143 {
21144 (yyval.token) = TK_PUBLIC;
21145 }
21146+#line 6187 "sipgen/parser.c" /* yacc.c:1646 */
21147 break;
21148
21149 case 383:
21150-#line 3198 "sip-4.19.12/sipgen/metasrc/parser.y"
21151+#line 3198 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21152 {
21153 (yyval.token) = TK_PUBLIC;
21154 }
21155+#line 6195 "sipgen/parser.c" /* yacc.c:1646 */
21156 break;
21157
21158 case 384:
21159-#line 3201 "sip-4.19.12/sipgen/metasrc/parser.y"
21160+#line 3201 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21161 {
21162 (yyval.token) = TK_PROTECTED;
21163 }
21164+#line 6203 "sipgen/parser.c" /* yacc.c:1646 */
21165 break;
21166
21167 case 385:
21168-#line 3204 "sip-4.19.12/sipgen/metasrc/parser.y"
21169+#line 3204 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21170 {
21171 (yyval.token) = TK_PRIVATE;
21172 }
21173+#line 6211 "sipgen/parser.c" /* yacc.c:1646 */
21174 break;
21175
21176 case 386:
21177-#line 3209 "sip-4.19.12/sipgen/metasrc/parser.y"
21178+#line 3209 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21179 {
21180 (yyval.boolean) = FALSE;
21181 }
21182+#line 6219 "sipgen/parser.c" /* yacc.c:1646 */
21183 break;
21184
21185 case 387:
21186-#line 3212 "sip-4.19.12/sipgen/metasrc/parser.y"
21187+#line 3212 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21188 {
21189 (yyval.boolean) = TRUE;
21190 }
21191+#line 6227 "sipgen/parser.c" /* yacc.c:1646 */
21192 break;
21193
21194 case 401:
21195-#line 3232 "sip-4.19.12/sipgen/metasrc/parser.y"
21196+#line 3232 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21197 {
21198 if (notSkipping())
21199 {
21200@@ -6296,29 +6236,32 @@
21201 if (scope->docstring != NULL)
21202 yyerror("%Docstring already given for class");
21203
21204- scope->docstring = (yyvsp[(1) - (1)].docstr);
21205+ scope->docstring = (yyvsp[0].docstr);
21206 }
21207 }
21208+#line 6243 "sipgen/parser.c" /* yacc.c:1646 */
21209 break;
21210
21211 case 402:
21212-#line 3243 "sip-4.19.12/sipgen/metasrc/parser.y"
21213+#line 3243 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21214 {
21215 if (notSkipping())
21216- appendCodeBlock(&currentScope()->cppcode, (yyvsp[(1) - (1)].codeb));
21217+ appendCodeBlock(&currentScope()->cppcode, (yyvsp[0].codeb));
21218 }
21219+#line 6252 "sipgen/parser.c" /* yacc.c:1646 */
21220 break;
21221
21222 case 403:
21223-#line 3247 "sip-4.19.12/sipgen/metasrc/parser.y"
21224+#line 3247 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21225 {
21226 if (notSkipping())
21227- appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[(1) - (1)].codeb));
21228+ appendCodeBlock(&currentScope()->iff->hdrcode, (yyvsp[0].codeb));
21229 }
21230+#line 6261 "sipgen/parser.c" /* yacc.c:1646 */
21231 break;
21232
21233 case 404:
21234-#line 3251 "sip-4.19.12/sipgen/metasrc/parser.y"
21235+#line 3251 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21236 {
21237 if (notSkipping())
21238 {
21239@@ -6327,13 +6270,14 @@
21240 if (scope->travcode != NULL)
21241 yyerror("%GCTraverseCode already given for class");
21242
21243- appendCodeBlock(&scope->travcode, (yyvsp[(1) - (1)].codeb));
21244+ appendCodeBlock(&scope->travcode, (yyvsp[0].codeb));
21245 }
21246 }
21247+#line 6277 "sipgen/parser.c" /* yacc.c:1646 */
21248 break;
21249
21250 case 405:
21251-#line 3262 "sip-4.19.12/sipgen/metasrc/parser.y"
21252+#line 3262 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21253 {
21254 if (notSkipping())
21255 {
21256@@ -6342,13 +6286,14 @@
21257 if (scope->clearcode != NULL)
21258 yyerror("%GCClearCode already given for class");
21259
21260- appendCodeBlock(&scope->clearcode, (yyvsp[(1) - (1)].codeb));
21261+ appendCodeBlock(&scope->clearcode, (yyvsp[0].codeb));
21262 }
21263 }
21264+#line 6293 "sipgen/parser.c" /* yacc.c:1646 */
21265 break;
21266
21267 case 406:
21268-#line 3273 "sip-4.19.12/sipgen/metasrc/parser.y"
21269+#line 3273 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21270 {
21271 if (notSkipping())
21272 {
21273@@ -6357,13 +6302,14 @@
21274 if (scope->getbufcode != NULL)
21275 yyerror("%BIGetBufferCode already given for class");
21276
21277- appendCodeBlock(&scope->getbufcode, (yyvsp[(1) - (1)].codeb));
21278+ appendCodeBlock(&scope->getbufcode, (yyvsp[0].codeb));
21279 }
21280 }
21281+#line 6309 "sipgen/parser.c" /* yacc.c:1646 */
21282 break;
21283
21284 case 407:
21285-#line 3284 "sip-4.19.12/sipgen/metasrc/parser.y"
21286+#line 3284 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21287 {
21288 if (notSkipping())
21289 {
21290@@ -6372,13 +6318,14 @@
21291 if (scope->releasebufcode != NULL)
21292 yyerror("%BIReleaseBufferCode already given for class");
21293
21294- appendCodeBlock(&scope->releasebufcode, (yyvsp[(1) - (1)].codeb));
21295+ appendCodeBlock(&scope->releasebufcode, (yyvsp[0].codeb));
21296 }
21297 }
21298+#line 6325 "sipgen/parser.c" /* yacc.c:1646 */
21299 break;
21300
21301 case 408:
21302-#line 3295 "sip-4.19.12/sipgen/metasrc/parser.y"
21303+#line 3295 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21304 {
21305 if (notSkipping())
21306 {
21307@@ -6387,13 +6334,14 @@
21308 if (scope->readbufcode != NULL)
21309 yyerror("%BIGetReadBufferCode already given for class");
21310
21311- appendCodeBlock(&scope->readbufcode, (yyvsp[(1) - (1)].codeb));
21312+ appendCodeBlock(&scope->readbufcode, (yyvsp[0].codeb));
21313 }
21314 }
21315+#line 6341 "sipgen/parser.c" /* yacc.c:1646 */
21316 break;
21317
21318 case 409:
21319-#line 3306 "sip-4.19.12/sipgen/metasrc/parser.y"
21320+#line 3306 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21321 {
21322 if (notSkipping())
21323 {
21324@@ -6402,13 +6350,14 @@
21325 if (scope->writebufcode != NULL)
21326 yyerror("%BIGetWriteBufferCode already given for class");
21327
21328- appendCodeBlock(&scope->writebufcode, (yyvsp[(1) - (1)].codeb));
21329+ appendCodeBlock(&scope->writebufcode, (yyvsp[0].codeb));
21330 }
21331 }
21332+#line 6357 "sipgen/parser.c" /* yacc.c:1646 */
21333 break;
21334
21335 case 410:
21336-#line 3317 "sip-4.19.12/sipgen/metasrc/parser.y"
21337+#line 3317 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21338 {
21339 if (notSkipping())
21340 {
21341@@ -6417,13 +6366,14 @@
21342 if (scope->segcountcode != NULL)
21343 yyerror("%BIGetSegCountCode already given for class");
21344
21345- appendCodeBlock(&scope->segcountcode, (yyvsp[(1) - (1)].codeb));
21346+ appendCodeBlock(&scope->segcountcode, (yyvsp[0].codeb));
21347 }
21348 }
21349+#line 6373 "sipgen/parser.c" /* yacc.c:1646 */
21350 break;
21351
21352 case 411:
21353-#line 3328 "sip-4.19.12/sipgen/metasrc/parser.y"
21354+#line 3328 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21355 {
21356 if (notSkipping())
21357 {
21358@@ -6432,13 +6382,14 @@
21359 if (scope->charbufcode != NULL)
21360 yyerror("%BIGetCharBufferCode already given for class");
21361
21362- appendCodeBlock(&scope->charbufcode, (yyvsp[(1) - (1)].codeb));
21363+ appendCodeBlock(&scope->charbufcode, (yyvsp[0].codeb));
21364 }
21365 }
21366+#line 6389 "sipgen/parser.c" /* yacc.c:1646 */
21367 break;
21368
21369 case 412:
21370-#line 3339 "sip-4.19.12/sipgen/metasrc/parser.y"
21371+#line 3339 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21372 {
21373 if (notSkipping())
21374 {
21375@@ -6447,13 +6398,14 @@
21376 if (scope->instancecode != NULL)
21377 yyerror("%InstanceCode already given for class");
21378
21379- appendCodeBlock(&scope->instancecode, (yyvsp[(1) - (1)].codeb));
21380+ appendCodeBlock(&scope->instancecode, (yyvsp[0].codeb));
21381 }
21382 }
21383+#line 6405 "sipgen/parser.c" /* yacc.c:1646 */
21384 break;
21385
21386 case 413:
21387-#line 3350 "sip-4.19.12/sipgen/metasrc/parser.y"
21388+#line 3350 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21389 {
21390 if (notSkipping())
21391 {
21392@@ -6462,13 +6414,14 @@
21393 if (scope->picklecode != NULL)
21394 yyerror("%PickleCode already given for class");
21395
21396- appendCodeBlock(&scope->picklecode, (yyvsp[(1) - (1)].codeb));
21397+ appendCodeBlock(&scope->picklecode, (yyvsp[0].codeb));
21398 }
21399 }
21400+#line 6421 "sipgen/parser.c" /* yacc.c:1646 */
21401 break;
21402
21403 case 414:
21404-#line 3361 "sip-4.19.12/sipgen/metasrc/parser.y"
21405+#line 3361 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21406 {
21407 if (notSkipping())
21408 {
21409@@ -6477,13 +6430,14 @@
21410 if (scope->finalcode != NULL)
21411 yyerror("%FinalisationCode already given for class");
21412
21413- appendCodeBlock(&scope->finalcode, (yyvsp[(1) - (1)].codeb));
21414+ appendCodeBlock(&scope->finalcode, (yyvsp[0].codeb));
21415 }
21416 }
21417+#line 6437 "sipgen/parser.c" /* yacc.c:1646 */
21418 break;
21419
21420 case 415:
21421-#line 3372 "sip-4.19.12/sipgen/metasrc/parser.y"
21422+#line 3372 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21423 {
21424 if (notSkipping())
21425 {
21426@@ -6492,13 +6446,14 @@
21427 if (scope->typehintcode != NULL)
21428 yyerror("%TypeHintCode already given for class");
21429
21430- appendCodeBlock(&scope->typehintcode, (yyvsp[(1) - (1)].codeb));
21431+ appendCodeBlock(&scope->typehintcode, (yyvsp[0].codeb));
21432 }
21433 }
21434+#line 6453 "sipgen/parser.c" /* yacc.c:1646 */
21435 break;
21436
21437 case 419:
21438-#line 3386 "sip-4.19.12/sipgen/metasrc/parser.y"
21439+#line 3386 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21440 {
21441 if (notSkipping())
21442 {
21443@@ -6507,13 +6462,14 @@
21444 if (scope->convtosubcode != NULL)
21445 yyerror("Class has more than one %ConvertToSubClassCode directive");
21446
21447- appendCodeBlock(&scope->convtosubcode, (yyvsp[(2) - (2)].codeb));
21448+ appendCodeBlock(&scope->convtosubcode, (yyvsp[0].codeb));
21449 }
21450 }
21451+#line 6469 "sipgen/parser.c" /* yacc.c:1646 */
21452 break;
21453
21454 case 420:
21455-#line 3397 "sip-4.19.12/sipgen/metasrc/parser.y"
21456+#line 3397 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21457 {
21458 if (notSkipping())
21459 {
21460@@ -6522,13 +6478,14 @@
21461 if (scope->convtocode != NULL)
21462 yyerror("Class has more than one %ConvertToTypeCode directive");
21463
21464- appendCodeBlock(&scope->convtocode, (yyvsp[(2) - (2)].codeb));
21465+ appendCodeBlock(&scope->convtocode, (yyvsp[0].codeb));
21466 }
21467 }
21468+#line 6485 "sipgen/parser.c" /* yacc.c:1646 */
21469 break;
21470
21471 case 421:
21472-#line 3408 "sip-4.19.12/sipgen/metasrc/parser.y"
21473+#line 3408 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21474 {
21475 if (notSkipping())
21476 {
21477@@ -6537,46 +6494,50 @@
21478 if (scope->convfromcode != NULL)
21479 yyerror("Class has more than one %ConvertFromTypeCode directive");
21480
21481- appendCodeBlock(&scope->convfromcode, (yyvsp[(2) - (2)].codeb));
21482+ appendCodeBlock(&scope->convfromcode, (yyvsp[0].codeb));
21483 }
21484 }
21485+#line 6501 "sipgen/parser.c" /* yacc.c:1646 */
21486 break;
21487
21488 case 422:
21489-#line 3419 "sip-4.19.12/sipgen/metasrc/parser.y"
21490+#line 3419 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21491 {
21492 if (currentSpec -> genc)
21493 yyerror("public section not allowed in a C module");
21494
21495 if (notSkipping())
21496- sectionFlags = SECT_IS_PUBLIC | (yyvsp[(2) - (3)].number);
21497+ sectionFlags = SECT_IS_PUBLIC | (yyvsp[-1].number);
21498 }
21499+#line 6513 "sipgen/parser.c" /* yacc.c:1646 */
21500 break;
21501
21502 case 423:
21503-#line 3426 "sip-4.19.12/sipgen/metasrc/parser.y"
21504+#line 3426 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21505 {
21506 if (currentSpec -> genc)
21507 yyerror("protected section not allowed in a C module");
21508
21509 if (notSkipping())
21510- sectionFlags = SECT_IS_PROT | (yyvsp[(2) - (3)].number);
21511+ sectionFlags = SECT_IS_PROT | (yyvsp[-1].number);
21512 }
21513+#line 6525 "sipgen/parser.c" /* yacc.c:1646 */
21514 break;
21515
21516 case 424:
21517-#line 3433 "sip-4.19.12/sipgen/metasrc/parser.y"
21518+#line 3433 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21519 {
21520 if (currentSpec -> genc)
21521 yyerror("private section not allowed in a C module");
21522
21523 if (notSkipping())
21524- sectionFlags = SECT_IS_PRIVATE | (yyvsp[(2) - (3)].number);
21525+ sectionFlags = SECT_IS_PRIVATE | (yyvsp[-1].number);
21526 }
21527+#line 6537 "sipgen/parser.c" /* yacc.c:1646 */
21528 break;
21529
21530 case 425:
21531-#line 3440 "sip-4.19.12/sipgen/metasrc/parser.y"
21532+#line 3440 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21533 {
21534 if (currentSpec -> genc)
21535 yyerror("signals section not allowed in a C module");
21536@@ -6584,125 +6545,137 @@
21537 if (notSkipping())
21538 sectionFlags = SECT_IS_SIGNAL;
21539 }
21540+#line 6549 "sipgen/parser.c" /* yacc.c:1646 */
21541 break;
21542
21543 case 426:
21544-#line 3449 "sip-4.19.12/sipgen/metasrc/parser.y"
21545+#line 3449 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21546 {
21547- if ((yyvsp[(2) - (3)].property).name == NULL)
21548+ if ((yyvsp[-1].property).name == NULL)
21549 yyerror("A %Property directive must have a 'name' argument");
21550
21551- if ((yyvsp[(2) - (3)].property).get == NULL)
21552+ if ((yyvsp[-1].property).get == NULL)
21553 yyerror("A %Property directive must have a 'get' argument");
21554
21555 if (notSkipping())
21556 addProperty(currentSpec, currentModule, currentScope(),
21557- (yyvsp[(2) - (3)].property).name, (yyvsp[(2) - (3)].property).get, (yyvsp[(2) - (3)].property).set, (yyvsp[(3) - (3)].property).docstring);
21558+ (yyvsp[-1].property).name, (yyvsp[-1].property).get, (yyvsp[-1].property).set, (yyvsp[0].property).docstring);
21559 }
21560+#line 6565 "sipgen/parser.c" /* yacc.c:1646 */
21561 break;
21562
21563 case 427:
21564-#line 3462 "sip-4.19.12/sipgen/metasrc/parser.y"
21565+#line 3462 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21566 {
21567- (yyval.property) = (yyvsp[(2) - (3)].property);
21568+ (yyval.property) = (yyvsp[-1].property);
21569 }
21570+#line 6573 "sipgen/parser.c" /* yacc.c:1646 */
21571 break;
21572
21573 case 429:
21574-#line 3468 "sip-4.19.12/sipgen/metasrc/parser.y"
21575+#line 3468 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21576 {
21577- (yyval.property) = (yyvsp[(1) - (3)].property);
21578+ (yyval.property) = (yyvsp[-2].property);
21579
21580- switch ((yyvsp[(3) - (3)].property).token)
21581+ switch ((yyvsp[0].property).token)
21582 {
21583- case TK_GET: (yyval.property).get = (yyvsp[(3) - (3)].property).get; break;
21584- case TK_NAME: (yyval.property).name = (yyvsp[(3) - (3)].property).name; break;
21585- case TK_SET: (yyval.property).set = (yyvsp[(3) - (3)].property).set; break;
21586+ case TK_GET: (yyval.property).get = (yyvsp[0].property).get; break;
21587+ case TK_NAME: (yyval.property).name = (yyvsp[0].property).name; break;
21588+ case TK_SET: (yyval.property).set = (yyvsp[0].property).set; break;
21589 }
21590 }
21591+#line 6588 "sipgen/parser.c" /* yacc.c:1646 */
21592 break;
21593
21594 case 430:
21595-#line 3480 "sip-4.19.12/sipgen/metasrc/parser.y"
21596+#line 3480 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21597 {
21598 (yyval.property).token = TK_GET;
21599
21600- (yyval.property).get = (yyvsp[(3) - (3)].text);
21601+ (yyval.property).get = (yyvsp[0].text);
21602 (yyval.property).name = NULL;
21603 (yyval.property).set = NULL;
21604 }
21605+#line 6600 "sipgen/parser.c" /* yacc.c:1646 */
21606 break;
21607
21608 case 431:
21609-#line 3487 "sip-4.19.12/sipgen/metasrc/parser.y"
21610+#line 3487 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21611 {
21612 (yyval.property).token = TK_NAME;
21613
21614 (yyval.property).get = NULL;
21615- (yyval.property).name = (yyvsp[(3) - (3)].text);
21616+ (yyval.property).name = (yyvsp[0].text);
21617 (yyval.property).set = NULL;
21618 }
21619+#line 6612 "sipgen/parser.c" /* yacc.c:1646 */
21620 break;
21621
21622 case 432:
21623-#line 3494 "sip-4.19.12/sipgen/metasrc/parser.y"
21624+#line 3494 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21625 {
21626 (yyval.property).token = TK_SET;
21627
21628 (yyval.property).get = NULL;
21629 (yyval.property).name = NULL;
21630- (yyval.property).set = (yyvsp[(3) - (3)].text);
21631+ (yyval.property).set = (yyvsp[0].text);
21632 }
21633+#line 6624 "sipgen/parser.c" /* yacc.c:1646 */
21634 break;
21635
21636 case 433:
21637-#line 3503 "sip-4.19.12/sipgen/metasrc/parser.y"
21638+#line 3503 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21639 {
21640 (yyval.property).token = 0;
21641 (yyval.property).docstring = NULL;
21642 }
21643+#line 6633 "sipgen/parser.c" /* yacc.c:1646 */
21644 break;
21645
21646 case 434:
21647-#line 3507 "sip-4.19.12/sipgen/metasrc/parser.y"
21648+#line 3507 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21649 {
21650- (yyval.property) = (yyvsp[(2) - (4)].property);
21651+ (yyval.property) = (yyvsp[-2].property);
21652 }
21653+#line 6641 "sipgen/parser.c" /* yacc.c:1646 */
21654 break;
21655
21656 case 436:
21657-#line 3513 "sip-4.19.12/sipgen/metasrc/parser.y"
21658+#line 3513 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21659 {
21660- (yyval.property) = (yyvsp[(1) - (2)].property);
21661+ (yyval.property) = (yyvsp[-1].property);
21662
21663- switch ((yyvsp[(2) - (2)].property).token)
21664+ switch ((yyvsp[0].property).token)
21665 {
21666- case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[(2) - (2)].property).docstring; break;
21667+ case TK_DOCSTRING: (yyval.property).docstring = (yyvsp[0].property).docstring; break;
21668 }
21669 }
21670+#line 6654 "sipgen/parser.c" /* yacc.c:1646 */
21671 break;
21672
21673 case 437:
21674-#line 3523 "sip-4.19.12/sipgen/metasrc/parser.y"
21675+#line 3523 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21676 {
21677 (yyval.property).token = TK_IF;
21678 }
21679+#line 6662 "sipgen/parser.c" /* yacc.c:1646 */
21680 break;
21681
21682 case 438:
21683-#line 3526 "sip-4.19.12/sipgen/metasrc/parser.y"
21684+#line 3526 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21685 {
21686 (yyval.property).token = TK_END;
21687 }
21688+#line 6670 "sipgen/parser.c" /* yacc.c:1646 */
21689 break;
21690
21691 case 439:
21692-#line 3529 "sip-4.19.12/sipgen/metasrc/parser.y"
21693+#line 3529 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21694 {
21695 if (notSkipping())
21696 {
21697 (yyval.property).token = TK_DOCSTRING;
21698- (yyval.property).docstring = (yyvsp[(1) - (1)].docstr);
21699+ (yyval.property).docstring = (yyvsp[0].docstr);
21700 }
21701 else
21702 {
21703@@ -6710,24 +6683,27 @@
21704 (yyval.property).docstring = NULL;
21705 }
21706 }
21707+#line 6687 "sipgen/parser.c" /* yacc.c:1646 */
21708 break;
21709
21710 case 442:
21711-#line 3547 "sip-4.19.12/sipgen/metasrc/parser.y"
21712+#line 3547 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21713 {
21714 (yyval.number) = 0;
21715 }
21716+#line 6695 "sipgen/parser.c" /* yacc.c:1646 */
21717 break;
21718
21719 case 443:
21720-#line 3550 "sip-4.19.12/sipgen/metasrc/parser.y"
21721+#line 3550 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21722 {
21723 (yyval.number) = SECT_IS_SLOT;
21724 }
21725+#line 6703 "sipgen/parser.c" /* yacc.c:1646 */
21726 break;
21727
21728 case 444:
21729-#line 3555 "sip-4.19.12/sipgen/metasrc/parser.y"
21730+#line 3555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21731 {
21732 /* Note that we allow non-virtual dtors in C modules. */
21733
21734@@ -6741,22 +6717,22 @@
21735
21736 classDef *cd = currentScope();
21737
21738- checkAnnos(&(yyvsp[(8) - (12)].optflags), annos);
21739+ checkAnnos(&(yyvsp[-4].optflags), annos);
21740
21741- if (strcmp(classBaseName(cd),(yyvsp[(3) - (12)].text)) != 0)
21742+ if (strcmp(classBaseName(cd),(yyvsp[-9].text)) != 0)
21743 yyerror("Destructor doesn't have the same name as its class");
21744
21745 if (isDtor(cd))
21746 yyerror("Destructor has already been defined");
21747
21748- if (currentSpec -> genc && (yyvsp[(10) - (12)].codeb) == NULL)
21749+ if (currentSpec -> genc && (yyvsp[-2].codeb) == NULL)
21750 yyerror("Destructor in C modules must include %MethodCode");
21751
21752
21753- appendCodeBlock(&cd->dealloccode, (yyvsp[(10) - (12)].codeb)); /* premethodcode */
21754- appendCodeBlock(&cd->dealloccode, (yyvsp[(11) - (12)].codeb)); /* methodcode */
21755- appendCodeBlock(&cd->dtorcode, (yyvsp[(12) - (12)].codeb));
21756- cd -> dtorexceptions = (yyvsp[(6) - (12)].throwlist);
21757+ appendCodeBlock(&cd->dealloccode, (yyvsp[-2].codeb)); /* premethodcode */
21758+ appendCodeBlock(&cd->dealloccode, (yyvsp[-1].codeb)); /* methodcode */
21759+ appendCodeBlock(&cd->dtorcode, (yyvsp[0].codeb));
21760+ cd -> dtorexceptions = (yyvsp[-6].throwlist);
21761
21762 /*
21763 * Note that we don't apply the protected/public hack to dtors
21764@@ -6764,9 +6740,9 @@
21765 */
21766 cd->classflags |= sectionFlags;
21767
21768- if ((yyvsp[(7) - (12)].number))
21769+ if ((yyvsp[-5].number))
21770 {
21771- if (!(yyvsp[(1) - (12)].number))
21772+ if (!(yyvsp[-11].number))
21773 yyerror("Abstract destructor must be virtual");
21774
21775 setIsAbstractClass(cd);
21776@@ -6776,7 +6752,7 @@
21777 * The class has a shadow if we have a virtual dtor or some
21778 * dtor code.
21779 */
21780- if ((yyvsp[(1) - (12)].number) || (yyvsp[(11) - (12)].codeb) != NULL)
21781+ if ((yyvsp[-11].number) || (yyvsp[-1].codeb) != NULL)
21782 {
21783 if (currentSpec -> genc)
21784 yyerror("Virtual destructor or %VirtualCatcherCode not allowed in a C module");
21785@@ -6784,21 +6760,23 @@
21786 setNeedsShadow(cd);
21787 }
21788
21789- if (getReleaseGIL(&(yyvsp[(8) - (12)].optflags)))
21790+ if (getReleaseGIL(&(yyvsp[-4].optflags)))
21791 setIsReleaseGILDtor(cd);
21792- else if (getHoldGIL(&(yyvsp[(8) - (12)].optflags)))
21793+ else if (getHoldGIL(&(yyvsp[-4].optflags)))
21794 setIsHoldGILDtor(cd);
21795 }
21796 }
21797+#line 6770 "sipgen/parser.c" /* yacc.c:1646 */
21798 break;
21799
21800 case 445:
21801-#line 3619 "sip-4.19.12/sipgen/metasrc/parser.y"
21802+#line 3619 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21803 {currentCtorIsExplicit = TRUE;}
21804+#line 6776 "sipgen/parser.c" /* yacc.c:1646 */
21805 break;
21806
21807 case 448:
21808-#line 3623 "sip-4.19.12/sipgen/metasrc/parser.y"
21809+#line 3623 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21810 {
21811 /* Note that we allow ctors in C modules. */
21812
21813@@ -6821,11 +6799,11 @@
21814 NULL
21815 };
21816
21817- checkAnnos(&(yyvsp[(6) - (11)].optflags), annos);
21818+ checkAnnos(&(yyvsp[-5].optflags), annos);
21819
21820 if (currentSpec -> genc)
21821 {
21822- if ((yyvsp[(10) - (11)].codeb) == NULL && (yyvsp[(3) - (11)].signature).nrArgs != 0)
21823+ if ((yyvsp[-1].codeb) == NULL && (yyvsp[-8].signature).nrArgs != 0)
21824 yyerror("Constructors with arguments in C modules must include %MethodCode");
21825
21826 if (currentCtorIsExplicit)
21827@@ -6835,94 +6813,103 @@
21828 if ((sectionFlags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE)) == 0)
21829 yyerror("Constructor must be in the public, private or protected sections");
21830
21831- newCtor(currentModule, (yyvsp[(1) - (11)].text), sectionFlags, &(yyvsp[(3) - (11)].signature), &(yyvsp[(6) - (11)].optflags), (yyvsp[(11) - (11)].codeb), (yyvsp[(5) - (11)].throwlist), (yyvsp[(7) - (11)].optsignature),
21832- currentCtorIsExplicit, (yyvsp[(9) - (11)].docstr), (yyvsp[(10) - (11)].codeb));
21833+ newCtor(currentModule, (yyvsp[-10].text), sectionFlags, &(yyvsp[-8].signature), &(yyvsp[-5].optflags), (yyvsp[0].codeb), (yyvsp[-6].throwlist), (yyvsp[-4].optsignature),
21834+ currentCtorIsExplicit, (yyvsp[-2].docstr), (yyvsp[-1].codeb));
21835 }
21836
21837- free((yyvsp[(1) - (11)].text));
21838+ free((yyvsp[-10].text));
21839
21840 currentCtorIsExplicit = FALSE;
21841 }
21842+#line 6825 "sipgen/parser.c" /* yacc.c:1646 */
21843 break;
21844
21845 case 449:
21846-#line 3669 "sip-4.19.12/sipgen/metasrc/parser.y"
21847+#line 3669 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21848 {
21849 (yyval.optsignature) = NULL;
21850 }
21851+#line 6833 "sipgen/parser.c" /* yacc.c:1646 */
21852 break;
21853
21854 case 450:
21855-#line 3672 "sip-4.19.12/sipgen/metasrc/parser.y"
21856+#line 3672 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21857 {
21858 parsingCSignature = TRUE;
21859 }
21860+#line 6841 "sipgen/parser.c" /* yacc.c:1646 */
21861 break;
21862
21863 case 451:
21864-#line 3674 "sip-4.19.12/sipgen/metasrc/parser.y"
21865+#line 3674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21866 {
21867 (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
21868
21869- *(yyval.optsignature) = (yyvsp[(4) - (6)].signature);
21870+ *(yyval.optsignature) = (yyvsp[-2].signature);
21871
21872 parsingCSignature = FALSE;
21873 }
21874+#line 6853 "sipgen/parser.c" /* yacc.c:1646 */
21875 break;
21876
21877 case 452:
21878-#line 3683 "sip-4.19.12/sipgen/metasrc/parser.y"
21879+#line 3683 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21880 {
21881 (yyval.optsignature) = NULL;
21882 }
21883+#line 6861 "sipgen/parser.c" /* yacc.c:1646 */
21884 break;
21885
21886 case 453:
21887-#line 3686 "sip-4.19.12/sipgen/metasrc/parser.y"
21888+#line 3686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21889 {
21890 parsingCSignature = TRUE;
21891 }
21892+#line 6869 "sipgen/parser.c" /* yacc.c:1646 */
21893 break;
21894
21895 case 454:
21896-#line 3688 "sip-4.19.12/sipgen/metasrc/parser.y"
21897+#line 3688 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21898 {
21899 (yyval.optsignature) = sipMalloc(sizeof (signatureDef));
21900
21901- *(yyval.optsignature) = (yyvsp[(5) - (7)].signature);
21902- (yyval.optsignature)->result = (yyvsp[(3) - (7)].memArg);
21903+ *(yyval.optsignature) = (yyvsp[-2].signature);
21904+ (yyval.optsignature)->result = (yyvsp[-4].memArg);
21905
21906 parsingCSignature = FALSE;
21907 }
21908+#line 6882 "sipgen/parser.c" /* yacc.c:1646 */
21909 break;
21910
21911 case 455:
21912-#line 3698 "sip-4.19.12/sipgen/metasrc/parser.y"
21913+#line 3698 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21914 {
21915 (yyval.number) = FALSE;
21916 }
21917+#line 6890 "sipgen/parser.c" /* yacc.c:1646 */
21918 break;
21919
21920 case 456:
21921-#line 3701 "sip-4.19.12/sipgen/metasrc/parser.y"
21922+#line 3701 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21923 {
21924 (yyval.number) = TRUE;
21925 }
21926+#line 6898 "sipgen/parser.c" /* yacc.c:1646 */
21927 break;
21928
21929 case 457:
21930-#line 3706 "sip-4.19.12/sipgen/metasrc/parser.y"
21931+#line 3706 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21932 {
21933 if (notSkipping())
21934 {
21935- applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(10) - (17)].optflags));
21936+ applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-7].optflags));
21937
21938- (yyvsp[(4) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
21939+ (yyvsp[-13].signature).result = (yyvsp[-16].memArg);
21940
21941 newFunction(currentSpec, currentModule, currentScope(), NULL,
21942 NULL, sectionFlags, currentIsStatic, currentIsSignal,
21943- currentIsSlot, currentOverIsVirt, (yyvsp[(2) - (17)].text), &(yyvsp[(4) - (17)].signature), (yyvsp[(6) - (17)].number), (yyvsp[(9) - (17)].number),
21944- &(yyvsp[(10) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(8) - (17)].throwlist), (yyvsp[(11) - (17)].optsignature), (yyvsp[(13) - (17)].docstr), (yyvsp[(7) - (17)].number), (yyvsp[(14) - (17)].codeb));
21945+ currentIsSlot, currentOverIsVirt, (yyvsp[-15].text), &(yyvsp[-13].signature), (yyvsp[-11].number), (yyvsp[-8].number),
21946+ &(yyvsp[-7].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-9].throwlist), (yyvsp[-6].optsignature), (yyvsp[-4].docstr), (yyvsp[-10].number), (yyvsp[-3].codeb));
21947 }
21948
21949 currentIsStatic = FALSE;
21950@@ -6930,10 +6917,11 @@
21951 currentIsSlot = FALSE;
21952 currentOverIsVirt = FALSE;
21953 }
21954+#line 6921 "sipgen/parser.c" /* yacc.c:1646 */
21955 break;
21956
21957 case 458:
21958-#line 3724 "sip-4.19.12/sipgen/metasrc/parser.y"
21959+#line 3724 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21960 {
21961 /*
21962 * It looks like an assignment operator (though we don't bother to
21963@@ -6954,10 +6942,11 @@
21964 currentIsSlot = FALSE;
21965 currentOverIsVirt = FALSE;
21966 }
21967+#line 6946 "sipgen/parser.c" /* yacc.c:1646 */
21968 break;
21969
21970 case 459:
21971-#line 3744 "sip-4.19.12/sipgen/metasrc/parser.y"
21972+#line 3744 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
21973 {
21974 if (notSkipping())
21975 {
21976@@ -6978,23 +6967,23 @@
21977 ns_scope = NULL;
21978 }
21979
21980- applyTypeFlags(currentModule, &(yyvsp[(1) - (17)].memArg), &(yyvsp[(11) - (17)].optflags));
21981+ applyTypeFlags(currentModule, &(yyvsp[-16].memArg), &(yyvsp[-6].optflags));
21982
21983 /* Handle the unary '+' and '-' operators. */
21984- if ((cd != NULL && (yyvsp[(5) - (17)].signature).nrArgs == 0) || (cd == NULL && (yyvsp[(5) - (17)].signature).nrArgs == 1))
21985+ if ((cd != NULL && (yyvsp[-12].signature).nrArgs == 0) || (cd == NULL && (yyvsp[-12].signature).nrArgs == 1))
21986 {
21987- if (strcmp((yyvsp[(3) - (17)].text), "__add__") == 0)
21988- (yyvsp[(3) - (17)].text) = "__pos__";
21989- else if (strcmp((yyvsp[(3) - (17)].text), "__sub__") == 0)
21990- (yyvsp[(3) - (17)].text) = "__neg__";
21991+ if (strcmp((yyvsp[-14].text), "__add__") == 0)
21992+ (yyvsp[-14].text) = "__pos__";
21993+ else if (strcmp((yyvsp[-14].text), "__sub__") == 0)
21994+ (yyvsp[-14].text) = "__neg__";
21995 }
21996
21997- (yyvsp[(5) - (17)].signature).result = (yyvsp[(1) - (17)].memArg);
21998+ (yyvsp[-12].signature).result = (yyvsp[-16].memArg);
21999
22000 newFunction(currentSpec, currentModule, cd, ns_scope, NULL,
22001 sectionFlags, currentIsStatic, currentIsSignal,
22002- currentIsSlot, currentOverIsVirt, (yyvsp[(3) - (17)].text), &(yyvsp[(5) - (17)].signature), (yyvsp[(7) - (17)].number), (yyvsp[(10) - (17)].number),
22003- &(yyvsp[(11) - (17)].optflags), (yyvsp[(15) - (17)].codeb), (yyvsp[(16) - (17)].codeb), (yyvsp[(17) - (17)].codeb), (yyvsp[(9) - (17)].throwlist), (yyvsp[(12) - (17)].optsignature), NULL, (yyvsp[(8) - (17)].number), (yyvsp[(14) - (17)].codeb));
22004+ currentIsSlot, currentOverIsVirt, (yyvsp[-14].text), &(yyvsp[-12].signature), (yyvsp[-10].number), (yyvsp[-7].number),
22005+ &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
22006 }
22007
22008 currentIsStatic = FALSE;
22009@@ -7002,22 +6991,23 @@
22010 currentIsSlot = FALSE;
22011 currentOverIsVirt = FALSE;
22012 }
22013+#line 6995 "sipgen/parser.c" /* yacc.c:1646 */
22014 break;
22015
22016 case 460:
22017-#line 3788 "sip-4.19.12/sipgen/metasrc/parser.y"
22018+#line 3788 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22019 {
22020 if (notSkipping())
22021 {
22022 char *sname;
22023 classDef *scope = currentScope();
22024
22025- if (scope == NULL || (yyvsp[(4) - (16)].signature).nrArgs != 0)
22026+ if (scope == NULL || (yyvsp[-12].signature).nrArgs != 0)
22027 yyerror("Operator casts must be specified in a class and have no arguments");
22028
22029- applyTypeFlags(currentModule, &(yyvsp[(2) - (16)].memArg), &(yyvsp[(10) - (16)].optflags));
22030+ applyTypeFlags(currentModule, &(yyvsp[-14].memArg), &(yyvsp[-6].optflags));
22031
22032- switch ((yyvsp[(2) - (16)].memArg).atype)
22033+ switch ((yyvsp[-14].memArg).atype)
22034 {
22035 case defined_type:
22036 sname = NULL;
22037@@ -7056,12 +7046,12 @@
22038
22039 if (sname != NULL)
22040 {
22041- (yyvsp[(4) - (16)].signature).result = (yyvsp[(2) - (16)].memArg);
22042+ (yyvsp[-12].signature).result = (yyvsp[-14].memArg);
22043
22044 newFunction(currentSpec, currentModule, scope, NULL, NULL,
22045 sectionFlags, currentIsStatic, currentIsSignal,
22046- currentIsSlot, currentOverIsVirt, sname, &(yyvsp[(4) - (16)].signature), (yyvsp[(6) - (16)].number),
22047- (yyvsp[(9) - (16)].number), &(yyvsp[(10) - (16)].optflags), (yyvsp[(14) - (16)].codeb), (yyvsp[(15) - (16)].codeb), (yyvsp[(16) - (16)].codeb), (yyvsp[(8) - (16)].throwlist), (yyvsp[(11) - (16)].optsignature), NULL, (yyvsp[(7) - (16)].number), (yyvsp[(13) - (16)].codeb));
22048+ currentIsSlot, currentOverIsVirt, sname, &(yyvsp[-12].signature), (yyvsp[-10].number),
22049+ (yyvsp[-7].number), &(yyvsp[-6].optflags), (yyvsp[-2].codeb), (yyvsp[-1].codeb), (yyvsp[0].codeb), (yyvsp[-8].throwlist), (yyvsp[-5].optsignature), NULL, (yyvsp[-9].number), (yyvsp[-3].codeb));
22050 }
22051 else
22052 {
22053@@ -7069,11 +7059,11 @@
22054
22055 /* Check it doesn't already exist. */
22056 for (al = scope->casts; al != NULL; al = al->next)
22057- if (compareScopedNames((yyvsp[(2) - (16)].memArg).u.snd, al->arg.u.snd) == 0)
22058+ if (compareScopedNames((yyvsp[-14].memArg).u.snd, al->arg.u.snd) == 0)
22059 yyerror("This operator cast has already been specified in this class");
22060
22061 al = sipMalloc(sizeof (argList));
22062- al->arg = (yyvsp[(2) - (16)].memArg);
22063+ al->arg = (yyvsp[-14].memArg);
22064 al->next = scope->casts;
22065
22066 scope->casts = al;
22067@@ -7085,260 +7075,303 @@
22068 currentIsSlot = FALSE;
22069 currentOverIsVirt = FALSE;
22070 }
22071+#line 7079 "sipgen/parser.c" /* yacc.c:1646 */
22072 break;
22073
22074 case 461:
22075-#line 3869 "sip-4.19.12/sipgen/metasrc/parser.y"
22076+#line 3869 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22077 {(yyval.text) = "__add__";}
22078+#line 7085 "sipgen/parser.c" /* yacc.c:1646 */
22079 break;
22080
22081 case 462:
22082-#line 3870 "sip-4.19.12/sipgen/metasrc/parser.y"
22083+#line 3870 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22084 {(yyval.text) = "__sub__";}
22085+#line 7091 "sipgen/parser.c" /* yacc.c:1646 */
22086 break;
22087
22088 case 463:
22089-#line 3871 "sip-4.19.12/sipgen/metasrc/parser.y"
22090+#line 3871 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22091 {(yyval.text) = "__mul__";}
22092+#line 7097 "sipgen/parser.c" /* yacc.c:1646 */
22093 break;
22094
22095 case 464:
22096-#line 3872 "sip-4.19.12/sipgen/metasrc/parser.y"
22097+#line 3872 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22098 {(yyval.text) = "__div__";}
22099+#line 7103 "sipgen/parser.c" /* yacc.c:1646 */
22100 break;
22101
22102 case 465:
22103-#line 3873 "sip-4.19.12/sipgen/metasrc/parser.y"
22104+#line 3873 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22105 {(yyval.text) = "__mod__";}
22106+#line 7109 "sipgen/parser.c" /* yacc.c:1646 */
22107 break;
22108
22109 case 466:
22110-#line 3874 "sip-4.19.12/sipgen/metasrc/parser.y"
22111+#line 3874 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22112 {(yyval.text) = "__and__";}
22113+#line 7115 "sipgen/parser.c" /* yacc.c:1646 */
22114 break;
22115
22116 case 467:
22117-#line 3875 "sip-4.19.12/sipgen/metasrc/parser.y"
22118+#line 3875 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22119 {(yyval.text) = "__or__";}
22120+#line 7121 "sipgen/parser.c" /* yacc.c:1646 */
22121 break;
22122
22123 case 468:
22124-#line 3876 "sip-4.19.12/sipgen/metasrc/parser.y"
22125+#line 3876 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22126 {(yyval.text) = "__xor__";}
22127+#line 7127 "sipgen/parser.c" /* yacc.c:1646 */
22128 break;
22129
22130 case 469:
22131-#line 3877 "sip-4.19.12/sipgen/metasrc/parser.y"
22132+#line 3877 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22133 {(yyval.text) = "__lshift__";}
22134+#line 7133 "sipgen/parser.c" /* yacc.c:1646 */
22135 break;
22136
22137 case 470:
22138-#line 3878 "sip-4.19.12/sipgen/metasrc/parser.y"
22139+#line 3878 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22140 {(yyval.text) = "__rshift__";}
22141+#line 7139 "sipgen/parser.c" /* yacc.c:1646 */
22142 break;
22143
22144 case 471:
22145-#line 3879 "sip-4.19.12/sipgen/metasrc/parser.y"
22146+#line 3879 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22147 {(yyval.text) = "__iadd__";}
22148+#line 7145 "sipgen/parser.c" /* yacc.c:1646 */
22149 break;
22150
22151 case 472:
22152-#line 3880 "sip-4.19.12/sipgen/metasrc/parser.y"
22153+#line 3880 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22154 {(yyval.text) = "__isub__";}
22155+#line 7151 "sipgen/parser.c" /* yacc.c:1646 */
22156 break;
22157
22158 case 473:
22159-#line 3881 "sip-4.19.12/sipgen/metasrc/parser.y"
22160+#line 3881 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22161 {(yyval.text) = "__imul__";}
22162+#line 7157 "sipgen/parser.c" /* yacc.c:1646 */
22163 break;
22164
22165 case 474:
22166-#line 3882 "sip-4.19.12/sipgen/metasrc/parser.y"
22167+#line 3882 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22168 {(yyval.text) = "__idiv__";}
22169+#line 7163 "sipgen/parser.c" /* yacc.c:1646 */
22170 break;
22171
22172 case 475:
22173-#line 3883 "sip-4.19.12/sipgen/metasrc/parser.y"
22174+#line 3883 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22175 {(yyval.text) = "__imod__";}
22176+#line 7169 "sipgen/parser.c" /* yacc.c:1646 */
22177 break;
22178
22179 case 476:
22180-#line 3884 "sip-4.19.12/sipgen/metasrc/parser.y"
22181+#line 3884 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22182 {(yyval.text) = "__iand__";}
22183+#line 7175 "sipgen/parser.c" /* yacc.c:1646 */
22184 break;
22185
22186 case 477:
22187-#line 3885 "sip-4.19.12/sipgen/metasrc/parser.y"
22188+#line 3885 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22189 {(yyval.text) = "__ior__";}
22190+#line 7181 "sipgen/parser.c" /* yacc.c:1646 */
22191 break;
22192
22193 case 478:
22194-#line 3886 "sip-4.19.12/sipgen/metasrc/parser.y"
22195+#line 3886 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22196 {(yyval.text) = "__ixor__";}
22197+#line 7187 "sipgen/parser.c" /* yacc.c:1646 */
22198 break;
22199
22200 case 479:
22201-#line 3887 "sip-4.19.12/sipgen/metasrc/parser.y"
22202+#line 3887 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22203 {(yyval.text) = "__ilshift__";}
22204+#line 7193 "sipgen/parser.c" /* yacc.c:1646 */
22205 break;
22206
22207 case 480:
22208-#line 3888 "sip-4.19.12/sipgen/metasrc/parser.y"
22209+#line 3888 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22210 {(yyval.text) = "__irshift__";}
22211+#line 7199 "sipgen/parser.c" /* yacc.c:1646 */
22212 break;
22213
22214 case 481:
22215-#line 3889 "sip-4.19.12/sipgen/metasrc/parser.y"
22216+#line 3889 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22217 {(yyval.text) = "__invert__";}
22218+#line 7205 "sipgen/parser.c" /* yacc.c:1646 */
22219 break;
22220
22221 case 482:
22222-#line 3890 "sip-4.19.12/sipgen/metasrc/parser.y"
22223+#line 3890 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22224 {(yyval.text) = "__call__";}
22225+#line 7211 "sipgen/parser.c" /* yacc.c:1646 */
22226 break;
22227
22228 case 483:
22229-#line 3891 "sip-4.19.12/sipgen/metasrc/parser.y"
22230+#line 3891 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22231 {(yyval.text) = "__getitem__";}
22232+#line 7217 "sipgen/parser.c" /* yacc.c:1646 */
22233 break;
22234
22235 case 484:
22236-#line 3892 "sip-4.19.12/sipgen/metasrc/parser.y"
22237+#line 3892 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22238 {(yyval.text) = "__lt__";}
22239+#line 7223 "sipgen/parser.c" /* yacc.c:1646 */
22240 break;
22241
22242 case 485:
22243-#line 3893 "sip-4.19.12/sipgen/metasrc/parser.y"
22244+#line 3893 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22245 {(yyval.text) = "__le__";}
22246+#line 7229 "sipgen/parser.c" /* yacc.c:1646 */
22247 break;
22248
22249 case 486:
22250-#line 3894 "sip-4.19.12/sipgen/metasrc/parser.y"
22251+#line 3894 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22252 {(yyval.text) = "__eq__";}
22253+#line 7235 "sipgen/parser.c" /* yacc.c:1646 */
22254 break;
22255
22256 case 487:
22257-#line 3895 "sip-4.19.12/sipgen/metasrc/parser.y"
22258+#line 3895 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22259 {(yyval.text) = "__ne__";}
22260+#line 7241 "sipgen/parser.c" /* yacc.c:1646 */
22261 break;
22262
22263 case 488:
22264-#line 3896 "sip-4.19.12/sipgen/metasrc/parser.y"
22265+#line 3896 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22266 {(yyval.text) = "__gt__";}
22267+#line 7247 "sipgen/parser.c" /* yacc.c:1646 */
22268 break;
22269
22270 case 489:
22271-#line 3897 "sip-4.19.12/sipgen/metasrc/parser.y"
22272+#line 3897 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22273 {(yyval.text) = "__ge__";}
22274+#line 7253 "sipgen/parser.c" /* yacc.c:1646 */
22275 break;
22276
22277 case 490:
22278-#line 3900 "sip-4.19.12/sipgen/metasrc/parser.y"
22279+#line 3900 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22280 {
22281 (yyval.number) = FALSE;
22282 }
22283+#line 7261 "sipgen/parser.c" /* yacc.c:1646 */
22284 break;
22285
22286 case 491:
22287-#line 3903 "sip-4.19.12/sipgen/metasrc/parser.y"
22288+#line 3903 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22289 {
22290 (yyval.number) = TRUE;
22291 }
22292+#line 7269 "sipgen/parser.c" /* yacc.c:1646 */
22293 break;
22294
22295 case 492:
22296-#line 3908 "sip-4.19.12/sipgen/metasrc/parser.y"
22297+#line 3908 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22298 {
22299 (yyval.number) = FALSE;
22300 }
22301+#line 7277 "sipgen/parser.c" /* yacc.c:1646 */
22302 break;
22303
22304 case 493:
22305-#line 3911 "sip-4.19.12/sipgen/metasrc/parser.y"
22306+#line 3911 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22307 {
22308 (yyval.number) = TRUE;
22309 }
22310+#line 7285 "sipgen/parser.c" /* yacc.c:1646 */
22311 break;
22312
22313 case 494:
22314-#line 3916 "sip-4.19.12/sipgen/metasrc/parser.y"
22315+#line 3916 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22316 {
22317 (yyval.number) = 0;
22318 }
22319+#line 7293 "sipgen/parser.c" /* yacc.c:1646 */
22320 break;
22321
22322 case 495:
22323-#line 3919 "sip-4.19.12/sipgen/metasrc/parser.y"
22324+#line 3919 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22325 {
22326- if ((yyvsp[(2) - (2)].number) != 0)
22327+ if ((yyvsp[0].number) != 0)
22328 yyerror("Abstract virtual function '= 0' expected");
22329
22330 (yyval.number) = TRUE;
22331 }
22332+#line 7304 "sipgen/parser.c" /* yacc.c:1646 */
22333 break;
22334
22335 case 496:
22336-#line 3927 "sip-4.19.12/sipgen/metasrc/parser.y"
22337+#line 3927 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22338 {
22339 (yyval.optflags).nrFlags = 0;
22340 }
22341+#line 7312 "sipgen/parser.c" /* yacc.c:1646 */
22342 break;
22343
22344 case 497:
22345-#line 3930 "sip-4.19.12/sipgen/metasrc/parser.y"
22346+#line 3930 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22347 {
22348- (yyval.optflags) = (yyvsp[(2) - (3)].optflags);
22349+ (yyval.optflags) = (yyvsp[-1].optflags);
22350 }
22351+#line 7320 "sipgen/parser.c" /* yacc.c:1646 */
22352 break;
22353
22354 case 498:
22355-#line 3936 "sip-4.19.12/sipgen/metasrc/parser.y"
22356+#line 3936 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22357 {
22358- (yyval.optflags).flags[0] = (yyvsp[(1) - (1)].flag);
22359+ (yyval.optflags).flags[0] = (yyvsp[0].flag);
22360 (yyval.optflags).nrFlags = 1;
22361 }
22362+#line 7329 "sipgen/parser.c" /* yacc.c:1646 */
22363 break;
22364
22365 case 499:
22366-#line 3940 "sip-4.19.12/sipgen/metasrc/parser.y"
22367+#line 3940 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22368 {
22369 /* Check there is room. */
22370
22371- if ((yyvsp[(1) - (3)].optflags).nrFlags == MAX_NR_FLAGS)
22372+ if ((yyvsp[-2].optflags).nrFlags == MAX_NR_FLAGS)
22373 yyerror("Too many optional flags");
22374
22375- (yyval.optflags) = (yyvsp[(1) - (3)].optflags);
22376+ (yyval.optflags) = (yyvsp[-2].optflags);
22377
22378- (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[(3) - (3)].flag);
22379+ (yyval.optflags).flags[(yyval.optflags).nrFlags++] = (yyvsp[0].flag);
22380 }
22381+#line 7344 "sipgen/parser.c" /* yacc.c:1646 */
22382 break;
22383
22384 case 500:
22385-#line 3952 "sip-4.19.12/sipgen/metasrc/parser.y"
22386+#line 3952 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22387 {
22388 (yyval.flag).ftype = bool_flag;
22389- (yyval.flag).fname = (yyvsp[(1) - (1)].text);
22390+ (yyval.flag).fname = (yyvsp[0].text);
22391 }
22392+#line 7353 "sipgen/parser.c" /* yacc.c:1646 */
22393 break;
22394
22395 case 501:
22396-#line 3956 "sip-4.19.12/sipgen/metasrc/parser.y"
22397+#line 3956 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22398 {
22399- (yyval.flag) = (yyvsp[(3) - (3)].flag);
22400- (yyval.flag).fname = (yyvsp[(1) - (3)].text);
22401+ (yyval.flag) = (yyvsp[0].flag);
22402+ (yyval.flag).fname = (yyvsp[-2].text);
22403 }
22404+#line 7362 "sipgen/parser.c" /* yacc.c:1646 */
22405 break;
22406
22407 case 502:
22408-#line 3962 "sip-4.19.12/sipgen/metasrc/parser.y"
22409+#line 3962 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22410 {
22411- (yyval.flag).ftype = (strchr((yyvsp[(1) - (1)].text), '.') != NULL) ? dotted_name_flag : name_flag;
22412- (yyval.flag).fvalue.sval = (yyvsp[(1) - (1)].text);
22413+ (yyval.flag).ftype = (strchr((yyvsp[0].text), '.') != NULL) ? dotted_name_flag : name_flag;
22414+ (yyval.flag).fvalue.sval = (yyvsp[0].text);
22415 }
22416+#line 7371 "sipgen/parser.c" /* yacc.c:1646 */
22417 break;
22418
22419 case 503:
22420-#line 3966 "sip-4.19.12/sipgen/metasrc/parser.y"
22421+#line 3966 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22422 {
22423 apiVersionRangeDef *avd;
22424 int from, to;
22425@@ -7346,106 +7379,117 @@
22426 (yyval.flag).ftype = api_range_flag;
22427
22428 /* Check that the API is known. */
22429- if ((avd = findAPI(currentSpec, (yyvsp[(1) - (5)].text))) == NULL)
22430+ if ((avd = findAPI(currentSpec, (yyvsp[-4].text))) == NULL)
22431 yyerror("unknown API name in API annotation");
22432
22433 if (inMainModule())
22434 setIsUsedName(avd->api_name);
22435
22436 /* Unbounded values are represented by 0. */
22437- if ((from = (yyvsp[(3) - (5)].number)) < 0)
22438+ if ((from = (yyvsp[-2].number)) < 0)
22439 from = 0;
22440
22441- if ((to = (yyvsp[(5) - (5)].number)) < 0)
22442+ if ((to = (yyvsp[0].number)) < 0)
22443 to = 0;
22444
22445 (yyval.flag).fvalue.aval = convertAPIRange(currentModule, avd->api_name,
22446 from, to);
22447 }
22448+#line 7399 "sipgen/parser.c" /* yacc.c:1646 */
22449 break;
22450
22451 case 504:
22452-#line 3989 "sip-4.19.12/sipgen/metasrc/parser.y"
22453+#line 3989 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22454 {
22455 (yyval.flag).ftype = string_flag;
22456- (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[(1) - (1)].text));
22457+ (yyval.flag).fvalue.sval = convertFeaturedString((yyvsp[0].text));
22458 }
22459+#line 7408 "sipgen/parser.c" /* yacc.c:1646 */
22460 break;
22461
22462 case 505:
22463-#line 3993 "sip-4.19.12/sipgen/metasrc/parser.y"
22464+#line 3993 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22465 {
22466 (yyval.flag).ftype = integer_flag;
22467- (yyval.flag).fvalue.ival = (yyvsp[(1) - (1)].number);
22468+ (yyval.flag).fvalue.ival = (yyvsp[0].number);
22469 }
22470+#line 7417 "sipgen/parser.c" /* yacc.c:1646 */
22471 break;
22472
22473 case 506:
22474-#line 3999 "sip-4.19.12/sipgen/metasrc/parser.y"
22475+#line 3999 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22476 {
22477 (yyval.codeb) = NULL;
22478 }
22479+#line 7425 "sipgen/parser.c" /* yacc.c:1646 */
22480 break;
22481
22482 case 507:
22483-#line 4002 "sip-4.19.12/sipgen/metasrc/parser.y"
22484+#line 4002 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22485 {
22486- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
22487+ (yyval.codeb) = (yyvsp[0].codeb);
22488 }
22489+#line 7433 "sipgen/parser.c" /* yacc.c:1646 */
22490 break;
22491
22492 case 508:
22493-#line 4007 "sip-4.19.12/sipgen/metasrc/parser.y"
22494+#line 4007 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22495 {
22496 (yyval.codeb) = NULL;
22497 }
22498+#line 7441 "sipgen/parser.c" /* yacc.c:1646 */
22499 break;
22500
22501 case 509:
22502-#line 4010 "sip-4.19.12/sipgen/metasrc/parser.y"
22503+#line 4010 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22504 {
22505- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
22506+ (yyval.codeb) = (yyvsp[0].codeb);
22507 }
22508+#line 7449 "sipgen/parser.c" /* yacc.c:1646 */
22509 break;
22510
22511 case 510:
22512-#line 4015 "sip-4.19.12/sipgen/metasrc/parser.y"
22513+#line 4015 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22514 {
22515 (yyval.codeb) = NULL;
22516 }
22517+#line 7457 "sipgen/parser.c" /* yacc.c:1646 */
22518 break;
22519
22520 case 511:
22521-#line 4018 "sip-4.19.12/sipgen/metasrc/parser.y"
22522+#line 4018 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22523 {
22524- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
22525+ (yyval.codeb) = (yyvsp[0].codeb);
22526 }
22527+#line 7465 "sipgen/parser.c" /* yacc.c:1646 */
22528 break;
22529
22530 case 512:
22531-#line 4023 "sip-4.19.12/sipgen/metasrc/parser.y"
22532+#line 4023 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22533 {
22534 (yyval.codeb) = NULL;
22535 }
22536+#line 7473 "sipgen/parser.c" /* yacc.c:1646 */
22537 break;
22538
22539 case 513:
22540-#line 4026 "sip-4.19.12/sipgen/metasrc/parser.y"
22541+#line 4026 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22542 {
22543- (yyval.codeb) = (yyvsp[(2) - (2)].codeb);
22544+ (yyval.codeb) = (yyvsp[0].codeb);
22545 }
22546+#line 7481 "sipgen/parser.c" /* yacc.c:1646 */
22547 break;
22548
22549 case 514:
22550-#line 4031 "sip-4.19.12/sipgen/metasrc/parser.y"
22551+#line 4031 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22552 {
22553 int a, nrrxcon, nrrxdis, nrslotcon, nrslotdis, nrarray, nrarraysize;
22554
22555 nrrxcon = nrrxdis = nrslotcon = nrslotdis = nrarray = nrarraysize = 0;
22556
22557- for (a = 0; a < (yyvsp[(1) - (1)].signature).nrArgs; ++a)
22558+ for (a = 0; a < (yyvsp[0].signature).nrArgs; ++a)
22559 {
22560- argDef *ad = &(yyvsp[(1) - (1)].signature).args[a];
22561+ argDef *ad = &(yyvsp[0].signature).args[a];
22562
22563 switch (ad -> atype)
22564 {
22565@@ -7486,104 +7530,111 @@
22566 if (nrarray != nrarraysize || nrarray > 1)
22567 yyerror("/Array/ and /ArraySize/ must both be given and at most once");
22568
22569- (yyval.signature) = (yyvsp[(1) - (1)].signature);
22570+ (yyval.signature) = (yyvsp[0].signature);
22571 }
22572+#line 7536 "sipgen/parser.c" /* yacc.c:1646 */
22573 break;
22574
22575 case 515:
22576-#line 4083 "sip-4.19.12/sipgen/metasrc/parser.y"
22577+#line 4083 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22578 {
22579 /* No arguments. */
22580
22581 (yyval.signature).nrArgs = 0;
22582 }
22583+#line 7546 "sipgen/parser.c" /* yacc.c:1646 */
22584 break;
22585
22586 case 516:
22587-#line 4088 "sip-4.19.12/sipgen/metasrc/parser.y"
22588+#line 4088 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22589 {
22590 /* The single or first argument. */
22591
22592- (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
22593+ (yyval.signature).args[0] = (yyvsp[0].memArg);
22594 (yyval.signature).nrArgs = 1;
22595 }
22596+#line 7557 "sipgen/parser.c" /* yacc.c:1646 */
22597 break;
22598
22599 case 517:
22600-#line 4094 "sip-4.19.12/sipgen/metasrc/parser.y"
22601+#line 4094 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22602 {
22603 /* Check that it wasn't ...(,arg...). */
22604- if ((yyvsp[(1) - (3)].signature).nrArgs == 0)
22605+ if ((yyvsp[-2].signature).nrArgs == 0)
22606 yyerror("First argument of the list is missing");
22607
22608 /*
22609 * If this argument has no default value, then the
22610 * previous one mustn't either.
22611 */
22612- if ((yyvsp[(3) - (3)].memArg).defval == NULL && (yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].defval != NULL)
22613+ if ((yyvsp[0].memArg).defval == NULL && (yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].defval != NULL)
22614 yyerror("Compulsory argument given after optional argument");
22615
22616 /* Check there is room. */
22617- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
22618+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
22619 yyerror("Internal error - increase the value of MAX_NR_ARGS");
22620
22621- (yyval.signature) = (yyvsp[(1) - (3)].signature);
22622+ (yyval.signature) = (yyvsp[-2].signature);
22623
22624- (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
22625+ (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
22626 (yyval.signature).nrArgs++;
22627 }
22628+#line 7583 "sipgen/parser.c" /* yacc.c:1646 */
22629 break;
22630
22631 case 518:
22632-#line 4117 "sip-4.19.12/sipgen/metasrc/parser.y"
22633+#line 4117 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22634 {
22635 deprecated("SIP_SIGNAL is deprecated\n");
22636- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SIGNAL has no annotations");
22637+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SIGNAL has no annotations");
22638
22639 (yyval.memArg).atype = signal_type;
22640 (yyval.memArg).argflags = ARG_IS_CONST;
22641 (yyval.memArg).nrderefs = 0;
22642- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
22643- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
22644+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
22645+ (yyval.memArg).defval = (yyvsp[0].valp);
22646
22647 currentSpec -> sigslots = TRUE;
22648 }
22649+#line 7600 "sipgen/parser.c" /* yacc.c:1646 */
22650 break;
22651
22652 case 519:
22653-#line 4129 "sip-4.19.12/sipgen/metasrc/parser.y"
22654+#line 4129 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22655 {
22656 deprecated("SIP_SLOT is deprecated\n");
22657- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_SLOT has no annotations");
22658+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_SLOT has no annotations");
22659
22660 (yyval.memArg).atype = slot_type;
22661 (yyval.memArg).argflags = ARG_IS_CONST;
22662 (yyval.memArg).nrderefs = 0;
22663- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
22664- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
22665+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
22666+ (yyval.memArg).defval = (yyvsp[0].valp);
22667
22668 currentSpec -> sigslots = TRUE;
22669 }
22670+#line 7617 "sipgen/parser.c" /* yacc.c:1646 */
22671 break;
22672
22673 case 520:
22674-#line 4141 "sip-4.19.12/sipgen/metasrc/parser.y"
22675+#line 4141 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22676 {
22677 deprecated("SIP_ANYSLOT is deprecated\n");
22678- checkNoAnnos(&(yyvsp[(3) - (4)].optflags), "SIP_ANYSLOT has no annotations");
22679+ checkNoAnnos(&(yyvsp[-1].optflags), "SIP_ANYSLOT has no annotations");
22680
22681 (yyval.memArg).atype = anyslot_type;
22682 (yyval.memArg).argflags = ARG_IS_CONST;
22683 (yyval.memArg).nrderefs = 0;
22684- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (4)].text));
22685- (yyval.memArg).defval = (yyvsp[(4) - (4)].valp);
22686+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-2].text));
22687+ (yyval.memArg).defval = (yyvsp[0].valp);
22688
22689 currentSpec -> sigslots = TRUE;
22690 }
22691+#line 7634 "sipgen/parser.c" /* yacc.c:1646 */
22692 break;
22693
22694 case 521:
22695-#line 4153 "sip-4.19.12/sipgen/metasrc/parser.y"
22696+#line 4153 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22697 {
22698 const char *annos[] = {
22699 "SingleShot",
22700@@ -7591,120 +7642,130 @@
22701 };
22702
22703 deprecated("SIP_RXOBJ_CON is deprecated\n");
22704- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
22705+ checkAnnos(&(yyvsp[0].optflags), annos);
22706
22707 (yyval.memArg).atype = rxcon_type;
22708 (yyval.memArg).argflags = 0;
22709 (yyval.memArg).nrderefs = 0;
22710- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
22711+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
22712
22713- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "SingleShot", bool_flag) != NULL)
22714+ if (getOptFlag(&(yyvsp[0].optflags), "SingleShot", bool_flag) != NULL)
22715 (yyval.memArg).argflags |= ARG_SINGLE_SHOT;
22716
22717 currentSpec -> sigslots = TRUE;
22718 }
22719+#line 7658 "sipgen/parser.c" /* yacc.c:1646 */
22720 break;
22721
22722 case 522:
22723-#line 4172 "sip-4.19.12/sipgen/metasrc/parser.y"
22724+#line 4172 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22725 {
22726 deprecated("SIP_RXOBJ_DIS is deprecated\n");
22727- checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_RXOBJ_DIS has no annotations");
22728+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_RXOBJ_DIS has no annotations");
22729
22730 (yyval.memArg).atype = rxdis_type;
22731 (yyval.memArg).argflags = 0;
22732 (yyval.memArg).nrderefs = 0;
22733- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
22734+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
22735
22736 currentSpec -> sigslots = TRUE;
22737 }
22738+#line 7674 "sipgen/parser.c" /* yacc.c:1646 */
22739 break;
22740
22741 case 523:
22742-#line 4183 "sip-4.19.12/sipgen/metasrc/parser.y"
22743+#line 4183 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22744 {
22745 deprecated("SIP_SLOT_CON is deprecated\n");
22746- checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_CON has no annotations");
22747+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_CON has no annotations");
22748
22749 (yyval.memArg).atype = slotcon_type;
22750 (yyval.memArg).argflags = ARG_IS_CONST;
22751 (yyval.memArg).nrderefs = 0;
22752- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
22753+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
22754
22755- memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
22756- (yyvsp[(3) - (6)].signature).result.atype = void_type;
22757+ memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
22758+ (yyvsp[-3].signature).result.atype = void_type;
22759
22760 (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
22761- *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
22762+ *(yyval.memArg).u.sa = (yyvsp[-3].signature);
22763
22764 currentSpec -> sigslots = TRUE;
22765 }
22766+#line 7696 "sipgen/parser.c" /* yacc.c:1646 */
22767 break;
22768
22769 case 524:
22770-#line 4200 "sip-4.19.12/sipgen/metasrc/parser.y"
22771+#line 4200 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22772 {
22773 deprecated("SIP_SLOT_DIS is deprecated\n");
22774- checkNoAnnos(&(yyvsp[(6) - (6)].optflags), "SIP_SLOT_DIS has no annotations");
22775+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_SLOT_DIS has no annotations");
22776
22777 (yyval.memArg).atype = slotdis_type;
22778 (yyval.memArg).argflags = ARG_IS_CONST;
22779 (yyval.memArg).nrderefs = 0;
22780- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(5) - (6)].text));
22781+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
22782
22783- memset(&(yyvsp[(3) - (6)].signature).result, 0, sizeof (argDef));
22784- (yyvsp[(3) - (6)].signature).result.atype = void_type;
22785+ memset(&(yyvsp[-3].signature).result, 0, sizeof (argDef));
22786+ (yyvsp[-3].signature).result.atype = void_type;
22787
22788 (yyval.memArg).u.sa = sipMalloc(sizeof (signatureDef));
22789- *(yyval.memArg).u.sa = (yyvsp[(3) - (6)].signature);
22790+ *(yyval.memArg).u.sa = (yyvsp[-3].signature);
22791
22792 currentSpec -> sigslots = TRUE;
22793 }
22794+#line 7718 "sipgen/parser.c" /* yacc.c:1646 */
22795 break;
22796
22797 case 525:
22798-#line 4217 "sip-4.19.12/sipgen/metasrc/parser.y"
22799+#line 4217 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22800 {
22801 deprecated("SIP_QOBJECT is deprecated\n");
22802- checkNoAnnos(&(yyvsp[(3) - (3)].optflags), "SIP_QOBJECT has no annotations");
22803+ checkNoAnnos(&(yyvsp[0].optflags), "SIP_QOBJECT has no annotations");
22804
22805 (yyval.memArg).atype = qobject_type;
22806 (yyval.memArg).argflags = 0;
22807 (yyval.memArg).nrderefs = 0;
22808- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
22809+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
22810 }
22811+#line 7732 "sipgen/parser.c" /* yacc.c:1646 */
22812 break;
22813
22814 case 526:
22815-#line 4226 "sip-4.19.12/sipgen/metasrc/parser.y"
22816+#line 4226 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22817 {
22818- (yyval.memArg) = (yyvsp[(1) - (2)].memArg);
22819- (yyval.memArg).defval = (yyvsp[(2) - (2)].valp);
22820+ (yyval.memArg) = (yyvsp[-1].memArg);
22821+ (yyval.memArg).defval = (yyvsp[0].valp);
22822 }
22823+#line 7741 "sipgen/parser.c" /* yacc.c:1646 */
22824 break;
22825
22826 case 527:
22827-#line 4233 "sip-4.19.12/sipgen/metasrc/parser.y"
22828+#line 4233 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22829 {currentIsSignal = TRUE;}
22830+#line 7747 "sipgen/parser.c" /* yacc.c:1646 */
22831 break;
22832
22833 case 529:
22834-#line 4234 "sip-4.19.12/sipgen/metasrc/parser.y"
22835+#line 4234 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22836 {currentIsSlot = TRUE;}
22837+#line 7753 "sipgen/parser.c" /* yacc.c:1646 */
22838 break;
22839
22840 case 532:
22841-#line 4239 "sip-4.19.12/sipgen/metasrc/parser.y"
22842+#line 4239 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22843 {currentIsStatic = TRUE;}
22844+#line 7759 "sipgen/parser.c" /* yacc.c:1646 */
22845 break;
22846
22847 case 537:
22848-#line 4249 "sip-4.19.12/sipgen/metasrc/parser.y"
22849+#line 4249 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22850 {currentOverIsVirt = TRUE;}
22851+#line 7765 "sipgen/parser.c" /* yacc.c:1646 */
22852 break;
22853
22854 case 540:
22855-#line 4253 "sip-4.19.12/sipgen/metasrc/parser.y"
22856+#line 4253 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22857 {
22858 if (notSkipping())
22859 {
22860@@ -7719,99 +7780,105 @@
22861 NULL
22862 };
22863
22864- checkAnnos(&(yyvsp[(3) - (8)].optflags), annos);
22865+ checkAnnos(&(yyvsp[-5].optflags), annos);
22866
22867- if ((yyvsp[(6) - (8)].codeb) != NULL)
22868+ if ((yyvsp[-2].codeb) != NULL)
22869 {
22870- if ((yyvsp[(4) - (8)].variable).access_code != NULL)
22871+ if ((yyvsp[-4].variable).access_code != NULL)
22872 yyerror("%AccessCode already defined");
22873
22874- (yyvsp[(4) - (8)].variable).access_code = (yyvsp[(6) - (8)].codeb);
22875+ (yyvsp[-4].variable).access_code = (yyvsp[-2].codeb);
22876
22877 deprecated("%AccessCode should be used as a sub-directive");
22878 }
22879
22880- if ((yyvsp[(7) - (8)].codeb) != NULL)
22881+ if ((yyvsp[-1].codeb) != NULL)
22882 {
22883- if ((yyvsp[(4) - (8)].variable).get_code != NULL)
22884+ if ((yyvsp[-4].variable).get_code != NULL)
22885 yyerror("%GetCode already defined");
22886
22887- (yyvsp[(4) - (8)].variable).get_code = (yyvsp[(7) - (8)].codeb);
22888+ (yyvsp[-4].variable).get_code = (yyvsp[-1].codeb);
22889
22890 deprecated("%GetCode should be used as a sub-directive");
22891 }
22892
22893- if ((yyvsp[(8) - (8)].codeb) != NULL)
22894+ if ((yyvsp[0].codeb) != NULL)
22895 {
22896- if ((yyvsp[(4) - (8)].variable).set_code != NULL)
22897+ if ((yyvsp[-4].variable).set_code != NULL)
22898 yyerror("%SetCode already defined");
22899
22900- (yyvsp[(4) - (8)].variable).set_code = (yyvsp[(8) - (8)].codeb);
22901+ (yyvsp[-4].variable).set_code = (yyvsp[0].codeb);
22902
22903 deprecated("%SetCode should be used as a sub-directive");
22904 }
22905
22906- newVar(currentSpec, currentModule, (yyvsp[(2) - (8)].text), currentIsStatic, &(yyvsp[(1) - (8)].memArg),
22907- &(yyvsp[(3) - (8)].optflags), (yyvsp[(4) - (8)].variable).access_code, (yyvsp[(4) - (8)].variable).get_code, (yyvsp[(4) - (8)].variable).set_code,
22908+ newVar(currentSpec, currentModule, (yyvsp[-6].text), currentIsStatic, &(yyvsp[-7].memArg),
22909+ &(yyvsp[-5].optflags), (yyvsp[-4].variable).access_code, (yyvsp[-4].variable).get_code, (yyvsp[-4].variable).set_code,
22910 sectionFlags);
22911 }
22912
22913 currentIsStatic = FALSE;
22914 }
22915+#line 7823 "sipgen/parser.c" /* yacc.c:1646 */
22916 break;
22917
22918 case 541:
22919-#line 4308 "sip-4.19.12/sipgen/metasrc/parser.y"
22920+#line 4308 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22921 {
22922 (yyval.variable).token = 0;
22923 (yyval.variable).access_code = NULL;
22924 (yyval.variable).get_code = NULL;
22925 (yyval.variable).set_code = NULL;
22926 }
22927+#line 7834 "sipgen/parser.c" /* yacc.c:1646 */
22928 break;
22929
22930 case 542:
22931-#line 4314 "sip-4.19.12/sipgen/metasrc/parser.y"
22932+#line 4314 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22933 {
22934- (yyval.variable) = (yyvsp[(2) - (3)].variable);
22935+ (yyval.variable) = (yyvsp[-1].variable);
22936 }
22937+#line 7842 "sipgen/parser.c" /* yacc.c:1646 */
22938 break;
22939
22940 case 544:
22941-#line 4320 "sip-4.19.12/sipgen/metasrc/parser.y"
22942+#line 4320 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22943 {
22944- (yyval.variable) = (yyvsp[(1) - (2)].variable);
22945+ (yyval.variable) = (yyvsp[-1].variable);
22946
22947- switch ((yyvsp[(2) - (2)].variable).token)
22948+ switch ((yyvsp[0].variable).token)
22949 {
22950- case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[(2) - (2)].variable).access_code; break;
22951- case TK_GETCODE: (yyval.variable).get_code = (yyvsp[(2) - (2)].variable).get_code; break;
22952- case TK_SETCODE: (yyval.variable).set_code = (yyvsp[(2) - (2)].variable).set_code; break;
22953+ case TK_ACCESSCODE: (yyval.variable).access_code = (yyvsp[0].variable).access_code; break;
22954+ case TK_GETCODE: (yyval.variable).get_code = (yyvsp[0].variable).get_code; break;
22955+ case TK_SETCODE: (yyval.variable).set_code = (yyvsp[0].variable).set_code; break;
22956 }
22957 }
22958+#line 7857 "sipgen/parser.c" /* yacc.c:1646 */
22959 break;
22960
22961 case 545:
22962-#line 4332 "sip-4.19.12/sipgen/metasrc/parser.y"
22963+#line 4332 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22964 {
22965 (yyval.variable).token = TK_IF;
22966 }
22967+#line 7865 "sipgen/parser.c" /* yacc.c:1646 */
22968 break;
22969
22970 case 546:
22971-#line 4335 "sip-4.19.12/sipgen/metasrc/parser.y"
22972+#line 4335 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22973 {
22974 (yyval.variable).token = TK_END;
22975 }
22976+#line 7873 "sipgen/parser.c" /* yacc.c:1646 */
22977 break;
22978
22979 case 547:
22980-#line 4338 "sip-4.19.12/sipgen/metasrc/parser.y"
22981+#line 4338 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
22982 {
22983 if (notSkipping())
22984 {
22985 (yyval.variable).token = TK_ACCESSCODE;
22986- (yyval.variable).access_code = (yyvsp[(2) - (2)].codeb);
22987+ (yyval.variable).access_code = (yyvsp[0].codeb);
22988 }
22989 else
22990 {
22991@@ -7822,15 +7889,16 @@
22992 (yyval.variable).get_code = NULL;
22993 (yyval.variable).set_code = NULL;
22994 }
22995+#line 7893 "sipgen/parser.c" /* yacc.c:1646 */
22996 break;
22997
22998 case 548:
22999-#line 4353 "sip-4.19.12/sipgen/metasrc/parser.y"
23000+#line 4353 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23001 {
23002 if (notSkipping())
23003 {
23004 (yyval.variable).token = TK_GETCODE;
23005- (yyval.variable).get_code = (yyvsp[(2) - (2)].codeb);
23006+ (yyval.variable).get_code = (yyvsp[0].codeb);
23007 }
23008 else
23009 {
23010@@ -7841,15 +7909,16 @@
23011 (yyval.variable).access_code = NULL;
23012 (yyval.variable).set_code = NULL;
23013 }
23014+#line 7913 "sipgen/parser.c" /* yacc.c:1646 */
23015 break;
23016
23017 case 549:
23018-#line 4368 "sip-4.19.12/sipgen/metasrc/parser.y"
23019+#line 4368 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23020 {
23021 if (notSkipping())
23022 {
23023 (yyval.variable).token = TK_SETCODE;
23024- (yyval.variable).set_code = (yyvsp[(2) - (2)].codeb);
23025+ (yyval.variable).set_code = (yyvsp[0].codeb);
23026 }
23027 else
23028 {
23029@@ -7860,35 +7929,38 @@
23030 (yyval.variable).access_code = NULL;
23031 (yyval.variable).get_code = NULL;
23032 }
23033+#line 7933 "sipgen/parser.c" /* yacc.c:1646 */
23034 break;
23035
23036 case 550:
23037-#line 4385 "sip-4.19.12/sipgen/metasrc/parser.y"
23038+#line 4385 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23039 {
23040- (yyval.memArg) = (yyvsp[(2) - (4)].memArg);
23041- add_derefs(&(yyval.memArg), &(yyvsp[(3) - (4)].memArg));
23042- (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[(4) - (4)].number);
23043+ (yyval.memArg) = (yyvsp[-2].memArg);
23044+ add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
23045+ (yyval.memArg).argflags |= ARG_IS_CONST | (yyvsp[0].number);
23046 }
23047+#line 7943 "sipgen/parser.c" /* yacc.c:1646 */
23048 break;
23049
23050 case 551:
23051-#line 4390 "sip-4.19.12/sipgen/metasrc/parser.y"
23052+#line 4390 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23053 {
23054- (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
23055- add_derefs(&(yyval.memArg), &(yyvsp[(2) - (3)].memArg));
23056- (yyval.memArg).argflags |= (yyvsp[(3) - (3)].number);
23057+ (yyval.memArg) = (yyvsp[-2].memArg);
23058+ add_derefs(&(yyval.memArg), &(yyvsp[-1].memArg));
23059+ (yyval.memArg).argflags |= (yyvsp[0].number);
23060
23061 /* PyObject * is a synonym for SIP_PYOBJECT. */
23062- if ((yyvsp[(1) - (3)].memArg).atype == defined_type && strcmp((yyvsp[(1) - (3)].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[(1) - (3)].memArg).u.snd->next == NULL && (yyvsp[(2) - (3)].memArg).nrderefs == 1 && (yyvsp[(3) - (3)].number) == 0)
23063+ if ((yyvsp[-2].memArg).atype == defined_type && strcmp((yyvsp[-2].memArg).u.snd->name, "PyObject") == 0 && (yyvsp[-2].memArg).u.snd->next == NULL && (yyvsp[-1].memArg).nrderefs == 1 && (yyvsp[0].number) == 0)
23064 {
23065 (yyval.memArg).atype = pyobject_type;
23066 (yyval.memArg).nrderefs = 0;
23067 }
23068 }
23069+#line 7960 "sipgen/parser.c" /* yacc.c:1646 */
23070 break;
23071
23072 case 552:
23073-#line 4404 "sip-4.19.12/sipgen/metasrc/parser.y"
23074+#line 4404 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23075 {
23076 const char *annos[] = {
23077 "AllowNone",
23078@@ -7919,54 +7991,54 @@
23079
23080 optFlag *of;
23081
23082- checkAnnos(&(yyvsp[(3) - (3)].optflags), annos);
23083+ checkAnnos(&(yyvsp[0].optflags), annos);
23084
23085- (yyval.memArg) = (yyvsp[(1) - (3)].memArg);
23086- (yyval.memArg).name = cacheName(currentSpec, (yyvsp[(2) - (3)].text));
23087+ (yyval.memArg) = (yyvsp[-2].memArg);
23088+ (yyval.memArg).name = cacheName(currentSpec, (yyvsp[-1].text));
23089
23090- handleKeepReference(&(yyvsp[(3) - (3)].optflags), &(yyval.memArg), currentModule);
23091+ handleKeepReference(&(yyvsp[0].optflags), &(yyval.memArg), currentModule);
23092
23093- if ((of = getOptFlag(&(yyvsp[(3) - (3)].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
23094+ if ((of = getOptFlag(&(yyvsp[0].optflags), "ScopesStripped", opt_integer_flag)) != NULL)
23095 if (((yyval.memArg).scopes_stripped = of->fvalue.ival) <= 0)
23096 yyerror("/ScopesStripped/ must be greater than 0");
23097
23098- if (getAllowNone(&(yyvsp[(3) - (3)].optflags)))
23099+ if (getAllowNone(&(yyvsp[0].optflags)))
23100 (yyval.memArg).argflags |= ARG_ALLOW_NONE;
23101
23102- if (getDisallowNone(&(yyvsp[(3) - (3)].optflags)))
23103+ if (getDisallowNone(&(yyvsp[0].optflags)))
23104 (yyval.memArg).argflags |= ARG_DISALLOW_NONE;
23105
23106- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"GetWrapper",bool_flag) != NULL)
23107+ if (getOptFlag(&(yyvsp[0].optflags),"GetWrapper",bool_flag) != NULL)
23108 (yyval.memArg).argflags |= ARG_GET_WRAPPER;
23109
23110- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Array",bool_flag) != NULL)
23111+ if (getOptFlag(&(yyvsp[0].optflags),"Array",bool_flag) != NULL)
23112 (yyval.memArg).argflags |= ARG_ARRAY;
23113
23114- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"ArraySize",bool_flag) != NULL)
23115+ if (getOptFlag(&(yyvsp[0].optflags),"ArraySize",bool_flag) != NULL)
23116 (yyval.memArg).argflags |= ARG_ARRAY_SIZE;
23117
23118- if (getTransfer(&(yyvsp[(3) - (3)].optflags)))
23119+ if (getTransfer(&(yyvsp[0].optflags)))
23120 (yyval.memArg).argflags |= ARG_XFERRED;
23121
23122- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferThis",bool_flag) != NULL)
23123+ if (getOptFlag(&(yyvsp[0].optflags),"TransferThis",bool_flag) != NULL)
23124 (yyval.memArg).argflags |= ARG_THIS_XFERRED;
23125
23126- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"TransferBack",bool_flag) != NULL)
23127+ if (getOptFlag(&(yyvsp[0].optflags),"TransferBack",bool_flag) != NULL)
23128 (yyval.memArg).argflags |= ARG_XFERRED_BACK;
23129
23130- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"In",bool_flag) != NULL)
23131+ if (getOptFlag(&(yyvsp[0].optflags),"In",bool_flag) != NULL)
23132 (yyval.memArg).argflags |= ARG_IN;
23133
23134- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Out",bool_flag) != NULL)
23135+ if (getOptFlag(&(yyvsp[0].optflags),"Out",bool_flag) != NULL)
23136 (yyval.memArg).argflags |= ARG_OUT;
23137
23138- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "ResultSize", bool_flag) != NULL)
23139+ if (getOptFlag(&(yyvsp[0].optflags), "ResultSize", bool_flag) != NULL)
23140 (yyval.memArg).argflags |= ARG_RESULT_SIZE;
23141
23142- if (getOptFlag(&(yyvsp[(3) - (3)].optflags), "NoCopy", bool_flag) != NULL)
23143+ if (getOptFlag(&(yyvsp[0].optflags), "NoCopy", bool_flag) != NULL)
23144 (yyval.memArg).argflags |= ARG_NO_COPY;
23145
23146- if (getOptFlag(&(yyvsp[(3) - (3)].optflags),"Constrained",bool_flag) != NULL)
23147+ if (getOptFlag(&(yyvsp[0].optflags),"Constrained",bool_flag) != NULL)
23148 {
23149 (yyval.memArg).argflags |= ARG_CONSTRAINED;
23150
23151@@ -7994,78 +8066,86 @@
23152 }
23153 }
23154
23155- applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[(3) - (3)].optflags));
23156- (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[(3) - (3)].optflags));
23157+ applyTypeFlags(currentModule, &(yyval.memArg), &(yyvsp[0].optflags));
23158+ (yyval.memArg).typehint_value = getTypeHintValue(&(yyvsp[0].optflags));
23159 }
23160+#line 8073 "sipgen/parser.c" /* yacc.c:1646 */
23161 break;
23162
23163 case 553:
23164-#line 4514 "sip-4.19.12/sipgen/metasrc/parser.y"
23165+#line 4514 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23166 {
23167 (yyval.number) = 0;
23168 }
23169+#line 8081 "sipgen/parser.c" /* yacc.c:1646 */
23170 break;
23171
23172 case 554:
23173-#line 4517 "sip-4.19.12/sipgen/metasrc/parser.y"
23174+#line 4517 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23175 {
23176 if (currentSpec -> genc)
23177 yyerror("References not allowed in a C module");
23178
23179 (yyval.number) = ARG_IS_REF;
23180 }
23181+#line 8092 "sipgen/parser.c" /* yacc.c:1646 */
23182 break;
23183
23184 case 555:
23185-#line 4525 "sip-4.19.12/sipgen/metasrc/parser.y"
23186+#line 4525 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23187 {
23188 (yyval.memArg).nrderefs = 0;
23189 }
23190+#line 8100 "sipgen/parser.c" /* yacc.c:1646 */
23191 break;
23192
23193 case 556:
23194-#line 4528 "sip-4.19.12/sipgen/metasrc/parser.y"
23195+#line 4528 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23196 {
23197- add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (3)].memArg), TRUE);
23198+ add_new_deref(&(yyval.memArg), &(yyvsp[-2].memArg), TRUE);
23199 }
23200+#line 8108 "sipgen/parser.c" /* yacc.c:1646 */
23201 break;
23202
23203 case 557:
23204-#line 4531 "sip-4.19.12/sipgen/metasrc/parser.y"
23205+#line 4531 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23206 {
23207- add_new_deref(&(yyval.memArg), &(yyvsp[(1) - (2)].memArg), FALSE);
23208+ add_new_deref(&(yyval.memArg), &(yyvsp[-1].memArg), FALSE);
23209 }
23210+#line 8116 "sipgen/parser.c" /* yacc.c:1646 */
23211 break;
23212
23213 case 558:
23214-#line 4536 "sip-4.19.12/sipgen/metasrc/parser.y"
23215+#line 4536 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23216 {
23217 memset(&(yyval.memArg), 0, sizeof (argDef));
23218 (yyval.memArg).atype = defined_type;
23219- (yyval.memArg).u.snd = (yyvsp[(1) - (1)].scpvalp);
23220+ (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
23221
23222 /* Try and resolve typedefs as early as possible. */
23223 resolveAnyTypedef(currentSpec, &(yyval.memArg));
23224 }
23225+#line 8129 "sipgen/parser.c" /* yacc.c:1646 */
23226 break;
23227
23228 case 559:
23229-#line 4544 "sip-4.19.12/sipgen/metasrc/parser.y"
23230+#line 4544 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23231 {
23232 templateDef *td;
23233
23234 td = sipMalloc(sizeof(templateDef));
23235- td->fqname = (yyvsp[(1) - (4)].scpvalp);
23236- td->types = (yyvsp[(3) - (4)].signature);
23237+ td->fqname = (yyvsp[-3].scpvalp);
23238+ td->types = (yyvsp[-1].signature);
23239
23240 memset(&(yyval.memArg), 0, sizeof (argDef));
23241 (yyval.memArg).atype = template_type;
23242 (yyval.memArg).u.td = td;
23243 }
23244+#line 8145 "sipgen/parser.c" /* yacc.c:1646 */
23245 break;
23246
23247 case 560:
23248-#line 4555 "sip-4.19.12/sipgen/metasrc/parser.y"
23249+#line 4555 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23250 {
23251 memset(&(yyval.memArg), 0, sizeof (argDef));
23252
23253@@ -8073,321 +8153,366 @@
23254 if (currentSpec -> genc)
23255 {
23256 (yyval.memArg).atype = defined_type;
23257- (yyval.memArg).u.snd = (yyvsp[(2) - (2)].scpvalp);
23258+ (yyval.memArg).u.snd = (yyvsp[0].scpvalp);
23259 }
23260 else
23261 {
23262 (yyval.memArg).atype = struct_type;
23263- (yyval.memArg).u.sname = (yyvsp[(2) - (2)].scpvalp);
23264+ (yyval.memArg).u.sname = (yyvsp[0].scpvalp);
23265 }
23266 }
23267+#line 8165 "sipgen/parser.c" /* yacc.c:1646 */
23268 break;
23269
23270 case 561:
23271-#line 4570 "sip-4.19.12/sipgen/metasrc/parser.y"
23272+#line 4570 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23273 {
23274 memset(&(yyval.memArg), 0, sizeof (argDef));
23275 (yyval.memArg).atype = ushort_type;
23276 }
23277+#line 8174 "sipgen/parser.c" /* yacc.c:1646 */
23278 break;
23279
23280 case 562:
23281-#line 4574 "sip-4.19.12/sipgen/metasrc/parser.y"
23282+#line 4574 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23283 {
23284 memset(&(yyval.memArg), 0, sizeof (argDef));
23285 (yyval.memArg).atype = short_type;
23286 }
23287+#line 8183 "sipgen/parser.c" /* yacc.c:1646 */
23288 break;
23289
23290 case 563:
23291-#line 4578 "sip-4.19.12/sipgen/metasrc/parser.y"
23292+#line 4578 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23293 {
23294 memset(&(yyval.memArg), 0, sizeof (argDef));
23295 (yyval.memArg).atype = uint_type;
23296 }
23297+#line 8192 "sipgen/parser.c" /* yacc.c:1646 */
23298 break;
23299
23300 case 564:
23301-#line 4582 "sip-4.19.12/sipgen/metasrc/parser.y"
23302+#line 4582 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23303 {
23304 memset(&(yyval.memArg), 0, sizeof (argDef));
23305 (yyval.memArg).atype = uint_type;
23306 }
23307+#line 8201 "sipgen/parser.c" /* yacc.c:1646 */
23308 break;
23309
23310 case 565:
23311-#line 4586 "sip-4.19.12/sipgen/metasrc/parser.y"
23312+#line 4586 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23313 {
23314 memset(&(yyval.memArg), 0, sizeof (argDef));
23315 (yyval.memArg).atype = int_type;
23316 }
23317+#line 8210 "sipgen/parser.c" /* yacc.c:1646 */
23318 break;
23319
23320 case 566:
23321-#line 4590 "sip-4.19.12/sipgen/metasrc/parser.y"
23322+#line 4590 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23323 {
23324 memset(&(yyval.memArg), 0, sizeof (argDef));
23325 (yyval.memArg).atype = long_type;
23326 }
23327+#line 8219 "sipgen/parser.c" /* yacc.c:1646 */
23328 break;
23329
23330 case 567:
23331-#line 4594 "sip-4.19.12/sipgen/metasrc/parser.y"
23332+#line 4594 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23333 {
23334 memset(&(yyval.memArg), 0, sizeof (argDef));
23335 (yyval.memArg).atype = ulong_type;
23336 }
23337+#line 8228 "sipgen/parser.c" /* yacc.c:1646 */
23338 break;
23339
23340 case 568:
23341-#line 4598 "sip-4.19.12/sipgen/metasrc/parser.y"
23342+#line 4598 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23343 {
23344 memset(&(yyval.memArg), 0, sizeof (argDef));
23345 (yyval.memArg).atype = longlong_type;
23346 }
23347+#line 8237 "sipgen/parser.c" /* yacc.c:1646 */
23348 break;
23349
23350 case 569:
23351-#line 4602 "sip-4.19.12/sipgen/metasrc/parser.y"
23352+#line 4602 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23353 {
23354 memset(&(yyval.memArg), 0, sizeof (argDef));
23355 (yyval.memArg).atype = ulonglong_type;
23356 }
23357+#line 8246 "sipgen/parser.c" /* yacc.c:1646 */
23358 break;
23359
23360 case 570:
23361-#line 4606 "sip-4.19.12/sipgen/metasrc/parser.y"
23362+#line 4606 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23363 {
23364 memset(&(yyval.memArg), 0, sizeof (argDef));
23365 (yyval.memArg).atype = float_type;
23366 }
23367+#line 8255 "sipgen/parser.c" /* yacc.c:1646 */
23368 break;
23369
23370 case 571:
23371-#line 4610 "sip-4.19.12/sipgen/metasrc/parser.y"
23372+#line 4610 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23373 {
23374 memset(&(yyval.memArg), 0, sizeof (argDef));
23375 (yyval.memArg).atype = double_type;
23376 }
23377+#line 8264 "sipgen/parser.c" /* yacc.c:1646 */
23378 break;
23379
23380 case 572:
23381-#line 4614 "sip-4.19.12/sipgen/metasrc/parser.y"
23382+#line 4614 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23383 {
23384 memset(&(yyval.memArg), 0, sizeof (argDef));
23385 (yyval.memArg).atype = bool_type;
23386 }
23387+#line 8273 "sipgen/parser.c" /* yacc.c:1646 */
23388 break;
23389
23390 case 573:
23391-#line 4618 "sip-4.19.12/sipgen/metasrc/parser.y"
23392+#line 4618 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23393 {
23394 memset(&(yyval.memArg), 0, sizeof (argDef));
23395 (yyval.memArg).atype = sstring_type;
23396 }
23397+#line 8282 "sipgen/parser.c" /* yacc.c:1646 */
23398 break;
23399
23400 case 574:
23401-#line 4622 "sip-4.19.12/sipgen/metasrc/parser.y"
23402+#line 4622 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23403 {
23404 memset(&(yyval.memArg), 0, sizeof (argDef));
23405 (yyval.memArg).atype = ustring_type;
23406 }
23407+#line 8291 "sipgen/parser.c" /* yacc.c:1646 */
23408 break;
23409
23410 case 575:
23411-#line 4626 "sip-4.19.12/sipgen/metasrc/parser.y"
23412+#line 4626 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23413 {
23414 memset(&(yyval.memArg), 0, sizeof (argDef));
23415 (yyval.memArg).atype = string_type;
23416 }
23417+#line 8300 "sipgen/parser.c" /* yacc.c:1646 */
23418 break;
23419
23420 case 576:
23421-#line 4630 "sip-4.19.12/sipgen/metasrc/parser.y"
23422+#line 4630 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23423 {
23424 memset(&(yyval.memArg), 0, sizeof (argDef));
23425 (yyval.memArg).atype = wstring_type;
23426 }
23427+#line 8309 "sipgen/parser.c" /* yacc.c:1646 */
23428 break;
23429
23430 case 577:
23431-#line 4634 "sip-4.19.12/sipgen/metasrc/parser.y"
23432+#line 4634 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23433 {
23434 memset(&(yyval.memArg), 0, sizeof (argDef));
23435 (yyval.memArg).atype = void_type;
23436 }
23437+#line 8318 "sipgen/parser.c" /* yacc.c:1646 */
23438 break;
23439
23440 case 578:
23441-#line 4638 "sip-4.19.12/sipgen/metasrc/parser.y"
23442+#line 4638 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23443 {
23444 memset(&(yyval.memArg), 0, sizeof (argDef));
23445 (yyval.memArg).atype = pyobject_type;
23446 }
23447+#line 8327 "sipgen/parser.c" /* yacc.c:1646 */
23448 break;
23449
23450 case 579:
23451-#line 4642 "sip-4.19.12/sipgen/metasrc/parser.y"
23452+#line 4642 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23453 {
23454 memset(&(yyval.memArg), 0, sizeof (argDef));
23455 (yyval.memArg).atype = pytuple_type;
23456 }
23457+#line 8336 "sipgen/parser.c" /* yacc.c:1646 */
23458 break;
23459
23460 case 580:
23461-#line 4646 "sip-4.19.12/sipgen/metasrc/parser.y"
23462+#line 4646 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23463 {
23464 memset(&(yyval.memArg), 0, sizeof (argDef));
23465 (yyval.memArg).atype = pylist_type;
23466 }
23467+#line 8345 "sipgen/parser.c" /* yacc.c:1646 */
23468 break;
23469
23470 case 581:
23471-#line 4650 "sip-4.19.12/sipgen/metasrc/parser.y"
23472+#line 4650 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23473 {
23474 memset(&(yyval.memArg), 0, sizeof (argDef));
23475 (yyval.memArg).atype = pydict_type;
23476 }
23477+#line 8354 "sipgen/parser.c" /* yacc.c:1646 */
23478 break;
23479
23480 case 582:
23481-#line 4654 "sip-4.19.12/sipgen/metasrc/parser.y"
23482+#line 4654 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23483 {
23484 memset(&(yyval.memArg), 0, sizeof (argDef));
23485 (yyval.memArg).atype = pycallable_type;
23486 }
23487+#line 8363 "sipgen/parser.c" /* yacc.c:1646 */
23488 break;
23489
23490 case 583:
23491-#line 4658 "sip-4.19.12/sipgen/metasrc/parser.y"
23492+#line 4658 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23493 {
23494 memset(&(yyval.memArg), 0, sizeof (argDef));
23495 (yyval.memArg).atype = pyslice_type;
23496 }
23497+#line 8372 "sipgen/parser.c" /* yacc.c:1646 */
23498 break;
23499
23500 case 584:
23501-#line 4662 "sip-4.19.12/sipgen/metasrc/parser.y"
23502+#line 4662 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23503 {
23504 memset(&(yyval.memArg), 0, sizeof (argDef));
23505 (yyval.memArg).atype = pytype_type;
23506 }
23507+#line 8381 "sipgen/parser.c" /* yacc.c:1646 */
23508 break;
23509
23510 case 585:
23511-#line 4666 "sip-4.19.12/sipgen/metasrc/parser.y"
23512+#line 4666 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23513 {
23514 memset(&(yyval.memArg), 0, sizeof (argDef));
23515 (yyval.memArg).atype = pybuffer_type;
23516 }
23517+#line 8390 "sipgen/parser.c" /* yacc.c:1646 */
23518 break;
23519
23520 case 586:
23521-#line 4670 "sip-4.19.12/sipgen/metasrc/parser.y"
23522+#line 4670 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23523 {
23524 memset(&(yyval.memArg), 0, sizeof (argDef));
23525 (yyval.memArg).atype = ssize_type;
23526 }
23527+#line 8399 "sipgen/parser.c" /* yacc.c:1646 */
23528 break;
23529
23530 case 587:
23531-#line 4674 "sip-4.19.12/sipgen/metasrc/parser.y"
23532+#line 4674 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23533 {
23534 memset(&(yyval.memArg), 0, sizeof (argDef));
23535 (yyval.memArg).atype = ellipsis_type;
23536 }
23537+#line 8408 "sipgen/parser.c" /* yacc.c:1646 */
23538 break;
23539
23540 case 588:
23541-#line 4680 "sip-4.19.12/sipgen/metasrc/parser.y"
23542+#line 4680 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23543 {
23544 /* The single or first type. */
23545
23546- (yyval.signature).args[0] = (yyvsp[(1) - (1)].memArg);
23547+ (yyval.signature).args[0] = (yyvsp[0].memArg);
23548 (yyval.signature).nrArgs = 1;
23549 }
23550+#line 8419 "sipgen/parser.c" /* yacc.c:1646 */
23551 break;
23552
23553 case 589:
23554-#line 4686 "sip-4.19.12/sipgen/metasrc/parser.y"
23555+#line 4686 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23556 {
23557 /* Check there is nothing after an ellipsis. */
23558- if ((yyvsp[(1) - (3)].signature).args[(yyvsp[(1) - (3)].signature).nrArgs - 1].atype == ellipsis_type)
23559+ if ((yyvsp[-2].signature).args[(yyvsp[-2].signature).nrArgs - 1].atype == ellipsis_type)
23560 yyerror("An ellipsis must be at the end of the argument list");
23561
23562 /* Check there is room. */
23563- if ((yyvsp[(1) - (3)].signature).nrArgs == MAX_NR_ARGS)
23564+ if ((yyvsp[-2].signature).nrArgs == MAX_NR_ARGS)
23565 yyerror("Internal error - increase the value of MAX_NR_ARGS");
23566
23567- (yyval.signature) = (yyvsp[(1) - (3)].signature);
23568+ (yyval.signature) = (yyvsp[-2].signature);
23569
23570- (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[(3) - (3)].memArg);
23571+ (yyval.signature).args[(yyval.signature).nrArgs] = (yyvsp[0].memArg);
23572 (yyval.signature).nrArgs++;
23573 }
23574+#line 8438 "sipgen/parser.c" /* yacc.c:1646 */
23575 break;
23576
23577 case 590:
23578-#line 4702 "sip-4.19.12/sipgen/metasrc/parser.y"
23579+#line 4702 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23580 {
23581 (yyval.throwlist) = NULL;
23582 }
23583+#line 8446 "sipgen/parser.c" /* yacc.c:1646 */
23584 break;
23585
23586 case 591:
23587-#line 4705 "sip-4.19.12/sipgen/metasrc/parser.y"
23588+#line 4705 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23589 {
23590 if (currentSpec->genc)
23591 yyerror("Exceptions not allowed in a C module");
23592
23593- (yyval.throwlist) = (yyvsp[(3) - (4)].throwlist);
23594+ (yyval.throwlist) = (yyvsp[-1].throwlist);
23595 }
23596+#line 8457 "sipgen/parser.c" /* yacc.c:1646 */
23597 break;
23598
23599 case 592:
23600-#line 4713 "sip-4.19.12/sipgen/metasrc/parser.y"
23601+#line 4713 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23602 {
23603 /* Empty list so use a blank. */
23604
23605 (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
23606 (yyval.throwlist) -> nrArgs = 0;
23607 }
23608+#line 8468 "sipgen/parser.c" /* yacc.c:1646 */
23609 break;
23610
23611 case 593:
23612-#line 4719 "sip-4.19.12/sipgen/metasrc/parser.y"
23613+#line 4719 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23614 {
23615 /* The only or first exception. */
23616
23617 (yyval.throwlist) = sipMalloc(sizeof (throwArgs));
23618 (yyval.throwlist) -> nrArgs = 1;
23619- (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[(1) - (1)].scpvalp), FALSE);
23620+ (yyval.throwlist) -> args[0] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
23621 }
23622+#line 8480 "sipgen/parser.c" /* yacc.c:1646 */
23623 break;
23624
23625 case 594:
23626-#line 4726 "sip-4.19.12/sipgen/metasrc/parser.y"
23627+#line 4726 "sipgen/metasrc/parser.y" /* yacc.c:1646 */
23628 {
23629 /* Check that it wasn't ...(,arg...). */
23630
23631- if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == 0)
23632+ if ((yyvsp[-2].throwlist) -> nrArgs == 0)
23633 yyerror("First exception of throw specifier is missing");
23634
23635 /* Check there is room. */
23636
23637- if ((yyvsp[(1) - (3)].throwlist) -> nrArgs == MAX_NR_ARGS)
23638+ if ((yyvsp[-2].throwlist) -> nrArgs == MAX_NR_ARGS)
23639 yyerror("Internal error - increase the value of MAX_NR_ARGS");
23640
23641- (yyval.throwlist) = (yyvsp[(1) - (3)].throwlist);
23642- (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[(3) - (3)].scpvalp), FALSE);
23643+ (yyval.throwlist) = (yyvsp[-2].throwlist);
23644+ (yyval.throwlist) -> args[(yyval.throwlist) -> nrArgs++] = findException(currentSpec, (yyvsp[0].scpvalp), FALSE);
23645 }
23646+#line 8499 "sipgen/parser.c" /* yacc.c:1646 */
23647 break;
23648
23649
23650-/* Line 1267 of yacc.c. */
23651-#line 8389 "sip-4.19.12/sipgen/parser.c"
23652+#line 8503 "sipgen/parser.c" /* yacc.c:1646 */
23653 default: break;
23654 }
23655+ /* User semantic actions sometimes alter yychar, and that requires
23656+ that yytoken be updated with the new translation. We take the
23657+ approach of translating immediately before every use of yytoken.
23658+ One alternative is translating here after every semantic action,
23659+ but that translation would be missed if the semantic action invokes
23660+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
23661+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
23662+ incorrect destructor might then be invoked immediately. In the
23663+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
23664+ to an incorrect destructor call or verbose syntax error message
23665+ before the lookahead is translated. */
23666 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
23667
23668 YYPOPSTACK (yylen);
23669@@ -8396,8 +8521,7 @@
23670
23671 *++yyvsp = yyval;
23672
23673-
23674- /* Now `shift' the result of the reduction. Determine what state
23675+ /* Now 'shift' the result of the reduction. Determine what state
23676 that goes to, based on the state we popped back to and the rule
23677 number reduced by. */
23678
23679@@ -8412,10 +8536,14 @@
23680 goto yynewstate;
23681
23682
23683-/*------------------------------------.
23684-| yyerrlab -- here on detecting error |
23685-`------------------------------------*/
23686+/*--------------------------------------.
23687+| yyerrlab -- here on detecting error. |
23688+`--------------------------------------*/
23689 yyerrlab:
23690+ /* Make sure we have latest lookahead translation. See comments at
23691+ user semantic actions for why this is necessary. */
23692+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
23693+
23694 /* If not already recovering from an error, report this error. */
23695 if (!yyerrstatus)
23696 {
23697@@ -8423,37 +8551,36 @@
23698 #if ! YYERROR_VERBOSE
23699 yyerror (YY_("syntax error"));
23700 #else
23701+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
23702+ yyssp, yytoken)
23703 {
23704- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
23705- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
23706- {
23707- YYSIZE_T yyalloc = 2 * yysize;
23708- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
23709- yyalloc = YYSTACK_ALLOC_MAXIMUM;
23710- if (yymsg != yymsgbuf)
23711- YYSTACK_FREE (yymsg);
23712- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
23713- if (yymsg)
23714- yymsg_alloc = yyalloc;
23715- else
23716- {
23717- yymsg = yymsgbuf;
23718- yymsg_alloc = sizeof yymsgbuf;
23719- }
23720- }
23721-
23722- if (0 < yysize && yysize <= yymsg_alloc)
23723- {
23724- (void) yysyntax_error (yymsg, yystate, yychar);
23725- yyerror (yymsg);
23726- }
23727- else
23728- {
23729- yyerror (YY_("syntax error"));
23730- if (yysize != 0)
23731- goto yyexhaustedlab;
23732- }
23733+ char const *yymsgp = YY_("syntax error");
23734+ int yysyntax_error_status;
23735+ yysyntax_error_status = YYSYNTAX_ERROR;
23736+ if (yysyntax_error_status == 0)
23737+ yymsgp = yymsg;
23738+ else if (yysyntax_error_status == 1)
23739+ {
23740+ if (yymsg != yymsgbuf)
23741+ YYSTACK_FREE (yymsg);
23742+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
23743+ if (!yymsg)
23744+ {
23745+ yymsg = yymsgbuf;
23746+ yymsg_alloc = sizeof yymsgbuf;
23747+ yysyntax_error_status = 2;
23748+ }
23749+ else
23750+ {
23751+ yysyntax_error_status = YYSYNTAX_ERROR;
23752+ yymsgp = yymsg;
23753+ }
23754+ }
23755+ yyerror (yymsgp);
23756+ if (yysyntax_error_status == 2)
23757+ goto yyexhaustedlab;
23758 }
23759+# undef YYSYNTAX_ERROR
23760 #endif
23761 }
23762
23763@@ -8461,24 +8588,24 @@
23764
23765 if (yyerrstatus == 3)
23766 {
23767- /* If just tried and failed to reuse look-ahead token after an
23768- error, discard it. */
23769+ /* If just tried and failed to reuse lookahead token after an
23770+ error, discard it. */
23771
23772 if (yychar <= YYEOF)
23773- {
23774- /* Return failure if at end of input. */
23775- if (yychar == YYEOF)
23776- YYABORT;
23777- }
23778+ {
23779+ /* Return failure if at end of input. */
23780+ if (yychar == YYEOF)
23781+ YYABORT;
23782+ }
23783 else
23784- {
23785- yydestruct ("Error: discarding",
23786- yytoken, &yylval);
23787- yychar = YYEMPTY;
23788- }
23789+ {
23790+ yydestruct ("Error: discarding",
23791+ yytoken, &yylval);
23792+ yychar = YYEMPTY;
23793+ }
23794 }
23795
23796- /* Else will try to reuse look-ahead token after shifting the error
23797+ /* Else will try to reuse lookahead token after shifting the error
23798 token. */
23799 goto yyerrlab1;
23800
23801@@ -8494,7 +8621,7 @@
23802 if (/*CONSTCOND*/ 0)
23803 goto yyerrorlab;
23804
23805- /* Do not reclaim the symbols of the rule which action triggered
23806+ /* Do not reclaim the symbols of the rule whose action triggered
23807 this YYERROR. */
23808 YYPOPSTACK (yylen);
23809 yylen = 0;
23810@@ -8507,38 +8634,37 @@
23811 | yyerrlab1 -- common code for both syntax error and YYERROR. |
23812 `-------------------------------------------------------------*/
23813 yyerrlab1:
23814- yyerrstatus = 3; /* Each real token shifted decrements this. */
23815+ yyerrstatus = 3; /* Each real token shifted decrements this. */
23816
23817 for (;;)
23818 {
23819 yyn = yypact[yystate];
23820- if (yyn != YYPACT_NINF)
23821- {
23822- yyn += YYTERROR;
23823- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
23824- {
23825- yyn = yytable[yyn];
23826- if (0 < yyn)
23827- break;
23828- }
23829- }
23830+ if (!yypact_value_is_default (yyn))
23831+ {
23832+ yyn += YYTERROR;
23833+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
23834+ {
23835+ yyn = yytable[yyn];
23836+ if (0 < yyn)
23837+ break;
23838+ }
23839+ }
23840
23841 /* Pop the current state because it cannot handle the error token. */
23842 if (yyssp == yyss)
23843- YYABORT;
23844+ YYABORT;
23845
23846
23847 yydestruct ("Error: popping",
23848- yystos[yystate], yyvsp);
23849+ yystos[yystate], yyvsp);
23850 YYPOPSTACK (1);
23851 yystate = *yyssp;
23852 YY_STACK_PRINT (yyss, yyssp);
23853 }
23854
23855- if (yyn == YYFINAL)
23856- YYACCEPT;
23857-
23858+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
23859 *++yyvsp = yylval;
23860+ YY_IGNORE_MAYBE_UNINITIALIZED_END
23861
23862
23863 /* Shift the error token. */
23864@@ -8562,7 +8688,7 @@
23865 yyresult = 1;
23866 goto yyreturn;
23867
23868-#ifndef yyoverflow
23869+#if !defined yyoverflow || YYERROR_VERBOSE
23870 /*-------------------------------------------------.
23871 | yyexhaustedlab -- memory exhaustion comes here. |
23872 `-------------------------------------------------*/
23873@@ -8573,17 +8699,22 @@
23874 #endif
23875
23876 yyreturn:
23877- if (yychar != YYEOF && yychar != YYEMPTY)
23878- yydestruct ("Cleanup: discarding lookahead",
23879- yytoken, &yylval);
23880- /* Do not reclaim the symbols of the rule which action triggered
23881+ if (yychar != YYEMPTY)
23882+ {
23883+ /* Make sure we have latest lookahead translation. See comments at
23884+ user semantic actions for why this is necessary. */
23885+ yytoken = YYTRANSLATE (yychar);
23886+ yydestruct ("Cleanup: discarding lookahead",
23887+ yytoken, &yylval);
23888+ }
23889+ /* Do not reclaim the symbols of the rule whose action triggered
23890 this YYABORT or YYACCEPT. */
23891 YYPOPSTACK (yylen);
23892 YY_STACK_PRINT (yyss, yyssp);
23893 while (yyssp != yyss)
23894 {
23895 yydestruct ("Cleanup: popping",
23896- yystos[*yyssp], yyvsp);
23897+ yystos[*yyssp], yyvsp);
23898 YYPOPSTACK (1);
23899 }
23900 #ifndef yyoverflow
23901@@ -8594,12 +8725,9 @@
23902 if (yymsg != yymsgbuf)
23903 YYSTACK_FREE (yymsg);
23904 #endif
23905- /* Make sure YYID is used. */
23906- return YYID (yyresult);
23907+ return yyresult;
23908 }
23909-
23910-
23911-#line 4742 "sip-4.19.12/sipgen/metasrc/parser.y"
23912+#line 4742 "sipgen/metasrc/parser.y" /* yacc.c:1906 */
23913
23914
23915
23916@@ -13483,4 +13611,3 @@
23917 if (sd->args[a].atype == ellipsis_type && a < sd->nrArgs - 1)
23918 yyerror("An ellipsis must be at the end of the argument list if /NoArgParser/ is not specified");
23919 }
23920-
23921diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/parser.h sip/sipgen/parser.h
23922--- ./sip-4.19.12.orig/sipgen/parser.h 2018-07-05 05:55:19.000000000 -0400
23923+++ sip/sipgen/parser.h 2018-09-18 18:12:23.642053256 -0400
23924@@ -1,14 +1,13 @@
23925-/* A Bison parser, made by GNU Bison 2.3. */
23926+/* A Bison parser, made by GNU Bison 3.0.4. */
23927
23928-/* Skeleton interface for Bison's Yacc-like parsers in C
23929+/* Bison interface for Yacc-like parsers in C
23930
23931- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
23932- Free Software Foundation, Inc.
23933+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
23934
23935- This program is free software; you can redistribute it and/or modify
23936+ This program is free software: you can redistribute it and/or modify
23937 it under the terms of the GNU General Public License as published by
23938- the Free Software Foundation; either version 2, or (at your option)
23939- any later version.
23940+ the Free Software Foundation, either version 3 of the License, or
23941+ (at your option) any later version.
23942
23943 This program is distributed in the hope that it will be useful,
23944 but WITHOUT ANY WARRANTY; without even the implied warranty of
23945@@ -16,9 +15,7 @@
23946 GNU General Public License for more details.
23947
23948 You should have received a copy of the GNU General Public License
23949- along with this program; if not, write to the Free Software
23950- Foundation, Inc., 51 Franklin Street, Fifth Floor,
23951- Boston, MA 02110-1301, USA. */
23952+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
23953
23954 /* As a special exception, you may create a larger work that contains
23955 part or all of the Bison parser skeleton and distribute that work
23956@@ -33,162 +30,171 @@
23957 This special exception was added by the Free Software Foundation in
23958 version 2.2 of Bison. */
23959
23960-/* Tokens. */
23961+#ifndef YY_YY_SIPGEN_PARSER_H_INCLUDED
23962+# define YY_YY_SIPGEN_PARSER_H_INCLUDED
23963+/* Debug traces. */
23964+#ifndef YYDEBUG
23965+# define YYDEBUG 0
23966+#endif
23967+#if YYDEBUG
23968+extern int yydebug;
23969+#endif
23970+
23971+/* Token type. */
23972 #ifndef YYTOKENTYPE
23973 # define YYTOKENTYPE
23974- /* Put the tokens into the symbol table, so that GDB and other debuggers
23975- know about them. */
23976- enum yytokentype {
23977- TK_API = 258,
23978- TK_AUTOPYNAME = 259,
23979- TK_DEFDOCSTRFMT = 260,
23980- TK_DEFDOCSTRSIG = 261,
23981- TK_DEFENCODING = 262,
23982- TK_PLUGIN = 263,
23983- TK_VIRTERRORHANDLER = 264,
23984- TK_EXPTYPEHINTCODE = 265,
23985- TK_TYPEHINTCODE = 266,
23986- TK_DOCSTRING = 267,
23987- TK_DOC = 268,
23988- TK_EXPORTEDDOC = 269,
23989- TK_EXTRACT = 270,
23990- TK_MAKEFILE = 271,
23991- TK_ACCESSCODE = 272,
23992- TK_GETCODE = 273,
23993- TK_SETCODE = 274,
23994- TK_PREINITCODE = 275,
23995- TK_INITCODE = 276,
23996- TK_POSTINITCODE = 277,
23997- TK_FINALCODE = 278,
23998- TK_UNITCODE = 279,
23999- TK_UNITPOSTINCLUDECODE = 280,
24000- TK_MODCODE = 281,
24001- TK_TYPECODE = 282,
24002- TK_PREPYCODE = 283,
24003- TK_COPYING = 284,
24004- TK_MAPPEDTYPE = 285,
24005- TK_CODELINE = 286,
24006- TK_IF = 287,
24007- TK_END = 288,
24008- TK_NAME_VALUE = 289,
24009- TK_PATH_VALUE = 290,
24010- TK_STRING_VALUE = 291,
24011- TK_VIRTUALCATCHERCODE = 292,
24012- TK_TRAVERSECODE = 293,
24013- TK_CLEARCODE = 294,
24014- TK_GETBUFFERCODE = 295,
24015- TK_RELEASEBUFFERCODE = 296,
24016- TK_READBUFFERCODE = 297,
24017- TK_WRITEBUFFERCODE = 298,
24018- TK_SEGCOUNTCODE = 299,
24019- TK_CHARBUFFERCODE = 300,
24020- TK_PICKLECODE = 301,
24021- TK_VIRTUALCALLCODE = 302,
24022- TK_METHODCODE = 303,
24023- TK_PREMETHODCODE = 304,
24024- TK_INSTANCECODE = 305,
24025- TK_FROMTYPE = 306,
24026- TK_TOTYPE = 307,
24027- TK_TOSUBCLASS = 308,
24028- TK_INCLUDE = 309,
24029- TK_OPTINCLUDE = 310,
24030- TK_IMPORT = 311,
24031- TK_EXPHEADERCODE = 312,
24032- TK_MODHEADERCODE = 313,
24033- TK_TYPEHEADERCODE = 314,
24034- TK_MODULE = 315,
24035- TK_CMODULE = 316,
24036- TK_CONSMODULE = 317,
24037- TK_COMPOMODULE = 318,
24038- TK_CLASS = 319,
24039- TK_STRUCT = 320,
24040- TK_PUBLIC = 321,
24041- TK_PROTECTED = 322,
24042- TK_PRIVATE = 323,
24043- TK_SIGNALS = 324,
24044- TK_SIGNAL_METHOD = 325,
24045- TK_SLOTS = 326,
24046- TK_SLOT_METHOD = 327,
24047- TK_BOOL = 328,
24048- TK_SHORT = 329,
24049- TK_INT = 330,
24050- TK_LONG = 331,
24051- TK_FLOAT = 332,
24052- TK_DOUBLE = 333,
24053- TK_CHAR = 334,
24054- TK_WCHAR_T = 335,
24055- TK_VOID = 336,
24056- TK_PYOBJECT = 337,
24057- TK_PYTUPLE = 338,
24058- TK_PYLIST = 339,
24059- TK_PYDICT = 340,
24060- TK_PYCALLABLE = 341,
24061- TK_PYSLICE = 342,
24062- TK_PYTYPE = 343,
24063- TK_PYBUFFER = 344,
24064- TK_VIRTUAL = 345,
24065- TK_ENUM = 346,
24066- TK_SIGNED = 347,
24067- TK_UNSIGNED = 348,
24068- TK_SCOPE = 349,
24069- TK_LOGICAL_OR = 350,
24070- TK_CONST = 351,
24071- TK_STATIC = 352,
24072- TK_SIPSIGNAL = 353,
24073- TK_SIPSLOT = 354,
24074- TK_SIPANYSLOT = 355,
24075- TK_SIPRXCON = 356,
24076- TK_SIPRXDIS = 357,
24077- TK_SIPSLOTCON = 358,
24078- TK_SIPSLOTDIS = 359,
24079- TK_SIPSSIZET = 360,
24080- TK_NUMBER_VALUE = 361,
24081- TK_REAL_VALUE = 362,
24082- TK_TYPEDEF = 363,
24083- TK_NAMESPACE = 364,
24084- TK_TIMELINE = 365,
24085- TK_PLATFORMS = 366,
24086- TK_FEATURE = 367,
24087- TK_LICENSE = 368,
24088- TK_QCHAR_VALUE = 369,
24089- TK_TRUE_VALUE = 370,
24090- TK_FALSE_VALUE = 371,
24091- TK_NULL_VALUE = 372,
24092- TK_OPERATOR = 373,
24093- TK_THROW = 374,
24094- TK_QOBJECT = 375,
24095- TK_EXCEPTION = 376,
24096- TK_RAISECODE = 377,
24097- TK_VIRTERRORCODE = 378,
24098- TK_EXPLICIT = 379,
24099- TK_TEMPLATE = 380,
24100- TK_FINAL = 381,
24101- TK_ELLIPSIS = 382,
24102- TK_DEFMETATYPE = 383,
24103- TK_DEFSUPERTYPE = 384,
24104- TK_PROPERTY = 385,
24105- TK_HIDE_NS = 386,
24106- TK_FORMAT = 387,
24107- TK_GET = 388,
24108- TK_ID = 389,
24109- TK_KWARGS = 390,
24110- TK_LANGUAGE = 391,
24111- TK_LICENSEE = 392,
24112- TK_NAME = 393,
24113- TK_OPTIONAL = 394,
24114- TK_ORDER = 395,
24115- TK_REMOVELEADING = 396,
24116- TK_SET = 397,
24117- TK_SIGNATURE = 398,
24118- TK_TIMESTAMP = 399,
24119- TK_TYPE = 400,
24120- TK_USEARGNAMES = 401,
24121- TK_USELIMITEDAPI = 402,
24122- TK_ALLRAISEPYEXC = 403,
24123- TK_CALLSUPERINIT = 404,
24124- TK_DEFERRORHANDLER = 405,
24125- TK_VERSION = 406
24126- };
24127+ enum yytokentype
24128+ {
24129+ TK_API = 258,
24130+ TK_AUTOPYNAME = 259,
24131+ TK_DEFDOCSTRFMT = 260,
24132+ TK_DEFDOCSTRSIG = 261,
24133+ TK_DEFENCODING = 262,
24134+ TK_PLUGIN = 263,
24135+ TK_VIRTERRORHANDLER = 264,
24136+ TK_EXPTYPEHINTCODE = 265,
24137+ TK_TYPEHINTCODE = 266,
24138+ TK_DOCSTRING = 267,
24139+ TK_DOC = 268,
24140+ TK_EXPORTEDDOC = 269,
24141+ TK_EXTRACT = 270,
24142+ TK_MAKEFILE = 271,
24143+ TK_ACCESSCODE = 272,
24144+ TK_GETCODE = 273,
24145+ TK_SETCODE = 274,
24146+ TK_PREINITCODE = 275,
24147+ TK_INITCODE = 276,
24148+ TK_POSTINITCODE = 277,
24149+ TK_FINALCODE = 278,
24150+ TK_UNITCODE = 279,
24151+ TK_UNITPOSTINCLUDECODE = 280,
24152+ TK_MODCODE = 281,
24153+ TK_TYPECODE = 282,
24154+ TK_PREPYCODE = 283,
24155+ TK_COPYING = 284,
24156+ TK_MAPPEDTYPE = 285,
24157+ TK_CODELINE = 286,
24158+ TK_IF = 287,
24159+ TK_END = 288,
24160+ TK_NAME_VALUE = 289,
24161+ TK_PATH_VALUE = 290,
24162+ TK_STRING_VALUE = 291,
24163+ TK_VIRTUALCATCHERCODE = 292,
24164+ TK_TRAVERSECODE = 293,
24165+ TK_CLEARCODE = 294,
24166+ TK_GETBUFFERCODE = 295,
24167+ TK_RELEASEBUFFERCODE = 296,
24168+ TK_READBUFFERCODE = 297,
24169+ TK_WRITEBUFFERCODE = 298,
24170+ TK_SEGCOUNTCODE = 299,
24171+ TK_CHARBUFFERCODE = 300,
24172+ TK_PICKLECODE = 301,
24173+ TK_VIRTUALCALLCODE = 302,
24174+ TK_METHODCODE = 303,
24175+ TK_PREMETHODCODE = 304,
24176+ TK_INSTANCECODE = 305,
24177+ TK_FROMTYPE = 306,
24178+ TK_TOTYPE = 307,
24179+ TK_TOSUBCLASS = 308,
24180+ TK_INCLUDE = 309,
24181+ TK_OPTINCLUDE = 310,
24182+ TK_IMPORT = 311,
24183+ TK_EXPHEADERCODE = 312,
24184+ TK_MODHEADERCODE = 313,
24185+ TK_TYPEHEADERCODE = 314,
24186+ TK_MODULE = 315,
24187+ TK_CMODULE = 316,
24188+ TK_CONSMODULE = 317,
24189+ TK_COMPOMODULE = 318,
24190+ TK_CLASS = 319,
24191+ TK_STRUCT = 320,
24192+ TK_PUBLIC = 321,
24193+ TK_PROTECTED = 322,
24194+ TK_PRIVATE = 323,
24195+ TK_SIGNALS = 324,
24196+ TK_SIGNAL_METHOD = 325,
24197+ TK_SLOTS = 326,
24198+ TK_SLOT_METHOD = 327,
24199+ TK_BOOL = 328,
24200+ TK_SHORT = 329,
24201+ TK_INT = 330,
24202+ TK_LONG = 331,
24203+ TK_FLOAT = 332,
24204+ TK_DOUBLE = 333,
24205+ TK_CHAR = 334,
24206+ TK_WCHAR_T = 335,
24207+ TK_VOID = 336,
24208+ TK_PYOBJECT = 337,
24209+ TK_PYTUPLE = 338,
24210+ TK_PYLIST = 339,
24211+ TK_PYDICT = 340,
24212+ TK_PYCALLABLE = 341,
24213+ TK_PYSLICE = 342,
24214+ TK_PYTYPE = 343,
24215+ TK_PYBUFFER = 344,
24216+ TK_VIRTUAL = 345,
24217+ TK_ENUM = 346,
24218+ TK_SIGNED = 347,
24219+ TK_UNSIGNED = 348,
24220+ TK_SCOPE = 349,
24221+ TK_LOGICAL_OR = 350,
24222+ TK_CONST = 351,
24223+ TK_STATIC = 352,
24224+ TK_SIPSIGNAL = 353,
24225+ TK_SIPSLOT = 354,
24226+ TK_SIPANYSLOT = 355,
24227+ TK_SIPRXCON = 356,
24228+ TK_SIPRXDIS = 357,
24229+ TK_SIPSLOTCON = 358,
24230+ TK_SIPSLOTDIS = 359,
24231+ TK_SIPSSIZET = 360,
24232+ TK_NUMBER_VALUE = 361,
24233+ TK_REAL_VALUE = 362,
24234+ TK_TYPEDEF = 363,
24235+ TK_NAMESPACE = 364,
24236+ TK_TIMELINE = 365,
24237+ TK_PLATFORMS = 366,
24238+ TK_FEATURE = 367,
24239+ TK_LICENSE = 368,
24240+ TK_QCHAR_VALUE = 369,
24241+ TK_TRUE_VALUE = 370,
24242+ TK_FALSE_VALUE = 371,
24243+ TK_NULL_VALUE = 372,
24244+ TK_OPERATOR = 373,
24245+ TK_THROW = 374,
24246+ TK_QOBJECT = 375,
24247+ TK_EXCEPTION = 376,
24248+ TK_RAISECODE = 377,
24249+ TK_VIRTERRORCODE = 378,
24250+ TK_EXPLICIT = 379,
24251+ TK_TEMPLATE = 380,
24252+ TK_FINAL = 381,
24253+ TK_ELLIPSIS = 382,
24254+ TK_DEFMETATYPE = 383,
24255+ TK_DEFSUPERTYPE = 384,
24256+ TK_PROPERTY = 385,
24257+ TK_HIDE_NS = 386,
24258+ TK_FORMAT = 387,
24259+ TK_GET = 388,
24260+ TK_ID = 389,
24261+ TK_KWARGS = 390,
24262+ TK_LANGUAGE = 391,
24263+ TK_LICENSEE = 392,
24264+ TK_NAME = 393,
24265+ TK_OPTIONAL = 394,
24266+ TK_ORDER = 395,
24267+ TK_REMOVELEADING = 396,
24268+ TK_SET = 397,
24269+ TK_SIGNATURE = 398,
24270+ TK_TIMESTAMP = 399,
24271+ TK_TYPE = 400,
24272+ TK_USEARGNAMES = 401,
24273+ TK_USELIMITEDAPI = 402,
24274+ TK_ALLRAISEPYEXC = 403,
24275+ TK_CALLSUPERINIT = 404,
24276+ TK_DEFERRORHANDLER = 405,
24277+ TK_VERSION = 406
24278+ };
24279 #endif
24280 /* Tokens. */
24281 #define TK_API 258
24282@@ -341,13 +347,13 @@
24283 #define TK_DEFERRORHANDLER 405
24284 #define TK_VERSION 406
24285
24286-
24287-
24288-
24289+/* Value type. */
24290 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
24291-typedef union YYSTYPE
24292-#line 203 "sip-4.19.12/sipgen/metasrc/parser.y"
24293+
24294+union YYSTYPE
24295 {
24296+#line 203 "sipgen/metasrc/parser.y" /* yacc.c:1909 */
24297+
24298 char qchar;
24299 char *text;
24300 long number;
24301@@ -390,14 +396,18 @@
24302 variableCfg variable;
24303 vehCfg veh;
24304 int token;
24305-}
24306-/* Line 1529 of yacc.c. */
24307-#line 396 "sip-4.19.12/sipgen/parser.h"
24308- YYSTYPE;
24309-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
24310-# define YYSTYPE_IS_DECLARED 1
24311+
24312+#line 401 "sipgen/parser.h" /* yacc.c:1909 */
24313+};
24314+
24315+typedef union YYSTYPE YYSTYPE;
24316 # define YYSTYPE_IS_TRIVIAL 1
24317+# define YYSTYPE_IS_DECLARED 1
24318 #endif
24319
24320+
24321 extern YYSTYPE yylval;
24322
24323+int yyparse (void);
24324+
24325+#endif /* !YY_YY_SIPGEN_PARSER_H_INCLUDED */
24326diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h sip/sipgen/sip.h
24327--- ./sip-4.19.12.orig/sipgen/sip.h 2018-07-05 05:55:19.000000000 -0400
24328+++ sip/sipgen/sip.h 2018-09-18 18:12:23.643053242 -0400
24329@@ -27,8 +27,8 @@
24330 /*
24331 * Define the SIP version number.
24332 */
24333-#define SIP_VERSION 0x04130c
24334-#define SIP_VERSION_STR "4.19.12"
24335+#define SIP_VERSION 0x04ffff
24336+#define SIP_VERSION_STR "4.255.255"
24337
24338
24339 #ifdef TRUE
24340diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/sip.h.in sip/sipgen/sip.h.in
24341--- ./sip-4.19.12.orig/sipgen/sip.h.in 1969-12-31 19:00:00.000000000 -0500
24342+++ sip/sipgen/sip.h.in 2018-09-24 13:12:20.674276069 -0400
24343@@ -0,0 +1,1653 @@
24344+/*
24345+ * The main header file for SIP.
24346+ *
24347+ * Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
24348+ *
24349+ * This file is part of SIP.
24350+ *
24351+ * This copy of SIP is licensed for use under the terms of the SIP License
24352+ * Agreement. See the file LICENSE for more details.
24353+ *
24354+ * This copy of SIP may also used under the terms of the GNU General Public
24355+ * License v2 or v3 as published by the Free Software Foundation which can be
24356+ * found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
24357+ *
24358+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
24359+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
24360+ */
24361+
24362+
24363+#ifndef SIP_H
24364+#define SIP_H
24365+
24366+#include <stdio.h>
24367+#include <sys/types.h>
24368+
24369+
24370+/*
24371+ * Define the SIP version number.
24372+ */
24373+#define SIP_VERSION 0x@RM_HEXVERSION@
24374+#define SIP_VERSION_STR "@RM_RELEASE@"
24375+
24376+
24377+#ifdef TRUE
24378+#undef TRUE
24379+#endif
24380+
24381+#ifdef FALSE
24382+#undef FALSE
24383+#endif
24384+
24385+#define TRUE 1
24386+#define FALSE 0
24387+
24388+
24389+/* Some convenient compiler extensions. */
24390+
24391+#if defined(__GNUC__)
24392+#define SIP_NORETURN __attribute__((__noreturn__))
24393+#define SIP_UNUSED __attribute__((__unused__))
24394+#elif defined(_MSC_VER)
24395+#define SIP_NORETURN __declspec(noreturn)
24396+#endif
24397+
24398+#if !defined(SIP_NORETURN)
24399+#define SIP_NORETURN
24400+#endif
24401+#if !defined(SIP_UNUSED)
24402+#define SIP_UNUSED
24403+#endif
24404+
24405+
24406+#define DEFAULT_OFILE_EXT ".o" /* Default object file extension. */
24407+
24408+#define MAX_NR_ARGS 20 /* Max. nr. args. to a function or template. */
24409+#define MAX_NR_DEREFS 5 /* Max. nr. type derefences. */
24410+
24411+
24412+/* For convenience. */
24413+
24414+#define classBaseName(cd) scopedNameTail((cd)->iff->fqcname)
24415+#define classFQCName(cd) ((cd)->iff->fqcname)
24416+
24417+/* Return the Python scope corresponding to a C/C++ scope. */
24418+#define pyScope(c) ((c) != NULL && isHiddenNamespace(c) ? NULL : (c))
24419+
24420+
24421+/* Handle module flags. */
24422+
24423+#define MOD_HAS_DELAYED_DTORS 0x0001 /* It has a class with a delayed dtor. */
24424+#define MOD_IS_CONSOLIDATED 0x0002 /* It is a consolidated module. */
24425+#define MOD_IS_COMPOSITE 0x0004 /* It is a composite module. */
24426+#define MOD_IS_TRANSFORMED 0x0008 /* It's types have been transformed. */
24427+#define MOD_USE_ARG_NAMES 0x0010 /* Use real argument names. */
24428+#define MOD_USE_LIMITED_API 0x0020 /* Use the limited API. */
24429+#define MOD_ALL_RAISE_PY_EXC 0x0040 /* All callable raise a Python exception. */
24430+#define MOD_SUPER_INIT_NO 0x0080 /* Don't call super().__init__(). */
24431+#define MOD_SUPER_INIT_YES 0x0100 /* Call super().__init__(). */
24432+#define MOD_SUPER_INIT_UNDEF 0x0000 /* Calling super().__init__() is undefined. */
24433+#define MOD_SUPER_INIT_MASK 0x0180 /* The mask for the above flags. */
24434+#define MOD_SETTING_IMPORTS 0x0200 /* Imports are being set. */
24435+
24436+#define hasDelayedDtors(m) ((m)->modflags & MOD_HAS_DELAYED_DTORS)
24437+#define setHasDelayedDtors(m) ((m)->modflags |= MOD_HAS_DELAYED_DTORS)
24438+#define isConsolidated(m) ((m)->modflags & MOD_IS_CONSOLIDATED)
24439+#define setIsConsolidated(m) ((m)->modflags |= MOD_IS_CONSOLIDATED)
24440+#define isComposite(m) ((m)->modflags & MOD_IS_COMPOSITE)
24441+#define setIsComposite(m) ((m)->modflags |= MOD_IS_COMPOSITE)
24442+#define isContainer(m) ((m)->modflags & (MOD_IS_CONSOLIDATED | MOD_IS_COMPOSITE))
24443+#define setIsTransformed(m) ((m)->modflags |= MOD_IS_TRANSFORMED)
24444+#define isTransformed(m) ((m)->modflags & MOD_IS_TRANSFORMED)
24445+#define setUseArgNames(m) ((m)->modflags |= MOD_USE_ARG_NAMES)
24446+#define useArgNames(m) ((m)->modflags & MOD_USE_ARG_NAMES)
24447+#define setUseLimitedAPI(m) ((m)->modflags |= MOD_USE_LIMITED_API)
24448+#define useLimitedAPI(m) ((m)->modflags & MOD_USE_LIMITED_API)
24449+#define setAllRaisePyException(m) ((m)->modflags |= MOD_ALL_RAISE_PY_EXC)
24450+#define allRaisePyException(m) ((m)->modflags & MOD_ALL_RAISE_PY_EXC)
24451+#define setCallSuperInitNo(m) ((m)->modflags = ((m)->modflags & ~MOD_SUPER_INIT_MASK) | MOD_SUPER_INIT_NO)
24452+#define setCallSuperInitYes(m) ((m)->modflags = ((m)->modflags & ~MOD_SUPER_INIT_MASK) | MOD_SUPER_INIT_YES)
24453+#define isCallSuperInitYes(m) (((m)->modflags & MOD_SUPER_INIT_MASK) == MOD_SUPER_INIT_YES)
24454+#define isCallSuperInitUndefined(m) (((m)->modflags & MOD_SUPER_INIT_MASK) == MOD_SUPER_INIT_UNDEF)
24455+#define settingImports(m) ((m)->modflags & MOD_SETTING_IMPORTS)
24456+#define setSettingImports(m) ((m)->modflags |= MOD_SETTING_IMPORTS)
24457+#define resetSettingImports(m) ((m)->modflags &= ~MOD_SETTING_IMPORTS)
24458+
24459+
24460+/* Handle section flags. */
24461+
24462+#define SECT_IS_PUBLIC 0x01 /* It is public. */
24463+#define SECT_IS_PROT 0x02 /* It is protected. */
24464+#define SECT_IS_PRIVATE 0x04 /* It is private. */
24465+#define SECT_IS_SLOT 0x08 /* It is a slot. */
24466+#define SECT_IS_SIGNAL 0x10 /* It is a signal. */
24467+#define SECT_MASK 0x1f /* The mask of all flags. */
24468+
24469+
24470+/* Handle class flags. These are combined with the section flags. */
24471+
24472+#define CLASS_HAS_SIGSLOTS 0x00000200 /* It has signals or slots. */
24473+#define CLASS_IS_ABSTRACT 0x00000400 /* It is an abstract class. */
24474+#define CLASS_HAS_SHADOW 0x00000800 /* It is has a shadow class. */
24475+#define CLASS_IS_OPAQUE 0x00001000 /* It is opaque. */
24476+#define CLASS_HAS_VAR_HANDLERS 0x00002000 /* It has variable handlers. */
24477+#define CLASS_DTOR_RELEASE_GIL 0x00004000 /* The dtor releases the GIL. */
24478+#define CLASS_IS_PROTECTED 0x00008000 /* It is protected. */
24479+#define CLASS_IS_PROTECTED_SAV 0x00010000 /* It is protected (saved). */
24480+#define CLASS_IS_INCOMPLETE 0x00020000 /* The specification is incomplete. */
24481+#define CLASS_CAN_CREATE 0x00040000 /* It has usable ctors. */
24482+#define CLASS_IS_EXTERNAL 0x00080000 /* It is external. */
24483+#define CLASS_IS_DELAYED_DTOR 0x00100000 /* The dtor is delayed. */
24484+#define CLASS_NO_DEFAULT_CTORS 0x00200000 /* Don't create default ctors. */
24485+#define CLASS_QOBJECT_SUB 0x00400000 /* It is derived from QObject. */
24486+#define CLASS_DTOR_HOLD_GIL 0x00800000 /* The dtor holds the GIL. */
24487+#define CLASS_ASSIGN_HELPER 0x01000000 /* Generate an assignment helper. */
24488+#define CLASS_NO_QMETAOBJECT 0x02000000 /* It has no QMetaObject. */
24489+#define CLASS_IS_TEMPLATE 0x04000000 /* It is a template class. */
24490+#define CLASS_IS_DEPRECATED 0x08000000 /* It is deprecated. */
24491+#define CLASS_CANNOT_COPY 0x10000000 /* It cannot be copied. */
24492+#define CLASS_CANNOT_ASSIGN 0x20000000 /* It cannot be assigned. */
24493+#define CLASS_ALLOW_NONE 0x40000000 /* The class will handle None. */
24494+#define CLASS_HAS_NONLAZY 0x80000000 /* The class has non-lazy methods. */
24495+
24496+#define hasSigSlots(cd) ((cd)->classflags & CLASS_HAS_SIGSLOTS)
24497+#define setHasSigSlots(cd) ((cd)->classflags |= CLASS_HAS_SIGSLOTS)
24498+#define isAbstractClass(cd) ((cd)->classflags & CLASS_IS_ABSTRACT)
24499+#define setIsAbstractClass(cd) ((cd)->classflags |= CLASS_IS_ABSTRACT)
24500+#define hasShadow(cd) ((cd)->classflags & CLASS_HAS_SHADOW)
24501+#define setHasShadow(cd) ((cd)->classflags |= CLASS_HAS_SHADOW)
24502+#define resetHasShadow(cd) ((cd)->classflags &= ~CLASS_HAS_SHADOW)
24503+#define isOpaque(cd) ((cd)->classflags & CLASS_IS_OPAQUE)
24504+#define setIsOpaque(cd) ((cd)->classflags |= CLASS_IS_OPAQUE)
24505+#define hasVarHandlers(cd) ((cd)->classflags & CLASS_HAS_VAR_HANDLERS)
24506+#define setHasVarHandlers(cd) ((cd)->classflags |= CLASS_HAS_VAR_HANDLERS)
24507+#define isProtectedClass(cd) ((cd)->classflags & CLASS_IS_PROTECTED)
24508+#define setIsProtectedClass(cd) ((cd)->classflags |= CLASS_IS_PROTECTED)
24509+#define resetIsProtectedClass(cd) ((cd)->classflags &= ~CLASS_IS_PROTECTED)
24510+#define wasProtectedClass(cd) ((cd)->classflags & CLASS_IS_PROTECTED_SAV)
24511+#define setWasProtectedClass(cd) ((cd)->classflags |= CLASS_IS_PROTECTED_SAV)
24512+#define resetWasProtectedClass(cd) ((cd)->classflags &= ~CLASS_IS_PROTECTED_SAV)
24513+#define isReleaseGILDtor(cd) ((cd)->classflags & CLASS_DTOR_RELEASE_GIL)
24514+#define setIsReleaseGILDtor(cd) ((cd)->classflags |= CLASS_DTOR_RELEASE_GIL)
24515+#define isIncomplete(cd) ((cd)->classflags & CLASS_IS_INCOMPLETE)
24516+#define setIsIncomplete(cd) ((cd)->classflags |= CLASS_IS_INCOMPLETE)
24517+#define canCreate(cd) ((cd)->classflags & CLASS_CAN_CREATE)
24518+#define setCanCreate(cd) ((cd)->classflags |= CLASS_CAN_CREATE)
24519+#define resetCanCreate(cd) ((cd)->classflags &= ~CLASS_CAN_CREATE)
24520+#define isExternal(cd) ((cd)->classflags & CLASS_IS_EXTERNAL)
24521+#define setIsExternal(cd) ((cd)->classflags |= CLASS_IS_EXTERNAL)
24522+#define isDelayedDtor(cd) ((cd)->classflags & CLASS_IS_DELAYED_DTOR)
24523+#define setIsDelayedDtor(cd) ((cd)->classflags |= CLASS_IS_DELAYED_DTOR)
24524+#define noDefaultCtors(cd) ((cd)->classflags & CLASS_NO_DEFAULT_CTORS)
24525+#define setNoDefaultCtors(cd) ((cd)->classflags |= CLASS_NO_DEFAULT_CTORS)
24526+#define isQObjectSubClass(cd) ((cd)->classflags & CLASS_QOBJECT_SUB)
24527+#define setIsQObjectSubClass(cd) ((cd)->classflags |= CLASS_QOBJECT_SUB)
24528+#define isHoldGILDtor(cd) ((cd)->classflags & CLASS_DTOR_HOLD_GIL)
24529+#define setIsHoldGILDtor(cd) ((cd)->classflags |= CLASS_DTOR_HOLD_GIL)
24530+#define assignmentHelper(cd) ((cd)->classflags & CLASS_ASSIGN_HELPER)
24531+#define setAssignmentHelper(cd) ((cd)->classflags |= CLASS_ASSIGN_HELPER)
24532+#define noPyQtQMetaObject(cd) ((cd)->classflags & CLASS_NO_QMETAOBJECT)
24533+#define setPyQtNoQMetaObject(cd) ((cd)->classflags |= CLASS_NO_QMETAOBJECT)
24534+#define isTemplateClass(cd) ((cd)->classflags & CLASS_IS_TEMPLATE)
24535+#define setIsTemplateClass(cd) ((cd)->classflags |= CLASS_IS_TEMPLATE)
24536+#define resetIsTemplateClass(cd) ((cd)->classflags &= ~CLASS_IS_TEMPLATE)
24537+#define isDeprecatedClass(cd) ((cd)->classflags & CLASS_IS_DEPRECATED)
24538+#define setIsDeprecatedClass(cd) ((cd)->classflags |= CLASS_IS_DEPRECATED)
24539+#define cannotCopy(cd) ((cd)->classflags & CLASS_CANNOT_COPY)
24540+#define setCannotCopy(cd) ((cd)->classflags |= CLASS_CANNOT_COPY)
24541+#define cannotAssign(cd) ((cd)->classflags & CLASS_CANNOT_ASSIGN)
24542+#define setCannotAssign(cd) ((cd)->classflags |= CLASS_CANNOT_ASSIGN)
24543+#define classHandlesNone(cd) ((cd)->classflags & CLASS_ALLOW_NONE)
24544+#define setClassHandlesNone(cd) ((cd)->classflags |= CLASS_ALLOW_NONE)
24545+#define hasNonlazyMethod(cd) ((cd)->classflags & CLASS_HAS_NONLAZY)
24546+#define setHasNonlazyMethod(cd) ((cd)->classflags |= CLASS_HAS_NONLAZY)
24547+
24548+#define isPublicDtor(cd) ((cd)->classflags & SECT_IS_PUBLIC)
24549+#define setIsPublicDtor(cd) ((cd)->classflags |= SECT_IS_PUBLIC)
24550+#define isProtectedDtor(cd) ((cd)->classflags & SECT_IS_PROT)
24551+#define isPrivateDtor(cd) ((cd)->classflags & SECT_IS_PRIVATE)
24552+
24553+#define isDtor(cd) ((cd)->classflags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE))
24554+
24555+
24556+/* Handle the second group of class flags. */
24557+
24558+#define CLASS2_TMPL_ARG 0x01 /* The class is a template argument. */
24559+#define CLASS2_MIXIN 0x02 /* The class is a mixin. */
24560+#define CLASS2_EXPORT_DERIVED 0x04 /* Export the derived class declaration. */
24561+#define CLASS2_HIDDEN_NS 0x08 /* The namespace is hidden. */
24562+#define CLASS2_USE_TMPL_NAME 0x10 /* Use the template name. */
24563+#define CLASS2_NEEDS_SHADOW 0x20 /* The class needs a shadow class. */
24564+
24565+#define isTemplateArg(cd) ((cd)->classflags2 & CLASS2_TMPL_ARG)
24566+#define setTemplateArg(cd) ((cd)->classflags2 |= CLASS2_TMPL_ARG)
24567+#define resetTemplateArg(cd) ((cd)->classflags2 &= ~CLASS2_TMPL_ARG)
24568+#define isMixin(cd) ((cd)->classflags2 & CLASS2_MIXIN)
24569+#define setMixin(cd) ((cd)->classflags2 |= CLASS2_MIXIN)
24570+#define isExportDerived(cd) ((cd)->classflags2 & CLASS2_EXPORT_DERIVED)
24571+#define setExportDerived(cd) ((cd)->classflags2 |= CLASS2_EXPORT_DERIVED)
24572+#define isHiddenNamespace(cd) ((cd)->classflags2 & CLASS2_HIDDEN_NS)
24573+#define setHiddenNamespace(cd) ((cd)->classflags2 |= CLASS2_HIDDEN_NS)
24574+#define useTemplateName(cd) ((cd)->classflags2 & CLASS2_USE_TMPL_NAME)
24575+#define setUseTemplateName(cd) ((cd)->classflags2 |= CLASS2_USE_TMPL_NAME)
24576+#define needsShadow(cd) ((cd)->classflags & CLASS2_NEEDS_SHADOW)
24577+#define setNeedsShadow(cd) ((cd)->classflags |= CLASS2_NEEDS_SHADOW)
24578+
24579+
24580+/* Handle ctor flags. These are combined with the section flags. */
24581+
24582+#define CTOR_RELEASE_GIL 0x00000100 /* The ctor releases the GIL. */
24583+#define CTOR_EXPLICIT 0x00000200 /* The ctor is explicit. */
24584+#define CTOR_CAST 0x00000400 /* The ctor is a cast. */
24585+#define CTOR_HOLD_GIL 0x00000800 /* The ctor holds the GIL. */
24586+#define CTOR_XFERRED 0x00001000 /* Ownership is transferred. */
24587+#define CTOR_IS_DEPRECATED 0x00002000 /* The ctor is deprecated. */
24588+#define CTOR_RAISES_PY_EXC 0x00004000 /* It raises a Python exception. */
24589+
24590+#define isPublicCtor(c) ((c)->ctorflags & SECT_IS_PUBLIC)
24591+#define setIsPublicCtor(c) ((c)->ctorflags |= SECT_IS_PUBLIC)
24592+#define isProtectedCtor(c) ((c)->ctorflags & SECT_IS_PROT)
24593+#define setIsProtectedCtor(c) ((c)->ctorflags |= SECT_IS_PROT)
24594+#define isPrivateCtor(c) ((c)->ctorflags & SECT_IS_PRIVATE)
24595+#define setIsPrivateCtor(c) ((c)->ctorflags |= SECT_IS_PRIVATE)
24596+
24597+#define isReleaseGILCtor(c) ((c)->ctorflags & CTOR_RELEASE_GIL)
24598+#define setIsReleaseGILCtor(c) ((c)->ctorflags |= CTOR_RELEASE_GIL)
24599+#define isExplicitCtor(c) ((c)->ctorflags & CTOR_EXPLICIT)
24600+#define setIsExplicitCtor(c) ((c)->ctorflags |= CTOR_EXPLICIT)
24601+#define isCastCtor(c) ((c)->ctorflags & CTOR_CAST)
24602+#define isHoldGILCtor(c) ((c)->ctorflags & CTOR_HOLD_GIL)
24603+#define setIsHoldGILCtor(c) ((c)->ctorflags |= CTOR_HOLD_GIL)
24604+#define isResultTransferredCtor(c) ((c)->ctorflags & CTOR_XFERRED)
24605+#define setIsResultTransferredCtor(c) ((c)->ctorflags |= CTOR_XFERRED)
24606+#define isDeprecatedCtor(c) ((c)->ctorflags & CTOR_IS_DEPRECATED)
24607+#define setIsDeprecatedCtor(c) ((c)->ctorflags |= CTOR_IS_DEPRECATED)
24608+#define raisesPyExceptionCtor(c) ((c)->ctorflags & CTOR_RAISES_PY_EXC)
24609+#define setRaisesPyExceptionCtor(c) ((c)->ctorflags |= CTOR_RAISES_PY_EXC)
24610+
24611+
24612+/* Handle member flags. */
24613+
24614+#define MEMBR_NUMERIC 0x0001 /* It is a numeric slot. */
24615+#define MEMBR_SEQUENCE 0x0002 /* It is a sequnce slot. */
24616+#define MEMBR_NO_ARG_PARSER 0x0004 /* Don't generate an argument parser. */
24617+#define MEMBR_NOT_VERSIONED 0x0008 /* There is an unversioned overload. */
24618+#define MEMBR_KEYWORD_ARGS 0x0010 /* It allows keyword arguments. */
24619+#define MEMBR_HAS_PROTECTED 0x0011 /* It has a protected overload. */
24620+
24621+#define isNumeric(m) ((m)->memberflags & MEMBR_NUMERIC)
24622+#define setIsNumeric(m) ((m)->memberflags |= MEMBR_NUMERIC)
24623+#define isSequence(m) ((m)->memberflags & MEMBR_SEQUENCE)
24624+#define setIsSequence(m) ((m)->memberflags |= MEMBR_SEQUENCE)
24625+#define noArgParser(m) ((m)->memberflags & MEMBR_NO_ARG_PARSER)
24626+#define setNoArgParser(m) ((m)->memberflags |= MEMBR_NO_ARG_PARSER)
24627+#define notVersioned(m) ((m)->memberflags & MEMBR_NOT_VERSIONED)
24628+#define setNotVersioned(m) ((m)->memberflags |= MEMBR_NOT_VERSIONED)
24629+#define useKeywordArgs(m) ((m)->memberflags & MEMBR_KEYWORD_ARGS)
24630+#define setUseKeywordArgs(m) ((m)->memberflags |= MEMBR_KEYWORD_ARGS)
24631+#define hasProtected(m) ((m)->memberflags & MEMBR_HAS_PROTECTED)
24632+#define setHasProtected(m) ((m)->memberflags |= MEMBR_HAS_PROTECTED)
24633+
24634+
24635+/* Handle enum flags. These are combined with the section flags. */
24636+
24637+#define ENUM_WAS_PROT 0x00000100 /* It was defined as protected. */
24638+#define ENUM_NO_SCOPE 0x00000200 /* Omit the member scopes. */
24639+#define ENUM_NEEDS_ENUM 0x00000400 /* The module needs it. */
24640+#define ENUM_SCOPED 0x00000800 /* A C++0x11 scoped enum. */
24641+
24642+#define isProtectedEnum(e) ((e)->enumflags & SECT_IS_PROT)
24643+#define setIsProtectedEnum(e) ((e)->enumflags |= SECT_IS_PROT)
24644+#define resetIsProtectedEnum(e) ((e)->enumflags &= ~SECT_IS_PROT)
24645+
24646+#define wasProtectedEnum(e) ((e)->enumflags & ENUM_WAS_PROT)
24647+#define setWasProtectedEnum(e) ((e)->enumflags |= ENUM_WAS_PROT)
24648+#define resetWasProtectedEnum(e) ((e)->enumflags &= ~ENUM_WAS_PROT)
24649+#define isNoScope(e) ((e)->enumflags & ENUM_NO_SCOPE)
24650+#define setIsNoScope(e) ((e)->enumflags |= ENUM_NO_SCOPE)
24651+#define needsEnum(e) ((e)->enumflags & ENUM_NEEDS_ENUM)
24652+#define setNeedsEnum(e) ((e)->enumflags |= ENUM_NEEDS_ENUM)
24653+#define isScopedEnum(e) ((e)->enumflags & ENUM_SCOPED)
24654+#define setIsScopedEnum(e) ((e)->enumflags |= ENUM_SCOPED)
24655+
24656+
24657+/* Handle hierarchy flags. */
24658+
24659+#define HIER_IS_DUPLICATE 0x0001 /* It is a super class duplicate. */
24660+#define HIER_HAS_DUPLICATE 0x0002 /* It has a super class duplicate. */
24661+#define HIER_BEING_SET 0x0004 /* The MRO is being set. */
24662+
24663+#define isDuplicateSuper(m) ((m)->mroflags & HIER_IS_DUPLICATE)
24664+#define setIsDuplicateSuper(m) ((m)->mroflags |= HIER_IS_DUPLICATE)
24665+#define hasDuplicateSuper(m) ((m)->mroflags & HIER_HAS_DUPLICATE)
24666+#define setHasDuplicateSuper(m) ((m)->mroflags |= HIER_HAS_DUPLICATE)
24667+#define hierBeingSet(m) ((m)->mroflags & HIER_BEING_SET)
24668+#define setHierBeingSet(m) ((m)->mroflags |= HIER_BEING_SET)
24669+#define resetHierBeingSet(m) ((m)->mroflags &= ~HIER_BEING_SET)
24670+
24671+
24672+/* Handle overload flags. These are combined with the section flags. */
24673+
24674+#define OVER_IS_VIRTUAL 0x00000100 /* It is virtual. */
24675+#define OVER_IS_ABSTRACT 0x00000200 /* It is abstract. */
24676+#define OVER_IS_CONST 0x00000400 /* It is a const function. */
24677+#define OVER_IS_STATIC 0x00000800 /* It is a static function. */
24678+#define OVER_IS_AUTOGEN 0x00001000 /* It is auto-generated. */
24679+#define OVER_IS_NEW_THREAD 0x00002000 /* It is in a new thread. */
24680+#define OVER_IS_FACTORY 0x00004000 /* It is a factory method. */
24681+#define OVER_XFERRED_BACK 0x00008000 /* Ownership is transferred back. */
24682+#define OVER_XFERRED 0x00010000 /* Ownership is transferred. */
24683+#define OVER_IS_VIRTUAL_REIMP 0x00020000 /* It is a re-implementation of a virtual. */
24684+#define OVER_DONT_DEREF_SELF 0x00040000 /* For comparison operators, don't dereference self. */
24685+#define OVER_HOLD_GIL 0x00080000 /* The function holds the GIL. */
24686+#define OVER_RELEASE_GIL 0x00100000 /* The function releases the GIL. */
24687+#define OVER_THIS_XFERRED 0x00200000 /* Ownership of this is transferred. */
24688+#define OVER_IS_GLOBAL 0x00400000 /* It is a global operator. */
24689+#define OVER_IS_COMPLEMENTARY 0x00800000 /* It is a complementary operator. */
24690+#define OVER_IS_DEPRECATED 0x01000000 /* It is deprecated. */
24691+#define OVER_REALLY_PROT 0x02000000 /* It really is protected. */
24692+#define OVER_IS_DELATTR 0x04000000 /* It is __delattr__. */
24693+#define OVER_RAISES_PY_EXC 0x08000000 /* It raises a Python exception. */
24694+#define OVER_NO_ERROR_HANDLER 0x10000000 /* It doesn't use a virtual error handler. */
24695+#define OVER_ABORT_ON_EXC 0x20000000 /* It aborts on an exception. */
24696+#define OVER_IS_FINAL 0x40000000 /* It is a final method. */
24697+
24698+#define isPublic(o) ((o)->overflags & SECT_IS_PUBLIC)
24699+#define setIsPublic(o) ((o)->overflags |= SECT_IS_PUBLIC)
24700+#define isProtected(o) ((o)->overflags & SECT_IS_PROT)
24701+#define setIsProtected(o) ((o)->overflags |= SECT_IS_PROT)
24702+#define isPrivate(o) ((o)->overflags & SECT_IS_PRIVATE)
24703+#define setIsPrivate(o) ((o)->overflags |= SECT_IS_PRIVATE)
24704+#define isSlot(o) ((o)->overflags & SECT_IS_SLOT)
24705+#define setIsSlot(o) ((o)->overflags |= SECT_IS_SLOT)
24706+#define resetIsSlot(o) ((o)->overflags &= ~SECT_IS_SLOT)
24707+#define isSignal(o) ((o)->overflags & SECT_IS_SIGNAL)
24708+#define setIsSignal(o) ((o)->overflags |= SECT_IS_SIGNAL)
24709+#define resetIsSignal(o) ((o)->overflags &= ~SECT_IS_SIGNAL)
24710+
24711+#define isVirtual(o) ((o)->overflags & OVER_IS_VIRTUAL)
24712+#define setIsVirtual(o) ((o)->overflags |= OVER_IS_VIRTUAL)
24713+#define resetIsVirtual(o) ((o)->overflags &= ~OVER_IS_VIRTUAL)
24714+#define isAbstract(o) ((o)->overflags & OVER_IS_ABSTRACT)
24715+#define setIsAbstract(o) ((o)->overflags |= OVER_IS_ABSTRACT)
24716+#define isConst(o) ((o)->overflags & OVER_IS_CONST)
24717+#define setIsConst(o) ((o)->overflags |= OVER_IS_CONST)
24718+#define isStatic(o) ((o)->overflags & OVER_IS_STATIC)
24719+#define setIsStatic(o) ((o)->overflags |= OVER_IS_STATIC)
24720+#define isAutoGen(o) ((o)->overflags & OVER_IS_AUTOGEN)
24721+#define setIsAutoGen(o) ((o)->overflags |= OVER_IS_AUTOGEN)
24722+#define resetIsAutoGen(o) ((o)->overflags &= ~OVER_IS_AUTOGEN)
24723+#define isNewThread(o) ((o)->overflags & OVER_IS_NEW_THREAD)
24724+#define setIsNewThread(o) ((o)->overflags |= OVER_IS_NEW_THREAD)
24725+#define isFactory(o) ((o)->overflags & OVER_IS_FACTORY)
24726+#define setIsFactory(o) ((o)->overflags |= OVER_IS_FACTORY)
24727+#define isResultTransferredBack(o) ((o)->overflags & OVER_XFERRED_BACK)
24728+#define setIsResultTransferredBack(o) ((o)->overflags |= OVER_XFERRED_BACK)
24729+#define isResultTransferred(o) ((o)->overflags & OVER_XFERRED)
24730+#define setIsResultTransferred(o) ((o)->overflags |= OVER_XFERRED)
24731+#define isVirtualReimp(o) ((o)->overflags & OVER_IS_VIRTUAL_REIMP)
24732+#define setIsVirtualReimp(o) ((o)->overflags |= OVER_IS_VIRTUAL_REIMP)
24733+#define dontDerefSelf(o) ((o)->overflags & OVER_DONT_DEREF_SELF)
24734+#define setDontDerefSelf(o) ((o)->overflags |= OVER_DONT_DEREF_SELF)
24735+#define isHoldGIL(o) ((o)->overflags & OVER_HOLD_GIL)
24736+#define setIsHoldGIL(o) ((o)->overflags |= OVER_HOLD_GIL)
24737+#define isReleaseGIL(o) ((o)->overflags & OVER_RELEASE_GIL)
24738+#define setIsReleaseGIL(o) ((o)->overflags |= OVER_RELEASE_GIL)
24739+#define isThisTransferredMeth(o) ((o)->overflags & OVER_THIS_XFERRED)
24740+#define setIsThisTransferredMeth(o) ((o)->overflags |= OVER_THIS_XFERRED)
24741+#define isGlobal(o) ((o)->overflags & OVER_IS_GLOBAL)
24742+#define setIsGlobal(o) ((o)->overflags |= OVER_IS_GLOBAL)
24743+#define isComplementary(o) ((o)->overflags & OVER_IS_COMPLEMENTARY)
24744+#define setIsComplementary(o) ((o)->overflags |= OVER_IS_COMPLEMENTARY)
24745+#define isDeprecated(o) ((o)->overflags & OVER_IS_DEPRECATED)
24746+#define setIsDeprecated(o) ((o)->overflags |= OVER_IS_DEPRECATED)
24747+#define isReallyProtected(o) ((o)->overflags & OVER_REALLY_PROT)
24748+#define setIsReallyProtected(o) ((o)->overflags |= OVER_REALLY_PROT)
24749+#define isDelattr(o) ((o)->overflags & OVER_IS_DELATTR)
24750+#define setIsDelattr(o) ((o)->overflags |= OVER_IS_DELATTR)
24751+#define raisesPyException(o) ((o)->overflags & OVER_RAISES_PY_EXC)
24752+#define setRaisesPyException(o) ((o)->overflags |= OVER_RAISES_PY_EXC)
24753+#define noErrorHandler(o) ((o)->overflags & OVER_NO_ERROR_HANDLER)
24754+#define setNoErrorHandler(o) ((o)->overflags |= OVER_NO_ERROR_HANDLER)
24755+#define abortOnException(o) ((o)->overflags & OVER_ABORT_ON_EXC)
24756+#define setAbortOnException(o) ((o)->overflags |= OVER_ABORT_ON_EXC)
24757+#define isFinal(o) ((o)->overflags & OVER_IS_FINAL)
24758+#define setIsFinal(o) ((o)->overflags |= OVER_IS_FINAL)
24759+
24760+
24761+/* Handle variable flags. */
24762+
24763+#define VAR_IS_STATIC 0x01 /* It is a static variable. */
24764+#define VAR_NEEDS_HANDLER 0x02 /* The variable needs a handler. */
24765+#define VAR_NO_SETTER 0x04 /* The variable has no setter. */
24766+
24767+#define isStaticVar(v) ((v)->varflags & VAR_IS_STATIC)
24768+#define setIsStaticVar(v) ((v)->varflags |= VAR_IS_STATIC)
24769+#define needsHandler(v) ((v)->varflags & VAR_NEEDS_HANDLER)
24770+#define setNeedsHandler(v) ((v)->varflags |= VAR_NEEDS_HANDLER)
24771+#define noSetter(v) ((v)->varflags & VAR_NO_SETTER)
24772+#define setNoSetter(v) ((v)->varflags |= VAR_NO_SETTER)
24773+
24774+
24775+/* Handle argument flags. */
24776+
24777+#define ARG_IS_REF 0x00000001 /* It is a reference. */
24778+#define ARG_IS_CONST 0x00000002 /* It is a const. */
24779+#define ARG_XFERRED 0x00000004 /* Ownership is transferred. */
24780+#define ARG_THIS_XFERRED 0x00000008 /* Ownership of this is transferred. */
24781+#define ARG_XFERRED_BACK 0x00000010 /* Ownership is transferred back. */
24782+#define ARG_ARRAY 0x00000020 /* Used as an array. */
24783+#define ARG_ARRAY_SIZE 0x00000040 /* Used as an array size. */
24784+#define ARG_ALLOW_NONE 0x00000080 /* Allow None as a value. */
24785+#define ARG_GET_WRAPPER 0x00000100 /* Get the wrapper object. */
24786+#define ARG_IN 0x00000200 /* It passes an argument. */
24787+#define ARG_OUT 0x00000400 /* It returns a result. */
24788+#define ARG_CONSTRAINED 0x00000800 /* Suppress type conversion. */
24789+#define ARG_SINGLE_SHOT 0x00001000 /* The slot is only ever fired once. */
24790+#define ARG_RESULT_SIZE 0x00002000 /* It defines the result size. */
24791+#define ARG_KEEP_REF 0x00004000 /* Keep a reference. */
24792+#define ARG_NO_COPY 0x00008000 /* Disable copying of const refs. */
24793+#define ARG_DISALLOW_NONE 0x00010000 /* Disallow None as a value. */
24794+
24795+#define isReference(a) ((a)->argflags & ARG_IS_REF)
24796+#define setIsReference(a) ((a)->argflags |= ARG_IS_REF)
24797+#define resetIsReference(a) ((a)->argflags &= ~ARG_IS_REF)
24798+#define isConstArg(a) ((a)->argflags & ARG_IS_CONST)
24799+#define setIsConstArg(a) ((a)->argflags |= ARG_IS_CONST)
24800+#define resetIsConstArg(a) ((a)->argflags &= ~ARG_IS_CONST)
24801+#define isTransferred(a) ((a)->argflags & ARG_XFERRED)
24802+#define setIsTransferred(a) ((a)->argflags |= ARG_XFERRED)
24803+#define isThisTransferred(a) ((a)->argflags & ARG_THIS_XFERRED)
24804+#define setIsThisTransferred(a) ((a)->argflags |= ARG_THIS_XFERRED)
24805+#define isTransferredBack(a) ((a)->argflags & ARG_XFERRED_BACK)
24806+#define setIsTransferredBack(a) ((a)->argflags |= ARG_XFERRED_BACK)
24807+#define isArray(a) ((a)->argflags & ARG_ARRAY)
24808+#define setArray(a) ((a)->argflags |= ARG_ARRAY)
24809+#define isArraySize(a) ((a)->argflags & ARG_ARRAY_SIZE)
24810+#define setArraySize(a) ((a)->argflags |= ARG_ARRAY_SIZE)
24811+#define isAllowNone(a) ((a)->argflags & ARG_ALLOW_NONE)
24812+#define setAllowNone(a) ((a)->argflags |= ARG_ALLOW_NONE)
24813+#define isGetWrapper(a) ((a)->argflags & ARG_GET_WRAPPER)
24814+#define setGetWrapper(a) ((a)->argflags |= ARG_GET_WRAPPER)
24815+#define isInArg(a) ((a)->argflags & ARG_IN)
24816+#define setIsInArg(a) ((a)->argflags |= ARG_IN)
24817+#define isOutArg(a) ((a)->argflags & ARG_OUT)
24818+#define setIsOutArg(a) ((a)->argflags |= ARG_OUT)
24819+#define isConstrained(a) ((a)->argflags & ARG_CONSTRAINED)
24820+#define setIsConstrained(a) ((a)->argflags |= ARG_CONSTRAINED)
24821+#define resetIsConstrained(a) ((a)->argflags &= ~ARG_CONSTRAINED)
24822+#define isSingleShot(a) ((a)->argflags & ARG_SINGLE_SHOT)
24823+#define isResultSize(a) ((a)->argflags & ARG_RESULT_SIZE)
24824+#define setResultSize(a) ((a)->argflags |= ARG_RESULT_SIZE)
24825+#define keepReference(a) ((a)->argflags & ARG_KEEP_REF)
24826+#define setKeepReference(a) ((a)->argflags |= ARG_KEEP_REF)
24827+#define noCopy(a) ((a)->argflags & ARG_NO_COPY)
24828+#define setNoCopy(a) ((a)->argflags |= ARG_NO_COPY)
24829+#define isDisallowNone(a) ((a)->argflags & ARG_DISALLOW_NONE)
24830+#define setDisallowNone(a) ((a)->argflags |= ARG_DISALLOW_NONE)
24831+
24832+
24833+/* Handle name flags. */
24834+
24835+#define NAME_IS_USED 0x01 /* It is used in the main module. */
24836+#define NAME_IS_SUBSTR 0x02 /* It is a substring of another. */
24837+
24838+#define isUsedName(n) ((n)->nameflags & NAME_IS_USED)
24839+#define setIsUsedName(n) ((n)->nameflags |= NAME_IS_USED)
24840+#define resetIsUsedName(n) ((n)->nameflags &= ~NAME_IS_USED)
24841+#define isSubstring(n) ((n)->nameflags & NAME_IS_SUBSTR)
24842+#define setIsSubstring(n) ((n)->nameflags |= NAME_IS_SUBSTR)
24843+
24844+
24845+/* Handle virtual handler flags. */
24846+
24847+#define VH_TRANSFERS 0x01 /* It transfers ownership of the result. */
24848+#define VH_ABORT_ON_EXC 0x02 /* It aborts on an exception. */
24849+
24850+#define isTransferVH(vh) ((vh)->vhflags & VH_TRANSFERS)
24851+#define setIsTransferVH(vh) ((vh)->vhflags |= VH_TRANSFERS)
24852+#define abortOnExceptionVH(vh) ((vh)->vhflags & VH_ABORT_ON_EXC)
24853+#define setAbortOnExceptionVH(vh) ((vh)->vhflags |= VH_ABORT_ON_EXC)
24854+
24855+
24856+/* Handle mapped type flags. */
24857+
24858+#define MT_NO_RELEASE 0x01 /* Do not generate a release function. */
24859+#define MT_ALLOW_NONE 0x02 /* The mapped type will handle None. */
24860+
24861+#define noRelease(mt) ((mt)->mtflags & MT_NO_RELEASE)
24862+#define setNoRelease(mt) ((mt)->mtflags |= MT_NO_RELEASE)
24863+#define handlesNone(mt) ((mt)->mtflags & MT_ALLOW_NONE)
24864+#define setHandlesNone(mt) ((mt)->mtflags |= MT_ALLOW_NONE)
24865+
24866+
24867+/* Handle typedef flags. */
24868+
24869+#define TD_NO_TYPE_NAME 0x01 /* Do not use the typedef name. */
24870+
24871+#define noTypeName(td) ((td)->tdflags & TD_NO_TYPE_NAME)
24872+#define setNoTypeName(td) ((td)->tdflags |= TD_NO_TYPE_NAME)
24873+
24874+
24875+/* Warning categories. */
24876+typedef enum {
24877+ ParserWarning,
24878+ DeprecationWarning
24879+} Warning;
24880+
24881+
24882+/* Docstring formatting. */
24883+typedef enum {
24884+ raw,
24885+ deindented
24886+} Format;
24887+
24888+
24889+/* Docstring signature positioning. */
24890+typedef enum {
24891+ discarded,
24892+ prepended,
24893+ appended
24894+} Signature;
24895+
24896+
24897+/* Levels of keyword argument support. */
24898+typedef enum {
24899+ NoKwArgs = 0,
24900+ AllKwArgs,
24901+ OptionalKwArgs
24902+} KwArgs;
24903+
24904+
24905+/* Slot types. */
24906+typedef enum {
24907+ str_slot,
24908+ int_slot,
24909+ long_slot,
24910+ float_slot,
24911+ len_slot,
24912+ contains_slot,
24913+ add_slot,
24914+ concat_slot,
24915+ sub_slot,
24916+ mul_slot,
24917+ repeat_slot,
24918+ div_slot,
24919+ mod_slot,
24920+ floordiv_slot,
24921+ truediv_slot,
24922+ and_slot,
24923+ or_slot,
24924+ xor_slot,
24925+ lshift_slot,
24926+ rshift_slot,
24927+ iadd_slot,
24928+ iconcat_slot,
24929+ isub_slot,
24930+ imul_slot,
24931+ irepeat_slot,
24932+ idiv_slot,
24933+ imod_slot,
24934+ ifloordiv_slot,
24935+ itruediv_slot,
24936+ iand_slot,
24937+ ior_slot,
24938+ ixor_slot,
24939+ ilshift_slot,
24940+ irshift_slot,
24941+ invert_slot,
24942+ call_slot,
24943+ getitem_slot,
24944+ setitem_slot,
24945+ delitem_slot,
24946+ lt_slot,
24947+ le_slot,
24948+ eq_slot,
24949+ ne_slot,
24950+ gt_slot,
24951+ ge_slot,
24952+ cmp_slot,
24953+ bool_slot,
24954+ neg_slot,
24955+ pos_slot,
24956+ abs_slot,
24957+ repr_slot,
24958+ hash_slot,
24959+ index_slot,
24960+ iter_slot,
24961+ next_slot,
24962+ setattr_slot,
24963+ delattr_slot, /* This is local to the parser. */
24964+ matmul_slot,
24965+ imatmul_slot,
24966+ await_slot,
24967+ aiter_slot,
24968+ anext_slot,
24969+ no_slot
24970+} slotType;
24971+
24972+
24973+/*
24974+ * Argument types. Always add new ones at the end because the numeric values
24975+ * can appear in generated code.
24976+ */
24977+typedef enum {
24978+ no_type,
24979+ defined_type,
24980+ class_type,
24981+ struct_type,
24982+ void_type,
24983+ enum_type,
24984+ template_type,
24985+ signal_type,
24986+ slot_type,
24987+ rxcon_type,
24988+ rxdis_type,
24989+ slotcon_type,
24990+ slotdis_type,
24991+ ustring_type,
24992+ string_type,
24993+ short_type,
24994+ ushort_type,
24995+ cint_type,
24996+ int_type,
24997+ uint_type,
24998+ long_type,
24999+ ulong_type,
25000+ float_type,
25001+ cfloat_type,
25002+ double_type,
25003+ cdouble_type,
25004+ bool_type,
25005+ mapped_type,
25006+ pyobject_type,
25007+ pytuple_type,
25008+ pylist_type,
25009+ pydict_type,
25010+ pycallable_type,
25011+ pyslice_type,
25012+ qobject_type,
25013+ function_type,
25014+ pytype_type,
25015+ ellipsis_type,
25016+ longlong_type,
25017+ ulonglong_type,
25018+ anyslot_type,
25019+ cbool_type,
25020+ sstring_type,
25021+ wstring_type,
25022+ fake_void_type,
25023+ ssize_type,
25024+ ascii_string_type,
25025+ latin1_string_type,
25026+ utf8_string_type,
25027+ byte_type,
25028+ sbyte_type,
25029+ ubyte_type,
25030+ capsule_type,
25031+ pybuffer_type
25032+} argType;
25033+
25034+
25035+/* Value types. */
25036+typedef enum {
25037+ qchar_value,
25038+ string_value,
25039+ numeric_value,
25040+ real_value,
25041+ scoped_value,
25042+ fcall_value
25043+} valueType;
25044+
25045+
25046+/* Version types. */
25047+typedef enum {
25048+ time_qualifier,
25049+ platform_qualifier,
25050+ feature_qualifier
25051+} qualType;
25052+
25053+
25054+/* Interface file types. */
25055+typedef enum {
25056+ exception_iface,
25057+ mappedtype_iface,
25058+ namespace_iface,
25059+ class_iface
25060+} ifaceFileType;
25061+
25062+
25063+/* Type hint parse status. */
25064+typedef enum {
25065+ needs_parsing,
25066+ being_parsed,
25067+ parsed
25068+} typeHintParseStatus;
25069+
25070+
25071+/* Type hint node type. */
25072+typedef enum {
25073+ typing_node,
25074+ class_node,
25075+ enum_node,
25076+ brackets_node,
25077+ other_node
25078+} typeHintNodeType;
25079+
25080+
25081+/* A location in a .sip source file. */
25082+typedef struct {
25083+ int linenr; /* The line number. */
25084+ const char *name; /* The filename. */
25085+} sourceLocation;
25086+
25087+
25088+/* A software license. */
25089+typedef struct {
25090+ const char *type; /* The license type. */
25091+ const char *licensee; /* The licensee. */
25092+ const char *timestamp; /* The timestamp. */
25093+ const char *sig; /* The signature. */
25094+} licenseDef;
25095+
25096+
25097+/* A version qualifier. */
25098+typedef struct _qualDef {
25099+ const char *name; /* The qualifier name. */
25100+ qualType qtype; /* The qualifier type. */
25101+ struct _moduleDef *module; /* The defining module. */
25102+ int line; /* Timeline if it is a time. */
25103+ int order; /* Order if it is a time. */
25104+ int default_enabled; /* Enabled by default. */
25105+ struct _qualDef *next; /* Next in the list. */
25106+} qualDef;
25107+
25108+
25109+/* A platform. */
25110+typedef struct _platformDef {
25111+ struct _qualDef *qualifier; /* The platform qualifier. */
25112+ struct _platformDef *next; /* Next in the list. */
25113+} platformDef;
25114+
25115+
25116+/* A scoped name. */
25117+typedef struct _scopedNameDef {
25118+ char *name; /* The name. */
25119+ struct _scopedNameDef *next; /* Next in the scope list. */
25120+} scopedNameDef;
25121+
25122+
25123+/* A name. */
25124+typedef struct _nameDef {
25125+ int nameflags; /* The name flags. */
25126+ const char *text; /* The text of the name. */
25127+ size_t len; /* The length of the name. */
25128+ size_t offset; /* The offset in the string pool. */
25129+ struct _nameDef *next; /* Next in the list. */
25130+} nameDef;
25131+
25132+
25133+/* A literal code block. */
25134+typedef struct _codeBlock {
25135+ char *frag; /* The code itself. */
25136+ const char *filename; /* The original file. */
25137+ int linenr; /* The line in the file. */
25138+} codeBlock;
25139+
25140+
25141+/* A list of literal code blocks. */
25142+typedef struct _codeBlockList {
25143+ codeBlock *block; /* The code block. */
25144+ struct _codeBlockList *next; /* The next in the list. */
25145+} codeBlockList;
25146+
25147+
25148+/* The arguments to a throw specifier. */
25149+typedef struct _throwArgs {
25150+ int nrArgs; /* The number of arguments. */
25151+ struct _exceptionDef *args[MAX_NR_ARGS]; /* The arguments. */
25152+} throwArgs;
25153+
25154+
25155+/* An exception. */
25156+typedef struct _exceptionDef {
25157+ int exceptionnr; /* The exception number. */
25158+ int needed; /* The module needs it. */
25159+ struct _ifaceFileDef *iff; /* The interface file. */
25160+ const char *pyname; /* The exception Python name. */
25161+ struct _classDef *cd; /* The exception class. */
25162+ char *bibase; /* The builtin base exception. */
25163+ struct _exceptionDef *base; /* The defined base exception. */
25164+ codeBlockList *raisecode; /* Raise exception code. */
25165+ struct _exceptionDef *next; /* The next in the list. */
25166+} exceptionDef;
25167+
25168+
25169+/* A value. */
25170+typedef struct _valueDef {
25171+ valueType vtype; /* The type. */
25172+ char vunop; /* Any unary operator. */
25173+ char vbinop; /* Any binary operator. */
25174+ scopedNameDef *cast; /* Any cast. */
25175+ union {
25176+ char vqchar; /* Quoted character value. */
25177+ long vnum; /* Numeric value. */
25178+ double vreal; /* Real value. */
25179+ char *vstr; /* String value. */
25180+ scopedNameDef *vscp; /* Scoped value. */
25181+ struct _fcallDef *fcd; /* Function call. */
25182+ } u;
25183+ struct _valueDef *next; /* Next in the expression. */
25184+} valueDef;
25185+
25186+
25187+/* A member function argument (or result). */
25188+typedef struct {
25189+ argType atype; /* The type. */
25190+ nameDef *name; /* The name. */
25191+ const char *doctype; /* The documented type. */
25192+ struct _typeHintDef *typehint_in; /* The PEP 484 input type hint. */
25193+ struct _typeHintDef *typehint_out; /* The PEP 484 output type hint. */
25194+ const char *typehint_value; /* The type hint value. */
25195+ int argflags; /* The argument flags. */
25196+ int nrderefs; /* Nr. of dereferences. */
25197+ int derefs[MAX_NR_DEREFS]; /* The const for each dereference. */
25198+ valueDef *defval; /* The default value. */
25199+ int scopes_stripped; /* Nr. of scopes to be stripped. */
25200+ int key; /* The optional /KeepReference/ key. */
25201+ struct _typedefDef *original_type; /* The original type if typedef'd. */
25202+ union {
25203+ struct _signatureDef *sa; /* If it is a function. */
25204+ struct _templateDef *td; /* If it is a template. */
25205+ struct _scopedNameDef *snd; /* If it is a defined type. */
25206+ struct _classDef *cd; /* If it is a class. */
25207+ struct _enumDef *ed; /* If it is an enum. */
25208+ struct _scopedNameDef *sname; /* If it is a struct. */
25209+ struct _mappedTypeDef *mtd; /* If it is a mapped type. */
25210+ struct _scopedNameDef *cap; /* If it is a capsule. */
25211+ } u;
25212+} argDef;
25213+
25214+
25215+/* An entry in a linked argument list. */
25216+typedef struct _argList {
25217+ argDef arg; /* The argument itself. */
25218+ struct _argList *next; /* Next in the list. */
25219+} argList;
25220+
25221+
25222+/* A function call. */
25223+typedef struct _fcallDef {
25224+ argDef type; /* The type. */
25225+ int nrArgs; /* The number of arguments. */
25226+ struct _valueDef *args[MAX_NR_ARGS]; /* The arguments. */
25227+} fcallDef;
25228+
25229+
25230+/* An API version range definition. */
25231+typedef struct _apiVersionRangeDef {
25232+ nameDef *api_name; /* The API name. */
25233+ int from; /* The lower bound. */
25234+ int to; /* The upper bound. */
25235+ int index; /* The range index. */
25236+ struct _apiVersionRangeDef *next; /* The next in the list. */
25237+} apiVersionRangeDef;
25238+
25239+
25240+/* A virtual error handler. */
25241+typedef struct _virtErrorHandler {
25242+ const char *name; /* The name of the handler. */
25243+ codeBlockList *code; /* The handler code. */
25244+ struct _moduleDef *mod; /* The defining module. */
25245+ int index; /* The index within the module. */
25246+ struct _virtErrorHandler *next; /* The next in the list. */
25247+} virtErrorHandler;
25248+
25249+
25250+/* A parsed PEP 484 compliant type hint. */
25251+typedef struct _typeHintDef {
25252+ typeHintParseStatus status; /* The state of the type hint parse. */
25253+ char *raw_hint; /* The raw hint. */
25254+ struct _typeHintNodeDef *root; /* The root of parsed nodes. */
25255+} typeHintDef;
25256+
25257+
25258+/* A node of a parsed type hint. */
25259+typedef struct _typeHintNodeDef {
25260+ typeHintNodeType type; /* The type of the node. */
25261+ union {
25262+ const char *name; /* For typing objects and others. */
25263+ struct _classDef *cd; /* For class nodes. */
25264+ struct _enumDef *ed; /* For enum nodes. */
25265+ } u;
25266+ struct _typeHintNodeDef *children; /* The list of children. */
25267+ struct _typeHintNodeDef *next; /* The next sibling. */
25268+} typeHintNodeDef;
25269+
25270+
25271+/* An explicit docstring. */
25272+typedef struct _docstringDef {
25273+ Signature signature; /* How the signature should be positioned. */
25274+ char *text; /* The text of the docstring. */
25275+} docstringDef;
25276+
25277+
25278+/* A module definition. */
25279+typedef struct _moduleDef {
25280+ nameDef *fullname; /* The full module name. */
25281+ const char *name; /* The module base name. */
25282+ docstringDef *docstring; /* The docstring. */
25283+ apiVersionRangeDef *api_versions; /* The defined APIs. */
25284+ apiVersionRangeDef *api_ranges; /* The list of API version ranges. */
25285+ int modflags; /* The module flags. */
25286+ KwArgs kwargs; /* The style of keyword argument support. */
25287+ struct _memberDef *othfuncs; /* List of other functions. */
25288+ struct _overDef *overs; /* Global overloads. */
25289+ Format defdocstringfmt; /* The default docstring format. */
25290+ Signature defdocstringsig; /* The default docstring signature. */
25291+ argType encoding; /* The default string encoding. */
25292+ nameDef *defmetatype; /* The optional default meta-type. */
25293+ nameDef *defsupertype; /* The optional default super-type. */
25294+ struct _exceptionDef *defexception; /* The default exception. */
25295+ codeBlockList *hdrcode; /* Header code. */
25296+ codeBlockList *cppcode; /* Global C++ code. */
25297+ codeBlockList *copying; /* Software license. */
25298+ codeBlockList *preinitcode; /* Pre-initialisation code. */
25299+ codeBlockList *initcode; /* Initialisation code. */
25300+ codeBlockList *postinitcode; /* Post-initialisation code. */
25301+ codeBlockList *unitcode; /* Compilation unit code. */
25302+ codeBlockList *unitpostinccode; /* Compilation unit post-include code. */
25303+ codeBlockList *typehintcode; /* Type hint code. */
25304+ const char *virt_error_handler; /* The virtual error handler. */
25305+ int parts; /* The number of parts generated. */
25306+ const char *file; /* The filename. */
25307+ qualDef *qualifiers; /* The list of qualifiers. */
25308+ argDef *needed_types; /* The array of needed types. */
25309+ int nr_needed_types; /* The number of needed types. */
25310+ int nrtimelines; /* The nr. of timelines. */
25311+ int nrexceptions; /* The nr. of exceptions. */
25312+ int nrtypedefs; /* The nr. of typedefs. */
25313+ int nrvirterrorhandlers; /* The nr. of virtual error handlers. */
25314+ int next_key; /* The next key to allocate. */
25315+ licenseDef *license; /* The software license. */
25316+ struct _classDef *proxies; /* The list of proxy classes. */
25317+ struct _moduleDef *container; /* The container module, if any. */
25318+ struct _ifaceFileList *used; /* Interface files used. */
25319+ struct _moduleListDef *allimports; /* The list of all imports. */
25320+ struct _moduleListDef *imports; /* The list of direct imports. */
25321+ struct _autoPyNameDef *autopyname; /* The Python naming rules. */
25322+ struct _moduleDef *next; /* Next in the list. */
25323+} moduleDef;
25324+
25325+
25326+/* An entry in a linked module list. */
25327+typedef struct _moduleListDef {
25328+ moduleDef *module; /* The module itself. */
25329+ struct _moduleListDef *next; /* The next in the list. */
25330+} moduleListDef;
25331+
25332+
25333+/* An interface file definition. */
25334+typedef struct _ifaceFileDef {
25335+ nameDef *name; /* The name. */
25336+ int needed; /* The main module needs it. */
25337+ apiVersionRangeDef *api_range; /* The optional API version range. */
25338+ struct _ifaceFileDef *first_alt; /* The first alternate API. */
25339+ struct _ifaceFileDef *next_alt; /* The next alternate API. */
25340+ ifaceFileType type; /* Interface file type. */
25341+ int ifacenr; /* The index into the types table. */
25342+ scopedNameDef *fqcname; /* The fully qualified C++ name. */
25343+ moduleDef *module; /* The owning module. */
25344+ codeBlockList *hdrcode; /* Header code. */
25345+ const char *file_extension; /* The optional file extension. */
25346+ struct _ifaceFileList *used; /* Interface files used. */
25347+ platformDef *platforms; /* The platforms. */
25348+ struct _ifaceFileDef *next; /* Next in the list. */
25349+} ifaceFileDef;
25350+
25351+
25352+/* An entry in a linked interface file list. */
25353+
25354+typedef struct _ifaceFileList {
25355+ ifaceFileDef *iff; /* The interface file itself. */
25356+ struct _ifaceFileList *next; /* Next in the list. */
25357+} ifaceFileList;
25358+
25359+
25360+/* A mapped type. */
25361+typedef struct _mappedTypeDef {
25362+ int mtflags; /* The mapped type flags. */
25363+ argDef type; /* The type being mapped. */
25364+ nameDef *pyname; /* The Python name. */
25365+ nameDef *cname; /* The C/C++ name. */
25366+ const char *doctype; /* The documented type. */
25367+ typeHintDef *typehint_in; /* The PEP 484 input type hint. */
25368+ typeHintDef *typehint_out; /* The PEP 484 output type hint. */
25369+ const char *typehint_value; /* The type hint value. */
25370+ ifaceFileDef *iff; /* The interface file. */
25371+ struct _memberDef *members; /* The static member functions. */
25372+ struct _overDef *overs; /* The static overloads. */
25373+ codeBlockList *instancecode; /* Create instance code. */
25374+ codeBlockList *typecode; /* Type code. */
25375+ codeBlockList *convfromcode; /* Convert from C++ code. */
25376+ codeBlockList *convtocode; /* Convert to C++ code. */
25377+ struct _mappedTypeDef *real; /* The original definition. */
25378+ struct _mappedTypeDef *next; /* Next in the list. */
25379+} mappedTypeDef;
25380+
25381+
25382+/* A function signature. */
25383+typedef struct _signatureDef {
25384+ argDef result; /* The result. */
25385+ int nrArgs; /* The number of arguments. */
25386+ argDef args[MAX_NR_ARGS]; /* The arguments. */
25387+} signatureDef;
25388+
25389+
25390+/* A list of function signatures. */
25391+typedef struct _signatureList {
25392+ struct _signatureDef *sd; /* The signature. */
25393+ struct _signatureList *next; /* Next in the list. */
25394+} signatureList;
25395+
25396+
25397+/* A template type. */
25398+typedef struct _templateDef {
25399+ scopedNameDef *fqname; /* The name. */
25400+ signatureDef types; /* The types. */
25401+} templateDef;
25402+
25403+
25404+/* A list of virtual handlers. */
25405+typedef struct _virtHandlerDef {
25406+ int virthandlernr; /* The nr. of the virtual handler. */
25407+ int vhflags; /* The virtual handler flags. */
25408+ signatureDef *pysig; /* The Python signature. */
25409+ signatureDef *cppsig; /* The C++ signature. */
25410+ codeBlockList *virtcode; /* Virtual handler code. */
25411+ virtErrorHandler *veh; /* The virtual error handler. */
25412+ struct _virtHandlerDef *next; /* Next in the list. */
25413+} virtHandlerDef;
25414+
25415+
25416+/* A typedef definition. */
25417+typedef struct _typedefDef {
25418+ int tdflags; /* The typedef flags. */
25419+ scopedNameDef *fqname; /* The fully qualified name. */
25420+ struct _classDef *ecd; /* The enclosing class. */
25421+ moduleDef *module; /* The owning module. */
25422+ argDef type; /* The actual type. */
25423+ platformDef *platforms; /* The platforms. */
25424+ struct _typedefDef *next; /* Next in the list. */
25425+} typedefDef;
25426+
25427+
25428+/* A variable definition. */
25429+typedef struct _varDef {
25430+ scopedNameDef *fqcname; /* The fully qualified C/C++ name. */
25431+ nameDef *pyname; /* The variable Python name. */
25432+ int no_typehint; /* The type hint will be suppressed. */
25433+ struct _classDef *ecd; /* The enclosing class. */
25434+ moduleDef *module; /* The owning module. */
25435+ int varflags; /* The variable flags. */
25436+ argDef type; /* The actual type. */
25437+ codeBlockList *accessfunc; /* The access function. */
25438+ codeBlockList *getcode; /* The get code. */
25439+ codeBlockList *setcode; /* The set code. */
25440+ platformDef *platforms; /* The platforms. */
25441+ struct _varDef *next; /* Next in the list. */
25442+} varDef;
25443+
25444+
25445+/* A property definition. */
25446+typedef struct _propertyDef {
25447+ nameDef *name; /* The property name. */
25448+ docstringDef *docstring; /* The docstring. */
25449+ const char *get; /* The name of the getter method. */
25450+ const char *set; /* The name of the setter method. */
25451+ platformDef *platforms; /* The platforms. */
25452+ struct _propertyDef *next; /* Next in the list. */
25453+} propertyDef;
25454+
25455+
25456+/* An overloaded member function definition. */
25457+typedef struct _overDef {
25458+ sourceLocation sloc; /* The source location. */
25459+ char *cppname; /* The C++ name. */
25460+ docstringDef *docstring; /* The docstring. */
25461+ int overflags; /* The overload flags. */
25462+ int no_typehint; /* The type hint will be suppressed. */
25463+ int pyqt_signal_hack; /* The PyQt signal hack. */
25464+ KwArgs kwargs; /* The keyword argument support. */
25465+ struct _memberDef *common; /* Common parts. */
25466+ apiVersionRangeDef *api_range; /* The optional API version range. */
25467+ signatureDef pysig; /* The Python signature. */
25468+ signatureDef *cppsig; /* The C++ signature. */
25469+ throwArgs *exceptions; /* The exceptions. */
25470+ codeBlockList *methodcode; /* Method code. */
25471+ codeBlockList *premethodcode; /* Code to insert before the method code. */
25472+ codeBlockList *virtcallcode; /* Virtual call code. */
25473+ codeBlockList *virtcode; /* Virtual handler code. */
25474+ char *prehook; /* The pre-hook name. */
25475+ char *posthook; /* The post-hook name. */
25476+ const char *virt_error_handler; /* The virtual error handler. */
25477+ platformDef *platforms; /* The platforms. */
25478+ struct _overDef *next; /* Next in the list. */
25479+} overDef;
25480+
25481+
25482+/* An overloaded constructor definition. */
25483+typedef struct _ctorDef {
25484+ docstringDef *docstring; /* The docstring. */
25485+ int ctorflags; /* The ctor flags. */
25486+ int no_typehint; /* The type hint will be suppressed. */
25487+ KwArgs kwargs; /* The keyword argument support. */
25488+ apiVersionRangeDef *api_range; /* The optional API version range. */
25489+ signatureDef pysig; /* The Python signature. */
25490+ signatureDef *cppsig; /* The C++ signature, NULL if /NoDerived/. */
25491+ throwArgs *exceptions; /* The exceptions. */
25492+ codeBlockList *methodcode; /* Method code. */
25493+ codeBlockList *premethodcode; /* Code to insert before the method code. */
25494+ char *prehook; /* The pre-hook name. */
25495+ char *posthook; /* The post-hook name. */
25496+ platformDef *platforms; /* The platforms. */
25497+ struct _ctorDef *next; /* Next in the list. */
25498+} ctorDef;
25499+
25500+
25501+/* An enumerated type member definition. */
25502+typedef struct _enumMemberDef {
25503+ nameDef *pyname; /* The Python name. */
25504+ int no_typehint; /* The type hint will be suppressed. */
25505+ char *cname; /* The C/C++ name. */
25506+ struct _enumDef *ed; /* The enclosing enum. */
25507+ platformDef *platforms; /* The platforms. */
25508+ struct _enumMemberDef *next; /* Next in the list. */
25509+} enumMemberDef;
25510+
25511+
25512+/* An enumerated type definition. */
25513+typedef struct _enumDef {
25514+ int enumflags; /* The enum flags. */
25515+ scopedNameDef *fqcname; /* The C/C++ name (may be NULL). */
25516+ nameDef *cname; /* The C/C++ name (may be NULL). */
25517+ nameDef *pyname; /* The Python name (may be NULL). */
25518+ int no_typehint; /* The type hint will be suppressed. */
25519+ struct _enumDef *first_alt; /* The first alternate API. */
25520+ struct _enumDef *next_alt; /* The next alternate API. */
25521+ int enumnr; /* The enum number. */
25522+ int enum_idx; /* The enum index within the module. */
25523+ struct _classDef *ecd; /* The enclosing class, if any. */
25524+ struct _mappedTypeDef *emtd; /* The enclosing mapped type, if any. */
25525+ moduleDef *module; /* The owning module. */
25526+ enumMemberDef *members; /* The list of members. */
25527+ struct _memberDef *slots; /* The list of slots. */
25528+ struct _overDef *overs; /* The list of slot overloads. */
25529+ platformDef *platforms; /* The platforms. */
25530+ struct _enumDef *next; /* Next in the list. */
25531+} enumDef;
25532+
25533+
25534+/* An member function definition. */
25535+typedef struct _memberDef {
25536+ nameDef *pyname; /* The Python name. */
25537+ int memberflags; /* The member flags. */
25538+ int membernr; /* The index in the method table. */
25539+ slotType slot; /* The slot type. */
25540+ moduleDef *module; /* The owning module. */
25541+ struct _ifaceFileDef *ns_scope; /* The scope if it has been moved. */
25542+ struct _memberDef *next; /* Next in the list. */
25543+} memberDef;
25544+
25545+
25546+/* A list of visible member functions. */
25547+typedef struct _visibleList {
25548+ memberDef *m; /* The member definition. */
25549+ struct _classDef *cd; /* The class. */
25550+ struct _visibleList *next; /* Next in the list. */
25551+} visibleList;
25552+
25553+
25554+/* An entry in a linked class list. */
25555+typedef struct _classList {
25556+ struct _classDef *cd; /* The class itself. */
25557+ struct _classList *next; /* Next in the list. */
25558+} classList;
25559+
25560+
25561+/* A virtual overload definition. */
25562+typedef struct _virtOverDef {
25563+ overDef *od; /* The overload. */
25564+ virtHandlerDef *virthandler; /* The virtual handler. */
25565+ struct _virtOverDef *next; /* Next in the list. */
25566+} virtOverDef;
25567+
25568+
25569+/* A class that appears in a class's hierarchy. */
25570+typedef struct _mroDef {
25571+ struct _classDef *cd; /* The class. */
25572+ int mroflags; /* The hierarchy flags. */
25573+ struct _mroDef *next; /* The next in the list. */
25574+} mroDef;
25575+
25576+
25577+/* A class definition. */
25578+typedef struct _classDef {
25579+ docstringDef *docstring; /* The class docstring. */
25580+ unsigned classflags; /* The class flags. */
25581+ unsigned classflags2; /* The class flags, part 2. */
25582+ int pyqt_flags; /* The PyQt specific flags. */
25583+ const char *pyqt_interface; /* The Qt interface name. */
25584+ nameDef *pyname; /* The Python name. */
25585+ int no_typehint; /* The type hint will be suppressed. */
25586+ ifaceFileDef *iff; /* The interface file. */
25587+ struct _classDef *ecd; /* The enclosing scope. */
25588+ struct _classDef *real; /* The real class if this is a proxy or extender. */
25589+ classList *supers; /* The parent classes. */
25590+ mroDef *mro; /* The super-class hierarchy. */
25591+ nameDef *metatype; /* The meta-type. */
25592+ nameDef *supertype; /* The super-type. */
25593+ templateDef *td; /* The instantiated template. */
25594+ ctorDef *ctors; /* The constructors. */
25595+ ctorDef *defctor; /* The default ctor. */
25596+ codeBlockList *dealloccode; /* Handwritten dealloc code. */
25597+ codeBlockList *dtorcode; /* Handwritten dtor code. */
25598+ throwArgs *dtorexceptions; /* The dtor exceptions. */
25599+ memberDef *members; /* The member functions. */
25600+ overDef *overs; /* The overloads. */
25601+ argList *casts; /* The operator casts. */
25602+ virtOverDef *vmembers; /* The virtual members. */
25603+ visibleList *visible; /* The visible members. */
25604+ codeBlockList *cppcode; /* Class C++ code. */
25605+ codeBlockList *convtosubcode; /* Convert to sub C++ code. */
25606+ struct _classDef *subbase; /* Sub-class base class. */
25607+ codeBlockList *instancecode; /* Create instance code. */
25608+ codeBlockList *convtocode; /* Convert to C++ code. */
25609+ codeBlockList *convfromcode; /* Convert from C++ code. */
25610+ codeBlockList *travcode; /* Traverse code. */
25611+ codeBlockList *clearcode; /* Clear code. */
25612+ codeBlockList *getbufcode; /* Get buffer code (Python v3). */
25613+ codeBlockList *releasebufcode; /* Release buffer code (Python v3). */
25614+ codeBlockList *readbufcode; /* Read buffer code (Python v2). */
25615+ codeBlockList *writebufcode; /* Write buffer code (Python v2). */
25616+ codeBlockList *segcountcode; /* Segment count code (Python v2). */
25617+ codeBlockList *charbufcode; /* Character buffer code (Python v2). */
25618+ codeBlockList *picklecode; /* Pickle code. */
25619+ codeBlockList *finalcode; /* Finalisation code. */
25620+ codeBlockList *typehintcode; /* Type hint code. */
25621+ propertyDef *properties; /* The properties. */
25622+ const char *virt_error_handler; /* The virtual error handler. */
25623+ typeHintDef *typehint_in; /* The PEP 484 input type hint. */
25624+ typeHintDef *typehint_out; /* The PEP 484 output type hint. */
25625+ const char *typehint_value; /* The type hint value. */
25626+ struct _classDef *next; /* Next in the list. */
25627+} classDef;
25628+
25629+
25630+/* A class template definition. */
25631+typedef struct _classTmplDef {
25632+ signatureDef sig; /* The template arguments. */
25633+ classDef *cd; /* The class itself. */
25634+ struct _classTmplDef *next; /* The next in the list. */
25635+} classTmplDef;
25636+
25637+
25638+/* A mapped type template definition. */
25639+typedef struct _mappedTypeTmplDef {
25640+ signatureDef sig; /* The template arguments. */
25641+ mappedTypeDef *mt; /* The mapped type itself. */
25642+ struct _mappedTypeTmplDef *next; /* The next in the list. */
25643+} mappedTypeTmplDef;
25644+
25645+
25646+/* The extracts for an identifier. */
25647+typedef struct _extractDef {
25648+ const char *id; /* The identifier. */
25649+ struct _extractPartDef *parts; /* The ordered list of parts. */
25650+ struct _extractDef *next; /* The next in the list. */
25651+} extractDef;
25652+
25653+
25654+/* Part of an extract for an identifier. */
25655+typedef struct _extractPartDef {
25656+ int order; /* The order of the part. */
25657+ codeBlock *part; /* The part itself. */
25658+ struct _extractPartDef *next; /* The next in the list. */
25659+} extractPartDef;
25660+
25661+
25662+/* A rule for automatic Python naming. */
25663+typedef struct _autoPyNameDef {
25664+ const char *remove_leading; /* Leading string to remove. */
25665+ struct _autoPyNameDef *next; /* The next in the list. */
25666+} autoPyNameDef;
25667+
25668+
25669+/* The parse tree corresponding to the specification file. */
25670+typedef struct {
25671+ moduleDef *module; /* The module being generated. */
25672+ moduleDef *modules; /* The list of modules. */
25673+ nameDef *namecache; /* The name cache. */
25674+ ifaceFileDef *ifacefiles; /* The list of interface files. */
25675+ classDef *classes; /* The list of classes. */
25676+ classTmplDef *classtemplates; /* The list of class templates. */
25677+ exceptionDef *exceptions; /* The list of exceptions. */
25678+ mappedTypeDef *mappedtypes; /* The mapped types. */
25679+ mappedTypeTmplDef *mappedtypetemplates; /* The list of mapped type templates. */
25680+ enumDef *enums; /* List of enums. */
25681+ varDef *vars; /* List of variables. */
25682+ typedefDef *typedefs; /* List of typedefs. */
25683+ int nrvirthandlers; /* The number of virtual handlers. */
25684+ virtHandlerDef *virthandlers; /* The virtual handlers. */
25685+ virtErrorHandler *errorhandlers; /* The list of virtual error handlers. */
25686+ codeBlockList *exphdrcode; /* Exported header code. */
25687+ codeBlockList *exptypehintcode; /* Exported type hint code. */
25688+ codeBlockList *docs; /* Documentation. */
25689+ classDef *qobject_cd; /* QObject class, NULL if none. */
25690+ int sigslots; /* Set if signals or slots are used. */
25691+ int genc; /* Set if we are generating C code. */
25692+ struct _stringList *plugins; /* The list of plugins. */
25693+ struct _extractDef *extracts; /* The list of extracts. */
25694+} sipSpec;
25695+
25696+
25697+/* A list of strings. */
25698+typedef struct _stringList {
25699+ const char *s; /* The string. */
25700+ struct _stringList *next; /* The next in the list. */
25701+} stringList;
25702+
25703+
25704+/* File specific context information for the parser. */
25705+typedef struct _parserContext {
25706+ const char *filename; /* The %Import or %Include filename. */
25707+ int ifdepth; /* The depth of nested if's. */
25708+ moduleDef *prevmod; /* The previous module. */
25709+} parserContext;
25710+
25711+
25712+extern char *sipVersion; /* The version of SIP. */
25713+extern stringList *includeDirList; /* The include directory list for SIP files. */
25714+
25715+
25716+void parse(sipSpec *, FILE *, char *, int, stringList *, stringList *,
25717+ stringList *, KwArgs, int);
25718+void parserEOF(const char *,parserContext *);
25719+void transform(sipSpec *, int);
25720+void generateCode(sipSpec *, char *, char *, char *, const char *, int, int,
25721+ int, int, stringList *needed_qualifiers, stringList *, const char *,
25722+ int, int, const char *);
25723+void generateExtracts(sipSpec *pt, const stringList *extracts);
25724+void addExtractPart(sipSpec *pt, const char *id, int order, codeBlock *part);
25725+void generateAPI(sipSpec *pt, moduleDef *mod, const char *apiFile);
25726+void generateXML(sipSpec *pt, moduleDef *mod, const char *xmlFile);
25727+void generateTypeHints(sipSpec *pt, moduleDef *mod, const char *pyiFile);
25728+void generateExpression(valueDef *vd, int in_str, FILE *fp);
25729+void warning(Warning w, const char *fmt, ...);
25730+void deprecated(const char *msg);
25731+SIP_NORETURN void fatal(const char *fmt,...);
25732+void fatalScopedName(scopedNameDef *);
25733+void fatalStart();
25734+void getSourceLocation(sourceLocation *slp);
25735+int setInputFile(FILE *open_fp, parserContext *pc, int optional);
25736+void resetLexerState();
25737+void *sipMalloc(size_t n);
25738+void *sipCalloc(size_t nr, size_t n);
25739+char *sipStrdup(const char *);
25740+char *concat(const char *, ...);
25741+void append(char **, const char *);
25742+void appendToIfaceFileList(ifaceFileList **ifflp, ifaceFileDef *iff);
25743+int selectedQualifier(stringList *needed_qualifiers, qualDef *qd);
25744+int excludedFeature(stringList *,qualDef *);
25745+int sameSignature(signatureDef *,signatureDef *,int);
25746+int sameTemplateSignature(signatureDef *tmpl_sd, signatureDef *args_sd,
25747+ int deep);
25748+int compareScopedNames(scopedNameDef *snd1, scopedNameDef *snd2);
25749+int sameBaseType(argDef *,argDef *);
25750+char *scopedNameTail(scopedNameDef *);
25751+scopedNameDef *copyScopedName(scopedNameDef *);
25752+void appendScopedName(scopedNameDef **,scopedNameDef *);
25753+void freeScopedName(scopedNameDef *);
25754+void appendToClassList(classList **,classDef *);
25755+void appendCodeBlockList(codeBlockList **headp, codeBlockList *cbl);
25756+void prcode(FILE *fp, const char *fmt, ...);
25757+void prCopying(FILE *fp, moduleDef *mod, const char *comment);
25758+void prOverloadName(FILE *fp, overDef *od);
25759+void prOverloadDecl(FILE *fp, ifaceFileDef *scope, overDef *od, int defval);
25760+void prDefaultValue(argDef *ad, int in_str, FILE *fp);
25761+void prScopedPythonName(FILE *fp, classDef *scope, const char *pyname);
25762+void searchTypedefs(sipSpec *pt, scopedNameDef *snd, argDef *ad);
25763+int isZeroArgSlot(memberDef *md);
25764+int isIntReturnSlot(memberDef *md);
25765+int isSSizeReturnSlot(memberDef *md);
25766+int isLongReturnSlot(memberDef *md);
25767+int isVoidReturnSlot(memberDef *md);
25768+int isNumberSlot(memberDef *md);
25769+int isInplaceNumberSlot(memberDef *md);
25770+int isRichCompareSlot(memberDef *md);
25771+mappedTypeDef *allocMappedType(sipSpec *pt, argDef *type);
25772+void appendString(stringList **headp, const char *s);
25773+void appendTypeStrings(scopedNameDef *ename, signatureDef *patt, signatureDef *src, signatureDef *known, scopedNameDef **names, scopedNameDef **values);
25774+codeBlockList *templateCode(sipSpec *pt, ifaceFileList **used,
25775+ codeBlockList *ocbl, scopedNameDef *names, scopedNameDef *values);
25776+ifaceFileDef *findIfaceFile(sipSpec *pt, moduleDef *mod,
25777+ scopedNameDef *fqname, ifaceFileType iftype,
25778+ apiVersionRangeDef *api_range, argDef *ad);
25779+int pluginPyQt4(sipSpec *pt);
25780+int pluginPyQt5(sipSpec *pt);
25781+SIP_NORETURN void yyerror(char *);
25782+void yywarning(char *);
25783+int yylex();
25784+nameDef *cacheName(sipSpec *pt, const char *name);
25785+scopedNameDef *encodedTemplateName(templateDef *td);
25786+apiVersionRangeDef *findAPI(sipSpec *pt, const char *name);
25787+memberDef *findMethod(classDef *cd, const char *name);
25788+typeHintDef *newTypeHint(char *raw_hint);
25789+int isPyKeyword(const char *word);
25790+void getDefaultImplementation(sipSpec *pt, argType atype, classDef **cdp,
25791+ mappedTypeDef **mtdp);
25792+char *templateString(const char *src, scopedNameDef *names,
25793+ scopedNameDef *values);
25794+int inDefaultAPI(sipSpec *pt, apiVersionRangeDef *range);
25795+int hasImplicitOverloads(signatureDef *sd);
25796+void dsCtor(sipSpec *pt, classDef *cd, ctorDef *ct, int sec, FILE *fp);
25797+void dsOverload(sipSpec *pt, overDef *od, int is_method, int sec, FILE *fp);
25798+scopedNameDef *getFQCNameOfType(argDef *ad);
25799+scopedNameDef *removeGlobalScope(scopedNameDef *snd);
25800+void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
25801+ ifaceFileList *defined, int pep484, int rest, FILE *fp);
25802+void restPyClass(classDef *cd, int as_ref, FILE *fp);
25803+void restPyEnum(enumDef *ed, int as_ref, FILE *fp);
25804+
25805+
25806+/* These are only here because bison publically references them. */
25807+
25808+/* Represent a set of option flags. */
25809+
25810+#define MAX_NR_FLAGS 5
25811+
25812+typedef enum {
25813+ bool_flag,
25814+ string_flag,
25815+ name_flag,
25816+ opt_name_flag,
25817+ dotted_name_flag,
25818+ integer_flag,
25819+ opt_integer_flag,
25820+ api_range_flag
25821+} flagType;
25822+
25823+typedef struct {
25824+ const char *fname; /* The flag name. */
25825+ flagType ftype; /* The flag type. */
25826+ union { /* The flag value. */
25827+ char *sval; /* A string value. */
25828+ long ival; /* An integer value. */
25829+ apiVersionRangeDef *aval; /* An API range value. */
25830+ } fvalue;
25831+} optFlag;
25832+
25833+typedef struct {
25834+ int nrFlags; /* The number of flags. */
25835+ optFlag flags[MAX_NR_FLAGS]; /* Each flag. */
25836+} optFlags;
25837+
25838+
25839+/* These represent the configuration of different directives. */
25840+
25841+/* %API */
25842+typedef struct _apiCfg {
25843+ int token;
25844+ const char *name;
25845+ int version;
25846+} apiCfg;
25847+
25848+/* %AutoPyName */
25849+typedef struct _autoPyNameCfg {
25850+ int token;
25851+ const char *remove_leading;
25852+} autoPyNameCfg;
25853+
25854+/* %CompositeModule */
25855+typedef struct _compModuleCfg {
25856+ int token;
25857+ const char *name;
25858+ docstringDef *docstring;
25859+} compModuleCfg;
25860+
25861+/* %ConsolidatedModule */
25862+typedef struct _consModuleCfg {
25863+ int token;
25864+ const char *name;
25865+ docstringDef *docstring;
25866+} consModuleCfg;
25867+
25868+/* %DefaultDocstringFormat */
25869+typedef struct _defDocstringFmtCfg {
25870+ int token;
25871+ const char *name;
25872+} defDocstringFmtCfg;
25873+
25874+/* %DefaultDocstringSignature */
25875+typedef struct _defDocstringSigCfg {
25876+ int token;
25877+ const char *name;
25878+} defDocstringSigCfg;
25879+
25880+/* %DefaultEncoding */
25881+typedef struct _defEncodingCfg {
25882+ int token;
25883+ const char *name;
25884+} defEncodingCfg;
25885+
25886+/* %DefaultMetatype */
25887+typedef struct _defMetatypeCfg {
25888+ int token;
25889+ const char *name;
25890+} defMetatypeCfg;
25891+
25892+/* %DefaultSupertype */
25893+typedef struct _defSupertypeCfg {
25894+ int token;
25895+ const char *name;
25896+} defSupertypeCfg;
25897+
25898+/* %Docstring */
25899+typedef struct _docstringCfg {
25900+ int token;
25901+ Format format;
25902+ Signature signature;
25903+} docstringCfg;
25904+
25905+/* %Exception */
25906+typedef struct _exceptionCfg {
25907+ int token;
25908+ codeBlock *type_header_code;
25909+ codeBlock *raise_code;
25910+} exceptionCfg;
25911+
25912+/* %Extract */
25913+typedef struct _extractCfg {
25914+ int token;
25915+ const char *id;
25916+ int order;
25917+} extractCfg;
25918+
25919+/* %Feature */
25920+typedef struct _featureCfg {
25921+ int token;
25922+ const char *name;
25923+} featureCfg;
25924+
25925+/* %HiddenNamespace */
25926+typedef struct _hiddenNsCfg {
25927+ int token;
25928+ scopedNameDef *name;
25929+} hiddenNsCfg;
25930+
25931+/* %Import */
25932+typedef struct _importCfg {
25933+ int token;
25934+ const char *name;
25935+} importCfg;
25936+
25937+/* %Include */
25938+typedef struct _includeCfg {
25939+ int token;
25940+ const char *name;
25941+ int optional;
25942+} includeCfg;
25943+
25944+/* %License */
25945+typedef struct _licenseCfg {
25946+ int token;
25947+ const char *type;
25948+ const char *licensee;
25949+ const char *signature;
25950+ const char *timestamp;
25951+} licenseCfg;
25952+
25953+/* %Module and its sub-directives. */
25954+typedef struct _moduleCfg {
25955+ int token;
25956+ int c_module;
25957+ KwArgs kwargs;
25958+ const char *name;
25959+ int use_arg_names;
25960+ int use_limited_api;
25961+ int all_raise_py_exc;
25962+ int call_super_init;
25963+ const char *def_error_handler;
25964+ docstringDef *docstring;
25965+} moduleCfg;
25966+
25967+/* %Plugin */
25968+typedef struct _pluginCfg {
25969+ int token;
25970+ const char *name;
25971+} pluginCfg;
25972+
25973+/* %Property */
25974+typedef struct _propertyCfg {
25975+ int token;
25976+ const char *get;
25977+ const char *name;
25978+ const char *set;
25979+ docstringDef *docstring;
25980+} propertyCfg;
25981+
25982+/* Variable sub-directives. */
25983+typedef struct _variableCfg {
25984+ int token;
25985+ codeBlock *access_code;
25986+ codeBlock *get_code;
25987+ codeBlock *set_code;
25988+} variableCfg;
25989+
25990+/* %VirtualErrorHandler */
25991+typedef struct _vehCfg {
25992+ int token;
25993+ const char *name;
25994+} vehCfg;
25995+
25996+#endif
25997diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/transform.c sip/sipgen/transform.c
25998--- ./sip-4.19.12.orig/sipgen/transform.c 2018-07-05 05:54:58.000000000 -0400
25999+++ sip/sipgen/transform.c 2018-09-24 13:12:20.694275757 -0400
26000@@ -89,7 +89,8 @@
26001 static classDef *findAltClassImplementation(sipSpec *pt, mappedTypeDef *mtd);
26002 static ifaceFileDef *getIfaceFile(argDef *ad);
26003 static ifaceFileDef *getIfaceFileForEnum(enumDef *ed);
26004-static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type);
26005+static void instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod,
26006+ mappedTypeTmplDef *mtt, argDef *type);
26007 static classDef *getProxy(moduleDef *mod, classDef *cd);
26008 static int generatingCodeForModule(sipSpec *pt, moduleDef *mod);
26009 static void checkAssignmentHelper(sipSpec *pt, classDef *cd);
26010@@ -3040,9 +3041,7 @@
26011 for (mtt = pt->mappedtypetemplates; mtt != NULL; mtt = mtt->next)
26012 if (compareScopedNames(mtt->mt->type.u.td->fqname, type->u.td->fqname) == 0 && sameTemplateSignature(&mtt->mt->type.u.td->types, &type->u.td->types, TRUE))
26013 {
26014- type->u.mtd = instantiateMappedTypeTemplate(pt, mod, mtt, type);
26015- type->atype = mapped_type;
26016-
26017+ instantiateMappedTypeTemplate(pt, mod, mtt, type);
26018 break;
26019 }
26020 }
26021@@ -3144,9 +3143,10 @@
26022
26023
26024 /*
26025- * Instantiate a mapped type template and return it.
26026+ * Instantiate a mapped type template.
26027 */
26028-static mappedTypeDef *instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod, mappedTypeTmplDef *mtt, argDef *type)
26029+static void instantiateMappedTypeTemplate(sipSpec *pt, moduleDef *mod,
26030+ mappedTypeTmplDef *mtt, argDef *type)
26031 {
26032 scopedNameDef *type_names, *type_values;
26033 mappedTypeDef *mtd;
26034@@ -3201,7 +3201,13 @@
26035
26036 mtd = copyTemplateType(mtd, type);
26037
26038- return mtd;
26039+ /* Replace the template with the mapped type. */
26040+ type->atype = mapped_type;
26041+ type->typehint_in = mtd->typehint_in;
26042+ type->typehint_out = mtd->typehint_out;
26043+ type->typehint_value = mtd->typehint_value;
26044+
26045+ type->u.mtd = mtd;
26046 }
26047
26048
26049diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sipgen/type_hints.c sip/sipgen/type_hints.c
26050--- ./sip-4.19.12.orig/sipgen/type_hints.c 2018-07-05 05:54:58.000000000 -0400
26051+++ sip/sipgen/type_hints.c 2018-09-24 13:12:20.695275742 -0400
26052@@ -57,10 +57,8 @@
26053 ifaceFileList *defined, KwArgs kwargs, int pep484, FILE *fp);
26054 static void pyiType(sipSpec *pt, moduleDef *mod, argDef *ad, int out, int sec,
26055 ifaceFileList *defined, int pep484, FILE *fp);
26056-static void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
26057- ifaceFileList *defined, int pep484, FILE *fp);
26058 static void pyiTypeHintNode(typeHintNodeDef *node, moduleDef *mod,
26059- ifaceFileList *defined, int pep484, FILE *fp);
26060+ ifaceFileList *defined, int pep484, int rest, FILE *fp);
26061 static void prIndent(int indent, FILE *fp);
26062 static int separate(int first, int indent, FILE *fp);
26063 static void prClassRef(classDef *cd, moduleDef *mod, ifaceFileList *defined,
26064@@ -956,7 +954,7 @@
26065
26066 if (thd != NULL)
26067 {
26068- pyiTypeHint(pt, thd, mod, out, defined, pep484, fp);
26069+ pyiTypeHint(pt, thd, mod, out, defined, pep484, FALSE, fp);
26070 return;
26071 }
26072
26073@@ -1415,13 +1413,13 @@
26074 /*
26075 * Generate a type hint from a /TypeHint/ annotation.
26076 */
26077-static void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
26078- ifaceFileList *defined, int pep484, FILE *fp)
26079+void pyiTypeHint(sipSpec *pt, typeHintDef *thd, moduleDef *mod, int out,
26080+ ifaceFileList *defined, int pep484, int rest, FILE *fp)
26081 {
26082 parseTypeHint(pt, thd, out);
26083
26084 if (thd->root != NULL)
26085- pyiTypeHintNode(thd->root, mod, defined, pep484, fp);
26086+ pyiTypeHintNode(thd->root, mod, defined, pep484, rest, fp);
26087 else
26088 maybeAnyObject(thd->raw_hint, pep484, fp);
26089 }
26090@@ -1431,7 +1429,7 @@
26091 * Generate a single node of a type hint.
26092 */
26093 static void pyiTypeHintNode(typeHintNodeDef *node, moduleDef *mod,
26094- ifaceFileList *defined, int pep484, FILE *fp)
26095+ ifaceFileList *defined, int pep484, int rest, FILE *fp)
26096 {
26097 switch (node->type)
26098 {
26099@@ -1452,7 +1450,7 @@
26100
26101 need_comma = TRUE;
26102
26103- pyiTypeHintNode(thnd, mod, defined, pep484, fp);
26104+ pyiTypeHintNode(thnd, mod, defined, pep484, rest, fp);
26105 }
26106
26107 fprintf(fp, "]");
26108@@ -1461,11 +1459,19 @@
26109 break;
26110
26111 case class_node:
26112- prClassRef(node->u.cd, mod, defined, pep484, fp);
26113+ if (rest)
26114+ restPyClass(node->u.cd, TRUE, fp);
26115+ else
26116+ prClassRef(node->u.cd, mod, defined, pep484, fp);
26117+
26118 break;
26119
26120 case enum_node:
26121- prEnumRef(node->u.ed, mod, defined, pep484, fp);
26122+ if (rest)
26123+ restPyEnum(node->u.ed, TRUE, fp);
26124+ else
26125+ prEnumRef(node->u.ed, mod, defined, pep484, fp);
26126+
26127 break;
26128
26129 case brackets_node:
26130@@ -1702,7 +1708,7 @@
26131
26132
26133 /*
26134- * Flatten an unions in a list of nodes.
26135+ * Flatten any unions in a list of nodes.
26136 */
26137 static typeHintNodeDef *flatten_unions(typeHintNodeDef *nodes)
26138 {
26139diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/sip.h sip/siplib/sip.h
26140--- ./sip-4.19.12.orig/siplib/sip.h 2018-07-05 05:55:19.000000000 -0400
26141+++ sip/siplib/sip.h 2018-09-18 18:12:23.643053242 -0400
26142@@ -54,8 +54,8 @@
26143 /*
26144 * Define the SIP version number.
26145 */
26146-#define SIP_VERSION 0x04130c
26147-#define SIP_VERSION_STR "4.19.12"
26148+#define SIP_VERSION 0x04ffff
26149+#define SIP_VERSION_STR "4.255.255"
26150
26151
26152 /*
26153diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/sip.h.in sip/siplib/sip.h.in
26154--- ./sip-4.19.12.orig/siplib/sip.h.in 1969-12-31 19:00:00.000000000 -0500
26155+++ sip/siplib/sip.h.in 2018-09-18 17:52:23.290543826 -0400
26156@@ -0,0 +1,2169 @@
26157+/*
26158+ * The SIP module interface.
26159+ *
26160+ * Copyright (c) 2018 Riverbank Computing Limited <info@riverbankcomputing.com>
26161+ *
26162+ * This file is part of SIP.
26163+ *
26164+ * This copy of SIP is licensed for use under the terms of the SIP License
26165+ * Agreement. See the file LICENSE for more details.
26166+ *
26167+ * This copy of SIP may also used under the terms of the GNU General Public
26168+ * License v2 or v3 as published by the Free Software Foundation which can be
26169+ * found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this package.
26170+ *
26171+ * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
26172+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26173+ */
26174+
26175+
26176+#ifndef _SIP_H
26177+#define _SIP_H
26178+
26179+
26180+/*
26181+ * This gets round a problem with Qt's moc and Python v2.3. Strictly speaking
26182+ * it's a Qt problem but later versions of Python include a fix for it so we
26183+ * might as well too.
26184+ */
26185+#undef slots
26186+
26187+
26188+#include <Python.h>
26189+
26190+/*
26191+ * There is a mis-feature somewhere with the Borland compiler. This works
26192+ * around it.
26193+ */
26194+#if defined(__BORLANDC__)
26195+#include <rpc.h>
26196+#endif
26197+
26198+
26199+#ifdef __cplusplus
26200+extern "C" {
26201+#endif
26202+
26203+
26204+/* Sanity check on the Python version. */
26205+#if PY_VERSION_HEX < 0x02030000
26206+#error "This version of SIP requires Python v2.3 or later"
26207+#endif
26208+
26209+
26210+/*
26211+ * Define the SIP version number.
26212+ */
26213+#define SIP_VERSION 0x@RM_HEXVERSION@
26214+#define SIP_VERSION_STR "@RM_RELEASE@"
26215+
26216+
26217+/*
26218+ * Define the current API version number. SIP must handle modules with the
26219+ * same major number and with the same or earlier minor number. Whenever
26220+ * members are added to non-embedded data structures they must be appended and
26221+ * the minor number incremented. Whenever data structure members are removed
26222+ * or their offset changed then the major number must be incremented and the
26223+ * minor number set * to 0.
26224+ *
26225+ * History:
26226+ *
26227+ * 12.5 Replaced the sipConvertFromSliceObject() macro with
26228+ * sip_api_convert_from_slice_object() in the public API.
26229+ *
26230+ * 12.4 Added sip_api_instance_destroyed_ex() to the private API.
26231+ *
26232+ * 12.3 Added SIP_TYPE_SCOPED_ENUM to the sipTypeDef flags.
26233+ * Added sip_api_convert_to_enum() to the public API.
26234+ * Added sip_api_convert_to_bool() to the public API.
26235+ * Added sip_api_long_as_char(), sip_api_long_as_signed_char(),
26236+ * sip_api_long_as_unsigned_char(), sip_api_long_as_short(),
26237+ * sip_api_long_as_unsigned_short(), sip_api_long_as_int(),
26238+ * sip_api_long_as_unsigned_int(), sip_api_long_as_long(),
26239+ * sip_api_long_as_unsigned_long(), sip_api_long_as_long_long(),
26240+ * sip_api_long_as_unsigned_long_long() to the public API.
26241+ * Deprecated sip_api_can_convert_to_enum().
26242+ *
26243+ * 12.2 Added sip_api_print_object() to the public API.
26244+ * Renamed sip_api_common_dtor() to sip_api_instance_destroyed() and added
26245+ * it to the public API.
26246+ * Added sipEventType and sip_api_register_event_handler() to the public
26247+ * API.
26248+ *
26249+ * 12.1 Added sip_api_enable_gc() to the public API.
26250+ *
26251+ * 12.0 Added SIP_TYPE_LIMITED_API to the sipTypeDef flags.
26252+ * Added sip_api_py_type_dict() and sip_api_py_type_name() to the public
26253+ * API.
26254+ * Added sip_api_set_new_user_type_handler() to the public API.
26255+ * Added sip_api_is_user_type() to the public API.
26256+ * Added sip_api_set_type_user_data() and sip_api_get_type_user_data() to
26257+ * the public API.
26258+ * Added sip_api_set_user_object() and sip_api_get_user_object() to the
26259+ * public API.
26260+ * Added sip_api_get_method() and sip_api_from_method() to the public API.
26261+ * Added sip_api_get_c_function() to the public API.
26262+ * Added sip_api_get_date() and sip_api_from_date() to the public API.
26263+ * Added sip_api_get_datetime() and sip_api_from_datetime() to the public
26264+ * API.
26265+ * Added sip_api_get_time() and sip_api_from_time() to the public API.
26266+ * Added sip_api_get_frame() to the public API.
26267+ * Added sip_api_check_plugin_for_type() to the public API.
26268+ * Added sip_api_unicode_new(), sip_api_unicode_write() and
26269+ * sip_api_unicode_data() to the public API.
26270+ * Added sip_api_get_buffer_info() and sip_api_relese_buffer_info() to the
26271+ * public API.
26272+ * Added sip_api_call_procedure_method() to the public API.
26273+ * Added sip_api_is_owned_by_python() to the private API.
26274+ * Added sip_api_is_derived_class() to the private API.
26275+ * Removed the im_version member from sipImportedModuleDef.
26276+ * Removed the im_module member from sipImportedModuleDef.
26277+ * Removed the em_version member from sipExportedModuleDef.
26278+ * Removed the em_virthandlers member from sipExportedModuleDef.
26279+ * Re-ordered the API functions.
26280+ *
26281+ * 11.3 Added sip_api_get_interpreter() to the public API.
26282+ *
26283+ * 11.2 Added sip_api_get_reference() to the private API.
26284+ *
26285+ * 11.1 Added sip_api_invoke_slot_ex().
26286+ *
26287+ * 11.0 Added the pyqt5QtSignal and pyqt5ClassTypeDef structures.
26288+ * Removed qt_interface from pyqt4ClassTypeDef.
26289+ * Added hack to pyqt4QtSignal.
26290+ *
26291+ * 10.1 Added ctd_final to sipClassTypeDef.
26292+ * Added ctd_init_mixin to sipClassTypeDef.
26293+ * Added sip_api_get_mixin_address() to the public API.
26294+ * Added sip_api_convert_from_new_pytype() to the public API.
26295+ * Added sip_api_convert_to_array() to the public API.
26296+ * Added sip_api_convert_to_typed_array() to the public API.
26297+ * Added sip_api_register_proxy_resolver() to the public API.
26298+ * Added sip_api_init_mixin() to the private API.
26299+ * Added qt_interface to pyqt4ClassTypeDef.
26300+ *
26301+ * 10.0 Added sip_api_set_destroy_on_exit().
26302+ * Added sip_api_enable_autoconversion().
26303+ * Removed sip_api_call_error_handler_old().
26304+ * Removed sip_api_start_thread().
26305+ *
26306+ * 9.2 Added sip_gilstate_t and SIP_RELEASE_GIL to the public API.
26307+ * Renamed sip_api_call_error_handler() to
26308+ * sip_api_call_error_handler_old().
26309+ * Added the new sip_api_call_error_handler() to the private API.
26310+ *
26311+ * 9.1 Added the capsule type.
26312+ * Added the 'z' format character to sip_api_build_result().
26313+ * Added the 'z', '!' and '$' format characters to
26314+ * sip_api_parse_result_ex().
26315+ *
26316+ * 9.0 Changed the sipVariableGetterFunc signature.
26317+ * Added sip_api_parse_result_ex() to the private API.
26318+ * Added sip_api_call_error_handler() to the private API.
26319+ * Added em_virterrorhandlers to sipExportedModuleDef.
26320+ * Re-ordered the API functions.
26321+ *
26322+ * 8.1 Revised the sipVariableDef structure.
26323+ * sip_api_get_address() is now part of the public API.
26324+ *
26325+ * 8.0 Changed the size of the sipSimpleWrapper structure.
26326+ * Added sip_api_get_address().
26327+ *
26328+ * 7.1 Added the 'H' format character to sip_api_parse_result().
26329+ * Deprecated the 'D' format character of sip_api_parse_result().
26330+ *
26331+ * 7.0 Added sip_api_parse_kwd_args().
26332+ * Added sipErrorState, sip_api_add_exception().
26333+ * The type initialisation function is now passed a dictionary of keyword
26334+ * arguments.
26335+ * All argument parsers now update a set of error messages rather than an
26336+ * argument count.
26337+ * The signatures of sip_api_no_function() and sip_api_no_method() have
26338+ * changed.
26339+ * Added ctd_docstring to sipClassTypeDef.
26340+ * Added vf_docstring to sipVersionedFunctionDef.
26341+ *
26342+ * 6.0 Added the sipContainerDef structure to define the contents of a class
26343+ * or mapped type. Restructured sipClassDef and sipMappedTypeDef
26344+ * accordingly.
26345+ * Added the 'r' format character to sip_api_parse_args().
26346+ * Added the 'r' format character to sip_api_call_method() and
26347+ * sip_api_build_result().
26348+ * Added the assignment, array and copy allocation helpers.
26349+ *
26350+ * 5.0 Added sip_api_is_api_enabled().
26351+ * Renamed the td_version_nr member of sipTypeDef to be int and where -1
26352+ * indicates it is not versioned.
26353+ * Added the em_versions member to sipExportedModuleDef.
26354+ * Added the em_versioned_functions member to sipExportedModuleDef.
26355+ *
26356+ * 4.0 Much refactoring.
26357+ *
26358+ * 3.8 Added sip_api_register_qt_metatype() and sip_api_deprecated().
26359+ * Added qt_register_meta_type() to the Qt support API.
26360+ * The C/C++ names of enums and types are now always defined in the
26361+ * relevant structures and don't default to the Python name.
26362+ * Added the 'XE' format characters to sip_api_parse_args().
26363+ *
26364+ * 3.7 Added sip_api_convert_from_const_void_ptr(),
26365+ * sip_api_convert_from_void_ptr_and_size() and
26366+ * sip_api_convert_from_const_void_ptr_and_size().
26367+ * Added the 'g' and 'G' format characters (to replace the now deprecated
26368+ * 'a' and 'A' format characters) to sip_api_build_result(),
26369+ * sip_api_call_method() and sip_api_parse_result().
26370+ * Added the 'k' and 'K' format characters (to replace the now deprecated
26371+ * 'a' and 'A' format characters) to sip_api_parse_args().
26372+ * Added sip_api_invoke_slot().
26373+ * Added sip_api_parse_type().
26374+ * Added sip_api_is_exact_wrapped_type().
26375+ * Added the td_assign and td_qt fields to the sipTypeDef structure.
26376+ * Added the mt_assign field to the sipMappedType structure.
26377+ *
26378+ * 3.6 Added the 'g' format character to sip_api_parse_args().
26379+ *
26380+ * 3.5 Added the td_pickle field to the sipTypeDef structure.
26381+ * Added sip_api_transfer_break().
26382+ *
26383+ * 3.4 Added qt_find_connection() to the Qt support API.
26384+ * Added sip_api_string_as_char(), sip_api_unicode_as_wchar(),
26385+ * sip_api_unicode_as_wstring(), sip_api_find_class(),
26386+ * sip_api_find_named_enum() and sip_api_parse_signature().
26387+ * Added the 'A', 'w' and 'x' format characters to sip_api_parse_args(),
26388+ * sip_api_parse_result(), sip_api_build_result() and
26389+ * sip_api_call_method().
26390+ *
26391+ * 3.3 Added sip_api_register_int_types().
26392+ *
26393+ * 3.2 Added sip_api_export_symbol() and sip_api_import_symbol().
26394+ *
26395+ * 3.1 Added sip_api_add_mapped_type_instance().
26396+ *
26397+ * 3.0 Moved the Qt support out of the sip module and into PyQt. This is
26398+ * such a dramatic change that there is no point in attempting to maintain
26399+ * backwards compatibility.
26400+ *
26401+ * 2.0 Added the td_flags field to the sipTypeDef structure.
26402+ * Added the first_child, sibling_next, sibling_prev and parent fields to
26403+ * the sipWrapper structure.
26404+ * Added the td_traverse and td_clear fields to the sipTypeDef structure.
26405+ * Added the em_api_minor field to the sipExportedModuleDef structure.
26406+ * Added sip_api_bad_operator_arg().
26407+ * Added sip_api_wrapper_check().
26408+ *
26409+ * 1.1 Added support for __pos__ and __abs__.
26410+ *
26411+ * 1.0 Removed all deprecated parts of the API.
26412+ * Removed the td_proxy field from the sipTypeDef structure.
26413+ * Removed the create proxy function from the 'q' and 'y' format
26414+ * characters to sip_api_parse_args().
26415+ * Removed sip_api_emit_to_slot().
26416+ * Reworked the enum related structures.
26417+ *
26418+ * 0.2 Added the 'H' format character to sip_api_parse_args().
26419+ *
26420+ * 0.1 Added sip_api_add_class_instance().
26421+ * Added the 't' format character to sip_api_parse_args().
26422+ * Deprecated the 'J' and 'K' format characters to sip_api_parse_result().
26423+ *
26424+ * 0.0 Original version.
26425+ */
26426+#define SIP_API_MAJOR_NR 12
26427+#define SIP_API_MINOR_NR 5
26428+
26429+
26430+/*
26431+ * Qt includes this typedef and its meta-object system explicitly converts
26432+ * types to uint. If these correspond to signal arguments then that conversion
26433+ * is exposed. Therefore SIP generates code that uses it. This definition is
26434+ * for the cases that SIP is generating non-Qt related bindings with compilers
26435+ * that don't include it themselves (i.e. MSVC).
26436+ */
26437+typedef unsigned int uint;
26438+
26439+
26440+/* Some Python compatibility stuff. */
26441+#if PY_VERSION_HEX >= 0x02050000
26442+
26443+#define SIP_SSIZE_T Py_ssize_t
26444+#define SIP_SSIZE_T_FORMAT "%zd"
26445+
26446+#define SIP_MLNAME_CAST(s) (s)
26447+#define SIP_MLDOC_CAST(s) (s)
26448+#define SIP_TPNAME_CAST(s) (s)
26449+
26450+#else
26451+
26452+#define SIP_SSIZE_T int
26453+#define SIP_SSIZE_T_FORMAT "%d"
26454+
26455+#define SIP_MLNAME_CAST(s) ((char *)(s))
26456+#define SIP_MLDOC_CAST(s) ((char *)(s))
26457+#define SIP_TPNAME_CAST(s) ((char *)(s))
26458+
26459+#endif
26460+
26461+#if PY_MAJOR_VERSION >= 3
26462+
26463+#define SIPLong_Check PyLong_Check
26464+#define SIPLong_FromLong PyLong_FromLong
26465+#define SIPLong_AsLong PyLong_AsLong
26466+
26467+#define SIPBytes_Check PyBytes_Check
26468+#define SIPBytes_FromString PyBytes_FromString
26469+#define SIPBytes_FromStringAndSize PyBytes_FromStringAndSize
26470+#define SIPBytes_AsString PyBytes_AsString
26471+#define SIPBytes_Size PyBytes_Size
26472+#define SIPBytes_AS_STRING PyBytes_AS_STRING
26473+#define SIPBytes_GET_SIZE PyBytes_GET_SIZE
26474+
26475+#if PY_MINOR_VERSION >= 1
26476+#define SIP_USE_PYCAPSULE
26477+#endif
26478+
26479+#if PY_MINOR_VERSION < 2
26480+#define SIP_SUPPORT_PYCOBJECT
26481+#endif
26482+
26483+#else
26484+
26485+#define SIPLong_Check PyInt_Check
26486+#define SIPLong_FromLong PyInt_FromLong
26487+#define SIPLong_AsLong PyInt_AsLong
26488+
26489+#define SIPBytes_Check PyString_Check
26490+#define SIPBytes_FromString PyString_FromString
26491+#define SIPBytes_FromStringAndSize PyString_FromStringAndSize
26492+#define SIPBytes_AsString PyString_AsString
26493+#define SIPBytes_Size PyString_Size
26494+#define SIPBytes_AS_STRING PyString_AS_STRING
26495+#define SIPBytes_GET_SIZE PyString_GET_SIZE
26496+
26497+#if PY_MINOR_VERSION >= 7
26498+#define SIP_USE_PYCAPSULE
26499+#endif
26500+
26501+#define SIP_SUPPORT_PYCOBJECT
26502+
26503+#endif
26504+
26505+#if !defined(Py_REFCNT)
26506+#define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
26507+#endif
26508+
26509+#if !defined(Py_TYPE)
26510+#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
26511+#endif
26512+
26513+#if !defined(PyVarObject_HEAD_INIT)
26514+#define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
26515+#endif
26516+
26517+
26518+#if defined(SIP_USE_PYCAPSULE)
26519+#define SIPCapsule_FromVoidPtr(p, n) PyCapsule_New((p), (n), NULL)
26520+#define SIPCapsule_AsVoidPtr(p, n) PyCapsule_GetPointer((p), (n))
26521+#else
26522+#define SIPCapsule_FromVoidPtr(p, n) sipConvertFromVoidPtr((p))
26523+#define SIPCapsule_AsVoidPtr(p, n) sipConvertToVoidPtr((p))
26524+#endif
26525+
26526+
26527+/*
26528+ * The mask that can be passed to sipTrace().
26529+ */
26530+#define SIP_TRACE_CATCHERS 0x0001
26531+#define SIP_TRACE_CTORS 0x0002
26532+#define SIP_TRACE_DTORS 0x0004
26533+#define SIP_TRACE_INITS 0x0008
26534+#define SIP_TRACE_DEALLOCS 0x0010
26535+#define SIP_TRACE_METHODS 0x0020
26536+
26537+
26538+/*
26539+ * Hide some thread dependent stuff.
26540+ */
26541+#ifdef WITH_THREAD
26542+typedef PyGILState_STATE sip_gilstate_t;
26543+#define SIP_RELEASE_GIL(gs) PyGILState_Release(gs);
26544+#define SIP_BLOCK_THREADS {PyGILState_STATE sipGIL = PyGILState_Ensure();
26545+#define SIP_UNBLOCK_THREADS PyGILState_Release(sipGIL);}
26546+#else
26547+typedef int sip_gilstate_t;
26548+#define SIP_RELEASE_GIL(gs)
26549+#define SIP_BLOCK_THREADS
26550+#define SIP_UNBLOCK_THREADS
26551+#endif
26552+
26553+
26554+/*
26555+ * Forward declarations of types.
26556+ */
26557+struct _sipBufferDef;
26558+typedef struct _sipBufferDef sipBufferDef;
26559+
26560+struct _sipBufferInfoDef;
26561+typedef struct _sipBufferInfoDef sipBufferInfoDef;
26562+
26563+struct _sipCFunctionDef;
26564+typedef struct _sipCFunctionDef sipCFunctionDef;
26565+
26566+struct _sipDateDef;
26567+typedef struct _sipDateDef sipDateDef;
26568+
26569+struct _sipEnumTypeObject;
26570+typedef struct _sipEnumTypeObject sipEnumTypeObject;
26571+
26572+struct _sipMethodDef;
26573+typedef struct _sipMethodDef sipMethodDef;
26574+
26575+struct _sipSimpleWrapper;
26576+typedef struct _sipSimpleWrapper sipSimpleWrapper;
26577+
26578+struct _sipTimeDef;
26579+typedef struct _sipTimeDef sipTimeDef;
26580+
26581+struct _sipTypeDef;
26582+typedef struct _sipTypeDef sipTypeDef;
26583+
26584+struct _sipWrapperType;
26585+typedef struct _sipWrapperType sipWrapperType;
26586+
26587+struct _sipWrapper;
26588+typedef struct _sipWrapper sipWrapper;
26589+
26590+
26591+/*
26592+ * The different events a handler can be registered for.
26593+ */
26594+typedef enum
26595+{
26596+ sipEventWrappedInstance, /* After wrapping a C/C++ instance. */
26597+ sipEventCollectingWrapper, /* When garbage collecting a wrapper object. */
26598+ sipEventNrEvents
26599+} sipEventType;
26600+
26601+/*
26602+ * The event handlers.
26603+ */
26604+typedef void (*sipWrappedInstanceEventHandler)(void *sipCpp);
26605+typedef void (*sipCollectingWrapperEventHandler)(sipSimpleWrapper *sipSelf);
26606+
26607+
26608+/*
26609+ * The operation an access function is being asked to perform.
26610+ */
26611+typedef enum
26612+{
26613+ UnguardedPointer, /* Return the unguarded pointer. */
26614+ GuardedPointer, /* Return the guarded pointer, ie. 0 if it has gone. */
26615+ ReleaseGuard /* Release the guard, if any. */
26616+} AccessFuncOp;
26617+
26618+
26619+/*
26620+ * Some convenient function pointers.
26621+ */
26622+typedef void *(*sipInitFunc)(sipSimpleWrapper *, PyObject *, PyObject *,
26623+ PyObject **, PyObject **, PyObject **);
26624+typedef int (*sipFinalFunc)(PyObject *, void *, PyObject *, PyObject **);
26625+typedef void *(*sipAccessFunc)(sipSimpleWrapper *, AccessFuncOp);
26626+typedef int (*sipTraverseFunc)(void *, visitproc, void *);
26627+typedef int (*sipClearFunc)(void *);
26628+#if PY_MAJOR_VERSION >= 3
26629+typedef int (*sipGetBufferFuncLimited)(PyObject *, void *, sipBufferDef *);
26630+typedef void (*sipReleaseBufferFuncLimited)(PyObject *, void *);
26631+#if !defined(Py_LIMITED_API)
26632+typedef int (*sipGetBufferFunc)(PyObject *, void *, Py_buffer *, int);
26633+typedef void (*sipReleaseBufferFunc)(PyObject *, void *, Py_buffer *);
26634+#endif
26635+#else
26636+typedef SIP_SSIZE_T (*sipBufferFunc)(PyObject *, void *, SIP_SSIZE_T, void **);
26637+typedef SIP_SSIZE_T (*sipSegCountFunc)(PyObject *, void *, SIP_SSIZE_T *);
26638+#endif
26639+typedef void (*sipDeallocFunc)(sipSimpleWrapper *);
26640+typedef void *(*sipCastFunc)(void *, const sipTypeDef *);
26641+typedef const sipTypeDef *(*sipSubClassConvertFunc)(void **);
26642+typedef int (*sipConvertToFunc)(PyObject *, void **, int *, PyObject *);
26643+typedef PyObject *(*sipConvertFromFunc)(void *, PyObject *);
26644+typedef void (*sipVirtErrorHandlerFunc)(sipSimpleWrapper *, sip_gilstate_t);
26645+typedef int (*sipVirtHandlerFunc)(sip_gilstate_t, sipVirtErrorHandlerFunc,
26646+ sipSimpleWrapper *, PyObject *, ...);
26647+typedef void (*sipAssignFunc)(void *, SIP_SSIZE_T, void *);
26648+typedef void *(*sipArrayFunc)(SIP_SSIZE_T);
26649+typedef void *(*sipCopyFunc)(const void *, SIP_SSIZE_T);
26650+typedef void (*sipReleaseFunc)(void *, int);
26651+typedef PyObject *(*sipPickleFunc)(void *);
26652+typedef int (*sipAttrGetterFunc)(const sipTypeDef *, PyObject *);
26653+typedef PyObject *(*sipVariableGetterFunc)(void *, PyObject *, PyObject *);
26654+typedef int (*sipVariableSetterFunc)(void *, PyObject *, PyObject *);
26655+typedef void *(*sipProxyResolverFunc)(void *);
26656+typedef int (*sipNewUserTypeFunc)(sipWrapperType *);
26657+
26658+
26659+#if !defined(Py_LIMITED_API) || PY_VERSION_HEX < 0x03020000
26660+/*
26661+ * The meta-type of a wrapper type.
26662+ */
26663+struct _sipWrapperType {
26664+ /*
26665+ * The super-metatype. This must be first in the structure so that it can
26666+ * be cast to a PyTypeObject *.
26667+ */
26668+ PyHeapTypeObject super;
26669+
26670+ /* Set if the type is a user implemented Python sub-class. */
26671+ unsigned wt_user_type : 1;
26672+
26673+ /* Set if the type's dictionary contains all lazy attributes. */
26674+ unsigned wt_dict_complete : 1;
26675+
26676+ /* Unused and available for future use. */
26677+ unsigned wt_unused : 30;
26678+
26679+ /* The generated type structure. */
26680+ sipTypeDef *wt_td;
26681+
26682+ /* The list of init extenders. */
26683+ struct _sipInitExtenderDef *wt_iextend;
26684+
26685+ /* The handler called whenever a new user type has been created. */
26686+ sipNewUserTypeFunc wt_new_user_type_handler;
26687+
26688+ /*
26689+ * For the user to use. Note that any data structure will leak if the
26690+ * type is garbage collected.
26691+ */
26692+ void *wt_user_data;
26693+};
26694+
26695+
26696+/*
26697+ * The type of a simple C/C++ wrapper object.
26698+ */
26699+struct _sipSimpleWrapper {
26700+ PyObject_HEAD
26701+
26702+ /*
26703+ * The data, initially a pointer to the C/C++ object, as interpreted by the
26704+ * access function.
26705+ */
26706+ void *data;
26707+
26708+ /* The optional access function. */
26709+ sipAccessFunc access_func;
26710+
26711+ /* Object flags. */
26712+ unsigned sw_flags;
26713+
26714+ /* The optional dictionary of extra references keyed by argument number. */
26715+ PyObject *extra_refs;
26716+
26717+ /* For the user to use. */
26718+ PyObject *user;
26719+
26720+ /* The instance dictionary. */
26721+ PyObject *dict;
26722+
26723+ /* The main instance if this is a mixin. */
26724+ PyObject *mixin_main;
26725+
26726+ /* Next object at this address. */
26727+ struct _sipSimpleWrapper *next;
26728+};
26729+
26730+
26731+/*
26732+ * The type of a C/C++ wrapper object that supports parent/child relationships.
26733+ */
26734+struct _sipWrapper {
26735+ /* The super-type. */
26736+ sipSimpleWrapper super;
26737+
26738+ /* First child object. */
26739+ struct _sipWrapper *first_child;
26740+
26741+ /* Next sibling. */
26742+ struct _sipWrapper *sibling_next;
26743+
26744+ /* Previous sibling. */
26745+ struct _sipWrapper *sibling_prev;
26746+
26747+ /* Owning object. */
26748+ struct _sipWrapper *parent;
26749+};
26750+
26751+
26752+/*
26753+ * The meta-type of an enum type. (This is exposed only to support the
26754+ * deprecated sipConvertFromNamedEnum() macro.)
26755+ */
26756+struct _sipEnumTypeObject {
26757+ /*
26758+ * The super-metatype. This must be first in the structure so that it can
26759+ * be cast to a PyTypeObject *.
26760+ */
26761+ PyHeapTypeObject super;
26762+
26763+ /* The generated type structure. */
26764+ struct _sipTypeDef *type;
26765+};
26766+#endif
26767+
26768+
26769+/*
26770+ * The information describing an encoded type ID.
26771+ */
26772+typedef struct _sipEncodedTypeDef {
26773+ /* The type number. */
26774+ unsigned sc_type : 16;
26775+
26776+ /* The module number (255 for this one). */
26777+ unsigned sc_module : 8;
26778+
26779+ /* A context specific flag. */
26780+ unsigned sc_flag : 1;
26781+} sipEncodedTypeDef;
26782+
26783+
26784+/*
26785+ * The information describing an enum member.
26786+ */
26787+typedef struct _sipEnumMemberDef {
26788+ /* The member name. */
26789+ const char *em_name;
26790+
26791+ /* The member value. */
26792+ int em_val;
26793+
26794+ /* The member enum, -ve if anonymous. */
26795+ int em_enum;
26796+} sipEnumMemberDef;
26797+
26798+
26799+/*
26800+ * The information describing static instances.
26801+ */
26802+typedef struct _sipInstancesDef {
26803+ /* The types. */
26804+ struct _sipTypeInstanceDef *id_type;
26805+
26806+ /* The void *. */
26807+ struct _sipVoidPtrInstanceDef *id_voidp;
26808+
26809+ /* The chars. */
26810+ struct _sipCharInstanceDef *id_char;
26811+
26812+ /* The strings. */
26813+ struct _sipStringInstanceDef *id_string;
26814+
26815+ /* The ints. */
26816+ struct _sipIntInstanceDef *id_int;
26817+
26818+ /* The longs. */
26819+ struct _sipLongInstanceDef *id_long;
26820+
26821+ /* The unsigned longs. */
26822+ struct _sipUnsignedLongInstanceDef *id_ulong;
26823+
26824+ /* The long longs. */
26825+ struct _sipLongLongInstanceDef *id_llong;
26826+
26827+ /* The unsigned long longs. */
26828+ struct _sipUnsignedLongLongInstanceDef *id_ullong;
26829+
26830+ /* The doubles. */
26831+ struct _sipDoubleInstanceDef *id_double;
26832+} sipInstancesDef;
26833+
26834+
26835+/*
26836+ * The information describing a type initialiser extender.
26837+ */
26838+typedef struct _sipInitExtenderDef {
26839+ /* The API version range index. */
26840+ int ie_api_range;
26841+
26842+ /* The extender function. */
26843+ sipInitFunc ie_extender;
26844+
26845+ /* The class being extended. */
26846+ sipEncodedTypeDef ie_class;
26847+
26848+ /* The next extender for this class. */
26849+ struct _sipInitExtenderDef *ie_next;
26850+} sipInitExtenderDef;
26851+
26852+
26853+/*
26854+ * The information describing a sub-class convertor.
26855+ */
26856+typedef struct _sipSubClassConvertorDef {
26857+ /* The convertor. */
26858+ sipSubClassConvertFunc scc_convertor;
26859+
26860+ /* The encoded base type. */
26861+ sipEncodedTypeDef scc_base;
26862+
26863+ /* The base type. */
26864+ struct _sipTypeDef *scc_basetype;
26865+} sipSubClassConvertorDef;
26866+
26867+
26868+/*
26869+ * The structure populated by %BIGetBufferCode when the limited API is enabled.
26870+ */
26871+struct _sipBufferDef {
26872+ /* The address of the buffer. */
26873+ void *bd_buffer;
26874+
26875+ /* The length of the buffer. */
26876+ SIP_SSIZE_T bd_length;
26877+
26878+ /* Set if the buffer is read-only. */
26879+ int bd_readonly;
26880+};
26881+
26882+
26883+/*
26884+ * The structure describing a Python buffer.
26885+ */
26886+struct _sipBufferInfoDef {
26887+ /* This is internal to sip. */
26888+ void *bi_internal;
26889+
26890+ /* The address of the buffer. */
26891+ void *bi_buf;
26892+
26893+ /* A reference to the object implementing the buffer interface. */
26894+ PyObject *bi_obj;
26895+
26896+ /* The length of the buffer in bytes. */
26897+ SIP_SSIZE_T bi_len;
26898+
26899+ /* The number of dimensions. */
26900+ int bi_ndim;
26901+
26902+ /* The format of each element of the buffer. */
26903+ char *bi_format;
26904+};
26905+
26906+
26907+/*
26908+ * The structure describing a Python C function.
26909+ */
26910+struct _sipCFunctionDef {
26911+ /* The C function. */
26912+ PyMethodDef *cf_function;
26913+
26914+ /* The optional bound object. */
26915+ PyObject *cf_self;
26916+};
26917+
26918+
26919+/*
26920+ * The structure describing a Python method.
26921+ */
26922+struct _sipMethodDef {
26923+ /* The function that implements the method. */
26924+ PyObject *pm_function;
26925+
26926+ /* The bound object. */
26927+ PyObject *pm_self;
26928+
26929+#if PY_MAJOR_VERSION < 3
26930+ /* The class. */
26931+ PyObject *pm_class;
26932+#endif
26933+};
26934+
26935+
26936+/*
26937+ * The structure describing a Python date.
26938+ */
26939+struct _sipDateDef {
26940+ /* The year. */
26941+ int pd_year;
26942+
26943+ /* The month (1-12). */
26944+ int pd_month;
26945+
26946+ /* The day (1-31). */
26947+ int pd_day;
26948+};
26949+
26950+
26951+/*
26952+ * The structure describing a Python time.
26953+ */
26954+struct _sipTimeDef {
26955+ /* The hour (0-23). */
26956+ int pt_hour;
26957+
26958+ /* The minute (0-59). */
26959+ int pt_minute;
26960+
26961+ /* The second (0-59). */
26962+ int pt_second;
26963+
26964+ /* The microsecond (0-999999). */
26965+ int pt_microsecond;
26966+};
26967+
26968+
26969+/*
26970+ * The different error states of handwritten code.
26971+ */
26972+typedef enum {
26973+ sipErrorNone, /* There is no error. */
26974+ sipErrorFail, /* The error is a failure. */
26975+ sipErrorContinue /* It may not apply if a later operation succeeds. */
26976+} sipErrorState;
26977+
26978+
26979+/*
26980+ * The different Python slot types. New slots must be added to the end,
26981+ * otherwise the major version of the internal ABI must be changed.
26982+ */
26983+typedef enum {
26984+ str_slot, /* __str__ */
26985+ int_slot, /* __int__ */
26986+#if PY_MAJOR_VERSION < 3
26987+ long_slot, /* __long__ */
26988+#endif
26989+ float_slot, /* __float__ */
26990+ len_slot, /* __len__ */
26991+ contains_slot, /* __contains__ */
26992+ add_slot, /* __add__ for number */
26993+ concat_slot, /* __add__ for sequence types */
26994+ sub_slot, /* __sub__ */
26995+ mul_slot, /* __mul__ for number types */
26996+ repeat_slot, /* __mul__ for sequence types */
26997+ div_slot, /* __div__ */
26998+ mod_slot, /* __mod__ */
26999+ floordiv_slot, /* __floordiv__ */
27000+ truediv_slot, /* __truediv__ */
27001+ and_slot, /* __and__ */
27002+ or_slot, /* __or__ */
27003+ xor_slot, /* __xor__ */
27004+ lshift_slot, /* __lshift__ */
27005+ rshift_slot, /* __rshift__ */
27006+ iadd_slot, /* __iadd__ for number types */
27007+ iconcat_slot, /* __iadd__ for sequence types */
27008+ isub_slot, /* __isub__ */
27009+ imul_slot, /* __imul__ for number types */
27010+ irepeat_slot, /* __imul__ for sequence types */
27011+ idiv_slot, /* __idiv__ */
27012+ imod_slot, /* __imod__ */
27013+ ifloordiv_slot, /* __ifloordiv__ */
27014+ itruediv_slot, /* __itruediv__ */
27015+ iand_slot, /* __iand__ */
27016+ ior_slot, /* __ior__ */
27017+ ixor_slot, /* __ixor__ */
27018+ ilshift_slot, /* __ilshift__ */
27019+ irshift_slot, /* __irshift__ */
27020+ invert_slot, /* __invert__ */
27021+ call_slot, /* __call__ */
27022+ getitem_slot, /* __getitem__ */
27023+ setitem_slot, /* __setitem__ */
27024+ delitem_slot, /* __delitem__ */
27025+ lt_slot, /* __lt__ */
27026+ le_slot, /* __le__ */
27027+ eq_slot, /* __eq__ */
27028+ ne_slot, /* __ne__ */
27029+ gt_slot, /* __gt__ */
27030+ ge_slot, /* __ge__ */
27031+#if PY_MAJOR_VERSION < 3
27032+ cmp_slot, /* __cmp__ */
27033+#endif
27034+ bool_slot, /* __bool__, __nonzero__ */
27035+ neg_slot, /* __neg__ */
27036+ repr_slot, /* __repr__ */
27037+ hash_slot, /* __hash__ */
27038+ pos_slot, /* __pos__ */
27039+ abs_slot, /* __abs__ */
27040+#if PY_VERSION_HEX >= 0x02050000
27041+ index_slot, /* __index__ */
27042+#endif
27043+ iter_slot, /* __iter__ */
27044+ next_slot, /* __next__ */
27045+ setattr_slot, /* __setattr__, __delattr__ */
27046+ matmul_slot, /* __matmul__ (for Python v3.5 and later) */
27047+ imatmul_slot, /* __imatmul__ (for Python v3.5 and later) */
27048+ await_slot, /* __await__ (for Python v3.5 and later) */
27049+ aiter_slot, /* __aiter__ (for Python v3.5 and later) */
27050+ anext_slot, /* __anext__ (for Python v3.5 and later) */
27051+} sipPySlotType;
27052+
27053+
27054+/*
27055+ * The information describing a Python slot function.
27056+ */
27057+typedef struct _sipPySlotDef {
27058+ /* The function. */
27059+ void *psd_func;
27060+
27061+ /* The type. */
27062+ sipPySlotType psd_type;
27063+} sipPySlotDef;
27064+
27065+
27066+/*
27067+ * The information describing a Python slot extender.
27068+ */
27069+typedef struct _sipPySlotExtenderDef {
27070+ /* The function. */
27071+ void *pse_func;
27072+
27073+ /* The type. */
27074+ sipPySlotType pse_type;
27075+
27076+ /* The encoded class. */
27077+ sipEncodedTypeDef pse_class;
27078+} sipPySlotExtenderDef;
27079+
27080+
27081+/*
27082+ * The information describing a typedef.
27083+ */
27084+typedef struct _sipTypedefDef {
27085+ /* The typedef name. */
27086+ const char *tdd_name;
27087+
27088+ /* The typedef value. */
27089+ const char *tdd_type_name;
27090+} sipTypedefDef;
27091+
27092+
27093+/*
27094+ * The information describing a variable or property.
27095+ */
27096+
27097+typedef enum
27098+{
27099+ PropertyVariable, /* A property. */
27100+ InstanceVariable, /* An instance variable. */
27101+ ClassVariable /* A class (i.e. static) variable. */
27102+} sipVariableType;
27103+
27104+typedef struct _sipVariableDef {
27105+ /* The type of variable. */
27106+ sipVariableType vd_type;
27107+
27108+ /* The name. */
27109+ const char *vd_name;
27110+
27111+ /*
27112+ * The getter. If this is a variable (rather than a property) then the
27113+ * actual type is sipVariableGetterFunc.
27114+ */
27115+ PyMethodDef *vd_getter;
27116+
27117+ /*
27118+ * The setter. If this is a variable (rather than a property) then the
27119+ * actual type is sipVariableSetterFunc. It is NULL if the property cannot
27120+ * be set or the variable is const.
27121+ */
27122+ PyMethodDef *vd_setter;
27123+
27124+ /* The property deleter. */
27125+ PyMethodDef *vd_deleter;
27126+
27127+ /* The docstring. */
27128+ const char *vd_docstring;
27129+} sipVariableDef;
27130+
27131+
27132+/*
27133+ * The information describing a type, either a C++ class (or C struct), a C++
27134+ * namespace, a mapped type or a named enum.
27135+ */
27136+struct _sipTypeDef {
27137+ /* The version range index, -1 if the type isn't versioned. */
27138+ int td_version;
27139+
27140+ /* The next version of this type. */
27141+ struct _sipTypeDef *td_next_version;
27142+
27143+ /*
27144+ * The module, 0 if the type hasn't been initialised.
27145+ */
27146+ struct _sipExportedModuleDef *td_module;
27147+
27148+ /* Type flags, see the sipType*() macros. */
27149+ int td_flags;
27150+
27151+ /* The C/C++ name of the type. */
27152+ int td_cname;
27153+
27154+ /*
27155+ * The Python type object. This needs to be a union until we remove the
27156+ * deprecated sipClass_* macros.
27157+ */
27158+ union {
27159+ PyTypeObject *td_py_type;
27160+ sipWrapperType *td_wrapper_type;
27161+ } u;
27162+
27163+ /* Any additional fixed data generated by a plugin. */
27164+ void *td_plugin_data;
27165+};
27166+
27167+
27168+/*
27169+ * The information describing a container (ie. a class, namespace or a mapped
27170+ * type).
27171+ */
27172+typedef struct _sipContainerDef {
27173+ /*
27174+ * The Python name of the type, -1 if this is a namespace extender (in the
27175+ * context of a class) or doesn't require a namespace (in the context of a
27176+ * mapped type). */
27177+ int cod_name;
27178+
27179+ /*
27180+ * The scoping type or the namespace this is extending if it is a namespace
27181+ * extender.
27182+ */
27183+ sipEncodedTypeDef cod_scope;
27184+
27185+ /* The number of lazy methods. */
27186+ int cod_nrmethods;
27187+
27188+ /* The table of lazy methods. */
27189+ PyMethodDef *cod_methods;
27190+
27191+ /* The number of lazy enum members. */
27192+ int cod_nrenummembers;
27193+
27194+ /* The table of lazy enum members. */
27195+ sipEnumMemberDef *cod_enummembers;
27196+
27197+ /* The number of variables. */
27198+ int cod_nrvariables;
27199+
27200+ /* The table of variables. */
27201+ sipVariableDef *cod_variables;
27202+
27203+ /* The static instances. */
27204+ sipInstancesDef cod_instances;
27205+} sipContainerDef;
27206+
27207+
27208+/*
27209+ * The information describing a C++ class (or C struct) or a C++ namespace.
27210+ */
27211+typedef struct _sipClassTypeDef {
27212+ /* The base type information. */
27213+ sipTypeDef ctd_base;
27214+
27215+ /* The container information. */
27216+ sipContainerDef ctd_container;
27217+
27218+ /* The docstring. */
27219+ const char *ctd_docstring;
27220+
27221+ /*
27222+ * The meta-type name, -1 to use the meta-type of the first super-type
27223+ * (normally sipWrapperType).
27224+ */
27225+ int ctd_metatype;
27226+
27227+ /* The super-type name, -1 to use sipWrapper. */
27228+ int ctd_supertype;
27229+
27230+ /* The super-types. */
27231+ sipEncodedTypeDef *ctd_supers;
27232+
27233+ /* The table of Python slots. */
27234+ sipPySlotDef *ctd_pyslots;
27235+
27236+ /* The initialisation function. */
27237+ sipInitFunc ctd_init;
27238+
27239+ /* The traverse function. */
27240+ sipTraverseFunc ctd_traverse;
27241+
27242+ /* The clear function. */
27243+ sipClearFunc ctd_clear;
27244+
27245+#if PY_MAJOR_VERSION >= 3
27246+ /* The get buffer function. */
27247+#if defined(Py_LIMITED_API)
27248+ sipGetBufferFuncLimited ctd_getbuffer;
27249+#else
27250+ sipGetBufferFunc ctd_getbuffer;
27251+#endif
27252+
27253+ /* The release buffer function. */
27254+#if defined(Py_LIMITED_API)
27255+ sipReleaseBufferFuncLimited ctd_releasebuffer;
27256+#else
27257+ sipReleaseBufferFunc ctd_releasebuffer;
27258+#endif
27259+#else
27260+ /* The read buffer function. */
27261+ sipBufferFunc ctd_readbuffer;
27262+
27263+ /* The write buffer function. */
27264+ sipBufferFunc ctd_writebuffer;
27265+
27266+ /* The segment count function. */
27267+ sipSegCountFunc ctd_segcount;
27268+
27269+ /* The char buffer function. */
27270+ sipBufferFunc ctd_charbuffer;
27271+#endif
27272+
27273+ /* The deallocation function. */
27274+ sipDeallocFunc ctd_dealloc;
27275+
27276+ /* The optional assignment function. */
27277+ sipAssignFunc ctd_assign;
27278+
27279+ /* The optional array allocation function. */
27280+ sipArrayFunc ctd_array;
27281+
27282+ /* The optional copy function. */
27283+ sipCopyFunc ctd_copy;
27284+
27285+ /* The release function, 0 if a C struct. */
27286+ sipReleaseFunc ctd_release;
27287+
27288+ /* The cast function, 0 if a C struct. */
27289+ sipCastFunc ctd_cast;
27290+
27291+ /* The optional convert to function. */
27292+ sipConvertToFunc ctd_cto;
27293+
27294+ /* The optional convert from function. */
27295+ sipConvertFromFunc ctd_cfrom;
27296+
27297+ /* The next namespace extender. */
27298+ struct _sipClassTypeDef *ctd_nsextender;
27299+
27300+ /* The pickle function. */
27301+ sipPickleFunc ctd_pickle;
27302+
27303+ /* The finalisation function. */
27304+ sipFinalFunc ctd_final;
27305+
27306+ /* The mixin initialisation function. */
27307+ initproc ctd_init_mixin;
27308+} sipClassTypeDef;
27309+
27310+
27311+/*
27312+ * The information describing a mapped type.
27313+ */
27314+typedef struct _sipMappedTypeDef {
27315+ /* The base type information. */
27316+ sipTypeDef mtd_base;
27317+
27318+ /* The container information. */
27319+ sipContainerDef mtd_container;
27320+
27321+ /* The optional assignment function. */
27322+ sipAssignFunc mtd_assign;
27323+
27324+ /* The optional array allocation function. */
27325+ sipArrayFunc mtd_array;
27326+
27327+ /* The optional copy function. */
27328+ sipCopyFunc mtd_copy;
27329+
27330+ /* The optional release function. */
27331+ sipReleaseFunc mtd_release;
27332+
27333+ /* The convert to function. */
27334+ sipConvertToFunc mtd_cto;
27335+
27336+ /* The convert from function. */
27337+ sipConvertFromFunc mtd_cfrom;
27338+} sipMappedTypeDef;
27339+
27340+
27341+/*
27342+ * The information describing a named enum.
27343+ */
27344+typedef struct _sipEnumTypeDef {
27345+ /* The base type information. */
27346+ sipTypeDef etd_base;
27347+
27348+ /* The Python name of the enum. */
27349+ int etd_name;
27350+
27351+ /* The scoping type, -1 if it is defined at the module level. */
27352+ int etd_scope;
27353+
27354+ /* The Python slots. */
27355+ struct _sipPySlotDef *etd_pyslots;
27356+} sipEnumTypeDef;
27357+
27358+
27359+/*
27360+ * The information describing an external type.
27361+ */
27362+typedef struct _sipExternalTypeDef {
27363+ /* The index into the type table. */
27364+ int et_nr;
27365+
27366+ /* The name of the type. */
27367+ const char *et_name;
27368+} sipExternalTypeDef;
27369+
27370+
27371+/*
27372+ * The information describing a mapped class. This (and anything that uses it)
27373+ * is deprecated.
27374+ */
27375+typedef sipTypeDef sipMappedType;
27376+
27377+
27378+/*
27379+ * Defines an entry in the module specific list of delayed dtor calls.
27380+ */
27381+typedef struct _sipDelayedDtor {
27382+ /* The C/C++ instance. */
27383+ void *dd_ptr;
27384+
27385+ /* The class name. */
27386+ const char *dd_name;
27387+
27388+ /* Non-zero if dd_ptr is a derived class instance. */
27389+ int dd_isderived;
27390+
27391+ /* Next in the list. */
27392+ struct _sipDelayedDtor *dd_next;
27393+} sipDelayedDtor;
27394+
27395+
27396+/*
27397+ * Defines an entry in the table of global functions all of whose overloads
27398+ * are versioned (so their names can't be automatically added to the module
27399+ * dictionary).
27400+ */
27401+typedef struct _sipVersionedFunctionDef {
27402+ /* The name, -1 marks the end of the table. */
27403+ int vf_name;
27404+
27405+ /* The function itself. */
27406+ PyCFunction vf_function;
27407+
27408+ /* The METH_* flags. */
27409+ int vf_flags;
27410+
27411+ /* The docstring. */
27412+ const char *vf_docstring;
27413+
27414+ /* The API version range index. */
27415+ int vf_api_range;
27416+} sipVersionedFunctionDef;
27417+
27418+
27419+/*
27420+ * Defines a virtual error handler.
27421+ */
27422+typedef struct _sipVirtErrorHandlerDef {
27423+ /* The name of the handler. */
27424+ const char *veh_name;
27425+
27426+ /* The handler function. */
27427+ sipVirtErrorHandlerFunc veh_handler;
27428+} sipVirtErrorHandlerDef;
27429+
27430+
27431+/*
27432+ * Defines a type imported from another module.
27433+ */
27434+typedef union _sipImportedTypeDef {
27435+ /* The type name before the module is imported. */
27436+ const char *it_name;
27437+
27438+ /* The type after the module is imported. */
27439+ sipTypeDef *it_td;
27440+} sipImportedTypeDef;
27441+
27442+
27443+/*
27444+ * Defines a virtual error handler imported from another module.
27445+ */
27446+typedef union _sipImportedVirtErrorHandlerDef {
27447+ /* The handler name before the module is imported. */
27448+ const char *iveh_name;
27449+
27450+ /* The handler after the module is imported. */
27451+ sipVirtErrorHandlerFunc iveh_handler;
27452+} sipImportedVirtErrorHandlerDef;
27453+
27454+
27455+/*
27456+ * Defines an exception imported from another module.
27457+ */
27458+typedef union _sipImportedExceptionDef {
27459+ /* The exception name before the module is imported. */
27460+ const char *iexc_name;
27461+
27462+ /* The exception object after the module is imported. */
27463+ PyObject *iexc_object;
27464+} sipImportedExceptionDef;
27465+
27466+
27467+/*
27468+ * The information describing an imported module.
27469+ */
27470+typedef struct _sipImportedModuleDef {
27471+ /* The module name. */
27472+ const char *im_name;
27473+
27474+ /* The types imported from the module. */
27475+ sipImportedTypeDef *im_imported_types;
27476+
27477+ /* The virtual error handlers imported from the module. */
27478+ sipImportedVirtErrorHandlerDef *im_imported_veh;
27479+
27480+ /* The exceptions imported from the module. */
27481+ sipImportedExceptionDef *im_imported_exceptions;
27482+} sipImportedModuleDef;
27483+
27484+
27485+/*
27486+ * The main client module structure.
27487+ */
27488+typedef struct _sipExportedModuleDef {
27489+ /* The next in the list. */
27490+ struct _sipExportedModuleDef *em_next;
27491+
27492+ /* The SIP API minor version number. */
27493+ unsigned em_api_minor;
27494+
27495+ /* The module name. */
27496+ int em_name;
27497+
27498+ /* The module name as an object. */
27499+ PyObject *em_nameobj;
27500+
27501+ /* The string pool. */
27502+ const char *em_strings;
27503+
27504+ /* The imported modules. */
27505+ sipImportedModuleDef *em_imports;
27506+
27507+ /* The optional Qt support API. */
27508+ struct _sipQtAPI *em_qt_api;
27509+
27510+ /* The number of types. */
27511+ int em_nrtypes;
27512+
27513+ /* The table of types. */
27514+ sipTypeDef **em_types;
27515+
27516+ /* The table of external types. */
27517+ sipExternalTypeDef *em_external;
27518+
27519+ /* The number of members in global enums. */
27520+ int em_nrenummembers;
27521+
27522+ /* The table of members in global enums. */
27523+ sipEnumMemberDef *em_enummembers;
27524+
27525+ /* The number of typedefs. */
27526+ int em_nrtypedefs;
27527+
27528+ /* The table of typedefs. */
27529+ sipTypedefDef *em_typedefs;
27530+
27531+ /* The table of virtual error handlers. */
27532+ sipVirtErrorHandlerDef *em_virterrorhandlers;
27533+
27534+ /* The sub-class convertors. */
27535+ sipSubClassConvertorDef *em_convertors;
27536+
27537+ /* The static instances. */
27538+ sipInstancesDef em_instances;
27539+
27540+ /* The license. */
27541+ struct _sipLicenseDef *em_license;
27542+
27543+ /* The table of exception types. */
27544+ PyObject **em_exceptions;
27545+
27546+ /* The table of Python slot extenders. */
27547+ sipPySlotExtenderDef *em_slotextend;
27548+
27549+ /* The table of initialiser extenders. */
27550+ sipInitExtenderDef *em_initextend;
27551+
27552+ /* The delayed dtor handler. */
27553+ void (*em_delayeddtors)(const sipDelayedDtor *);
27554+
27555+ /* The list of delayed dtors. */
27556+ sipDelayedDtor *em_ddlist;
27557+
27558+ /*
27559+ * The array of API version definitions. Each definition takes up 3
27560+ * elements. If the third element of a 3-tuple is negative then the first
27561+ * two elements define an API and its default version. All such
27562+ * definitions will appear at the end of the array. If the first element
27563+ * of a 3-tuple is negative then that is the last element of the array.
27564+ */
27565+ int *em_versions;
27566+
27567+ /* The optional table of versioned functions. */
27568+ sipVersionedFunctionDef *em_versioned_functions;
27569+} sipExportedModuleDef;
27570+
27571+
27572+/*
27573+ * The information describing a license to be added to a dictionary.
27574+ */
27575+typedef struct _sipLicenseDef {
27576+ /* The type of license. */
27577+ const char *lc_type;
27578+
27579+ /* The licensee. */
27580+ const char *lc_licensee;
27581+
27582+ /* The timestamp. */
27583+ const char *lc_timestamp;
27584+
27585+ /* The signature. */
27586+ const char *lc_signature;
27587+} sipLicenseDef;
27588+
27589+
27590+/*
27591+ * The information describing a void pointer instance to be added to a
27592+ * dictionary.
27593+ */
27594+typedef struct _sipVoidPtrInstanceDef {
27595+ /* The void pointer name. */
27596+ const char *vi_name;
27597+
27598+ /* The void pointer value. */
27599+ void *vi_val;
27600+} sipVoidPtrInstanceDef;
27601+
27602+
27603+/*
27604+ * The information describing a char instance to be added to a dictionary.
27605+ */
27606+typedef struct _sipCharInstanceDef {
27607+ /* The char name. */
27608+ const char *ci_name;
27609+
27610+ /* The char value. */
27611+ char ci_val;
27612+
27613+ /* The encoding used, either 'A', 'L', '8' or 'N'. */
27614+ char ci_encoding;
27615+} sipCharInstanceDef;
27616+
27617+
27618+/*
27619+ * The information describing a string instance to be added to a dictionary.
27620+ * This is also used as a hack to add (or fix) other types rather than add a
27621+ * new table type and so requiring a new major version of the API.
27622+ */
27623+typedef struct _sipStringInstanceDef {
27624+ /* The string name. */
27625+ const char *si_name;
27626+
27627+ /* The string value. */
27628+ const char *si_val;
27629+
27630+ /*
27631+ * The encoding used, either 'A', 'L', '8' or 'N'. 'w' and 'W' are also
27632+ * used to support the fix for wchar_t.
27633+ */
27634+ char si_encoding;
27635+} sipStringInstanceDef;
27636+
27637+
27638+/*
27639+ * The information describing an int instance to be added to a dictionary.
27640+ */
27641+typedef struct _sipIntInstanceDef {
27642+ /* The int name. */
27643+ const char *ii_name;
27644+
27645+ /* The int value. */
27646+ int ii_val;
27647+} sipIntInstanceDef;
27648+
27649+
27650+/*
27651+ * The information describing a long instance to be added to a dictionary.
27652+ */
27653+typedef struct _sipLongInstanceDef {
27654+ /* The long name. */
27655+ const char *li_name;
27656+
27657+ /* The long value. */
27658+ long li_val;
27659+} sipLongInstanceDef;
27660+
27661+
27662+/*
27663+ * The information describing an unsigned long instance to be added to a
27664+ * dictionary.
27665+ */
27666+typedef struct _sipUnsignedLongInstanceDef {
27667+ /* The unsigned long name. */
27668+ const char *uli_name;
27669+
27670+ /* The unsigned long value. */
27671+ unsigned long uli_val;
27672+} sipUnsignedLongInstanceDef;
27673+
27674+
27675+/*
27676+ * The information describing a long long instance to be added to a dictionary.
27677+ */
27678+typedef struct _sipLongLongInstanceDef {
27679+ /* The long long name. */
27680+ const char *lli_name;
27681+
27682+ /* The long long value. */
27683+#if defined(HAVE_LONG_LONG)
27684+ PY_LONG_LONG lli_val;
27685+#else
27686+ long lli_val;
27687+#endif
27688+} sipLongLongInstanceDef;
27689+
27690+
27691+/*
27692+ * The information describing an unsigned long long instance to be added to a
27693+ * dictionary.
27694+ */
27695+typedef struct _sipUnsignedLongLongInstanceDef {
27696+ /* The unsigned long long name. */
27697+ const char *ulli_name;
27698+
27699+ /* The unsigned long long value. */
27700+#if defined(HAVE_LONG_LONG)
27701+ unsigned PY_LONG_LONG ulli_val;
27702+#else
27703+ unsigned long ulli_val;
27704+#endif
27705+} sipUnsignedLongLongInstanceDef;
27706+
27707+
27708+/*
27709+ * The information describing a double instance to be added to a dictionary.
27710+ */
27711+typedef struct _sipDoubleInstanceDef {
27712+ /* The double name. */
27713+ const char *di_name;
27714+
27715+ /* The double value. */
27716+ double di_val;
27717+} sipDoubleInstanceDef;
27718+
27719+
27720+/*
27721+ * The information describing a class or enum instance to be added to a
27722+ * dictionary.
27723+ */
27724+typedef struct _sipTypeInstanceDef {
27725+ /* The type instance name. */
27726+ const char *ti_name;
27727+
27728+ /* The actual instance. */
27729+ void *ti_ptr;
27730+
27731+ /* A pointer to the generated type. */
27732+ struct _sipTypeDef **ti_type;
27733+
27734+ /* The wrapping flags. */
27735+ int ti_flags;
27736+} sipTypeInstanceDef;
27737+
27738+
27739+/*
27740+ * Define a mapping between a wrapped type identified by a string and the
27741+ * corresponding Python type. This is deprecated.
27742+ */
27743+typedef struct _sipStringTypeClassMap {
27744+ /* The type as a string. */
27745+ const char *typeString;
27746+
27747+ /* A pointer to the Python type. */
27748+ struct _sipWrapperType **pyType;
27749+} sipStringTypeClassMap;
27750+
27751+
27752+/*
27753+ * Define a mapping between a wrapped type identified by an integer and the
27754+ * corresponding Python type. This is deprecated.
27755+ */
27756+typedef struct _sipIntTypeClassMap {
27757+ /* The type as an integer. */
27758+ int typeInt;
27759+
27760+ /* A pointer to the Python type. */
27761+ struct _sipWrapperType **pyType;
27762+} sipIntTypeClassMap;
27763+
27764+
27765+/*
27766+ * A Python method's component parts. This allows us to re-create the method
27767+ * without changing the reference counts of the components.
27768+ */
27769+typedef struct _sipPyMethod {
27770+ /* The function. */
27771+ PyObject *mfunc;
27772+
27773+ /* Self if it is a bound method. */
27774+ PyObject *mself;
27775+
27776+#if PY_MAJOR_VERSION < 3
27777+ /* The class. */
27778+ PyObject *mclass;
27779+#endif
27780+} sipPyMethod;
27781+
27782+
27783+/*
27784+ * A slot (in the Qt, rather than Python, sense).
27785+ */
27786+typedef struct _sipSlot {
27787+ /* Name if a Qt or Python signal. */
27788+ char *name;
27789+
27790+ /* Signal or Qt slot object. */
27791+ PyObject *pyobj;
27792+
27793+ /* Python slot method, pyobj is NULL. */
27794+ sipPyMethod meth;
27795+
27796+ /* A weak reference to the slot, Py_True if pyobj has an extra reference. */
27797+ PyObject *weakSlot;
27798+} sipSlot;
27799+
27800+
27801+/*
27802+ * The API exported by the SIP module, ie. pointers to all the data and
27803+ * functions that can be used by generated code.
27804+ */
27805+typedef struct _sipAPIDef {
27806+ /*
27807+ * This must be the first entry and it's signature must not change so that
27808+ * version number mismatches can be detected and reported.
27809+ */
27810+ int (*api_export_module)(sipExportedModuleDef *client, unsigned api_major,
27811+ unsigned api_minor, void *unused);
27812+
27813+ /*
27814+ * The following are part of the public API.
27815+ */
27816+ PyTypeObject *api_simplewrapper_type;
27817+ PyTypeObject *api_wrapper_type;
27818+ PyTypeObject *api_wrappertype_type;
27819+ PyTypeObject *api_voidptr_type;
27820+
27821+ void (*api_bad_catcher_result)(PyObject *method);
27822+ void (*api_bad_length_for_slice)(SIP_SSIZE_T seqlen, SIP_SSIZE_T slicelen);
27823+ PyObject *(*api_build_result)(int *isErr, const char *fmt, ...);
27824+ PyObject *(*api_call_method)(int *isErr, PyObject *method, const char *fmt,
27825+ ...);
27826+ void (*api_call_procedure_method)(sip_gilstate_t, sipVirtErrorHandlerFunc,
27827+ sipSimpleWrapper *, PyObject *, const char *, ...);
27828+ PyObject *(*api_connect_rx)(PyObject *txObj, const char *sig,
27829+ PyObject *rxObj, const char *slot, int type);
27830+ SIP_SSIZE_T (*api_convert_from_sequence_index)(SIP_SSIZE_T idx,
27831+ SIP_SSIZE_T len);
27832+ int (*api_can_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
27833+ int flags);
27834+ void *(*api_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
27835+ PyObject *transferObj, int flags, int *statep, int *iserrp);
27836+ void *(*api_force_convert_to_type)(PyObject *pyObj, const sipTypeDef *td,
27837+ PyObject *transferObj, int flags, int *statep, int *iserrp);
27838+
27839+ /*
27840+ * The following are deprecated parts of the public API.
27841+ */
27842+ int (*api_can_convert_to_enum)(PyObject *pyObj, const sipTypeDef *td);
27843+
27844+ /*
27845+ * The following are part of the public API.
27846+ */
27847+ void (*api_release_type)(void *cpp, const sipTypeDef *td, int state);
27848+ PyObject *(*api_convert_from_type)(void *cpp, const sipTypeDef *td,
27849+ PyObject *transferObj);
27850+ PyObject *(*api_convert_from_new_type)(void *cpp, const sipTypeDef *td,
27851+ PyObject *transferObj);
27852+ PyObject *(*api_convert_from_enum)(int eval, const sipTypeDef *td);
27853+ int (*api_get_state)(PyObject *transferObj);
27854+ PyObject *(*api_disconnect_rx)(PyObject *txObj, const char *sig,
27855+ PyObject *rxObj, const char *slot);
27856+ void (*api_free)(void *mem);
27857+ PyObject *(*api_get_pyobject)(void *cppPtr, const sipTypeDef *td);
27858+ void *(*api_malloc)(size_t nbytes);
27859+ int (*api_parse_result)(int *isErr, PyObject *method, PyObject *res,
27860+ const char *fmt, ...);
27861+ void (*api_trace)(unsigned mask, const char *fmt, ...);
27862+ void (*api_transfer_back)(PyObject *self);
27863+ void (*api_transfer_to)(PyObject *self, PyObject *owner);
27864+ void (*api_transfer_break)(PyObject *self);
27865+ unsigned long (*api_long_as_unsigned_long)(PyObject *o);
27866+ PyObject *(*api_convert_from_void_ptr)(void *val);
27867+ PyObject *(*api_convert_from_const_void_ptr)(const void *val);
27868+ PyObject *(*api_convert_from_void_ptr_and_size)(void *val,
27869+ SIP_SSIZE_T size);
27870+ PyObject *(*api_convert_from_const_void_ptr_and_size)(const void *val,
27871+ SIP_SSIZE_T size);
27872+ void *(*api_convert_to_void_ptr)(PyObject *obj);
27873+ int (*api_export_symbol)(const char *name, void *sym);
27874+ void *(*api_import_symbol)(const char *name);
27875+ const sipTypeDef *(*api_find_type)(const char *type);
27876+ int (*api_register_py_type)(PyTypeObject *type);
27877+ const sipTypeDef *(*api_type_from_py_type_object)(PyTypeObject *py_type);
27878+ const sipTypeDef *(*api_type_scope)(const sipTypeDef *td);
27879+ const char *(*api_resolve_typedef)(const char *name);
27880+ int (*api_register_attribute_getter)(const sipTypeDef *td,
27881+ sipAttrGetterFunc getter);
27882+ int (*api_is_api_enabled)(const char *name, int from, int to);
27883+ sipErrorState (*api_bad_callable_arg)(int arg_nr, PyObject *arg);
27884+ void *(*api_get_address)(struct _sipSimpleWrapper *w);
27885+ void (*api_set_destroy_on_exit)(int);
27886+ int (*api_enable_autoconversion)(const sipTypeDef *td, int enable);
27887+ void *(*api_get_mixin_address)(struct _sipSimpleWrapper *w,
27888+ const sipTypeDef *td);
27889+ PyObject *(*api_convert_from_new_pytype)(void *cpp, PyTypeObject *py_type,
27890+ sipWrapper *owner, sipSimpleWrapper **selfp, const char *fmt, ...);
27891+ PyObject *(*api_convert_to_typed_array)(void *data, const sipTypeDef *td,
27892+ const char *format, size_t stride, SIP_SSIZE_T len, int flags);
27893+ PyObject *(*api_convert_to_array)(void *data, const char *format,
27894+ SIP_SSIZE_T len, int flags);
27895+ int (*api_register_proxy_resolver)(const sipTypeDef *td,
27896+ sipProxyResolverFunc resolver);
27897+ PyInterpreterState *(*api_get_interpreter)();
27898+ sipNewUserTypeFunc (*api_set_new_user_type_handler)(const sipTypeDef *,
27899+ sipNewUserTypeFunc);
27900+ void (*api_set_type_user_data)(sipWrapperType *, void *);
27901+ void *(*api_get_type_user_data)(const sipWrapperType *);
27902+ PyObject *(*api_py_type_dict)(const PyTypeObject *);
27903+ const char *(*api_py_type_name)(const PyTypeObject *);
27904+ int (*api_get_method)(PyObject *, sipMethodDef *);
27905+ PyObject *(*api_from_method)(const sipMethodDef *);
27906+ int (*api_get_c_function)(PyObject *, sipCFunctionDef *);
27907+ int (*api_get_date)(PyObject *, sipDateDef *);
27908+ PyObject *(*api_from_date)(const sipDateDef *);
27909+ int (*api_get_datetime)(PyObject *, sipDateDef *, sipTimeDef *);
27910+ PyObject *(*api_from_datetime)(const sipDateDef *, const sipTimeDef *);
27911+ int (*api_get_time)(PyObject *, sipTimeDef *);
27912+ PyObject *(*api_from_time)(const sipTimeDef *);
27913+ int (*api_is_user_type)(const sipWrapperType *);
27914+ struct _frame *(*api_get_frame)(int);
27915+ int (*api_check_plugin_for_type)(const sipTypeDef *, const char *);
27916+ PyObject *(*api_unicode_new)(SIP_SSIZE_T, unsigned, int *, void **);
27917+ void (*api_unicode_write)(int, void *, int, unsigned);
27918+ void *(*api_unicode_data)(PyObject *, int *, SIP_SSIZE_T *);
27919+ int (*api_get_buffer_info)(PyObject *, sipBufferInfoDef *);
27920+ void (*api_release_buffer_info)(sipBufferInfoDef *);
27921+ PyObject *(*api_get_user_object)(const sipSimpleWrapper *);
27922+ void (*api_set_user_object)(sipSimpleWrapper *, PyObject *);
27923+
27924+ /*
27925+ * The following are not part of the public API.
27926+ */
27927+ int (*api_init_module)(sipExportedModuleDef *client, PyObject *mod_dict);
27928+ int (*api_parse_args)(PyObject **parseErrp, PyObject *sipArgs,
27929+ const char *fmt, ...);
27930+ int (*api_parse_pair)(PyObject **parseErrp, PyObject *arg0, PyObject *arg1,
27931+ const char *fmt, ...);
27932+
27933+ /*
27934+ * The following are part of the public API.
27935+ */
27936+ void (*api_instance_destroyed)(sipSimpleWrapper *sipSelf);
27937+
27938+ /*
27939+ * The following are not part of the public API.
27940+ */
27941+ void (*api_no_function)(PyObject *parseErr, const char *func,
27942+ const char *doc);
27943+ void (*api_no_method)(PyObject *parseErr, const char *scope,
27944+ const char *method, const char *doc);
27945+ void (*api_abstract_method)(const char *classname, const char *method);
27946+ void (*api_bad_class)(const char *classname);
27947+ void *(*api_get_cpp_ptr)(sipSimpleWrapper *w, const sipTypeDef *td);
27948+ void *(*api_get_complex_cpp_ptr)(sipSimpleWrapper *w);
27949+ PyObject *(*api_is_py_method)(sip_gilstate_t *gil, char *pymc,
27950+ sipSimpleWrapper *sipSelf, const char *cname, const char *mname);
27951+ void (*api_call_hook)(const char *hookname);
27952+ void (*api_end_thread)(void);
27953+ void (*api_raise_unknown_exception)(void);
27954+ void (*api_raise_type_exception)(const sipTypeDef *td, void *ptr);
27955+ int (*api_add_type_instance)(PyObject *dict, const char *name,
27956+ void *cppPtr, const sipTypeDef *td);
27957+ void (*api_bad_operator_arg)(PyObject *self, PyObject *arg,
27958+ sipPySlotType st);
27959+ PyObject *(*api_pyslot_extend)(sipExportedModuleDef *mod, sipPySlotType st,
27960+ const sipTypeDef *type, PyObject *arg0, PyObject *arg1);
27961+ void (*api_add_delayed_dtor)(sipSimpleWrapper *w);
27962+ char (*api_bytes_as_char)(PyObject *obj);
27963+ const char *(*api_bytes_as_string)(PyObject *obj);
27964+ char (*api_string_as_ascii_char)(PyObject *obj);
27965+ const char *(*api_string_as_ascii_string)(PyObject **obj);
27966+ char (*api_string_as_latin1_char)(PyObject *obj);
27967+ const char *(*api_string_as_latin1_string)(PyObject **obj);
27968+ char (*api_string_as_utf8_char)(PyObject *obj);
27969+ const char *(*api_string_as_utf8_string)(PyObject **obj);
27970+#if defined(HAVE_WCHAR_H)
27971+ wchar_t (*api_unicode_as_wchar)(PyObject *obj);
27972+ wchar_t *(*api_unicode_as_wstring)(PyObject *obj);
27973+#else
27974+ int (*api_unicode_as_wchar)(PyObject *obj);
27975+ int *(*api_unicode_as_wstring)(PyObject *obj);
27976+#endif
27977+ int (*api_deprecated)(const char *classname, const char *method);
27978+ void (*api_keep_reference)(PyObject *self, int key, PyObject *obj);
27979+ int (*api_parse_kwd_args)(PyObject **parseErrp, PyObject *sipArgs,
27980+ PyObject *sipKwdArgs, const char **kwdlist, PyObject **unused,
27981+ const char *fmt, ...);
27982+ void (*api_add_exception)(sipErrorState es, PyObject **parseErrp);
27983+ int (*api_parse_result_ex)(sip_gilstate_t, sipVirtErrorHandlerFunc,
27984+ sipSimpleWrapper *, PyObject *method, PyObject *res,
27985+ const char *fmt, ...);
27986+ void (*api_call_error_handler)(sipVirtErrorHandlerFunc,
27987+ sipSimpleWrapper *, sip_gilstate_t);
27988+ int (*api_init_mixin)(PyObject *self, PyObject *args, PyObject *kwds,
27989+ const sipClassTypeDef *ctd);
27990+ PyObject *(*api_get_reference)(PyObject *self, int key);
27991+ int (*api_is_owned_by_python)(sipSimpleWrapper *);
27992+ int (*api_is_derived_class)(sipSimpleWrapper *);
27993+
27994+ /*
27995+ * The following may be used by Qt support code but no other handwritten
27996+ * code.
27997+ */
27998+ void (*api_free_sipslot)(sipSlot *slot);
27999+ int (*api_same_slot)(const sipSlot *sp, PyObject *rxObj, const char *slot);
28000+ void *(*api_convert_rx)(sipWrapper *txSelf, const char *sigargs,
28001+ PyObject *rxObj, const char *slot, const char **memberp,
28002+ int flags);
28003+ PyObject *(*api_invoke_slot)(const sipSlot *slot, PyObject *sigargs);
28004+ PyObject *(*api_invoke_slot_ex)(const sipSlot *slot, PyObject *sigargs,
28005+ int check_receiver);
28006+ int (*api_save_slot)(sipSlot *sp, PyObject *rxObj, const char *slot);
28007+ void (*api_clear_any_slot_reference)(sipSlot *slot);
28008+ int (*api_visit_slot)(sipSlot *slot, visitproc visit, void *arg);
28009+
28010+ /*
28011+ * The following are deprecated parts of the public API.
28012+ */
28013+ PyTypeObject *(*api_find_named_enum)(const char *type);
28014+ const sipMappedType *(*api_find_mapped_type)(const char *type);
28015+ sipWrapperType *(*api_find_class)(const char *type);
28016+ sipWrapperType *(*api_map_int_to_class)(int typeInt,
28017+ const sipIntTypeClassMap *map, int maplen);
28018+ sipWrapperType *(*api_map_string_to_class)(const char *typeString,
28019+ const sipStringTypeClassMap *map, int maplen);
28020+
28021+ /*
28022+ * The following are part of the public API.
28023+ */
28024+ int (*api_enable_gc)(int enable);
28025+ void (*api_print_object)(PyObject *o);
28026+ int (*api_register_event_handler)(sipEventType type, const sipTypeDef *td,
28027+ void *handler);
28028+ int (*api_convert_to_enum)(PyObject *obj, const sipTypeDef *td);
28029+ int (*api_convert_to_bool)(PyObject *obj);
28030+ int (*api_enable_overflow_checking)(int enable);
28031+ char (*api_long_as_char)(PyObject *o);
28032+ signed char (*api_long_as_signed_char)(PyObject *o);
28033+ unsigned char (*api_long_as_unsigned_char)(PyObject *o);
28034+ short (*api_long_as_short)(PyObject *o);
28035+ unsigned short (*api_long_as_unsigned_short)(PyObject *o);
28036+ int (*api_long_as_int)(PyObject *o);
28037+ unsigned int (*api_long_as_unsigned_int)(PyObject *o);
28038+ long (*api_long_as_long)(PyObject *o);
28039+#if defined(HAVE_LONG_LONG)
28040+ PY_LONG_LONG (*api_long_as_long_long)(PyObject *o);
28041+ unsigned PY_LONG_LONG (*api_long_as_unsigned_long_long)(PyObject *o);
28042+#else
28043+ void *api_long_as_long_long;
28044+ void *api_long_as_unsigned_long_long;
28045+#endif
28046+
28047+ /*
28048+ * The following are not part of the public API.
28049+ */
28050+ void (*api_instance_destroyed_ex)(sipSimpleWrapper **sipSelfp);
28051+
28052+ /*
28053+ * The following are part of the public API.
28054+ */
28055+ int (*api_convert_from_slice_object)(PyObject *slice, SIP_SSIZE_T length,
28056+ SIP_SSIZE_T *start, SIP_SSIZE_T *stop, SIP_SSIZE_T *step,
28057+ SIP_SSIZE_T *slicelength);
28058+} sipAPIDef;
28059+
28060+
28061+/*
28062+ * The API implementing the optional Qt support.
28063+ */
28064+typedef struct _sipQtAPI {
28065+ sipTypeDef **qt_qobject;
28066+ void *(*qt_create_universal_signal)(void *, const char **);
28067+ void *(*qt_find_universal_signal)(void *, const char **);
28068+ void *(*qt_create_universal_slot)(struct _sipWrapper *, const char *,
28069+ PyObject *, const char *, const char **, int);
28070+ void (*qt_destroy_universal_slot)(void *);
28071+ void *(*qt_find_slot)(void *, const char *, PyObject *, const char *,
28072+ const char **);
28073+ int (*qt_connect)(void *, const char *, void *, const char *, int);
28074+ int (*qt_disconnect)(void *, const char *, void *, const char *);
28075+ int (*qt_same_name)(const char *, const char *);
28076+ sipSlot *(*qt_find_sipslot)(void *, void **);
28077+ int (*qt_emit_signal)(PyObject *, const char *, PyObject *);
28078+ int (*qt_connect_py_signal)(PyObject *, const char *, PyObject *,
28079+ const char *);
28080+ void (*qt_disconnect_py_signal)(PyObject *, const char *, PyObject *,
28081+ const char *);
28082+} sipQtAPI;
28083+
28084+
28085+/*
28086+ * These are flags that can be passed to sipCanConvertToType(),
28087+ * sipConvertToType() and sipForceConvertToType().
28088+ */
28089+#define SIP_NOT_NONE 0x01 /* Disallow None. */
28090+#define SIP_NO_CONVERTORS 0x02 /* Disable any type convertors. */
28091+
28092+
28093+/*
28094+ * These are flags that can be passed to sipConvertToArray(). These are held
28095+ * in sw_flags.
28096+ */
28097+#define SIP_READ_ONLY 0x01 /* The array is read-only. */
28098+#define SIP_OWNS_MEMORY 0x02 /* The array owns its memory. */
28099+
28100+
28101+/*
28102+ * These are the state flags returned by %ConvertToTypeCode. Note that the
28103+ * values share the same "flagspace" as the contents of sw_flags.
28104+ */
28105+#define SIP_TEMPORARY 0x01 /* A temporary instance. */
28106+#define SIP_DERIVED_CLASS 0x02 /* The instance is derived. */
28107+
28108+
28109+/*
28110+ * These flags are specific to the Qt support API.
28111+ */
28112+#define SIP_SINGLE_SHOT 0x01 /* The connection is single shot. */
28113+
28114+
28115+/*
28116+ * Useful macros, not part of the public API.
28117+ */
28118+
28119+/* These are held in sw_flags. */
28120+#define SIP_INDIRECT 0x0004 /* If there is a level of indirection. */
28121+#define SIP_ACCFUNC 0x0008 /* If there is an access function. */
28122+#define SIP_NOT_IN_MAP 0x0010 /* If Python object is not in the map. */
28123+
28124+#if !defined(Py_LIMITED_API) || PY_VERSION_HEX < 0x03020000
28125+#define SIP_PY_OWNED 0x0020 /* If owned by Python. */
28126+#define SIP_SHARE_MAP 0x0040 /* If the map slot might be occupied. */
28127+#define SIP_CPP_HAS_REF 0x0080 /* If C/C++ has a reference. */
28128+#define SIP_POSSIBLE_PROXY 0x0100 /* If there might be a proxy slot. */
28129+#define SIP_ALIAS 0x0200 /* If it is an alias. */
28130+#define SIP_CREATED 0x0400 /* If the C/C++ object has been created. */
28131+
28132+#define sipIsDerived(sw) ((sw)->sw_flags & SIP_DERIVED_CLASS)
28133+#define sipIsIndirect(sw) ((sw)->sw_flags & SIP_INDIRECT)
28134+#define sipIsAccessFunc(sw) ((sw)->sw_flags & SIP_ACCFUNC)
28135+#define sipNotInMap(sw) ((sw)->sw_flags & SIP_NOT_IN_MAP)
28136+#define sipSetNotInMap(sw) ((sw)->sw_flags |= SIP_NOT_IN_MAP)
28137+#define sipIsPyOwned(sw) ((sw)->sw_flags & SIP_PY_OWNED)
28138+#define sipSetPyOwned(sw) ((sw)->sw_flags |= SIP_PY_OWNED)
28139+#define sipResetPyOwned(sw) ((sw)->sw_flags &= ~SIP_PY_OWNED)
28140+#define sipCppHasRef(sw) ((sw)->sw_flags & SIP_CPP_HAS_REF)
28141+#define sipSetCppHasRef(sw) ((sw)->sw_flags |= SIP_CPP_HAS_REF)
28142+#define sipResetCppHasRef(sw) ((sw)->sw_flags &= ~SIP_CPP_HAS_REF)
28143+#define sipPossibleProxy(sw) ((sw)->sw_flags & SIP_POSSIBLE_PROXY)
28144+#define sipSetPossibleProxy(sw) ((sw)->sw_flags |= SIP_POSSIBLE_PROXY)
28145+#define sipIsAlias(sw) ((sw)->sw_flags & SIP_ALIAS)
28146+#define sipWasCreated(sw) ((sw)->sw_flags & SIP_CREATED)
28147+#endif
28148+
28149+#define SIP_TYPE_TYPE_MASK 0x0007 /* The type type mask. */
28150+#define SIP_TYPE_CLASS 0x0000 /* If the type is a C++ class. */
28151+#define SIP_TYPE_NAMESPACE 0x0001 /* If the type is a C++ namespace. */
28152+#define SIP_TYPE_MAPPED 0x0002 /* If the type is a mapped type. */
28153+#define SIP_TYPE_ENUM 0x0003 /* If the type is a named enum. */
28154+#define SIP_TYPE_SCOPED_ENUM 0x0004 /* If the type is a scoped enum. */
28155+#define SIP_TYPE_ABSTRACT 0x0008 /* If the type is abstract. */
28156+#define SIP_TYPE_SCC 0x0010 /* If the type is subject to sub-class convertors. */
28157+#define SIP_TYPE_ALLOW_NONE 0x0020 /* If the type can handle None. */
28158+#define SIP_TYPE_STUB 0x0040 /* If the type is a stub. */
28159+#define SIP_TYPE_NONLAZY 0x0080 /* If the type has a non-lazy method. */
28160+#define SIP_TYPE_SUPER_INIT 0x0100 /* If the instance's super init should be called. */
28161+#define SIP_TYPE_LIMITED_API 0x0200 /* Use the limited API. If this is more generally required it may need to be moved to the module definition. */
28162+
28163+
28164+/*
28165+ * The following are part of the public API.
28166+ */
28167+#define sipTypeIsClass(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_CLASS)
28168+#define sipTypeIsNamespace(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_NAMESPACE)
28169+#define sipTypeIsMapped(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_MAPPED)
28170+#define sipTypeIsEnum(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_ENUM)
28171+#define sipTypeIsScopedEnum(td) (((td)->td_flags & SIP_TYPE_TYPE_MASK) == SIP_TYPE_SCOPED_ENUM)
28172+#define sipTypeAsPyTypeObject(td) ((td)->u.td_py_type)
28173+#define sipTypeName(td) sipNameFromPool((td)->td_module, (td)->td_cname)
28174+#define sipTypePluginData(td) ((td)->td_plugin_data)
28175+
28176+
28177+/*
28178+ * Note that this was never actually documented as being part of the public
28179+ * API. It is now deprecated. sipIsUserType() should be used instead.
28180+ */
28181+#define sipIsExactWrappedType(wt) (sipTypeAsPyTypeObject((wt)->wt_td) == (PyTypeObject *)(wt))
28182+
28183+
28184+/*
28185+ * The following are deprecated parts of the public API.
28186+ */
28187+#define sipClassName(w) PyString_FromString(Py_TYPE(w)->tp_name)
28188+
28189+
28190+/*
28191+ * The following are not part of the public API.
28192+ */
28193+#define sipTypeIsAbstract(td) ((td)->td_flags & SIP_TYPE_ABSTRACT)
28194+#define sipTypeHasSCC(td) ((td)->td_flags & SIP_TYPE_SCC)
28195+#define sipTypeAllowNone(td) ((td)->td_flags & SIP_TYPE_ALLOW_NONE)
28196+#define sipTypeIsStub(td) ((td)->td_flags & SIP_TYPE_STUB)
28197+#define sipTypeSetStub(td) ((td)->td_flags |= SIP_TYPE_STUB)
28198+#define sipTypeHasNonlazyMethod(td) ((td)->td_flags & SIP_TYPE_NONLAZY)
28199+#define sipTypeCallSuperInit(td) ((td)->td_flags & SIP_TYPE_SUPER_INIT)
28200+#define sipTypeUseLimitedAPI(td) ((td)->td_flags & SIP_TYPE_LIMITED_API)
28201+
28202+/*
28203+ * Get various names from the string pool for various data types.
28204+ */
28205+#define sipNameFromPool(em, mr) (&((em)->em_strings)[(mr)])
28206+#define sipNameOfModule(em) sipNameFromPool((em), (em)->em_name)
28207+#define sipPyNameOfContainer(cod, td) sipNameFromPool((td)->td_module, (cod)->cod_name)
28208+#define sipPyNameOfEnum(etd) sipNameFromPool((etd)->etd_base.td_module, (etd)->etd_name)
28209+
28210+
28211+/*
28212+ * The following are PyQt4-specific extensions. In SIP v5 they will be pushed
28213+ * out to a plugin supplied by PyQt4.
28214+ */
28215+
28216+/*
28217+ * The description of a Qt signal for PyQt4.
28218+ */
28219+typedef struct _pyqt4QtSignal {
28220+ /* The C++ name and signature of the signal. */
28221+ const char *signature;
28222+
28223+ /* The optional docstring. */
28224+ const char *docstring;
28225+
28226+ /*
28227+ * If the signal is an overload of regular methods then this points to the
28228+ * code that implements those methods.
28229+ */
28230+ PyMethodDef *non_signals;
28231+
28232+ /*
28233+ * The hack to apply when built against Qt5:
28234+ *
28235+ * 0 - no hack
28236+ * 1 - add an optional None
28237+ * 2 - add an optional []
28238+ * 3 - add an optional False
28239+ */
28240+ int hack;
28241+} pyqt4QtSignal;
28242+
28243+
28244+/*
28245+ * This is the PyQt4-specific extension to the generated class type structure.
28246+ */
28247+typedef struct _pyqt4ClassPluginDef {
28248+ /* A pointer to the QObject sub-class's staticMetaObject class variable. */
28249+ const void *static_metaobject;
28250+
28251+ /*
28252+ * A set of flags. At the moment only bit 0 is used to say if the type is
28253+ * derived from QFlags.
28254+ */
28255+ unsigned flags;
28256+
28257+ /*
28258+ * The table of signals emitted by the type. These are grouped by signal
28259+ * name.
28260+ */
28261+ const pyqt4QtSignal *qt_signals;
28262+} pyqt4ClassPluginDef;
28263+
28264+
28265+/*
28266+ * The following are PyQt5-specific extensions. In SIP v5 they will be pushed
28267+ * out to a plugin supplied by PyQt5.
28268+ */
28269+
28270+/*
28271+ * The description of a Qt signal for PyQt5.
28272+ */
28273+typedef int (*pyqt5EmitFunc)(void *, PyObject *);
28274+
28275+typedef struct _pyqt5QtSignal {
28276+ /* The normalised C++ name and signature of the signal. */
28277+ const char *signature;
28278+
28279+ /* The optional docstring. */
28280+ const char *docstring;
28281+
28282+ /*
28283+ * If the signal is an overload of regular methods then this points to the
28284+ * code that implements those methods.
28285+ */
28286+ PyMethodDef *non_signals;
28287+
28288+ /*
28289+ * If the signal has optional arguments then this function will implement
28290+ * emit() for the signal.
28291+ */
28292+ pyqt5EmitFunc emitter;
28293+} pyqt5QtSignal;
28294+
28295+
28296+/*
28297+ * This is the PyQt5-specific extension to the generated class type structure.
28298+ */
28299+typedef struct _pyqt5ClassPluginDef {
28300+ /* A pointer to the QObject sub-class's staticMetaObject class variable. */
28301+ const void *static_metaobject;
28302+
28303+ /*
28304+ * A set of flags. At the moment only bit 0 is used to say if the type is
28305+ * derived from QFlags.
28306+ */
28307+ unsigned flags;
28308+
28309+ /*
28310+ * The table of signals emitted by the type. These are grouped by signal
28311+ * name.
28312+ */
28313+ const pyqt5QtSignal *qt_signals;
28314+
28315+ /* The name of the interface that the class defines. */
28316+ const char *qt_interface;
28317+} pyqt5ClassPluginDef;
28318+
28319+
28320+#ifdef __cplusplus
28321+}
28322+#endif
28323+
28324+
28325+#endif
28326diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/siplib/siplib.c sip/siplib/siplib.c
28327--- ./sip-4.19.12.orig/siplib/siplib.c 2018-07-05 05:54:58.000000000 -0400
28328+++ sip/siplib/siplib.c 2018-09-18 18:00:57.928047976 -0400
28329@@ -39,13 +39,22 @@
28330
28331
28332 /*
28333- * The qualified name of the sip module. The qualified name should be defined
28334- * in the compiler invocation when creating a package-specific copy.
28335+ * The qualified and base names of the sip module. These should be defined in
28336+ * the compiler invocation when creating a package-specific copy.
28337 */
28338 #if !defined(SIP_MODULE_NAME)
28339-#define SIP_MODULE_NAME "sip"
28340+#define SIP_MODULE_NAME sip
28341+#endif
28342+
28343+#if !defined(SIP_MODULE_BASENAME)
28344+#define SIP_MODULE_BASENAME sip
28345 #endif
28346
28347+#define STRINGIFY_EX(s) #s
28348+#define STRINGIFY(s) STRINGIFY_EX(s)
28349+
28350+#define SIP_MODULE_NAME_STR STRINGIFY(SIP_MODULE_NAME)
28351+#define SIP_MODULE_BASENAME_STR STRINGIFY(SIP_MODULE_BASENAME)
28352
28353 /*
28354 * The Python metatype for a C++ wrapper type. We inherit everything from the
28355@@ -1023,19 +1032,24 @@
28356 * The Python module initialisation function.
28357 */
28358 #if PY_MAJOR_VERSION >= 3
28359-#define SIP_MODULE_ENTRY PyInit_sip
28360+#define SIP_MODULE_ENTRY_PREFIX PyInit_
28361 #define SIP_MODULE_TYPE PyObject *
28362 #define SIP_MODULE_DISCARD(m) Py_DECREF(m)
28363 #define SIP_FATAL(s) return NULL
28364 #define SIP_MODULE_RETURN(m) return (m)
28365 #else
28366-#define SIP_MODULE_ENTRY initsip
28367+#define SIP_MODULE_ENTRY_PREFIX init
28368 #define SIP_MODULE_TYPE void
28369 #define SIP_MODULE_DISCARD(m)
28370 #define SIP_FATAL(s) Py_FatalError(s)
28371 #define SIP_MODULE_RETURN(m)
28372 #endif
28373
28374+#define CONCAT_EX(PREFIX, NAME) PREFIX ## NAME
28375+#define CONCAT(PREFIX, NAME) CONCAT_EX(PREFIX, NAME)
28376+
28377+#define SIP_MODULE_ENTRY CONCAT(SIP_MODULE_ENTRY_PREFIX, SIP_MODULE_BASENAME)
28378+
28379 #if defined(SIP_STATIC_MODULE)
28380 SIP_MODULE_TYPE SIP_MODULE_ENTRY(void)
28381 #else
28382@@ -1069,7 +1083,7 @@
28383 #if PY_MAJOR_VERSION >= 3
28384 static PyModuleDef module_def = {
28385 PyModuleDef_HEAD_INIT,
28386- SIP_MODULE_NAME, /* m_name */
28387+ SIP_MODULE_NAME_STR, /* m_name */
28388 NULL, /* m_doc */
28389 -1, /* m_size */
28390 methods, /* m_methods */
28391@@ -1099,13 +1113,13 @@
28392 sipWrapperType_Type.tp_base = &PyType_Type;
28393
28394 if (PyType_Ready(&sipWrapperType_Type) < 0)
28395- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.wrappertype type");
28396+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.wrappertype type");
28397
28398 if (PyType_Ready((PyTypeObject *)&sipSimpleWrapper_Type) < 0)
28399- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.simplewrapper type");
28400+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.simplewrapper type");
28401
28402 if (sip_api_register_py_type((PyTypeObject *)&sipSimpleWrapper_Type) < 0)
28403- SIP_FATAL(SIP_MODULE_NAME ": Failed to register sip.simplewrapper type");
28404+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to register sip.simplewrapper type");
28405
28406 #if defined(STACKLESS)
28407 sipWrapper_Type.super.tp_base = (PyTypeObject *)&sipSimpleWrapper_Type;
28408@@ -1116,33 +1130,33 @@
28409 #endif
28410
28411 if (PyType_Ready((PyTypeObject *)&sipWrapper_Type) < 0)
28412- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.wrapper type");
28413+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.wrapper type");
28414
28415 if (PyType_Ready(&sipMethodDescr_Type) < 0)
28416- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.methoddescriptor type");
28417+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.methoddescriptor type");
28418
28419 if (PyType_Ready(&sipVariableDescr_Type) < 0)
28420- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.variabledescriptor type");
28421+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.variabledescriptor type");
28422
28423 sipEnumType_Type.tp_base = &PyType_Type;
28424
28425 if (PyType_Ready(&sipEnumType_Type) < 0)
28426- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.enumtype type");
28427+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.enumtype type");
28428
28429 if (PyType_Ready(&sipVoidPtr_Type) < 0)
28430- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.voidptr type");
28431+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.voidptr type");
28432
28433 if (PyType_Ready(&sipArray_Type) < 0)
28434- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip.array type");
28435+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip.array type");
28436
28437 #if PY_MAJOR_VERSION >= 3
28438 mod = PyModule_Create(&module_def);
28439 #else
28440- mod = Py_InitModule(SIP_MODULE_NAME, methods);
28441+ mod = Py_InitModule(SIP_MODULE_NAME_STR, methods);
28442 #endif
28443
28444 if (mod == NULL)
28445- SIP_FATAL(SIP_MODULE_NAME ": Failed to initialise sip module");
28446+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to initialise sip module");
28447
28448 mod_dict = PyModule_GetDict(mod);
28449
28450@@ -1153,12 +1167,12 @@
28451 if (type_unpickler == NULL || enum_unpickler == NULL)
28452 {
28453 SIP_MODULE_DISCARD(mod);
28454- SIP_FATAL(SIP_MODULE_NAME ": Failed to get pickle helpers");
28455+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to get pickle helpers");
28456 }
28457
28458 /* Publish the SIP API. */
28459 #if defined(SIP_USE_PYCAPSULE)
28460- obj = PyCapsule_New((void *)&sip_api, SIP_MODULE_NAME "._C_API", NULL);
28461+ obj = PyCapsule_New((void *)&sip_api, SIP_MODULE_NAME_STR "._C_API", NULL);
28462 #else
28463 obj = PyCObject_FromVoidPtr((void *)&sip_api, NULL);
28464 #endif
28465@@ -1166,7 +1180,7 @@
28466 if (obj == NULL)
28467 {
28468 SIP_MODULE_DISCARD(mod);
28469- SIP_FATAL(SIP_MODULE_NAME ": Failed to create _C_API object");
28470+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to create _C_API object");
28471 }
28472
28473 rc = PyDict_SetItemString(mod_dict, "_C_API", obj);
28474@@ -1175,20 +1189,20 @@
28475 if (rc < 0)
28476 {
28477 SIP_MODULE_DISCARD(mod);
28478- SIP_FATAL(SIP_MODULE_NAME ": Failed to add _C_API object to module dictionary");
28479+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to add _C_API object to module dictionary");
28480 }
28481
28482 /* These will always be needed. */
28483 if (objectify("__init__", &init_name) < 0)
28484 {
28485 SIP_MODULE_DISCARD(mod);
28486- SIP_FATAL(SIP_MODULE_NAME ": Failed to objectify '__init__'");
28487+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to objectify '__init__'");
28488 }
28489
28490 if ((empty_tuple = PyTuple_New(0)) == NULL)
28491 {
28492 SIP_MODULE_DISCARD(mod);
28493- SIP_FATAL(SIP_MODULE_NAME ": Failed to create empty tuple");
28494+ SIP_FATAL(SIP_MODULE_NAME_STR ": Failed to create empty tuple");
28495 }
28496
28497 /* Add the SIP version number, but don't worry about errors. */
28498@@ -1248,7 +1262,7 @@
28499 * Also install the package-specific module at the top level for backwards
28500 * compatibility.
28501 */
28502- if (strcmp(SIP_MODULE_NAME, "sip") != 0)
28503+ if (strcmp(SIP_MODULE_NAME_STR, "sip") != 0 && strcmp(SIP_MODULE_BASENAME_STR, "sip") == 0)
28504 {
28505 PyObject *modules = PySys_GetObject("modules");
28506
28507diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/command_line.rst sip/sphinx/command_line.rst
28508--- ./sip-4.19.12.orig/sphinx/command_line.rst 2018-07-05 05:54:58.000000000 -0400
28509+++ sip/sphinx/command_line.rst 2018-09-18 18:00:57.928047976 -0400
28510@@ -115,10 +115,9 @@
28511
28512 .. versionadded:: 4.19.9
28513
28514- The qualified name of the private copy of the :mod:`sip` module. It should
28515- be of the form ``package.sip``. See also the
28516- :option:`--sip-module <configure.py --sip-module>` option of the
28517- installation script.
28518+ The fully qualified name of the private copy of the :mod:`sip` module.
28519+ See also the :option:`--sip-module <configure.py --sip-module>` option of
28520+ the installation script.
28521
28522 .. cmdoption:: -o
28523
28524diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/conf.py sip/sphinx/conf.py
28525--- ./sip-4.19.12.orig/sphinx/conf.py 2018-07-05 05:55:19.000000000 -0400
28526+++ sip/sphinx/conf.py 1969-12-31 19:00:00.000000000 -0500
28527@@ -1,139 +0,0 @@
28528-# -*- coding: utf-8 -*-
28529-#
28530-# SIP documentation build configuration file, created by
28531-# sphinx-quickstart on Sat May 30 14:28:55 2009.
28532-#
28533-# This file is execfile()d with the current directory set to its containing dir.
28534-#
28535-# Note that not all possible configuration values are present in this
28536-# autogenerated file.
28537-#
28538-# All configuration values have a default; values that are commented out
28539-# serve to show the default.
28540-
28541-import datetime
28542-import os
28543-import sys
28544-
28545-# If extensions (or modules to document with autodoc) are in another directory,
28546-# add these directories to sys.path here. If the directory is relative to the
28547-# documentation root, use os.path.abspath to make it absolute, like shown here.
28548-#sys.path.append(os.path.abspath('.'))
28549-
28550-# -- General configuration -----------------------------------------------------
28551-
28552-# Add any Sphinx extension module names here, as strings. They can be extensions
28553-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
28554-#extensions = []
28555-
28556-# Add any paths that contain templates here, relative to this directory.
28557-templates_path = ['templates']
28558-
28559-# The suffix of source filenames.
28560-source_suffix = '.rst'
28561-
28562-# The encoding of source files.
28563-#source_encoding = 'utf-8'
28564-
28565-# The master toctree document.
28566-master_doc = 'index'
28567-
28568-# General information about the project.
28569-project = 'SIP'
28570-copyright = '{0} Riverbank Computing Limited'.format(
28571- datetime.date.today().year)
28572-
28573-# The version info for the project you're documenting, acts as replacement for
28574-# |version| and |release|, also used in various other places throughout the
28575-# built documents.
28576-#
28577-# The short X.Y version.
28578-version = '4.19.12'
28579-# The full version, including alpha/beta/rc tags.
28580-release = '4.19.12'
28581-
28582-# The language for content autogenerated by Sphinx. Refer to documentation
28583-# for a list of supported languages.
28584-#language = None
28585-
28586-# There are two options for replacing |today|: either, you set today to some
28587-# non-false value, then it is used:
28588-#today = ''
28589-# Else, today_fmt is used as the format for a strftime call.
28590-#today_fmt = '%B %d, %Y'
28591-
28592-# List of patterns, relative to source directory, that match files and
28593-# directories to ignore when looking for source files.
28594-exclude_patterns = ['html']
28595-
28596-# The reST default role (used for this markup: `text`) to use for all documents.
28597-#default_role = None
28598-
28599-# If true, '()' will be appended to :func: etc. cross-reference text.
28600-#add_function_parentheses = True
28601-
28602-# If true, the current module name will be prepended to all description
28603-# unit titles (such as .. function::).
28604-#add_module_names = True
28605-
28606-# If true, sectionauthor and moduleauthor directives will be shown in the
28607-# output. They are ignored by default.
28608-#show_authors = False
28609-
28610-# The name of the Pygments (syntax highlighting) style to use.
28611-pygments_style = 'sphinx'
28612-
28613-# A list of ignored prefixes for module index sorting.
28614-#modindex_common_prefix = []
28615-
28616-
28617-# -- Options for HTML output ---------------------------------------------------
28618-
28619-# The theme to use for HTML and HTML Help pages.
28620-html_theme = 'riverbank'
28621-
28622-# Add any paths that contain custom themes here, relative to this directory.
28623-html_theme_path = ['.']
28624-
28625-# The name for this set of Sphinx documents. If None, it defaults to
28626-# "<project> v<release> documentation".
28627-html_title = "%s v%s Reference Guide" % (project, release)
28628-
28629-# Output file base name for HTML help builder.
28630-htmlhelp_basename = 'SIPdoc'
28631-
28632-
28633-# -- Project-specific extensions -----------------------------------------------
28634-
28635-def setup(app):
28636- """ Define roles specific to SIP. """
28637-
28638- app.add_description_unit('argument-annotation', 'aanno',
28639- indextemplate='single: %s (argument annotation)')
28640-
28641- app.add_description_unit('class-annotation', 'canno',
28642- indextemplate='single: %s (class annotation)')
28643-
28644- app.add_description_unit('enum-annotation', 'eanno',
28645- indextemplate='single: %s (enum annotation)')
28646-
28647- app.add_description_unit('exception-annotation', 'xanno',
28648- indextemplate='single: %s (exception annotation)')
28649-
28650- app.add_description_unit('function-annotation', 'fanno',
28651- indextemplate='single: %s (function annotation)')
28652-
28653- app.add_description_unit('mapped-type-annotation', 'manno',
28654- indextemplate='single: %s (mapped type annotation)')
28655-
28656- app.add_description_unit('typedef-annotation', 'tanno',
28657- indextemplate='single: %s (typedef annotation)')
28658-
28659- app.add_description_unit('variable-annotation', 'vanno',
28660- indextemplate='single: %s (variable annotation)')
28661-
28662- app.add_description_unit('directive', 'directive',
28663- indextemplate='single: %s (directive)')
28664-
28665- app.add_description_unit('sip-type', 'stype',
28666- indextemplate='single: %s (SIP type)')
28667diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/conf.py.in sip/sphinx/conf.py.in
28668--- ./sip-4.19.12.orig/sphinx/conf.py.in 1969-12-31 19:00:00.000000000 -0500
28669+++ sip/sphinx/conf.py.in 2018-09-18 17:52:23.310543535 -0400
28670@@ -0,0 +1,139 @@
28671+# -*- coding: utf-8 -*-
28672+#
28673+# SIP documentation build configuration file, created by
28674+# sphinx-quickstart on Sat May 30 14:28:55 2009.
28675+#
28676+# This file is execfile()d with the current directory set to its containing dir.
28677+#
28678+# Note that not all possible configuration values are present in this
28679+# autogenerated file.
28680+#
28681+# All configuration values have a default; values that are commented out
28682+# serve to show the default.
28683+
28684+import datetime
28685+import os
28686+import sys
28687+
28688+# If extensions (or modules to document with autodoc) are in another directory,
28689+# add these directories to sys.path here. If the directory is relative to the
28690+# documentation root, use os.path.abspath to make it absolute, like shown here.
28691+#sys.path.append(os.path.abspath('.'))
28692+
28693+# -- General configuration -----------------------------------------------------
28694+
28695+# Add any Sphinx extension module names here, as strings. They can be extensions
28696+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
28697+#extensions = []
28698+
28699+# Add any paths that contain templates here, relative to this directory.
28700+templates_path = ['templates']
28701+
28702+# The suffix of source filenames.
28703+source_suffix = '.rst'
28704+
28705+# The encoding of source files.
28706+#source_encoding = 'utf-8'
28707+
28708+# The master toctree document.
28709+master_doc = 'index'
28710+
28711+# General information about the project.
28712+project = 'SIP'
28713+copyright = '{0} Riverbank Computing Limited'.format(
28714+ datetime.date.today().year)
28715+
28716+# The version info for the project you're documenting, acts as replacement for
28717+# |version| and |release|, also used in various other places throughout the
28718+# built documents.
28719+#
28720+# The short X.Y version.
28721+version = '@RM_VERSION@'
28722+# The full version, including alpha/beta/rc tags.
28723+release = '@RM_RELEASE@'
28724+
28725+# The language for content autogenerated by Sphinx. Refer to documentation
28726+# for a list of supported languages.
28727+#language = None
28728+
28729+# There are two options for replacing |today|: either, you set today to some
28730+# non-false value, then it is used:
28731+#today = ''
28732+# Else, today_fmt is used as the format for a strftime call.
28733+#today_fmt = '%B %d, %Y'
28734+
28735+# List of patterns, relative to source directory, that match files and
28736+# directories to ignore when looking for source files.
28737+exclude_patterns = ['html']
28738+
28739+# The reST default role (used for this markup: `text`) to use for all documents.
28740+#default_role = None
28741+
28742+# If true, '()' will be appended to :func: etc. cross-reference text.
28743+#add_function_parentheses = True
28744+
28745+# If true, the current module name will be prepended to all description
28746+# unit titles (such as .. function::).
28747+#add_module_names = True
28748+
28749+# If true, sectionauthor and moduleauthor directives will be shown in the
28750+# output. They are ignored by default.
28751+#show_authors = False
28752+
28753+# The name of the Pygments (syntax highlighting) style to use.
28754+pygments_style = 'sphinx'
28755+
28756+# A list of ignored prefixes for module index sorting.
28757+#modindex_common_prefix = []
28758+
28759+
28760+# -- Options for HTML output ---------------------------------------------------
28761+
28762+# The theme to use for HTML and HTML Help pages.
28763+html_theme = 'riverbank'
28764+
28765+# Add any paths that contain custom themes here, relative to this directory.
28766+html_theme_path = ['.']
28767+
28768+# The name for this set of Sphinx documents. If None, it defaults to
28769+# "<project> v<release> documentation".
28770+html_title = "%s v%s Reference Guide" % (project, release)
28771+
28772+# Output file base name for HTML help builder.
28773+htmlhelp_basename = 'SIPdoc'
28774+
28775+
28776+# -- Project-specific extensions -----------------------------------------------
28777+
28778+def setup(app):
28779+ """ Define roles specific to SIP. """
28780+
28781+ app.add_description_unit('argument-annotation', 'aanno',
28782+ indextemplate='single: %s (argument annotation)')
28783+
28784+ app.add_description_unit('class-annotation', 'canno',
28785+ indextemplate='single: %s (class annotation)')
28786+
28787+ app.add_description_unit('enum-annotation', 'eanno',
28788+ indextemplate='single: %s (enum annotation)')
28789+
28790+ app.add_description_unit('exception-annotation', 'xanno',
28791+ indextemplate='single: %s (exception annotation)')
28792+
28793+ app.add_description_unit('function-annotation', 'fanno',
28794+ indextemplate='single: %s (function annotation)')
28795+
28796+ app.add_description_unit('mapped-type-annotation', 'manno',
28797+ indextemplate='single: %s (mapped type annotation)')
28798+
28799+ app.add_description_unit('typedef-annotation', 'tanno',
28800+ indextemplate='single: %s (typedef annotation)')
28801+
28802+ app.add_description_unit('variable-annotation', 'vanno',
28803+ indextemplate='single: %s (variable annotation)')
28804+
28805+ app.add_description_unit('directive', 'directive',
28806+ indextemplate='single: %s (directive)')
28807+
28808+ app.add_description_unit('sip-type', 'stype',
28809+ indextemplate='single: %s (SIP type)')
28810diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/installation.rst sip/sphinx/installation.rst
28811--- ./sip-4.19.12.orig/sphinx/installation.rst 2018-07-05 05:54:58.000000000 -0400
28812+++ sip/sphinx/installation.rst 2018-09-18 18:00:57.928047976 -0400
28813@@ -160,11 +160,10 @@
28814
28815 .. cmdoption:: --sip-module <NAME>
28816
28817- The :mod:`sip` module will be created with the name ``<NAME>`` rather than
28818- the default ``sip``. ``<NAME>`` should be of the form ``package.sip``.
28819- See :ref:`ref-private-sip` for how to use this to create a private copy of
28820- the :mod:`sip` module. Also see the :option:`-n <sip -n>` option of the
28821- code generator.
28822+ The :mod:`sip` module will be created with the fully qualified name
28823+ ``<NAME>`` rather than the default ``sip``. See :ref:`ref-private-sip` for
28824+ how to use this to create a private copy of the :mod:`sip` module. Also
28825+ see the :option:`-n <sip -n>` option of the code generator.
28826
28827 .. cmdoption:: --sysroot <DIR>
28828
28829@@ -264,7 +263,7 @@
28830 To get around this problem you can build a private copy of the :mod:`sip`
28831 module that installed as part of your package. To do this you use the
28832 :option:`--sip-module <configure.py --sip-module>` option to specify the fully
28833-qualified package name of your private copy. You can also use the
28834+qualified name of your private copy. You can also use the
28835 :option:`--no-tools <configure.py --no-tools>` option to specify that nothing
28836 else but the :mod:`sip` module is installed.
28837
28838diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/introduction.rst sip/sphinx/introduction.rst
28839--- ./sip-4.19.12.orig/sphinx/introduction.rst 2018-07-05 05:55:19.000000000 -0400
28840+++ sip/sphinx/introduction.rst 1969-12-31 19:00:00.000000000 -0500
28841@@ -1,193 +0,0 @@
28842-Introduction
28843-============
28844-
28845-This is the reference guide for SIP 4.19.12. SIP is a tool for
28846-automatically generating `Python <https://www.python.org>`__ bindings for C and
28847-C++ libraries. SIP was originally developed in 1998 for
28848-`PyQt <https://www.riverbankcomputing.com/software/pyqt>`__ - the Python
28849-bindings for the Qt GUI toolkit - but is suitable for generating bindings for
28850-any C or C++ library.
28851-
28852-This version of SIP generates bindings for Python v2.3 or later, including
28853-Python v3.
28854-
28855-There are many other similar tools available. One of the original such tools
28856-is `SWIG <http://www.swig.org>`__ and, in fact, SIP is so called because it
28857-started out as a small SWIG. Unlike SWIG, SIP is specifically designed for
28858-bringing together Python and C/C++ and goes to great lengths to make the
28859-integration as tight as possible.
28860-
28861-The homepage for SIP is https://www.riverbankcomputing.com/software/sip. Here
28862-you will always find the latest stable version and the latest version of this
28863-documentation.
28864-
28865-SIP can also be downloaded from the
28866-`Mercurial <https://www.mercurial-scm.org>`__ repository at
28867-https://www.riverbankcomputing.com/hg/sip.
28868-
28869-
28870-License
28871--------
28872-
28873-SIP is licensed under similar terms as Python itself. SIP is also licensed
28874-under the GPL (both v2 and v3). It is your choice as to which license you
28875-use. If you choose the GPL then any bindings you create must be distributed
28876-under the terms of the GPL.
28877-
28878-
28879-Features
28880---------
28881-
28882-SIP, and the bindings it produces, have the following features:
28883-
28884-- bindings are fast to load and minimise memory consumption especially when
28885- only a small sub-set of a large library is being used
28886-
28887-- automatic conversion between standard Python and C/C++ data types
28888-
28889-- overloading of functions and methods with different argument signatures
28890-
28891-- support for Python's keyword argument syntax
28892-
28893-- support for both explicitly specified and automatically generated docstrings
28894-
28895-- access to a C++ class's protected methods
28896-
28897-- the ability to define a Python class that is a sub-class of a C++ class,
28898- including abstract C++ classes
28899-
28900-- Python sub-classes can implement the :meth:`__dtor__` method which will be
28901- called from the C++ class's virtual destructor
28902-
28903-- support for ordinary C++ functions, class methods, static class methods,
28904- virtual class methods and abstract class methods
28905-
28906-- the ability to re-implement C++ virtual and abstract methods in Python
28907-
28908-- support for global and class variables
28909-
28910-- support for global and class operators
28911-
28912-- support for C++ namespaces
28913-
28914-- support for C++ templates
28915-
28916-- support for C++ exceptions and wrapping them as Python exceptions
28917-
28918-- the automatic generation of complementary rich comparison slots
28919-
28920-- support for deprecation warnings
28921-
28922-- the ability to define mappings between C++ classes and similar Python data
28923- types that are automatically invoked
28924-
28925-- the ability to automatically exploit any available run time type information
28926- to ensure that the class of a Python instance object matches the class of the
28927- corresponding C++ instance
28928-
28929-- the ability to change the type and meta-type of the Python object used to
28930- wrap a C/C++ data type
28931-
28932-- full support of the Python global interpreter lock, including the ability to
28933- specify that a C++ function of method may block, therefore allowing the lock
28934- to be released and other Python threads to run
28935-
28936-- support for consolidated modules where the generated wrapper code for a
28937- number of related modules may be included in a single, possibly private,
28938- module
28939-
28940-- support for the concept of ownership of a C++ instance (i.e. what part of the
28941- code is responsible for calling the instance's destructor) and how the
28942- ownership may change during the execution of an application
28943-
28944-- the ability to generate bindings for a C++ class library that itself is built
28945- on another C++ class library which also has had bindings generated so that
28946- the different bindings integrate and share code properly
28947-
28948-- a sophisticated versioning system that allows the full lifetime of a C++
28949- class library, including any platform specific or optional features, to be
28950- described in a single set of specification files
28951-
28952-- support for the automatic generation of PEP 484 type hint stub files
28953-
28954-- the ability to include documentation in the specification files which can be
28955- extracted and subsequently processed by external tools
28956-
28957-- the ability to include copyright notices and licensing information in the
28958- specification files that is automatically included in all generated source
28959- code
28960-
28961-- a build system, written in Python, that you can extend to configure, compile
28962- and install your own bindings without worrying about platform specific issues
28963-
28964-- support for building your extensions using distutils
28965-
28966-- SIP, and the bindings it produces, runs under UNIX, Linux, Windows, MacOS/X,
28967- Android and iOS.
28968-
28969-
28970-SIP Components
28971---------------
28972-
28973-SIP comprises a number of different components.
28974-
28975-- The SIP code generator (:program:`sip`). This processes :file:`.sip`
28976- specification files and generates C or C++ bindings. It is covered in detail
28977- in :ref:`ref-using`.
28978-
28979-- The SIP header file (:file:`sip.h`). This contains definitions and data
28980- structures needed by the generated C and C++ code.
28981-
28982-- The SIP module (:file:`sip.so` or :file:`sip.pyd`). This is a Python
28983- extension module that is imported automatically by SIP generated bindings and
28984- provides them with some common utility functions. Historically the module
28985- was installed in the Python installation's ``site-packages`` directory where
28986- it was imported by any extension module that needed it, for example
28987- :mod:`PyQt4` and :mod:`PyQt5`. However this approach introduces dependencies
28988- between otherwise unrelated packages. The preferred approach is for each
28989- package to include it's own private copy of the module that is installed in
28990- the root directory of the package as described in :ref:`ref-private-sip`.
28991- See also :ref:`ref-python-api`.
28992-
28993-- The SIP build system (:file:`sipconfig.py`). This is a pure Python module
28994- that is created when SIP is configured and encapsulates all the necessary
28995- information about your system including relevant directory names, compiler
28996- and linker flags, and version numbers. It also includes several Python
28997- classes and functions which help you write configuration scripts for your own
28998- bindings. It is covered in detail in :ref:`ref-build-system`.
28999-
29000-- The SIP distutils extension (:file:`sipdistutils.py`). This is a distutils
29001- extension that can be used to build your extension modules using distutils
29002- and is an alternative to writing configuration scripts with the SIP build
29003- system. This can be as simple as adding your .sip files to the list of files
29004- needed to build the extension module. It is covered in detail in
29005- :ref:`ref-distutils`.
29006-
29007-
29008-Preparing for SIP v5
29009---------------------
29010-
29011-The syntax of a SIP specification file will change in SIP v5. The command line
29012-options to the SIP code generator will also change. In order to help users
29013-manage the transition the following approach will be adopted.
29014-
29015-- Where possible, all incompatible changes will be first implemented in SIP v4.
29016-
29017-- When an incompatible change is implemented, the old syntax will be deprecated
29018- (with a warning message) but will be supported for the lifetime of v4.
29019-
29020-- The use of the :option:`--sip-module <configure.py --sip-module>` option to
29021- build a private copy of the SIP module will be compulsory.
29022-
29023-
29024-Qt Support
29025-----------
29026-
29027-SIP has specific support for the creation of bindings for the Qt application
29028-toolkit from The Qt Company..
29029-
29030-The SIP code generator understands the signal/slot type safe callback mechanism
29031-that Qt uses to connect objects together. This allows applications to define
29032-new Python signals, and allows any Python callable object to be used as a slot.
29033-
29034-SIP itself does not require Qt to be installed.
29035diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/sphinx/introduction.rst.in sip/sphinx/introduction.rst.in
29036--- ./sip-4.19.12.orig/sphinx/introduction.rst.in 1969-12-31 19:00:00.000000000 -0500
29037+++ sip/sphinx/introduction.rst.in 2018-09-18 17:52:23.312543505 -0400
29038@@ -0,0 +1,193 @@
29039+Introduction
29040+============
29041+
29042+This is the reference guide for SIP @RM_RELEASE@. SIP is a tool for
29043+automatically generating `Python <https://www.python.org>`__ bindings for C and
29044+C++ libraries. SIP was originally developed in 1998 for
29045+`PyQt <https://www.riverbankcomputing.com/software/pyqt>`__ - the Python
29046+bindings for the Qt GUI toolkit - but is suitable for generating bindings for
29047+any C or C++ library.
29048+
29049+This version of SIP generates bindings for Python v2.3 or later, including
29050+Python v3.
29051+
29052+There are many other similar tools available. One of the original such tools
29053+is `SWIG <http://www.swig.org>`__ and, in fact, SIP is so called because it
29054+started out as a small SWIG. Unlike SWIG, SIP is specifically designed for
29055+bringing together Python and C/C++ and goes to great lengths to make the
29056+integration as tight as possible.
29057+
29058+The homepage for SIP is https://www.riverbankcomputing.com/software/sip. Here
29059+you will always find the latest stable version and the latest version of this
29060+documentation.
29061+
29062+SIP can also be downloaded from the
29063+`Mercurial <https://www.mercurial-scm.org>`__ repository at
29064+https://www.riverbankcomputing.com/hg/sip.
29065+
29066+
29067+License
29068+-------
29069+
29070+SIP is licensed under similar terms as Python itself. SIP is also licensed
29071+under the GPL (both v2 and v3). It is your choice as to which license you
29072+use. If you choose the GPL then any bindings you create must be distributed
29073+under the terms of the GPL.
29074+
29075+
29076+Features
29077+--------
29078+
29079+SIP, and the bindings it produces, have the following features:
29080+
29081+- bindings are fast to load and minimise memory consumption especially when
29082+ only a small sub-set of a large library is being used
29083+
29084+- automatic conversion between standard Python and C/C++ data types
29085+
29086+- overloading of functions and methods with different argument signatures
29087+
29088+- support for Python's keyword argument syntax
29089+
29090+- support for both explicitly specified and automatically generated docstrings
29091+
29092+- access to a C++ class's protected methods
29093+
29094+- the ability to define a Python class that is a sub-class of a C++ class,
29095+ including abstract C++ classes
29096+
29097+- Python sub-classes can implement the :meth:`__dtor__` method which will be
29098+ called from the C++ class's virtual destructor
29099+
29100+- support for ordinary C++ functions, class methods, static class methods,
29101+ virtual class methods and abstract class methods
29102+
29103+- the ability to re-implement C++ virtual and abstract methods in Python
29104+
29105+- support for global and class variables
29106+
29107+- support for global and class operators
29108+
29109+- support for C++ namespaces
29110+
29111+- support for C++ templates
29112+
29113+- support for C++ exceptions and wrapping them as Python exceptions
29114+
29115+- the automatic generation of complementary rich comparison slots
29116+
29117+- support for deprecation warnings
29118+
29119+- the ability to define mappings between C++ classes and similar Python data
29120+ types that are automatically invoked
29121+
29122+- the ability to automatically exploit any available run time type information
29123+ to ensure that the class of a Python instance object matches the class of the
29124+ corresponding C++ instance
29125+
29126+- the ability to change the type and meta-type of the Python object used to
29127+ wrap a C/C++ data type
29128+
29129+- full support of the Python global interpreter lock, including the ability to
29130+ specify that a C++ function of method may block, therefore allowing the lock
29131+ to be released and other Python threads to run
29132+
29133+- support for consolidated modules where the generated wrapper code for a
29134+ number of related modules may be included in a single, possibly private,
29135+ module
29136+
29137+- support for the concept of ownership of a C++ instance (i.e. what part of the
29138+ code is responsible for calling the instance's destructor) and how the
29139+ ownership may change during the execution of an application
29140+
29141+- the ability to generate bindings for a C++ class library that itself is built
29142+ on another C++ class library which also has had bindings generated so that
29143+ the different bindings integrate and share code properly
29144+
29145+- a sophisticated versioning system that allows the full lifetime of a C++
29146+ class library, including any platform specific or optional features, to be
29147+ described in a single set of specification files
29148+
29149+- support for the automatic generation of PEP 484 type hint stub files
29150+
29151+- the ability to include documentation in the specification files which can be
29152+ extracted and subsequently processed by external tools
29153+
29154+- the ability to include copyright notices and licensing information in the
29155+ specification files that is automatically included in all generated source
29156+ code
29157+
29158+- a build system, written in Python, that you can extend to configure, compile
29159+ and install your own bindings without worrying about platform specific issues
29160+
29161+- support for building your extensions using distutils
29162+
29163+- SIP, and the bindings it produces, runs under UNIX, Linux, Windows, MacOS/X,
29164+ Android and iOS.
29165+
29166+
29167+SIP Components
29168+--------------
29169+
29170+SIP comprises a number of different components.
29171+
29172+- The SIP code generator (:program:`sip`). This processes :file:`.sip`
29173+ specification files and generates C or C++ bindings. It is covered in detail
29174+ in :ref:`ref-using`.
29175+
29176+- The SIP header file (:file:`sip.h`). This contains definitions and data
29177+ structures needed by the generated C and C++ code.
29178+
29179+- The SIP module (:file:`sip.so` or :file:`sip.pyd`). This is a Python
29180+ extension module that is imported automatically by SIP generated bindings and
29181+ provides them with some common utility functions. Historically the module
29182+ was installed in the Python installation's ``site-packages`` directory where
29183+ it was imported by any extension module that needed it, for example
29184+ :mod:`PyQt4` and :mod:`PyQt5`. However this approach introduces dependencies
29185+ between otherwise unrelated packages. The preferred approach is for each
29186+ package to include it's own private copy of the module that is installed in
29187+ the root directory of the package as described in :ref:`ref-private-sip`.
29188+ See also :ref:`ref-python-api`.
29189+
29190+- The SIP build system (:file:`sipconfig.py`). This is a pure Python module
29191+ that is created when SIP is configured and encapsulates all the necessary
29192+ information about your system including relevant directory names, compiler
29193+ and linker flags, and version numbers. It also includes several Python
29194+ classes and functions which help you write configuration scripts for your own
29195+ bindings. It is covered in detail in :ref:`ref-build-system`.
29196+
29197+- The SIP distutils extension (:file:`sipdistutils.py`). This is a distutils
29198+ extension that can be used to build your extension modules using distutils
29199+ and is an alternative to writing configuration scripts with the SIP build
29200+ system. This can be as simple as adding your .sip files to the list of files
29201+ needed to build the extension module. It is covered in detail in
29202+ :ref:`ref-distutils`.
29203+
29204+
29205+Preparing for SIP v5
29206+--------------------
29207+
29208+The syntax of a SIP specification file will change in SIP v5. The command line
29209+options to the SIP code generator will also change. In order to help users
29210+manage the transition the following approach will be adopted.
29211+
29212+- Where possible, all incompatible changes will be first implemented in SIP v4.
29213+
29214+- When an incompatible change is implemented, the old syntax will be deprecated
29215+ (with a warning message) but will be supported for the lifetime of v4.
29216+
29217+- The use of the :option:`--sip-module <configure.py --sip-module>` option to
29218+ build a private copy of the SIP module will be compulsory.
29219+
29220+
29221+Qt Support
29222+----------
29223+
29224+SIP has specific support for the creation of bindings for the Qt application
29225+toolkit from The Qt Company..
29226+
29227+The SIP code generator understands the signal/slot type safe callback mechanism
29228+that Qt uses to connect objects together. This allows applications to define
29229+new Python signals, and allows any Python callable object to be used as a slot.
29230+
29231+SIP itself does not require Qt to be installed.
29232diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/mk.sh sip/test/int_convertors/mk.sh
29233--- ./sip-4.19.12.orig/test/int_convertors/mk.sh 1969-12-31 19:00:00.000000000 -0500
29234+++ sip/test/int_convertors/mk.sh 2018-09-18 17:52:23.314543476 -0400
29235@@ -0,0 +1,23 @@
29236+PYTHON=3.6
29237+PYTHON_ARCH="$PYTHON"m
29238+#PYTHON=2.7
29239+#PYTHON_ARCH=$PYTHON
29240+
29241+QT=5.9.2
29242+QT_SHORT=5.9.2
29243+
29244+PYROOT=/Library/Frameworks/Python.framework/Versions/$PYTHON
29245+
29246+QTROOT=$HOME/bob/Qt$QT/$QT_SHORT/clang_64
29247+
29248+# Run sip.
29249+$PYROOT/bin/sip -c . -j 1 test.sip
29250+#$PYROOT/bin/sip -c . -j 1 -t Qt_5_9_1 -t WS_MACX -I $PYROOT/share/sip/PyQt5 test.sip
29251+
29252+# Compile C++.
29253+c++ -c -pipe -fPIC -Os -w -I. -I$PYROOT/include/python"$PYTHON_ARCH" -o siptestpart0.o siptestpart0.cpp
29254+#c++ -c -pipe -fPIC -Os -w -std=gnu++11 -F$QTROOT/lib -I. -I$PYROOT/include/python"$PYTHON_ARCH" -I$QTROOT/lib/QtCore.framework/Headers -o siptestpart0.o siptestpart0.cpp
29255+
29256+# Link C++.
29257+c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o test.so siptestpart0.o
29258+#c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -o test.so siptestpart0.o -F$QTROOT/lib -framework QtCore
29259diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/run_test.py sip/test/int_convertors/run_test.py
29260--- ./sip-4.19.12.orig/test/int_convertors/run_test.py 1969-12-31 19:00:00.000000000 -0500
29261+++ sip/test/int_convertors/run_test.py 2018-09-18 17:52:23.315543462 -0400
29262@@ -0,0 +1,1845 @@
29263+import sys
29264+import unittest
29265+
29266+from sip import enableoverflowchecking
29267+
29268+from test import Test
29269+
29270+
29271+# The exception raised by a virtual re-implementation.
29272+_exc = None
29273+
29274+# The saved exception hook.
29275+_old_hook = None
29276+
29277+
29278+def _hook(xtype, xvalue, xtb):
29279+ """ The replacement exceptionhook. """
29280+
29281+ global _exc
29282+
29283+ # Save the exception for later.
29284+ _exc = xvalue
29285+
29286+
29287+def install_hook():
29288+ """ Install an exception hook that will remember exceptions raised by
29289+ virtual re-implementations.
29290+ """
29291+
29292+ global _exc, _old_hook
29293+
29294+ # Clear the saved exception.
29295+ _exc = None
29296+
29297+ # Save the old hook and install the new one.
29298+ _old_hook = sys.excepthook
29299+ sys.excepthook = _hook
29300+
29301+
29302+def uninstall_hook():
29303+ """ Restore the original exception hook and re-raise any exception raised
29304+ by a virtual re-implementation.
29305+ """
29306+
29307+ sys.excepthook = _old_hook
29308+
29309+ if _exc is not None:
29310+ raise _exc
29311+
29312+
29313+class InvalidFixture(Test):
29314+ """ A fixture for testing invalid values. """
29315+
29316+ def scoped_virt(self):
29317+ """ Re-implemented to return the fixture-specific value. """
29318+
29319+ return 10
29320+
29321+ def named_virt(self):
29322+ """ Re-implemented to return the fixture-specific value. """
29323+
29324+ return '0'
29325+
29326+ def bool_virt(self):
29327+ """ Re-implemented to return the fixture-specific value. """
29328+
29329+ return '0'
29330+
29331+ def char_virt(self):
29332+ """ Re-implemented to return the fixture-specific value. """
29333+
29334+ return '0'
29335+
29336+ def signed_char_virt(self):
29337+ """ Re-implemented to return the fixture-specific value. """
29338+
29339+ return '0'
29340+
29341+ def short_virt(self):
29342+ """ Re-implemented to return the fixture-specific value. """
29343+
29344+ return '0'
29345+
29346+ def int_virt(self):
29347+ """ Re-implemented to return the fixture-specific value. """
29348+
29349+ return '0'
29350+
29351+ def long_virt(self):
29352+ """ Re-implemented to return the fixture-specific value. """
29353+
29354+ return '0'
29355+
29356+ def long_long_virt(self):
29357+ """ Re-implemented to return the fixture-specific value. """
29358+
29359+ return '0'
29360+
29361+ def unsigned_char_virt(self):
29362+ """ Re-implemented to return the fixture-specific value. """
29363+
29364+ return '0'
29365+
29366+ def unsigned_short_virt(self):
29367+ """ Re-implemented to return the fixture-specific value. """
29368+
29369+ return '0'
29370+
29371+ def unsigned_int_virt(self):
29372+ """ Re-implemented to return the fixture-specific value. """
29373+
29374+ return '0'
29375+
29376+ def unsigned_long_virt(self):
29377+ """ Re-implemented to return the fixture-specific value. """
29378+
29379+ return '0'
29380+
29381+ def unsigned_long_long_virt(self):
29382+ """ Re-implemented to return the fixture-specific value. """
29383+
29384+ return '0'
29385+
29386+
29387+class ScopedEnumFixture(Test):
29388+ """ A fixture for testing scoped enum values. """
29389+
29390+ def scoped_virt(self):
29391+ """ Re-implemented to return the fixture-specific value. """
29392+
29393+ return Test.Scoped.scoped
29394+
29395+
29396+class NamedEnumFixture(Test):
29397+ """ A fixture for testing named enum values. """
29398+
29399+ def __init__(self, value):
29400+ """ Initialise the object. """
29401+
29402+ super().__init__()
29403+
29404+ self._value = value
29405+
29406+ def named_virt(self):
29407+ """ Re-implemented to return the fixture-specific value. """
29408+
29409+ return self._value
29410+
29411+
29412+class BoolFixture(Test):
29413+ """ A fixture for testing valid boolean values. """
29414+
29415+ def __init__(self, value):
29416+ """ Initialise the object. """
29417+
29418+ super().__init__()
29419+
29420+ self._value = value
29421+
29422+ def bool_virt(self):
29423+ """ Re-implemented to return the fixture-specific value. """
29424+
29425+ return self._value
29426+
29427+
29428+class LimitsFixture(Test):
29429+ """ The base test fixture for those implementing a range of values. """
29430+
29431+ def __init__(self, limits):
29432+ """ Initialise the object. """
29433+
29434+ super().__init__()
29435+
29436+ self.limits = limits
29437+
29438+
29439+class ValidLowerFixture(LimitsFixture):
29440+ """ A fixture for testing the lower bound of non-overflowing signed values.
29441+ """
29442+
29443+ def char_virt(self):
29444+ """ Re-implemented to return the fixture-specific value. """
29445+
29446+ return self.limits.CHAR_LOWER
29447+
29448+ def signed_char_virt(self):
29449+ """ Re-implemented to return the fixture-specific value. """
29450+
29451+ return self.limits.SIGNED_CHAR_LOWER
29452+
29453+ def short_virt(self):
29454+ """ Re-implemented to return the fixture-specific value. """
29455+
29456+ return self.limits.SHORT_LOWER
29457+
29458+ def int_virt(self):
29459+ """ Re-implemented to return the fixture-specific value. """
29460+
29461+ return self.limits.INT_LOWER
29462+
29463+ def long_virt(self):
29464+ """ Re-implemented to return the fixture-specific value. """
29465+
29466+ return self.limits.LONG_LOWER
29467+
29468+ def long_long_virt(self):
29469+ """ Re-implemented to return the fixture-specific value. """
29470+
29471+ return self.limits.LONG_LONG_LOWER
29472+
29473+
29474+class ValidUpperFixture(LimitsFixture):
29475+ """ A fixture for testing the upper bound of non-overflowing values.
29476+ """
29477+
29478+ def char_virt(self):
29479+ """ Re-implemented to return the fixture-specific value. """
29480+
29481+ return self.limits.CHAR_UPPER
29482+
29483+ def signed_char_virt(self):
29484+ """ Re-implemented to return the fixture-specific value. """
29485+
29486+ return self.limits.SIGNED_CHAR_UPPER
29487+
29488+ def short_virt(self):
29489+ """ Re-implemented to return the fixture-specific value. """
29490+
29491+ return self.limits.SHORT_UPPER
29492+
29493+ def int_virt(self):
29494+ """ Re-implemented to return the fixture-specific value. """
29495+
29496+ return self.limits.INT_UPPER
29497+
29498+ def long_virt(self):
29499+ """ Re-implemented to return the fixture-specific value. """
29500+
29501+ return self.limits.LONG_UPPER
29502+
29503+ def long_long_virt(self):
29504+ """ Re-implemented to return the fixture-specific value. """
29505+
29506+ return self.limits.LONG_LONG_UPPER
29507+
29508+ def unsigned_char_virt(self):
29509+ """ Re-implemented to return the fixture-specific value. """
29510+
29511+ return self.limits.UNSIGNED_CHAR_UPPER
29512+
29513+ def unsigned_short_virt(self):
29514+ """ Re-implemented to return the fixture-specific value. """
29515+
29516+ return self.limits.UNSIGNED_SHORT_UPPER
29517+
29518+ def unsigned_int_virt(self):
29519+ """ Re-implemented to return the fixture-specific value. """
29520+
29521+ return self.limits.UNSIGNED_INT_UPPER
29522+
29523+ def unsigned_long_virt(self):
29524+ """ Re-implemented to return the fixture-specific value. """
29525+
29526+ return self.limits.UNSIGNED_LONG_UPPER
29527+
29528+ def unsigned_long_long_virt(self):
29529+ """ Re-implemented to return the fixture-specific value. """
29530+
29531+ return self.limits.UNSIGNED_LONG_LONG_UPPER
29532+
29533+
29534+class OverflowLowerFixture(LimitsFixture):
29535+ """ A fixture for testing the lower bound of overflowing signed values. """
29536+
29537+ def char_virt(self):
29538+ """ Re-implemented to return the fixture-specific value. """
29539+
29540+ return self.limits.CHAR_LOWER - 1
29541+
29542+ def signed_char_virt(self):
29543+ """ Re-implemented to return the fixture-specific value. """
29544+
29545+ return self.limits.SIGNED_CHAR_LOWER - 1
29546+
29547+ def short_virt(self):
29548+ """ Re-implemented to return the fixture-specific value. """
29549+
29550+ return self.limits.SHORT_LOWER - 1
29551+
29552+ def int_virt(self):
29553+ """ Re-implemented to return the fixture-specific value. """
29554+
29555+ return self.limits.INT_LOWER - 1
29556+
29557+ def long_virt(self):
29558+ """ Re-implemented to return the fixture-specific value. """
29559+
29560+ return self.limits.LONG_LOWER - 1
29561+
29562+ def long_long_virt(self):
29563+ """ Re-implemented to return the fixture-specific value. """
29564+
29565+ return self.limits.LONG_LONG_LOWER - 1
29566+
29567+
29568+class OverflowUpperFixture(LimitsFixture):
29569+ """ A fixture for testing the upper bound of overflowing values. """
29570+
29571+ def char_virt(self):
29572+ """ Re-implemented to return the fixture-specific value. """
29573+
29574+ return self.limits.CHAR_UPPER + 1
29575+
29576+ def signed_char_virt(self):
29577+ """ Re-implemented to return the fixture-specific value. """
29578+
29579+ return self.limits.SIGNED_CHAR_UPPER + 1
29580+
29581+ def short_virt(self):
29582+ """ Re-implemented to return the fixture-specific value. """
29583+
29584+ return self.limits.SHORT_UPPER + 1
29585+
29586+ def int_virt(self):
29587+ """ Re-implemented to return the fixture-specific value. """
29588+
29589+ return self.limits.INT_UPPER + 1
29590+
29591+ def long_virt(self):
29592+ """ Re-implemented to return the fixture-specific value. """
29593+
29594+ return self.limits.LONG_UPPER + 1
29595+
29596+ def long_long_virt(self):
29597+ """ Re-implemented to return the fixture-specific value. """
29598+
29599+ return self.limits.LONG_LONG_UPPER + 1
29600+
29601+ def unsigned_char_virt(self):
29602+ """ Re-implemented to return the fixture-specific value. """
29603+
29604+ return self.limits.UNSIGNED_CHAR_UPPER + 1
29605+
29606+ def unsigned_short_virt(self):
29607+ """ Re-implemented to return the fixture-specific value. """
29608+
29609+ return self.limits.UNSIGNED_SHORT_UPPER + 1
29610+
29611+ def unsigned_int_virt(self):
29612+ """ Re-implemented to return the fixture-specific value. """
29613+
29614+ return self.limits.UNSIGNED_INT_UPPER + 1
29615+
29616+ def unsigned_long_virt(self):
29617+ """ Re-implemented to return the fixture-specific value. """
29618+
29619+ return self.limits.UNSIGNED_LONG_UPPER + 1
29620+
29621+ def unsigned_long_long_virt(self):
29622+ """ Re-implemented to return the fixture-specific value. """
29623+
29624+ return self.limits.UNSIGNED_LONG_LONG_UPPER + 1
29625+
29626+
29627+class TestScopedEnumConvertors(unittest.TestCase):
29628+ """ This tests the scoped enum convertors with valid values. """
29629+
29630+ def setUp(self):
29631+ """ Set up a test. """
29632+
29633+ self.fixture = ScopedEnumFixture()
29634+
29635+ def tearDown(self):
29636+ """ Tidy up after a test. """
29637+
29638+ del self.fixture
29639+
29640+ def test_scoped_get_member(self):
29641+ """ scoped enum virtual result with a member value. """
29642+
29643+ self.assertIs(self.fixture.scoped_get(), Test.Scoped.scoped)
29644+
29645+ def test_scoped_set_member(self):
29646+ """ scoped enum function argument with a member value. """
29647+
29648+ self.fixture.scoped_set(Test.Scoped.scoped)
29649+
29650+ def test_scoped_var_member(self):
29651+ """ scoped enum instance variable with a member value. """
29652+
29653+ self.fixture.scoped_var = Test.Scoped.scoped
29654+
29655+
29656+class TestNamedEnumConvertors(unittest.TestCase):
29657+ """ This tests the named enum convertors with valid values. """
29658+
29659+ def setUp(self):
29660+ """ Set up a test. """
29661+
29662+ self.member_fixture = NamedEnumFixture(Test.named)
29663+ self.int_fixture = NamedEnumFixture(0)
29664+
29665+ def tearDown(self):
29666+ """ Tidy up after a test. """
29667+
29668+ del self.member_fixture
29669+ del self.int_fixture
29670+
29671+ def test_named_get_member(self):
29672+ """ named enum virtual result with a member value. """
29673+
29674+ self.assertEqual(self.member_fixture.named_get(), Test.named)
29675+
29676+ def test_named_set_member(self):
29677+ """ named enum function argument with a member value. """
29678+
29679+ self.member_fixture.named_set(Test.named)
29680+
29681+ def test_named_var_member(self):
29682+ """ named enum instance variable with a member value. """
29683+
29684+ self.member_fixture.named_var = Test.named
29685+
29686+ def test_named_overload_set(self):
29687+ """ overloaded named enum function argument. """
29688+
29689+ self.member_fixture.named_overload_set(Test.named)
29690+ self.assertIs(self.member_fixture.named_overload, True)
29691+
29692+ def test_named_get_int(self):
29693+ """ named enum virtual result with an integer value. """
29694+
29695+ self.assertEqual(self.int_fixture.named_get(), 0)
29696+
29697+ def test_named_set_int(self):
29698+ """ named enum function argument with an integer value. """
29699+
29700+ self.int_fixture.named_set(0)
29701+
29702+ def test_named_var_int(self):
29703+ """ named enum instance variable with an integer value. """
29704+
29705+ self.int_fixture.named_var = 0
29706+
29707+
29708+class TestBoolConvertors(unittest.TestCase):
29709+ """ This tests the bool convertors with valid values. """
29710+
29711+ def setUp(self):
29712+ """ Set up a test. """
29713+
29714+ self.true_fixture = BoolFixture(True)
29715+ self.false_fixture = BoolFixture(False)
29716+ self.nonzero_fixture = BoolFixture(-1)
29717+ self.zero_fixture = BoolFixture(0)
29718+
29719+ def tearDown(self):
29720+ """ Tidy up after a test. """
29721+
29722+ del self.true_fixture
29723+ del self.false_fixture
29724+ del self.nonzero_fixture
29725+ del self.zero_fixture
29726+
29727+ def test_bool_get_true(self):
29728+ """ bool virtual result with a True value. """
29729+
29730+ self.assertIs(self.true_fixture.bool_get(), True)
29731+
29732+ def test_bool_set_true(self):
29733+ """ bool function argument with a True value. """
29734+
29735+ self.true_fixture.bool_set(True)
29736+
29737+ def test_bool_var_true(self):
29738+ """ bool instance variable with a True value. """
29739+
29740+ self.true_fixture.bool_var = True
29741+
29742+ def test_bool_get_false(self):
29743+ """ bool virtual result with a True value. """
29744+
29745+ self.assertIs(self.false_fixture.bool_get(), False)
29746+
29747+ def test_bool_set_false(self):
29748+ """ bool function argument with a False value. """
29749+
29750+ self.false_fixture.bool_set(False)
29751+
29752+ def test_bool_var_false(self):
29753+ """ bool instance variable with a False value. """
29754+
29755+ self.false_fixture.bool_var = False
29756+
29757+ def test_bool_get_nonzero(self):
29758+ """ bool virtual result with a non-zero value. """
29759+
29760+ self.assertIs(self.nonzero_fixture.bool_get(), True)
29761+
29762+ def test_bool_set_nonzero(self):
29763+ """ bool function argument with a non-zero value. """
29764+
29765+ self.nonzero_fixture.bool_set(-1)
29766+
29767+ def test_bool_var_nonzero(self):
29768+ """ bool instance variable with a non-zero value. """
29769+
29770+ self.nonzero_fixture.bool_var = -1
29771+
29772+ def test_bool_get_zero(self):
29773+ """ bool virtual result with a zero value. """
29774+
29775+ self.assertIs(self.zero_fixture.bool_get(), False)
29776+
29777+ def test_bool_set_zero(self):
29778+ """ bool function argument with a zero value. """
29779+
29780+ self.zero_fixture.bool_set(0)
29781+
29782+ def test_bool_var_zero(self):
29783+ """ bool instance variable with a zero value. """
29784+
29785+ self.zero_fixture.bool_var = 0
29786+
29787+
29788+class TestIntConvertors(unittest.TestCase):
29789+ """ This tests the integer convertors with valid values. """
29790+
29791+ @classmethod
29792+ def setUpClass(cls):
29793+ """ Set up a test case. """
29794+
29795+ # Compute the various test values based on the native sizes.
29796+ cls.CHAR_LOWER = Test.char_lower()
29797+ cls.CHAR_UPPER = Test.char_upper()
29798+ cls.SIGNED_CHAR_LOWER, cls.SIGNED_CHAR_UPPER = cls._signed_bounds(
29799+ Test.signed_char_sizeof())
29800+ cls.SHORT_LOWER, cls.SHORT_UPPER = cls._signed_bounds(
29801+ Test.short_sizeof())
29802+ cls.INT_LOWER, cls.INT_UPPER = cls._signed_bounds(Test.int_sizeof())
29803+ cls.LONG_LOWER, cls.LONG_UPPER = cls._signed_bounds(Test.long_sizeof())
29804+ cls.LONG_LONG_LOWER, cls.LONG_LONG_UPPER = cls._signed_bounds(
29805+ Test.long_long_sizeof())
29806+ cls.UNSIGNED_CHAR_UPPER = cls._unsigned_upper_bound(
29807+ Test.unsigned_char_sizeof())
29808+ cls.UNSIGNED_SHORT_UPPER = cls._unsigned_upper_bound(
29809+ Test.unsigned_short_sizeof())
29810+ cls.UNSIGNED_INT_UPPER = cls._unsigned_upper_bound(
29811+ Test.unsigned_int_sizeof())
29812+ cls.UNSIGNED_LONG_UPPER = cls._unsigned_upper_bound(
29813+ Test.unsigned_long_sizeof())
29814+ cls.UNSIGNED_LONG_LONG_UPPER = cls._unsigned_upper_bound(
29815+ Test.unsigned_long_long_sizeof())
29816+
29817+ @staticmethod
29818+ def _signed_bounds(nrbytes):
29819+ """ Return the range of values for a number of bytes representing a
29820+ signed value.
29821+ """
29822+
29823+ v = 1 << ((nrbytes * 8) - 1)
29824+
29825+ return -v, v - 1
29826+
29827+ @staticmethod
29828+ def _unsigned_upper_bound(nrbytes):
29829+ """ Return the upper bound for a number of bytes representing an
29830+ unsigned value.
29831+ """
29832+
29833+ return (1 << (nrbytes * 8)) - 1
29834+
29835+
29836+class TestInvalidValues(TestIntConvertors):
29837+ """ This tests the integer, boolean and enum convertors with invalid
29838+ values.
29839+ """
29840+
29841+ def setUp(self):
29842+ """ Set up a test. """
29843+
29844+ self.fixture = InvalidFixture()
29845+
29846+ def tearDown(self):
29847+ """ Tidy up after a test. """
29848+
29849+ del self.fixture
29850+
29851+ def test_scoped_get(self):
29852+ """ scoped enum virtual result. """
29853+
29854+ with self.assertRaises(TypeError):
29855+ install_hook()
29856+ self.fixture.scoped_get()
29857+ uninstall_hook()
29858+
29859+ def test_scoped_set(self):
29860+ """ scoped enum function argument. """
29861+
29862+ with self.assertRaises(TypeError):
29863+ self.fixture.scoped_set(10)
29864+
29865+ def test_scoped_var(self):
29866+ """ scoped enum instance variable. """
29867+
29868+ with self.assertRaises(TypeError):
29869+ self.fixture.scoped_var = 10
29870+
29871+ def test_named_get(self):
29872+ """ named enum virtual result. """
29873+
29874+ with self.assertRaises(TypeError):
29875+ install_hook()
29876+ self.fixture.named_get()
29877+ uninstall_hook()
29878+
29879+ def test_named_set(self):
29880+ """ named enum function argument. """
29881+
29882+ with self.assertRaises(TypeError):
29883+ self.fixture.named_set('0')
29884+
29885+ def test_named_var(self):
29886+ """ named enum instance variable. """
29887+
29888+ with self.assertRaises(TypeError):
29889+ self.fixture.named_var = '0'
29890+
29891+ def test_bool_get(self):
29892+ """ bool virtual result. """
29893+
29894+ with self.assertRaises(TypeError):
29895+ install_hook()
29896+ self.fixture.bool_get()
29897+ uninstall_hook()
29898+
29899+ def test_bool_set(self):
29900+ """ bool function argument. """
29901+
29902+ with self.assertRaises(TypeError):
29903+ self.fixture.bool_set('0')
29904+
29905+ def test_bool_var(self):
29906+ """ bool instance variable. """
29907+
29908+ with self.assertRaises(TypeError):
29909+ self.fixture.bool_var = '0'
29910+
29911+ def test_char_get(self):
29912+ """ char virtual result. """
29913+
29914+ with self.assertRaises(TypeError):
29915+ install_hook()
29916+ self.fixture.char_get()
29917+ uninstall_hook()
29918+
29919+ def test_char_set(self):
29920+ """ char function argument. """
29921+
29922+ with self.assertRaises(TypeError):
29923+ self.fixture.char_set('0')
29924+
29925+ def test_char_var(self):
29926+ """ char instance variable. """
29927+
29928+ with self.assertRaises(TypeError):
29929+ self.fixture.char_var = '0'
29930+
29931+ def test_signed_char_get(self):
29932+ """ signed char virtual result. """
29933+
29934+ with self.assertRaises(TypeError):
29935+ install_hook()
29936+ self.fixture.signed_char_get()
29937+ uninstall_hook()
29938+
29939+ def test_signed_char_set(self):
29940+ """ signed char function argument. """
29941+
29942+ with self.assertRaises(TypeError):
29943+ self.fixture.signed_char_set('0')
29944+
29945+ def test_signed_char_var(self):
29946+ """ signed char instance variable. """
29947+
29948+ with self.assertRaises(TypeError):
29949+ self.fixture.signed_char_var = '0'
29950+
29951+ def test_short_get(self):
29952+ """ short virtual result. """
29953+
29954+ with self.assertRaises(TypeError):
29955+ install_hook()
29956+ self.fixture.short_get()
29957+ uninstall_hook()
29958+
29959+ def test_short_set(self):
29960+ """ short function argument. """
29961+
29962+ with self.assertRaises(TypeError):
29963+ self.fixture.short_set('0')
29964+
29965+ def test_short_var(self):
29966+ """ short instance variable. """
29967+
29968+ with self.assertRaises(TypeError):
29969+ self.fixture.short_var = '0'
29970+
29971+ def test_int_get(self):
29972+ """ int virtual result. """
29973+
29974+ with self.assertRaises(TypeError):
29975+ install_hook()
29976+ self.fixture.int_get()
29977+ uninstall_hook()
29978+
29979+ def test_int_set(self):
29980+ """ int function argument. """
29981+
29982+ with self.assertRaises(TypeError):
29983+ self.fixture.int_set('0')
29984+
29985+ def test_int_var(self):
29986+ """ int instance variable. """
29987+
29988+ with self.assertRaises(TypeError):
29989+ self.fixture.int_var = '0'
29990+
29991+ def test_long_get(self):
29992+ """ long virtual result. """
29993+
29994+ with self.assertRaises(TypeError):
29995+ install_hook()
29996+ self.fixture.long_get()
29997+ uninstall_hook()
29998+
29999+ def test_long_set(self):
30000+ """ long function argument. """
30001+
30002+ with self.assertRaises(TypeError):
30003+ self.fixture.long_set('0')
30004+
30005+ def test_long_var(self):
30006+ """ long instance variable. """
30007+
30008+ with self.assertRaises(TypeError):
30009+ self.fixture.long_var = '0'
30010+
30011+ def test_long_long_get(self):
30012+ """ long long virtual result. """
30013+
30014+ with self.assertRaises(TypeError):
30015+ install_hook()
30016+ self.fixture.long_long_get()
30017+ uninstall_hook()
30018+
30019+ def test_long_long_set(self):
30020+ """ long long function argument. """
30021+
30022+ with self.assertRaises(TypeError):
30023+ self.fixture.long_long_set('0')
30024+
30025+ def test_long_long_var(self):
30026+ """ long long instance variable. """
30027+
30028+ with self.assertRaises(TypeError):
30029+ self.fixture.long_long_var = '0'
30030+
30031+ def test_unsigned_char_get(self):
30032+ """ unsigned char virtual result. """
30033+
30034+ with self.assertRaises(TypeError):
30035+ install_hook()
30036+ self.fixture.unsigned_char_get()
30037+ uninstall_hook()
30038+
30039+ def test_unsigned_char_set(self):
30040+ """ unsigned char function argument. """
30041+
30042+ with self.assertRaises(TypeError):
30043+ self.fixture.unsigned_char_set('0')
30044+
30045+ def test_unsigned_char_var(self):
30046+ """ unsigned char instance variable. """
30047+
30048+ with self.assertRaises(TypeError):
30049+ self.fixture.unsigned_char_var = '0'
30050+
30051+ def test_unsigned_short_get(self):
30052+ """ unsigned short virtual result. """
30053+
30054+ with self.assertRaises(TypeError):
30055+ install_hook()
30056+ self.fixture.unsigned_short_get()
30057+ uninstall_hook()
30058+
30059+ def test_unsigned_short_set(self):
30060+ """ unsigned short function argument. """
30061+
30062+ with self.assertRaises(TypeError):
30063+ self.fixture.unsigned_short_set('0')
30064+
30065+ def test_unsigned_short_var(self):
30066+ """ unsigned short instance variable. """
30067+
30068+ with self.assertRaises(TypeError):
30069+ self.fixture.unsigned_short_var = '0'
30070+
30071+ def test_unsigned_int_get(self):
30072+ """ unsigned int virtual result. """
30073+
30074+ with self.assertRaises(TypeError):
30075+ install_hook()
30076+ self.fixture.unsigned_int_get()
30077+ uninstall_hook()
30078+
30079+ def test_unsigned_int_set(self):
30080+ """ unsigned int function argument. """
30081+
30082+ with self.assertRaises(TypeError):
30083+ self.fixture.unsigned_int_set('0')
30084+
30085+ def test_unsigned_int_var(self):
30086+ """ unsigned int instance variable. """
30087+
30088+ with self.assertRaises(TypeError):
30089+ self.fixture.unsigned_int_var = '0'
30090+
30091+ def test_unsigned_long_get(self):
30092+ """ unsigned long virtual result. """
30093+
30094+ with self.assertRaises(TypeError):
30095+ install_hook()
30096+ self.fixture.unsigned_long_get()
30097+ uninstall_hook()
30098+
30099+ def test_unsigned_long_set(self):
30100+ """ unsigned long function argument. """
30101+
30102+ with self.assertRaises(TypeError):
30103+ self.fixture.unsigned_long_set('0')
30104+
30105+ def test_unsigned_long_var(self):
30106+ """ unsigned long instance variable. """
30107+
30108+ with self.assertRaises(TypeError):
30109+ self.fixture.unsigned_long_var = '0'
30110+
30111+ def test_unsigned_long_long_get(self):
30112+ """ unsigned long long virtual result. """
30113+
30114+ with self.assertRaises(TypeError):
30115+ install_hook()
30116+ self.fixture.unsigned_long_long_get()
30117+ uninstall_hook()
30118+
30119+ def test_unsigned_long_long_set(self):
30120+ """ unsigned long long function argument. """
30121+
30122+ with self.assertRaises(TypeError):
30123+ self.fixture.unsigned_long_long_set('0')
30124+
30125+ def test_unsigned_long_long_var(self):
30126+ """ unsigned long long instance variable. """
30127+
30128+ with self.assertRaises(TypeError):
30129+ self.fixture.unsigned_long_long_var = '0'
30130+
30131+
30132+class TestValidValues(TestIntConvertors):
30133+ """ This tests the integer convertors with valid values. """
30134+
30135+ def setUp(self):
30136+ """ Set up a test. """
30137+
30138+ self.lower_fixture = ValidLowerFixture(self)
30139+ self.upper_fixture = ValidUpperFixture(self)
30140+
30141+ def tearDown(self):
30142+ """ Tidy up after a test. """
30143+
30144+ del self.lower_fixture
30145+ del self.upper_fixture
30146+
30147+ def test_char_get_lower(self):
30148+ """ char virtual result lower bound. """
30149+
30150+ self.assertEqual(self.lower_fixture.char_get(), self.CHAR_LOWER)
30151+
30152+ def test_char_get_upper(self):
30153+ """ char virtual result upper bound. """
30154+
30155+ self.assertEqual(self.upper_fixture.char_get(), self.CHAR_UPPER)
30156+
30157+ def test_char_set_lower(self):
30158+ """ char function argument lower bound. """
30159+
30160+ self.lower_fixture.char_set(self.CHAR_LOWER)
30161+
30162+ def test_char_set_upper(self):
30163+ """ char function argument upper bound. """
30164+
30165+ self.upper_fixture.char_set(self.CHAR_UPPER)
30166+
30167+ def test_char_var_lower(self):
30168+ """ char instance variable lower bound. """
30169+
30170+ self.lower_fixture.char_var = self.CHAR_LOWER
30171+
30172+ def test_char_var_upper(self):
30173+ """ char instance variable upper bound. """
30174+
30175+ self.upper_fixture.char_var = self.CHAR_UPPER
30176+
30177+ def test_signed_char_get_lower(self):
30178+ """ signed char virtual result lower bound. """
30179+
30180+ self.assertEqual(self.lower_fixture.signed_char_get(),
30181+ self.SIGNED_CHAR_LOWER)
30182+
30183+ def test_signed_char_get_upper(self):
30184+ """ signed char virtual result upper bound. """
30185+
30186+ self.assertEqual(self.upper_fixture.signed_char_get(),
30187+ self.SIGNED_CHAR_UPPER)
30188+
30189+ def test_signed_char_set_lower(self):
30190+ """ signed char function argument lower bound. """
30191+
30192+ self.lower_fixture.signed_char_set(self.SIGNED_CHAR_LOWER)
30193+
30194+ def test_signed_char_set_upper(self):
30195+ """ signed char function argument upper bound. """
30196+
30197+ self.upper_fixture.signed_char_set(self.SIGNED_CHAR_UPPER)
30198+
30199+ def test_signed_char_var_lower(self):
30200+ """ signed char instance variable lower bound. """
30201+
30202+ self.lower_fixture.signed_char_var = self.SIGNED_CHAR_LOWER
30203+
30204+ def test_signed_char_var_upper(self):
30205+ """ signed char instance variable upper bound. """
30206+
30207+ self.upper_fixture.signed_char_var = self.SIGNED_CHAR_UPPER
30208+
30209+ def test_short_get_lower(self):
30210+ """ short virtual result lower bound. """
30211+
30212+ self.assertEqual(self.lower_fixture.short_get(), self.SHORT_LOWER)
30213+
30214+ def test_short_get_upper(self):
30215+ """ short virtual result upper bound. """
30216+
30217+ self.assertEqual(self.upper_fixture.short_get(), self.SHORT_UPPER)
30218+
30219+ def test_short_set_lower(self):
30220+ """ short function argument lower bound. """
30221+
30222+ self.lower_fixture.short_set(self.SHORT_LOWER)
30223+
30224+ def test_short_set_upper(self):
30225+ """ short function argument upper bound. """
30226+
30227+ self.upper_fixture.short_set(self.SHORT_UPPER)
30228+
30229+ def test_short_var_lower(self):
30230+ """ short instance variable lower bound. """
30231+
30232+ self.lower_fixture.short_var = self.SHORT_LOWER
30233+
30234+ def test_short_var_upper(self):
30235+ """ short instance variable upper bound. """
30236+
30237+ self.upper_fixture.short_var = self.SHORT_UPPER
30238+
30239+ def test_int_get_lower(self):
30240+ """ int virtual result lower bound. """
30241+
30242+ self.assertEqual(self.lower_fixture.int_get(), self.INT_LOWER)
30243+
30244+ def test_int_get_upper(self):
30245+ """ int virtual result upper bound. """
30246+
30247+ self.assertEqual(self.upper_fixture.int_get(), self.INT_UPPER)
30248+
30249+ def test_int_set_lower(self):
30250+ """ int function argument lower bound. """
30251+
30252+ self.lower_fixture.int_set(self.INT_LOWER)
30253+
30254+ def test_int_set_upper(self):
30255+ """ int function argument upper bound. """
30256+
30257+ self.upper_fixture.int_set(self.INT_UPPER)
30258+
30259+ def test_int_var_lower(self):
30260+ """ int instance variable lower bound. """
30261+
30262+ self.lower_fixture.int_var = self.INT_LOWER
30263+
30264+ def test_int_var_upper(self):
30265+ """ int instance variable upper bound. """
30266+
30267+ self.upper_fixture.int_var = self.INT_UPPER
30268+
30269+ def test_long_get_lower(self):
30270+ """ long virtual result lower bound. """
30271+
30272+ self.assertEqual(self.lower_fixture.long_get(), self.LONG_LOWER)
30273+
30274+ def test_long_get_upper(self):
30275+ """ long virtual result upper bound. """
30276+
30277+ self.assertEqual(self.upper_fixture.long_get(), self.LONG_UPPER)
30278+
30279+ def test_long_set_lower(self):
30280+ """ long function argument lower bound. """
30281+
30282+ self.lower_fixture.long_set(self.LONG_LOWER)
30283+
30284+ def test_long_set_upper(self):
30285+ """ long function argument upper bound. """
30286+
30287+ self.upper_fixture.long_set(self.LONG_UPPER)
30288+
30289+ def test_long_var_lower(self):
30290+ """ long instance variable lower bound. """
30291+
30292+ self.lower_fixture.long_var = self.LONG_LOWER
30293+
30294+ def test_long_var_upper(self):
30295+ """ long instance variable upper bound. """
30296+
30297+ self.upper_fixture.long_var = self.LONG_UPPER
30298+
30299+ def test_long_long_get_lower(self):
30300+ """ long long virtual result lower bound. """
30301+
30302+ self.assertEqual(self.lower_fixture.long_long_get(),
30303+ self.LONG_LONG_LOWER)
30304+
30305+ def test_long_long_get_upper(self):
30306+ """ long long virtual result upper bound. """
30307+
30308+ self.assertEqual(self.upper_fixture.long_long_get(),
30309+ self.LONG_LONG_UPPER)
30310+
30311+ def test_long_long_set_lower(self):
30312+ """ long long function argument lower bound. """
30313+
30314+ self.lower_fixture.long_long_set(self.LONG_LONG_LOWER)
30315+
30316+ def test_long_long_set_upper(self):
30317+ """ long long function argument upper bound. """
30318+
30319+ self.upper_fixture.long_long_set(self.LONG_LONG_UPPER)
30320+
30321+ def test_long_long_var_lower(self):
30322+ """ long long instance variable lower bound. """
30323+
30324+ self.lower_fixture.long_long_var = self.LONG_LONG_LOWER
30325+
30326+ def test_long_long_var_upper(self):
30327+ """ long long instance variable upper bound. """
30328+
30329+ self.upper_fixture.long_long_var = self.LONG_LONG_UPPER
30330+
30331+ def test_unsigned_char_get_upper(self):
30332+ """ unsigned char virtual result upper bound. """
30333+
30334+ self.assertEqual(self.upper_fixture.unsigned_char_get(),
30335+ self.UNSIGNED_CHAR_UPPER)
30336+
30337+ def test_unsigned_char_set_upper(self):
30338+ """ unsigned char function argument upper bound. """
30339+
30340+ self.upper_fixture.unsigned_char_set(self.UNSIGNED_CHAR_UPPER)
30341+
30342+ def test_unsigned_char_var_upper(self):
30343+ """ unsigned char instance variable upper bound. """
30344+
30345+ self.upper_fixture.unsigned_char_var = self.UNSIGNED_CHAR_UPPER
30346+
30347+ def test_unsigned_short_get_upper(self):
30348+ """ unsigned short virtual result upper bound. """
30349+
30350+ self.assertEqual(self.upper_fixture.unsigned_short_get(),
30351+ self.UNSIGNED_SHORT_UPPER)
30352+
30353+ def test_unsigned_short_set_upper(self):
30354+ """ unsigned short function argument upper bound. """
30355+
30356+ self.upper_fixture.unsigned_short_set(self.UNSIGNED_SHORT_UPPER)
30357+
30358+ def test_unsigned_short_var_upper(self):
30359+ """ unsigned short instance variable upper bound. """
30360+
30361+ self.upper_fixture.unsigned_short_var = self.UNSIGNED_SHORT_UPPER
30362+
30363+ def test_unsigned_int_get_upper(self):
30364+ """ unsigned int virtual result upper bound. """
30365+
30366+ self.assertEqual(self.upper_fixture.unsigned_int_get(),
30367+ self.UNSIGNED_INT_UPPER)
30368+
30369+ def test_unsigned_int_set_upper(self):
30370+ """ unsigned int function argument upper bound. """
30371+
30372+ self.upper_fixture.unsigned_int_set(self.UNSIGNED_INT_UPPER)
30373+
30374+ def test_unsigned_int_var_upper(self):
30375+ """ unsigned int instance variable upper bound. """
30376+
30377+ self.upper_fixture.unsigned_int_var = self.UNSIGNED_INT_UPPER
30378+
30379+ def test_unsigned_long_get_upper(self):
30380+ """ unsigned long virtual result upper bound. """
30381+
30382+ self.assertEqual(self.upper_fixture.unsigned_long_get(),
30383+ self.UNSIGNED_LONG_UPPER)
30384+
30385+ def test_unsigned_long_set_upper(self):
30386+ """ unsigned long function argument upper bound. """
30387+
30388+ self.upper_fixture.unsigned_long_set(self.UNSIGNED_LONG_UPPER)
30389+
30390+ def test_unsigned_long_var_upper(self):
30391+ """ unsigned long instance variable upper bound. """
30392+
30393+ self.upper_fixture.unsigned_long_var = self.UNSIGNED_LONG_UPPER
30394+
30395+ def test_unsigned_long_long_get_upper(self):
30396+ """ unsigned long long virtual result upper bound. """
30397+
30398+ self.assertEqual(self.upper_fixture.unsigned_long_long_get(),
30399+ self.UNSIGNED_LONG_LONG_UPPER)
30400+
30401+ def test_unsigned_long_long_set_upper(self):
30402+ """ unsigned long long function argument upper bound. """
30403+
30404+ self.upper_fixture.unsigned_long_long_set(
30405+ self.UNSIGNED_LONG_LONG_UPPER)
30406+
30407+ def test_unsigned_long_long_var_upper(self):
30408+ """ unsigned long long instance variable upper bound. """
30409+
30410+ self.upper_fixture.unsigned_long_long_var = self.UNSIGNED_LONG_LONG_UPPER
30411+
30412+
30413+class TestNoOverflowChecking(TestIntConvertors):
30414+ """ This tests the integer convertors with overflowing values with overflow
30415+ checking disabled.
30416+ """
30417+
30418+ @staticmethod
30419+ def _long_long_is_long():
30420+ """ Return True if (unsigned) long long is the same size as (unsigned)
30421+ long.
30422+ """
30423+
30424+ return Test.long_long_sizeof() == Test.long_sizeof()
30425+
30426+ def setUp(self):
30427+ """ Set up a test. """
30428+
30429+ self.lower_fixture = OverflowLowerFixture(self)
30430+ self.upper_fixture = OverflowUpperFixture(self)
30431+
30432+ self.was_enabled = enableoverflowchecking(False)
30433+
30434+ def tearDown(self):
30435+ """ Tidy up after a test. """
30436+
30437+ enableoverflowchecking(self.was_enabled)
30438+
30439+ del self.lower_fixture
30440+ del self.upper_fixture
30441+
30442+ def test_char_get_lower(self):
30443+ """ char virtual result lower bound. """
30444+
30445+ install_hook()
30446+ self.lower_fixture.char_get()
30447+ uninstall_hook()
30448+
30449+ def test_char_get_upper(self):
30450+ """ char virtual result upper bound. """
30451+
30452+ install_hook()
30453+ self.upper_fixture.char_get()
30454+ uninstall_hook()
30455+
30456+ def test_char_set_lower(self):
30457+ """ char function argument lower bound. """
30458+
30459+ self.lower_fixture.char_set(self.CHAR_LOWER - 1)
30460+
30461+ def test_char_set_upper(self):
30462+ """ char function argument upper bound. """
30463+
30464+ self.upper_fixture.char_set(self.CHAR_UPPER + 1)
30465+
30466+ def test_char_var_lower(self):
30467+ """ char instance variable lower bound. """
30468+
30469+ self.lower_fixture.char_var = self.CHAR_LOWER - 1
30470+
30471+ def test_char_var_upper(self):
30472+ """ char instance variable upper bound. """
30473+
30474+ self.upper_fixture.char_var = self.CHAR_UPPER + 1
30475+
30476+ def test_signed_char_get_lower(self):
30477+ """ signed char virtual result lower bound. """
30478+
30479+ install_hook()
30480+ self.lower_fixture.signed_char_get()
30481+ uninstall_hook()
30482+
30483+ def test_signed_char_get_upper(self):
30484+ """ signed char virtual result upper bound. """
30485+
30486+ install_hook()
30487+ self.upper_fixture.signed_char_get()
30488+ uninstall_hook()
30489+
30490+ def test_signed_char_set_lower(self):
30491+ """ signed char function argument lower bound. """
30492+
30493+ self.lower_fixture.signed_char_set(self.SIGNED_CHAR_LOWER - 1)
30494+
30495+ def test_signed_char_set_upper(self):
30496+ """ signed char function argument upper bound. """
30497+
30498+ self.upper_fixture.signed_char_set(self.SIGNED_CHAR_UPPER + 1)
30499+
30500+ def test_signed_char_var_lower(self):
30501+ """ signed char instance variable lower bound. """
30502+
30503+ self.lower_fixture.signed_char_var = self.SIGNED_CHAR_LOWER - 1
30504+
30505+ def test_signed_char_var_upper(self):
30506+ """ signed char instance variable upper bound. """
30507+
30508+ self.upper_fixture.signed_char_var = self.SIGNED_CHAR_UPPER + 1
30509+
30510+ def test_short_get_lower(self):
30511+ """ short virtual result lower bound. """
30512+
30513+ install_hook()
30514+ self.lower_fixture.short_get()
30515+ uninstall_hook()
30516+
30517+ def test_short_get_upper(self):
30518+ """ short virtual result upper bound. """
30519+
30520+ install_hook()
30521+ self.upper_fixture.short_get()
30522+ uninstall_hook()
30523+
30524+ def test_short_set_lower(self):
30525+ """ short function argument lower bound. """
30526+
30527+ self.lower_fixture.short_set(self.SHORT_LOWER - 1)
30528+
30529+ def test_short_set_upper(self):
30530+ """ short function argument upper bound. """
30531+
30532+ self.upper_fixture.short_set(self.SHORT_UPPER + 1)
30533+
30534+ def test_short_var_lower(self):
30535+ """ short instance variable lower bound. """
30536+
30537+ self.lower_fixture.short_var = self.SHORT_LOWER - 1
30538+
30539+ def test_short_var_upper(self):
30540+ """ short instance variable upper bound. """
30541+
30542+ self.upper_fixture.short_var = self.SHORT_UPPER + 1
30543+
30544+ def test_int_get_lower(self):
30545+ """ int virtual result lower bound. """
30546+
30547+ install_hook()
30548+ self.lower_fixture.int_get()
30549+ uninstall_hook()
30550+
30551+ def test_int_get_upper(self):
30552+ """ int virtual result upper bound. """
30553+
30554+ install_hook()
30555+ self.upper_fixture.int_get()
30556+ uninstall_hook()
30557+
30558+ def test_int_set_lower(self):
30559+ """ int function argument lower bound. """
30560+
30561+ self.lower_fixture.int_set(self.INT_LOWER - 1)
30562+
30563+ def test_int_set_upper(self):
30564+ """ int function argument upper bound. """
30565+
30566+ self.upper_fixture.int_set(self.INT_UPPER + 1)
30567+
30568+ def test_int_var_lower(self):
30569+ """ int instance variable lower bound. """
30570+
30571+ self.lower_fixture.int_var = self.INT_LOWER - 1
30572+
30573+ def test_int_var_upper(self):
30574+ """ int instance variable upper bound. """
30575+
30576+ self.upper_fixture.int_var = self.INT_UPPER + 1
30577+
30578+ def test_long_get_lower(self):
30579+ """ long virtual result lower bound. """
30580+
30581+ install_hook()
30582+ self.lower_fixture.long_get()
30583+
30584+ if self._long_long_is_long():
30585+ # To maintain compatibility with older versions of SIP this
30586+ # overflows even with overflow checking disabled.
30587+ with self.assertRaises(OverflowError):
30588+ uninstall_hook()
30589+ else:
30590+ uninstall_hook()
30591+
30592+ def test_long_get_upper(self):
30593+ """ long virtual result upper bound. """
30594+
30595+ install_hook()
30596+ self.upper_fixture.long_get()
30597+
30598+ if self._long_long_is_long():
30599+ # To maintain compatibility with older versions of SIP this
30600+ # overflows even with overflow checking disabled.
30601+ with self.assertRaises(OverflowError):
30602+ uninstall_hook()
30603+ else:
30604+ uninstall_hook()
30605+
30606+ def test_long_set_lower(self):
30607+ """ long function argument lower bound. """
30608+
30609+ if self._long_long_is_long():
30610+ # To maintain compatibility with older versions of SIP this
30611+ # overflows even with overflow checking disabled.
30612+ with self.assertRaises(OverflowError):
30613+ self.lower_fixture.long_set(self.LONG_LOWER - 1)
30614+ else:
30615+ self.lower_fixture.long_set(self.LONG_LOWER - 1)
30616+
30617+ def test_long_set_upper(self):
30618+ """ long function argument upper bound. """
30619+
30620+ if self._long_long_is_long():
30621+ # To maintain compatibility with older versions of SIP this
30622+ # overflows even with overflow checking disabled.
30623+ with self.assertRaises(OverflowError):
30624+ self.upper_fixture.long_set(self.LONG_UPPER + 1)
30625+ else:
30626+ self.upper_fixture.long_set(self.LONG_UPPER + 1)
30627+
30628+ def test_long_var_lower(self):
30629+ """ long instance variable lower bound. """
30630+
30631+ if self._long_long_is_long():
30632+ # To maintain compatibility with older versions of SIP this
30633+ # overflows even with overflow checking disabled.
30634+ with self.assertRaises(OverflowError):
30635+ self.lower_fixture.long_var = self.LONG_LOWER - 1
30636+ else:
30637+ self.lower_fixture.long_var = self.LONG_LOWER - 1
30638+
30639+ def test_long_var_upper(self):
30640+ """ long instance variable upper bound. """
30641+
30642+ if self._long_long_is_long():
30643+ # To maintain compatibility with older versions of SIP this
30644+ # overflows even with overflow checking disabled.
30645+ with self.assertRaises(OverflowError):
30646+ self.upper_fixture.long_var = self.LONG_UPPER + 1
30647+ else:
30648+ self.upper_fixture.long_var = self.LONG_UPPER + 1
30649+
30650+ def test_long_long_get_lower(self):
30651+ """ long long virtual result lower bound. """
30652+
30653+ # To maintain compatibility with older versions of SIP this overflows
30654+ # even with overflow checking disabled.
30655+ with self.assertRaises(OverflowError):
30656+ install_hook()
30657+ self.lower_fixture.long_long_get()
30658+ uninstall_hook()
30659+
30660+ def test_long_long_get_upper(self):
30661+ """ long long virtual result upper bound. """
30662+
30663+ # To maintain compatibility with older versions of SIP this overflows
30664+ # even with overflow checking disabled.
30665+ with self.assertRaises(OverflowError):
30666+ install_hook()
30667+ self.upper_fixture.long_long_get()
30668+ uninstall_hook()
30669+
30670+ def test_long_long_set_lower(self):
30671+ """ long long function argument lower bound. """
30672+
30673+ # To maintain compatibility with older versions of SIP this overflows
30674+ # even with overflow checking disabled.
30675+ with self.assertRaises(OverflowError):
30676+ self.lower_fixture.long_long_set(self.LONG_LONG_LOWER - 1)
30677+
30678+ def test_long_long_set_upper(self):
30679+ """ long long function argument upper bound. """
30680+
30681+ # To maintain compatibility with older versions of SIP this overflows
30682+ # even with overflow checking disabled.
30683+ with self.assertRaises(OverflowError):
30684+ self.upper_fixture.long_long_set(self.LONG_LONG_UPPER + 1)
30685+
30686+ def test_long_long_var_lower(self):
30687+ """ long long instance variable lower bound. """
30688+
30689+ # To maintain compatibility with older versions of SIP this overflows
30690+ # even with overflow checking disabled.
30691+ with self.assertRaises(OverflowError):
30692+ self.lower_fixture.long_long_var = self.LONG_LONG_LOWER - 1
30693+
30694+ def test_long_long_var_upper(self):
30695+ """ long long instance variable upper bound. """
30696+
30697+ # To maintain compatibility with older versions of SIP this overflows
30698+ # even with overflow checking disabled.
30699+ with self.assertRaises(OverflowError):
30700+ self.upper_fixture.long_long_var = self.LONG_LONG_UPPER + 1
30701+
30702+ def test_unsigned_char_get_upper(self):
30703+ """ unsigned char virtual result upper bound. """
30704+
30705+ install_hook()
30706+ self.upper_fixture.unsigned_char_get()
30707+ uninstall_hook()
30708+
30709+ def test_unsigned_char_set_upper(self):
30710+ """ unsigned char function argument upper bound. """
30711+
30712+ self.upper_fixture.unsigned_char_set(self.UNSIGNED_CHAR_UPPER + 1)
30713+
30714+ def test_unsigned_char_var_upper(self):
30715+ """ unsigned char instance variable upper bound. """
30716+
30717+ self.upper_fixture.unsigned_char_var = self.UNSIGNED_CHAR_UPPER + 1
30718+
30719+ def test_unsigned_short_get_upper(self):
30720+ """ unsigned short virtual result upper bound. """
30721+
30722+ install_hook()
30723+ self.upper_fixture.unsigned_short_get()
30724+ uninstall_hook()
30725+
30726+ def test_unsigned_short_set_upper(self):
30727+ """ unsigned short function argument upper bound. """
30728+
30729+ self.upper_fixture.unsigned_short_set(self.UNSIGNED_SHORT_UPPER + 1)
30730+
30731+ def test_unsigned_short_var_upper(self):
30732+ """ unsigned short instance variable upper bound. """
30733+
30734+ self.upper_fixture.unsigned_short_var = self.UNSIGNED_SHORT_UPPER + 1
30735+
30736+ def test_unsigned_int_get_upper(self):
30737+ """ unsigned int virtual result upper bound. """
30738+
30739+ install_hook()
30740+ self.upper_fixture.unsigned_int_get()
30741+ uninstall_hook()
30742+
30743+ def test_unsigned_int_set_upper(self):
30744+ """ unsigned int function argument upper bound. """
30745+
30746+ self.upper_fixture.unsigned_int_set(self.UNSIGNED_INT_UPPER + 1)
30747+
30748+ def test_unsigned_int_var_upper(self):
30749+ """ unsigned int instance variable upper bound. """
30750+
30751+ self.upper_fixture.unsigned_int_var = self.UNSIGNED_INT_UPPER + 1
30752+
30753+ def test_unsigned_long_get_upper(self):
30754+ """ unsigned long virtual result upper bound. """
30755+
30756+ install_hook()
30757+ self.upper_fixture.unsigned_long_get()
30758+ uninstall_hook()
30759+
30760+ def test_unsigned_long_set_upper(self):
30761+ """ unsigned long function argument upper bound. """
30762+
30763+ self.upper_fixture.unsigned_long_set(self.UNSIGNED_LONG_UPPER + 1)
30764+
30765+ def test_unsigned_long_var_upper(self):
30766+ """ unsigned long instance variable upper bound. """
30767+
30768+ self.upper_fixture.unsigned_long_var = self.UNSIGNED_LONG_UPPER + 1
30769+
30770+ def test_unsigned_long_long_get_upper(self):
30771+ """ unsigned long long virtual result upper bound. """
30772+
30773+ install_hook()
30774+ self.upper_fixture.unsigned_long_long_get()
30775+ uninstall_hook()
30776+
30777+ def test_unsigned_long_long_set_upper(self):
30778+ """ unsigned long long function argument upper bound. """
30779+
30780+ self.upper_fixture.unsigned_long_long_set(
30781+ self.UNSIGNED_LONG_LONG_UPPER + 1)
30782+
30783+ def test_unsigned_long_long_var_upper(self):
30784+ """ unsigned long long instance variable upper bound. """
30785+
30786+ self.upper_fixture.unsigned_long_long_var = self.UNSIGNED_LONG_LONG_UPPER + 1
30787+
30788+
30789+class TestOverflowChecking(TestNoOverflowChecking):
30790+ """ This tests the integer convertors with overflowing values with overflow
30791+ checking enabled.
30792+ """
30793+
30794+ def setUp(self):
30795+ """ Set up a test. """
30796+
30797+ super().setUp()
30798+
30799+ enableoverflowchecking(True)
30800+
30801+ def test_char_get_lower(self):
30802+ """ char virtual result lower bound. """
30803+
30804+ with self.assertRaises(OverflowError):
30805+ super().test_char_get_lower()
30806+
30807+ def test_char_get_upper(self):
30808+ """ char virtual result upper bound. """
30809+
30810+ with self.assertRaises(OverflowError):
30811+ super().test_char_get_upper()
30812+
30813+ def test_char_set_lower(self):
30814+ """ char function argument lower bound. """
30815+
30816+ with self.assertRaises(OverflowError):
30817+ super().test_char_set_lower()
30818+
30819+ def test_char_set_upper(self):
30820+ """ char function argument upper bound. """
30821+
30822+ with self.assertRaises(OverflowError):
30823+ super().test_char_set_upper()
30824+
30825+ def test_char_var_lower(self):
30826+ """ char instance variable lower bound. """
30827+
30828+ with self.assertRaises(OverflowError):
30829+ super().test_char_var_lower()
30830+
30831+ def test_char_var_upper(self):
30832+ """ char instance variable upper bound. """
30833+
30834+ with self.assertRaises(OverflowError):
30835+ super().test_char_var_upper()
30836+
30837+ def test_signed_char_get_lower(self):
30838+ """ signed char virtual result lower bound. """
30839+
30840+ with self.assertRaises(OverflowError):
30841+ super().test_signed_char_get_lower()
30842+
30843+ def test_signed_char_get_upper(self):
30844+ """ signed char virtual result upper bound. """
30845+
30846+ with self.assertRaises(OverflowError):
30847+ super().test_signed_char_get_upper()
30848+
30849+ def test_signed_char_set_lower(self):
30850+ """ signed char function argument lower bound. """
30851+
30852+ with self.assertRaises(OverflowError):
30853+ super().test_signed_char_set_lower()
30854+
30855+ def test_signed_char_set_upper(self):
30856+ """ signed char function argument upper bound. """
30857+
30858+ with self.assertRaises(OverflowError):
30859+ super().test_signed_char_set_upper()
30860+
30861+ def test_signed_char_var_lower(self):
30862+ """ signed char instance variable lower bound. """
30863+
30864+ with self.assertRaises(OverflowError):
30865+ super().test_signed_char_var_lower()
30866+
30867+ def test_signed_char_var_upper(self):
30868+ """ signed char instance variable upper bound. """
30869+
30870+ with self.assertRaises(OverflowError):
30871+ super().test_signed_char_var_upper()
30872+
30873+ def test_short_get_lower(self):
30874+ """ short virtual result lower bound. """
30875+
30876+ with self.assertRaises(OverflowError):
30877+ super().test_short_get_lower()
30878+
30879+ def test_short_get_upper(self):
30880+ """ short virtual result upper bound. """
30881+
30882+ with self.assertRaises(OverflowError):
30883+ super().test_short_get_upper()
30884+
30885+ def test_short_set_lower(self):
30886+ """ short function argument lower bound. """
30887+
30888+ with self.assertRaises(OverflowError):
30889+ super().test_short_set_lower()
30890+
30891+ def test_short_set_upper(self):
30892+ """ short function argument upper bound. """
30893+
30894+ with self.assertRaises(OverflowError):
30895+ super().test_short_set_upper()
30896+
30897+ def test_short_var_lower(self):
30898+ """ short instance variable lower bound. """
30899+
30900+ with self.assertRaises(OverflowError):
30901+ super().test_short_var_lower()
30902+
30903+ def test_short_var_upper(self):
30904+ """ short instance variable upper bound. """
30905+
30906+ with self.assertRaises(OverflowError):
30907+ super().test_short_var_upper()
30908+
30909+ def test_int_get_lower(self):
30910+ """ int virtual result lower bound. """
30911+
30912+ with self.assertRaises(OverflowError):
30913+ super().test_int_get_lower()
30914+
30915+ def test_int_get_upper(self):
30916+ """ int virtual result upper bound. """
30917+
30918+ with self.assertRaises(OverflowError):
30919+ super().test_int_get_upper()
30920+
30921+ def test_int_set_lower(self):
30922+ """ int function argument lower bound. """
30923+
30924+ with self.assertRaises(OverflowError):
30925+ super().test_int_set_lower()
30926+
30927+ def test_int_set_upper(self):
30928+ """ int function argument upper bound. """
30929+
30930+ with self.assertRaises(OverflowError):
30931+ super().test_int_set_upper()
30932+
30933+ def test_int_var_lower(self):
30934+ """ int instance variable lower bound. """
30935+
30936+ with self.assertRaises(OverflowError):
30937+ super().test_int_var_lower()
30938+
30939+ def test_int_var_upper(self):
30940+ """ int instance variable upper bound. """
30941+
30942+ with self.assertRaises(OverflowError):
30943+ super().test_int_var_upper()
30944+
30945+ def test_long_get_lower(self):
30946+ """ long virtual result lower bound. """
30947+
30948+ with self.assertRaises(OverflowError):
30949+ install_hook()
30950+ self.lower_fixture.long_get()
30951+ uninstall_hook()
30952+
30953+ def test_long_get_upper(self):
30954+ """ long virtual result upper bound. """
30955+
30956+ with self.assertRaises(OverflowError):
30957+ install_hook()
30958+ self.upper_fixture.long_get()
30959+ uninstall_hook()
30960+
30961+ def test_long_set_lower(self):
30962+ """ long function argument lower bound. """
30963+
30964+ with self.assertRaises(OverflowError):
30965+ self.lower_fixture.long_set(self.LONG_LOWER - 1)
30966+
30967+ def test_long_set_upper(self):
30968+ """ long function argument upper bound. """
30969+
30970+ with self.assertRaises(OverflowError):
30971+ self.upper_fixture.long_set(self.LONG_UPPER + 1)
30972+
30973+ def test_long_var_lower(self):
30974+ """ long instance variable lower bound. """
30975+
30976+ with self.assertRaises(OverflowError):
30977+ self.lower_fixture.long_var = self.LONG_LOWER - 1
30978+
30979+ def test_long_var_upper(self):
30980+ """ long instance variable upper bound. """
30981+
30982+ with self.assertRaises(OverflowError):
30983+ self.upper_fixture.long_var = self.LONG_UPPER + 1
30984+
30985+ def test_long_long_get_lower(self):
30986+ """ long long virtual result lower bound. """
30987+
30988+ super().test_long_long_get_lower()
30989+
30990+ def test_long_long_get_upper(self):
30991+ """ long long virtual result upper bound. """
30992+
30993+ super().test_long_long_get_upper()
30994+
30995+ def test_long_long_set_lower(self):
30996+ """ long long function argument lower bound. """
30997+
30998+ super().test_long_long_set_lower()
30999+
31000+ def test_long_long_set_upper(self):
31001+ """ long long function argument upper bound. """
31002+
31003+ super().test_long_long_set_upper()
31004+
31005+ def test_long_long_var_lower(self):
31006+ """ long long instance variable lower bound. """
31007+
31008+ super().test_long_long_var_lower()
31009+
31010+ def test_long_long_var_upper(self):
31011+ """ long long instance variable upper bound. """
31012+
31013+ super().test_long_long_var_upper()
31014+
31015+ def test_unsigned_char_get_upper(self):
31016+ """ unsigned char virtual result upper bound. """
31017+
31018+ with self.assertRaises(OverflowError):
31019+ super().test_unsigned_char_get_upper()
31020+
31021+ def test_unsigned_char_set_upper(self):
31022+ """ unsigned char function argument upper bound. """
31023+
31024+ with self.assertRaises(OverflowError):
31025+ super().test_unsigned_char_set_upper()
31026+
31027+ def test_unsigned_char_var_upper(self):
31028+ """ unsigned char instance variable upper bound. """
31029+
31030+ with self.assertRaises(OverflowError):
31031+ super().test_unsigned_char_var_upper()
31032+
31033+ def test_unsigned_short_get_upper(self):
31034+ """ unsigned short virtual result upper bound. """
31035+
31036+ with self.assertRaises(OverflowError):
31037+ super().test_unsigned_short_get_upper()
31038+
31039+ def test_unsigned_short_set_upper(self):
31040+ """ unsigned short function argument upper bound. """
31041+
31042+ with self.assertRaises(OverflowError):
31043+ super().test_unsigned_short_set_upper()
31044+
31045+ def test_unsigned_short_var_upper(self):
31046+ """ unsigned short instance variable upper bound. """
31047+
31048+ with self.assertRaises(OverflowError):
31049+ super().test_unsigned_short_var_upper()
31050+
31051+ def test_unsigned_int_get_upper(self):
31052+ """ unsigned int virtual result upper bound. """
31053+
31054+ with self.assertRaises(OverflowError):
31055+ super().test_unsigned_int_get_upper()
31056+
31057+ def test_unsigned_int_set_upper(self):
31058+ """ unsigned int function argument upper bound. """
31059+
31060+ with self.assertRaises(OverflowError):
31061+ super().test_unsigned_int_set_upper()
31062+
31063+ def test_unsigned_int_var_upper(self):
31064+ """ unsigned int instance variable upper bound. """
31065+
31066+ with self.assertRaises(OverflowError):
31067+ super().test_unsigned_int_var_upper()
31068+
31069+ def test_unsigned_long_get_upper(self):
31070+ """ unsigned long virtual result upper bound. """
31071+
31072+ with self.assertRaises(OverflowError):
31073+ super().test_unsigned_long_get_upper()
31074+
31075+ def test_unsigned_long_set_upper(self):
31076+ """ unsigned long function argument upper bound. """
31077+
31078+ with self.assertRaises(OverflowError):
31079+ super().test_unsigned_long_set_upper()
31080+
31081+ def test_unsigned_long_var_upper(self):
31082+ """ unsigned long instance variable upper bound. """
31083+
31084+ with self.assertRaises(OverflowError):
31085+ super().test_unsigned_long_var_upper()
31086+
31087+ def test_unsigned_long_long_get_upper(self):
31088+ """ unsigned long long virtual result upper bound. """
31089+
31090+ with self.assertRaises(OverflowError):
31091+ super().test_unsigned_long_long_get_upper()
31092+
31093+ def test_unsigned_long_long_set_upper(self):
31094+ """ unsigned long long function argument upper bound. """
31095+
31096+ with self.assertRaises(OverflowError):
31097+ super().test_unsigned_long_long_set_upper()
31098+
31099+ def test_unsigned_long_long_var_upper(self):
31100+ """ unsigned long long instance variable upper bound. """
31101+
31102+ with self.assertRaises(OverflowError):
31103+ super().test_unsigned_long_long_var_upper()
31104+
31105+
31106+if __name__ == '__main__':
31107+ unittest.main()
31108diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/test.h sip/test/int_convertors/test.h
31109--- ./sip-4.19.12.orig/test/int_convertors/test.h 1969-12-31 19:00:00.000000000 -0500
31110+++ sip/test/int_convertors/test.h 2018-09-18 17:52:23.315543462 -0400
31111@@ -0,0 +1,110 @@
31112+#if !defined(_TEST_H)
31113+#define _TEST_H
31114+
31115+#include <limits.h>
31116+
31117+
31118+class Test
31119+{
31120+public:
31121+ enum class Scoped {
31122+ scoped = 10
31123+ };
31124+ Scoped scoped_get() {return scoped_virt();}
31125+ virtual Scoped scoped_virt() {return Scoped::scoped;}
31126+ static void scoped_set(Scoped) {}
31127+ Scoped scoped_var;
31128+
31129+ enum Named {
31130+ named = 10
31131+ };
31132+ Named named_get() {return named_virt();}
31133+ virtual Named named_virt() {return named;}
31134+ static void named_set(Named) {}
31135+ Named named_var;
31136+
31137+ enum Named2 {
31138+ named2 = 10
31139+ };
31140+ void named_overload_set(Named2) {named_overload = false;}
31141+ void named_overload_set(Named) {named_overload = true;}
31142+ bool named_overload;
31143+
31144+ bool bool_get() {return bool_virt();}
31145+ virtual bool bool_virt() {return false;}
31146+ static void bool_set(bool) {}
31147+ bool bool_var;
31148+
31149+ static int char_lower() {return CHAR_MIN;}
31150+ static int char_upper() {return CHAR_MAX;}
31151+ char char_get() {return char_virt();}
31152+ virtual char char_virt() {return 0;}
31153+ static void char_set(char) {}
31154+ char char_var;
31155+
31156+ static unsigned signed_char_sizeof() {return sizeof (signed char);}
31157+ signed char signed_char_get() {return signed_char_virt();}
31158+ virtual signed char signed_char_virt() {return 0;}
31159+ static void signed_char_set(signed char) {}
31160+ signed char signed_char_var;
31161+
31162+ static unsigned short_sizeof() {return sizeof (short);}
31163+ short short_get() {return short_virt();}
31164+ virtual short short_virt() {return 0;}
31165+ static void short_set(short) {}
31166+ short short_var;
31167+
31168+ static unsigned int_sizeof() {return sizeof (int);}
31169+ int int_get() {return int_virt();}
31170+ virtual int int_virt() {return 0;}
31171+ static void int_set(int) {}
31172+ int int_var;
31173+
31174+ static unsigned long_sizeof() {return sizeof (long);}
31175+ long long_get() {return long_virt();}
31176+ virtual long long_virt() {return 0;}
31177+ static void long_set(long) {}
31178+ long long_var;
31179+
31180+ static unsigned long_long_sizeof() {return sizeof (long long);}
31181+ long long long_long_get() {return long_long_virt();}
31182+ virtual long long long_long_virt() {return 0;}
31183+ static void long_long_set(long long) {}
31184+ long long long_long_var;
31185+
31186+ static unsigned unsigned_char_sizeof() {return sizeof (unsigned char);}
31187+ unsigned char unsigned_char_get() {return unsigned_char_virt();}
31188+ virtual unsigned char unsigned_char_virt() {return 0;}
31189+ static void unsigned_char_set(unsigned char) {}
31190+ unsigned char unsigned_char_var;
31191+
31192+ static unsigned unsigned_short_sizeof() {return sizeof (unsigned short);}
31193+ unsigned short unsigned_short_get() {return unsigned_short_virt();}
31194+ virtual unsigned short unsigned_short_virt() {return 0;}
31195+ static void unsigned_short_set(unsigned short) {}
31196+ unsigned short unsigned_short_var;
31197+
31198+ static unsigned unsigned_int_sizeof() {return sizeof (unsigned int);}
31199+ unsigned int unsigned_int_get() {return unsigned_int_virt();}
31200+ virtual unsigned int unsigned_int_virt() {return 0;}
31201+ static void unsigned_int_set(unsigned int) {}
31202+ unsigned int unsigned_int_var;
31203+
31204+ static unsigned unsigned_long_sizeof() {return sizeof (unsigned long);}
31205+ unsigned long unsigned_long_get() {return unsigned_long_virt();}
31206+ virtual unsigned long unsigned_long_virt() {return 0;}
31207+ static void unsigned_long_set(unsigned long) {}
31208+ unsigned long unsigned_long_var;
31209+
31210+ static unsigned unsigned_long_long_sizeof() {
31211+ return sizeof (unsigned long long);
31212+ }
31213+ unsigned long long unsigned_long_long_get() {
31214+ return unsigned_long_long_virt();
31215+ }
31216+ virtual unsigned long long unsigned_long_long_virt() {return 0;}
31217+ static void unsigned_long_long_set(unsigned long long) {}
31218+ unsigned long long unsigned_long_long_var;
31219+};
31220+
31221+#endif
31222diff -Nurd '--exclude=doc' '--exclude=.hg*' ./sip-4.19.12.orig/test/int_convertors/test.sip sip/test/int_convertors/test.sip
31223--- ./sip-4.19.12.orig/test/int_convertors/test.sip 1969-12-31 19:00:00.000000000 -0500
31224+++ sip/test/int_convertors/test.sip 2018-09-18 17:52:23.315543462 -0400
31225@@ -0,0 +1,106 @@
31226+%Module(name=test)
31227+
31228+//%Import QtCore/QtCoremod.sip
31229+
31230+class Test
31231+{
31232+%TypeHeaderCode
31233+#include "test.h"
31234+%End
31235+
31236+public:
31237+ enum class Scoped {
31238+ scoped
31239+ };
31240+ Scoped scoped_get();
31241+ virtual Scoped scoped_virt();
31242+ static void scoped_set(Scoped);
31243+ Scoped scoped_var;
31244+
31245+ enum Named {
31246+ named
31247+ };
31248+ Named named_get();
31249+ virtual Named named_virt();
31250+ static void named_set(Named);
31251+ Named named_var;
31252+
31253+ enum Named2 {
31254+ named2 = 10
31255+ };
31256+ void named_overload_set(Named2);
31257+ void named_overload_set(Named);
31258+ bool named_overload;
31259+
31260+ bool bool_get();
31261+ virtual bool bool_virt();
31262+ static void bool_set(bool);
31263+ bool bool_var;
31264+
31265+ static int char_lower();
31266+ static int char_upper();
31267+ char char_get() /PyInt/;
31268+ virtual char char_virt() /PyInt/;
31269+ static void char_set(char /PyInt/);
31270+ char char_var /PyInt/;
31271+
31272+ static unsigned signed_char_sizeof();
31273+ signed char signed_char_get() /PyInt/;
31274+ virtual signed char signed_char_virt() /PyInt/;
31275+ static void signed_char_set(signed char /PyInt/);
31276+ signed char signed_char_var /PyInt/;
31277+
31278+ static unsigned short_sizeof();
31279+ short short_get();
31280+ virtual short short_virt();
31281+ static void short_set(short);
31282+ short short_var;
31283+
31284+ static unsigned int_sizeof();
31285+ int int_get();
31286+ virtual int int_virt();
31287+ static void int_set(int);
31288+ int int_var;
31289+
31290+ static unsigned long_sizeof();
31291+ long long_get();
31292+ virtual long long_virt();
31293+ static void long_set(long);
31294+ long long_var;
31295+
31296+ static unsigned long_long_sizeof();
31297+ long long long_long_get();
31298+ virtual long long long_long_virt();
31299+ static void long_long_set(long long);
31300+ long long long_long_var;
31301+
31302+ static unsigned unsigned_char_sizeof();
31303+ unsigned char unsigned_char_get() /PyInt/;
31304+ virtual unsigned char unsigned_char_virt() /PyInt/;
31305+ static void unsigned_char_set(unsigned char /PyInt/);
31306+ unsigned char unsigned_char_var /PyInt/;
31307+
31308+ static unsigned unsigned_short_sizeof();
31309+ unsigned short unsigned_short_get();
31310+ virtual unsigned short unsigned_short_virt();
31311+ static void unsigned_short_set(unsigned short);
31312+ unsigned short unsigned_short_var;
31313+
31314+ static unsigned unsigned_int_sizeof();
31315+ unsigned int unsigned_int_get();
31316+ virtual unsigned int unsigned_int_virt();
31317+ static void unsigned_int_set(unsigned int);
31318+ unsigned int unsigned_int_var;
31319+
31320+ static unsigned unsigned_long_sizeof();
31321+ unsigned long unsigned_long_get();
31322+ virtual unsigned long unsigned_long_virt();
31323+ static void unsigned_long_set(unsigned long);
31324+ unsigned long unsigned_long_var;
31325+
31326+ static unsigned unsigned_long_long_sizeof();
31327+ unsigned long long unsigned_long_long_get();
31328+ virtual unsigned long long unsigned_long_long_virt();
31329+ static void unsigned_long_long_set(unsigned long long);
31330+ unsigned long long unsigned_long_long_var;
31331+};