@gtkx/ffi 0.1.4 → 0.1.6

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 (580) hide show
  1. package/dist/codegen/ffi-generator.d.ts +24 -0
  2. package/dist/codegen/ffi-generator.js +385 -9
  3. package/dist/generated/cairo/context.d.ts +5 -0
  4. package/dist/generated/cairo/context.js +9 -0
  5. package/dist/generated/cairo/device.d.ts +5 -0
  6. package/dist/generated/cairo/device.js +9 -0
  7. package/dist/generated/cairo/font-face.d.ts +5 -0
  8. package/dist/generated/cairo/font-face.js +9 -0
  9. package/dist/generated/cairo/font-options.d.ts +5 -0
  10. package/dist/generated/cairo/font-options.js +9 -0
  11. package/dist/generated/cairo/glyph.d.ts +16 -0
  12. package/dist/generated/cairo/glyph.js +35 -0
  13. package/dist/generated/cairo/index.d.ts +12 -0
  14. package/dist/generated/cairo/index.js +12 -0
  15. package/dist/generated/cairo/pattern.d.ts +5 -0
  16. package/dist/generated/cairo/pattern.js +9 -0
  17. package/dist/generated/cairo/rectangle-int.d.ts +19 -0
  18. package/dist/generated/cairo/rectangle-int.js +43 -0
  19. package/dist/generated/cairo/rectangle.d.ts +19 -0
  20. package/dist/generated/cairo/rectangle.js +43 -0
  21. package/dist/generated/cairo/region.d.ts +5 -0
  22. package/dist/generated/cairo/region.js +9 -0
  23. package/dist/generated/cairo/scaled-font.d.ts +5 -0
  24. package/dist/generated/cairo/scaled-font.js +9 -0
  25. package/dist/generated/cairo/surface.d.ts +5 -0
  26. package/dist/generated/cairo/surface.js +9 -0
  27. package/dist/generated/cairo/text-cluster.d.ts +13 -0
  28. package/dist/generated/cairo/text-cluster.js +27 -0
  29. package/dist/generated/gdk/cicp-params.d.ts +2 -1
  30. package/dist/generated/gdk/cicp-params.js +16 -5
  31. package/dist/generated/gdk/clipboard.d.ts +3 -2
  32. package/dist/generated/gdk/clipboard.js +52 -21
  33. package/dist/generated/gdk/color-state.d.ts +16 -0
  34. package/dist/generated/gdk/color-state.js +137 -0
  35. package/dist/generated/gdk/content-formats-builder.d.ts +13 -0
  36. package/dist/generated/gdk/content-formats-builder.js +101 -0
  37. package/dist/generated/gdk/content-formats.d.ts +25 -0
  38. package/dist/generated/gdk/content-formats.js +266 -0
  39. package/dist/generated/gdk/content-provider.d.ts +5 -4
  40. package/dist/generated/gdk/content-provider.js +31 -10
  41. package/dist/generated/gdk/display.d.ts +3 -2
  42. package/dist/generated/gdk/display.js +25 -9
  43. package/dist/generated/gdk/dmabuf-formats.d.ts +12 -0
  44. package/dist/generated/gdk/dmabuf-formats.js +97 -0
  45. package/dist/generated/gdk/dmabuf-texture-builder.d.ts +5 -4
  46. package/dist/generated/gdk/dmabuf-texture-builder.js +21 -6
  47. package/dist/generated/gdk/drag.d.ts +3 -2
  48. package/dist/generated/gdk/drag.js +6 -1
  49. package/dist/generated/gdk/drop.d.ts +3 -2
  50. package/dist/generated/gdk/drop.js +25 -9
  51. package/dist/generated/gdk/event-sequence.d.ts +5 -0
  52. package/dist/generated/gdk/event-sequence.js +9 -0
  53. package/dist/generated/gdk/event.d.ts +2 -1
  54. package/dist/generated/gdk/event.js +6 -1
  55. package/dist/generated/gdk/file-list.d.ts +7 -0
  56. package/dist/generated/gdk/file-list.js +40 -0
  57. package/dist/generated/gdk/frame-clock.d.ts +3 -2
  58. package/dist/generated/gdk/frame-clock.js +12 -2
  59. package/dist/generated/gdk/frame-timings.d.ts +13 -0
  60. package/dist/generated/gdk/frame-timings.js +79 -0
  61. package/dist/generated/gdk/functions.d.ts +17 -13
  62. package/dist/generated/gdk/functions.js +61 -25
  63. package/dist/generated/gdk/glcontext.js +10 -4
  64. package/dist/generated/gdk/gltexture-builder.d.ts +5 -4
  65. package/dist/generated/gdk/gltexture-builder.js +11 -2
  66. package/dist/generated/gdk/index.d.ts +12 -0
  67. package/dist/generated/gdk/index.js +12 -0
  68. package/dist/generated/gdk/memory-texture-builder.d.ts +5 -4
  69. package/dist/generated/gdk/memory-texture-builder.js +11 -2
  70. package/dist/generated/gdk/monitor.d.ts +3 -2
  71. package/dist/generated/gdk/monitor.js +8 -1
  72. package/dist/generated/gdk/popup-layout.d.ts +25 -0
  73. package/dist/generated/gdk/popup-layout.js +266 -0
  74. package/dist/generated/gdk/popup.d.ts +2 -1
  75. package/dist/generated/gdk/popup.js +5 -1
  76. package/dist/generated/gdk/rectangle.d.ts +24 -0
  77. package/dist/generated/gdk/rectangle.js +129 -0
  78. package/dist/generated/gdk/rgba.d.ts +27 -0
  79. package/dist/generated/gdk/rgba.js +120 -0
  80. package/dist/generated/gdk/surface.js +19 -8
  81. package/dist/generated/gdk/texture-downloader.d.ts +20 -0
  82. package/dist/generated/gdk/texture-downloader.js +160 -0
  83. package/dist/generated/gdk/texture.d.ts +3 -2
  84. package/dist/generated/gdk/texture.js +6 -1
  85. package/dist/generated/gdk/toplevel-layout.d.ts +17 -0
  86. package/dist/generated/gdk/toplevel-layout.js +144 -0
  87. package/dist/generated/gdk/toplevel.d.ts +2 -1
  88. package/dist/generated/gdk/toplevel.js +5 -1
  89. package/dist/generated/gdkpixbuf/functions.d.ts +1 -1
  90. package/dist/generated/gdkpixbuf/functions.js +3 -2
  91. package/dist/generated/gdkpixbuf/index.d.ts +1 -0
  92. package/dist/generated/gdkpixbuf/index.js +1 -0
  93. package/dist/generated/gdkpixbuf/pixbuf-format.d.ts +32 -0
  94. package/dist/generated/gdkpixbuf/pixbuf-format.js +157 -0
  95. package/dist/generated/gdkpixbuf/pixbuf-loader.d.ts +2 -1
  96. package/dist/generated/gdkpixbuf/pixbuf-loader.js +34 -13
  97. package/dist/generated/gdkpixbuf/pixbuf.d.ts +3 -2
  98. package/dist/generated/gdkpixbuf/pixbuf.js +76 -30
  99. package/dist/generated/gio/app-info.js +73 -32
  100. package/dist/generated/gio/application.js +10 -4
  101. package/dist/generated/gio/async-initable.js +19 -8
  102. package/dist/generated/gio/async-result.js +10 -4
  103. package/dist/generated/gio/buffered-input-stream.js +28 -12
  104. package/dist/generated/gio/cancellable.js +10 -4
  105. package/dist/generated/gio/converter.js +19 -8
  106. package/dist/generated/gio/credentials.js +37 -16
  107. package/dist/generated/gio/data-input-stream.js +136 -60
  108. package/dist/generated/gio/data-output-stream.js +73 -32
  109. package/dist/generated/gio/datagram-based.js +28 -12
  110. package/dist/generated/gio/dbus-annotation-info.d.ts +16 -0
  111. package/dist/generated/gio/dbus-annotation-info.js +75 -0
  112. package/dist/generated/gio/dbus-arg-info.d.ts +16 -0
  113. package/dist/generated/gio/dbus-arg-info.js +56 -0
  114. package/dist/generated/gio/dbus-connection.d.ts +4 -3
  115. package/dist/generated/gio/dbus-connection.js +178 -75
  116. package/dist/generated/gio/dbus-interface-info.d.ts +27 -0
  117. package/dist/generated/gio/dbus-interface-info.js +166 -0
  118. package/dist/generated/gio/dbus-interface-skeleton.d.ts +2 -1
  119. package/dist/generated/gio/dbus-interface-skeleton.js +16 -5
  120. package/dist/generated/gio/dbus-interface.d.ts +2 -1
  121. package/dist/generated/gio/dbus-interface.js +6 -1
  122. package/dist/generated/gio/dbus-message.js +37 -16
  123. package/dist/generated/gio/dbus-method-info.d.ts +18 -0
  124. package/dist/generated/gio/dbus-method-info.js +73 -0
  125. package/dist/generated/gio/dbus-method-invocation.d.ts +7 -5
  126. package/dist/generated/gio/dbus-method-invocation.js +15 -5
  127. package/dist/generated/gio/dbus-node-info.d.ts +18 -0
  128. package/dist/generated/gio/dbus-node-info.js +110 -0
  129. package/dist/generated/gio/dbus-property-info.d.ts +18 -0
  130. package/dist/generated/gio/dbus-property-info.js +59 -0
  131. package/dist/generated/gio/dbus-proxy.d.ts +9 -8
  132. package/dist/generated/gio/dbus-proxy.js +68 -22
  133. package/dist/generated/gio/dbus-signal-info.d.ts +17 -0
  134. package/dist/generated/gio/dbus-signal-info.js +63 -0
  135. package/dist/generated/gio/drive.js +46 -20
  136. package/dist/generated/gio/dtls-connection.js +64 -28
  137. package/dist/generated/gio/file-attribute-info-list.d.ts +14 -0
  138. package/dist/generated/gio/file-attribute-info-list.js +89 -0
  139. package/dist/generated/gio/file-attribute-matcher.d.ts +14 -0
  140. package/dist/generated/gio/file-attribute-matcher.js +111 -0
  141. package/dist/generated/gio/file-enumerator.js +46 -20
  142. package/dist/generated/gio/file-info.d.ts +2 -1
  143. package/dist/generated/gio/file-info.js +5 -1
  144. package/dist/generated/gio/file-input-stream.js +19 -8
  145. package/dist/generated/gio/file-iostream.js +19 -8
  146. package/dist/generated/gio/file-output-stream.js +19 -8
  147. package/dist/generated/gio/file.d.ts +3 -2
  148. package/dist/generated/gio/file.js +679 -298
  149. package/dist/generated/gio/functions.d.ts +17 -14
  150. package/dist/generated/gio/functions.js +311 -140
  151. package/dist/generated/gio/index.d.ts +14 -0
  152. package/dist/generated/gio/index.js +14 -0
  153. package/dist/generated/gio/initable.js +10 -4
  154. package/dist/generated/gio/input-stream.js +100 -44
  155. package/dist/generated/gio/iostream.js +37 -16
  156. package/dist/generated/gio/loadable-icon.js +19 -8
  157. package/dist/generated/gio/mount.js +64 -28
  158. package/dist/generated/gio/network-address.js +19 -8
  159. package/dist/generated/gio/network-monitor.js +19 -8
  160. package/dist/generated/gio/output-stream.js +154 -68
  161. package/dist/generated/gio/permission.js +37 -16
  162. package/dist/generated/gio/pollable-input-stream.js +10 -4
  163. package/dist/generated/gio/pollable-output-stream.js +19 -8
  164. package/dist/generated/gio/proxy-resolver.js +19 -8
  165. package/dist/generated/gio/proxy.js +19 -8
  166. package/dist/generated/gio/resolver.js +91 -40
  167. package/dist/generated/gio/resource.d.ts +18 -0
  168. package/dist/generated/gio/resource.js +237 -0
  169. package/dist/generated/gio/seekable.js +19 -8
  170. package/dist/generated/gio/settings-schema-key.d.ts +14 -0
  171. package/dist/generated/gio/settings-schema-key.js +91 -0
  172. package/dist/generated/gio/settings-schema-source.d.ts +13 -0
  173. package/dist/generated/gio/settings-schema-source.js +108 -0
  174. package/dist/generated/gio/settings-schema.d.ts +14 -0
  175. package/dist/generated/gio/settings-schema.js +92 -0
  176. package/dist/generated/gio/settings.d.ts +3 -2
  177. package/dist/generated/gio/settings.js +6 -2
  178. package/dist/generated/gio/simple-async-result.d.ts +3 -3
  179. package/dist/generated/gio/simple-async-result.js +13 -7
  180. package/dist/generated/gio/socket-address-enumerator.js +19 -8
  181. package/dist/generated/gio/socket-address.js +10 -4
  182. package/dist/generated/gio/socket-client.js +73 -32
  183. package/dist/generated/gio/socket-connection.js +37 -16
  184. package/dist/generated/gio/socket-listener.js +73 -32
  185. package/dist/generated/gio/socket.js +280 -124
  186. package/dist/generated/gio/srv-target.d.ts +13 -0
  187. package/dist/generated/gio/srv-target.js +90 -0
  188. package/dist/generated/gio/subprocess-launcher.js +10 -4
  189. package/dist/generated/gio/subprocess.js +73 -32
  190. package/dist/generated/gio/task.d.ts +3 -3
  191. package/dist/generated/gio/task.js +40 -19
  192. package/dist/generated/gio/tls-certificate.js +10 -4
  193. package/dist/generated/gio/tls-connection.js +28 -12
  194. package/dist/generated/gio/tls-database.js +73 -32
  195. package/dist/generated/gio/tls-interaction.js +55 -24
  196. package/dist/generated/gio/unix-connection.js +55 -24
  197. package/dist/generated/gio/unix-fdlist.js +19 -8
  198. package/dist/generated/gio/volume.js +28 -12
  199. package/dist/generated/glib/array.d.ts +33 -0
  200. package/dist/generated/glib/array.js +489 -0
  201. package/dist/generated/glib/bookmark-file.d.ts +55 -0
  202. package/dist/generated/glib/bookmark-file.js +1242 -0
  203. package/dist/generated/glib/byte-array.d.ts +31 -0
  204. package/dist/generated/glib/byte-array.js +356 -0
  205. package/dist/generated/glib/bytes.d.ts +21 -0
  206. package/dist/generated/glib/bytes.js +233 -0
  207. package/dist/generated/glib/checksum.d.ts +15 -0
  208. package/dist/generated/glib/checksum.js +100 -0
  209. package/dist/generated/glib/date-time.d.ts +60 -0
  210. package/dist/generated/glib/date-time.js +726 -0
  211. package/dist/generated/glib/date.d.ts +68 -0
  212. package/dist/generated/glib/date.js +621 -0
  213. package/dist/generated/glib/dir.d.ts +12 -0
  214. package/dist/generated/glib/dir.js +91 -0
  215. package/dist/generated/glib/error.d.ts +17 -0
  216. package/dist/generated/glib/error.js +164 -0
  217. package/dist/generated/glib/functions.d.ts +135 -119
  218. package/dist/generated/glib/functions.js +1080 -346
  219. package/dist/generated/glib/hash-table.d.ts +36 -0
  220. package/dist/generated/glib/hash-table.js +517 -0
  221. package/dist/generated/glib/hmac.d.ts +13 -0
  222. package/dist/generated/glib/hmac.js +99 -0
  223. package/dist/generated/glib/index.d.ts +35 -0
  224. package/dist/generated/glib/index.js +35 -0
  225. package/dist/generated/glib/iochannel.d.ts +43 -0
  226. package/dist/generated/glib/iochannel.js +647 -0
  227. package/dist/generated/glib/key-file.d.ts +57 -0
  228. package/dist/generated/glib/key-file.js +1306 -0
  229. package/dist/generated/glib/main-context.d.ts +39 -0
  230. package/dist/generated/glib/main-context.js +413 -0
  231. package/dist/generated/glib/main-loop.d.ts +13 -0
  232. package/dist/generated/glib/main-loop.js +83 -0
  233. package/dist/generated/glib/mapped-file.d.ts +14 -0
  234. package/dist/generated/glib/mapped-file.js +94 -0
  235. package/dist/generated/glib/markup-parse-context.d.ts +19 -0
  236. package/dist/generated/glib/markup-parse-context.js +185 -0
  237. package/dist/generated/glib/match-info.d.ts +22 -0
  238. package/dist/generated/glib/match-info.js +221 -0
  239. package/dist/generated/glib/option-group.d.ts +14 -0
  240. package/dist/generated/glib/option-group.js +134 -0
  241. package/dist/generated/glib/pattern-spec.d.ts +11 -0
  242. package/dist/generated/glib/pattern-spec.js +86 -0
  243. package/dist/generated/glib/poll-fd.d.ts +16 -0
  244. package/dist/generated/glib/poll-fd.js +35 -0
  245. package/dist/generated/glib/ptr-array.d.ts +47 -0
  246. package/dist/generated/glib/ptr-array.js +699 -0
  247. package/dist/generated/glib/rand.d.ts +15 -0
  248. package/dist/generated/glib/rand.js +137 -0
  249. package/dist/generated/glib/regex.d.ts +34 -0
  250. package/dist/generated/glib/regex.js +562 -0
  251. package/dist/generated/glib/source.d.ts +44 -0
  252. package/dist/generated/glib/source.js +440 -0
  253. package/dist/generated/glib/string.d.ts +49 -0
  254. package/dist/generated/glib/string.js +642 -0
  255. package/dist/generated/glib/strv-builder.d.ts +13 -0
  256. package/dist/generated/glib/strv-builder.js +91 -0
  257. package/dist/generated/glib/thread.d.ts +23 -0
  258. package/dist/generated/glib/thread.js +242 -0
  259. package/dist/generated/glib/time-zone.d.ts +20 -0
  260. package/dist/generated/glib/time-zone.js +151 -0
  261. package/dist/generated/glib/tree.d.ts +34 -0
  262. package/dist/generated/glib/tree.js +364 -0
  263. package/dist/generated/glib/uri.d.ts +45 -0
  264. package/dist/generated/glib/uri.js +785 -0
  265. package/dist/generated/glib/variant-builder.d.ts +19 -0
  266. package/dist/generated/glib/variant-builder.js +159 -0
  267. package/dist/generated/glib/variant-dict.d.ts +19 -0
  268. package/dist/generated/glib/variant-dict.js +180 -0
  269. package/dist/generated/glib/variant-type.d.ts +37 -0
  270. package/dist/generated/glib/variant-type.js +362 -0
  271. package/dist/generated/glib/variant.d.ts +102 -0
  272. package/dist/generated/glib/variant.js +1213 -0
  273. package/dist/generated/gmodule/functions.d.ts +1 -1
  274. package/dist/generated/gmodule/functions.js +3 -2
  275. package/dist/generated/gobject/binding-group.d.ts +2 -1
  276. package/dist/generated/gobject/binding-group.js +10 -2
  277. package/dist/generated/gobject/closure.d.ts +25 -0
  278. package/dist/generated/gobject/closure.js +239 -0
  279. package/dist/generated/gobject/functions.d.ts +62 -60
  280. package/dist/generated/gobject/functions.js +547 -118
  281. package/dist/generated/gobject/index.d.ts +3 -0
  282. package/dist/generated/gobject/index.js +3 -0
  283. package/dist/generated/gobject/object.d.ts +15 -13
  284. package/dist/generated/gobject/object.js +55 -14
  285. package/dist/generated/gobject/param-spec.d.ts +7 -6
  286. package/dist/generated/gobject/param-spec.js +11 -6
  287. package/dist/generated/gobject/signal-group.d.ts +2 -1
  288. package/dist/generated/gobject/signal-group.js +5 -1
  289. package/dist/generated/gobject/value-array.d.ts +19 -0
  290. package/dist/generated/gobject/value-array.js +186 -0
  291. package/dist/generated/gobject/value.d.ts +78 -0
  292. package/dist/generated/gobject/value.js +775 -0
  293. package/dist/generated/graphene/box.d.ts +38 -0
  294. package/dist/generated/graphene/box.js +543 -0
  295. package/dist/generated/graphene/euler.d.ts +30 -0
  296. package/dist/generated/graphene/euler.js +353 -0
  297. package/dist/generated/graphene/frustum.d.ts +20 -0
  298. package/dist/generated/graphene/frustum.js +211 -0
  299. package/dist/generated/graphene/functions.d.ts +34 -26
  300. package/dist/generated/graphene/functions.js +78 -26
  301. package/dist/generated/graphene/index.d.ts +17 -0
  302. package/dist/generated/graphene/index.js +17 -0
  303. package/dist/generated/graphene/matrix.d.ts +83 -0
  304. package/dist/generated/graphene/matrix.js +1411 -0
  305. package/dist/generated/graphene/plane.d.ts +23 -0
  306. package/dist/generated/graphene/plane.js +287 -0
  307. package/dist/generated/graphene/point.d.ts +21 -0
  308. package/dist/generated/graphene/point.js +218 -0
  309. package/dist/generated/graphene/point3d.d.ts +30 -0
  310. package/dist/generated/graphene/point3d.js +359 -0
  311. package/dist/generated/graphene/quad.d.ts +15 -0
  312. package/dist/generated/graphene/quad.js +164 -0
  313. package/dist/generated/graphene/quaternion.d.ts +33 -0
  314. package/dist/generated/graphene/quaternion.js +502 -0
  315. package/dist/generated/graphene/ray.d.ts +30 -0
  316. package/dist/generated/graphene/ray.js +345 -0
  317. package/dist/generated/graphene/rect.d.ts +44 -0
  318. package/dist/generated/graphene/rect.js +623 -0
  319. package/dist/generated/graphene/size.d.ts +17 -0
  320. package/dist/generated/graphene/size.js +157 -0
  321. package/dist/generated/graphene/sphere.d.ts +21 -0
  322. package/dist/generated/graphene/sphere.js +248 -0
  323. package/dist/generated/graphene/triangle.d.ts +26 -0
  324. package/dist/generated/graphene/triangle.js +397 -0
  325. package/dist/generated/graphene/vec2.d.ts +31 -0
  326. package/dist/generated/graphene/vec2.js +470 -0
  327. package/dist/generated/graphene/vec3.d.ts +41 -0
  328. package/dist/generated/graphene/vec3.js +619 -0
  329. package/dist/generated/graphene/vec4.d.ts +41 -0
  330. package/dist/generated/graphene/vec4.js +608 -0
  331. package/dist/generated/gsk/component-transfer-node.d.ts +3 -2
  332. package/dist/generated/gsk/component-transfer-node.js +26 -5
  333. package/dist/generated/gsk/component-transfer.d.ts +14 -0
  334. package/dist/generated/gsk/component-transfer.js +120 -0
  335. package/dist/generated/gsk/fill-node.d.ts +3 -2
  336. package/dist/generated/gsk/fill-node.js +7 -2
  337. package/dist/generated/gsk/functions.d.ts +5 -3
  338. package/dist/generated/gsk/functions.js +17 -4
  339. package/dist/generated/gsk/glshader.js +10 -4
  340. package/dist/generated/gsk/index.d.ts +8 -0
  341. package/dist/generated/gsk/index.js +8 -0
  342. package/dist/generated/gsk/path-builder.d.ts +37 -0
  343. package/dist/generated/gsk/path-builder.js +601 -0
  344. package/dist/generated/gsk/path-measure.d.ts +16 -0
  345. package/dist/generated/gsk/path-measure.js +105 -0
  346. package/dist/generated/gsk/path-point.d.ts +18 -0
  347. package/dist/generated/gsk/path-point.js +151 -0
  348. package/dist/generated/gsk/path.d.ts +25 -0
  349. package/dist/generated/gsk/path.js +248 -0
  350. package/dist/generated/gsk/render-node.js +10 -4
  351. package/dist/generated/gsk/renderer.js +19 -8
  352. package/dist/generated/gsk/shader-args-builder.d.ts +17 -0
  353. package/dist/generated/gsk/shader-args-builder.js +170 -0
  354. package/dist/generated/gsk/stroke-node.d.ts +5 -3
  355. package/dist/generated/gsk/stroke-node.js +14 -4
  356. package/dist/generated/gsk/stroke.d.ts +24 -0
  357. package/dist/generated/gsk/stroke.js +190 -0
  358. package/dist/generated/gsk/transform-node.d.ts +3 -2
  359. package/dist/generated/gsk/transform-node.js +11 -2
  360. package/dist/generated/gsk/transform.d.ts +33 -0
  361. package/dist/generated/gsk/transform.js +494 -0
  362. package/dist/generated/gtk/accessible-list.d.ts +7 -0
  363. package/dist/generated/gtk/accessible-list.js +40 -0
  364. package/dist/generated/gtk/alert-dialog.js +10 -4
  365. package/dist/generated/gtk/bitset-iter.d.ts +14 -0
  366. package/dist/generated/gtk/bitset-iter.js +138 -0
  367. package/dist/generated/gtk/bitset.d.ts +33 -0
  368. package/dist/generated/gtk/bitset.js +383 -0
  369. package/dist/generated/gtk/border.d.ts +15 -0
  370. package/dist/generated/gtk/border.js +59 -0
  371. package/dist/generated/gtk/builder.js +91 -40
  372. package/dist/generated/gtk/cell-area.d.ts +2 -1
  373. package/dist/generated/gtk/cell-area.js +6 -2
  374. package/dist/generated/gtk/cell-renderer-combo.js +1 -1
  375. package/dist/generated/gtk/cell-renderer.d.ts +2 -1
  376. package/dist/generated/gtk/cell-renderer.js +16 -2
  377. package/dist/generated/gtk/cell-view.d.ts +3 -2
  378. package/dist/generated/gtk/cell-view.js +11 -2
  379. package/dist/generated/gtk/color-dialog.js +10 -4
  380. package/dist/generated/gtk/column-view.d.ts +2 -1
  381. package/dist/generated/gtk/column-view.js +5 -1
  382. package/dist/generated/gtk/combo-box.d.ts +3 -2
  383. package/dist/generated/gtk/combo-box.js +13 -2
  384. package/dist/generated/gtk/constraint-layout.js +10 -4
  385. package/dist/generated/gtk/css-provider.js +3 -1
  386. package/dist/generated/gtk/css-section.d.ts +16 -0
  387. package/dist/generated/gtk/css-section.js +134 -0
  388. package/dist/generated/gtk/entry-completion.js +2 -2
  389. package/dist/generated/gtk/expression-watch.d.ts +9 -0
  390. package/dist/generated/gtk/expression-watch.js +51 -0
  391. package/dist/generated/gtk/expression.d.ts +3 -2
  392. package/dist/generated/gtk/expression.js +12 -2
  393. package/dist/generated/gtk/file-chooser.js +37 -16
  394. package/dist/generated/gtk/file-dialog.js +73 -32
  395. package/dist/generated/gtk/file-launcher.js +19 -8
  396. package/dist/generated/gtk/font-dialog.js +37 -16
  397. package/dist/generated/gtk/functions.d.ts +21 -17
  398. package/dist/generated/gtk/functions.js +77 -34
  399. package/dist/generated/gtk/grid-view.d.ts +2 -1
  400. package/dist/generated/gtk/grid-view.js +5 -1
  401. package/dist/generated/gtk/icon-view.d.ts +22 -20
  402. package/dist/generated/gtk/icon-view.js +138 -23
  403. package/dist/generated/gtk/index.d.ts +15 -0
  404. package/dist/generated/gtk/index.js +15 -0
  405. package/dist/generated/gtk/list-store.d.ts +17 -16
  406. package/dist/generated/gtk/list-store.js +126 -21
  407. package/dist/generated/gtk/list-view.d.ts +2 -1
  408. package/dist/generated/gtk/list-view.js +5 -1
  409. package/dist/generated/gtk/media-stream.d.ts +2 -2
  410. package/dist/generated/gtk/media-stream.js +2 -2
  411. package/dist/generated/gtk/page-setup.d.ts +4 -3
  412. package/dist/generated/gtk/page-setup.js +44 -15
  413. package/dist/generated/gtk/paper-size.d.ts +31 -0
  414. package/dist/generated/gtk/paper-size.js +318 -0
  415. package/dist/generated/gtk/print-dialog.d.ts +4 -3
  416. package/dist/generated/gtk/print-dialog.js +44 -15
  417. package/dist/generated/gtk/print-job.js +28 -12
  418. package/dist/generated/gtk/print-operation.js +19 -8
  419. package/dist/generated/gtk/print-settings.d.ts +3 -2
  420. package/dist/generated/gtk/print-settings.js +39 -14
  421. package/dist/generated/gtk/print-setup.d.ts +9 -0
  422. package/dist/generated/gtk/print-setup.js +47 -0
  423. package/dist/generated/gtk/printer.d.ts +2 -1
  424. package/dist/generated/gtk/printer.js +5 -1
  425. package/dist/generated/gtk/recent-info.d.ts +30 -0
  426. package/dist/generated/gtk/recent-info.js +271 -0
  427. package/dist/generated/gtk/recent-manager.d.ts +2 -1
  428. package/dist/generated/gtk/recent-manager.js +43 -17
  429. package/dist/generated/gtk/requisition.d.ts +11 -0
  430. package/dist/generated/gtk/requisition.js +47 -0
  431. package/dist/generated/gtk/scroll-info.d.ts +11 -0
  432. package/dist/generated/gtk/scroll-info.js +75 -0
  433. package/dist/generated/gtk/scrollable.d.ts +2 -1
  434. package/dist/generated/gtk/scrollable.js +8 -1
  435. package/dist/generated/gtk/selection-model.d.ts +4 -3
  436. package/dist/generated/gtk/selection-model.js +14 -4
  437. package/dist/generated/gtk/shortcut.d.ts +2 -2
  438. package/dist/generated/gtk/shortcut.js +2 -2
  439. package/dist/generated/gtk/style-context.d.ts +4 -3
  440. package/dist/generated/gtk/style-context.js +24 -3
  441. package/dist/generated/gtk/text-buffer.d.ts +38 -37
  442. package/dist/generated/gtk/text-buffer.js +311 -63
  443. package/dist/generated/gtk/text-iter.d.ts +97 -0
  444. package/dist/generated/gtk/text-iter.js +1047 -0
  445. package/dist/generated/gtk/text-view.d.ts +14 -13
  446. package/dist/generated/gtk/text-view.js +77 -16
  447. package/dist/generated/gtk/tree-drag-dest.d.ts +3 -2
  448. package/dist/generated/gtk/tree-drag-dest.js +10 -2
  449. package/dist/generated/gtk/tree-drag-source.d.ts +4 -3
  450. package/dist/generated/gtk/tree-drag-source.js +15 -3
  451. package/dist/generated/gtk/tree-iter.d.ts +15 -0
  452. package/dist/generated/gtk/tree-iter.js +49 -0
  453. package/dist/generated/gtk/tree-model-filter.d.ts +7 -5
  454. package/dist/generated/gtk/tree-model-filter.js +48 -8
  455. package/dist/generated/gtk/tree-model-sort.d.ts +7 -5
  456. package/dist/generated/gtk/tree-model-sort.js +53 -9
  457. package/dist/generated/gtk/tree-model.d.ts +26 -24
  458. package/dist/generated/gtk/tree-model.js +200 -43
  459. package/dist/generated/gtk/tree-path.d.ts +25 -0
  460. package/dist/generated/gtk/tree-path.js +228 -0
  461. package/dist/generated/gtk/tree-row-reference.d.ts +17 -0
  462. package/dist/generated/gtk/tree-row-reference.js +161 -0
  463. package/dist/generated/gtk/tree-selection.d.ts +11 -9
  464. package/dist/generated/gtk/tree-selection.js +58 -11
  465. package/dist/generated/gtk/tree-store.d.ts +20 -19
  466. package/dist/generated/gtk/tree-store.js +181 -32
  467. package/dist/generated/gtk/tree-view-column.d.ts +2 -1
  468. package/dist/generated/gtk/tree-view-column.js +5 -1
  469. package/dist/generated/gtk/tree-view.d.ts +23 -21
  470. package/dist/generated/gtk/tree-view.js +151 -32
  471. package/dist/generated/gtk/uri-launcher.js +10 -4
  472. package/dist/generated/gtk/viewport.d.ts +2 -1
  473. package/dist/generated/gtk/viewport.js +5 -1
  474. package/dist/generated/gtk/widget.d.ts +2 -1
  475. package/dist/generated/gtk/widget.js +16 -2
  476. package/dist/generated/harfbuzz/blob-t.d.ts +5 -0
  477. package/dist/generated/harfbuzz/blob-t.js +9 -0
  478. package/dist/generated/harfbuzz/buffer-t.d.ts +5 -0
  479. package/dist/generated/harfbuzz/buffer-t.js +9 -0
  480. package/dist/generated/harfbuzz/color-line-t.d.ts +18 -0
  481. package/dist/generated/harfbuzz/color-line-t.js +49 -0
  482. package/dist/generated/harfbuzz/color-stop-t.d.ts +12 -0
  483. package/dist/generated/harfbuzz/color-stop-t.js +25 -0
  484. package/dist/generated/harfbuzz/draw-funcs-t.d.ts +5 -0
  485. package/dist/generated/harfbuzz/draw-funcs-t.js +9 -0
  486. package/dist/generated/harfbuzz/draw-state-t.d.ts +20 -0
  487. package/dist/generated/harfbuzz/draw-state-t.js +46 -0
  488. package/dist/generated/harfbuzz/face-t.d.ts +5 -0
  489. package/dist/generated/harfbuzz/face-t.js +9 -0
  490. package/dist/generated/harfbuzz/feature-t.d.ts +19 -0
  491. package/dist/generated/harfbuzz/feature-t.js +60 -0
  492. package/dist/generated/harfbuzz/font-funcs-t.d.ts +5 -0
  493. package/dist/generated/harfbuzz/font-funcs-t.js +9 -0
  494. package/dist/generated/harfbuzz/font-t.d.ts +5 -0
  495. package/dist/generated/harfbuzz/font-t.js +9 -0
  496. package/dist/generated/harfbuzz/functions.d.ts +513 -491
  497. package/dist/generated/harfbuzz/functions.js +3345 -637
  498. package/dist/generated/harfbuzz/glyph-info-t.d.ts +11 -0
  499. package/dist/generated/harfbuzz/glyph-info-t.js +22 -0
  500. package/dist/generated/harfbuzz/glyph-position-t.d.ts +9 -0
  501. package/dist/generated/harfbuzz/glyph-position-t.js +22 -0
  502. package/dist/generated/harfbuzz/index.d.ts +22 -0
  503. package/dist/generated/harfbuzz/index.js +22 -0
  504. package/dist/generated/harfbuzz/map-t.d.ts +5 -0
  505. package/dist/generated/harfbuzz/map-t.js +9 -0
  506. package/dist/generated/harfbuzz/ot-math-glyph-part-t.d.ts +11 -0
  507. package/dist/generated/harfbuzz/ot-math-glyph-part-t.js +25 -0
  508. package/dist/generated/harfbuzz/ot-math-glyph-variant-t.d.ts +7 -0
  509. package/dist/generated/harfbuzz/ot-math-glyph-variant-t.js +16 -0
  510. package/dist/generated/harfbuzz/ot-var-axis-info-t.d.ts +23 -0
  511. package/dist/generated/harfbuzz/ot-var-axis-info-t.js +52 -0
  512. package/dist/generated/harfbuzz/paint-funcs-t.d.ts +5 -0
  513. package/dist/generated/harfbuzz/paint-funcs-t.js +9 -0
  514. package/dist/generated/harfbuzz/segment-properties-t.d.ts +9 -0
  515. package/dist/generated/harfbuzz/segment-properties-t.js +19 -0
  516. package/dist/generated/harfbuzz/set-t.d.ts +5 -0
  517. package/dist/generated/harfbuzz/set-t.js +9 -0
  518. package/dist/generated/harfbuzz/shape-plan-t.d.ts +5 -0
  519. package/dist/generated/harfbuzz/shape-plan-t.js +9 -0
  520. package/dist/generated/harfbuzz/unicode-funcs-t.d.ts +5 -0
  521. package/dist/generated/harfbuzz/unicode-funcs-t.js +9 -0
  522. package/dist/generated/harfbuzz/user-data-key-t.d.ts +5 -0
  523. package/dist/generated/harfbuzz/user-data-key-t.js +10 -0
  524. package/dist/generated/pango/attr-iterator.d.ts +17 -0
  525. package/dist/generated/pango/attr-iterator.js +117 -0
  526. package/dist/generated/pango/attr-list.d.ts +21 -0
  527. package/dist/generated/pango/attr-list.js +222 -0
  528. package/dist/generated/pango/attribute.d.ts +27 -0
  529. package/dist/generated/pango/attribute.js +151 -0
  530. package/dist/generated/pango/color.d.ts +22 -0
  531. package/dist/generated/pango/color.js +95 -0
  532. package/dist/generated/pango/context.d.ts +13 -9
  533. package/dist/generated/pango/context.js +64 -12
  534. package/dist/generated/pango/font-description.d.ts +44 -0
  535. package/dist/generated/pango/font-description.js +444 -0
  536. package/dist/generated/pango/font-face.d.ts +2 -1
  537. package/dist/generated/pango/font-face.js +6 -1
  538. package/dist/generated/pango/font-map.d.ts +4 -2
  539. package/dist/generated/pango/font-map.js +25 -7
  540. package/dist/generated/pango/font-metrics.d.ts +16 -0
  541. package/dist/generated/pango/font-metrics.js +103 -0
  542. package/dist/generated/pango/font.d.ts +9 -6
  543. package/dist/generated/pango/font.js +54 -11
  544. package/dist/generated/pango/fontset-simple.d.ts +2 -1
  545. package/dist/generated/pango/fontset-simple.js +5 -1
  546. package/dist/generated/pango/fontset.d.ts +2 -1
  547. package/dist/generated/pango/fontset.js +6 -1
  548. package/dist/generated/pango/functions.d.ts +66 -57
  549. package/dist/generated/pango/functions.js +380 -71
  550. package/dist/generated/pango/glyph-item-iter.d.ts +34 -0
  551. package/dist/generated/pango/glyph-item-iter.js +142 -0
  552. package/dist/generated/pango/glyph-item.d.ts +28 -0
  553. package/dist/generated/pango/glyph-item.js +149 -0
  554. package/dist/generated/pango/glyph-string.d.ts +21 -0
  555. package/dist/generated/pango/glyph-string.js +260 -0
  556. package/dist/generated/pango/index.d.ts +16 -0
  557. package/dist/generated/pango/index.js +16 -0
  558. package/dist/generated/pango/item.d.ts +18 -0
  559. package/dist/generated/pango/item.js +101 -0
  560. package/dist/generated/pango/language.d.ts +15 -0
  561. package/dist/generated/pango/language.js +102 -0
  562. package/dist/generated/pango/layout-iter.d.ts +28 -0
  563. package/dist/generated/pango/layout-iter.js +243 -0
  564. package/dist/generated/pango/layout-line.d.ts +33 -0
  565. package/dist/generated/pango/layout-line.js +225 -0
  566. package/dist/generated/pango/layout.d.ts +14 -9
  567. package/dist/generated/pango/layout.js +70 -17
  568. package/dist/generated/pango/matrix.d.ts +39 -0
  569. package/dist/generated/pango/matrix.js +228 -0
  570. package/dist/generated/pango/renderer.d.ts +13 -8
  571. package/dist/generated/pango/renderer.js +43 -8
  572. package/dist/generated/pango/script-iter.d.ts +11 -0
  573. package/dist/generated/pango/script-iter.js +60 -0
  574. package/dist/generated/pango/tab-array.d.ts +23 -0
  575. package/dist/generated/pango/tab-array.js +236 -0
  576. package/dist/index.d.ts +1 -0
  577. package/dist/index.js +1 -0
  578. package/dist/native-error.d.ts +6 -0
  579. package/dist/native-error.js +17 -0
  580. package/package.json +3 -3
