gobject-introspection 2.0.2-x86-mingw32 → 2.0.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +5 -2
  3. data/ext/gobject-introspection/rb-gi-argument.c +215 -4
  4. data/ext/gobject-introspection/rb-gi-loader.c +7 -2
  5. data/ext/gobject-introspection/rb-gi-struct-info.c +1 -1
  6. data/lib/1.9/gobject_introspection.so +0 -0
  7. data/lib/2.0/gobject_introspection.so +0 -0
  8. data/test/test-function-info.rb +3 -1
  9. data/vendor/local/bin/g-ir-compiler.exe +0 -0
  10. data/vendor/local/bin/g-ir-generate.exe +0 -0
  11. data/vendor/local/bin/libgirepository-1.0-1.dll +0 -0
  12. data/vendor/local/lib/girepository-1.0/DBus-1.0.typelib +0 -0
  13. data/vendor/local/lib/girepository-1.0/DBusGLib-1.0.typelib +0 -0
  14. data/vendor/local/lib/girepository-1.0/GIRepository-2.0.typelib +0 -0
  15. data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
  16. data/vendor/local/lib/girepository-1.0/GModule-2.0.typelib +0 -0
  17. data/vendor/local/lib/girepository-1.0/GObject-2.0.typelib +0 -0
  18. data/vendor/local/lib/girepository-1.0/Gio-2.0.typelib +0 -0
  19. data/vendor/local/lib/girepository-1.0/win32-1.0.typelib +0 -0
  20. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyc +0 -0
  21. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyo +0 -0
  22. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.py +1 -0
  23. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyc +0 -0
  24. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
  25. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.py +52 -47
  26. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyc +0 -0
  27. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyo +0 -0
  28. data/vendor/local/lib/gobject-introspection/giscanner/ast.py +48 -42
  29. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyc +0 -0
  30. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
  31. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.py +11 -10
  32. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyc +0 -0
  33. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyo +0 -0
  34. data/vendor/local/lib/gobject-introspection/giscanner/codegen.py +7 -5
  35. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyc +0 -0
  36. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -0
  37. data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.py +22 -0
  38. data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyc +0 -0
  39. data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyo +0 -0
  40. data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.py +120 -0
  41. data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyc +0 -0
  42. data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyo +0 -0
  43. data/vendor/local/lib/gobject-introspection/giscanner/docmain.py +14 -2
  44. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyc +0 -0
  45. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyo +0 -0
  46. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.py +19 -10
  47. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyc +0 -0
  48. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
  49. data/vendor/local/lib/gobject-introspection/giscanner/dumper.py +18 -11
  50. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyc +0 -0
  51. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyo +0 -0
  52. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.py +10 -13
  53. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyc +0 -0
  54. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
  55. data/vendor/local/lib/gobject-introspection/giscanner/girparser.py +24 -30
  56. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyc +0 -0
  57. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyo +0 -0
  58. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.py +11 -12
  59. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyc +0 -0
  60. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyo +0 -0
  61. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.py +25 -21
  62. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyc +0 -0
  63. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyo +0 -0
  64. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.py +1 -1
  65. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc +0 -0
  66. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo +0 -0
  67. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.py +98 -100
  68. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyc +0 -0
  69. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
  70. data/vendor/local/lib/gobject-introspection/giscanner/message.py +10 -8
  71. data/vendor/local/lib/gobject-introspection/giscanner/message.pyc +0 -0
  72. data/vendor/local/lib/gobject-introspection/giscanner/message.pyo +0 -0
  73. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.py +28 -16
  74. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyc +0 -0
  75. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyo +0 -0
  76. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.py +83 -9
  77. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyc +0 -0
  78. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyo +0 -0
  79. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.py +5 -1
  80. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyc +0 -0
  81. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
  82. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.py +20 -21
  83. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyc +0 -0
  84. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyo +0 -0
  85. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.py +3 -0
  86. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyc +0 -0
  87. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
  88. data/vendor/local/lib/gobject-introspection/giscanner/transformer.py +32 -41
  89. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyc +0 -0
  90. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyo +0 -0
  91. data/vendor/local/lib/gobject-introspection/giscanner/utils.py +9 -0
  92. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyc +0 -0
  93. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyo +0 -0
  94. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.py +9 -11
  95. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyc +0 -0
  96. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyo +0 -0
  97. data/vendor/local/lib/libgirepository-1.0.a +0 -0
  98. data/vendor/local/lib/libgirepository-1.0.dll.a +0 -0
  99. data/vendor/local/lib/libgirepository-1.0.la +1 -1
  100. data/vendor/local/lib/pkgconfig/gobject-introspection-1.0.pc +1 -1
  101. data/vendor/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc +1 -1
  102. data/vendor/local/share/gir-1.0/GIRepository-2.0.gir +691 -691
  103. data/vendor/local/share/gir-1.0/GLib-2.0.gir +6972 -6467
  104. data/vendor/local/share/gir-1.0/GModule-2.0.gir +103 -4
  105. data/vendor/local/share/gir-1.0/GObject-2.0.gir +2085 -1955
  106. data/vendor/local/share/gir-1.0/Gio-2.0.gir +10955 -9269
  107. data/vendor/local/share/gir-1.0/win32-1.0.gir +19 -0
  108. data/vendor/local/share/gobject-introspection-1.0/Makefile.introspection +2 -2
  109. data/vendor/local/share/gobject-introspection-1.0/gdump.c +7 -2
  110. data/vendor/local/share/gobject-introspection-1.0/tests/annotation.c +15 -15
  111. data/vendor/local/share/gobject-introspection-1.0/tests/annotation.h +1 -1
  112. data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c +14 -0
  113. data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h +2 -2
  114. data/vendor/local/share/gobject-introspection-1.0/tests/regress.c +8 -0
  115. data/vendor/local/share/gobject-introspection-1.0/tests/regress.h +9 -0
  116. metadata +20 -21
  117. data/vendor/local/lib/gobject-introspection/giscanner/odict.py +0 -50
  118. data/vendor/local/lib/gobject-introspection/giscanner/odict.pyc +0 -0
  119. data/vendor/local/lib/gobject-introspection/giscanner/odict.pyo +0 -0
