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.
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
@@ -18,24 +18,29 @@
18
18
  #
19
19
 
20
20
  import re
21
- import sys
21
+ from . import ast
22
+ from .utils import to_underscores
22
23
 
23
- class SectionFile(object):
24
+
25
+ class SectionsFile(object):
24
26
  def __init__(self, sections):
25
27
  self.sections = sections
26
28
 
29
+
27
30
  class Section(object):
28
31
  def __init__(self):
29
32
  self.file = None
30
33
  self.title = None
31
- self.main_subsection = Subsection(None)
34
+ self.includes = None
32
35
  self.subsections = []
33
36
 
37
+
34
38
  class Subsection(object):
35
39
  def __init__(self, name):
36
40
  self.name = name
37
41
  self.symbols = []
38
42
 
43
+
39
44
  def parse_sections_file(lines):
40
45
  sections = []
41
46
  current_section = None
@@ -50,29 +55,98 @@ def parse_sections_file(lines):
50
55
  if line == "<SECTION>":
51
56
  current_section = Section()
52
57
  sections.append(current_section)
53
- current_subsection = current_section.main_subsection
58
+ current_subsection = Subsection(None)
59
+ current_section.subsections.append(current_subsection)
54
60
  continue
55
61
 
56
62
  if line == "</SECTION>":
57
63
  current_section = None
58
64
  continue
59
65
 
60
- match = re.match(line, r"<FILE>(?P<contents>.*)</FILE>")
66
+ match = re.match(r"<FILE>(?P<contents>.*)</FILE>", line)
61
67
  if match:
62
68
  current_section.file = match.groupdict['contents']
63
69
  continue
64
70
 
65
- match = re.match(line, r"<TITLE>(?P<contents>.*)</TITLE>")
71
+ match = re.match(r"<TITLE>(?P<contents>.*)</TITLE>", line)
66
72
  if match:
67
73
  current_section.title = match.groupdict['contents']
68
74
  continue
69
75
 
70
- match = re.match(line, r"<SUBSECTION (?P<name>).*>")
76
+ match = re.match(r"<INCLUDE>(?P<contents>.*)</INCLUDE>", line)
71
77
  if match:
72
- current_subsection = Section(match.groupdict['name'])
78
+ current_section.includes = match.groupdict['contents']
79
+ continue
80
+
81
+ match = re.match(r"<SUBSECTION(?: (?P<name>.*))?>", line)
82
+ if match:
83
+ current_subsection = Subsection(match.groupdict.get('name', None))
73
84
  current_section.subsections.append(current_subsection)
74
85
  continue
75
86
 
87
+ if line.startswith("<") and line.endswith(">"):
88
+ # Other directive to gtk-doc, not a symbol.
89
+ continue
90
+
76
91
  current_subsection.symbols.append(line)
77
92
 