@@ -10,11 +10,20 @@ export declare class CodeGenerator {
10
10
  private usesRef;
11
11
  private usesCall;
12
12
  private usesType;
13
+ private usesRead;
14
+ private usesWrite;
15
+ private usesAlloc;
16
+ private usesNativeError;
13
17
  private usedEnums;
18
+ private usedRecords;
14
19
  private signalClasses;
20
+ private recordNameToFile;
21
+ private currentSharedLibrary;
15
22
  constructor(options: GeneratorOptions);
16
23
  generateNamespace(namespace: GirNamespace): Promise<Map<string, string>>;
17
24
  private registerEnumsAndBitfields;
25
+ private registerRecords;
26
+ private shouldGenerateRecord;
18
27
  private buildClassMap;
19
28
  private attachConstructorFunctions;
20
29
  private getStandaloneFunctions;
@@ -33,6 +42,21 @@ export declare class CodeGenerator {
33
42
  private extractSignalParamClass;
34
43
  private generateSignalConnect;
35
44
  private generateInterface;
45
+ private generateRecord;
46
+ private generateRecordInitInterface;
47
+ private generateRecordConstructors;
48
+ private getWritableFields;
49
+ private generateFieldInitInterface;
50
+ private generateRecordCreatePtr;
51
+ private generateFieldWrites;
52
+ private calculateStructSize;
53
+ private generateRecordStaticFactoryMethod;
54
+ private generateRecordStaticFunctions;
55
+ private generateRecordMethods;
56
+ private generateRecordFields;
57
+ private isWritableType;
58
+ private getFieldSize;
59
+ private getFieldAlignment;
36
60
  private generateFunctions;
37
61
  private generateFunction;
38
62
  private generateEnums;
@@ -48,6 +48,8 @@ const RESERVED_WORDS = new Set([
48
48
  "public",
49
49
  "await",
50
50
  "async",
51
+ "eval",
52
+ "arguments",
51
53
  ]);
52
54
  const METHOD_RENAMES = new Map([
53
55
  ["IconView", new Map([["setCursor", "setCursorPath"]])],
@@ -67,7 +69,13 @@ const METHOD_RENAMES = new Map([
67
69
  ]),
68
70
  ],
69
71
  ]);
70
- const toKebabCase = (str) => str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
72
+ const CLASS_RENAMES = new Map([
73
+ ["Error", "GError"],
74
+ ]);
75
+ const toKebabCase = (str) => str
76
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
77
+ .replace(/_/g, "-")
78
+ .toLowerCase();
71
79
  const toConstantCase = (str) => str.replace(/-/g, "_").toUpperCase();
72
80
  const sanitizeDoc = (doc) => {
73
81
  let result = doc;
@@ -126,7 +134,16 @@ const toValidIdentifier = (str) => {
126
134
  result = `_${result}`;
127
135
  return result;
128
136
  };
129
- const normalizeClassName = (name) => (name === "Object" ? "GObject" : toPascalCase(name));
137
+ const normalizeClassName = (name) => {
138
+ const pascalName = toPascalCase(name);
139
+ if (CLASS_RENAMES.has(pascalName)) {
140
+ return CLASS_RENAMES.get(pascalName);
141
+ }
142
+ if (pascalName === "Object") {
143
+ return "GObject";
144
+ }
145
+ return pascalName;
146
+ };
130
147
  const hasOutParameter = (params) => params.some((p) => p.direction === "out" || p.direction === "inout");
131
148
  const isVararg = (param) => param.name === "..." || param.name === "";
132
149
  export class CodeGenerator {
@@ -135,15 +152,24 @@ export class CodeGenerator {
135
152
  usesRef = false;
136
153
  usesCall = false;
137
154
  usesType = false;
155
+ usesRead = false;
156
+ usesWrite = false;
157
+ usesAlloc = false;
158
+ usesNativeError = false;
138
159
  usedEnums = new Set();
160
+ usedRecords = new Set();
139
161
  signalClasses = new Set();
162
+ recordNameToFile = new Map();
163
+ currentSharedLibrary = "";
140
164
  constructor(options) {
141
165
  this.options = options;
142
166
  this.typeMapper = new TypeMapper();
143
167
  }
144
168
  async generateNamespace(namespace) {
145
169
  const files = new Map();
170
+ this.currentSharedLibrary = namespace.sharedLibrary;
146
171
  this.registerEnumsAndBitfields(namespace);
172
+ this.registerRecords(namespace);
147
173
  const classMap = this.buildClassMap(namespace);
148
174
  this.attachConstructorFunctions(namespace, classMap);
149
175
  for (const iface of namespace.interfaces) {
@@ -152,6 +178,11 @@ export class CodeGenerator {
152
178
  for (const cls of namespace.classes) {
153
179
  files.set(`${toKebabCase(cls.name)}.ts`, await this.generateClass(cls, namespace.sharedLibrary, classMap));
154
180
  }
181
+ for (const record of namespace.records) {
182
+ if (this.shouldGenerateRecord(record)) {
183
+ files.set(`${toKebabCase(record.name)}.ts`, await this.generateRecord(record, namespace.sharedLibrary));
184
+ }
185
+ }
155
186
  const standaloneFunctions = this.getStandaloneFunctions(namespace, classMap);
156
187
  if (standaloneFunctions.length > 0) {
157
188
  files.set("functions.ts", await this.generateFunctions(standaloneFunctions, namespace.sharedLibrary));
@@ -171,6 +202,28 @@ export class CodeGenerator {
171
202
  this.typeMapper.registerEnum(bitfield.name, toPascalCase(bitfield.name));
172
203
  }
173
204
  }
205
+ registerRecords(namespace) {
206
+ for (const record of namespace.records) {
207
+ if (this.shouldGenerateRecord(record)) {
208
+ const normalizedName = normalizeClassName(record.name);
209
+ this.typeMapper.registerRecord(record.name, normalizedName, record.glibTypeName);
210
+ this.recordNameToFile.set(normalizedName, record.name);
211
+ }
212
+ }
213
+ }
214
+ shouldGenerateRecord(record) {
215
+ if (record.disguised)
216
+ return false;
217
+ if (record.name.endsWith("Class"))
218
+ return false;
219
+ if (record.name.endsWith("Private"))
220
+ return false;
221
+ if (record.name.endsWith("Iface"))
222
+ return false;
223
+ if (!record.glibTypeName)
224
+ return false;
225
+ return true;
226
+ }
174
227
  buildClassMap(namespace) {
175
228
  const classMap = new Map();
176
229
  for (const cls of namespace.classes) {
@@ -214,9 +267,15 @@ export class CodeGenerator {
214
267
  this.usesRef = false;
215
268
  this.usesCall = false;
216
269
  this.usesType = false;
270
+ this.usesRead = false;
271
+ this.usesWrite = false;
272
+ this.usesAlloc = false;
273
+ this.usesNativeError = false;
217
274
  this.usedEnums.clear();
275
+ this.usedRecords.clear();
218
276
  this.signalClasses.clear();
219
277
  this.typeMapper.setEnumUsageCallback((enumName) => this.usedEnums.add(enumName));
278
+ this.typeMapper.setRecordUsageCallback((recordName) => this.usedRecords.add(recordName));
220
279
  }
221
280
  async generateClass(cls, sharedLibrary, classMap) {
222
281
  this.resetState();
@@ -561,8 +620,10 @@ ${allArgs ? `${allArgs},` : ""}
561
620
  }
562
621
  generateSignalConnect(sharedLibrary, signals, hasConnectMethod, classMap) {
563
622
  const methodName = hasConnectMethod ? "on" : "connect";
564
- const savedCallback = this.typeMapper.getEnumUsageCallback();
623
+ const savedEnumCallback = this.typeMapper.getEnumUsageCallback();
624
+ const savedRecordCallback = this.typeMapper.getRecordUsageCallback();
565
625
  this.typeMapper.setEnumUsageCallback(null);
626
+ this.typeMapper.setRecordUsageCallback(null);
566
627
  const signalMetadata = signals.map((signal) => {
567
628
  const paramEntries = (signal.parameters ?? []).map((param) => {
568
629
  const ffiType = JSON.stringify(this.typeMapper.mapType(param.type).ffi);
@@ -575,7 +636,8 @@ ${allArgs ? `${allArgs},` : ""}
575
636
  });
576
637
  return ` "${signal.name}": [${paramEntries.join(", ")}]`;
577
638
  });
578
- this.typeMapper.setEnumUsageCallback(savedCallback);
639
+ this.typeMapper.setEnumUsageCallback(savedEnumCallback);
640
+ this.typeMapper.setRecordUsageCallback(savedRecordCallback);
579
641
  this.usesType = true;
580
642
  const signalMapCode = signalMetadata.length > 0
581
643
  ? `const signalMeta: Record<string, { type: Type; cls?: { prototype: object } }[]> = {\n${signalMetadata.join(",\n")}\n };
@@ -638,6 +700,297 @@ ${allArgs ? `${allArgs},` : ""}
638
700
  const imports = this.generateImports(interfaceName);
639
701
  return this.formatCode(imports + sections.join("\n"));
640
702
  }
703
+ async generateRecord(record, sharedLibrary) {
704
+ this.resetState();
705
+ this.usesRef =
706
+ record.methods.some((m) => hasOutParameter(m.parameters)) ||
707
+ record.constructors.some((c) => hasOutParameter(c.parameters)) ||
708
+ record.functions.some((f) => hasOutParameter(f.parameters));
709
+ this.usesCall =
710
+ record.methods.length > 0 || record.constructors.length > 0 || record.functions.length > 0;
711
+ const hasReadableFields = record.fields.some((f) => f.readable !== false && !f.private);
712
+ if (hasReadableFields) {
713
+ this.usesRead = true;
714
+ }
715
+ const recordName = normalizeClassName(record.name);
716
+ const sections = [];
717
+ const initInterface = this.generateRecordInitInterface(record);
718
+ if (initInterface) {
719
+ sections.push(initInterface);
720
+ }
721
+ if (record.doc) {
722
+ sections.push(formatDoc(record.doc));
723
+ }
724
+ sections.push(`export class ${recordName} {`);
725
+ sections.push(` ptr: unknown;\n`);
726
+ sections.push(this.generateRecordConstructors(record, sharedLibrary));
727
+ sections.push(this.generateRecordStaticFunctions(record.functions, sharedLibrary, recordName));
728
+ sections.push(this.generateRecordMethods(record.methods, sharedLibrary, record.name));
729
+ sections.push(this.generateRecordFields(record.fields, record.methods));
730
+ sections.push("}");
731
+ const imports = this.generateImports(recordName);
732
+ return this.formatCode(imports + sections.join("\n"));
733
+ }
734
+ generateRecordInitInterface(record) {
735
+ const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
736
+ if (mainConstructor)
737
+ return null;
738
+ const initFields = this.getWritableFields(record.fields);
739
+ if (initFields.length === 0)
740
+ return null;
741
+ const recordName = normalizeClassName(record.name);
742
+ return this.generateFieldInitInterface(recordName, initFields);
743
+ }
744
+ generateRecordConstructors(record, sharedLibrary) {
745
+ const recordName = normalizeClassName(record.name);
746
+ const sections = [];
747
+ const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
748
+ if (mainConstructor) {
749
+ const ctorDoc = formatMethodDoc(mainConstructor.doc, mainConstructor.parameters);
750
+ const filteredParams = mainConstructor.parameters.filter((p) => !isVararg(p));
751
+ if (filteredParams.length === 0) {
752
+ sections.push(`${ctorDoc} constructor() {\n this.ptr = this.createPtr([]);\n }\n`);
753
+ }
754
+ else {
755
+ const typedParams = this.generateParameterList(mainConstructor.parameters, false);
756
+ const paramNames = filteredParams.map((p) => toValidIdentifier(toCamelCase(p.name)));
757
+ const firstParamType = this.typeMapper.mapParameter(filteredParams[0]).ts;
758
+ const isFirstParamArray = firstParamType.endsWith("[]") || firstParamType.startsWith("Array<");
759
+ if (isFirstParamArray) {
760
+ sections.push(`${ctorDoc} constructor(${typedParams}) {
761
+ const _args = [${paramNames.join(", ")}];
762
+ this.ptr = this.createPtr(_args);
763
+ }
764
+ `);
765
+ }
766
+ else {
767
+ sections.push(`${ctorDoc} constructor(${typedParams});
768
+ constructor(_args: unknown[]);
769
+ constructor(...args: unknown[]) {
770
+ const _args = args.length === 1 && Array.isArray(args[0]) ? args[0] : args;
771
+ this.ptr = this.createPtr(_args);
772
+ }
773
+ `);
774
+ }
775
+ }
776
+ for (const ctor of record.constructors) {
777
+ if (ctor !== mainConstructor) {
778
+ sections.push(this.generateRecordStaticFactoryMethod(ctor, recordName, sharedLibrary));
779
+ }
780
+ }
781
+ }
782
+ else {
783
+ const initFields = this.getWritableFields(record.fields);
784
+ if (initFields.length > 0) {
785
+ sections.push(` constructor(init: ${recordName}Init = {}) {\n this.ptr = this.createPtr(init);\n }\n`);
786
+ }
787
+ else {
788
+ sections.push(` constructor() {\n this.ptr = this.createPtr({});\n }\n`);
789
+ }
790
+ }
791
+ sections.push(this.generateRecordCreatePtr(record, sharedLibrary));
792
+ return sections.join("\n");
793
+ }
794
+ getWritableFields(fields) {
795
+ return fields.filter((f) => !f.private && f.writable !== false && this.isWritableType(f.type));
796
+ }
797
+ generateFieldInitInterface(recordName, fields) {
798
+ const properties = fields.map((field) => {
799
+ const fieldName = toValidIdentifier(toCamelCase(field.name));
800
+ const typeMapping = this.typeMapper.mapType(field.type);
801
+ return ` ${fieldName}?: ${typeMapping.ts};`;
802
+ });
803
+ return `export interface ${recordName}Init {\n${properties.join("\n")}\n}\n\n`;
804
+ }
805
+ generateRecordCreatePtr(record, sharedLibrary) {
806
+ const recordName = normalizeClassName(record.name);
807
+ const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
808
+ if (!mainConstructor) {
809
+ if (record.glibTypeName && record.fields.length > 0) {
810
+ const structSize = this.calculateStructSize(record.fields);
811
+ const initFields = this.getWritableFields(record.fields);
812
+ this.usesAlloc = true;
813
+ if (initFields.length > 0) {
814
+ const fieldWrites = this.generateFieldWrites(record.fields);
815
+ this.usesWrite = true;
816
+ return ` protected createPtr(init: ${recordName}Init): unknown {
817
+ const ptr = alloc(${structSize}, "${record.glibTypeName}", "${sharedLibrary}");
818
+ ${fieldWrites}
819
+ return ptr;
820
+ }
821
+ `;
822
+ }
823
+ return ` protected createPtr(_init: Record<string, unknown>): unknown {
824
+ return alloc(${structSize}, "${record.glibTypeName}", "${sharedLibrary}");
825
+ }
826
+ `;
827
+ }
828
+ return ` protected createPtr(_init: Record<string, unknown>): unknown {\n return null;\n }\n`;
829
+ }
830
+ const filteredParams = mainConstructor.parameters.filter((p) => !isVararg(p));
831
+ const paramTypes = filteredParams.map((p) => this.typeMapper.mapParameter(p).ts);
832
+ const paramNames = filteredParams.map((p) => toValidIdentifier(toCamelCase(p.name)));
833
+ const destructuring = paramNames.length > 0
834
+ ? ` const [${paramNames.join(", ")}] = _args as [${paramTypes.join(", ")}];\n`
835
+ : "";
836
+ const args = this.generateCallArguments(mainConstructor.parameters);
837
+ const glibTypeName = record.glibTypeName ?? record.cType;
838
+ return ` protected createPtr(_args: unknown[]): unknown {
839
+ ${destructuring} return call(
840
+ "${sharedLibrary}",
841
+ "${mainConstructor.cIdentifier}",
842
+ [
843
+ ${args}
844
+ ],
845
+ { type: "boxed", borrowed: true, innerType: "${glibTypeName}" }
846
+ );
847
+ }
848
+ `;
849
+ }
850
+ generateFieldWrites(fields) {
851
+ const writes = [];
852
+ let currentOffset = 0;
853
+ for (const field of fields) {
854
+ if (field.private)
855
+ continue;
856
+ const fieldSize = this.getFieldSize(field.type);
857
+ const alignment = this.getFieldAlignment(field.type);
858
+ currentOffset = Math.ceil(currentOffset / alignment) * alignment;
859
+ if (field.writable !== false && this.isWritableType(field.type)) {
860
+ const fieldName = toValidIdentifier(toCamelCase(field.name));
861
+ const typeMapping = this.typeMapper.mapType(field.type);
862
+ writes.push(` if (init.${fieldName} !== undefined) write(ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${currentOffset}, init.${fieldName});`);
863
+ }
864
+ currentOffset += fieldSize;
865
+ }
866
+ return writes.join("\n");
867
+ }
868
+ calculateStructSize(fields) {
869
+ let currentOffset = 0;
870
+ for (const field of fields) {
871
+ if (field.private)
872
+ continue;
873
+ const fieldSize = this.getFieldSize(field.type);
874
+ const alignment = this.getFieldAlignment(field.type);
875
+ currentOffset = Math.ceil(currentOffset / alignment) * alignment;
876
+ currentOffset += fieldSize;
877
+ }
878
+ const maxAlignment = Math.max(...fields.map((f) => this.getFieldAlignment(f.type)), 1);
879
+ return Math.ceil(currentOffset / maxAlignment) * maxAlignment;
880
+ }
881
+ generateRecordStaticFactoryMethod(ctor, recordName, sharedLibrary) {
882
+ let methodName = "new";
883
+ if (ctor.cIdentifier) {
884
+ const parts = ctor.cIdentifier.split("_");
885
+ const nameParts = parts.slice(2).join("_");
886
+ if (nameParts && nameParts !== "new") {
887
+ methodName = toCamelCase(nameParts);
888
+ }
889
+ }
890
+ const params = this.generateParameterList(ctor.parameters);
891
+ const args = this.generateCallArguments(ctor.parameters);
892
+ const ctorDoc = formatMethodDoc(ctor.doc, ctor.parameters);
893
+ return `${ctorDoc} static ${methodName}(${params}): ${recordName} {
894
+ const ptr = call(
895
+ "${sharedLibrary}",
896
+ "${ctor.cIdentifier}",
897
+ [
898
+ ${args}
899
+ ],
900
+ { type: "boxed", borrowed: true, innerType: "${recordName}" }
901
+ );
902
+ const instance = Object.create(${recordName}.prototype) as ${recordName} & { ptr: unknown };
903
+ instance.ptr = ptr;
904
+ return instance;
905
+ }
906
+ `;
907
+ }
908
+ generateRecordStaticFunctions(functions, sharedLibrary, recordName) {
909
+ return this.generateStaticFunctions(functions, sharedLibrary, recordName);
910
+ }
911
+ generateRecordMethods(methods, sharedLibrary, recordName) {
912
+ return this.generateMethods(methods, sharedLibrary, recordName);
913
+ }
914
+ generateRecordFields(fields, methods) {
915
+ const sections = [];
916
+ const fieldOffsets = [];
917
+ const methodNames = new Set(methods.map((m) => toCamelCase(m.name)));
918
+ let currentOffset = 0;
919
+ for (const field of fields) {
920
+ if (field.private)
921
+ continue;
922
+ const fieldSize = this.getFieldSize(field.type);
923
+ const alignment = this.getFieldAlignment(field.type);
924
+ currentOffset = Math.ceil(currentOffset / alignment) * alignment;
925
+ fieldOffsets.push({ field, offset: currentOffset });
926
+ currentOffset += fieldSize;
927
+ }
928
+ for (const { field, offset } of fieldOffsets) {
929
+ const isReadable = field.readable !== false;
930
+ const isWritable = field.writable !== false;
931
+ if (!isReadable && !isWritable)
932
+ continue;
933
+ const fieldName = toValidIdentifier(toCamelCase(field.name));
934
+ if (methodNames.has(fieldName))
935
+ continue;
936
+ const typeMapping = this.typeMapper.mapType(field.type);
937
+ if (field.doc) {
938
+ sections.push(formatDoc(field.doc, " ").trimEnd());
939
+ }
940
+ if (isReadable) {
941
+ sections.push(` get ${fieldName}(): ${typeMapping.ts} {
942
+ return read(this.ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${offset}) as ${typeMapping.ts};
943
+ }
944
+ `);
945
+ }
946
+ if (isWritable && this.isWritableType(field.type)) {
947
+ this.usesWrite = true;
948
+ sections.push(` set ${fieldName}(value: ${typeMapping.ts}) {
949
+ write(this.ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${offset}, value);
950
+ }
951
+ `);
952
+ }
953
+ }
954
+ return sections.join("\n");
955
+ }
956
+ isWritableType(type) {
957
+ const typeName = type.name;
958
+ if (typeName === "gboolean" || typeName === "guint8" || typeName === "gint8" || typeName === "guchar" || typeName === "gchar") {
959
+ return true;
960
+ }
961
+ if (typeName === "gint16" || typeName === "guint16" || typeName === "gshort" || typeName === "gushort") {
962
+ return true;
963
+ }
964
+ if (typeName === "gint" || typeName === "guint" || typeName === "gint32" || typeName === "guint32") {
965
+ return true;
966
+ }
967
+ if (typeName === "gint64" || typeName === "guint64" || typeName === "glong" || typeName === "gulong" || typeName === "gsize" || typeName === "gssize") {
968
+ return true;
969
+ }
970
+ if (typeName === "gfloat" || typeName === "float" || typeName === "gdouble" || typeName === "double") {
971
+ return true;
972
+ }
973
+ return false;
974
+ }
975
+ getFieldSize(type) {
976
+ const typeName = type.name;
977
+ if (typeName === "gboolean" || typeName === "guint8" || typeName === "gint8" || typeName === "guchar" || typeName === "gchar") {
978
+ return 1;
979
+ }
980
+ if (typeName === "gint16" || typeName === "guint16" || typeName === "gshort" || typeName === "gushort") {
981
+ return 2;
982
+ }
983
+ if (typeName === "gint" || typeName === "guint" || typeName === "gint32" || typeName === "guint32" || typeName === "gfloat" || typeName === "float" || typeName === "Quark" || typeName === "GQuark") {
984
+ return 4;
985
+ }
986
+ if (typeName === "gint64" || typeName === "guint64" || typeName === "gdouble" || typeName === "double" || typeName === "glong" || typeName === "gulong" || typeName === "gsize" || typeName === "gssize" || typeName === "GType") {
987
+ return 8;
988
+ }
989
+ return 8;
990
+ }
991
+ getFieldAlignment(type) {
992
+ return this.getFieldSize(type);
993
+ }
641
994
  async generateFunctions(functions, sharedLibrary) {
642
995
  this.resetState();
643
996
  this.usesRef = functions.some((f) => hasOutParameter(f.parameters));
@@ -734,13 +1087,12 @@ ${allArgs ? `${allArgs},` : ""}
734
1087
  .join(",\n");
735
1088
  }
736
1089
  generateErrorArgument(indent = " ") {
737
- return `${indent} {\n${indent} type: { type: "ref", innerType: { type: "gobject" } },\n${indent} value: error,\n${indent} }`;
1090
+ return `${indent} {\n${indent} type: { type: "ref", innerType: { type: "boxed", innerType: "GError", lib: "libglib-2.0.so.0" } },\n${indent} value: error,\n${indent} }`;
738
1091
  }
739
1092
  generateErrorCheck(indent = " ") {
1093
+ this.usesNativeError = true;
740
1094
  return `${indent} if (error.value !== null) {
741
- ${indent} const jsError = new Error("GLib Error occurred");
742
- ${indent} (jsError as any).gError = error.value;
743
- ${indent} throw jsError;
1095
+ ${indent} throw new NativeError(error.value);
744
1096
  ${indent} }`;
745
1097
  }
746
1098
  generateTypeDescriptor(type) {
@@ -753,7 +1105,14 @@ ${indent} }`;
753
1105
  if (type.type === "gobject") {
754
1106
  return type.borrowed ? `{ type: "gobject", borrowed: true }` : `{ type: "gobject" }`;
755
1107
  }
756
- if (type.type === "ref" && type.innerType) {
1108
+ if (type.type === "boxed") {
1109
+ const innerType = typeof type.innerType === "string" ? type.innerType : "";
1110
+ const lib = this.currentSharedLibrary;
1111
+ return type.borrowed
1112
+ ? `{ type: "boxed", borrowed: true, innerType: "${innerType}", lib: "${lib}" }`
1113
+ : `{ type: "boxed", innerType: "${innerType}", lib: "${lib}" }`;
1114
+ }
1115
+ if (type.type === "ref" && type.innerType && typeof type.innerType !== "string") {
757
1116
  return `{ type: "ref", innerType: ${this.generateTypeDescriptor(type.innerType)} }`;
758
1117
  }
759
1118
  if (type.type === "array" && type.itemType) {
@@ -763,8 +1122,14 @@ ${indent} }`;
763
1122
  }
764
1123
  generateImports(currentClassName, parentClassName) {
765
1124
  const nativeImports = [];
1125
+ if (this.usesAlloc)
1126
+ nativeImports.push("alloc");
766
1127
  if (this.usesCall)
767
1128
  nativeImports.push("call");
1129
+ if (this.usesRead)
1130
+ nativeImports.push("read");
1131
+ if (this.usesWrite)
1132
+ nativeImports.push("write");
768
1133
  if (this.usesRef)
769
1134
  nativeImports.push("Ref");
770
1135
  if (this.usesType)
@@ -773,10 +1138,21 @@ ${indent} }`;
773
1138
  if (nativeImports.length > 0) {
774
1139
  lines.push(`import { ${nativeImports.join(", ")} } from "@gtkx/native";`);
775
1140
  }
1141
+ if (this.usesNativeError) {
1142
+ lines.push(`import { NativeError } from "@gtkx/ffi";`);
1143
+ }
776
1144
  if (this.usedEnums.size > 0) {
777
1145
  const enumList = Array.from(this.usedEnums).sort().join(", ");
778
1146
  lines.push(`import { ${enumList} } from "./enums.js";`);
779
1147
  }
1148
+ for (const normalizedRecordName of Array.from(this.usedRecords).sort()) {
1149
+ const normalizedCurrentClass = currentClassName ? normalizeClassName(currentClassName) : "";
1150
+ const normalizedParentClass = parentClassName ? normalizeClassName(parentClassName) : "";
1151
+ if (normalizedRecordName !== normalizedCurrentClass && normalizedRecordName !== normalizedParentClass) {
1152
+ const originalName = this.recordNameToFile.get(normalizedRecordName) ?? normalizedRecordName;
1153
+ lines.push(`import type { ${normalizedRecordName} } from "./${toKebabCase(originalName)}.js";`);
1154
+ }
1155
+ }
780
1156
  for (const className of Array.from(this.signalClasses).sort()) {
781
1157
  if (className !== currentClassName && className !== parentClassName) {
782
1158
  lines.push(`import { ${className} } from "./${toKebabCase(className)}.js";`);
@@ -0,0 +1,5 @@
1
+ export declare class Context {
2
+ ptr: unknown;
3
+ constructor();
4
+ protected createPtr(_init: Record<string, unknown>): unknown;
5
+ }
@@ -0,0 +1,9 @@
1
+ export class Context {
2
+ ptr;
3
+ constructor() {
4
+ this.ptr = this.createPtr({});
5
+ }
6
+ createPtr(_init) {
7
+ return null;
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ export declare class Device {
2
+ ptr: unknown;
3
+ constructor();
4
+ protected createPtr(_init: Record<string, unknown>): unknown;
5
+ }
@@ -0,0 +1,9 @@
1
+ export class Device {
2
+ ptr;
3
+ constructor() {
4
+ this.ptr = this.createPtr({});
5
+ }
6
+ createPtr(_init) {
7
+ return null;
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ export declare class FontFace {
2
+ ptr: unknown;
3
+ constructor();
4
+ protected createPtr(_init: Record<string, unknown>): unknown;
5
+ }
@@ -0,0 +1,9 @@
1
+ export class FontFace {
2
+ ptr;
3
+ constructor() {
4
+ this.ptr = this.createPtr({});
5
+ }
6
+ createPtr(_init) {
7
+ return null;
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ export declare class FontOptions {
2
+ ptr: unknown;
3
+ constructor();
4
+ protected createPtr(_init: Record<string, unknown>): unknown;
5
+ }
@@ -0,0 +1,9 @@
1
+ export class FontOptions {
2
+ ptr;
3
+ constructor() {
4
+ this.ptr = this.createPtr({});
5
+ }
6
+ createPtr(_init) {
7
+ return null;
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ export interface GlyphInit {
2
+ index?: number;
3
+ x?: number;
4
+ y?: number;
5
+ }
6
+ export declare class Glyph {
7
+ ptr: unknown;
8
+ constructor(init?: GlyphInit);
9
+ protected createPtr(init: GlyphInit): unknown;
10
+ get index(): number;
11
+ set index(value: number);
12
+ get x(): number;
13
+ set x(value: number);
14
+ get y(): number;
15
+ set y(value: number);
16
+ }
@@ -0,0 +1,35 @@
1
+ import { alloc, read, write } from "@gtkx/native";
2
+ export class Glyph {
3
+ ptr;
4
+ constructor(init = {}) {
5
+ this.ptr = this.createPtr(init);
6
+ }
7
+ createPtr(init) {
8
+ const ptr = alloc(24, "CairoGlyph", "libcairo-gobject.so.2");
9
+ if (init.index !== undefined)
10
+ write(ptr, { type: "int", size: 64, unsigned: true }, 0, init.index);
11
+ if (init.x !== undefined)
12
+ write(ptr, { type: "float", size: 64 }, 8, init.x);
13
+ if (init.y !== undefined)
14
+ write(ptr, { type: "float", size: 64 }, 16, init.y);
15
+ return ptr;
16
+ }
17
+ get index() {
18
+ return read(this.ptr, { type: "int", size: 64, unsigned: true }, 0);
19
+ }
20
+ set index(value) {
21
+ write(this.ptr, { type: "int", size: 64, unsigned: true }, 0, value);
22
+ }
23
+ get x() {
24
+ return read(this.ptr, { type: "float", size: 64 }, 8);
25
+ }
26
+ set x(value) {
27
+ write(this.ptr, { type: "float", size: 64 }, 8, value);
28
+ }
29
+ get y() {
30
+ return read(this.ptr, { type: "float", size: 64 }, 16);
31
+ }
32
+ set y(value) {
33
+ write(this.ptr, { type: "float", size: 64 }, 16, value);
34
+ }
35
+ }