@@ -31,6 +31,7 @@ import giscanner
31
31
 
32
32
  _CACHE_VERSION_FILENAME = '.cache-version'
33
33
 
34
+
34
35
  def _get_versionhash():
35
36
  toplevel = os.path.dirname(giscanner.__file__)
36
37
  # Use pyc instead of py to avoid extra IO
@@ -40,6 +41,7 @@ def _get_versionhash():
40
41
  mtimes = (str(os.stat(source).st_mtime) for source in sources)
41
42
  return hashlib.sha1(''.join(mtimes)).hexdigest()
42
43
 
44
+
43
45
  def _get_cachedir():
44
46
  if 'GI_SCANNER_DISABLE_CACHE' in os.environ:
45
47
  return None
@@ -73,7 +75,7 @@ class CacheStore(object):
73
75
  def __init__(self):
74
76
  try:
75
77
  self._directory = _get_cachedir()
76
- except OSError, e:
78
+ except OSError as e:
77
79
  if e.errno != errno.EPERM:
78
80
  raise
79
81
  self._directory = None
@@ -88,7 +90,7 @@ class CacheStore(object):
88
90
  version = os.path.join(self._directory, _CACHE_VERSION_FILENAME)
89
91
  try:
90
92
  cache_hash = open(version).read()
91
- except IOError, e:
93
+ except IOError as e:
92
94
  # File does not exist
93
95
  if e.errno == errno.ENOENT:
94
96
  cache_hash = 0
@@ -101,7 +103,7 @@ class CacheStore(object):
101
103
  self._clean()
102
104
  try:
103
105
  fp = open(version, 'w')
104
- except IOError, e:
106
+ except IOError as e:
105
107
  # Permission denied
106
108
  if e.errno == errno.EACCES:
107
109
  return
@@ -126,13 +128,13 @@ class CacheStore(object):
126
128
  def _remove_filename(self, filename):
127
129
  try:
128
130
  os.unlink(filename)
129
- except IOError, e:
131
+ except IOError as e:
130
132
  # Permission denied
131
133
  if e.errno == errno.EACCES:
132
134
  return
133
135
  else:
