@gtkx/codegen 0.21.0 → 1.0.0-rc.1

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 (732) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +18 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +297 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +59 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +123 -0
  9. package/dist/analysis/descriptor.js.map +1 -0
  10. package/dist/analysis/inheritance.d.ts +38 -0
  11. package/dist/analysis/inheritance.d.ts.map +1 -0
  12. package/dist/analysis/inheritance.js +193 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +26 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +107 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +19 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +65 -0
  21. package/dist/analysis/ts-type.js.map +1 -0
  22. package/dist/compile.d.ts +18 -0
  23. package/dist/compile.d.ts.map +1 -0
  24. package/dist/compile.js +123 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +66 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +299 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +15 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +221 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +25 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +130 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +32 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +134 -0
  41. package/dist/docs/render.js.map +1 -0
  42. package/dist/docs/symbol-page.d.ts +41 -0
  43. package/dist/docs/symbol-page.d.ts.map +1 -0
  44. package/dist/docs/symbol-page.js +338 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +6 -26
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +30 -18
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gir/ancestry.d.ts +9 -0
  51. package/dist/gir/ancestry.d.ts.map +1 -0
  52. package/dist/gir/ancestry.js +29 -0
  53. package/dist/gir/ancestry.js.map +1 -0
  54. package/dist/gir/callback.d.ts +9 -10
  55. package/dist/gir/callback.d.ts.map +1 -1
  56. package/dist/gir/callback.js +17 -16
  57. package/dist/gir/callback.js.map +1 -1
  58. package/dist/gir/class.d.ts +22 -43
  59. package/dist/gir/class.d.ts.map +1 -1
  60. package/dist/gir/class.js +11 -23
  61. package/dist/gir/class.js.map +1 -1
  62. package/dist/gir/enum.d.ts +13 -31
  63. package/dist/gir/enum.d.ts.map +1 -1
  64. package/dist/gir/enum.js +7 -14
  65. package/dist/gir/enum.js.map +1 -1
  66. package/dist/gir/field.d.ts +10 -23
  67. package/dist/gir/field.d.ts.map +1 -1
  68. package/dist/gir/field.js +12 -18
  69. package/dist/gir/field.js.map +1 -1
  70. package/dist/gir/function.d.ts +11 -42
  71. package/dist/gir/function.d.ts.map +1 -1
  72. package/dist/gir/function.js +7 -20
  73. package/dist/gir/function.js.map +1 -1
  74. package/dist/gir/gir-path.d.ts +2 -0
  75. package/dist/gir/gir-path.d.ts.map +1 -0
  76. package/dist/gir/gir-path.js +41 -0
  77. package/dist/gir/gir-path.js.map +1 -0
  78. package/dist/gir/libraries.d.ts +4 -0
  79. package/dist/gir/libraries.d.ts.map +1 -0
  80. package/dist/gir/libraries.js +62 -0
  81. package/dist/gir/libraries.js.map +1 -0
  82. package/dist/gir/library.d.ts +37 -0
  83. package/dist/gir/library.d.ts.map +1 -0
  84. package/dist/gir/library.js +218 -0
  85. package/dist/gir/library.js.map +1 -0
  86. package/dist/gir/namespace.d.ts +36 -50
  87. package/dist/gir/namespace.d.ts.map +1 -1
  88. package/dist/gir/namespace.js +46 -36
  89. package/dist/gir/namespace.js.map +1 -1
  90. package/dist/gir/parameter.d.ts +25 -69
  91. package/dist/gir/parameter.d.ts.map +1 -1
  92. package/dist/gir/parameter.js +36 -57
  93. package/dist/gir/parameter.js.map +1 -1
  94. package/dist/gir/parse.d.ts +6 -70
  95. package/dist/gir/parse.d.ts.map +1 -1
  96. package/dist/gir/parse.js +32 -80
  97. package/dist/gir/parse.js.map +1 -1
  98. package/dist/gir/primitives.d.ts +3 -34
  99. package/dist/gir/primitives.d.ts.map +1 -1
  100. package/dist/gir/primitives.js +19 -35
  101. package/dist/gir/primitives.js.map +1 -1
  102. package/dist/gir/property.d.ts +16 -25
  103. package/dist/gir/property.d.ts.map +1 -1
  104. package/dist/gir/property.js +12 -9
  105. package/dist/gir/property.js.map +1 -1
  106. package/dist/gir/record.d.ts +27 -0
  107. package/dist/gir/record.d.ts.map +1 -0
  108. package/dist/gir/record.js +25 -0
  109. package/dist/gir/record.js.map +1 -0
  110. package/dist/gir/size.d.ts +10 -57
  111. package/dist/gir/size.d.ts.map +1 -1
  112. package/dist/gir/size.js +0 -25
  113. package/dist/gir/size.js.map +1 -1
  114. package/dist/gir/type-id.d.ts +49 -0
  115. package/dist/gir/type-id.d.ts.map +1 -0
  116. package/dist/gir/type-id.js +8 -0
  117. package/dist/gir/type-id.js.map +1 -0
  118. package/dist/gir/type-ref.d.ts +3 -77
  119. package/dist/gir/type-ref.d.ts.map +1 -1
  120. package/dist/gir/type-ref.js +35 -65
  121. package/dist/gir/type-ref.js.map +1 -1
  122. package/dist/gir/type.d.ts +33 -0
  123. package/dist/gir/type.d.ts.map +1 -0
  124. package/dist/gir/type.js +2 -0
  125. package/dist/gir/type.js.map +1 -0
  126. package/dist/index.d.ts +5 -11
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -11
  129. package/dist/index.js.map +1 -1
  130. package/dist/khronos/args.d.ts +30 -0
  131. package/dist/khronos/args.d.ts.map +1 -0
  132. package/dist/khronos/args.js +150 -0
  133. package/dist/khronos/args.js.map +1 -0
  134. package/dist/khronos/jsdoc.d.ts +21 -0
  135. package/dist/khronos/jsdoc.d.ts.map +1 -0
  136. package/dist/khronos/jsdoc.js +59 -0
  137. package/dist/khronos/jsdoc.js.map +1 -0
  138. package/dist/khronos/model.d.ts +37 -0
  139. package/dist/khronos/model.d.ts.map +1 -0
  140. package/dist/khronos/model.js +132 -0
  141. package/dist/khronos/model.js.map +1 -0
  142. package/dist/khronos/modules.d.ts +11 -0
  143. package/dist/khronos/modules.d.ts.map +1 -0
  144. package/dist/khronos/modules.js +58 -0
  145. package/dist/khronos/modules.js.map +1 -0
  146. package/dist/khronos/parse.d.ts +9 -0
  147. package/dist/khronos/parse.d.ts.map +1 -0
  148. package/dist/khronos/parse.js +61 -0
  149. package/dist/khronos/parse.js.map +1 -0
  150. package/dist/khronos/pipeline.d.ts +24 -0
  151. package/dist/khronos/pipeline.d.ts.map +1 -0
  152. package/dist/khronos/pipeline.js +182 -0
  153. package/dist/khronos/pipeline.js.map +1 -0
  154. package/dist/khronos/plan.d.ts +80 -0
  155. package/dist/khronos/plan.d.ts.map +1 -0
  156. package/dist/khronos/plan.js +136 -0
  157. package/dist/khronos/plan.js.map +1 -0
  158. package/dist/khronos/render.d.ts +16 -0
  159. package/dist/khronos/render.d.ts.map +1 -0
  160. package/dist/khronos/render.js +158 -0
  161. package/dist/khronos/render.js.map +1 -0
  162. package/dist/khronos/select.d.ts +15 -0
  163. package/dist/khronos/select.d.ts.map +1 -0
  164. package/dist/khronos/select.js +45 -0
  165. package/dist/khronos/select.js.map +1 -0
  166. package/dist/runner.d.ts +29 -47
  167. package/dist/runner.d.ts.map +1 -1
  168. package/dist/runner.js +78 -53
  169. package/dist/runner.js.map +1 -1
  170. package/dist/store/compile-store.d.ts +9 -0
  171. package/dist/store/compile-store.d.ts.map +1 -0
  172. package/dist/store/compile-store.js +38 -0
  173. package/dist/store/compile-store.js.map +1 -0
  174. package/dist/store/gi/async.d.ts +4 -0
  175. package/dist/store/gi/async.d.ts.map +1 -0
  176. package/dist/store/gi/async.js +41 -0
  177. package/dist/store/gi/async.js.map +1 -0
  178. package/dist/store/gi/callables.d.ts +36 -0
  179. package/dist/store/gi/callables.d.ts.map +1 -0
  180. package/dist/store/gi/callables.js +202 -0
  181. package/dist/store/gi/callables.js.map +1 -0
  182. package/dist/store/gi/callback.d.ts +4 -0
  183. package/dist/store/gi/callback.d.ts.map +1 -0
  184. package/dist/store/gi/callback.js +14 -0
  185. package/dist/store/gi/callback.js.map +1 -0
  186. package/dist/store/gi/class-struct-record.d.ts +9 -0
  187. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  188. package/dist/store/gi/class-struct-record.js +34 -0
  189. package/dist/store/gi/class-struct-record.js.map +1 -0
  190. package/dist/store/gi/class.d.ts +4 -0
  191. package/dist/store/gi/class.d.ts.map +1 -0
  192. package/dist/store/gi/class.js +169 -0
  193. package/dist/store/gi/class.js.map +1 -0
  194. package/dist/store/gi/companion.d.ts +4 -0
  195. package/dist/store/gi/companion.d.ts.map +1 -0
  196. package/dist/store/gi/companion.js +13 -0
  197. package/dist/store/gi/companion.js.map +1 -0
  198. package/dist/store/gi/constant.d.ts +5 -0
  199. package/dist/store/gi/constant.d.ts.map +1 -0
  200. package/dist/store/gi/constant.js +18 -0
  201. package/dist/store/gi/constant.js.map +1 -0
  202. package/dist/store/gi/constructor-props.d.ts +5 -0
  203. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  204. package/dist/store/gi/constructor-props.js +64 -0
  205. package/dist/store/gi/constructor-props.js.map +1 -0
  206. package/dist/store/gi/enum.d.ts +5 -0
  207. package/dist/store/gi/enum.d.ts.map +1 -0
  208. package/dist/store/gi/enum.js +38 -0
  209. package/dist/store/gi/enum.js.map +1 -0
  210. package/dist/store/gi/function.d.ts +8 -0
  211. package/dist/store/gi/function.d.ts.map +1 -0
  212. package/dist/store/gi/function.js +87 -0
  213. package/dist/store/gi/function.js.map +1 -0
  214. package/dist/store/gi/gtype-binding.d.ts +10 -0
  215. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  216. package/dist/store/gi/gtype-binding.js +20 -0
  217. package/dist/store/gi/gtype-binding.js.map +1 -0
  218. package/dist/store/gi/interface.d.ts +4 -0
  219. package/dist/store/gi/interface.d.ts.map +1 -0
  220. package/dist/store/gi/interface.js +99 -0
  221. package/dist/store/gi/interface.js.map +1 -0
  222. package/dist/store/gi/item-comparators.d.ts +6 -0
  223. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  224. package/dist/store/gi/item-comparators.js +76 -0
  225. package/dist/store/gi/item-comparators.js.map +1 -0
  226. package/dist/store/gi/method.d.ts +24 -0
  227. package/dist/store/gi/method.d.ts.map +1 -0
  228. package/dist/store/gi/method.js +279 -0
  229. package/dist/store/gi/method.js.map +1 -0
  230. package/dist/store/gi/param-marshal.d.ts +9 -0
  231. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  232. package/dist/store/gi/param-marshal.js +37 -0
  233. package/dist/store/gi/param-marshal.js.map +1 -0
  234. package/dist/store/gi/pipeline.d.ts +4 -0
  235. package/dist/store/gi/pipeline.d.ts.map +1 -0
  236. package/dist/store/gi/pipeline.js +80 -0
  237. package/dist/store/gi/pipeline.js.map +1 -0
  238. package/dist/store/gi/properties.d.ts +5 -0
  239. package/dist/store/gi/properties.d.ts.map +1 -0
  240. package/dist/store/gi/properties.js +30 -0
  241. package/dist/store/gi/properties.js.map +1 -0
  242. package/dist/store/gi/property-accessor.d.ts +26 -0
  243. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  244. package/dist/store/gi/property-accessor.js +132 -0
  245. package/dist/store/gi/property-accessor.js.map +1 -0
  246. package/dist/store/gi/record-constructor.d.ts +5 -0
  247. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  248. package/dist/store/gi/record-constructor.js +65 -0
  249. package/dist/store/gi/record-constructor.js.map +1 -0
  250. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  251. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  252. package/dist/store/gi/record-field-accessor.js +288 -0
  253. package/dist/store/gi/record-field-accessor.js.map +1 -0
  254. package/dist/store/gi/record-layout.d.ts +14 -0
  255. package/dist/store/gi/record-layout.d.ts.map +1 -0
  256. package/dist/store/gi/record-layout.js +96 -0
  257. package/dist/store/gi/record-layout.js.map +1 -0
  258. package/dist/store/gi/record.d.ts +4 -0
  259. package/dist/store/gi/record.d.ts.map +1 -0
  260. package/dist/store/gi/record.js +59 -0
  261. package/dist/store/gi/record.js.map +1 -0
  262. package/dist/store/gi/registration.d.ts +16 -0
  263. package/dist/store/gi/registration.d.ts.map +1 -0
  264. package/dist/store/gi/registration.js +20 -0
  265. package/dist/store/gi/registration.js.map +1 -0
  266. package/dist/store/gi/return-wrap.d.ts +10 -0
  267. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  268. package/dist/store/gi/return-wrap.js +46 -0
  269. package/dist/store/gi/return-wrap.js.map +1 -0
  270. package/dist/store/gi/runtime-override.d.ts +3 -0
  271. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  272. package/dist/{writers → store/gi}/runtime-override.js +0 -15
  273. package/dist/store/gi/runtime-override.js.map +1 -0
  274. package/dist/store/gi/signal.d.ts +5 -0
  275. package/dist/store/gi/signal.d.ts.map +1 -0
  276. package/dist/store/gi/signal.js +233 -0
  277. package/dist/store/gi/signal.js.map +1 -0
  278. package/dist/store/gi/vtable.d.ts +4 -0
  279. package/dist/store/gi/vtable.d.ts.map +1 -0
  280. package/dist/store/gi/vtable.js +78 -0
  281. package/dist/store/gi/vtable.js.map +1 -0
  282. package/dist/store/gi-store.d.ts +9 -0
  283. package/dist/store/gi-store.d.ts.map +1 -0
  284. package/dist/store/gi-store.js +57 -0
  285. package/dist/store/gi-store.js.map +1 -0
  286. package/dist/store/jsx-store.d.ts +5 -0
  287. package/dist/store/jsx-store.d.ts.map +1 -0
  288. package/dist/store/jsx-store.js +23 -0
  289. package/dist/store/jsx-store.js.map +1 -0
  290. package/dist/store/react/built-ins.d.ts +9 -0
  291. package/dist/store/react/built-ins.d.ts.map +1 -0
  292. package/dist/store/react/built-ins.js +226 -0
  293. package/dist/store/react/built-ins.js.map +1 -0
  294. package/dist/store/react/element-components.d.ts +15 -0
  295. package/dist/store/react/element-components.d.ts.map +1 -0
  296. package/dist/store/react/element-components.js +92 -0
  297. package/dist/store/react/element-components.js.map +1 -0
  298. package/dist/store/react/element-prop-types.d.ts +19 -0
  299. package/dist/store/react/element-prop-types.d.ts.map +1 -0
  300. package/dist/store/react/element-prop-types.js +244 -0
  301. package/dist/store/react/element-prop-types.js.map +1 -0
  302. package/dist/store/react/element-props.d.ts +4 -0
  303. package/dist/store/react/element-props.d.ts.map +1 -0
  304. package/dist/store/react/element-props.js +178 -0
  305. package/dist/store/react/element-props.js.map +1 -0
  306. package/dist/store/react/gir-index.d.ts +25 -0
  307. package/dist/store/react/gir-index.d.ts.map +1 -0
  308. package/dist/store/react/gir-index.js +55 -0
  309. package/dist/store/react/gir-index.js.map +1 -0
  310. package/dist/store/react/intrinsic-elements.d.ts +26 -0
  311. package/dist/store/react/intrinsic-elements.d.ts.map +1 -0
  312. package/dist/store/react/intrinsic-elements.js +107 -0
  313. package/dist/store/react/intrinsic-elements.js.map +1 -0
  314. package/dist/store/react/jsx.d.ts +18 -0
  315. package/dist/store/react/jsx.d.ts.map +1 -0
  316. package/dist/store/react/jsx.js +203 -0
  317. package/dist/store/react/jsx.js.map +1 -0
  318. package/dist/store/react/metadata.d.ts +4 -0
  319. package/dist/store/react/metadata.d.ts.map +1 -0
  320. package/dist/store/react/metadata.js +174 -0
  321. package/dist/store/react/metadata.js.map +1 -0
  322. package/dist/store/react/pipeline.d.ts +14 -0
  323. package/dist/store/react/pipeline.d.ts.map +1 -0
  324. package/dist/store/react/pipeline.js +60 -0
  325. package/dist/store/react/pipeline.js.map +1 -0
  326. package/dist/store/react/props.d.ts +36 -0
  327. package/dist/store/react/props.d.ts.map +1 -0
  328. package/dist/store/react/props.js +133 -0
  329. package/dist/store/react/props.js.map +1 -0
  330. package/dist/store/store-fs.d.ts +41 -0
  331. package/dist/store/store-fs.d.ts.map +1 -0
  332. package/dist/store/store-fs.js +71 -0
  333. package/dist/store/store-fs.js.map +1 -0
  334. package/dist/writer/context.d.ts +16 -0
  335. package/dist/writer/context.d.ts.map +1 -0
  336. package/dist/writer/context.js +44 -0
  337. package/dist/writer/context.js.map +1 -0
  338. package/dist/writer/doc.d.ts +2 -0
  339. package/dist/writer/doc.d.ts.map +1 -0
  340. package/dist/writer/doc.js +12 -0
  341. package/dist/writer/doc.js.map +1 -0
  342. package/dist/writer/emit.d.ts +8 -0
  343. package/dist/writer/emit.d.ts.map +1 -0
  344. package/dist/writer/emit.js +21 -0
  345. package/dist/writer/emit.js.map +1 -0
  346. package/dist/writer/gtk-doc.d.ts +2 -0
  347. package/dist/writer/gtk-doc.d.ts.map +1 -0
  348. package/dist/writer/gtk-doc.js +67 -0
  349. package/dist/writer/gtk-doc.js.map +1 -0
  350. package/dist/writer/imports.d.ts +10 -0
  351. package/dist/writer/imports.d.ts.map +1 -0
  352. package/dist/writer/imports.js +50 -0
  353. package/dist/writer/imports.js.map +1 -0
  354. package/dist/writer/module.d.ts +15 -0
  355. package/dist/writer/module.d.ts.map +1 -0
  356. package/dist/writer/module.js +46 -0
  357. package/dist/writer/module.js.map +1 -0
  358. package/overrides/cairo/context.ts.ejs +1269 -0
  359. package/overrides/cairo/font-face.ts.ejs +151 -0
  360. package/overrides/cairo/font-options.ts.ejs +199 -0
  361. package/overrides/cairo/image-surface.ts.ejs +132 -0
  362. package/overrides/cairo/index.ts.ejs +22 -0
  363. package/overrides/cairo/matrix.ts.ejs +171 -0
  364. package/overrides/cairo/pattern.ts.ejs +476 -0
  365. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  366. package/overrides/cairo/region.ts.ejs +237 -0
  367. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  368. package/overrides/cairo/surface.ts.ejs +296 -0
  369. package/overrides/gdk/index.ts.ejs +2 -0
  370. package/overrides/gdk/rgba.ts.ejs +11 -0
  371. package/overrides/gobject/index.ts.ejs +29 -0
  372. package/overrides/gobject/object.ts.ejs +51 -0
  373. package/overrides/gobject/value.ts.ejs +17 -0
  374. package/overrides/graphene/index.ts.ejs +2 -0
  375. package/overrides/graphene/structs.ts.ejs +37 -0
  376. package/overrides/gtk/constants.ts.ejs +3 -0
  377. package/overrides/gtk/index.ts.ejs +2 -0
  378. package/package.json +15 -15
  379. package/src/analysis/descriptor-render.ts +407 -0
  380. package/src/analysis/descriptor.ts +263 -0
  381. package/src/analysis/inheritance.ts +242 -0
  382. package/src/analysis/param-structure.ts +127 -0
  383. package/src/analysis/ts-type.ts +88 -0
  384. package/src/compile.ts +152 -0
  385. package/src/docs/api-reference.ts +361 -0
  386. package/src/docs/element-page.ts +290 -0
  387. package/src/docs/pipeline.ts +182 -0
  388. package/src/docs/render.ts +191 -0
  389. package/src/docs/symbol-page.ts +444 -0
  390. package/src/fingerprint.ts +40 -29
  391. package/src/gir/ancestry.ts +41 -0
  392. package/src/gir/callback.ts +25 -22
  393. package/src/gir/class.ts +31 -57
  394. package/src/gir/enum.ts +20 -38
  395. package/src/gir/field.ts +21 -36
  396. package/src/gir/function.ts +17 -56
  397. package/src/gir/gir-path.ts +49 -0
  398. package/src/gir/libraries.ts +77 -0
  399. package/src/gir/library.ts +248 -0
  400. package/src/gir/namespace.ts +85 -80
  401. package/src/gir/parameter.ts +64 -93
  402. package/src/gir/parse.ts +43 -95
  403. package/src/gir/primitives.ts +23 -45
  404. package/src/gir/property.ts +27 -29
  405. package/src/gir/record.ts +53 -0
  406. package/src/gir/size.ts +9 -56
  407. package/src/gir/type-id.ts +49 -0
  408. package/src/gir/type-ref.ts +35 -140
  409. package/src/gir/type.ts +16 -0
  410. package/src/index.ts +20 -15
  411. package/src/khronos/args.ts +202 -0
  412. package/src/khronos/jsdoc.ts +76 -0
  413. package/src/khronos/model.ts +166 -0
  414. package/src/khronos/modules.ts +75 -0
  415. package/src/khronos/parse.ts +66 -0
  416. package/src/khronos/pipeline.ts +234 -0
  417. package/src/khronos/plan.ts +191 -0
  418. package/src/khronos/registry/LICENSE +202 -0
  419. package/src/khronos/registry/gl.xml +47748 -0
  420. package/src/khronos/render.ts +193 -0
  421. package/src/khronos/select.ts +67 -0
  422. package/src/runner.ts +112 -75
  423. package/src/store/compile-store.ts +49 -0
  424. package/src/store/gi/async.ts +42 -0
  425. package/src/store/gi/callables.ts +309 -0
  426. package/src/store/gi/callback.ts +15 -0
  427. package/src/store/gi/class-struct-record.ts +40 -0
  428. package/src/store/gi/class.ts +212 -0
  429. package/src/store/gi/companion.ts +13 -0
  430. package/src/store/gi/constant.ts +24 -0
  431. package/src/store/gi/constructor-props.ts +82 -0
  432. package/src/store/gi/enum.ts +49 -0
  433. package/src/store/gi/function.ts +107 -0
  434. package/src/store/gi/gtype-binding.ts +33 -0
  435. package/src/store/gi/interface.ts +157 -0
  436. package/src/store/gi/item-comparators.ts +90 -0
  437. package/src/store/gi/method.ts +417 -0
  438. package/src/store/gi/param-marshal.ts +48 -0
  439. package/src/store/gi/pipeline.ts +85 -0
  440. package/src/store/gi/properties.ts +39 -0
  441. package/src/store/gi/property-accessor.ts +194 -0
  442. package/src/store/gi/record-constructor.ts +87 -0
  443. package/src/store/gi/record-field-accessor.ts +394 -0
  444. package/src/store/gi/record-layout.ts +134 -0
  445. package/src/store/gi/record.ts +66 -0
  446. package/src/store/gi/registration.ts +38 -0
  447. package/src/store/gi/return-wrap.ts +52 -0
  448. package/src/store/gi/runtime-override.ts +36 -0
  449. package/src/store/gi/signal.ts +310 -0
  450. package/src/store/gi/vtable.ts +99 -0
  451. package/src/store/gi-store.ts +79 -0
  452. package/src/store/jsx-store.ts +27 -0
  453. package/src/store/react/built-ins.ts +260 -0
  454. package/src/store/react/element-components.ts +138 -0
  455. package/src/store/react/element-prop-types.ts +280 -0
  456. package/src/store/react/element-props.ts +204 -0
  457. package/src/store/react/gir-index.ts +85 -0
  458. package/src/store/react/intrinsic-elements.ts +161 -0
  459. package/src/store/react/jsx.ts +294 -0
  460. package/src/store/react/metadata.ts +197 -0
  461. package/src/store/react/pipeline.ts +90 -0
  462. package/src/store/react/props.ts +197 -0
  463. package/src/store/store-fs.ts +112 -0
  464. package/src/writer/context.ts +48 -0
  465. package/src/writer/doc.ts +11 -0
  466. package/src/writer/emit.ts +26 -0
  467. package/src/writer/gtk-doc.ts +74 -0
  468. package/src/writer/imports.ts +59 -0
  469. package/src/writer/module.ts +45 -0
  470. package/LICENSE +0 -373
  471. package/dist/dsl/context.d.ts +0 -104
  472. package/dist/dsl/context.d.ts.map +0 -1
  473. package/dist/dsl/context.js +0 -140
  474. package/dist/dsl/context.js.map +0 -1
  475. package/dist/dsl/emit.d.ts +0 -28
  476. package/dist/dsl/emit.d.ts.map +0 -1
  477. package/dist/dsl/emit.js +0 -41
  478. package/dist/dsl/emit.js.map +0 -1
  479. package/dist/dsl/identifier.d.ts +0 -28
  480. package/dist/dsl/identifier.d.ts.map +0 -1
  481. package/dist/dsl/identifier.js +0 -45
  482. package/dist/dsl/identifier.js.map +0 -1
  483. package/dist/dsl/imports.d.ts +0 -58
  484. package/dist/dsl/imports.d.ts.map +0 -1
  485. package/dist/dsl/imports.js +0 -107
  486. package/dist/dsl/imports.js.map +0 -1
  487. package/dist/dsl/module.d.ts +0 -53
  488. package/dist/dsl/module.d.ts.map +0 -1
  489. package/dist/dsl/module.js +0 -76
  490. package/dist/dsl/module.js.map +0 -1
  491. package/dist/ffi/pipeline.d.ts +0 -19
  492. package/dist/ffi/pipeline.d.ts.map +0 -1
  493. package/dist/ffi/pipeline.js +0 -107
  494. package/dist/ffi/pipeline.js.map +0 -1
  495. package/dist/gi-store.d.ts +0 -34
  496. package/dist/gi-store.d.ts.map +0 -1
  497. package/dist/gi-store.js +0 -154
  498. package/dist/gi-store.js.map +0 -1
  499. package/dist/gir/boxed.d.ts +0 -66
  500. package/dist/gir/boxed.d.ts.map +0 -1
  501. package/dist/gir/boxed.js +0 -49
  502. package/dist/gir/boxed.js.map +0 -1
  503. package/dist/gir/qualified-name.d.ts +0 -37
  504. package/dist/gir/qualified-name.d.ts.map +0 -1
  505. package/dist/gir/qualified-name.js +0 -39
  506. package/dist/gir/qualified-name.js.map +0 -1
  507. package/dist/gir/qualify.d.ts +0 -32
  508. package/dist/gir/qualify.d.ts.map +0 -1
  509. package/dist/gir/qualify.js +0 -60
  510. package/dist/gir/qualify.js.map +0 -1
  511. package/dist/gir/repository.d.ts +0 -82
  512. package/dist/gir/repository.d.ts.map +0 -1
  513. package/dist/gir/repository.js +0 -122
  514. package/dist/gir/repository.js.map +0 -1
  515. package/dist/gir/signal.d.ts +0 -22
  516. package/dist/gir/signal.d.ts.map +0 -1
  517. package/dist/gir/signal.js +0 -20
  518. package/dist/gir/signal.js.map +0 -1
  519. package/dist/jsx-store.d.ts +0 -22
  520. package/dist/jsx-store.d.ts.map +0 -1
  521. package/dist/jsx-store.js +0 -40
  522. package/dist/jsx-store.js.map +0 -1
  523. package/dist/react/compounds-meta.d.ts +0 -18
  524. package/dist/react/compounds-meta.d.ts.map +0 -1
  525. package/dist/react/compounds-meta.js +0 -93
  526. package/dist/react/compounds-meta.js.map +0 -1
  527. package/dist/react/compounds.d.ts +0 -27
  528. package/dist/react/compounds.d.ts.map +0 -1
  529. package/dist/react/compounds.js +0 -164
  530. package/dist/react/compounds.js.map +0 -1
  531. package/dist/react/internal.d.ts +0 -14
  532. package/dist/react/internal.d.ts.map +0 -1
  533. package/dist/react/internal.js +0 -79
  534. package/dist/react/internal.js.map +0 -1
  535. package/dist/react/jsx.d.ts +0 -22
  536. package/dist/react/jsx.d.ts.map +0 -1
  537. package/dist/react/jsx.js +0 -134
  538. package/dist/react/jsx.js.map +0 -1
  539. package/dist/react/pipeline.d.ts +0 -13
  540. package/dist/react/pipeline.d.ts.map +0 -1
  541. package/dist/react/pipeline.js +0 -25
  542. package/dist/react/pipeline.js.map +0 -1
  543. package/dist/react/props.d.ts +0 -38
  544. package/dist/react/props.d.ts.map +0 -1
  545. package/dist/react/props.js +0 -231
  546. package/dist/react/props.js.map +0 -1
  547. package/dist/react/slot-props.d.ts +0 -10
  548. package/dist/react/slot-props.d.ts.map +0 -1
  549. package/dist/react/slot-props.js +0 -56
  550. package/dist/react/slot-props.js.map +0 -1
  551. package/dist/react/widgets.d.ts +0 -83
  552. package/dist/react/widgets.d.ts.map +0 -1
  553. package/dist/react/widgets.js +0 -152
  554. package/dist/react/widgets.js.map +0 -1
  555. package/dist/store-fs.d.ts +0 -109
  556. package/dist/store-fs.d.ts.map +0 -1
  557. package/dist/store-fs.js +0 -98
  558. package/dist/store-fs.js.map +0 -1
  559. package/dist/transpile.d.ts +0 -32
  560. package/dist/transpile.d.ts.map +0 -1
  561. package/dist/transpile.js +0 -63
  562. package/dist/transpile.js.map +0 -1
  563. package/dist/typecheck-store.d.ts +0 -41
  564. package/dist/typecheck-store.d.ts.map +0 -1
  565. package/dist/typecheck-store.js +0 -102
  566. package/dist/typecheck-store.js.map +0 -1
  567. package/dist/writers/alias.d.ts +0 -13
  568. package/dist/writers/alias.d.ts.map +0 -1
  569. package/dist/writers/alias.js +0 -17
  570. package/dist/writers/alias.js.map +0 -1
  571. package/dist/writers/async.d.ts +0 -22
  572. package/dist/writers/async.d.ts.map +0 -1
  573. package/dist/writers/async.js +0 -48
  574. package/dist/writers/async.js.map +0 -1
  575. package/dist/writers/boxed-constructor.d.ts +0 -26
  576. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  577. package/dist/writers/boxed-constructor.js +0 -85
  578. package/dist/writers/boxed-constructor.js.map +0 -1
  579. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  580. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  581. package/dist/writers/boxed-field-accessor.js +0 -260
  582. package/dist/writers/boxed-field-accessor.js.map +0 -1
  583. package/dist/writers/boxed-layout.d.ts +0 -27
  584. package/dist/writers/boxed-layout.d.ts.map +0 -1
  585. package/dist/writers/boxed-layout.js +0 -128
  586. package/dist/writers/boxed-layout.js.map +0 -1
  587. package/dist/writers/boxed.d.ts +0 -20
  588. package/dist/writers/boxed.d.ts.map +0 -1
  589. package/dist/writers/boxed.js +0 -71
  590. package/dist/writers/boxed.js.map +0 -1
  591. package/dist/writers/callables.d.ts +0 -124
  592. package/dist/writers/callables.d.ts.map +0 -1
  593. package/dist/writers/callables.js +0 -283
  594. package/dist/writers/callables.js.map +0 -1
  595. package/dist/writers/callback.d.ts +0 -16
  596. package/dist/writers/callback.d.ts.map +0 -1
  597. package/dist/writers/callback.js +0 -38
  598. package/dist/writers/callback.js.map +0 -1
  599. package/dist/writers/class-struct-record.d.ts +0 -31
  600. package/dist/writers/class-struct-record.d.ts.map +0 -1
  601. package/dist/writers/class-struct-record.js +0 -67
  602. package/dist/writers/class-struct-record.js.map +0 -1
  603. package/dist/writers/class-struct.d.ts +0 -22
  604. package/dist/writers/class-struct.d.ts.map +0 -1
  605. package/dist/writers/class-struct.js +0 -85
  606. package/dist/writers/class-struct.js.map +0 -1
  607. package/dist/writers/class.d.ts +0 -16
  608. package/dist/writers/class.d.ts.map +0 -1
  609. package/dist/writers/class.js +0 -307
  610. package/dist/writers/class.js.map +0 -1
  611. package/dist/writers/constant.d.ts +0 -15
  612. package/dist/writers/constant.d.ts.map +0 -1
  613. package/dist/writers/constant.js +0 -23
  614. package/dist/writers/constant.js.map +0 -1
  615. package/dist/writers/constants.d.ts +0 -15
  616. package/dist/writers/constants.d.ts.map +0 -1
  617. package/dist/writers/constants.js +0 -23
  618. package/dist/writers/constants.js.map +0 -1
  619. package/dist/writers/constructor-props.d.ts +0 -32
  620. package/dist/writers/constructor-props.d.ts.map +0 -1
  621. package/dist/writers/constructor-props.js +0 -110
  622. package/dist/writers/constructor-props.js.map +0 -1
  623. package/dist/writers/enum.d.ts +0 -21
  624. package/dist/writers/enum.d.ts.map +0 -1
  625. package/dist/writers/enum.js +0 -48
  626. package/dist/writers/enum.js.map +0 -1
  627. package/dist/writers/function.d.ts +0 -40
  628. package/dist/writers/function.d.ts.map +0 -1
  629. package/dist/writers/function.js +0 -127
  630. package/dist/writers/function.js.map +0 -1
  631. package/dist/writers/gtype-binding.d.ts +0 -19
  632. package/dist/writers/gtype-binding.d.ts.map +0 -1
  633. package/dist/writers/gtype-binding.js +0 -40
  634. package/dist/writers/gtype-binding.js.map +0 -1
  635. package/dist/writers/inheritance.d.ts +0 -48
  636. package/dist/writers/inheritance.d.ts.map +0 -1
  637. package/dist/writers/inheritance.js +0 -90
  638. package/dist/writers/inheritance.js.map +0 -1
  639. package/dist/writers/interface.d.ts +0 -16
  640. package/dist/writers/interface.d.ts.map +0 -1
  641. package/dist/writers/interface.js +0 -155
  642. package/dist/writers/interface.js.map +0 -1
  643. package/dist/writers/method.d.ts +0 -150
  644. package/dist/writers/method.d.ts.map +0 -1
  645. package/dist/writers/method.js +0 -510
  646. package/dist/writers/method.js.map +0 -1
  647. package/dist/writers/param-classify.d.ts +0 -93
  648. package/dist/writers/param-classify.d.ts.map +0 -1
  649. package/dist/writers/param-classify.js +0 -163
  650. package/dist/writers/param-classify.js.map +0 -1
  651. package/dist/writers/property-accessor.d.ts +0 -19
  652. package/dist/writers/property-accessor.d.ts.map +0 -1
  653. package/dist/writers/property-accessor.js +0 -117
  654. package/dist/writers/property-accessor.js.map +0 -1
  655. package/dist/writers/registration.d.ts +0 -27
  656. package/dist/writers/registration.d.ts.map +0 -1
  657. package/dist/writers/registration.js +0 -30
  658. package/dist/writers/registration.js.map +0 -1
  659. package/dist/writers/return-wrap.d.ts +0 -39
  660. package/dist/writers/return-wrap.d.ts.map +0 -1
  661. package/dist/writers/return-wrap.js +0 -152
  662. package/dist/writers/return-wrap.js.map +0 -1
  663. package/dist/writers/runtime-override.d.ts +0 -18
  664. package/dist/writers/runtime-override.d.ts.map +0 -1
  665. package/dist/writers/runtime-override.js.map +0 -1
  666. package/dist/writers/signal.d.ts +0 -21
  667. package/dist/writers/signal.d.ts.map +0 -1
  668. package/dist/writers/signal.js +0 -260
  669. package/dist/writers/signal.js.map +0 -1
  670. package/dist/writers/ts-type.d.ts +0 -50
  671. package/dist/writers/ts-type.d.ts.map +0 -1
  672. package/dist/writers/ts-type.js +0 -75
  673. package/dist/writers/ts-type.js.map +0 -1
  674. package/dist/writers/types-ts.d.ts +0 -27
  675. package/dist/writers/types-ts.d.ts.map +0 -1
  676. package/dist/writers/types-ts.js +0 -97
  677. package/dist/writers/types-ts.js.map +0 -1
  678. package/dist/writers/value.d.ts +0 -89
  679. package/dist/writers/value.d.ts.map +0 -1
  680. package/dist/writers/value.js +0 -402
  681. package/dist/writers/value.js.map +0 -1
  682. package/src/dsl/context.ts +0 -146
  683. package/src/dsl/emit.ts +0 -42
  684. package/src/dsl/identifier.ts +0 -52
  685. package/src/dsl/imports.ts +0 -109
  686. package/src/dsl/module.ts +0 -75
  687. package/src/ffi/pipeline.ts +0 -113
  688. package/src/gi-store.ts +0 -199
  689. package/src/gir/boxed.ts +0 -94
  690. package/src/gir/qualified-name.ts +0 -55
  691. package/src/gir/qualify.ts +0 -64
  692. package/src/gir/repository.ts +0 -149
  693. package/src/gir/signal.ts +0 -36
  694. package/src/jsx-store.ts +0 -53
  695. package/src/react/compounds-meta.ts +0 -99
  696. package/src/react/compounds.ts +0 -204
  697. package/src/react/internal.ts +0 -91
  698. package/src/react/jsx.ts +0 -155
  699. package/src/react/pipeline.ts +0 -29
  700. package/src/react/props.ts +0 -307
  701. package/src/react/slot-props.ts +0 -57
  702. package/src/react/widgets.ts +0 -185
  703. package/src/store-fs.ts +0 -157
  704. package/src/transpile.ts +0 -80
  705. package/src/typecheck-store.ts +0 -136
  706. package/src/writers/alias.ts +0 -19
  707. package/src/writers/async.ts +0 -44
  708. package/src/writers/boxed-constructor.ts +0 -105
  709. package/src/writers/boxed-field-accessor.ts +0 -306
  710. package/src/writers/boxed-layout.ts +0 -166
  711. package/src/writers/boxed.ts +0 -77
  712. package/src/writers/callables.ts +0 -339
  713. package/src/writers/callback.ts +0 -40
  714. package/src/writers/class-struct-record.ts +0 -75
  715. package/src/writers/class-struct.ts +0 -96
  716. package/src/writers/class.ts +0 -384
  717. package/src/writers/constant.ts +0 -29
  718. package/src/writers/constructor-props.ts +0 -130
  719. package/src/writers/enum.ts +0 -53
  720. package/src/writers/function.ts +0 -136
  721. package/src/writers/gtype-binding.ts +0 -48
  722. package/src/writers/inheritance.ts +0 -104
  723. package/src/writers/interface.ts +0 -168
  724. package/src/writers/method.ts +0 -678
  725. package/src/writers/param-classify.ts +0 -178
  726. package/src/writers/property-accessor.ts +0 -139
  727. package/src/writers/registration.ts +0 -42
  728. package/src/writers/return-wrap.ts +0 -180
  729. package/src/writers/runtime-override.ts +0 -59
  730. package/src/writers/signal.ts +0 -318
  731. package/src/writers/ts-type.ts +0 -115
  732. package/src/writers/value.ts +0 -485
