gobject-introspection 2.0.2-x86-mingw32 → 2.0.3-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Rakefile +5 -2
- data/ext/gobject-introspection/rb-gi-argument.c +215 -4
- data/ext/gobject-introspection/rb-gi-loader.c +7 -2
- data/ext/gobject-introspection/rb-gi-struct-info.c +1 -1
- data/lib/1.9/gobject_introspection.so +0 -0
- data/lib/2.0/gobject_introspection.so +0 -0
- data/test/test-function-info.rb +3 -1
- data/vendor/local/bin/g-ir-compiler.exe +0 -0
- data/vendor/local/bin/g-ir-generate.exe +0 -0
- data/vendor/local/bin/libgirepository-1.0-1.dll +0 -0
- data/vendor/local/lib/girepository-1.0/DBus-1.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/DBusGLib-1.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GIRepository-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GModule-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GObject-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/Gio-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/win32-1.0.typelib +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.py +1 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.py +52 -47
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ast.py +48 -42
- data/vendor/local/lib/gobject-introspection/giscanner/ast.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.py +11 -10
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.py +7 -5
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.py +22 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.py +120 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docmain.py +14 -2
- data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.py +19 -10
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.py +18 -11
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.py +10 -13
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.py +24 -30
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.py +11 -12
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.py +25 -21
- data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.py +1 -1
- data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.py +98 -100
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/message.py +10 -8
- data/vendor/local/lib/gobject-introspection/giscanner/message.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/message.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.py +28 -16
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.py +83 -9
- data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.py +5 -1
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.py +20 -21
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.py +3 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.py +32 -41
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/utils.py +9 -0
- data/vendor/local/lib/gobject-introspection/giscanner/utils.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/utils.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.py +9 -11
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyo +0 -0
- data/vendor/local/lib/libgirepository-1.0.a +0 -0
- data/vendor/local/lib/libgirepository-1.0.dll.a +0 -0
- data/vendor/local/lib/libgirepository-1.0.la +1 -1
- data/vendor/local/lib/pkgconfig/gobject-introspection-1.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc +1 -1
- data/vendor/local/share/gir-1.0/GIRepository-2.0.gir +691 -691
- data/vendor/local/share/gir-1.0/GLib-2.0.gir +6972 -6467
- data/vendor/local/share/gir-1.0/GModule-2.0.gir +103 -4
- data/vendor/local/share/gir-1.0/GObject-2.0.gir +2085 -1955
- data/vendor/local/share/gir-1.0/Gio-2.0.gir +10955 -9269
- data/vendor/local/share/gir-1.0/win32-1.0.gir +19 -0
- data/vendor/local/share/gobject-introspection-1.0/Makefile.introspection +2 -2
- data/vendor/local/share/gobject-introspection-1.0/gdump.c +7 -2
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.c +15 -15
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.h +1 -1
- data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c +14 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h +2 -2
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.c +8 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.h +9 -0
- metadata +20 -21
- data/vendor/local/lib/gobject-introspection/giscanner/odict.py +0 -50
- data/vendor/local/lib/gobject-introspection/giscanner/odict.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/odict.pyo +0 -0
@@ -26,7 +26,7 @@
|
|
26
26
|
import re
|
27
27
|
|
28
28
|
from . import message
|
29
|
-
from .
|
29
|
+
from .collections import OrderedDict
|
30
30
|
|
31
31
|
|
32
32
|
# GTK-Doc comment block parts
|
@@ -141,7 +141,8 @@ OPT_TRANSFER_FLOATING = 'floating'
|
|
141
141
|
# Program matching the start of a comment block.
|
142
142
|
#
|
143
143
|
# Results in 0 symbolic groups.
|
144
|
-
COMMENT_START_RE = re.compile(
|
144
|
+
COMMENT_START_RE = re.compile(
|
145
|
+
r'''
|
145
146
|
^ # start
|
146
147
|
[^\S\n\r]* # 0 or more whitespace characters
|
147
148
|
/ # 1 forward slash character
|
@@ -157,7 +158,8 @@ COMMENT_START_RE = re.compile(r'''
|
|
157
158
|
#
|
158
159
|
# Results in 1 symbolic group:
|
159
160
|
# - group 1 = description
|
160
|
-
COMMENT_END_RE = re.compile(
|
161
|
+
COMMENT_END_RE = re.compile(
|
162
|
+
r'''
|
161
163
|
^ # start
|
162
164
|
[^\S\n\r]* # 0 or more whitespace characters
|
163
165
|
(?P<description>.*?) # description text
|
@@ -173,7 +175,8 @@ COMMENT_END_RE = re.compile(r'''
|
|
173
175
|
# line inside a comment block.
|
174
176
|
#
|
175
177
|
# Results in 0 symbolic groups.
|
176
|
-
COMMENT_ASTERISK_RE = re.compile(
|
178
|
+
COMMENT_ASTERISK_RE = re.compile(
|
179
|
+
r'''
|
177
180
|
^ # start
|
178
181
|
[^\S\n\r]* # 0 or more whitespace characters
|
179
182
|
\* # 1 asterisk character
|
@@ -189,7 +192,8 @@ COMMENT_ASTERISK_RE = re.compile(r'''
|
|
189
192
|
#
|
190
193
|
# Results in 1 symbolic group:
|
191
194
|
# - group 1 = indentation
|
192
|
-
COMMENT_INDENTATION_RE = re.compile(
|
195
|
+
COMMENT_INDENTATION_RE = re.compile(
|
196
|
+
r'''
|
193
197
|
^
|
194
198
|
(?P<indentation>[^\S\n\r]*) # 0 or more whitespace characters
|
195
199
|
.*
|
@@ -200,7 +204,8 @@ COMMENT_INDENTATION_RE = re.compile(r'''
|
|
200
204
|
# Program matching an empty line.
|
201
205
|
#
|
202
206
|
# Results in 0 symbolic groups.
|
203
|
-
EMPTY_LINE_RE = re.compile(
|
207
|
+
EMPTY_LINE_RE = re.compile(
|
208
|
+
r'''
|
204
209
|
^ # start
|
205
210
|
[^\S\n\r]* # 0 or more whitespace characters
|
206
211
|
$ # end
|
@@ -212,7 +217,8 @@ EMPTY_LINE_RE = re.compile(r'''
|
|
212
217
|
# Results in 2 symbolic groups:
|
213
218
|
# - group 1 = colon
|
214
219
|
# - group 2 = section_name
|
215
|
-
SECTION_RE = re.compile(
|
220
|
+
SECTION_RE = re.compile(
|
221
|
+
r'''
|
216
222
|
^ # start
|
217
223
|
[^\S\n\r]* # 0 or more whitespace characters
|
218
224
|
SECTION # SECTION
|
@@ -231,7 +237,8 @@ SECTION_RE = re.compile(r'''
|
|
231
237
|
# - group 1 = symbol_name
|
232
238
|
# - group 2 = colon
|
233
239
|
# - group 3 = annotations
|
234
|
-
SYMBOL_RE = re.compile(
|
240
|
+
SYMBOL_RE = re.compile(
|
241
|
+
r'''
|
235
242
|
^ # start
|
236
243
|
[^\S\n\r]* # 0 or more whitespace characters
|
237
244
|
(?P<symbol_name>[\w-]*\w) # symbol name
|
@@ -251,7 +258,8 @@ SYMBOL_RE = re.compile(r'''
|
|
251
258
|
# - group 2 = property_name
|
252
259
|
# - group 3 = colon
|
253
260
|
# - group 4 = annotations
|
254
|
-
PROPERTY_RE = re.compile(
|
261
|
+
PROPERTY_RE = re.compile(
|
262
|
+
r'''
|
255
263
|
^ # start
|
256
264
|
[^\S\n\r]* # 0 or more whitespace characters
|
257
265
|
(?P<class_name>[\w]+) # class name
|
@@ -275,7 +283,8 @@ PROPERTY_RE = re.compile(r'''
|
|
275
283
|
# - group 2 = signal_name
|
276
284
|
# - group 3 = colon
|
277
285
|
# - group 4 = annotations
|
278
|
-
SIGNAL_RE = re.compile(
|
286
|
+
SIGNAL_RE = re.compile(
|
287
|
+
r'''
|
279
288
|
^ # start
|
280
289
|
[^\S\n\r]* # 0 or more whitespace characters
|
281
290
|
(?P<class_name>[\w]+) # class name
|
@@ -299,7 +308,8 @@ SIGNAL_RE = re.compile(r'''
|
|
299
308
|
# - group 2 = annotations
|
300
309
|
# - group 3 = colon
|
301
310
|
# - group 4 = description
|
302
|
-
PARAMETER_RE = re.compile(
|
311
|
+
PARAMETER_RE = re.compile(
|
312
|
+
r'''
|
303
313
|
^ # start
|
304
314
|
[^\S\n\r]* # 0 or more whitespace characters
|
305
315
|
@ # @ character
|
@@ -324,7 +334,8 @@ PARAMETER_RE = re.compile(r'''
|
|
324
334
|
# - group 3 = colon
|
325
335
|
# - group 4 = description
|
326
336
|
_all_tags = '|'.join(_ALL_TAGS).replace(' ', '\\ ')
|
327
|
-
TAG_RE = re.compile(
|
337
|
+
TAG_RE = re.compile(
|
338
|
+
r'''
|
328
339
|
^ # start
|
329
340
|
[^\S\n\r]* # 0 or more whitespace characters
|
330
341
|
(?P<tag_name>''' + _all_tags + r''') # tag name
|
@@ -348,7 +359,8 @@ TAG_RE = re.compile(r'''
|
|
348
359
|
# - group 2 = annotations
|
349
360
|
# - group 3 = colon
|
350
361
|
# - group 4 = description
|
351
|
-
MULTILINE_ANNOTATION_CONTINUATION_RE = re.compile(
|
362
|
+
MULTILINE_ANNOTATION_CONTINUATION_RE = re.compile(
|
363
|
+
r'''
|
352
364
|
^ # start
|
353
365
|
[^\S\n\r]* # 0 or more whitespace characters
|
354
366
|
(?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
|
@@ -367,9 +379,9 @@ class DocBlock(object):
|
|
367
379
|
self.name = name
|
368
380
|
self.options = DocOptions()
|
369
381
|
self.value = None
|
370
|
-
self.tags =
|
382
|
+
self.tags = OrderedDict()
|
371
383
|
self.comment = None
|
372
|
-
self.params =
|
384
|
+
self.params = OrderedDict()
|
373
385
|
self.position = None
|
374
386
|
|
375
387
|
def __cmp__(self, other):
|
@@ -378,12 +390,6 @@ class DocBlock(object):
|
|
378
390
|
def __repr__(self):
|
379
391
|
return '<DocBlock %r %r>' % (self.name, self.options)
|
380
392
|
|
381
|
-
def get_tag(self, name):
|
382
|
-
return self.tags.get(name)
|
383
|
-
|
384
|
-
def get_param(self, name):
|
385
|
-
return self.params.get(name)
|
386
|
-
|
387
393
|
def to_gtk_doc(self):
|
388
394
|
options = ''
|
389
395
|
if self.options:
|
@@ -450,8 +456,8 @@ class DocTag(object):
|
|
450
456
|
s = 'one value'
|
451
457
|
else:
|
452
458
|
s = '%d values' % (n_params, )
|
453
|
-
if ((n_params > 0 and (value is None or value.length() != n_params))
|
454
|
-
|
459
|
+
if ((n_params > 0 and (value is None or value.length() != n_params))
|
460
|
+
or n_params == 0 and value is not None):
|
455
461
|
if value is None:
|
456
462
|
length = 0
|
457
463
|
else:
|
@@ -500,7 +506,7 @@ class DocTag(object):
|
|
500
506
|
if value is not None and value.length() > 1:
|
501
507
|
message.warn(
|
502
508
|
'closure takes at most 1 value, %d given' % (
|
503
|
-
value.length()), self.position)
|
509
|
+
value.length(), ), self.position)
|
504
510
|
|
505
511
|
def _validate_element_type(self, option, value):
|
506
512
|
self._validate_option(option, value, required=True)
|
@@ -512,7 +518,7 @@ class DocTag(object):
|
|
512
518
|
if value.length() > 2:
|
513
519
|
message.warn(
|
514
520
|
'element-type takes at most 2 values, %d given' % (
|
515
|
-
value.length()), self.position)
|
521
|
+
value.length(), ), self.position)
|
516
522
|
return
|
517
523
|
|
518
524
|
def _validate_out(self, option, value):
|
@@ -521,13 +527,13 @@ class DocTag(object):
|
|
521
527
|
if value.length() > 1:
|
522
528
|
message.warn(
|
523
529
|
'out annotation takes at most 1 value, %d given' % (
|
524
|
-
value.length()), self.position)
|
530
|
+
value.length(), ), self.position)
|
525
531
|
return
|
526
532
|
value_str = value.one()
|
527
533
|
if value_str not in [OPT_OUT_CALLEE_ALLOCATES,
|
528
534
|
OPT_OUT_CALLER_ALLOCATES]:
|
529
535
|
message.warn("out annotation value is invalid: %r" % (
|
530
|
-
value_str), self.position)
|
536
|
+
value_str, ), self.position)
|
531
537
|
return
|
532
538
|
|
533
539
|
def _get_gtk_doc_value(self):
|
@@ -655,7 +661,7 @@ class DocOption(object):
|
|
655
661
|
def __init__(self, tag, option):
|
656
662
|
self.tag = tag
|
657
663
|
self._array = []
|
658
|
-
self._dict =
|
664
|
+
self._dict = OrderedDict()
|
659
665
|
# (annotation option1=value1 option2=value2) etc
|
660
666
|
for p in option.split(' '):
|
661
667
|
if '=' in p:
|
@@ -783,7 +789,7 @@ class AnnotationParser(object):
|
|
783
789
|
# emit a warning.
|
784
790
|
if comment_block.name in comment_blocks:
|
785
791
|
message.warn("multiple comment blocks documenting '%s:' identifier." %
|
786
|
-
(comment_block.name),
|
792
|
+
(comment_block.name, ),
|
787
793
|
comment_block.position)
|
788
794
|
|
789
795
|
comment_blocks[comment_block.name] = comment_block
|
@@ -820,7 +826,7 @@ class AnnotationParser(object):
|
|
820
826
|
if description:
|
821
827
|
comment_lines[-1] = (line_offset, description)
|
822
828
|
position = message.Position(filename, lineno + line_offset)
|
823
|
-
marker = ' '*result.end('description') + '^'
|
829
|
+
marker = ' ' * result.end('description') + '^'
|
824
830
|
message.warn("Comments should end with */ on a new line:\n%s\n%s" %
|
825
831
|
(line, marker),
|
826
832
|
position)
|
@@ -892,14 +898,14 @@ class AnnotationParser(object):
|
|
892
898
|
result = SECTION_RE.match(line)
|
893
899
|
if result:
|
894
900
|
identifier = IDENTIFIER_SECTION
|
895
|
-
identifier_name = 'SECTION:%s' % (result.group('section_name'))
|
901
|
+
identifier_name = 'SECTION:%s' % (result.group('section_name'), )
|
896
902
|
column = result.start('section_name') + column_offset
|
897
903
|
|
898
904
|
if not identifier:
|
899
905
|
result = SYMBOL_RE.match(line)
|
900
906
|
if result:
|
901
907
|
identifier = IDENTIFIER_SYMBOL
|
902
|
-
identifier_name = '%s' % (result.group('symbol_name'))
|
908
|
+
identifier_name = '%s' % (result.group('symbol_name'), )
|
903
909
|
column = result.start('symbol_name') + column_offset
|
904
910
|
|
905
911
|
if not identifier:
|
@@ -928,7 +934,7 @@ class AnnotationParser(object):
|
|
928
934
|
if 'colon' in result.groupdict() and result.group('colon') != ':':
|
929
935
|
colon_start = result.start('colon')
|
930
936
|
colon_column = column_offset + colon_start
|
931
|
-
marker = ' '*colon_column + '^'
|
937
|
+
marker = ' ' * colon_column + '^'
|
932
938
|
message.warn("missing ':' at column %s:\n%s\n%s" %
|
933
939
|
(colon_column + 1, original_line, marker),
|
934
940
|
position)
|
@@ -948,7 +954,7 @@ class AnnotationParser(object):
|
|
948
954
|
# right thing to do because sooner or later some long
|
949
955
|
# descriptions will contain something matching an identifier
|
950
956
|
# pattern by accident.
|
951
|
-
marker = ' '*column_offset + '^'
|
957
|
+
marker = ' ' * column_offset + '^'
|
952
958
|
message.warn('ignoring unrecognized GTK-Doc comment block, identifier not '
|
953
959
|
'found:\n%s\n%s' % (original_line, marker),
|
954
960
|
position)
|
@@ -971,7 +977,7 @@ class AnnotationParser(object):
|
|
971
977
|
|
972
978
|
if in_part != PART_PARAMETERS:
|
973
979
|
column = result.start('parameter_name') + column_offset
|
974
|
-
marker = ' '*column + '^'
|
980
|
+
marker = ' ' * column + '^'
|
975
981
|
message.warn("'@%s' parameter unexpected at this location:\n%s\n%s" %
|
976
982
|
(param_name, original_line, marker),
|
977
983
|
position)
|
@@ -985,11 +991,11 @@ class AnnotationParser(object):
|
|
985
991
|
returns_seen = True
|
986
992
|
else:
|
987
993
|
message.warn("encountered multiple 'Returns' parameters or tags for "
|
988
|
-
"'%s'." % (comment_block.name),
|
994
|
+
"'%s'." % (comment_block.name, ),
|
989
995
|
position)
|
990
996
|
elif param_name in comment_block.params.keys():
|
991
997
|
column = result.start('parameter_name') + column_offset
|
992
|
-
marker = ' '*column + '^'
|
998
|
+
marker = ' ' * column + '^'
|
993
999
|
message.warn("multiple '@%s' parameters for identifier '%s':\n%s\n%s" %
|
994
1000
|
(param_name, comment_block.name, original_line, marker),
|
995
1001
|
position)
|
@@ -1013,8 +1019,7 @@ class AnnotationParser(object):
|
|
1013
1019
|
# identifier (when there are no parameters) and encounter an empty
|
1014
1020
|
# line, we must be parsing the comment block description.
|
1015
1021
|
####################################################################
|
1016
|
-
if (EMPTY_LINE_RE.match(line)
|
1017
|
-
and in_part in [PART_IDENTIFIER, PART_PARAMETERS]):
|
1022
|
+
if (EMPTY_LINE_RE.match(line) and in_part in [PART_IDENTIFIER, PART_PARAMETERS]):
|
1018
1023
|
in_part = PART_DESCRIPTION
|
1019
1024
|
part_indent = line_indent
|
1020
1025
|
continue
|
@@ -1028,7 +1033,7 @@ class AnnotationParser(object):
|
|
1028
1033
|
tag_annotations = result.group('annotations')
|
1029
1034
|
tag_description = result.group('description')
|
1030
1035
|
|
1031
|
-
marker = ' '*(result.start('tag_name') + column_offset) + '^'
|
1036
|
+
marker = ' ' * (result.start('tag_name') + column_offset) + '^'
|
1032
1037
|
|
1033
1038
|
# Deprecated GTK-Doc Description: tag
|
1034
1039
|
if tag_name.lower() == TAG_DESCRIPTION:
|
@@ -1053,7 +1058,7 @@ class AnnotationParser(object):
|
|
1053
1058
|
|
1054
1059
|
if in_part != PART_TAGS:
|
1055
1060
|
column = result.start('tag_name') + column_offset
|
1056
|
-
marker = ' '*column + '^'
|
1061
|
+
marker = ' ' * column + '^'
|
1057
1062
|
message.warn("'%s:' tag unexpected at this location:\n%s\n%s" %
|
1058
1063
|
(tag_name, original_line, marker),
|
1059
1064
|
position)
|
@@ -1063,7 +1068,7 @@ class AnnotationParser(object):
|
|
1063
1068
|
returns_seen = True
|
1064
1069
|
else:
|
1065
1070
|
message.warn("encountered multiple 'Returns' parameters or tags for "
|
1066
|
-
"'%s'." % (comment_block.name),
|
1071
|
+
"'%s'." % (comment_block.name, ),
|
1067
1072
|
position)
|
1068
1073
|
|
1069
1074
|
tag = DocTag(comment_block, TAG_RETURNS)
|
@@ -1077,7 +1082,7 @@ class AnnotationParser(object):
|
|
1077
1082
|
else:
|
1078
1083
|
if tag_name.lower() in comment_block.tags.keys():
|
1079
1084
|
column = result.start('tag_name') + column_offset
|
1080
|
-
marker = ' '*column + '^'
|
1085
|
+
marker = ' ' * column + '^'
|
1081
1086
|
message.warn("multiple '%s:' tags for identifier '%s':\n%s\n%s" %
|
1082
1087
|
(tag_name, comment_block.name, original_line, marker),
|
1083
1088
|
position)
|
@@ -1090,7 +1095,7 @@ class AnnotationParser(object):
|
|
1090
1095
|
tag.options = self.parse_options(tag, tag_annotations)
|
1091
1096
|
else:
|
1092
1097
|
message.warn("annotations not supported for tag '%s:'." %
|
1093
|
-
(tag_name),
|
1098
|
+
(tag_name, ),
|
1094
1099
|
position)
|
1095
1100
|
comment_block.tags[tag_name.lower()] = tag
|
1096
1101
|
current_tag = tag
|
@@ -1155,7 +1160,7 @@ class AnnotationParser(object):
|
|
1155
1160
|
part.value = ''
|
1156
1161
|
|
1157
1162
|
def _validate_multiline_annotation_continuation(self, line, original_line,
|
1158
|
-
|
1163
|
+
column_offset, position):
|
1159
1164
|
'''
|
1160
1165
|
Validate parameters and tags (except the first line) and generate
|
1161
1166
|
warnings about invalid annotations spanning multiple lines.
|
@@ -1169,7 +1174,7 @@ class AnnotationParser(object):
|
|
1169
1174
|
result = MULTILINE_ANNOTATION_CONTINUATION_RE.match(line)
|
1170
1175
|
if result:
|
1171
1176
|
column = result.start('annotations') + column_offset
|
1172
|
-
marker = ' '*column + '^'
|
1177
|
+
marker = ' ' * column + '^'
|
1173
1178
|
message.warn('ignoring invalid multiline annotation continuation:\n'
|
1174
1179
|
'%s\n%s' % (original_line, marker),
|
1175
1180
|
position)
|
@@ -1185,7 +1190,7 @@ class AnnotationParser(object):
|
|
1185
1190
|
|
1186
1191
|
for i, c in enumerate(value):
|
1187
1192
|
if c == '(' and opened == -1:
|
1188
|
-
opened = i+1
|
1193
|
+
opened = i + 1
|
1189
1194
|
if c == ')' and opened != -1:
|
1190
1195
|
segment = value[opened:i]
|
1191
1196
|
parts = segment.split(' ', 1)
|
Binary file
|
Binary file
|
@@ -24,19 +24,21 @@ from itertools import chain
|
|
24
24
|
|
25
25
|
from . import message
|
26
26
|
|
27
|
+
from .collections import OrderedDict
|
27
28
|
from .message import Position
|
28
|
-
from .odict import odict
|
29
29
|
from .utils import to_underscores
|
30
30
|
|
31
|
+
|
31
32
|
class Type(object):
|
32
|
-
"""
|
33
|
-
|
34
|
-
* A reference to a
|
35
|
-
* A "
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
"""
|
34
|
+
A Type can be either:
|
35
|
+
* A reference to a node (target_giname)
|
36
|
+
* A reference to a "fundamental" type like 'utf8'
|
37
|
+
* A "foreign" type - this can be any string."
|
38
|
+
If none are specified, then it's in an "unresolved" state. An
|
39
|
+
unresolved type can have two data sources; a "ctype" which comes
|
40
|
+
from a C type string, or a gtype_name (from g_type_name()).
|
41
|
+
"""
|
40
42
|
|
41
43
|
def __init__(self,
|
42
44
|
ctype=None,
|
@@ -125,11 +127,12 @@ in contrast to the other create_type() functions."""
|
|
125
127
|
def __cmp__(self, other):
|
126
128
|
if self.target_fundamental:
|
127
129
|
return cmp(self.target_fundamental, other.target_fundamental)
|
128
|
-
|
130
|
+
elif self.target_giname:
|
129
131
|
return cmp(self.target_giname, other.target_giname)
|
130
|
-
|
132
|
+
elif self.target_foreign:
|
131
133
|
return cmp(self.target_foreign, other.target_foreign)
|
132
|
-
|
134
|
+
else:
|
135
|
+
return cmp(self.ctype, other.ctype)
|
133
136
|
|
134
137
|
def is_equiv(self, typeval):
|
135
138
|
"""Return True if the specified types are compatible at
|
@@ -170,6 +173,7 @@ in contrast to the other create_type() functions."""
|
|
170
173
|
data = ''
|
171
174
|
return '%s(%sctype=%s)' % (self.__class__.__name__, data, self.ctype)
|
172
175
|
|
176
|
+
|
173
177
|
class TypeUnknown(Type):
|
174
178
|
def __init__(self):
|
175
179
|
Type.__init__(self, _target_unknown=True)
|
@@ -351,9 +355,7 @@ SIGNAL_MUST_COLLECT = 'must-collect'
|
|
351
355
|
|
352
356
|
|
353
357
|
class Namespace(object):
|
354
|
-
def __init__(self, name, version,
|
355
|
-
identifier_prefixes=None,
|
356
|
-
symbol_prefixes=None):
|
358
|
+
def __init__(self, name, version, identifier_prefixes=None, symbol_prefixes=None):
|
357
359
|
self.name = name
|
358
360
|
self.version = version
|
359
361
|
if identifier_prefixes is not None:
|
@@ -367,15 +369,15 @@ class Namespace(object):
|
|
367
369
|
self.symbol_prefixes = [to_underscores(p).lower() for p in ps]
|
368
370
|
# cache upper-cased versions
|
369
371
|
self._ucase_symbol_prefixes = [p.upper() for p in self.symbol_prefixes]
|
370
|
-
self.names =
|
371
|
-
self.aliases = {}
|
372
|
-
self.type_names = {}
|
373
|
-
self.ctypes = {}
|
374
|
-
self.symbols = {}
|
375
|
-
self.includes = set()
|
376
|
-
self.shared_libraries = []
|
377
|
-
self.c_includes = []
|
378
|
-
self.exported_packages = []
|
372
|
+
self.names = OrderedDict() # Maps from GIName -> node
|
373
|
+
self.aliases = {} # Maps from GIName -> GIName
|
374
|
+
self.type_names = {} # Maps from GTName -> node
|
375
|
+
self.ctypes = {} # Maps from CType -> node
|
376
|
+
self.symbols = {} # Maps from function symbols -> Function
|
377
|
+
self.includes = set() # Include
|
378
|
+
self.shared_libraries = [] # str
|
379
|
+
self.c_includes = [] # str
|
380
|
+
self.exported_packages = [] # str
|
379
381
|
|
380
382
|
def type_from_name(self, name, ctype=None):
|
381
383
|
"""Backwards compatibility method for older .gir files, which
|
@@ -416,7 +418,7 @@ but adds it to things like ctypes, symbols, and type_names.
|
|
416
418
|
if isinstance(node, (Class, Interface)):
|
417
419
|
for m in chain(node.signals, node.properties):
|
418
420
|
m.namespace = self
|
419
|
-
if isinstance(node, Enum
|
421
|
+
if isinstance(node, (Enum, Bitfield)):
|
420
422
|
for fn in node.static_methods:
|
421
423
|
if not isinstance(fn, Function):
|
422
424
|
continue
|
@@ -482,6 +484,7 @@ functions via get_by_symbol()."""
|
|
482
484
|
for node in self.itervalues():
|
483
485
|
node.walk(callback, [])
|
484
486
|
|
487
|
+
|
485
488
|
class Include(object):
|
486
489
|
|
487
490
|
def __init__(self, name, version):
|
@@ -504,6 +507,7 @@ class Include(object):
|
|
504
507
|
def __str__(self):
|
505
508
|
return '%s-%s' % (self.name, self.version)
|
506
509
|
|
510
|
+
|
507
511
|
class Annotated(object):
|
508
512
|
"""An object which has a few generic metadata
|
509
513
|
properties."""
|
@@ -511,12 +515,13 @@ properties."""
|
|
511
515
|
self.version = None
|
512
516
|
self.skip = False
|
513
517
|
self.introspectable = True
|
514
|
-
self.attributes = []
|
518
|
+
self.attributes = [] # (key, value)*
|
515
519
|
self.stability = None
|
516
520
|
self.deprecated = None
|
517
521
|
self.deprecated_version = None
|
518
522
|
self.doc = None
|
519
523
|
|
524
|
+
|
520
525
|
class Node(Annotated):
|
521
526
|
"""A node is a type of object which is uniquely identified by its
|
522
527
|
(namespace, name) pair. When combined with a ., this is called a
|
@@ -527,7 +532,7 @@ GIName. It's possible for nodes to contain or point to other nodes."""
|
|
527
532
|
|
528
533
|
def __init__(self, name=None):
|
529
534
|
Annotated.__init__(self)
|
530
|
-
self.namespace = None
|
535
|
+
self.namespace = None # Should be set later by Namespace.append()
|
531
536
|
self.name = name
|
532
537
|
self.foreign = False
|
533
538
|
self.file_positions = set()
|
@@ -596,8 +601,8 @@ class Callable(Node):
|
|
596
601
|
self.retval = retval
|
597
602
|
self.parameters = parameters
|
598
603
|
self.throws = not not throws
|
599
|
-
self.instance_parameter = None
|
600
|
-
self.parent = None
|
604
|
+
self.instance_parameter = None # Parameter
|
605
|
+
self.parent = None # A Class or Interface
|
601
606
|
|
602
607
|
# Returns all parameters, including the instance parameter
|
603
608
|
@property
|
@@ -627,10 +632,10 @@ class Function(Callable):
|
|
627
632
|
self.symbol = symbol
|
628
633
|
self.is_method = False
|
629
634
|
self.is_constructor = False
|
630
|
-
self.shadowed_by = None
|
631
|
-
self.shadows = None
|
632
|
-
self.moved_to = None
|
633
|
-
self.internal_skipped = False
|
635
|
+
self.shadowed_by = None # C symbol string
|
636
|
+
self.shadows = None # C symbol string
|
637
|
+
self.moved_to = None # namespaced function name string
|
638
|
+
self.internal_skipped = False # if True, this func will not be written to GIR
|
634
639
|
|
635
640
|
def clone(self):
|
636
641
|
clone = copy.copy(self)
|
@@ -641,8 +646,7 @@ class Function(Callable):
|
|
641
646
|
|
642
647
|
def is_type_meta_function(self):
|
643
648
|
# Named correctly
|
644
|
-
if not (self.name.endswith('_get_type') or
|
645
|
-
self.name.endswith('_get_gtype')):
|
649
|
+
if not (self.name.endswith('_get_type') or self.name.endswith('_get_gtype')):
|
646
650
|
return False
|
647
651
|
|
648
652
|
# Doesn't have any parameters
|
@@ -651,14 +655,13 @@ class Function(Callable):
|
|
651
655
|
|
652
656
|
# Returns GType
|
653
657
|
rettype = self.retval.type
|
654
|
-
if (not rettype.is_equiv(TYPE_GTYPE) and
|
655
|
-
|
656
|
-
message.warn("function '%s' returns '%r', not a GType" %
|
657
|
-
(self.name, rettype))
|
658
|
+
if (not rettype.is_equiv(TYPE_GTYPE) and rettype.target_giname != 'Gtk.Type'):
|
659
|
+
message.warn("function '%s' returns '%r', not a GType" % (self.name, rettype))
|
658
660
|
return False
|
659
661
|
|
660
662
|
return True
|
661
663
|
|
664
|
+
|
662
665
|
class ErrorQuarkFunction(Function):
|
663
666
|
|
664
667
|
def __init__(self, name, retval, parameters, throws, symbol, error_domain):
|
@@ -679,7 +682,6 @@ class VFunction(Callable):
|
|
679
682
|
return obj
|
680
683
|
|
681
684
|
|
682
|
-
|
683
685
|
class Varargs(Type):
|
684
686
|
|
685
687
|
def __init__(self):
|
@@ -715,6 +717,7 @@ class Array(Type):
|
|
715
717
|
arr.size = self.size
|
716
718
|
return arr
|
717
719
|
|
720
|
+
|
718
721
|
class List(Type):
|
719
722
|
|
720
723
|
def __init__(self, name, element_type, **kwargs):
|
@@ -727,6 +730,7 @@ class List(Type):
|
|
727
730
|
def clone(self):
|
728
731
|
return List(self.name, self.element_type)
|
729
732
|
|
733
|
+
|
730
734
|
class Map(Type):
|
731
735
|
|
732
736
|
def __init__(self, key_type, value_type, **kwargs):
|
@@ -739,6 +743,7 @@ class Map(Type):
|
|
739
743
|
def clone(self):
|
740
744
|
return Map(self.key_type, self.value_type)
|
741
745
|
|
746
|
+
|
742
747
|
class Alias(Node):
|
743
748
|
|
744
749
|
def __init__(self, name, target, ctype=None):
|
@@ -881,6 +886,7 @@ class Compound(Node, Registered):
|
|
881
886
|
if field.anonymous_node is not None:
|
882
887
|
field.anonymous_node.walk(callback, chain)
|
883
888
|
|
889
|
+
|
884
890
|
class Field(Annotated):
|
885
891
|
|
886
892
|
def __init__(self, name, typenode, readable, writable, bits=None,
|
@@ -894,7 +900,7 @@ class Field(Annotated):
|
|
894
900
|
self.bits = bits
|
895
901
|
self.anonymous_node = anonymous_node
|
896
902
|
self.private = False
|
897
|
-
self.parent = None
|
903
|
+
self.parent = None # a compound
|
898
904
|
|
899
905
|
def __cmp__(self, other):
|
900
906
|
return cmp(self.name, other.name)
|
@@ -1090,7 +1096,7 @@ class Property(Node):
|
|
1090
1096
|
self.transfer = PARAM_TRANSFER_NONE
|
1091
1097
|
else:
|
1092
1098
|
self.transfer = transfer
|
1093
|
-
self.parent = None
|
1099
|
+
self.parent = None # A Class or Interface
|
1094
1100
|
|
1095
1101
|
|
1096
1102
|
class Callback(Callable):
|
Binary file
|
Binary file
|