134
136
  raise
135
- except OSError, e:
137
+ except OSError as e:
136
138
  # File does not exist
137
139
  if e.errno == errno.ENOENT:
138
140
  return
@@ -150,14 +152,13 @@ class CacheStore(object):
150
152
  if store_filename is None:
151
153
  return
152
154
 
153
- if (os.path.exists(store_filename) and
154
- self._cache_is_valid(store_filename, filename)):
155
+ if (os.path.exists(store_filename) and self._cache_is_valid(store_filename, filename)):
155
156
  return None
156
157
 
157
158
  tmp_fd, tmp_filename = tempfile.mkstemp(prefix='g-ir-scanner-cache-')
158
159
  try:
159
160
  cPickle.dump(data, os.fdopen(tmp_fd, 'w'))
160
- except IOError, e:
161
+ except IOError as e:
161
162
  # No space left on device
162
163
  if e.errno == errno.ENOSPC:
163
164
  self._remove_filename(tmp_filename)
@@ -167,7 +168,7 @@ class CacheStore(object):
167
168
 
168
169
  try:
169
170
  shutil.move(tmp_filename, store_filename)
170
- except IOError, e:
171
+ except IOError as e:
171
172
  # Permission denied
172
173
  if e.errno == errno.EACCES:
173
174
  self._remove_filename(tmp_filename)
@@ -180,7 +181,7 @@ class CacheStore(object):
180
181
  return
181
182
  try:
182
183
  fd = open(store_filename)
183
- except IOError, e:
184
+ except IOError as e:
184
185
  if e.errno == errno.ENOENT:
185
186
  return None
186
187
  else:
@@ -24,6 +24,7 @@ from contextlib import contextmanager
24
24
 
25
25
  from . import ast
26
26
 
27
+
27
28
  class CCodeGenerator(object):
28
29
  def __init__(self, namespace, out_h_filename, out_c_filename):
29
30
  self.out_h_filename = out_h_filename
@@ -36,15 +37,16 @@ class CCodeGenerator(object):
36
37
  return '%s_%s' % (self.namespace.symbol_prefixes[0], name)
37
38
 
38
39
  def _typecontainer_to_ctype(self, param):
39
- if (isinstance(param, ast.Parameter) and
40
- param.direction in (ast.PARAM_DIRECTION_OUT,
41
- ast.PARAM_DIRECTION_INOUT)):
40
+ if (isinstance(param, ast.Parameter)
41
+ and param.direction in (ast.PARAM_DIRECTION_OUT, ast.PARAM_DIRECTION_INOUT)):
42
42
  suffix = '*'
43
43
  else:
44
44
  suffix = ''
45
- if (param.type.is_equiv((ast.TYPE_STRING, ast.TYPE_FILENAME)) and
46
- param.transfer == ast.PARAM_TRANSFER_NONE):
45
+
46
+ if (param.type.is_equiv((ast.TYPE_STRING, ast.TYPE_FILENAME))
47
+ and param.transfer == ast.PARAM_TRANSFER_NONE):
47
48
  return "const gchar*" + suffix
49
+
48
50
  return param.type.ctype + suffix
49
51
 
50
52
  def _write_prelude(self, out, func):