@@ -1,260 +0,0 @@
1
- import { quote, toCamelCase } from "@gtkx/utils";
2
- import { indent } from "../dsl/emit.js";
3
- import { isOutParameter } from "../gir/parameter.js";
4
- import { qualifyTypeRef } from "../gir/qualify.js";
5
- import { forEachAncestor, resolveImplementedInterface } from "./inheritance.js";
6
- import { planTrampolineArgs, renderTupleWriteback } from "./method.js";
7
- import { isHandlePassing } from "./param-classify.js";
8
- import { isCellInout, renderFfiType } from "./value.js";
9
- const SIGNAL_HANDLER_TYPE = "(...args: any[]) => any";
10
- /**
11
- * Renders the `connect` and `emit` instance methods for a class that owns or
12
- * inherits-by-interface at least one signal.
13
- *
14
- * Each method is a `switch` over the type's own signals. `connect` resolves the
15
- * per-signal trampoline, wraps the handler, and hands it to the thin
16
- * `connectSignal` wrapper around the non-introspectable `g_signal_connect_data`.
17
- * `emit` marshals the arguments into `GValue`s with `valueFromFfi` and calls the
18
- * generated `signalLookup` / `signalEmitv` directly. Unknown signals route up
19
- * the class chain via `super.connect` / `super.emit`; the root `GObject.Object`
20
- * throws because it bottoms out the hierarchy.
21
- *
22
- * Returns an empty array when the class contributes no signals of its own.
23
- *
24
- * @param context - The module context
25
- * @param klass - The class whose signal methods to render
26
- */
27
- export const renderSignalMembers = (context, klass) => {
28
- if (klass.glibGetType === undefined)
29
- return [];
30
- const signals = collectClassSignals(context, klass);
31
- if (signals.length === 0)
32
- return [];
33
- const isRootObject = context.namespace.name === "GObject" && klass.name === "Object";
34
- context.addRuntimeImport("connectSignal");
35
- context.addRuntimeImport("signalBaseName");
36
- context.addRuntimeImport("t");
37
- const connectCases = signals.map((collected) => renderConnectCase(context, collected));
38
- const emitCases = signals.map((collected) => renderEmitCase(context, collected));
39
- const connectDefault = isRootObject
40
- ? `default:\n throw new globalThis.Error("Unknown signal '" + signal + "'");`
41
- : "default:\n return super.connect(signal, handler, after);";
42
- const emitDefault = isRootObject
43
- ? `default:\n throw new globalThis.Error("Unknown signal '" + sigName + "'");`
44
- : "default:\n super.emit(sigName, ...args);";
45
- const connectSwitch = `switch (signalBaseName(signal)) {\n${indent([...connectCases, connectDefault].join("\n"), 1)}\n}`;
46
- const emitSwitch = `switch (sigName) {\n${indent([...emitCases, emitDefault].join("\n"), 1)}\n}`;
47
- return [
48
- `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number {\n${indent(connectSwitch, 1)}\n}`,
49
- `emit(sigName: string, ...args: unknown[]): void {\n${indent(emitSwitch, 1)}\n}`,
50
- ];
51
- };
52
- /**
53
- * Renders one `connect` switch case: it resolves the signal's typed trampoline,
54
- * wraps the user handler with the per-signal in-parameter marshalling closure,
55
- * and dispatches `g_signal_connect_data` through {@link connectSignal} with the
56
- * full detailed signal name.
57
- */
58
- const renderConnectCase = (context, collected) => {
59
- const { signal } = collected;
60
- const { trampoline, invoke } = renderTrampolineAndInvoke(context, collected);
61
- const body = [
62
- `const invoke = ${invoke};`,
63
- "const handlerWrapper = (...args: unknown[]): unknown => invoke(handler, args);",
64
- `return connectSignal(this, signal, ${trampoline}, handlerWrapper, after ?? false);`,
65
- ].join("\n");
66
- return `case ${quote(signal.name)}: {\n${indent(body, 1)}\n}`;
67
- };
68
- /**
69
- * Renders one `emit` switch case: it marshals the emitting instance and each
70
- * signal parameter into a `GValue` with `valueFromFfi`, resolves the signal id
71
- * from the instance's runtime `GType`, and dispatches `g_signal_emitv`. Signals
72
- * with a non-void return supply an initialized return `GValue`.
73
- */
74
- const renderEmitCase = (context, collected) => {
75
- const { signal, namespaceName } = collected;
76
- const params = signal.parameters.filter((parameter) => !parameter.isVarargs);
77
- const paramFfi = params.map((parameter) => renderFfiType(context, qualifyTypeRef(parameter.type, namespaceName), parameter.transferOwnership));
78
- context.addValueFromFfiImport();
79
- const refs = gobjectRefs(context);
80
- const valueArgs = [
81
- 'valueFromFfi(t.object("full"), this)',
82
- ...paramFfi.map((ffi, index) => `valueFromFfi(${ffi}, args[${index}])`),
83
- ];
84
- const values = `[${valueArgs.join(", ")}]`;
85
- const lookup = `${refs.signalLookup}(${quote(signal.name)}, this.__gtype__)`;
86
- const returnRef = qualifyTypeRef(signal.returnValue.type, namespaceName);
87
- const emitStatements = returnRef === undefined || isVoidRef(returnRef)
88
- ? `${refs.signalEmitv}(${values}, ${lookup}, 0);`
89
- : [
90
- `const returnValue = new ${refs.Value}();`,
91
- `returnValue.init(${renderReturnGType(context, returnRef)});`,
92
- `${refs.signalEmitv}(${values}, ${lookup}, 0, returnValue);`,
93
- ].join("\n");
94
- return `case ${quote(signal.name)}: {\n${indent(`${emitStatements}\nreturn;`, 1)}\n}`;
95
- };
96
- /**
97
- * Resolves the `GObject` marshalling references the inline `emit` switch needs.
98
- * Within the `GObject` namespace the generated `Value`, `signalEmitv`, and
99
- * `signalLookup` are local; elsewhere they are reached through the cross-
100
- * namespace `GObject` alias.
101
- */
102
- const gobjectRefs = (context) => {
103
- if (context.namespace.name === "GObject") {
104
- return { Value: "Value", signalEmitv: "signalEmitv", signalLookup: "signalLookup" };
105
- }
106
- const alias = context.addCrossNamespaceImport("GObject");
107
- return { Value: `${alias}.Value`, signalEmitv: `${alias}.signalEmitv`, signalLookup: `${alias}.signalLookup` };
108
- };
109
- /**
110
- * Renders the trampoline FFI descriptor used to connect a handler and the
111
- * `invoke` closure that marshals the trampoline arguments into the user handler.
112
- *
113
- * Out-parameter cells are wrapped in `t.ref(...)` so the native trampoline can
114
- * write them back; the `invoke` closure mirrors the out-parameter tuple
115
- * convention used by method out-parameters.
116
- */
117
- const renderTrampolineAndInvoke = (context, collected) => {
118
- const { signal, namespaceName } = collected;
119
- const params = signal.parameters.filter((parameter) => !parameter.isVarargs);
120
- const paramFfi = params.map((parameter) => renderFfiType(context, qualifyTypeRef(parameter.type, namespaceName), parameter.transferOwnership));
121
- const trampolineParamFfi = params.map((parameter, index) => isOutParameter(parameter) || isCellInout(context, parameter) ? `t.ref(${paramFfi[index]})` : paramFfi[index]);
122
- const returnRef = qualifyTypeRef(signal.returnValue.type, namespaceName);
123
- const isVoid = isVoidRef(returnRef);
124
- const returnFfi = isVoid ? "t.void" : renderFfiType(context, returnRef, signal.returnValue.transferOwnership);
125
- const trampolineArgs = ['t.object("borrowed")', ...trampolineParamFfi, "t.void"].join(", ");
126
- const trampoline = `t.trampoline([${trampolineArgs}], ${returnFfi}, { hasDestroy: true, userDataIndex: ${params.length + 1} })`;
127
- const invoke = renderInvokeClosure(context, collected, params, isVoid ? undefined : returnRef);
128
- return { trampoline, invoke };
129
- };
130
- const collectClassSignals = (context, klass) => {
131
- const inheritedNames = collectInheritedSignalNames(context, klass);
132
- const seen = new Set();
133
- const result = [];
134
- for (const signal of klass.signals) {
135
- const name = toCamelCase(signal.name);
136
- if (inheritedNames.has(name) || seen.has(name))
137
- continue;
138
- seen.add(name);
139
- result.push({ signal, namespaceName: context.namespace.name });
140
- }
141
- for (const implementName of klass.implements) {
142
- const iface = resolveImplementedInterface(context, implementName);
143
- if (iface === undefined)
144
- continue;
145
- for (const signal of iface.klass.signals) {
146
- const name = toCamelCase(signal.name);
147
- if (inheritedNames.has(name) || seen.has(name))
148
- continue;
149
- seen.add(name);
150
- result.push({ signal, namespaceName: iface.namespaceName });
151
- }
152
- }
153
- return result;
154
- };
155
- const collectInheritedSignalNames = (context, klass) => {
156
- const names = new Set();
157
- forEachAncestor(context, klass, (ancestor) => {
158
- for (const signal of ancestor.klass.signals)
159
- names.add(toCamelCase(signal.name));
160
- for (const implementName of ancestor.klass.implements) {
161
- const iface = resolveImplementedInterface(context, implementName, ancestor.namespaceName);
162
- if (iface === undefined)
163
- continue;
164
- for (const signal of iface.klass.signals)
165
- names.add(toCamelCase(signal.name));
166
- }
167
- });
168
- return names;
169
- };
170
- const renderInvokeClosure = (context, collected, params, returnRef) => {
171
- const { namespaceName } = collected;
172
- const { callArgs, outArgIndices } = planTrampolineArgs(context, params, namespaceName, 1);
173
- if (outArgIndices.length === 0) {
174
- if (returnRef !== undefined && isHandlePassing(context, returnRef)) {
175
- context.addRuntimeImport("tryGetHandle");
176
- return `(handler, args) => {\n const _result = handler(${callArgs});\n return tryGetHandle(_result);\n}`;
177
- }
178
- return `(handler, args) => handler(${callArgs})`;
179
- }
180
- return renderOutParamInvoke(context, callArgs, outArgIndices, returnRef);
181
- };
182
- /**
183
- * Renders the invoke closure for a signal with out-parameters.
184
- *
185
- * The handler returns its results as the tuple {@link renderMethodReturnType}
186
- * describes (`[primary, ...outs]` when both exist, the scalar out alone for a
187
- * void return with a single out, or an out-only tuple otherwise). The shared
188
- * {@link renderTupleWriteback} destructures that tuple and writes each out
189
- * value into its trampoline cell's `value` slot — the native side flushes
190
- * those cells through the matching C out-pointers, so the tuple convention
191
- * stays entirely in generated code.
192
- *
193
- * @param context - The module context
194
- * @param callArgs - The rendered in-parameter call arguments
195
- * @param outArgIndices - Trampoline-arg indices of the out-parameter cells
196
- * @param returnRef - The signal's return type, or `undefined` for void
197
- */
198
- const renderOutParamInvoke = (context, callArgs, outArgIndices, returnRef) => {
199
- const body = renderTupleWriteback(context, `handler(${callArgs})`, outArgIndices, returnRef);
200
- return `(handler, args) => {\n ${body}\n}`;
201
- };
202
- const renderReturnGType = (context, ref) => {
203
- if (ref.kind === "primitive") {
204
- return `${typeFromNameReference(context)}(${quote(primitiveGTypeName(ref.category))})`;
205
- }
206
- if (ref.kind === "named") {
207
- const owner = ref.namespaceName ?? context.namespace.name;
208
- const resolved = context.repository.resolveNamed(owner, ref.typeName);
209
- if (resolved !== undefined && resolved.kind === "enum") {
210
- context.addNativeImport("call");
211
- context.addRuntimeImport("t");
212
- const lib = resolved.namespace.sharedLibrary ?? "";
213
- const getter = resolved.value.glibGetType ?? "";
214
- return `call(${quote(lib)}, ${quote(getter)}, [], t.uint64)`;
215
- }
216
- if (resolved !== undefined &&
217
- (resolved.kind === "class" || resolved.kind === "interface" || resolved.kind === "boxed")) {
218
- const glibTypeName = glibTypeNameOf(resolved.value) ?? ref.typeName;
219
- return `${typeFromNameReference(context)}(${quote(glibTypeName)})`;
220
- }
221
- }
222
- return `${typeFromNameReference(context)}("GObject")`;
223
- };
224
- const isVoidRef = (ref) => ref === undefined || (ref.kind === "primitive" && ref.category === "void");
225
- const glibTypeNameOf = (value) => value.glibTypeName ?? value.cType;
226
- const typeFromNameReference = (context) => {
227
- if (context.namespace.name === "GObject")
228
- return "typeFromName";
229
- const alias = context.addCrossNamespaceImport("GObject");
230
- return `${alias}.typeFromName`;
231
- };
232
- const primitiveGTypeName = (category) => {
233
- switch (category) {
234
- case "boolean":
235
- return "gboolean";
236
- case "int8":
237
- case "int16":
238
- case "int32":
239
- return "gint";
240
- case "uint8":
241
- case "uint16":
242
- case "uint32":
243
- case "unichar":
244
- return "guint";
245
- case "int64":
246
- return "gint64";
247
- case "uint64":
248
- case "pointer":
249
- return "guint64";
250
- case "float32":
251
- return "gfloat";
252
- case "float64":
253
- return "gdouble";
254
- case "string":
255
- return "gchararray";
256
- case "void":
257
- return "void";
258
- }
259
- };
260
- //# sourceMappingURL=signal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/writers/signal.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirTypeRef, NamedTypeRef } from "../gir/type-ref.js";
3
- /**
4
- * TypeScript type annotations the writers emit alongside runtime values.
5
- *
6
- * Generated `.ts` files are consumed both as runtime modules (transpiled to
7
- * `.js`) and as declaration sources (`ts.transpileDeclaration` extracts the
8
- * `.d.ts` shape). Every exported value, parameter, and return position
9
- * therefore carries an explicit annotation so isolated declaration emit
10
- * succeeds without inference. The helpers below produce those annotations
11
- * from the same `GirTypeRef` shapes the runtime FFI writers consume,
12
- * importing referenced cross-namespace classes on demand.
13
- */
14
- /**
15
- * Strategy describing the type-ref shapes the FFI and React generators render
16
- * differently: container style (`Map` vs `Record`), the callback placeholder,
17
- * whether a `GByteArray` collapses to `number[]`, and how a named reference is
18
- * qualified and imported. {@link renderBaseTypeFor} renders every other shape
19
- * identically for both.
20
- */
21
- export type TsTypeTarget = {
22
- /** `"map"` → `Map<K, V>`; `"record"` → `Record<K, V>`. */
23
- readonly containerStyle: "map" | "record";
24
- /** The placeholder emitted for a callback type. */
25
- readonly callbackType: string;
26
- /** Whether a `GByteArray` renders as `number[]` instead of `element[]`. */
27
- readonly byteArrayAsNumber: boolean;
28
- /** Renders a named reference (class/interface/boxed/enum/callback/alias). */
29
- readonly renderNamed: (ref: NamedTypeRef) => string;
30
- };
31
- /**
32
- * Renders the TypeScript annotation for a `GirTypeRef`, dispatching the shapes
33
- * both generators share and delegating the divergent ones to {@link target}.
34
- *
35
- * @param target - The per-generator rendering strategy
36
- * @param ref - The type reference, or `undefined` for void
37
- */
38
- export declare const renderBaseTypeFor: (target: TsTypeTarget, ref: GirTypeRef | undefined) => string;
39
- /**
40
- * Renders a TypeScript type annotation for a `GirTypeRef` in an FFI module:
41
- * classes/interfaces/boxeds/enums/callbacks as their qualified identifier,
42
- * arrays and lists as `T[]`, hashtables as `Map<K, V>`, primitives to their TS
43
- * counterpart, and `undefined` to `void`.
44
- *
45
- * @param context - The module context
46
- * @param ref - The type reference, or `undefined` for void
47
- * @param isNullable - Whether the slot accepts `null`
48
- */
49
- export declare const renderTsType: (context: ModuleContext, ref: GirTypeRef | undefined, isNullable?: boolean) => string;
50
- //# sourceMappingURL=ts-type.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ts-type.d.ts","sourceRoot":"","sources":["../../src/writers/ts-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1C,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,YAAY,EAAE,KAAK,UAAU,GAAG,SAAS,KAAG,MAsBrF,CAAC;AASF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,aAAa,EAAE,KAAK,UAAU,GAAG,SAAS,EAAE,oBAAkB,KAAG,MAGtG,CAAC"}
@@ -1,75 +0,0 @@
1
- import { aliasExportName } from "../dsl/identifier.js";
2
- import { PRIMITIVE_TS_TYPE } from "../gir/primitives.js";
3
- /**
4
- * Renders the TypeScript annotation for a `GirTypeRef`, dispatching the shapes
5
- * both generators share and delegating the divergent ones to {@link target}.
6
- *
7
- * @param target - The per-generator rendering strategy
8
- * @param ref - The type reference, or `undefined` for void
9
- */
10
- export const renderBaseTypeFor = (target, ref) => {
11
- if (ref === undefined)
12
- return "void";
13
- switch (ref.kind) {
14
- case "primitive":
15
- return PRIMITIVE_TS_TYPE[ref.category];
16
- case "varargs":
17
- return "unknown[]";
18
- case "callback":
19
- return target.callbackType;
20
- case "named":
21
- return target.renderNamed(ref);
22
- case "array":
23
- return `${renderBaseTypeFor(target, ref.element)}[]`;
24
- case "list":
25
- if (ref.flavor === "gbytearray" && target.byteArrayAsNumber)
26
- return "number[]";
27
- return `${renderBaseTypeFor(target, ref.element)}[]`;
28
- case "hashtable": {
29
- const key = renderBaseTypeFor(target, ref.key);
30
- const value = renderBaseTypeFor(target, ref.value);
31
- return target.containerStyle === "record" ? `Record<${key}, ${value}>` : `Map<${key}, ${value}>`;
32
- }
33
- }
34
- };
35
- const moduleTarget = (context) => ({
36
- containerStyle: "map",
37
- callbackType: "((...args: any[]) => any)",
38
- byteArrayAsNumber: true,
39
- renderNamed: (ref) => namedTsType(context, ref),
40
- });
41
- /**
42
- * Renders a TypeScript type annotation for a `GirTypeRef` in an FFI module:
43
- * classes/interfaces/boxeds/enums/callbacks as their qualified identifier,
44
- * arrays and lists as `T[]`, hashtables as `Map<K, V>`, primitives to their TS
45
- * counterpart, and `undefined` to `void`.
46
- *
47
- * @param context - The module context
48
- * @param ref - The type reference, or `undefined` for void
49
- * @param isNullable - Whether the slot accepts `null`
50
- */
51
- export const renderTsType = (context, ref, isNullable = false) => {
52
- const base = renderBaseTypeFor(moduleTarget(context), ref);
53
- return isNullable ? `${base} | null` : base;
54
- };
55
- const namedTsType = (context, ref) => {
56
- const namespaceName = ref.namespaceName ?? context.namespace.name;
57
- const resolved = context.repository.resolveNamed(namespaceName, ref.typeName);
58
- if (resolved === undefined) {
59
- return context.qualify(namespaceName, ref.typeName);
60
- }
61
- return resolvedTsType(context, namespaceName, ref.typeName, resolved);
62
- };
63
- const resolvedTsType = (context, namespaceName, typeName, resolved) => {
64
- switch (resolved.kind) {
65
- case "class":
66
- case "interface":
67
- case "boxed":
68
- case "enum":
69
- case "callback":
70
- return context.qualify(namespaceName, typeName);
71
- case "alias":
72
- return context.qualify(namespaceName, aliasExportName(namespaceName, typeName));
73
- }
74
- };
75
- //# sourceMappingURL=ts-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ts-type.js","sourceRoot":"","sources":["../../src/writers/ts-type.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirTypeRef } from "../gir/type-ref.js";
3
- /**
4
- * TypeScript type annotations the writers emit alongside runtime values.
5
- *
6
- * Generated `.ts` files are consumed both as runtime modules (transpiled to
7
- * `.js`) and as declaration sources (`ts.transpileDeclaration` extracts the
8
- * `.d.ts` shape). Every exported value, parameter, and return position
9
- * therefore carries an explicit annotation so isolated declaration emit
10
- * succeeds without inference. The helpers below produce those annotations
11
- * from the same `GirTypeRef` shapes the runtime FFI writers consume,
12
- * importing referenced cross-namespace classes on demand.
13
- */
14
- /**
15
- * Renders a TypeScript type annotation for a `GirTypeRef`.
16
- *
17
- * Routes through resolution (classes/interfaces/boxeds/enums as their
18
- * PascalCase type, callbacks as `Function`,
19
- * arrays as `T[]`, lists as `T[]`, hashtables as `Record<K, V>`, primitive
20
- * categories to their TS counterpart, and `undefined` to `void`).
21
- *
22
- * @param ctx - The module context
23
- * @param ref - The type reference, or `undefined` for void
24
- * @param isNullable - Whether the slot accepts `null`
25
- */
26
- export declare const writeTsType: (ctx: ModuleContext, ref: GirTypeRef | undefined, isNullable?: boolean) => string;
27
- //# sourceMappingURL=types-ts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-ts.d.ts","sourceRoot":"","sources":["../../src/writers/types-ts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAER,UAAU,EAKb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,aAAa,EAAE,KAAK,UAAU,GAAG,SAAS,EAAE,oBAAkB,KAAG,MAGjG,CAAC"}
@@ -1,97 +0,0 @@
1
- import { toPascalCase } from "@gtkx/utils";
2
- import { PRIMITIVE_TS_TYPE } from "../gir/primitives.js";
3
- /**
4
- * TypeScript type annotations the writers emit alongside runtime values.
5
- *
6
- * Generated `.ts` files are consumed both as runtime modules (transpiled to
7
- * `.js`) and as declaration sources (`ts.transpileDeclaration` extracts the
8
- * `.d.ts` shape). Every exported value, parameter, and return position
9
- * therefore carries an explicit annotation so isolated declaration emit
10
- * succeeds without inference. The helpers below produce those annotations
11
- * from the same `GirTypeRef` shapes the runtime FFI writers consume,
12
- * importing referenced cross-namespace classes on demand.
13
- */
14
- /**
15
- * Renders a TypeScript type annotation for a `GirTypeRef`.
16
- *
17
- * Routes through resolution (classes/interfaces/boxeds/enums as their
18
- * PascalCase type, callbacks as `Function`,
19
- * arrays as `T[]`, lists as `T[]`, hashtables as `Record<K, V>`, primitive
20
- * categories to their TS counterpart, and `undefined` to `void`).
21
- *
22
- * @param ctx - The module context
23
- * @param ref - The type reference, or `undefined` for void
24
- * @param isNullable - Whether the slot accepts `null`
25
- */
26
- export const writeTsType = (ctx, ref, isNullable = false) => {
27
- const base = writeBaseType(ctx, ref);
28
- return isNullable ? `${base} | null` : base;
29
- };
30
- const writeBaseType = (ctx, ref) => {
31
- if (ref === undefined)
32
- return "void";
33
- switch (ref.kind) {
34
- case "primitive":
35
- return primitiveTsType(ref);
36
- case "varargs":
37
- return "unknown[]";
38
- case "callback":
39
- return "((...args: any[]) => any)";
40
- case "named":
41
- return namedTsType(ctx, ref);
42
- case "array":
43
- return arrayTsType(ctx, ref);
44
- case "list":
45
- return listTsType(ctx, ref);
46
- case "hashtable":
47
- return hashTableTsType(ctx, ref);
48
- }
49
- };
50
- const primitiveTsType = (ref) => PRIMITIVE_TS_TYPE[ref.category];
51
- const namedTsType = (ctx, ref) => {
52
- const namespaceName = ref.namespaceName ?? ctx.namespace.name;
53
- const resolved = ctx.repository.resolveNamed(namespaceName, ref.typeName);
54
- if (resolved === undefined) {
55
- return qualifiedTypeReference(ctx, namespaceName, ref.typeName);
56
- }
57
- return resolvedTsType(ctx, namespaceName, ref.typeName, resolved);
58
- };
59
- const resolvedTsType = (ctx, namespaceName, typeName, resolved) => {
60
- switch (resolved.kind) {
61
- case "class":
62
- case "interface":
63
- case "boxed":
64
- case "enum":
65
- return qualifiedTypeReference(ctx, namespaceName, typeName);
66
- case "callback":
67
- return "((...args: any[]) => any)";
68
- case "alias": {
69
- const exportName = resolved.cType ?? toPascalCase(typeName);
70
- if (namespaceName === ctx.namespace.name)
71
- return exportName;
72
- return `${ctx.addCrossNamespaceImport(namespaceName)}.${exportName}`;
73
- }
74
- }
75
- };
76
- const qualifiedTypeReference = (ctx, namespaceName, typeName) => {
77
- if (namespaceName === ctx.namespace.name)
78
- return toPascalCase(typeName);
79
- const alias = ctx.addCrossNamespaceImport(namespaceName);
80
- return `${alias}.${toPascalCase(typeName)}`;
81
- };
82
- const arrayTsType = (ctx, ref) => {
83
- const element = writeBaseType(ctx, ref.element);
84
- return `${element}[]`;
85
- };
86
- const listTsType = (ctx, ref) => {
87
- if (ref.flavor === "gbytearray")
88
- return "number[]";
89
- const element = writeBaseType(ctx, ref.element);
90
- return `${element}[]`;
91
- };
92
- const hashTableTsType = (ctx, ref) => {
93
- const key = writeBaseType(ctx, ref.key);
94
- const value = writeBaseType(ctx, ref.value);
95
- return `Map<${key}, ${value}>`;
96
- };
97
- //# sourceMappingURL=types-ts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-ts.js","sourceRoot":"","sources":["../../src/writers/types-ts.ts"],"names":[],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import { type GirCallback } from "../gir/callback.js";
3
- import { type GirParameter, type ParameterTransfer } from "../gir/parameter.js";
4
- import type { GirRepository } from "../gir/repository.js";
5
- import type { GirTypeRef } from "../gir/type-ref.js";
6
- /**
7
- * Renders a TypeScript expression that materialises the FFI type
8
- * descriptor for `ref`.
9
- *
10
- * @param context - The module context (used for cross-namespace imports)
11
- * @param ref - The GIR type reference, or `undefined` for void
12
- * @param transfer - GIR transfer-ownership conveyed onto the descriptor
13
- * @param argIndexOffset - Shift applied to a sized array's length-parameter
14
- * index so it addresses the FFI argument list (which includes the
15
- * instance receiver) rather than the GIR parameter list
16
- */
17
- export declare const renderFfiType: (context: ModuleContext, ref: GirTypeRef | undefined, transfer?: ParameterTransfer, argIndexOffset?: number) => string;
18
- /**
19
- * A callback declaration resolved from a parameter type, together with the
20
- * namespace its parameter and return references belong to.
21
- */
22
- export type ResolvedCallback = {
23
- readonly callback: GirCallback;
24
- readonly namespaceName: string;
25
- };
26
- /**
27
- * Resolves a parameter type reference to its callback declaration, whether
28
- * declared inline (`<callback>` child) or by name (a namespace-level
29
- * `<callback>`). Returns `undefined` for non-callback references.
30
- *
31
- * @param context - The module context
32
- * @param ref - The parameter type reference
33
- */
34
- export declare const resolveCallbackType: (context: ModuleContext, ref: GirTypeRef | undefined) => ResolvedCallback | undefined;
35
- /**
36
- * Whether a type reference is a scalar the native trampoline can read and
37
- * write through a `{ value }` cell: a non-string, non-void primitive, an enum or
38
- * flags type, or an alias resolving to one. Pointer-shaped types (strings,
39
- * objects, boxed records, arrays) are excluded — their out-parameter slots may
40
- * be uninitialized, so reading the incoming value would be unsound.
41
- *
42
- * @param repository - The GIR repository
43
- * @param namespaceName - The namespace the reference is resolved against
44
- * @param ref - The type reference
45
- */
46
- export declare const isScalarRef: (repository: GirRepository, namespaceName: string, ref: GirTypeRef | undefined) => boolean;
47
- /**
48
- * Whether an inout parameter marshals through a readable-and-writable
49
- * `{ value }` cell rather than being passed by handle and mutated in place.
50
- *
51
- * True for scalar inout parameters (see {@link isScalarRef}): the native
52
- * trampoline seeds the cell with the incoming value, the handler returns its
53
- * replacement in the tuple, and the cell is flushed back through the pointer.
54
- * Handle-passing inout parameters (objects, interfaces, boxed records) stay
55
- * plain arguments the handler mutates directly.
56
- *
57
- * @param context - The module context
58
- * @param parameter - The parameter to test
59
- */
60
- export declare const isCellInout: (context: ModuleContext, parameter: GirParameter) => boolean;
61
- /**
62
- * Renders the `t.trampoline(...)` FFI descriptor for a callback parameter.
63
- *
64
- * The trampoline carries the callback's own argument and return FFI types,
65
- * the index of its `user_data` slot, and the owning parameter's `scope` plus
66
- * whether a paired `GDestroyNotify` is present. The native marshaller folds
67
- * the C-level callback, `user_data`, and destroy arguments into this single
68
- * descriptor. Returns `undefined` when `ref` is not a callback.
69
- *
70
- * @param context - The module context
71
- * @param ref - The parameter type reference
72
- * @param owningParameter - The parameter that carries the callback, for scope/destroy
73
- */
74
- export declare const renderTrampolineType: (context: ModuleContext, ref: GirTypeRef | undefined, owningParameter: GirParameter) => string | undefined;
75
- /**
76
- * Renders the FFI descriptor for a method's instance (`self`) parameter.
77
- *
78
- * The receiver is always passed as a borrowed pointer regardless of the GIR
79
- * instance-parameter transfer (`transfer="full"` on e.g. `gdk_event_unref`
80
- * describes C-side consumption, not FFI ownership). A receiver whose ancestry
81
- * reaches a ref-counted fundamental (e.g. `GskRenderNode`) is marshalled as
82
- * `t.fundamental`; every other receiver — GObject subclasses and opaque
83
- * records alike — is a borrowed `t.object`.
84
- *
85
- * @param context - The module context
86
- * @param instance - The instance parameter
87
- */
88
- export declare const renderSelfFfiType: (context: ModuleContext, instance: GirParameter) => string;
89
- //# sourceMappingURL=value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../src/writers/value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,KAAK,YAAY,EAAoC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAgB,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAqCjF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GACtB,SAAS,aAAa,EACtB,KAAK,UAAU,GAAG,SAAS,EAC3B,WAAU,iBAA0B,EACpC,uBAAkB,KACnB,MA2BF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC5B,SAAS,aAAa,EACtB,KAAK,UAAU,GAAG,SAAS,KAC5B,gBAAgB,GAAG,SASrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAI,YAAY,aAAa,EAAE,eAAe,MAAM,EAAE,KAAK,UAAU,GAAG,SAAS,KAAG,OAW3G,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,aAAa,EAAE,WAAW,YAAY,KAAG,OAC4B,CAAC;AAE3G;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,aAAa,EACtB,KAAK,UAAU,GAAG,SAAS,EAC3B,iBAAiB,YAAY,KAC9B,MAAM,GAAG,SAqBX,CAAC;AA8IF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,aAAa,EAAE,UAAU,YAAY,KAAG,MAgBlF,CAAC"}