78
- return SectionFile(sections)
93
+ return SectionsFile(sections)
94
+
95
+
96
+ def write_sections_file(f, sections_file):
97
+ for section in sections_file.sections:
98
+ f.write("\n<SECTION>\n")
99
+ if section.file is not None:
100
+ f.write("<FILE>%s</FILE>\n" % (section.file, ))
101
+ if section.title is not None:
102
+ f.write("<TITLE>%s</TITLE>\n" % (section.title, ))
103
+ if section.includes is not None:
104
+ f.write("<INCLUDE>%s</INCLUDE>\n" % (section.includes, ))
105
+
106
+ is_first_subsection = True
107
+ for subsection in section.subsections:
108
+ if subsection.name is not None:
109
+ f.write("<SUBSECTION %s>\n" % (subsection.name, ))
110
+ elif not is_first_subsection:
111
+ f.write("\n<SUBSECTION>\n")
112
+
113
+ is_first_subsection = False
114
+
115
+ for symbol in subsection.symbols:
116
+ f.write(symbol + "\n")
117
+
118
+
119
+ def generate_sections_file(transformer):
120
+ ns = transformer.namespace
121
+
122
+ sections = []
123
+
124
+ def new_section(file_, title):
125
+ section = Section()
126
+ section.file = file_
127
+ section.title = title
128
+ section.subsections.append(Subsection(None))
129
+ sections.append(section)
130
+ return section
131
+
132
+ def append_symbol(section, sym):
133
+ section.subsections[0].symbols.append(sym)
134
+
135
+ general_section = new_section("main", "Main")
136
+
137
+ for node in ns.itervalues():
138
+ if isinstance(node, ast.Function):
139
+ append_symbol(general_section, node.symbol)
140
+ elif isinstance(node, (ast.Class, ast.Interface)):
141
+ gtype_name = node.gtype_name
142
+ file_name = to_underscores(gtype_name).replace('_', '-').lower()
143
+ section = new_section(file_name, gtype_name)
144
+ append_symbol(section, gtype_name)
145
+ append_symbol(section, node.glib_type_struct.target_giname.replace('.', ''))
146
+
147
+ for meth in node.methods:
148
+ append_symbol(section, meth.symbol)
149
+ for meth in node.static_methods:
150
+ append_symbol(section, meth.symbol)
151
+
152
+ return SectionsFile(sections)
@@ -26,6 +26,7 @@ import subprocess
26
26
 
27
27
  from .utils import get_libtool_command, extract_libtool_shlib
28
28
 
29
+
29
30
  # For .la files, the situation is easy.
30
31
  def _resolve_libtool(options, binary, libraries):
31
32
  shlibs = []
@@ -36,6 +37,7 @@ def _resolve_libtool(options, binary, libraries):
36
37
 
37
38
  return shlibs
38
39
 
40
+
39
41
  # Assume ldd output is something vaguely like
40
42
  #
41
43
  # libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x006c1000)
@@ -51,6 +53,7 @@ def _ldd_library_pattern(library_name):
51
53
  return re.compile("(?<![A-Za-z0-9_-])(lib*%s[^A-Za-z0-9_-][^\s\(\)]*)"
52
54
  % re.escape(library_name))
53
55
 
56
+
54
57
  # This is a what we do for non-la files. We assume that we are on an
55
58
  # ELF-like system where ldd exists and the soname extracted with ldd is
56
59
  # a filename that can be opened with dlopen().
@@ -68,7 +71,7 @@ def _resolve_non_libtool(options, binary, libraries):
68
71
  if not libraries:
69
72
  return []
70
73
 
71
- if os.name == 'OpenBSD':
74
+ if platform.platform().startswith('OpenBSD'):
72
75
  # Hack for OpenBSD when using the ports' libtool which uses slightly
73
76
  # different directories to store the libraries in. So rewite binary.args[0]
74
77
  # by inserting '.libs/'.
@@ -118,6 +121,7 @@ def _resolve_non_libtool(options, binary, libraries):
118
121
 
119
122
  return shlibs
120
123
 
124
+
121
125
  # We want to resolve a set of library names (the <foo> of -l<foo>)
122
126
  # against a library to find the shared library name. The shared
123
127
  # library name is suppose to be what you pass to dlopen() (or
@@ -32,6 +32,10 @@ with LibtoolImporter(None, None):
32
32
  else:
33
33
  from giscanner._giscanner import SourceScanner as CSourceScanner
34
34
 
35
+ HEADER_EXTS = ['.h', '.hpp', '.hxx']
36
+ SOURCE_EXTS = ['.c', '.cpp', '.cc', '.cxx']
37
+ ALL_EXTS = SOURCE_EXTS + HEADER_EXTS
38
+
35
39
  (CSYMBOL_TYPE_INVALID,
36
40
  CSYMBOL_TYPE_ELLIPSIS,
37
41
  CSYMBOL_TYPE_CONST,
@@ -89,8 +93,7 @@ def symbol_type_name(symbol_type):
89
93
  CSYMBOL_TYPE_UNION: 'union',
90
94
  CSYMBOL_TYPE_ENUM: 'enum',
91
95
  CSYMBOL_TYPE_TYPEDEF: 'typedef',
92
- CSYMBOL_TYPE_MEMBER: 'member',
93
- }.get(symbol_type)
96
+ CSYMBOL_TYPE_MEMBER: 'member'}.get(symbol_type)
94
97
 