@@ -0,0 +1,22 @@
1
+ # -*- Mode: Python -*-
2
+ # GObject-Introspection - a framework for introspecting GObject libraries
3
+ # Copyright (C) 2013 Dieter Verfaillie <dieterv@optionexplicit.be>
4
+ #
5
+ # This program is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU General Public License
7
+ # as published by the Free Software Foundation; either version 2
8
+ # of the License, or (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18
+ # 02110-1301, USA.
19
+ #
20
+
21
+
22
+ from .ordereddict import OrderedDict
@@ -0,0 +1,120 @@
1
+ # -*- Mode: Python -*-
2
+ # GObject-Introspection - a framework for introspecting GObject libraries
3
+ # Copyright (C) 2008 Johan Dahlin
4
+ # Copyright (C) 2013 Dieter Verfaillie <dieterv@optionexplicit.be>
5
+ #
6
+ # This library is free software; you can redistribute it and/or
7
+ # modify it under the terms of the GNU Lesser General Public
8
+ # License as published by the Free Software Foundation; either
9
+ # version 2 of the License, or (at your option) any later version.
10
+ #
11
+ # This library is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ # Lesser General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public
17
+ # License along with this library; if not, write to the
18
+ # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
+ # Boston, MA 02111-1307, USA.
20
+
21
+
22
+ # Borrowed from:
23
+ # http://hg.sqlalchemy.org/sqlalchemy/raw-file/77e2264283d4/lib/sqlalchemy/util/_collections.py
24
+ # http://hg.sqlalchemy.org/sqlalchemy/raw-file/77e2264283d4/AUTHORS
25
+ #
26
+ # util/_collections.py
27
+ # Copyright (C) 2005-2012 the SQLAlchemy authors and contributors <see AUTHORS file>
28
+ #
29
+ # This module is part of SQLAlchemy and is released under
30
+ # the MIT License: http://www.opensource.org/licenses/mit-license.php
31
+
32
+
33
+ class OrderedDict(dict):
34
+ """A dict that returns keys/values/items in the order they were added."""
35
+
36
+ def __init__(self, ____sequence=None, **kwargs):
37
+ self._list = []
38
+ if ____sequence is None:
39
+ if kwargs:
40
+ self.update(**kwargs)
41
+ else:
42
+ self.update(____sequence, **kwargs)
43
+
44
+ def clear(self):
45
+ self._list = []
46
+ dict.clear(self)
47
+
48
+ def copy(self):
49
+ return self.__copy__()
50
+
51
+ def __copy__(self):
52
+ return OrderedDict(self)
53
+
54
+ def sort(self, *arg, **kw):
55
+ self._list.sort(*arg, **kw)
56
+
57
+ def update(self, ____sequence=None, **kwargs):
58
+ if ____sequence is not None:
59
+ if hasattr(____sequence, 'keys'):
60
+ for key in ____sequence.keys():
61
+ self.__setitem__(key, ____sequence[key])
62
+ else:
63
+ for key, value in ____sequence:
64
+ self[key] = value
65
+ if kwargs:
66
+ self.update(kwargs)
67
+
68
+ def setdefault(self, key, value):
69
+ if key not in self:
70
+ self.__setitem__(key, value)
71
+ return value
72
+ else:
73
+ return self.__getitem__(key)
74
+
75
+ def __iter__(self):
76
+ return iter(self._list)
77
+
78
+ def values(self):
79
+ return [self[key] for key in self._list]
80
+
81
+ def itervalues(self):
82
+ return iter([self[key] for key in self._list])
83
+
84
+ def keys(self):
85
+ return list(self._list)
86
+
87
+ def iterkeys(self):
88
+ return iter(self.keys())
89
+
90
+ def items(self):
91
+ return [(key, self[key]) for key in self.keys()]
92
+
93
+ def iteritems(self):
94
+ return iter(self.items())
95
+
96
+ def __setitem__(self, key, obj):
97
+ if key not in self:
98
+ try:
99
+ self._list.append(key)
100
+ except AttributeError:
101
+ # work around Python pickle loads() with
102
+ # dict subclass (seems to ignore __setstate__?)
103
+ self._list = [key]
104
+ dict.__setitem__(self, key, obj)
105
+
106
+ def __delitem__(self, key):
107
+ dict.__delitem__(self, key)
108
+ self._list.remove(key)
109
+
110
+ def pop(self, key, *default):
111
+ present = key in self
112
+ value = dict.pop(self, key, *default)
113
+ if present:
114
+ self._list.remove(key)
115
+ return value
116
+
117
+ def popitem(self):
118
+ item = dict.popitem(self)
119
+ self._list.remove(item[0])
120
+ return item
@@ -22,8 +22,10 @@ import os
22
22
  import optparse
23
23
 
24
24
  from .docwriter import DocWriter
25
+ from .sectionparser import generate_sections_file, write_sections_file
25
26
  from .transformer import Transformer
26
27
 
28
+
27
29
  def doc_main(args):
28
30
  parser = optparse.OptionParser('%prog [options] GIR-file')
29
31
 
@@ -37,6 +39,9 @@ def doc_main(args):
37
39
  parser.add_option("", "--add-include-path",
38
40
  action="append", dest="include_paths", default=[],
39
41
  help="include paths for other GIR files")
