gobject-introspection 2.0.0-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 (268) hide show
  1. data/Rakefile +118 -0
  2. data/ext/gobject-introspection/depend +10 -0
  3. data/ext/gobject-introspection/extconf.rb +97 -0
  4. data/ext/gobject-introspection/gobject_introspection.def +5 -0
  5. data/ext/gobject-introspection/rb-gi-arg-info.c +151 -0
  6. data/ext/gobject-introspection/rb-gi-argument.c +1015 -0
  7. data/ext/gobject-introspection/rb-gi-base-info.c +218 -0
  8. data/ext/gobject-introspection/rb-gi-boxed-info.c +48 -0
  9. data/ext/gobject-introspection/rb-gi-callable-info.c +104 -0
  10. data/ext/gobject-introspection/rb-gi-callback-info.c +48 -0
  11. data/ext/gobject-introspection/rb-gi-constant-info.c +77 -0
  12. data/ext/gobject-introspection/rb-gi-constructor-info.c +120 -0
  13. data/ext/gobject-introspection/rb-gi-conversions.h +116 -0
  14. data/ext/gobject-introspection/rb-gi-enum-info.c +145 -0
  15. data/ext/gobject-introspection/rb-gi-field-info.c +153 -0
  16. data/ext/gobject-introspection/rb-gi-flags-info.c +48 -0
  17. data/ext/gobject-introspection/rb-gi-function-info.c +658 -0
  18. data/ext/gobject-introspection/rb-gi-interface-info.c +222 -0
  19. data/ext/gobject-introspection/rb-gi-loader.c +162 -0
  20. data/ext/gobject-introspection/rb-gi-method-info.c +109 -0
  21. data/ext/gobject-introspection/rb-gi-object-info.c +345 -0
  22. data/ext/gobject-introspection/rb-gi-private.h +110 -0
  23. data/ext/gobject-introspection/rb-gi-property-info.c +77 -0
  24. data/ext/gobject-introspection/rb-gi-registered-type-info.c +86 -0
  25. data/ext/gobject-introspection/rb-gi-repository.c +164 -0
  26. data/ext/gobject-introspection/rb-gi-signal-info.c +77 -0
  27. data/ext/gobject-introspection/rb-gi-struct-info.c +190 -0
  28. data/ext/gobject-introspection/rb-gi-type-info.c +143 -0
  29. data/ext/gobject-introspection/rb-gi-type-tag.c +43 -0
  30. data/ext/gobject-introspection/rb-gi-types.h +71 -0
  31. data/ext/gobject-introspection/rb-gi-union-info.c +206 -0
  32. data/ext/gobject-introspection/rb-gi-unresolved-info.c +48 -0
  33. data/ext/gobject-introspection/rb-gi-value-info.c +57 -0
  34. data/ext/gobject-introspection/rb-gi-vfunc-info.c +91 -0
  35. data/ext/gobject-introspection/rb-gobject-introspection.c +44 -0
  36. data/ext/gobject-introspection/rb-gobject-introspection.h +57 -0
  37. data/extconf.rb +71 -0
  38. data/lib/1.9/gobject_introspection.so +0 -0
  39. data/lib/2.0/gobject_introspection.so +0 -0
  40. data/lib/gobject-introspection.rb +52 -0
  41. data/lib/gobject-introspection/callable-info.rb +91 -0
  42. data/lib/gobject-introspection/collection-reader.rb +34 -0
  43. data/lib/gobject-introspection/interface-info.rb +32 -0
  44. data/lib/gobject-introspection/loader.rb +328 -0
  45. data/lib/gobject-introspection/object-info.rb +33 -0
  46. data/lib/gobject-introspection/repository.rb +32 -0
  47. data/lib/gobject-introspection/struct-info.rb +28 -0
  48. data/lib/gobject-introspection/union-info.rb +28 -0
  49. data/test/gobject-introspection-test-utils.rb +26 -0
  50. data/test/run-test.rb +45 -0
  51. data/test/test-arg-info.rb +68 -0
  52. data/test/test-base-info.rb +31 -0
  53. data/test/test-boxed-info.rb +21 -0
  54. data/test/test-callable-info.rb +49 -0
  55. data/test/test-callback-info.rb +29 -0
  56. data/test/test-constant-info.rb +24 -0
  57. data/test/test-enum-info.rb +56 -0
  58. data/test/test-field-type.rb +42 -0
  59. data/test/test-flags-info.rb +27 -0
  60. data/test/test-function-info.rb +37 -0
  61. data/test/test-interface-info.rb +97 -0
  62. data/test/test-loader.rb +30 -0
  63. data/test/test-object-info.rb +131 -0
  64. data/test/test-property-info.rb +38 -0
  65. data/test/test-registered-type-info.rb +35 -0
  66. data/test/test-repository.rb +59 -0
  67. data/test/test-signal-info.rb +37 -0
  68. data/test/test-struct-info.rb +57 -0
  69. data/test/test-type-info.rb +62 -0
  70. data/test/test-type-tag.rb +29 -0
  71. data/test/test-union-info.rb +21 -0
  72. data/test/test-value-info.rb +28 -0
  73. data/test/test-vfunc-info.rb +42 -0
  74. data/vendor/local/bin/g-ir-compiler.exe +0 -0
  75. data/vendor/local/bin/g-ir-generate.exe +0 -0
  76. data/vendor/local/bin/libgirepository-1.0-1.dll +0 -0
  77. data/vendor/local/include/gobject-introspection-1.0/giarginfo.h +52 -0
  78. data/vendor/local/include/gobject-introspection-1.0/gibaseinfo.h +89 -0
  79. data/vendor/local/include/gobject-introspection-1.0/gicallableinfo.h +74 -0
  80. data/vendor/local/include/gobject-introspection-1.0/giconstantinfo.h +46 -0
  81. data/vendor/local/include/gobject-introspection-1.0/gienuminfo.h +56 -0
  82. data/vendor/local/include/gobject-introspection-1.0/gifieldinfo.h +52 -0
  83. data/vendor/local/include/gobject-introspection-1.0/gifunctioninfo.h +77 -0
  84. data/vendor/local/include/gobject-introspection-1.0/giinterfaceinfo.h +68 -0
  85. data/vendor/local/include/gobject-introspection-1.0/giobjectinfo.h +137 -0
  86. data/vendor/local/include/gobject-introspection-1.0/gipropertyinfo.h +44 -0
  87. data/vendor/local/include/gobject-introspection-1.0/giregisteredtypeinfo.h +53 -0
  88. data/vendor/local/include/gobject-introspection-1.0/girepository.h +179 -0
  89. data/vendor/local/include/gobject-introspection-1.0/girffi.h +80 -0
  90. data/vendor/local/include/gobject-introspection-1.0/gisignalinfo.h +45 -0
  91. data/vendor/local/include/gobject-introspection-1.0/gistructinfo.h +53 -0
  92. data/vendor/local/include/gobject-introspection-1.0/gitypeinfo.h +56 -0
  93. data/vendor/local/include/gobject-introspection-1.0/gitypelib.h +55 -0
  94. data/vendor/local/include/gobject-introspection-1.0/gitypes.h +453 -0
  95. data/vendor/local/include/gobject-introspection-1.0/giunioninfo.h +57 -0
  96. data/vendor/local/include/gobject-introspection-1.0/givfuncinfo.h +56 -0
  97. data/vendor/local/lib/girepository-1.0/DBus-1.0.typelib +0 -0
  98. data/vendor/local/lib/girepository-1.0/DBusGLib-1.0.typelib +0 -0
  99. data/vendor/local/lib/girepository-1.0/GIRepository-2.0.typelib +0 -0
  100. data/vendor/local/lib/girepository-1.0/GL-1.0.typelib +0 -0
  101. data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
  102. data/vendor/local/lib/girepository-1.0/GModule-2.0.typelib +0 -0
  103. data/vendor/local/lib/girepository-1.0/GObject-2.0.typelib +0 -0
  104. data/vendor/local/lib/girepository-1.0/Gio-2.0.typelib +0 -0
  105. data/vendor/local/lib/girepository-1.0/cairo-1.0.typelib +0 -0
  106. data/vendor/local/lib/girepository-1.0/fontconfig-2.0.typelib +0 -0
  107. data/vendor/local/lib/girepository-1.0/freetype2-2.0.typelib +0 -0
  108. data/vendor/local/lib/girepository-1.0/libxml2-2.0.typelib +0 -0
  109. data/vendor/local/lib/girepository-1.0/xfixes-4.0.typelib +0 -0
  110. data/vendor/local/lib/girepository-1.0/xft-2.0.typelib +0 -0
  111. data/vendor/local/lib/girepository-1.0/xlib-2.0.typelib +0 -0
  112. data/vendor/local/lib/girepository-1.0/xrandr-1.3.typelib +0 -0
  113. data/vendor/local/lib/gobject-introspection/giscanner/__init__.py +24 -0
  114. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyc +0 -0
  115. data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyo +0 -0
  116. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.py +74 -0
  117. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyc +0 -0
  118. data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
  119. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.py +1204 -0
  120. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyc +0 -0
  121. data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyo +0 -0
  122. data/vendor/local/lib/gobject-introspection/giscanner/ast.py +1100 -0
  123. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyc +0 -0
  124. data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
  125. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.py +196 -0
  126. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyc +0 -0
  127. data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyo +0 -0
  128. data/vendor/local/lib/gobject-introspection/giscanner/codegen.py +140 -0
  129. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyc +0 -0
  130. data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -0
  131. data/vendor/local/lib/gobject-introspection/giscanner/docmain.py +60 -0
  132. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyc +0 -0
  133. data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyo +0 -0
  134. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/class.tmpl +2 -0
  135. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/constructor.tmpl +1 -0
  136. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/default.tmpl +1 -0
  137. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/enum.tmpl +2 -0
  138. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/function.tmpl +61 -0
  139. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/method.tmpl +1 -0
  140. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/namespace.tmpl +1 -0
  141. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/property.tmpl +5 -0
  142. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/record.tmpl +1 -0
  143. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/signal.tmpl +5 -0
  144. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/vfunc.tmpl +4 -0
  145. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/class.tmpl +18 -0
  146. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/constructor.tmpl +1 -0
  147. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/default.tmpl +1 -0
  148. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/enum.tmpl +13 -0
  149. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/function.tmpl +48 -0
  150. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/method.tmpl +1 -0
  151. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/namespace.tmpl +2 -0
  152. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/property.tmpl +10 -0
  153. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/record.tmpl +2 -0
  154. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/signal.tmpl +37 -0
  155. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/vfunc.tmpl +27 -0
  156. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/class.tmpl +17 -0
  157. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/constructor.tmpl +1 -0
  158. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/default.tmpl +1 -0
  159. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/enum.tmpl +13 -0
  160. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/function.tmpl +53 -0
  161. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/method.tmpl +1 -0
  162. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/namespace.tmpl +2 -0
  163. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/property.tmpl +10 -0
  164. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/record.tmpl +2 -0
  165. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/signal.tmpl +42 -0
  166. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/vfunc.tmpl +33 -0
  167. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/base.tmpl +29 -0
  168. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/class.tmpl +40 -0
  169. data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/namespace.tmpl +19 -0
  170. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.py +635 -0
  171. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyc +0 -0
  172. data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
  173. data/vendor/local/lib/gobject-introspection/giscanner/dumper.py +363 -0
  174. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyc +0 -0
  175. data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyo +0 -0
  176. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.py +551 -0
  177. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyc +0 -0
  178. data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
  179. data/vendor/local/lib/gobject-introspection/giscanner/girparser.py +581 -0
  180. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyc +0 -0
  181. data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyo +0 -0
  182. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.py +584 -0
  183. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyc +0 -0
  184. data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyo +0 -0
  185. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.py +236 -0
  186. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyc +0 -0
  187. data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyo +0 -0
  188. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.py +76 -0
  189. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc +0 -0
  190. data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo +0 -0
  191. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.py +1337 -0
  192. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyc +0 -0
  193. data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
  194. data/vendor/local/lib/gobject-introspection/giscanner/message.py +185 -0
  195. data/vendor/local/lib/gobject-introspection/giscanner/message.pyc +0 -0
  196. data/vendor/local/lib/gobject-introspection/giscanner/message.pyo +0 -0
  197. data/vendor/local/lib/gobject-introspection/giscanner/odict.py +50 -0
  198. data/vendor/local/lib/gobject-introspection/giscanner/odict.pyc +0 -0
  199. data/vendor/local/lib/gobject-introspection/giscanner/odict.pyo +0 -0
  200. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.py +497 -0
  201. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyc +0 -0
  202. data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyo +0 -0
  203. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.py +78 -0
  204. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyc +0 -0
  205. data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyo +0 -0
  206. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.py +132 -0
  207. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyc +0 -0
  208. data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
  209. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.py +324 -0
  210. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyc +0 -0
  211. data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyo +0 -0
  212. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.py +119 -0
  213. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyc +0 -0
  214. data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
  215. data/vendor/local/lib/gobject-introspection/giscanner/transformer.py +999 -0
  216. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyc +0 -0
  217. data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyo +0 -0
  218. data/vendor/local/lib/gobject-introspection/giscanner/utils.py +141 -0
  219. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyc +0 -0
  220. data/vendor/local/lib/gobject-introspection/giscanner/utils.pyo +0 -0
  221. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.py +197 -0
  222. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyc +0 -0
  223. data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyo +0 -0
  224. data/vendor/local/lib/libgirepository-1.0.a +0 -0
  225. data/vendor/local/lib/libgirepository-1.0.dll.a +0 -0
  226. data/vendor/local/lib/libgirepository-1.0.la +41 -0
  227. data/vendor/local/lib/pkgconfig/gobject-introspection-1.0.pc +26 -0
  228. data/vendor/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc +23 -0
  229. data/vendor/local/share/aclocal/introspection.m4 +96 -0
  230. data/vendor/local/share/gir-1.0/DBus-1.0.gir +32 -0
  231. data/vendor/local/share/gir-1.0/DBusGLib-1.0.gir +18 -0
  232. data/vendor/local/share/gir-1.0/GIRepository-2.0.gir +3833 -0
  233. data/vendor/local/share/gir-1.0/GL-1.0.gir +31 -0
  234. data/vendor/local/share/gir-1.0/GLib-2.0.gir +44304 -0
  235. data/vendor/local/share/gir-1.0/GModule-2.0.gir +184 -0
  236. data/vendor/local/share/gir-1.0/GObject-2.0.gir +13947 -0
  237. data/vendor/local/share/gir-1.0/Gio-2.0.gir +73619 -0
  238. data/vendor/local/share/gir-1.0/cairo-1.0.gir +70 -0
  239. data/vendor/local/share/gir-1.0/fontconfig-2.0.gir +18 -0
  240. data/vendor/local/share/gir-1.0/freetype2-2.0.gir +22 -0
  241. data/vendor/local/share/gir-1.0/libxml2-2.0.gir +25 -0
  242. data/vendor/local/share/gir-1.0/xfixes-4.0.gir +10 -0
  243. data/vendor/local/share/gir-1.0/xft-2.0.gir +23 -0
  244. data/vendor/local/share/gir-1.0/xlib-2.0.gir +67 -0
  245. data/vendor/local/share/gir-1.0/xrandr-1.3.gir +16 -0
  246. data/vendor/local/share/gobject-introspection-1.0/Makefile.introspection +166 -0
  247. data/vendor/local/share/gobject-introspection-1.0/gdump.c +564 -0
  248. data/vendor/local/share/gobject-introspection-1.0/tests/annotation.c +835 -0
  249. data/vendor/local/share/gobject-introspection-1.0/tests/annotation.h +198 -0
  250. data/vendor/local/share/gobject-introspection-1.0/tests/drawable.c +55 -0
  251. data/vendor/local/share/gobject-introspection-1.0/tests/drawable.h +33 -0
  252. data/vendor/local/share/gobject-introspection-1.0/tests/everything.c +1473 -0
  253. data/vendor/local/share/gobject-introspection-1.0/tests/everything.h +428 -0
  254. data/vendor/local/share/gobject-introspection-1.0/tests/foo.c +790 -0
  255. data/vendor/local/share/gobject-introspection-1.0/tests/foo.h +437 -0
  256. data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c +5256 -0
  257. data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h +1158 -0
  258. data/vendor/local/share/gobject-introspection-1.0/tests/regress.c +4009 -0
  259. data/vendor/local/share/gobject-introspection-1.0/tests/regress.h +944 -0
  260. data/vendor/local/share/gobject-introspection-1.0/tests/utility.c +45 -0
  261. data/vendor/local/share/gobject-introspection-1.0/tests/utility.h +95 -0
  262. data/vendor/local/share/gobject-introspection-1.0/tests/warnlib.c +33 -0
  263. data/vendor/local/share/gobject-introspection-1.0/tests/warnlib.h +36 -0
  264. data/vendor/local/share/license/gobject-introspection/AUTHORS +9 -0
  265. data/vendor/local/share/license/gobject-introspection/COPYING +12 -0
  266. data/vendor/local/share/man/man1/g-ir-compiler.1 +51 -0
  267. data/vendor/local/share/man/man1/g-ir-generate.1 +29 -0
  268. metadata +343 -0
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
5
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
6
+ <package name="cairo-gobject"/>
7
+ <namespace name="cairo" version="1.0"
8
+ shared-library="libcairo-gobject-2.dll"
9
+ c:identifier-prefixes="cairo"
10
+ c:symbol-prefixes="cairo">
11
+ <record name="Context" c:type="cairo_t" foreign="1"
12
+ glib:type-name="CairoContext"
13
+ glib:get-type="cairo_gobject_context_get_type"/>
14
+ <record name="Surface" c:type="cairo_surface_t" foreign="1"
15
+ glib:type-name="CairoSurface"
16
+ glib:get-type="cairo_gobject_surface_get_type"/>
17
+ <record name="Matrix" c:type="cairo_matrix_t" foreign="1"/>
18
+ <record name="Pattern" c:type="cairo_pattern_t" foreign="1"
19
+ glib:type-name="CairoPattern"
20
+ glib:get-type="cairo_gobject_pattern_get_type"/>
21
+ <record name="Region" c:type="cairo_region_t" foreign="1"
22
+ glib:type-name="CairoRegion"
23
+ glib:get-type="cairo_gobject_region_get_type"/>
24
+ <enumeration name="Content" c:type="cairo_content_t"
25
+ glib:type-name="CairoContent"
26
+ glib:get-type="cairo_gobject_content_get_type">
27
+ <member name="COLOR"
28
+ value="4096"
29
+ c:identifier="CAIRO_CONTENT_COLOR"/>
30
+ <member name="ALPHA"
31
+ value="8192"
32
+ c:identifier="CAIRO_CONTENT_ALPHA"/>
33
+ <member name="COLOR_ALPHA"
34
+ value="12288"
35
+ c:identifier="CAIRO_CONTENT_COLOR_ALPHA"/>
36
+ </enumeration>
37
+ <record name="FontOptions" c:type="cairo_font_options_t" foreign="1"/>
38
+ <record name="FontType" c:type="cairo_font_type_t" foreign="1"/>
39
+ <record name="FontFace" c:type="cairo_font_face_t" foreign="1"
40
+ glib:type-name="CairoFontFace"
41
+ glib:get-type="cairo_gobject_font_face_get_type"/>
42
+ <record name="ScaledFont" c:type="cairo_scaled_font_t" foreign="1"
43
+ glib:type-name="CairoScaledFont"
44
+ glib:get-type="cairo_gobject_scaled_font_get_type"/>
45
+ <record name="Path" c:type="cairo_path_t" foreign="1"/>
46
+ <record name="RectangleInt" c:type="cairo_rectangle_int_t"
47
+ glib:type-name="CairoRectangleInt"
48
+ glib:get-type="cairo_gobject_rectangle_int_get_type">
49
+ <field name="x" writable="1">
50
+ <type name="gint" c:type="gint"/>
51
+ </field>
52
+ <field name="y" writable="1">
53
+ <type name="gint" c:type="gint"/>
54
+ </field>
55
+ <field name="width" writable="1">
56
+ <type name="gint" c:type="gint"/>
57
+ </field>
58
+ <field name="height" writable="1">
59
+ <type name="gint" c:type="gint"/>
60
+ </field>
61
+ </record>
62
+ <function name="image_surface_create" c:identifier="cairo_image_surface_create">
63
+ <return-value transfer-ownership="none">
64
+ <type name="none" c:type="void"/>
65
+ </return-value>
66
+ <parameters>
67
+ </parameters>
68
+ </function>
69
+ </namespace>
70
+ </repository>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <namespace name="fontconfig" version="2.0"
6
+ c:identifier-prefixes="Fc"
7
+ c:symbol-prefixes="fc">
8
+ <record name="Pattern" c:type="FcPattern"/>
9
+ <record name="CharSet" c:type="FcCharSet"/>
10
+ <function name="init" c:identifier="FcInit">
11
+ <return-value transfer-ownership="none">
12
+ <type name="none" c:type="void"/>
13
+ </return-value>
14
+ <parameters>
15
+ </parameters>
16
+ </function>
17
+ </namespace>
18
+ </repository>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <namespace name="freetype2" version="2.0"
6
+ c:identifier-prefixes="FT"
7
+ c:symbol-prefixes="FT">
8
+ <record name="Bitmap" c:type="FT_Bitmap"/>
9
+ <record name="Face" c:type="FT_Face"/>
10
+ <record name="Library" c:type="FT_Library"/>
11
+ <alias name="Int32" c:type="FT_Int32">
12
+ <type name="int32"/>
13
+ </alias>
14
+ <function name="library_version" c:identifier="FT_Library_Version">
15
+ <return-value transfer-ownership="none">
16
+ <type name="none" c:type="void"/>
17
+ </return-value>
18
+ <parameters>
19
+ </parameters>
20
+ </function>
21
+ </namespace>
22
+ </repository>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <package name="libxml-2.0"/>
6
+ <namespace name="libxml2" version="2.0"
7
+ c:identifier-prefixes="xml"
8
+ c:symbol-prefixes="xml">
9
+ <record name="Node" c:type="xmlNode"/>
10
+ <record name="NodePtr" c:type="xmlNodePtr"/>
11
+ <record name="Doc" c:type="xmlDoc"/>
12
+ <record name="DocPtr" c:type="xmlDocPtr"/>
13
+ <record name="NsPtr" c:type="xmlNsPtr"/>
14
+ <record name="Char" c:type="xmlChar"/>
15
+ <record name="TextWriter" c:type="xmlTextWriterPtr"/>
16
+ <record name="TextReader" c:type="xmlTextReaderPtr"/>
17
+ <function name="dummy" c:identifier="dummy">
18
+ <return-value transfer-ownership="none">
19
+ <type name="none" c:type="void"/>
20
+ </return-value>
21
+ <parameters>
22
+ </parameters>
23
+ </function>
24
+ </namespace>
25
+ </repository>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <namespace name="xfixes" version="4.0"
6
+ c:identifier-prefixes="X"
7
+ c:symbol-prefixes="X">
8
+ <record name="XserverRegion" c:type="XserverRegion"/>
9
+ </namespace>
10
+ </repository>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <include name="xlib" version="2.0"/>
6
+ <namespace name="xft" version="2.0"
7
+ c:identifier-prefixes="Xft"
8
+ c:symbol-prefixes="Xft">
9
+ <record name="Color" c:type="XftColor"/>
10
+ <record name="Draw" c:type="XftDraw"/>
11
+ <record name="Font" c:type="XftFont"/>
12
+ <record name="GlyphSpec" c:type="XftGlyphSpec"/>
13
+
14
+ <function name="init" c:identifier="XftInit">
15
+ <return-value transfer-ownership="none">
16
+ <type name="none" c:type="void"/>
17
+ </return-value>
18
+ <parameters>
19
+ </parameters>
20
+ </function>
21
+
22
+ </namespace>
23
+ </repository>
@@ -0,0 +1,67 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <namespace name="xlib" version="2.0"
6
+ c:identifier-prefixes=""
7
+ c:symbol-prefixes="X">
8
+ <alias name="Atom" c:type="Atom">
9
+ <type name="gulong" c:type="gulong"/>
10
+ </alias>
11
+ <alias name="Colormap" c:type="Colormap">
12
+ <type name="gulong" c:type="gulong"/>
13
+ </alias>
14
+ <alias name="Cursor" c:type="Cursor">
15
+ <type name="gulong" c:type="gulong"/>
16
+ </alias>
17
+ <record name="Display" c:type="Display"/>
18
+ <alias name="Drawable" c:type="Drawable">
19
+ <type name="gulong" c:type="gulong"/>
20
+ </alias>
21
+ <alias name="GC" c:type="GC">
22
+ <type name="gpointer" c:type="gpointer"/>
23
+ </alias>
24
+ <alias name="KeyCode" c:type="KeyCode">
25
+ <type name="guint8" c:type="guint8"/>
26
+ </alias>
27
+ <alias name="KeySym" c:type="KeySym">
28
+ <type name="gulong" c:type="gulong"/>
29
+ </alias>
30
+ <alias name="Picture" c:type="Picture">
31
+ <type name="gulong" c:type="gulong"/>
32
+ </alias>
33
+ <record name="Screen" c:type="Screen"/>
34
+ <alias name="Time" c:type="Time">
35
+ <type name="gulong" c:type="gulong"/>
36
+ </alias>
37
+ <record name="Visual" c:type="Visual"/>
38
+ <alias name="VisualID" c:type="VisualID">
39
+ <type name="gulong" c:type="gulong"/>
40
+ </alias>
41
+ <alias name="Window" c:type="Window">
42
+ <type name="gulong" c:type="gulong"/>
43
+ </alias>
44
+ <union name="XEvent" c:type="XEvent"/>
45
+ <record name="XConfigureEvent" c:type="XConfigureEvent"/>
46
+ <alias name="XID" c:type="XID">
47
+ <type name="gulong" c:type="gulong"/>
48
+ </alias>
49
+ <alias name="Pixmap" c:type="Pixmap">
50
+ <type name="gulong" c:type="gulong"/>
51
+ </alias>
52
+ <record name="XImage" c:type="XImage"/>
53
+ <record name="XFontStruct" c:type="XFontStruct"/>
54
+ <record name="XTrapezoid" c:type="XTrapezoid"/>
55
+ <record name="XVisualInfo" c:type="XVisualInfo"/>
56
+ <record name="XWindowAttributes" c:type="XWindowAttributes"/>
57
+
58
+ <function name="open_display" c:identifier="XOpenDisplay">
59
+ <return-value transfer-ownership="none">
60
+ <type name="none" c:type="void"/>
61
+ </return-value>
62
+ <parameters>
63
+ </parameters>
64
+ </function>
65
+
66
+ </namespace>
67
+ </repository>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0"?>
2
+ <repository version="1.2"
3
+ xmlns="http://www.gtk.org/introspection/core/1.0"
4
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
5
+ <namespace name="xrandr" version="1.3"
6
+ c:identifier-prefixes="XRR"
7
+ c:symbol-prefixes="XRR">
8
+ <record name="ScreenSize" c:type="XRRScreenSize"/>
9
+ <record name="ScreenChangeNotifyEvent" c:type="XRRScreenChangeNotifyEvent"/>
10
+ <record name="NotifyEvent" c:type="XRRNotifyEvent"/>
11
+ <record name="ScreenResources" c:type="XRRScreenResources"/>
12
+ <record name="OutputChangeNotifyEvent" c:type="XRROutputChangeNotifyEvent"/>
13
+ <record name="CrtcChangeNotifyEvent" c:type="XRRCrtcChangeNotifyEvent"/>
14
+ <record name="OutputPropertyNotifyEvent" c:type="XRROutputPropertyNotifyEvent"/>
15
+ </namespace>
16
+ </repository>
@@ -0,0 +1,166 @@
1
+ # -*- Mode: make -*-
2
+ # Copyright 2009-2010 Johan Dahlin
3
+ #
4
+ # This file is free software; the author(s) gives unlimited
5
+ # permission to copy and/or distribute it, with or without
6
+ # modifications, as long as this notice is preserved.
7
+ #
8
+ # * Input variables:
9
+ #
10
+ # INTROSPECTION_GIRS - List of GIRS that should be generated
11
+ # INTROSPECTION_SCANNER - Command to invoke scanner, normally set by
12
+ # GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
13
+ # INTROSPECTION_SCANNER_ARGS - Additional args to pass in to the scanner
14
+ # INTROSPECTION_SCANNER_ENV - Environment variables to set before running
15
+ # the scanner
16
+ # INTROSPECTION_COMPILER - Command to invoke compiler, normally set by
17
+ # GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
18
+ # INTROSPECTION_COMPILER_ARGS - Additional args to pass in to the compiler
19
+ #
20
+ # * Simple tutorial
21
+ #
22
+ # Add this to configure.ac:
23
+ # -Wno-portability to AM_INIT_AUTOMAKE
24
+ # GOBJECT_INTROSPECTION_CHECK([0.6.7])
25
+ #
26
+ # Add this to Makefile.am where your library/program is built:
27
+ # include $(INTROSPECTION_MAKEFILE)
28
+ # INTROSPECTION_GIRS = YourLib-1.0.gir
29
+ # YourLib-1.0.gir: libyourlib.la
30
+ # YourLib_1_0_gir_NAMESPACE = YourLib
31
+ # YourLib_1_0_gir_VERSION = 1.0
32
+ # YourLib_1_0_gir_LIBS = libyourlib.la
33
+ # YourLib_1_0_gir_FILES = $(libyourlib_1_0_SOURCES)
34
+ # girdir = $(datadir)/gir-1.0
35
+ # dist_gir_DATA = YourLib-1.0.gir
36
+ # typelibdir = $(libdir)/girepository-1.0
37
+ # typelib_DATA = YourLib-1.0.typelib
38
+ # CLEANFILES = $(dist_gir_DATA) $(typelib_DATA)
39
+ #
40
+
41
+ # Make sure the required variables are set, these should under normal
42
+ # circumstances come from introspection.m4
43
+ $(if $(INTROSPECTION_SCANNER),,$(error Need to define INTROSPECTION_SCANNER))
44
+ $(if $(INTROSPECTION_COMPILER),,$(error Need to define INTROSPECTION_COMPILER))
45
+
46
+ # Private functions
47
+
48
+ ## Transform the gir filename to something which can reference through a variable
49
+ ## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
50
+ _gir_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
51
+
52
+ # Namespace and Version is either fetched from the gir filename
53
+ # or the _NAMESPACE/_VERSION variable combo
54
+ _gir_namespace = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
55
+ _gir_version = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
56
+
57
+ # _PROGRAM is an optional variable which needs it's own --program argument
58
+ _gir_program = $(if $($(_gir_name)_PROGRAM),--program=$($(_gir_name)_PROGRAM))
59
+
60
+ # Variables which provides a list of things
61
+ _gir_libraries = $(foreach lib,$($(_gir_name)_LIBS),--library=$(lib))
62
+ _gir_packages = $(foreach pkg,$($(_gir_name)_PACKAGES),--pkg=$(pkg))
63
+ _gir_includes = $(foreach include,$($(_gir_name)_INCLUDES),--include=$(include))
64
+ _gir_export_packages = $(foreach pkg,$($(_gir_name)_EXPORT_PACKAGES),--pkg-export=$(pkg))
65
+
66
+ # Reuse the LIBTOOL variable from automake if it's set, but
67
+ # work around MSYS weirdness: When running g-ir-scanner, MSYS changes
68
+ # a command-line argument --libtool="/bin/sh ../../libtool" into
69
+ # --libtool=c:/opt/msys/1.0/bin/libtool. So just use sh.exe without path
70
+ # because we already "know" where the libtool configure produced is.
71
+ _gir_libtool = $(if $(findstring MINGW32,$(shell uname -s)),--libtool="$(top_builddir)/libtool",$(if $(LIBTOOL),--libtool="$(LIBTOOL)"))
72
+
73
+ # Macros for AM_SILENT_RULES prettiness
74
+ _gir_verbosity = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
75
+
76
+ _gir_silent_scanner_prefix = $(_gir_silent_scanner_prefix_$(V))
77
+ _gir_silent_scanner_prefix_ = $(_gir_silent_scanner_prefix_$(_gir_verbosity))
78
+ _gir_silent_scanner_prefix_0 = @echo " GISCAN $(1)";
79
+ _gir_silent_scanner_opts = $(_gir_silent_scanner_opts_$(V))
80
+ _gir_silent_scanner_opts_ = $(_gir_silent_scanner_opts_$(_gir_verbosity))
81
+ _gir_silent_scanner_opts_0 = --quiet
82
+
83
+ _gir_silent_compiler = $(_gir_silent_compiler_$(V))
84
+ _gir_silent_compiler_ = $(_gir_silent_compiler_$(_gir_verbosity))
85
+ _gir_silent_compiler_0 = @echo " GICOMP $(1)";
86
+
87
+ #
88
+ # Creates a GIR by scanning C headers/sources
89
+ # $(1) - Name of the gir file (output)
90
+ #
91
+ # If output is Gtk-2.0.gir then you should name the variables like
92
+ # Gtk_2_0_gir_NAMESPACE, Gtk_2_0_gir_VERSION etc.
93
+ # Required variables:
94
+ # FILES - C sources and headers which should be scanned
95
+ #
96
+ # One of these variables are required:
97
+ # LIBS - Library where the symbol represented in the gir can be found
98
+ # PROGRAM - Program where the symbol represented in the gir can be found
99
+ #
100
+ # Optional variables
101
+ # NAMESPACE - Namespace of the gir, first letter capital,
102
+ # rest should be lower case, for instance: 'Gtk', 'Clutter', 'ClutterGtk'.
103
+ # If not present the namespace will be fetched from the gir filename,
104
+ # the part before the first dash. For 'Gtk-2.0', namespace will be 'Gtk'.
105
+ # VERSION - Version of the gir, if not present, will be fetched from gir
106
+ # filename, the part after the first dash. For 'Gtk-2.0', version will be '2.0'.
107
+ # LIBTOOL - Command to invoke libtool, usually set by automake
108
+ # SCANNERFLAGS - Flags to pass in to the scanner, see g-ir-scanner(1) for a list
109
+ # CFLAGS - Flags to pass in to the parser when scanning headers
110
+ # LDFLAGS - Linker flags used by the scanner
111
+ # PACKAGES - list of pkg-config names which cflags are required to parse
112
+ # the headers of this gir
113
+ # INCLUDES - Gir files to include without the .gir suffix, for instance
114
+ # GLib-2.0, Gtk-2.0. This is needed for all libraries which you depend on that
115
+ # provides introspection information.
116
+ # EXPORT_PACKAGES - list of pkg-config names that are provided by this gir.
117
+ # By default the names in the PACKAGES variable will be used.
118
+ #
119
+
120
+ define introspection-scanner
121
+
122
+ # Basic sanity check, to make sure required variables are set
123
+ $(if $($(_gir_name)_FILES),,$(error Need to define $(_gir_name)_FILES))
124
+ $(if $(or $(findstring --header-only,$($(_gir_name)_SCANNERFLAGS)),
125
+ $($(_gir_name)_LIBS),
126
+ $($(_gir_name)_PROGRAM)),,
127
+ $(error Need to define $(_gir_name)_LIBS or $(_gir_name)_PROGRAM))
128
+
129
+ # Only dependencies we know are actually filenames goes into _FILES, make
130
+ # sure these are built before running the scanner. Libraries and programs
131
+ # needs to be added manually.
132
+ $(1): $$($(_gir_name)_FILES)
133
+ @ $(MKDIR_P) $(dir $(1))
134
+ $(_gir_silent_scanner_prefix) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \
135
+ $(INTROSPECTION_SCANNER_ARGS) \
136
+ --namespace=$(_gir_namespace) \
137
+ --nsversion=$(_gir_version) \
138
+ $(_gir_libtool) \
139
+ $(_gir_packages) \
140
+ $(_gir_includes) \
141
+ $(_gir_export_packages) \
142
+ $(_gir_program) \
143
+ $(_gir_libraries) \
144
+ $($(_gir_name)_SCANNERFLAGS) \
145
+ --cflags-begin \
146
+ $($(_gir_name)_CFLAGS) \
147
+ --cflags-end \
148
+ $($(_gir_name)_LDFLAGS) \
149
+ $$^ \
150
+ --output $(1)
151
+ endef
152
+
153
+ $(foreach gir,$(INTROSPECTION_GIRS),$(eval $(call introspection-scanner,$(gir))))
154
+
155
+ #
156
+ # Compiles a gir into a typelib
157
+ # $(1): gir filename (input)
158
+ # $(2): typelib filename (output)
159
+ #
160
+ define introspection-compiler
161
+ $(_gir_silent_compiler) $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) --includedir=. $(1) -o $(2)
162
+ endef
163
+
164
+ # Simple rule to compile a typelib.
165
+ %.typelib: %.gir
166
+ $(call introspection-compiler,$<,$@)
@@ -0,0 +1,564 @@
1
+ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
2
+ * GObject introspection: Dump introspection data
3
+ *
4
+ * Copyright (C) 2008 Colin Walters <walters@verbum.org>
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
+ #include <stdlib.h>
23
+
24
+ #include <glib.h>
25
+ #include <glib-object.h>
26
+ #include <gio/gio.h>
27
+
28
+ /* This file is both compiled into libgirepository.so, and installed
29
+ * on the filesystem. But for the dumper, we want to avoid linking
30
+ * to libgirepository; see
31
+ * https://bugzilla.gnome.org/show_bug.cgi?id=630342
32
+ */
33
+ #ifdef G_IREPOSITORY_COMPILATION
34
+ #include "config.h"
35
+ #include "girepository.h"
36
+ #endif
37
+
38
+ #include <string.h>
39
+
40
+ static void
41
+ escaped_printf (GOutputStream *out, const char *fmt, ...)
42
+ {
43
+ char *str;
44
+ va_list args;
45
+ gsize written;
46
+ GError *error = NULL;
47
+
48
+ va_start (args, fmt);
49
+
50
+ str = g_markup_vprintf_escaped (fmt, args);
51
+ if (!g_output_stream_write_all (out, str, strlen (str), &written, NULL, &error))
52
+ {
53
+ g_critical ("failed to write to iochannel: %s", error->message);
54
+ g_clear_error (&error);
55
+ }
56
+ g_free (str);
57
+
58
+ va_end (args);
59
+ }
60
+
61
+ static void
62
+ goutput_write (GOutputStream *out, const char *str)
63
+ {
64
+ gsize written;
65
+ GError *error = NULL;
66
+ if (!g_output_stream_write_all (out, str, strlen (str), &written, NULL, &error))
67
+ {
68
+ g_critical ("failed to write to iochannel: %s", error->message);
69
+ g_clear_error (&error);
70
+ }
71
+ }
72
+
73
+ typedef GType (*GetTypeFunc)(void);
74
+ typedef GQuark (*ErrorQuarkFunc)(void);
75
+
76
+ static GType
77
+ invoke_get_type (GModule *self, const char *symbol, GError **error)
78
+ {
79
+ GetTypeFunc sym;
80
+ GType ret;
81
+
82
+ if (!g_module_symbol (self, symbol, (void**)&sym))
83
+ {
84
+ g_set_error (error,
85
+ G_IO_ERROR,
86
+ G_IO_ERROR_FAILED,
87
+ "Failed to find symbol '%s'", symbol);
88
+ return G_TYPE_INVALID;
89
+ }
90
+
91
+ ret = sym ();
92
+ if (ret == G_TYPE_INVALID)
93
+ {
94
+ g_set_error (error,
95
+ G_IO_ERROR,
96
+ G_IO_ERROR_FAILED,
97
+ "Function '%s' returned G_TYPE_INVALID", symbol);
98
+ }
99
+ return ret;
100
+ }
101
+
102
+ static GQuark
103
+ invoke_error_quark (GModule *self, const char *symbol, GError **error)
104
+ {
105
+ ErrorQuarkFunc sym;
106
+
107
+ if (!g_module_symbol (self, symbol, (void**)&sym))
108
+ {
109
+ g_set_error (error,
110
+ G_IO_ERROR,
111
+ G_IO_ERROR_FAILED,
112
+ "Failed to find symbol '%s'", symbol);
113
+ return G_TYPE_INVALID;
114
+ }
115
+
116
+ return sym ();
117
+ }
118
+
119
+ static void
120
+ dump_properties (GType type, GOutputStream *out)
121
+ {
122
+ guint i;
123
+ guint n_properties;
124
+ GParamSpec **props;
125
+
126
+ if (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
127
+ {
128
+ GObjectClass *klass;
129
+ klass = g_type_class_ref (type);
130
+ props = g_object_class_list_properties (klass, &n_properties);
131
+ }
132
+ else
133
+ {
134
+ void *klass;
135
+ klass = g_type_default_interface_ref (type);
136
+ props = g_object_interface_list_properties (klass, &n_properties);
137
+ }
138
+
139
+ for (i = 0; i < n_properties; i++)
140
+ {
141
+ GParamSpec *prop;
142
+
143
+ prop = props[i];
144
+ if (prop->owner_type != type)
145
+ continue;
146
+
147
+ escaped_printf (out, " <property name=\"%s\" type=\"%s\" flags=\"%d\"/>\n",
148
+ prop->name, g_type_name (prop->value_type), prop->flags);
149
+ }
150
+ g_free (props);
151
+ }
152
+
153
+ static void
154
+ dump_signals (GType type, GOutputStream *out)
155
+ {
156
+ guint i;
157
+ guint n_sigs;
158
+ guint *sig_ids;
159
+
160
+ sig_ids = g_signal_list_ids (type, &n_sigs);
161
+ for (i = 0; i < n_sigs; i++)
162
+ {
163
+ guint sigid;
164
+ GSignalQuery query;
165
+ guint j;
166
+
167
+ sigid = sig_ids[i];
168
+ g_signal_query (sigid, &query);
169
+
170
+ escaped_printf (out, " <signal name=\"%s\" return=\"%s\"",
171
+ query.signal_name, g_type_name (query.return_type));
172
+
173
+ if (query.signal_flags & G_SIGNAL_RUN_FIRST)
174
+ escaped_printf (out, " when=\"first\"");
175
+ else if (query.signal_flags & G_SIGNAL_RUN_LAST)
176
+ escaped_printf (out, " when=\"last\"");
177
+ else if (query.signal_flags & G_SIGNAL_RUN_CLEANUP)
178
+ escaped_printf (out, " when=\"cleanup\"");
179
+ #if GLIB_CHECK_VERSION(2, 29, 15)
180
+ else if (query.signal_flags & G_SIGNAL_MUST_COLLECT)
181
+ escaped_printf (out, " when=\"must-collect\"");
182
+ #endif
183
+ if (query.signal_flags & G_SIGNAL_NO_RECURSE)
184
+ escaped_printf (out, " no-recurse=\"1\"");
185
+
186
+ if (query.signal_flags & G_SIGNAL_DETAILED)
187
+ escaped_printf (out, " detailed=\"1\"");
188
+
189
+ if (query.signal_flags & G_SIGNAL_ACTION)
190
+ escaped_printf (out, " action=\"1\"");
191
+
192
+ if (query.signal_flags & G_SIGNAL_NO_HOOKS)
193
+ escaped_printf (out, " no-hooks=\"1\"");
194
+
195
+ goutput_write (out, ">\n");
196
+
197
+ for (j = 0; j < query.n_params; j++)
198
+ {
199
+ escaped_printf (out, " <param type=\"%s\"/>\n",
200
+ g_type_name (query.param_types[j]));
201
+ }
202
+ goutput_write (out, " </signal>\n");
203
+ }
204
+ }
205
+
206
+ static void
207
+ dump_object_type (GType type, const char *symbol, GOutputStream *out)
208
+ {
209
+ guint n_interfaces;
210
+ guint i;
211
+ GType *interfaces;
212
+
213
+ escaped_printf (out, " <class name=\"%s\" get-type=\"%s\"",
214
+ g_type_name (type), symbol);
215
+ if (type != G_TYPE_OBJECT)
216
+ {
217
+ GString *parent_str;
218
+ GType parent;
219
+ gboolean first = TRUE;
220
+
221
+ parent = g_type_parent (type);
222
+ parent_str = g_string_new ("");
223
+ while (parent != G_TYPE_INVALID)
224
+ {
225
+ if (first)
226
+ first = FALSE;
227
+ else
228
+ g_string_append_c (parent_str, ',');
229
+ g_string_append (parent_str, g_type_name (parent));
230
+ parent = g_type_parent (parent);
231
+ }
232
+
233
+ escaped_printf (out, " parents=\"%s\"", parent_str->str);
234
+
235
+ g_string_free (parent_str, TRUE);
236
+ }
237
+
238
+ if (G_TYPE_IS_ABSTRACT (type))
239
+ escaped_printf (out, " abstract=\"1\"");
240
+ goutput_write (out, ">\n");
241
+
242
+ interfaces = g_type_interfaces (type, &n_interfaces);
243
+ for (i = 0; i < n_interfaces; i++)
244
+ {
245
+ GType itype = interfaces[i];
246
+ escaped_printf (out, " <implements name=\"%s\"/>\n",
247
+ g_type_name (itype));
248
+ }
249
+ dump_properties (type, out);
250
+ dump_signals (type, out);
251
+ goutput_write (out, " </class>\n");
252
+ }
253
+
254
+ static void
255
+ dump_interface_type (GType type, const char *symbol, GOutputStream *out)
256
+ {
257
+ guint n_interfaces;
258
+ guint i;
259
+ GType *interfaces;
260
+
261
+ escaped_printf (out, " <interface name=\"%s\" get-type=\"%s\">\n",
262
+ g_type_name (type), symbol);
263
+
264
+ interfaces = g_type_interface_prerequisites (type, &n_interfaces);
265
+ for (i = 0; i < n_interfaces; i++)
266
+ {
267
+ GType itype = interfaces[i];
268
+ if (itype == G_TYPE_OBJECT)
269
+ {
270
+ /* Treat this as implicit for now; in theory GInterfaces are
271
+ * supported on things like GstMiniObject, but right now
272
+ * the introspection system only supports GObject.
273
+ * http://bugzilla.gnome.org/show_bug.cgi?id=559706
274
+ */
275
+ continue;
276
+ }
277
+ escaped_printf (out, " <prerequisite name=\"%s\"/>\n",
278
+ g_type_name (itype));
279
+ }
280
+ dump_properties (type, out);
281
+ dump_signals (type, out);
282
+ goutput_write (out, " </interface>\n");
283
+ }
284
+
285
+ static void
286
+ dump_boxed_type (GType type, const char *symbol, GOutputStream *out)
287
+ {
288
+ escaped_printf (out, " <boxed name=\"%s\" get-type=\"%s\"/>\n",
289
+ g_type_name (type), symbol);
290
+ }
291
+
292
+ static void
293
+ dump_flags_type (GType type, const char *symbol, GOutputStream *out)
294
+ {
295
+ guint i;
296
+ GFlagsClass *klass;
297
+
298
+ klass = g_type_class_ref (type);
299
+ escaped_printf (out, " <flags name=\"%s\" get-type=\"%s\">\n",
300
+ g_type_name (type), symbol);
301
+
302
+ for (i = 0; i < klass->n_values; i++)
303
+ {
304
+ GFlagsValue *value = &(klass->values[i]);
305
+
306
+ escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%d\"/>\n",
307
+ value->value_name, value->value_nick, value->value);
308
+ }
309
+ goutput_write (out, " </flags>\n");
310
+ }
311
+
312
+ static void
313
+ dump_enum_type (GType type, const char *symbol, GOutputStream *out)
314
+ {
315
+ guint i;
316
+ GEnumClass *klass;
317
+
318
+ klass = g_type_class_ref (type);
319
+ escaped_printf (out, " <enum name=\"%s\" get-type=\"%s\">\n",
320
+ g_type_name (type), symbol);
321
+
322
+ for (i = 0; i < klass->n_values; i++)
323
+ {
324
+ GEnumValue *value = &(klass->values[i]);
325
+
326
+ escaped_printf (out, " <member name=\"%s\" nick=\"%s\" value=\"%d\"/>\n",
327
+ value->value_name, value->value_nick, value->value);
328
+ }
329
+ goutput_write (out, " </enum>");
330
+ }
331
+
332
+ static void
333
+ dump_fundamental_type (GType type, const char *symbol, GOutputStream *out)
334
+ {
335
+ guint n_interfaces;
336
+ guint i;
337
+ GType *interfaces;
338
+ GString *parent_str;
339
+ GType parent;
340
+ gboolean first = TRUE;
341
+
342
+
343
+ escaped_printf (out, " <fundamental name=\"%s\" get-type=\"%s\"",
344
+ g_type_name (type), symbol);
345
+
346
+ if (G_TYPE_IS_ABSTRACT (type))
347
+ escaped_printf (out, " abstract=\"1\"");
348
+
349
+ if (G_TYPE_IS_INSTANTIATABLE (type))
350
+ escaped_printf (out, " instantiatable=\"1\"");
351
+
352
+ parent = g_type_parent (type);
353
+ parent_str = g_string_new ("");
354
+ while (parent != G_TYPE_INVALID)
355
+ {
356
+ if (first)
357
+ first = FALSE;
358
+ else
359
+ g_string_append_c (parent_str, ',');
360
+ if (!g_type_name (parent))
361
+ break;
362
+ g_string_append (parent_str, g_type_name (parent));
363
+ parent = g_type_parent (parent);
364
+ }
365
+
366
+ if (parent_str->len > 0)
367
+ escaped_printf (out, " parents=\"%s\"", parent_str->str);
368
+ g_string_free (parent_str, TRUE);
369
+
370
+ goutput_write (out, ">\n");
371
+
372
+ interfaces = g_type_interfaces (type, &n_interfaces);
373
+ for (i = 0; i < n_interfaces; i++)
374
+ {
375
+ GType itype = interfaces[i];
376
+ escaped_printf (out, " <implements name=\"%s\"/>\n",
377
+ g_type_name (itype));
378
+ }
379
+ goutput_write (out, " </fundamental>\n");
380
+ }
381
+
382
+ static void
383
+ dump_type (GType type, const char *symbol, GOutputStream *out)
384
+ {
385
+ switch (g_type_fundamental (type))
386
+ {
387
+ case G_TYPE_OBJECT:
388
+ dump_object_type (type, symbol, out);
389
+ break;
390
+ case G_TYPE_INTERFACE:
391
+ dump_interface_type (type, symbol, out);
392
+ break;
393
+ case G_TYPE_BOXED:
394
+ dump_boxed_type (type, symbol, out);
395
+ break;
396
+ case G_TYPE_FLAGS:
397
+ dump_flags_type (type, symbol, out);
398
+ break;
399
+ case G_TYPE_ENUM:
400
+ dump_enum_type (type, symbol, out);
401
+ break;
402
+ case G_TYPE_POINTER:
403
+ /* GValue, etc. Just skip them. */
404
+ break;
405
+ default:
406
+ dump_fundamental_type (type, symbol, out);
407
+ break;
408
+ }
409
+ }
410
+
411
+ static void
412
+ dump_error_quark (GQuark quark, const char *symbol, GOutputStream *out)
413
+ {
414
+ escaped_printf (out, " <error-quark function=\"%s\" domain=\"%s\"/>\n",
415
+ symbol, g_quark_to_string (quark));
416
+ }
417
+
418
+ /**
419
+ * g_irepository_dump:
420
+ * @arg: Comma-separated pair of input and output filenames
421
+ * @error: a %GError
422
+ *
423
+ * Argument specified is a comma-separated pair of filenames; i.e. of
424
+ * the form "input.txt,output.xml". The input file should be a
425
+ * UTF-8 Unix-line-ending text file, with each line containing the name
426
+ * of a GType _get_type function.
427
+ *
428
+ * The output file should already exist, but be empty. This function will
429
+ * overwrite its contents.
430
+ *
431
+ * Returns: %TRUE on success, %FALSE on error
432
+ */
433
+ #ifndef G_IREPOSITORY_COMPILATION
434
+ static gboolean
435
+ dump_irepository (const char *arg, GError **error) G_GNUC_UNUSED;
436
+ static gboolean
437
+ dump_irepository (const char *arg, GError **error)
438
+ #else
439
+ gboolean
440
+ g_irepository_dump (const char *arg, GError **error)
441
+ #endif
442
+ {
443
+ GHashTable *output_types;
444
+ char **args;
445
+ GFile *input_file;
446
+ GFile *output_file;
447
+ GFileInputStream *input;
448
+ GFileOutputStream *output;
449
+ GDataInputStream *in;
450
+ GModule *self;
451
+ gboolean caught_error = FALSE;
452
+
453
+ self = g_module_open (NULL, 0);
454
+ if (!self)
455
+ {
456
+ g_set_error (error,
457
+ G_IO_ERROR,
458
+ G_IO_ERROR_FAILED,
459
+ "failed to open self: %s",
460
+ g_module_error ());
461
+ return FALSE;
462
+ }
463
+
464
+ args = g_strsplit (arg, ",", 2);
465
+
466
+ input_file = g_file_new_for_path (args[0]);
467
+ output_file = g_file_new_for_path (args[1]);
468
+
469
+ input = g_file_read (input_file, NULL, error);
470
+ if (input == NULL)
471
+ return FALSE;
472
+
473
+ output = g_file_replace (output_file, NULL, FALSE, 0, NULL, error);
474
+ if (output == NULL)
475
+ {
476
+ g_input_stream_close (G_INPUT_STREAM (input), NULL, NULL);
477
+ return FALSE;
478
+ }
479
+
480
+ goutput_write (G_OUTPUT_STREAM (output), "<?xml version=\"1.0\"?>\n");
481
+ goutput_write (G_OUTPUT_STREAM (output), "<dump>\n");
482
+
483
+ output_types = g_hash_table_new (NULL, NULL);
484
+
485
+ in = g_data_input_stream_new (G_INPUT_STREAM (input));
486
+ g_object_unref (input);
487
+
488
+ while (TRUE)
489
+ {
490
+ gsize len;
491
+ char *line = g_data_input_stream_read_line (in, &len, NULL, NULL);
492
+ const char *function;
493
+
494
+ if (line == NULL || *line == '\0')
495
+ {
496
+ g_free (line);
497
+ break;
498
+ }
499
+
500
+ g_strchomp (line);
501
+
502
+ if (strncmp (line, "get-type:", strlen ("get-type:")) == 0)
503
+ {
504
+ GType type;
505
+
506
+ function = line + strlen ("get-type:");
507
+
508
+ type = invoke_get_type (self, function, error);
509
+
510
+ if (type == G_TYPE_INVALID)
511
+ {
512
+ g_printerr ("Invalid GType function: '%s'\n", function);
513
+ caught_error = TRUE;
514
+ g_free (line);
515
+ break;
516
+ }
517
+
518
+ if (g_hash_table_lookup (output_types, (gpointer) type))
519
+ goto next;
520
+ g_hash_table_insert (output_types, (gpointer) type, (gpointer) type);
521
+
522
+ dump_type (type, function, G_OUTPUT_STREAM (output));
523
+ }
524
+ else if (strncmp (line, "error-quark:", strlen ("error-quark:")) == 0)
525
+ {
526
+ GQuark quark;
527
+ function = line + strlen ("error-quark:");
528
+ quark = invoke_error_quark (self, function, error);
529
+
530
+ if (quark == 0)
531
+ {
532
+ g_printerr ("Invalid error quark function: '%s'\n", function);
533
+ caught_error = TRUE;
534
+ g_free (line);
535
+ break;
536
+ }
537
+
538
+ dump_error_quark (quark, function, G_OUTPUT_STREAM (output));
539
+ }
540
+
541
+
542
+ next:
543
+ g_free (line);
544
+ }
545
+
546
+ g_hash_table_destroy (output_types);
547
+
548
+ goutput_write (G_OUTPUT_STREAM (output), "</dump>\n");
549
+
550
+ {
551
+ GError **ioerror;
552
+ /* Avoid overwriting an earlier set error */
553
+ if (caught_error)
554
+ ioerror = NULL;
555
+ else
556
+ ioerror = error;
557
+ if (!g_input_stream_close (G_INPUT_STREAM (in), NULL, ioerror))
558
+ return FALSE;
559
+ if (!g_output_stream_close (G_OUTPUT_STREAM (output), NULL, ioerror))
560
+ return FALSE;
561
+ }
562
+
563
+ return !caught_error;
564
+ }