95
98
 
96
99
  def ctype_name(ctype):
@@ -104,8 +107,7 @@ def ctype_name(ctype):
104
107
  CTYPE_ENUM: 'enum',
105
108
  CTYPE_POINTER: 'pointer',
106
109
  CTYPE_ARRAY: 'array',
107
- CTYPE_FUNCTION: 'function',
108
- }.get(ctype)
110
+ CTYPE_FUNCTION: 'function'}.get(ctype)
109
111
 
110
112
 
111
113
  class SourceType(object):
@@ -241,8 +243,7 @@ class SourceScanner(object):
241
243
 
242
244
  headers = []
243
245
  for filename in filenames:
244
- if (filename.endswith('.c') or filename.endswith('.cpp') or
245
- filename.endswith('.cc') or filename.endswith('.cxx')):
246
+ if os.path.splitext(filename)[1] in SOURCE_EXTS:
246
247
  filename = os.path.abspath(filename)
247
248
  self._scanner.lex_filename(filename)
248
249
  else:
@@ -263,7 +264,7 @@ class SourceScanner(object):
263
264
  return self._scanner.get_comments()
264
265
 
265
266
  def dump(self):
266
- print '-'*30
267
+ print '-' * 30
267
268
  for symbol in self._scanner.get_symbols():
268
269
  print symbol.ident, symbol.base_type.name, symbol.type
269
270
 
@@ -275,19 +276,17 @@ class SourceScanner(object):
275
276
 
276
277
  defines = ['__GI_SCANNER__']
277
278
  undefs = []
278
- cpp_exec = os.environ.get('CC', 'cc').split()
279
- # The Microsoft compiler/preprocessor (cl) does not accept
280
- # source input from stdin (the '-' flag), so we need
281
- # some help from gcc from MinGW/Cygwin or so.
282
- # Note that the generated dumper program is
283
- # still built and linked by Visual C++.
284
- if 'cl' in cpp_exec:
285
- cpp_args = 'gcc'.split()
286
- else:
287
- cpp_args = cpp_exec
279
+ cpp_args = os.environ.get('CC', 'cc').split() # support CC="ccache gcc"
280
+ if 'cl' in cpp_args:
281
+ # The Microsoft compiler/preprocessor (cl) does not accept
282
+ # source input from stdin (the '-' flag), so we need
283
+ # some help from gcc from MinGW/Cygwin or so.
284
+ # Note that the generated dumper program is
285
+ # still built and linked by Visual C++.
286
+ cpp_args = ['gcc']
288
287
  cpp_args += ['-E', '-C', '-I.', '-']
289
-
290
288
  cpp_args += self._cpp_options
289
+
291
290
  proc = subprocess.Popen(cpp_args,
292
291
  stdin=subprocess.PIPE,
293
292
  stdout=subprocess.PIPE)
@@ -303,8 +302,8 @@ class SourceScanner(object):
303
302
  proc.stdin.write('#include <%s>\n' % (filename, ))
304
303
  proc.stdin.close()
305
304
 
306
- tmp = tempfile.mktemp()
307
- fp = open(tmp, 'w+')
305
+ tmp_fd, tmp_name = tempfile.mkstemp()
306
+ fp = os.fdopen(tmp_fd, 'w+b')
308
307
  while True:
309
308
  data = proc.stdout.read(4096)
310
309
  if data is None:
@@ -321,4 +320,4 @@ class SourceScanner(object):
321
320
 