42
+ parser.add_option("", "--write-sections-file",
43
+ action="store_true", dest="write_sections",
44
+ help="Generate and write out a sections file")
40
45
 
41
46
  options, args = parser.parse_args(args)
42
47
  if not options.output:
@@ -54,7 +59,14 @@ def doc_main(args):
54
59
  extra_include_dirs.extend(options.include_paths)
55
60
  transformer = Transformer.parse_from_gir(args[1], extra_include_dirs)
56
61
 
57
- writer = DocWriter(transformer, options.language)
58
- writer.write(options.output)
62
+ if options.write_sections:
63
+ sections_file = generate_sections_file(transformer)
64
+
65
+ fp = open(options.output, 'w')
66
+ write_sections_file(fp, sections_file)
67
+ fp.close()
68
+ else:
69
+ writer = DocWriter(transformer, options.language)
70
+ writer.write(options.output)
59
71
 
60
72
  return 0
@@ -31,6 +31,7 @@ from mako.lookup import TemplateLookup
31
31
  from . import ast, xmlwriter
32
32
  from .utils import to_underscores
33
33
 
34
+
34
35
  def make_page_id(node, recursive=False):
35
36
  if isinstance(node, ast.Namespace):
36
37
  if recursive:
@@ -51,6 +52,7 @@ def make_page_id(node, recursive=False):
51
52
  else:
52
53
  return '%s.%s' % (make_page_id(parent, recursive=True), node.name)
53
54
 
55
+
54
56
  def get_node_kind(node):
55
57
  if isinstance(node, ast.Namespace):
56
58
  node_kind = 'namespace'
@@ -78,6 +80,7 @@ def get_node_kind(node):
78
80
 
79
81
  return node_kind
80
82
 
83
+
81
84
  class TemplatedScanner(object):
82
85
  def __init__(self, specs):
83
86
  self.specs = self.unmangle_specs(specs)
@@ -141,6 +144,7 @@ class TemplatedScanner(object):
141
144
  if pos < len(text):
142
145
  yield ('other', text[pos:], None)
143
146
 
147
+
144
148
  class DocstringScanner(TemplatedScanner):
145
149
  def __init__(self):
146
150
  specs = [
@@ -156,6 +160,7 @@ class DocstringScanner(TemplatedScanner):
156
160
 
157
161
  super(DocstringScanner, self).__init__(specs)
158
162
 
163
+
159
164
  class DocFormatter(object):
160
165
  def __init__(self, transformer):
161
166
  self._transformer = transformer
@@ -219,7 +224,7 @@ class DocFormatter(object):
219
224
 
220
225
  try:
221
226
  prop = self._find_thing(type_node.properties, props['property_name'])
222
- except (AttributeError, KeyError), e:
227
+ except (AttributeError, KeyError):
223
228
  return match
224
229
 
225
230
  return self.format_xref(prop)
@@ -231,7 +236,7 @@ class DocFormatter(object):
231
236
 
232
237
  try:
233
238
  signal = self._find_thing(type_node.signals, props['signal_name'])
234
- except (AttributeError, KeyError), e:
239
+ except (AttributeError, KeyError):
235
240
  return match
236
241
 
237
242
  return self.format_xref(signal)
@@ -260,7 +265,7 @@ class DocFormatter(object):
260
265
  def _process_parameter(self, node, match, props):
261
266
  try:
262
267
  parameter = node.get_parameter(props['param_name'])
263
- except (AttributeError, ValueError), e:
268
+ except (AttributeError, ValueError):
264
269
  return match
265
270
 
266
271
  return '<code>%s</code>' % (self.format_parameter_name(node, parameter), )
@@ -358,6 +363,7 @@ class DocFormatter(object):
358
363
  parent_chain.reverse()
359
364
  return parent_chain
360
365
 
366
+
361
367
  class DocFormatterC(DocFormatter):
362
368
  language = "C"
363
369
  mime_type = "text/x-csrc"
@@ -380,7 +386,7 @@ class DocFormatterC(DocFormatter):
380
386
  return getattr(node, 'ctype')
381
387
 
382
388
  def format_function_name(self, func):
383
- if isinstance(func, (ast.Function)):
389
+ if isinstance(func, ast.Function):
384
390
  return func.symbol
385
391
  else:
386
392
  return func.name
@@ -388,6 +394,7 @@ class DocFormatterC(DocFormatter):
388
394
  def get_parameters(self, node):
389
395
  return node.all_parameters
390
396
 
397
+
391
398
  class DocFormatterIntrospectableBase(DocFormatter):
392
399
  def should_render_node(self, node):
393
400
  if isinstance(node, ast.Record) and node.is_gtype_struct_for is not None:
@@ -398,6 +405,7 @@ class DocFormatterIntrospectableBase(DocFormatter):
398
405
 
399
406
  return super(DocFormatterIntrospectableBase, self).should_render_node(node)
400
407
 
408
+
401
409
  class DocFormatterPython(DocFormatterIntrospectableBase):
402
410
  language = "Python"
403
411
  mime_type = "text/python"
@@ -418,7 +426,7 @@ class DocFormatterPython(DocFormatterIntrospectableBase):
418
426
  if getattr(node, "is_method", False):
419
427
  return True
420
428
 
421
- if isinstance(node, (ast.VFunction)):
429
+ if isinstance(node, ast.VFunction):
422
430
  return True
423
431
 
424
432
  return False
@@ -451,8 +459,7 @@ class DocFormatterPython(DocFormatterIntrospectableBase):
451
459
  "GParam": "GLib.Param",
452
460
  "PyObject": "object",
453
461
  "GStrv": "[str]",
454
- "GVariant": "GLib.Variant",
455
- }
462
+ "GVariant": "GLib.Variant"}
456
463
 
457
464
  return fundamental_types.get(name, name)
458
465
 
@@ -476,6 +483,7 @@ class DocFormatterPython(DocFormatterIntrospectableBase):
476
483
  def get_parameters(self, node):
477
484
  return node.all_parameters
478
485
 
486
+
479
487
  class DocFormatterGjs(DocFormatterIntrospectableBase):
480
488
  language = "Gjs"
481
489
  mime_type = "text/x-gjs"
@@ -490,7 +498,7 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
490
498
  if getattr(node, "is_method", False):
491
499
  return True
492
500
 
493
- if isinstance(node, (ast.VFunction)):
501
+ if isinstance(node, ast.VFunction):
494
502
  return True
495
503
 
496
504
  return False
@@ -514,8 +522,7 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
514
522
  "GParam": "GLib.Param",
515
523
  "PyObject": "Object",
516
524
  "GStrv": "[String]",
517
- "GVariant": "GLib.Variant",
518
- }
525
+ "GVariant": "GLib.Variant"}
519
526
 
520
527
  return fundamental_types.get(name, name)
521
528
 
@@ -558,12 +565,14 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
558
565
  params.append(param)
559
566
  return params
560
567
 
568
+
561
569
  LANGUAGES = {
562
570
  "c": DocFormatterC,
563
571
  "python": DocFormatterPython,
564
572
  "gjs": DocFormatterGjs,
565
573
  }
566
574
 
575
+
567
576
  class DocWriter(object):
568
577
  def __init__(self, transformer, language):
569
578
  self._transformer = transformer
@@ -89,7 +89,8 @@ class DumpCompiler(object):
89
89
  # Enable the --msvc-syntax pkg-config flag when
90
90
  # the Microsoft compiler is used
91
91
  # (This is the other way to check whether Visual C++ is used subsequently)
92
- if 'cl' in self._compiler_cmd:
92
+ args = self._compiler_cmd.split()
93
+ if 'cl.exe' in args or 'cl' in args:
93
94
  self._pkgconfig_msvc_flags = '--msvc-syntax'
94
95
  self._uninst_srcdir = os.environ.get(
95
96
  'UNINSTALLED_INTROSPECTION_SRCDIR')
@@ -166,14 +167,14 @@ class DumpCompiler(object):
166
167
 
167
168
  try:
168
169
  self._compile(o_path, c_path)
169
- except CompilerError, e:
170
+ except CompilerError as e:
170
171
  if not utils.have_debug_flag('save-temps'):