322
321
  self._scanner.parse_file(fp.fileno())
323
322
  fp.close()
324
- os.unlink(tmp)
323
+ os.unlink(tmp_name)
@@ -27,12 +27,14 @@ DEFAULT_C_VALUES = {ast.TYPE_ANY: 'NULL',
27
27
  ast.TYPE_FILENAME: '""',
28
28
  ast.TYPE_GTYPE: 'g_object_get_type ()'}
29
29
 
30
+
30
31
  def get_default_for_typeval(typeval):
31
32
  default = DEFAULT_C_VALUES.get(typeval)
32
33
  if default:
33
34
  return default
34
35
  return "0"
35
36
 
37
+
36
38
  def uscore_from_type(typeval):
37
39
  if typeval.target_fundamental:
38
40
  return typeval.target_fundamental.replace(' ', '_')
@@ -41,6 +43,7 @@ def uscore_from_type(typeval):
41
43
  else:
42
44
  assert False, typeval
43
45
 
46
+
44
47
  class EverythingCodeGenerator(object):
45
48
 
46
49
  def __init__(self, out_h_filename, out_c_filename):
@@ -34,6 +34,7 @@ from .sourcescanner import (
34
34
  CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
35
35
  TYPE_QUALIFIER_CONST, TYPE_QUALIFIER_VOLATILE)
36
36
 
37
+
37
38
  class TransformerException(Exception):
38
39
  pass
39
40
 
@@ -54,10 +55,9 @@ class Transformer(object):
54
55
  self._namespace = namespace
55
56
  self._pkg_config_packages = set()
56
57
  self._typedefs_ns = {}
57
- self._parsed_includes = {} # <string namespace -> Namespace>
58
+ self._parsed_includes = {} # <string namespace -> Namespace>
58
59
  self._includepaths = []
59
60
  self._passthrough_mode = False
60
- self._annotations = {}
61
61
 
62
62
  def get_pkgconfig_packages(self):
63
63
  return self._pkg_config_packages
@@ -68,9 +68,6 @@ class Transformer(object):
68
68
  def set_passthrough_mode(self):
69
69
  self._passthrough_mode = True
70
70
 
71
- def set_annotations(self, annotations):
72
- self._annotations = annotations
73
-
74
71
  def _append_new_node(self, node):
75
72
  original = self._namespace.get(node.name)
76
73
  # Special case constants here; we allow duplication to sort-of
@@ -108,7 +105,7 @@ class Transformer(object):
108
105
  if not ns_compound:
109
106
  ns_compound = self._namespace.get('_' + compound.name)
110
107
  if (not ns_compound and isinstance(compound, (ast.Record, ast.Union))
111
- and len(compound.fields) == 0):
108
+ and len(compound.fields) == 0):
112
109
  disguised = ast.Record(compound.name, typedef, disguised=True)
113
110
  self._namespace.append(disguised)
114
111
  elif not ns_compound:
@@ -130,8 +127,8 @@ class Transformer(object):
130
127
  def register_include_uninstalled(self, include_path):
131
128
  basename = os.path.basename(include_path)
132
129
  if not basename.endswith('.gir'):
133
- raise SystemExit(
134
- "Include path %r must be a filename path ending in .gir" % (include_path, ))
130
+ raise SystemExit("Include path %r must be a filename path "
131
+ "ending in .gir" % (include_path, ))
135
132
  girname = basename[:-4]
136
133
  include = ast.Include.from_string(girname)
137
134
  if include in self._namespace.includes:
@@ -179,8 +176,7 @@ None."""
179
176
  path = os.path.join(d, girname)
180
177
  if os.path.exists(path):
181
178
  return path
182
- sys.stderr.write("Couldn't find include %r (search path: %r)\n"\
183
- % (girname, searchdirs))
179
+ sys.stderr.write("Couldn't find include %r (search path: %r)\n" % (girname, searchdirs))
184
180
  sys.exit(1)
185
181
 
186
182
  @classmethod
@@ -232,7 +228,7 @@ currently-scanned namespace is first."""
232
228
 