171
172
  shutil.rmtree(tmpdir)
172
173
  raise SystemExit('compilation of temporary binary failed:' + str(e))
173
174
 
174
175
  try:
175
176
  self._link(bin_path, o_path)
176
- except LinkerError, e:
177
+ except LinkerError as e:
177
178
  if not utils.have_debug_flag('save-temps'):
178
179
  shutil.rmtree(tmpdir)
179
180
  raise SystemExit('linking of temporary binary failed: ' + str(e))
@@ -222,7 +223,7 @@ class DumpCompiler(object):
222
223
  # The Microsoft compiler uses different option flags for
223
224
  # compilation result output
224
225
  if self._pkgconfig_msvc_flags:
225
- args.extend(['-c', '-Fe'+output, '-Fo'+output])
226
+ args.extend(['-c', '-Fe' + output, '-Fo' + output])
226
227
  else:
227
228
  args.extend(['-c', '-o', output])
228
229
  for source in sources:
@@ -236,7 +237,7 @@ class DumpCompiler(object):
236
237
  sys.stdout.flush()
237
238
  try:
238
239
  subprocess.check_call(args)
239
- except subprocess.CalledProcessError, e:
240
+ except subprocess.CalledProcessError as e:
240
241
  raise CompilerError(e)
241
242
 
242
243
  def _link(self, output, *sources):
@@ -253,7 +254,7 @@ class DumpCompiler(object):
253
254
  # We can use -o for the Microsoft compiler/linker,
254
255
  # but it is considered deprecated usage with that
255
256
  if self._pkgconfig_msvc_flags:
256
- args.extend(['-Fe'+output])
257
+ args.extend(['-Fe' + output])
257
258
  else:
258
259
  args.extend(['-o', output])
259
260
  if libtool:
@@ -290,7 +291,7 @@ class DumpCompiler(object):
290
291
  sys.stdout.flush()
291
292
  try:
292
293
  subprocess.check_call(args)
293
- except subprocess.CalledProcessError, e:
294
+ except subprocess.CalledProcessError as e:
294
295
  raise LinkerError(e)
295
296
 
296
297
  def _add_link_internal_args(self, args, libtool):
@@ -312,18 +313,23 @@ class DumpCompiler(object):
312
313
  if self._options.namespace_version:
313
314
  args.append(str.lower(self._options.namespace_name) +
314
315
  '-' +
315
- self._options.namespace_version+'.lib')
316
+ self._options.namespace_version + '.lib')
316
317
  else:
317
- args.append(str.lower(self._options.namespace_name)+'.lib')
318
+ args.append(str.lower(self._options.namespace_name) + '.lib')
318
319
  else:
319
320
  args.append('-Wl,-rpath=.')
320
321
 
322
+ # Ensure libraries are always linked as we are going to use ldd to work
323
+ # out their names later
324
+ if not libtool and self._pkgconfig_msvc_flags == '':
325
+ args.append('-Wl,--no-as-needed')
326
+
321
327
  for library in self._options.libraries:
322
328
  # Visual C++: We have the needed .lib files now, and we need to link
323
329
  # to .lib files, not the .dll as the --library option specifies the
324
330
  # .dll(s) the .gir file refers to
325
331
  if self._pkgconfig_msvc_flags == '':
326
- if library.endswith(".la"): # explicitly specified libtool library
332
+ if library.endswith(".la"): # explicitly specified libtool library
327
333
  args.append(library)
328
334
  else:
329
335
  args.append('-l' + library)
@@ -352,11 +358,12 @@ class DumpCompiler(object):
352
358
  # The --library option on Windows pass in the .dll file(s) the
353
359
  # .gir files refer to, so don't link to them on Visual C++
354
360
  if self._pkgconfig_msvc_flags == '':
355
- if library.endswith(".la"): # explicitly specified libtool library
361
+ if library.endswith(".la"): # explicitly specified libtool library
356
362
  args.append(library)
357
363
  else:
358
364
  args.append('-l' + library)
359
365
 
366
+
360
367
  def compile_introspection_binary(options, get_type_functions,
361
368
  error_quark_functions):
362
369
  dc = DumpCompiler(options, get_type_functions, error_quark_functions)