233
229
  def _split_c_string_for_namespace_matches(self, name, is_identifier=False):
234
230
  matches = [] # Namespaces which might contain this name
235
- unprefixed_namespaces = [] # Namespaces with no prefix, last resort
231
+ unprefixed_namespaces = [] # Namespaces with no prefix, last resort
236
232
  for ns in self._iter_namespaces():
237
233
  if is_identifier:
238
234
  prefixes = ns.identifier_prefixes
@@ -289,7 +285,7 @@ raise ValueError."""
289
285
  ident = ident[1:]
290
286
  try:
291
287
  matches = self.split_ctype_namespaces(ident)
292
- except ValueError, e:
288
+ except ValueError as e:
293
289
  raise TransformerException(str(e))
294
290
  for ns, name in matches:
295
291
  if ns is self._namespace:
@@ -309,7 +305,7 @@ raise ValueError."""
309
305
  ident = ident[1:]
310
306
  try:
311
307
  (ns, name) = self.split_csymbol(ident)
312
- except ValueError, e:
308
+ except ValueError as e:
313
309
  raise TransformerException(str(e))
314
310
  if ns != self._namespace:
315
311
  raise TransformerException(
@@ -383,7 +379,7 @@ raise ValueError."""
383
379
  # prefix.
384
380
  try:
385
381
  name = self._strip_symbol(child)
386
- except TransformerException, e:
382
+ except TransformerException as e:
387
383
  message.warn_symbol(symbol, e)
388
384
  return None
389
385
  members.append(ast.Member(name.lower(),
@@ -393,7 +389,7 @@ raise ValueError."""
393
389
 
394
390
  try:
395
391
  enum_name = self.strip_identifier(symbol.ident)
396
- except TransformerException, e:
392
+ except TransformerException as e:
397
393
  message.warn_symbol(symbol, e)
398
394
  return None
399
395
  if symbol.base_type.is_bitfield:
@@ -412,7 +408,7 @@ raise ValueError."""
412
408
  return_ = self._create_return(symbol.base_type.base_type)
413
409
  try:
414
410
  name = self._strip_symbol(symbol)
415
- except TransformerException, e:
411
+ except TransformerException as e:
416
412
  message.warn_symbol(symbol, e)
417
413
  return None
418
414
  func = ast.Function(name, return_, parameters, False, symbol.ident)
@@ -506,8 +502,8 @@ raise ValueError."""
506
502
 
507
503
  def _create_member(self, symbol, parent_symbol=None):
508
504
  source_type = symbol.base_type
509
- if (source_type.type == CTYPE_POINTER and
510
- symbol.base_type.base_type.type == CTYPE_FUNCTION):
505
+ if (source_type.type == CTYPE_POINTER
506
+ and symbol.base_type.base_type.type == CTYPE_FUNCTION):
511
507
  node = self._create_callback(symbol, member=True)
512
508
  elif source_type.type == CTYPE_STRUCT and source_type.name is None:
513
509
  node = self._create_struct(symbol, anonymous=True)
@@ -523,8 +519,8 @@ raise ValueError."""
523
519
  # to be able to properly calculate the size of the compound
524
520
  # type (e.g. GValue) that contains this array, see
525
521
  # <https://bugzilla.gnome.org/show_bug.cgi?id=657040>.
526
- if (source_type.base_type.type == CTYPE_UNION and
527
- source_type.base_type.name is None):
522
+ if (source_type.base_type.type == CTYPE_UNION
523
+ and source_type.base_type.name is None):
528
524
  synthesized_type = self._synthesize_union_type(symbol, parent_symbol)
529
525
  ftype = ast.Array(None, synthesized_type, complete_ctype=complete_ctype)
530
526
  else:
@@ -562,11 +558,9 @@ raise ValueError."""
562
558
 
563
559
  def _create_typedef(self, symbol):
564
560
  ctype = symbol.base_type.type
565
- if (ctype == CTYPE_POINTER and
566
- symbol.base_type.base_type.type == CTYPE_FUNCTION):
561
+ if (ctype == CTYPE_POINTER and symbol.base_type.base_type.type == CTYPE_FUNCTION):
567
562
  node = self._create_typedef_callback(symbol)
568
- elif (ctype == CTYPE_POINTER and
569
- symbol.base_type.base_type.type == CTYPE_STRUCT):
563
+ elif (ctype == CTYPE_POINTER and symbol.base_type.base_type.type == CTYPE_STRUCT):
570
564
  node = self._create_typedef_struct(symbol, disguised=True)
571
565
  elif ctype == CTYPE_STRUCT:
572
566
  node = self._create_typedef_struct(symbol)
@@ -580,7 +574,7 @@ raise ValueError."""
580
574
  CTYPE_VOID):
581
575
  try:
582
576
  name = self.strip_identifier(symbol.ident)
583
- except TransformerException, e:
577
+ except TransformerException as e:
584
578
  message.warn(e)
585
579
  return None
586
580
  if symbol.base_type.name:
@@ -631,8 +625,7 @@ raise ValueError."""
631
625
  derefed_typename = canonical.replace('*', '')
632
626
 
633
627
  # Preserve "pointerness" of struct/union members
634
- if (is_member and canonical.endswith('*') and
635
- derefed_typename in ast.basic_type_names):
628
+ if (is_member and canonical.endswith('*') and derefed_typename in ast.basic_type_names):
636
629
  return 'gpointer'
637
630
  else:
638
631
  return derefed_typename
@@ -718,12 +711,11 @@ raise ValueError."""
718
711
 
719
712
  # Don't create constants for non-public things
720
713
  # http://bugzilla.gnome.org/show_bug.cgi?id=572790
721
- if (symbol.source_filename is None or
722
- not symbol.source_filename.endswith('.h')):
714
+ if (symbol.source_filename is None or not symbol.source_filename.endswith('.h')):
723
715
  return None
724
716
  try:
725
717
  name = self._strip_symbol(symbol)
726
- except TransformerException, e:
718
+ except TransformerException as e:
727
719
  message.warn_symbol(symbol, e)
728
720
  return None
729
721
  if symbol.const_string is not None:
@@ -742,13 +734,13 @@ raise ValueError."""
742
734
  if isinstance(target, ast.Type):
743
735
  unaliased = target
744
736
  if unaliased == ast.TYPE_UINT64:
745
- value = str(symbol.const_int % 2**64)
737
+ value = str(symbol.const_int % 2 ** 64)
746
738
  elif unaliased == ast.TYPE_UINT32:
747
- value = str(symbol.const_int % 2**32)
739
+ value = str(symbol.const_int % 2 ** 32)
748
740
  elif unaliased == ast.TYPE_UINT16:
749
- value = str(symbol.const_int % 2**16)
741
+ value = str(symbol.const_int % 2 ** 16)
750
742
  elif unaliased == ast.TYPE_UINT8:
751
- value = str(symbol.const_int % 2**16)
743
+ value = str(symbol.const_int % 2 ** 16)
752
744
  else:
753
745
  value = str(symbol.const_int)
754
746
  elif symbol.const_double is not None:
@@ -765,7 +757,7 @@ raise ValueError."""
765
757
  def _create_typedef_struct(self, symbol, disguised=False):
766
758
  try:
767
759
  name = self.strip_identifier(symbol.ident)
768
- except TransformerException, e:
760
+ except TransformerException as e:
769
761
  message.warn_symbol(symbol, e)
770
762
  return None
771
763
  struct = ast.Record(name, symbol.ident, disguised=disguised)
@@ -777,7 +769,7 @@ raise ValueError."""
777
769
  def _create_typedef_union(self, symbol):
778
770
  try:
779
771
  name = self.strip_identifier(symbol.ident)
780
- except TransformerException, e:
772
+ except TransformerException as e:
781
773
  message.warn(e)
782
774
  return None
783
775
  union = ast.Union(name, symbol.ident)
@@ -825,7 +817,7 @@ raise ValueError."""
825
817
  else:
826
818
  try:
827
819
  name = self.strip_identifier(symbol.ident)
828
- except TransformerException, e:
820
+ except TransformerException as e:
829
821
  message.warn(e)
830
822
  return None
831
823
  compound = klass(name, symbol.ident)
@@ -846,8 +838,7 @@ raise ValueError."""
846
838
 
847
839
  # Mark the 'user_data' arguments
848
840
  for i, param in enumerate(parameters):
849
- if (param.type.target_fundamental == 'gpointer' and
850
- param.argname == 'user_data'):
841
+ if (param.type.target_fundamental == 'gpointer' and param.argname == 'user_data'):
851
842
  param.closure_name = param.argname
852
843
 
853
844
  if member:
@@ -855,13 +846,13 @@ raise ValueError."""
855
846
  elif symbol.ident.find('_') > 0:
856
847
  try:
857
848
  name = self._strip_symbol(symbol)
858
- except TransformerException, e:
849
+ except TransformerException as e:
859
850
  message.warn_symbol(symbol, e)
860
851
  return None
861
852
  else:
862
853
  try:
863
854
  name = self.strip_identifier(symbol.ident)
864
- except TransformerException, e:
855
+ except TransformerException as e:
865
856
  message.warn(e)
866
857
  return None
867
858
  callback = ast.Callback(name, retval, parameters, False,
@@ -22,7 +22,10 @@ import re
22
22
  import os
23
23
  import subprocess
24
24
 
25
+
25
26
  _debugflags = None
27
+
28
+
26
29
  def have_debug_flag(flag):
27
30
  """Check for whether a specific debugging feature is enabled.
28
31
  Well-known flags:
@@ -38,6 +41,7 @@ Well-known flags:
38
41
  _debugflags.remove('')
39
42
  return flag in _debugflags
40
43
 
44
+
41
45
  def break_on_debug_flag(flag):
42
46
  if have_debug_flag(flag):
43
47
  import pdb
@@ -69,8 +73,10 @@ def to_underscores_noprefix(name):
69
73
  name = _upperstr_pat2.sub(r'\1_\2', name)
70
74
  return name
71
75
 
76
+
72
77
  _libtool_pat = re.compile("dlname='([A-z0-9\.\-\+]+)'\n")
73
78
 
79
+
74
80
  def _extract_dlname_field(la_file):
75
81
  f = open(la_file)
76
82
  data = f.read()
@@ -81,6 +87,7 @@ def _extract_dlname_field(la_file):
81
87
  else:
82
88
  return None
83
89
 
90
+
84
91
  # Returns the name that we would pass to dlopen() the library
85
92
  # corresponding to this .la file
86
93
  def extract_libtool_shlib(la_file):
@@ -92,6 +99,7 @@ def extract_libtool_shlib(la_file):
92
99
  # a path rather than the raw dlname
93
100
  return os.path.basename(dlname)
94
101
 
102
+
95
103
  def extract_libtool(la_file):
96
104
  dlname = _extract_dlname_field(la_file)
97
105
  if dlname is None:
@@ -104,6 +112,7 @@ def extract_libtool(la_file):
104
112
  libname = libname.replace('.libs/.libs', '.libs')
105
113
  return libname
106
114
 
115
+
107
116
  # Returns arguments for invoking libtool, if applicable, otherwise None
108
117
  def get_libtool_command(options):
109
118
  libtool_infection = not options.nolibtool