@gtkx/codegen 0.21.0 → 1.0.0-rc.2

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 (756) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +25 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +420 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +62 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +127 -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 +248 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +27 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +158 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +20 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +111 -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 +130 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +67 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +372 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +12 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +156 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +26 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +156 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +34 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +143 -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 +380 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +31 -28
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +84 -19
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gi.d.ts +13 -0
  51. package/dist/gi.d.ts.map +1 -0
  52. package/dist/gi.js +21 -0
  53. package/dist/gi.js.map +1 -0
  54. package/dist/gir/ancestry.d.ts +10 -0
  55. package/dist/gir/ancestry.d.ts.map +1 -0
  56. package/dist/gir/ancestry.js +26 -0
  57. package/dist/gir/ancestry.js.map +1 -0
  58. package/dist/gir/callback.d.ts +8 -14
  59. package/dist/gir/callback.d.ts.map +1 -1
  60. package/dist/gir/callback.js +16 -16
  61. package/dist/gir/callback.js.map +1 -1
  62. package/dist/gir/class.d.ts +25 -44
  63. package/dist/gir/class.d.ts.map +1 -1
  64. package/dist/gir/class.js +16 -26
  65. package/dist/gir/class.js.map +1 -1
  66. package/dist/gir/enum.d.ts +16 -34
  67. package/dist/gir/enum.d.ts.map +1 -1
  68. package/dist/gir/enum.js +10 -16
  69. package/dist/gir/enum.js.map +1 -1
  70. package/dist/gir/field.d.ts +16 -24
  71. package/dist/gir/field.d.ts.map +1 -1
  72. package/dist/gir/field.js +35 -18
  73. package/dist/gir/field.js.map +1 -1
  74. package/dist/gir/function.d.ts +15 -43
  75. package/dist/gir/function.d.ts.map +1 -1
  76. package/dist/gir/function.js +26 -23
  77. package/dist/gir/function.js.map +1 -1
  78. package/dist/gir/gir-path.d.ts +3 -0
  79. package/dist/gir/gir-path.d.ts.map +1 -0
  80. package/dist/gir/gir-path.js +57 -0
  81. package/dist/gir/gir-path.js.map +1 -0
  82. package/dist/gir/libraries.d.ts +5 -0
  83. package/dist/gir/libraries.d.ts.map +1 -0
  84. package/dist/gir/libraries.js +74 -0
  85. package/dist/gir/libraries.js.map +1 -0
  86. package/dist/gir/library.d.ts +43 -0
  87. package/dist/gir/library.d.ts.map +1 -0
  88. package/dist/gir/library.js +242 -0
  89. package/dist/gir/library.js.map +1 -0
  90. package/dist/gir/namespace.d.ts +40 -54
  91. package/dist/gir/namespace.d.ts.map +1 -1
  92. package/dist/gir/namespace.js +51 -40
  93. package/dist/gir/namespace.js.map +1 -1
  94. package/dist/gir/nullable-overrides.d.ts +3 -0
  95. package/dist/gir/nullable-overrides.d.ts.map +1 -0
  96. package/dist/gir/nullable-overrides.js +5 -0
  97. package/dist/gir/nullable-overrides.js.map +1 -0
  98. package/dist/gir/parameter.d.ts +34 -76
  99. package/dist/gir/parameter.d.ts.map +1 -1
  100. package/dist/gir/parameter.js +47 -59
  101. package/dist/gir/parameter.js.map +1 -1
  102. package/dist/gir/parse.d.ts +12 -77
  103. package/dist/gir/parse.d.ts.map +1 -1
  104. package/dist/gir/parse.js +65 -103
  105. package/dist/gir/parse.js.map +1 -1
  106. package/dist/gir/primitives.d.ts +5 -35
  107. package/dist/gir/primitives.d.ts.map +1 -1
  108. package/dist/gir/primitives.js +21 -36
  109. package/dist/gir/primitives.js.map +1 -1
  110. package/dist/gir/property.d.ts +18 -26
  111. package/dist/gir/property.d.ts.map +1 -1
  112. package/dist/gir/property.js +16 -12
  113. package/dist/gir/property.js.map +1 -1
  114. package/dist/gir/record.d.ts +28 -0
  115. package/dist/gir/record.d.ts.map +1 -0
  116. package/dist/gir/record.js +26 -0
  117. package/dist/gir/record.js.map +1 -0
  118. package/dist/gir/size.d.ts +15 -61
  119. package/dist/gir/size.d.ts.map +1 -1
  120. package/dist/gir/size.js +49 -72
  121. package/dist/gir/size.js.map +1 -1
  122. package/dist/gir/type-id.d.ts +51 -0
  123. package/dist/gir/type-id.d.ts.map +1 -0
  124. package/dist/gir/type-id.js +12 -0
  125. package/dist/gir/type-id.js.map +1 -0
  126. package/dist/gir/type-ref.d.ts +4 -77
  127. package/dist/gir/type-ref.d.ts.map +1 -1
  128. package/dist/gir/type-ref.js +58 -77
  129. package/dist/gir/type-ref.js.map +1 -1
  130. package/dist/gir/type.d.ts +34 -0
  131. package/dist/gir/type.d.ts.map +1 -0
  132. package/dist/gir/type.js +2 -0
  133. package/dist/gir/type.js.map +1 -0
  134. package/dist/index.d.ts +7 -11
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +6 -11
  137. package/dist/index.js.map +1 -1
  138. package/dist/jsx.d.ts +26 -0
  139. package/dist/jsx.d.ts.map +1 -0
  140. package/dist/jsx.js +40 -0
  141. package/dist/jsx.js.map +1 -0
  142. package/dist/khronos/args.d.ts +30 -0
  143. package/dist/khronos/args.d.ts.map +1 -0
  144. package/dist/khronos/args.js +171 -0
  145. package/dist/khronos/args.js.map +1 -0
  146. package/dist/khronos/jsdoc.d.ts +21 -0
  147. package/dist/khronos/jsdoc.d.ts.map +1 -0
  148. package/dist/khronos/jsdoc.js +72 -0
  149. package/dist/khronos/jsdoc.js.map +1 -0
  150. package/dist/khronos/model.d.ts +38 -0
  151. package/dist/khronos/model.d.ts.map +1 -0
  152. package/dist/khronos/model.js +167 -0
  153. package/dist/khronos/model.js.map +1 -0
  154. package/dist/khronos/modules.d.ts +12 -0
  155. package/dist/khronos/modules.d.ts.map +1 -0
  156. package/dist/khronos/modules.js +73 -0
  157. package/dist/khronos/modules.js.map +1 -0
  158. package/dist/khronos/param-pair.d.ts +11 -0
  159. package/dist/khronos/param-pair.d.ts.map +1 -0
  160. package/dist/khronos/param-pair.js +6 -0
  161. package/dist/khronos/param-pair.js.map +1 -0
  162. package/dist/khronos/parse.d.ts +8 -0
  163. package/dist/khronos/parse.d.ts.map +1 -0
  164. package/dist/khronos/parse.js +62 -0
  165. package/dist/khronos/parse.js.map +1 -0
  166. package/dist/khronos/pipeline.d.ts +24 -0
  167. package/dist/khronos/pipeline.d.ts.map +1 -0
  168. package/dist/khronos/pipeline.js +223 -0
  169. package/dist/khronos/pipeline.js.map +1 -0
  170. package/dist/khronos/plan.d.ts +81 -0
  171. package/dist/khronos/plan.d.ts.map +1 -0
  172. package/dist/khronos/plan.js +200 -0
  173. package/dist/khronos/plan.js.map +1 -0
  174. package/dist/khronos/render.d.ts +17 -0
  175. package/dist/khronos/render.d.ts.map +1 -0
  176. package/dist/khronos/render.js +205 -0
  177. package/dist/khronos/render.js.map +1 -0
  178. package/dist/khronos/select.d.ts +15 -0
  179. package/dist/khronos/select.d.ts.map +1 -0
  180. package/dist/khronos/select.js +56 -0
  181. package/dist/khronos/select.js.map +1 -0
  182. package/dist/react/element-config.d.ts +17 -0
  183. package/dist/react/element-config.d.ts.map +1 -0
  184. package/dist/react/element-config.js +61 -0
  185. package/dist/react/element-config.js.map +1 -0
  186. package/dist/runner.d.ts +38 -49
  187. package/dist/runner.d.ts.map +1 -1
  188. package/dist/runner.js +81 -54
  189. package/dist/runner.js.map +1 -1
  190. package/dist/store/compile-store.d.ts +11 -0
  191. package/dist/store/compile-store.d.ts.map +1 -0
  192. package/dist/store/compile-store.js +40 -0
  193. package/dist/store/compile-store.js.map +1 -0
  194. package/dist/store/gi/async.d.ts +5 -0
  195. package/dist/store/gi/async.d.ts.map +1 -0
  196. package/dist/store/gi/async.js +45 -0
  197. package/dist/store/gi/async.js.map +1 -0
  198. package/dist/store/gi/callables.d.ts +42 -0
  199. package/dist/store/gi/callables.d.ts.map +1 -0
  200. package/dist/store/gi/callables.js +264 -0
  201. package/dist/store/gi/callables.js.map +1 -0
  202. package/dist/store/gi/callback.d.ts +5 -0
  203. package/dist/store/gi/callback.d.ts.map +1 -0
  204. package/dist/store/gi/callback.js +17 -0
  205. package/dist/store/gi/callback.js.map +1 -0
  206. package/dist/store/gi/class-struct-record.d.ts +10 -0
  207. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  208. package/dist/store/gi/class-struct-record.js +52 -0
  209. package/dist/store/gi/class-struct-record.js.map +1 -0
  210. package/dist/store/gi/class.d.ts +5 -0
  211. package/dist/store/gi/class.d.ts.map +1 -0
  212. package/dist/store/gi/class.js +208 -0
  213. package/dist/store/gi/class.js.map +1 -0
  214. package/dist/store/gi/companion.d.ts +5 -0
  215. package/dist/store/gi/companion.d.ts.map +1 -0
  216. package/dist/store/gi/companion.js +16 -0
  217. package/dist/store/gi/companion.js.map +1 -0
  218. package/dist/store/gi/constant.d.ts +6 -0
  219. package/dist/store/gi/constant.d.ts.map +1 -0
  220. package/dist/store/gi/constant.js +35 -0
  221. package/dist/store/gi/constant.js.map +1 -0
  222. package/dist/store/gi/constructor-props.d.ts +6 -0
  223. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  224. package/dist/store/gi/constructor-props.js +71 -0
  225. package/dist/store/gi/constructor-props.js.map +1 -0
  226. package/dist/store/gi/enum.d.ts +6 -0
  227. package/dist/store/gi/enum.d.ts.map +1 -0
  228. package/dist/store/gi/enum.js +41 -0
  229. package/dist/store/gi/enum.js.map +1 -0
  230. package/dist/store/gi/function.d.ts +9 -0
  231. package/dist/store/gi/function.d.ts.map +1 -0
  232. package/dist/store/gi/function.js +114 -0
  233. package/dist/store/gi/function.js.map +1 -0
  234. package/dist/store/gi/gtype-binding.d.ts +10 -0
  235. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  236. package/dist/store/gi/gtype-binding.js +24 -0
  237. package/dist/store/gi/gtype-binding.js.map +1 -0
  238. package/dist/store/gi/interface.d.ts +5 -0
  239. package/dist/store/gi/interface.d.ts.map +1 -0
  240. package/dist/store/gi/interface.js +117 -0
  241. package/dist/store/gi/interface.js.map +1 -0
  242. package/dist/store/gi/item-comparators.d.ts +7 -0
  243. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  244. package/dist/store/gi/item-comparators.js +88 -0
  245. package/dist/store/gi/item-comparators.js.map +1 -0
  246. package/dist/store/gi/method.d.ts +24 -0
  247. package/dist/store/gi/method.d.ts.map +1 -0
  248. package/dist/store/gi/method.js +336 -0
  249. package/dist/store/gi/method.js.map +1 -0
  250. package/dist/store/gi/param-marshal.d.ts +10 -0
  251. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  252. package/dist/store/gi/param-marshal.js +50 -0
  253. package/dist/store/gi/param-marshal.js.map +1 -0
  254. package/dist/store/gi/pipeline.d.ts +5 -0
  255. package/dist/store/gi/pipeline.d.ts.map +1 -0
  256. package/dist/store/gi/pipeline.js +95 -0
  257. package/dist/store/gi/pipeline.js.map +1 -0
  258. package/dist/store/gi/properties.d.ts +6 -0
  259. package/dist/store/gi/properties.d.ts.map +1 -0
  260. package/dist/store/gi/properties.js +32 -0
  261. package/dist/store/gi/properties.js.map +1 -0
  262. package/dist/store/gi/property-accessor.d.ts +27 -0
  263. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  264. package/dist/store/gi/property-accessor.js +158 -0
  265. package/dist/store/gi/property-accessor.js.map +1 -0
  266. package/dist/store/gi/record-constructor.d.ts +6 -0
  267. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  268. package/dist/store/gi/record-constructor.js +76 -0
  269. package/dist/store/gi/record-constructor.js.map +1 -0
  270. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  271. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  272. package/dist/store/gi/record-field-accessor.js +360 -0
  273. package/dist/store/gi/record-field-accessor.js.map +1 -0
  274. package/dist/store/gi/record-layout.d.ts +15 -0
  275. package/dist/store/gi/record-layout.d.ts.map +1 -0
  276. package/dist/store/gi/record-layout.js +132 -0
  277. package/dist/store/gi/record-layout.js.map +1 -0
  278. package/dist/store/gi/record.d.ts +5 -0
  279. package/dist/store/gi/record.d.ts.map +1 -0
  280. package/dist/store/gi/record.js +65 -0
  281. package/dist/store/gi/record.js.map +1 -0
  282. package/dist/store/gi/registration.d.ts +16 -0
  283. package/dist/store/gi/registration.d.ts.map +1 -0
  284. package/dist/store/gi/registration.js +21 -0
  285. package/dist/store/gi/registration.js.map +1 -0
  286. package/dist/store/gi/return-wrap.d.ts +10 -0
  287. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  288. package/dist/store/gi/return-wrap.js +67 -0
  289. package/dist/store/gi/return-wrap.js.map +1 -0
  290. package/dist/store/gi/runtime-override.d.ts +4 -0
  291. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  292. package/dist/store/gi/runtime-override.js +32 -0
  293. package/dist/store/gi/runtime-override.js.map +1 -0
  294. package/dist/store/gi/signal.d.ts +6 -0
  295. package/dist/store/gi/signal.d.ts.map +1 -0
  296. package/dist/store/gi/signal.js +280 -0
  297. package/dist/store/gi/signal.js.map +1 -0
  298. package/dist/store/gi/vtable.d.ts +5 -0
  299. package/dist/store/gi/vtable.d.ts.map +1 -0
  300. package/dist/store/gi/vtable.js +108 -0
  301. package/dist/store/gi/vtable.js.map +1 -0
  302. package/dist/store/gi-store.d.ts +10 -0
  303. package/dist/store/gi-store.d.ts.map +1 -0
  304. package/dist/store/gi-store.js +59 -0
  305. package/dist/store/gi-store.js.map +1 -0
  306. package/dist/store/jsx/element-components.d.ts +23 -0
  307. package/dist/store/jsx/element-components.d.ts.map +1 -0
  308. package/dist/store/jsx/element-components.js +86 -0
  309. package/dist/store/jsx/element-components.js.map +1 -0
  310. package/dist/store/jsx/element-prop-imports.d.ts +17 -0
  311. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
  312. package/dist/store/jsx/element-prop-imports.js +15 -0
  313. package/dist/store/jsx/element-prop-imports.js.map +1 -0
  314. package/dist/store/jsx/element-prop-types.d.ts +10 -0
  315. package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
  316. package/dist/store/jsx/element-prop-types.js +41 -0
  317. package/dist/store/jsx/element-prop-types.js.map +1 -0
  318. package/dist/store/jsx/gir-index.d.ts +16 -0
  319. package/dist/store/jsx/gir-index.d.ts.map +1 -0
  320. package/dist/store/jsx/gir-index.js +33 -0
  321. package/dist/store/jsx/gir-index.js.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
  323. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  324. package/dist/store/jsx/intrinsic-elements.js +128 -0
  325. package/dist/store/jsx/intrinsic-elements.js.map +1 -0
  326. package/dist/store/jsx/jsx.d.ts +16 -0
  327. package/dist/store/jsx/jsx.d.ts.map +1 -0
  328. package/dist/store/jsx/jsx.js +242 -0
  329. package/dist/store/jsx/jsx.js.map +1 -0
  330. package/dist/store/jsx/metadata.d.ts +4 -0
  331. package/dist/store/jsx/metadata.d.ts.map +1 -0
  332. package/dist/store/jsx/metadata.js +253 -0
  333. package/dist/store/jsx/metadata.js.map +1 -0
  334. package/dist/store/jsx/pipeline.d.ts +21 -0
  335. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  336. package/dist/store/jsx/pipeline.js +81 -0
  337. package/dist/store/jsx/pipeline.js.map +1 -0
  338. package/dist/store/jsx/props.d.ts +33 -0
  339. package/dist/store/jsx/props.d.ts.map +1 -0
  340. package/dist/store/jsx/props.js +158 -0
  341. package/dist/store/jsx/props.js.map +1 -0
  342. package/dist/store/jsx-store.d.ts +7 -0
  343. package/dist/store/jsx-store.d.ts.map +1 -0
  344. package/dist/store/jsx-store.js +26 -0
  345. package/dist/store/jsx-store.js.map +1 -0
  346. package/dist/store/store-fs.d.ts +43 -0
  347. package/dist/store/store-fs.d.ts.map +1 -0
  348. package/dist/store/store-fs.js +73 -0
  349. package/dist/store/store-fs.js.map +1 -0
  350. package/dist/writer/context.d.ts +17 -0
  351. package/dist/writer/context.d.ts.map +1 -0
  352. package/dist/writer/context.js +50 -0
  353. package/dist/writer/context.js.map +1 -0
  354. package/dist/writer/doc.d.ts +3 -0
  355. package/dist/writer/doc.d.ts.map +1 -0
  356. package/dist/writer/doc.js +18 -0
  357. package/dist/writer/doc.js.map +1 -0
  358. package/dist/writer/emit.d.ts +9 -0
  359. package/dist/writer/emit.d.ts.map +1 -0
  360. package/dist/writer/emit.js +24 -0
  361. package/dist/writer/emit.js.map +1 -0
  362. package/dist/writer/gtk-doc.d.ts +3 -0
  363. package/dist/writer/gtk-doc.d.ts.map +1 -0
  364. package/dist/writer/gtk-doc.js +78 -0
  365. package/dist/writer/gtk-doc.js.map +1 -0
  366. package/dist/writer/imports.d.ts +12 -0
  367. package/dist/writer/imports.d.ts.map +1 -0
  368. package/dist/writer/imports.js +61 -0
  369. package/dist/writer/imports.js.map +1 -0
  370. package/dist/writer/module.d.ts +16 -0
  371. package/dist/writer/module.d.ts.map +1 -0
  372. package/dist/writer/module.js +53 -0
  373. package/dist/writer/module.js.map +1 -0
  374. package/dist/xml.d.ts +4 -0
  375. package/dist/xml.d.ts.map +1 -0
  376. package/dist/xml.js +10 -0
  377. package/dist/xml.js.map +1 -0
  378. package/overrides/cairo/context.ts.ejs +1269 -0
  379. package/overrides/cairo/font-face.ts.ejs +151 -0
  380. package/overrides/cairo/font-options.ts.ejs +199 -0
  381. package/overrides/cairo/image-surface.ts.ejs +132 -0
  382. package/overrides/cairo/index.ts.ejs +22 -0
  383. package/overrides/cairo/matrix.ts.ejs +171 -0
  384. package/overrides/cairo/pattern.ts.ejs +476 -0
  385. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  386. package/overrides/cairo/region.ts.ejs +237 -0
  387. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  388. package/overrides/cairo/surface.ts.ejs +296 -0
  389. package/overrides/gdk/index.ts.ejs +2 -0
  390. package/overrides/gdk/rgba.ts.ejs +11 -0
  391. package/overrides/gobject/index.ts.ejs +29 -0
  392. package/overrides/gobject/object.ts.ejs +51 -0
  393. package/overrides/gobject/value.ts.ejs +17 -0
  394. package/overrides/graphene/index.ts.ejs +2 -0
  395. package/overrides/graphene/structs.ts.ejs +37 -0
  396. package/package.json +21 -15
  397. package/src/analysis/descriptor-render.ts +723 -0
  398. package/src/analysis/descriptor.ts +300 -0
  399. package/src/analysis/inheritance.ts +430 -0
  400. package/src/analysis/param-structure.ts +258 -0
  401. package/src/analysis/ts-type.ts +174 -0
  402. package/src/compile.ts +179 -0
  403. package/src/docs/api-reference.ts +557 -0
  404. package/src/docs/element-page.ts +281 -0
  405. package/src/docs/pipeline.ts +241 -0
  406. package/src/docs/render.ts +255 -0
  407. package/src/docs/symbol-page.ts +589 -0
  408. package/src/fingerprint.ts +144 -35
  409. package/src/gi.ts +26 -0
  410. package/src/gir/ancestry.ts +53 -0
  411. package/src/gir/callback.ts +22 -24
  412. package/src/gir/class.ts +39 -61
  413. package/src/gir/enum.ts +25 -41
  414. package/src/gir/field.ts +51 -37
  415. package/src/gir/function.ts +44 -59
  416. package/src/gir/gir-path.ts +73 -0
  417. package/src/gir/libraries.ts +102 -0
  418. package/src/gir/library.ts +351 -0
  419. package/src/gir/namespace.ts +109 -88
  420. package/src/gir/nullable-overrides.ts +5 -0
  421. package/src/gir/parameter.ts +111 -102
  422. package/src/gir/parse.ts +124 -121
  423. package/src/gir/primitives.ts +43 -63
  424. package/src/gir/property.ts +33 -33
  425. package/src/gir/record.ts +55 -0
  426. package/src/gir/size.ts +93 -107
  427. package/src/gir/type-id.ts +64 -0
  428. package/src/gir/type-ref.ts +77 -146
  429. package/src/gir/type.ts +18 -0
  430. package/src/index.ts +27 -15
  431. package/src/jsx.ts +70 -0
  432. package/src/khronos/args.ts +271 -0
  433. package/src/khronos/jsdoc.ts +114 -0
  434. package/src/khronos/model.ts +267 -0
  435. package/src/khronos/modules.ts +115 -0
  436. package/src/khronos/param-pair.ts +14 -0
  437. package/src/khronos/parse.ts +86 -0
  438. package/src/khronos/pipeline.ts +337 -0
  439. package/src/khronos/plan.ts +340 -0
  440. package/src/khronos/registry/LICENSE +202 -0
  441. package/src/khronos/registry/gl.xml +47748 -0
  442. package/src/khronos/render.ts +330 -0
  443. package/src/khronos/select.ts +97 -0
  444. package/src/react/element-config.ts +91 -0
  445. package/src/runner.ts +153 -80
  446. package/src/store/compile-store.ts +55 -0
  447. package/src/store/gi/async.ts +69 -0
  448. package/src/store/gi/callables.ts +518 -0
  449. package/src/store/gi/callback.ts +24 -0
  450. package/src/store/gi/class-struct-record.ts +72 -0
  451. package/src/store/gi/class.ts +334 -0
  452. package/src/store/gi/companion.ts +22 -0
  453. package/src/store/gi/constant.ts +58 -0
  454. package/src/store/gi/constructor-props.ts +108 -0
  455. package/src/store/gi/enum.ts +64 -0
  456. package/src/store/gi/function.ts +173 -0
  457. package/src/store/gi/gtype-binding.ts +46 -0
  458. package/src/store/gi/interface.ts +222 -0
  459. package/src/store/gi/item-comparators.ts +138 -0
  460. package/src/store/gi/method.ts +634 -0
  461. package/src/store/gi/param-marshal.ts +71 -0
  462. package/src/store/gi/pipeline.ts +135 -0
  463. package/src/store/gi/properties.ts +50 -0
  464. package/src/store/gi/property-accessor.ts +302 -0
  465. package/src/store/gi/record-constructor.ts +119 -0
  466. package/src/store/gi/record-field-accessor.ts +607 -0
  467. package/src/store/gi/record-layout.ts +221 -0
  468. package/src/store/gi/record.ts +89 -0
  469. package/src/store/gi/registration.ts +44 -0
  470. package/src/store/gi/return-wrap.ts +100 -0
  471. package/src/store/gi/runtime-override.ts +46 -0
  472. package/src/store/gi/signal.ts +450 -0
  473. package/src/store/gi/vtable.ts +175 -0
  474. package/src/store/gi-store.ts +92 -0
  475. package/src/store/jsx/element-components.ts +152 -0
  476. package/src/store/jsx/element-prop-imports.ts +24 -0
  477. package/src/store/jsx/element-prop-types.ts +59 -0
  478. package/src/store/jsx/gir-index.ts +62 -0
  479. package/src/store/jsx/intrinsic-elements.ts +262 -0
  480. package/src/store/jsx/jsx.ts +408 -0
  481. package/src/store/jsx/metadata.ts +385 -0
  482. package/src/store/jsx/pipeline.ts +145 -0
  483. package/src/store/jsx/props.ts +274 -0
  484. package/src/store/jsx-store.ts +39 -0
  485. package/src/store/store-fs.ts +128 -0
  486. package/src/writer/context.ts +67 -0
  487. package/src/writer/doc.ts +25 -0
  488. package/src/writer/emit.ts +35 -0
  489. package/src/writer/gtk-doc.ts +101 -0
  490. package/src/writer/imports.ts +94 -0
  491. package/src/writer/module.ts +69 -0
  492. package/src/xml.ts +12 -0
  493. package/LICENSE +0 -373
  494. package/dist/dsl/context.d.ts +0 -104
  495. package/dist/dsl/context.d.ts.map +0 -1
  496. package/dist/dsl/context.js +0 -140
  497. package/dist/dsl/context.js.map +0 -1
  498. package/dist/dsl/emit.d.ts +0 -28
  499. package/dist/dsl/emit.d.ts.map +0 -1
  500. package/dist/dsl/emit.js +0 -41
  501. package/dist/dsl/emit.js.map +0 -1
  502. package/dist/dsl/identifier.d.ts +0 -28
  503. package/dist/dsl/identifier.d.ts.map +0 -1
  504. package/dist/dsl/identifier.js +0 -45
  505. package/dist/dsl/identifier.js.map +0 -1
  506. package/dist/dsl/imports.d.ts +0 -58
  507. package/dist/dsl/imports.d.ts.map +0 -1
  508. package/dist/dsl/imports.js +0 -107
  509. package/dist/dsl/imports.js.map +0 -1
  510. package/dist/dsl/module.d.ts +0 -53
  511. package/dist/dsl/module.d.ts.map +0 -1
  512. package/dist/dsl/module.js +0 -76
  513. package/dist/dsl/module.js.map +0 -1
  514. package/dist/ffi/pipeline.d.ts +0 -19
  515. package/dist/ffi/pipeline.d.ts.map +0 -1
  516. package/dist/ffi/pipeline.js +0 -107
  517. package/dist/ffi/pipeline.js.map +0 -1
  518. package/dist/gi-store.d.ts +0 -34
  519. package/dist/gi-store.d.ts.map +0 -1
  520. package/dist/gi-store.js +0 -154
  521. package/dist/gi-store.js.map +0 -1
  522. package/dist/gir/boxed.d.ts +0 -66
  523. package/dist/gir/boxed.d.ts.map +0 -1
  524. package/dist/gir/boxed.js +0 -49
  525. package/dist/gir/boxed.js.map +0 -1
  526. package/dist/gir/qualified-name.d.ts +0 -37
  527. package/dist/gir/qualified-name.d.ts.map +0 -1
  528. package/dist/gir/qualified-name.js +0 -39
  529. package/dist/gir/qualified-name.js.map +0 -1
  530. package/dist/gir/qualify.d.ts +0 -32
  531. package/dist/gir/qualify.d.ts.map +0 -1
  532. package/dist/gir/qualify.js +0 -60
  533. package/dist/gir/qualify.js.map +0 -1
  534. package/dist/gir/repository.d.ts +0 -82
  535. package/dist/gir/repository.d.ts.map +0 -1
  536. package/dist/gir/repository.js +0 -122
  537. package/dist/gir/repository.js.map +0 -1
  538. package/dist/gir/signal.d.ts +0 -22
  539. package/dist/gir/signal.d.ts.map +0 -1
  540. package/dist/gir/signal.js +0 -20
  541. package/dist/gir/signal.js.map +0 -1
  542. package/dist/jsx-store.d.ts +0 -22
  543. package/dist/jsx-store.d.ts.map +0 -1
  544. package/dist/jsx-store.js +0 -40
  545. package/dist/jsx-store.js.map +0 -1
  546. package/dist/react/compounds-meta.d.ts +0 -18
  547. package/dist/react/compounds-meta.d.ts.map +0 -1
  548. package/dist/react/compounds-meta.js +0 -93
  549. package/dist/react/compounds-meta.js.map +0 -1
  550. package/dist/react/compounds.d.ts +0 -27
  551. package/dist/react/compounds.d.ts.map +0 -1
  552. package/dist/react/compounds.js +0 -164
  553. package/dist/react/compounds.js.map +0 -1
  554. package/dist/react/internal.d.ts +0 -14
  555. package/dist/react/internal.d.ts.map +0 -1
  556. package/dist/react/internal.js +0 -79
  557. package/dist/react/internal.js.map +0 -1
  558. package/dist/react/jsx.d.ts +0 -22
  559. package/dist/react/jsx.d.ts.map +0 -1
  560. package/dist/react/jsx.js +0 -134
  561. package/dist/react/jsx.js.map +0 -1
  562. package/dist/react/pipeline.d.ts +0 -13
  563. package/dist/react/pipeline.d.ts.map +0 -1
  564. package/dist/react/pipeline.js +0 -25
  565. package/dist/react/pipeline.js.map +0 -1
  566. package/dist/react/props.d.ts +0 -38
  567. package/dist/react/props.d.ts.map +0 -1
  568. package/dist/react/props.js +0 -231
  569. package/dist/react/props.js.map +0 -1
  570. package/dist/react/slot-props.d.ts +0 -10
  571. package/dist/react/slot-props.d.ts.map +0 -1
  572. package/dist/react/slot-props.js +0 -56
  573. package/dist/react/slot-props.js.map +0 -1
  574. package/dist/react/widgets.d.ts +0 -83
  575. package/dist/react/widgets.d.ts.map +0 -1
  576. package/dist/react/widgets.js +0 -152
  577. package/dist/react/widgets.js.map +0 -1
  578. package/dist/store-fs.d.ts +0 -109
  579. package/dist/store-fs.d.ts.map +0 -1
  580. package/dist/store-fs.js +0 -98
  581. package/dist/store-fs.js.map +0 -1
  582. package/dist/transpile.d.ts +0 -32
  583. package/dist/transpile.d.ts.map +0 -1
  584. package/dist/transpile.js +0 -63
  585. package/dist/transpile.js.map +0 -1
  586. package/dist/typecheck-store.d.ts +0 -41
  587. package/dist/typecheck-store.d.ts.map +0 -1
  588. package/dist/typecheck-store.js +0 -102
  589. package/dist/typecheck-store.js.map +0 -1
  590. package/dist/writers/alias.d.ts +0 -13
  591. package/dist/writers/alias.d.ts.map +0 -1
  592. package/dist/writers/alias.js +0 -17
  593. package/dist/writers/alias.js.map +0 -1
  594. package/dist/writers/async.d.ts +0 -22
  595. package/dist/writers/async.d.ts.map +0 -1
  596. package/dist/writers/async.js +0 -48
  597. package/dist/writers/async.js.map +0 -1
  598. package/dist/writers/boxed-constructor.d.ts +0 -26
  599. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  600. package/dist/writers/boxed-constructor.js +0 -85
  601. package/dist/writers/boxed-constructor.js.map +0 -1
  602. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  603. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  604. package/dist/writers/boxed-field-accessor.js +0 -260
  605. package/dist/writers/boxed-field-accessor.js.map +0 -1
  606. package/dist/writers/boxed-layout.d.ts +0 -27
  607. package/dist/writers/boxed-layout.d.ts.map +0 -1
  608. package/dist/writers/boxed-layout.js +0 -128
  609. package/dist/writers/boxed-layout.js.map +0 -1
  610. package/dist/writers/boxed.d.ts +0 -20
  611. package/dist/writers/boxed.d.ts.map +0 -1
  612. package/dist/writers/boxed.js +0 -71
  613. package/dist/writers/boxed.js.map +0 -1
  614. package/dist/writers/callables.d.ts +0 -124
  615. package/dist/writers/callables.d.ts.map +0 -1
  616. package/dist/writers/callables.js +0 -283
  617. package/dist/writers/callables.js.map +0 -1
  618. package/dist/writers/callback.d.ts +0 -16
  619. package/dist/writers/callback.d.ts.map +0 -1
  620. package/dist/writers/callback.js +0 -38
  621. package/dist/writers/callback.js.map +0 -1
  622. package/dist/writers/class-struct-record.d.ts +0 -31
  623. package/dist/writers/class-struct-record.d.ts.map +0 -1
  624. package/dist/writers/class-struct-record.js +0 -67
  625. package/dist/writers/class-struct-record.js.map +0 -1
  626. package/dist/writers/class-struct.d.ts +0 -22
  627. package/dist/writers/class-struct.d.ts.map +0 -1
  628. package/dist/writers/class-struct.js +0 -85
  629. package/dist/writers/class-struct.js.map +0 -1
  630. package/dist/writers/class.d.ts +0 -16
  631. package/dist/writers/class.d.ts.map +0 -1
  632. package/dist/writers/class.js +0 -307
  633. package/dist/writers/class.js.map +0 -1
  634. package/dist/writers/constant.d.ts +0 -15
  635. package/dist/writers/constant.d.ts.map +0 -1
  636. package/dist/writers/constant.js +0 -23
  637. package/dist/writers/constant.js.map +0 -1
  638. package/dist/writers/constants.d.ts +0 -15
  639. package/dist/writers/constants.d.ts.map +0 -1
  640. package/dist/writers/constants.js +0 -23
  641. package/dist/writers/constants.js.map +0 -1
  642. package/dist/writers/constructor-props.d.ts +0 -32
  643. package/dist/writers/constructor-props.d.ts.map +0 -1
  644. package/dist/writers/constructor-props.js +0 -110
  645. package/dist/writers/constructor-props.js.map +0 -1
  646. package/dist/writers/enum.d.ts +0 -21
  647. package/dist/writers/enum.d.ts.map +0 -1
  648. package/dist/writers/enum.js +0 -48
  649. package/dist/writers/enum.js.map +0 -1
  650. package/dist/writers/function.d.ts +0 -40
  651. package/dist/writers/function.d.ts.map +0 -1
  652. package/dist/writers/function.js +0 -127
  653. package/dist/writers/function.js.map +0 -1
  654. package/dist/writers/gtype-binding.d.ts +0 -19
  655. package/dist/writers/gtype-binding.d.ts.map +0 -1
  656. package/dist/writers/gtype-binding.js +0 -40
  657. package/dist/writers/gtype-binding.js.map +0 -1
  658. package/dist/writers/inheritance.d.ts +0 -48
  659. package/dist/writers/inheritance.d.ts.map +0 -1
  660. package/dist/writers/inheritance.js +0 -90
  661. package/dist/writers/inheritance.js.map +0 -1
  662. package/dist/writers/interface.d.ts +0 -16
  663. package/dist/writers/interface.d.ts.map +0 -1
  664. package/dist/writers/interface.js +0 -155
  665. package/dist/writers/interface.js.map +0 -1
  666. package/dist/writers/method.d.ts +0 -150
  667. package/dist/writers/method.d.ts.map +0 -1
  668. package/dist/writers/method.js +0 -510
  669. package/dist/writers/method.js.map +0 -1
  670. package/dist/writers/param-classify.d.ts +0 -93
  671. package/dist/writers/param-classify.d.ts.map +0 -1
  672. package/dist/writers/param-classify.js +0 -163
  673. package/dist/writers/param-classify.js.map +0 -1
  674. package/dist/writers/property-accessor.d.ts +0 -19
  675. package/dist/writers/property-accessor.d.ts.map +0 -1
  676. package/dist/writers/property-accessor.js +0 -117
  677. package/dist/writers/property-accessor.js.map +0 -1
  678. package/dist/writers/registration.d.ts +0 -27
  679. package/dist/writers/registration.d.ts.map +0 -1
  680. package/dist/writers/registration.js +0 -30
  681. package/dist/writers/registration.js.map +0 -1
  682. package/dist/writers/return-wrap.d.ts +0 -39
  683. package/dist/writers/return-wrap.d.ts.map +0 -1
  684. package/dist/writers/return-wrap.js +0 -152
  685. package/dist/writers/return-wrap.js.map +0 -1
  686. package/dist/writers/runtime-override.d.ts +0 -18
  687. package/dist/writers/runtime-override.d.ts.map +0 -1
  688. package/dist/writers/runtime-override.js +0 -44
  689. package/dist/writers/runtime-override.js.map +0 -1
  690. package/dist/writers/signal.d.ts +0 -21
  691. package/dist/writers/signal.d.ts.map +0 -1
  692. package/dist/writers/signal.js +0 -260
  693. package/dist/writers/signal.js.map +0 -1
  694. package/dist/writers/ts-type.d.ts +0 -50
  695. package/dist/writers/ts-type.d.ts.map +0 -1
  696. package/dist/writers/ts-type.js +0 -75
  697. package/dist/writers/ts-type.js.map +0 -1
  698. package/dist/writers/types-ts.d.ts +0 -27
  699. package/dist/writers/types-ts.d.ts.map +0 -1
  700. package/dist/writers/types-ts.js +0 -97
  701. package/dist/writers/types-ts.js.map +0 -1
  702. package/dist/writers/value.d.ts +0 -89
  703. package/dist/writers/value.d.ts.map +0 -1
  704. package/dist/writers/value.js +0 -402
  705. package/dist/writers/value.js.map +0 -1
  706. package/src/dsl/context.ts +0 -146
  707. package/src/dsl/emit.ts +0 -42
  708. package/src/dsl/identifier.ts +0 -52
  709. package/src/dsl/imports.ts +0 -109
  710. package/src/dsl/module.ts +0 -75
  711. package/src/ffi/pipeline.ts +0 -113
  712. package/src/gi-store.ts +0 -199
  713. package/src/gir/boxed.ts +0 -94
  714. package/src/gir/qualified-name.ts +0 -55
  715. package/src/gir/qualify.ts +0 -64
  716. package/src/gir/repository.ts +0 -149
  717. package/src/gir/signal.ts +0 -36
  718. package/src/jsx-store.ts +0 -53
  719. package/src/react/compounds-meta.ts +0 -99
  720. package/src/react/compounds.ts +0 -204
  721. package/src/react/internal.ts +0 -91
  722. package/src/react/jsx.ts +0 -155
  723. package/src/react/pipeline.ts +0 -29
  724. package/src/react/props.ts +0 -307
  725. package/src/react/slot-props.ts +0 -57
  726. package/src/react/widgets.ts +0 -185
  727. package/src/store-fs.ts +0 -157
  728. package/src/transpile.ts +0 -80
  729. package/src/typecheck-store.ts +0 -136
  730. package/src/writers/alias.ts +0 -19
  731. package/src/writers/async.ts +0 -44
  732. package/src/writers/boxed-constructor.ts +0 -105
  733. package/src/writers/boxed-field-accessor.ts +0 -306
  734. package/src/writers/boxed-layout.ts +0 -166
  735. package/src/writers/boxed.ts +0 -77
  736. package/src/writers/callables.ts +0 -339
  737. package/src/writers/callback.ts +0 -40
  738. package/src/writers/class-struct-record.ts +0 -75
  739. package/src/writers/class-struct.ts +0 -96
  740. package/src/writers/class.ts +0 -384
  741. package/src/writers/constant.ts +0 -29
  742. package/src/writers/constructor-props.ts +0 -130
  743. package/src/writers/enum.ts +0 -53
  744. package/src/writers/function.ts +0 -136
  745. package/src/writers/gtype-binding.ts +0 -48
  746. package/src/writers/inheritance.ts +0 -104
  747. package/src/writers/interface.ts +0 -168
  748. package/src/writers/method.ts +0 -678
  749. package/src/writers/param-classify.ts +0 -178
  750. package/src/writers/property-accessor.ts +0 -139
  751. package/src/writers/registration.ts +0 -42
  752. package/src/writers/return-wrap.ts +0 -180
  753. package/src/writers/runtime-override.ts +0 -59
  754. package/src/writers/signal.ts +0 -318
  755. package/src/writers/ts-type.ts +0 -115
  756. package/src/writers/value.ts +0 -485
@@ -1,36 +1,6 @@
1
- /**
2
- * Mapping from GIR primitive type names to the FFI marshaling categories
3
- * the writers emit.
4
- *
5
- * The categories mirror the `t.*` helpers exposed by `@gtkx/ffi`'s runtime
6
- * (see `packages/ffi/src/helpers.ts`). Categories that are not directly
7
- * marshaled (e.g. `void`, `string`, `unichar`) are still listed so callers
8
- * can branch on them without falling through to a default.
9
- */
10
- export type PrimitiveCategory = "void" | "boolean" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "float32" | "float64" | "string" | "unichar" | "pointer";
11
- /**
12
- * Width in bytes of each primitive category on the x86-64 ABI (Linux LP64).
13
- *
14
- * The widths are also used as the natural alignment requirement of each
15
- * category — every native integer/float aligns to its own size.
16
- */
17
- export declare const PRIMITIVE_SIZE: Readonly<Record<PrimitiveCategory, number>>;
18
- /**
19
- * Returns the FFI category for a GIR primitive name (`"gint"`, `"utf8"`,
20
- * `"gsize"`, …) or `undefined` when the name is not a primitive.
21
- *
22
- * Aliases that GIR uses inconsistently (`gint` / `int` / `gint32`, …) all
23
- * map to the same canonical category.
24
- *
25
- * @param name - The GIR type name as it appears in `<type name="…">`
26
- */
27
- export declare const primitiveCategory: (name: string) => PrimitiveCategory | undefined;
28
- /**
29
- * TypeScript surface type for each primitive category.
30
- *
31
- * Codegen surfaces both raw C primitives and string-marshalled categories
32
- * (`string`, `unichar`) through this map so writers in the FFI and React
33
- * pipelines agree on the same annotation per category.
34
- */
35
- export declare const PRIMITIVE_TS_TYPE: Readonly<Record<PrimitiveCategory, string>>;
1
+ type PrimitiveCategory = "void" | "boolean" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "bigint64" | "biguint64" | "gtype" | "float32" | "float64" | "string" | "unichar" | "pointer";
2
+ declare const PRIMITIVE_SIZE: Record<PrimitiveCategory, number>;
3
+ declare const PRIMITIVE_TS_TYPE: Record<PrimitiveCategory, string>;
4
+ declare const primitiveCategory: (name: string) => PrimitiveCategory | undefined;
5
+ export { PRIMITIVE_SIZE, PRIMITIVE_TS_TYPE, primitiveCategory, type PrimitiveCategory };
36
6
  //# sourceMappingURL=primitives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACvB,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAgBrE,CAAC;AAsDH;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,iBAAiB,GAAG,SAAwC,CAAC;AAE9G;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAgBxE,CAAC"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAChB,MAAM,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,UAAU,GACV,WAAW,GACX,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAmBrD,CAAC;AAsDF,QAAA,MAAM,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAmBxD,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,iBAAiB,GAAG,SAAwC,CAAC;AAEvG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,CAAC"}
@@ -1,10 +1,4 @@
1
- /**
2
- * Width in bytes of each primitive category on the x86-64 ABI (Linux LP64).
3
- *
4
- * The widths are also used as the natural alignment requirement of each
5
- * category — every native integer/float aligns to its own size.
6
- */
7
- export const PRIMITIVE_SIZE = Object.freeze({
1
+ const PRIMITIVE_SIZE = {
8
2
  void: 0,
9
3
  boolean: 4,
10
4
  int8: 1,
@@ -15,12 +9,15 @@ export const PRIMITIVE_SIZE = Object.freeze({
15
9
  uint32: 4,
16
10
  int64: 8,
17
11
  uint64: 8,
12
+ bigint64: 8,
13
+ biguint64: 8,
14
+ gtype: 8,
18
15
  float32: 4,
19
16
  float64: 8,
20
17
  string: 8,
21
18
  unichar: 4,
22
19
  pointer: 8,
23
- });
20
+ };
24
21
  const PRIMITIVE_BY_NAME = new Map([
25
22
  ["none", "void"],
26
23
  ["void", "void"],
@@ -42,21 +39,21 @@ const PRIMITIVE_BY_NAME = new Map([
42
39
  ["uint16", "uint16"],
43
40
  ["int32", "int32"],
44
41
  ["uint32", "uint32"],
45
- ["int64", "int64"],
46
- ["uint64", "uint64"],
42
+ ["int64", "bigint64"],
43
+ ["uint64", "biguint64"],
47
44
  ["guint", "uint32"],
48
45
  ["guint32", "uint32"],
49
- ["glong", "int64"],
50
- ["gint64", "int64"],
51
- ["long", "int64"],
46
+ ["glong", "bigint64"],
47
+ ["gint64", "bigint64"],
48
+ ["long", "bigint64"],
52
49
  ["gssize", "int64"],
53
50
  ["gintptr", "int64"],
54
- ["gulong", "uint64"],
55
- ["guint64", "uint64"],
51
+ ["gulong", "biguint64"],
52
+ ["guint64", "biguint64"],
56
53
  ["gsize", "uint64"],
57
54
  ["guintptr", "uint64"],
58
- ["GType", "uint64"],
59
- ["time_t", "int64"],
55
+ ["GType", "gtype"],
56
+ ["time_t", "bigint64"],
60
57
  ["pid_t", "int32"],
61
58
  ["uid_t", "uint32"],
62
59
  ["gid_t", "uint32"],
@@ -72,24 +69,7 @@ const PRIMITIVE_BY_NAME = new Map([
72
69
  ["gpointer", "pointer"],
73
70
  ["gconstpointer", "pointer"],
74
71
  ]);
75
- /**
76
- * Returns the FFI category for a GIR primitive name (`"gint"`, `"utf8"`,
77
- * `"gsize"`, …) or `undefined` when the name is not a primitive.
78
- *
79
- * Aliases that GIR uses inconsistently (`gint` / `int` / `gint32`, …) all
80
- * map to the same canonical category.
81
- *
82
- * @param name - The GIR type name as it appears in `<type name="…">`
83
- */
84
- export const primitiveCategory = (name) => PRIMITIVE_BY_NAME.get(name);
85
- /**
86
- * TypeScript surface type for each primitive category.
87
- *
88
- * Codegen surfaces both raw C primitives and string-marshalled categories
89
- * (`string`, `unichar`) through this map so writers in the FFI and React
90
- * pipelines agree on the same annotation per category.
91
- */
92
- export const PRIMITIVE_TS_TYPE = Object.freeze({
72
+ const PRIMITIVE_TS_TYPE = {
93
73
  void: "void",
94
74
  boolean: "boolean",
95
75
  int8: "number",
@@ -100,10 +80,15 @@ export const PRIMITIVE_TS_TYPE = Object.freeze({
100
80
  uint32: "number",
101
81
  int64: "number",
102
82
  uint64: "number",
83
+ bigint64: "bigint",
84
+ biguint64: "bigint",
85
+ gtype: "bigint",
103
86
  float32: "number",
104
87
  float64: "number",
105
88
  string: "string",
106
89
  unichar: "string",
107
90
  pointer: "number",
108
- });
91
+ };
92
+ const primitiveCategory = (name) => PRIMITIVE_BY_NAME.get(name);
93
+ export { PRIMITIVE_SIZE, PRIMITIVE_TS_TYPE, primitiveCategory };
109
94
  //# sourceMappingURL=primitives.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"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","sourcesContent":["type PrimitiveCategory =\n | \"void\" |\n \"boolean\" |\n \"int8\" |\n \"uint8\" |\n \"int16\" |\n \"uint16\" |\n \"int32\" |\n \"uint32\" |\n \"int64\" |\n \"uint64\" |\n \"bigint64\" |\n \"biguint64\" |\n \"gtype\" |\n \"float32\" |\n \"float64\" |\n \"string\" |\n \"unichar\" |\n \"pointer\";\n\nconst PRIMITIVE_SIZE: Record<PrimitiveCategory, number> = {\n void: 0,\n boolean: 4,\n int8: 1,\n uint8: 1,\n int16: 2,\n uint16: 2,\n int32: 4,\n uint32: 4,\n int64: 8,\n uint64: 8,\n bigint64: 8,\n biguint64: 8,\n gtype: 8,\n float32: 4,\n float64: 8,\n string: 8,\n unichar: 4,\n pointer: 8,\n};\n\nconst PRIMITIVE_BY_NAME: Map<string, PrimitiveCategory> = new Map([\n [\"none\", \"void\"],\n [\"void\", \"void\"],\n [\"gboolean\", \"boolean\"],\n [\"gchar\", \"int8\"],\n [\"gint8\", \"int8\"],\n [\"guchar\", \"uint8\"],\n [\"guint8\", \"uint8\"],\n [\"gshort\", \"int16\"],\n [\"gint16\", \"int16\"],\n [\"gushort\", \"uint16\"],\n [\"guint16\", \"uint16\"],\n [\"gint\", \"int32\"],\n [\"gint32\", \"int32\"],\n [\"int\", \"int32\"],\n [\"int8\", \"int8\"],\n [\"uint8\", \"uint8\"],\n [\"int16\", \"int16\"],\n [\"uint16\", \"uint16\"],\n [\"int32\", \"int32\"],\n [\"uint32\", \"uint32\"],\n [\"int64\", \"bigint64\"],\n [\"uint64\", \"biguint64\"],\n [\"guint\", \"uint32\"],\n [\"guint32\", \"uint32\"],\n [\"glong\", \"bigint64\"],\n [\"gint64\", \"bigint64\"],\n [\"long\", \"bigint64\"],\n [\"gssize\", \"int64\"],\n [\"gintptr\", \"int64\"],\n [\"gulong\", \"biguint64\"],\n [\"guint64\", \"biguint64\"],\n [\"gsize\", \"uint64\"],\n [\"guintptr\", \"uint64\"],\n [\"GType\", \"gtype\"],\n [\"time_t\", \"bigint64\"],\n [\"pid_t\", \"int32\"],\n [\"uid_t\", \"uint32\"],\n [\"gid_t\", \"uint32\"],\n [\"gfloat\", \"float32\"],\n [\"float\", \"float32\"],\n [\"gdouble\", \"float64\"],\n [\"double\", \"float64\"],\n [\"long double\", \"float64\"],\n [\"utf8\", \"string\"],\n [\"filename\", \"string\"],\n [\"gchararray\", \"string\"],\n [\"gunichar\", \"unichar\"],\n [\"gpointer\", \"pointer\"],\n [\"gconstpointer\", \"pointer\"],\n] as const);\n\nconst PRIMITIVE_TS_TYPE: Record<PrimitiveCategory, string> = {\n void: \"void\",\n boolean: \"boolean\",\n int8: \"number\",\n uint8: \"number\",\n int16: \"number\",\n uint16: \"number\",\n int32: \"number\",\n uint32: \"number\",\n int64: \"number\",\n uint64: \"number\",\n bigint64: \"bigint\",\n biguint64: \"bigint\",\n gtype: \"bigint\",\n float32: \"number\",\n float64: \"number\",\n string: \"string\",\n unichar: \"string\",\n pointer: \"number\",\n};\n\nconst primitiveCategory = (name: string): PrimitiveCategory | undefined => PRIMITIVE_BY_NAME.get(name);\n\nexport { PRIMITIVE_SIZE, PRIMITIVE_TS_TYPE, primitiveCategory, type PrimitiveCategory };\n"]}
@@ -1,29 +1,21 @@
1
- import type { ParameterTransfer } from "./parameter.js";
1
+ import type { ParseContext, TypeId } from "./type-id.js";
2
+ import { type ParameterTransfer } from "./parameter.js";
2
3
  import { type RawNode } from "./parse.js";
3
- import { type GirTypeRef } from "./type-ref.js";
4
- /**
5
- * A `<property>` of a class or interface.
6
- *
7
- * GIR property names are kebab-case; the writers convert them to camelCase
8
- * for the JS surface and pass the original GIR name through to
9
- * `registerConstructionMeta` for `g_object_newv` parameter building.
10
- */
11
- export type GirProperty = {
12
- /** GIR property name, kebab-case (e.g. `"css-name"`). */
13
- readonly name: string;
14
- /** Property value type. */
15
- readonly type: GirTypeRef | undefined;
16
- readonly writable: boolean;
17
- readonly construct: boolean;
18
- readonly constructOnly: boolean;
19
- readonly transferOwnership: ParameterTransfer;
20
- /** Optional method name that backs the property's getter (`getter="get_foo"`). */
21
- readonly getter: string | undefined;
22
- /** Optional method name that backs the property's setter (`setter="set_foo"`). */
23
- readonly setter: string | undefined;
4
+ type GirProperty = {
5
+ name: string;
6
+ doc: string | undefined;
7
+ type: TypeId | undefined;
8
+ readable: boolean;
9
+ writable: boolean;
10
+ construct: boolean;
11
+ constructOnly: boolean;
12
+ introspectable: boolean;
13
+ transferOwnership: ParameterTransfer;
14
+ getter: string | undefined;
15
+ setter: string | undefined;
16
+ defaultValue: string | undefined;
24
17
  };
25
- /**
26
- * Builds a {@link GirProperty} from a `<property>` element.
27
- */
28
- export declare const propertyFromNode: (node: RawNode) => GirProperty;
18
+ declare const isConstructableProperty: (property: GirProperty) => boolean;
19
+ declare const propertyFromNode: (node: RawNode, context: ParseContext) => GirProperty;
20
+ export { isConstructableProperty, propertyFromNode, type GirProperty };
29
21
  //# sourceMappingURL=property.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,eAAe,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,OAAO,KAAG,WAS/C,CAAC"}
1
+ {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAsC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAG9E,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAI,UAAU,WAAW,KAAG,OACY,CAAC;AAEtE,QAAA,MAAM,gBAAgB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAa/D,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,CAAC"}
@@ -1,16 +1,20 @@
1
- import { attr, attrBool } from "./parse.js";
2
- import { typeRefFromSlot } from "./type-ref.js";
3
- /**
4
- * Builds a {@link GirProperty} from a `<property>` element.
5
- */
6
- export const propertyFromNode = (node) => ({
7
- name: attr(node, "name") ?? "",
8
- type: typeRefFromSlot(node),
9
- writable: attrBool(node, "writable"),
10
- construct: attrBool(node, "construct"),
11
- constructOnly: attrBool(node, "construct-only"),
12
- transferOwnership: (attr(node, "transfer-ownership") ?? "none"),
1
+ import { transferOwnership } from "./parameter.js";
2
+ import { attr, getDoc, isAttrTrue, nameAttr } from "./parse.js";
3
+ import { typeRefFromNode } from "./type-ref.js";
4
+ const isConstructableProperty = (property) => property.writable || property.construct || property.constructOnly;
5
+ const propertyFromNode = (node, context) => ({
6
+ name: nameAttr(node),
7
+ doc: getDoc(node),
8
+ type: typeRefFromNode(node, context),
9
+ readable: isAttrTrue(node, "readable", true),
10
+ writable: isAttrTrue(node, "writable"),
11
+ construct: isAttrTrue(node, "construct"),
12
+ constructOnly: isAttrTrue(node, "construct-only"),
13
+ introspectable: isAttrTrue(node, "introspectable", true),
14
+ transferOwnership: transferOwnership(node),
13
15
  getter: attr(node, "getter"),
14
16
  setter: attr(node, "setter"),
17
+ defaultValue: attr(node, "default-value"),
15
18
  });
19
+ export { isConstructableProperty, propertyFromNode };
16
20
  //# sourceMappingURL=property.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"property.js","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAmB,eAAe,EAAE,MAAM,eAAe,CAAC;AAwBjE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC;IAC7D,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;IAC9B,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IACpC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACtC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/C,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAsB;IACpF,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAiBhD,MAAM,uBAAuB,GAAG,CAAC,QAAqB,EAAW,EAAE,CAC/D,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC;AAEtE,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAe,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;IACpC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;IAC5C,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;IACxC,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACjD,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;IACxD,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;CAC5C,CAAC,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAoB,CAAC","sourcesContent":["import type { ParseContext, TypeId } from \"./type-id.js\";\nimport { type ParameterTransfer, transferOwnership } from \"./parameter.js\";\nimport { attr, getDoc, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\nimport { typeRefFromNode } from \"./type-ref.js\";\n\ntype GirProperty = {\n name: string;\n doc: string | undefined;\n type: TypeId | undefined;\n readable: boolean;\n writable: boolean;\n construct: boolean;\n constructOnly: boolean;\n introspectable: boolean;\n transferOwnership: ParameterTransfer;\n getter: string | undefined;\n setter: string | undefined;\n defaultValue: string | undefined;\n};\n\nconst isConstructableProperty = (property: GirProperty): boolean =>\n property.writable || property.construct || property.constructOnly;\n\nconst propertyFromNode = (node: RawNode, context: ParseContext): GirProperty => ({\n name: nameAttr(node),\n doc: getDoc(node),\n type: typeRefFromNode(node, context),\n readable: isAttrTrue(node, \"readable\", true),\n writable: isAttrTrue(node, \"writable\"),\n construct: isAttrTrue(node, \"construct\"),\n constructOnly: isAttrTrue(node, \"construct-only\"),\n introspectable: isAttrTrue(node, \"introspectable\", true),\n transferOwnership: transferOwnership(node),\n getter: attr(node, \"getter\"),\n setter: attr(node, \"setter\"),\n defaultValue: attr(node, \"default-value\"),\n});\n\nexport { isConstructableProperty, propertyFromNode, type GirProperty };\n"]}
@@ -0,0 +1,28 @@
1
+ import type { ParseContext } from "./type-id.js";
2
+ import { type GirField } from "./field.js";
3
+ import { type GirFunction } from "./function.js";
4
+ import { type RawNode } from "./parse.js";
5
+ type GirRecord = {
6
+ isVtable: boolean;
7
+ name: string;
8
+ doc: string | undefined;
9
+ cType: string | undefined;
10
+ glibTypeName: string | undefined;
11
+ glibGetType: string | undefined;
12
+ glibRefFunc: string | undefined;
13
+ glibUnrefFunc: string | undefined;
14
+ copyFunc: string | undefined;
15
+ freeFunc: string | undefined;
16
+ disguised: boolean;
17
+ opaque: boolean;
18
+ introspectable: boolean;
19
+ fields: GirField[];
20
+ methods: GirFunction[];
21
+ constructors: GirFunction[];
22
+ functions: GirFunction[];
23
+ isUnion: boolean;
24
+ };
25
+ declare const recordFromNode: (node: RawNode, isVtable: boolean, isUnion: boolean, context: ParseContext) => GirRecord;
26
+ declare const isVtableRecord: (node: RawNode) => boolean;
27
+ export { recordFromNode, isVtableRecord, type GirRecord };
28
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAA8D,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtG,KAAK,SAAS,GAAG;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,cAAc,GAChB,MAAM,OAAO,EACb,UAAU,OAAO,EACjB,SAAS,OAAO,EAChB,SAAS,YAAY,KACtB,SAmBD,CAAC;AAEH,QAAA,MAAM,cAAc,GAAI,MAAM,OAAO,KAAG,OAA+D,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { collectFields } from "./field.js";
2
+ import { functionFromNode } from "./function.js";
3
+ import { attr, getChildren, getDoc, GIR_CONSTRUCTOR_TAG, isAttrTrue } from "./parse.js";
4
+ const recordFromNode = (node, isVtable, isUnion, context) => ({
5
+ isVtable,
6
+ name: attr(node, "name") ?? attr(node, "glib:name") ?? "",
7
+ doc: getDoc(node),
8
+ cType: attr(node, "c:type"),
9
+ glibTypeName: attr(node, "glib:type-name"),
10
+ glibGetType: attr(node, "glib:get-type"),
11
+ glibRefFunc: attr(node, "glib:ref-func"),
12
+ glibUnrefFunc: attr(node, "glib:unref-func"),
13
+ copyFunc: attr(node, "copy-function"),
14
+ freeFunc: attr(node, "free-function"),
15
+ disguised: isAttrTrue(node, "disguised"),
16
+ opaque: isAttrTrue(node, "opaque"),
17
+ introspectable: isAttrTrue(node, "introspectable", true),
18
+ fields: collectFields(node, context),
19
+ methods: getChildren(node, "method").map((method) => functionFromNode(method, context)),
20
+ constructors: getChildren(node, GIR_CONSTRUCTOR_TAG).map((ctor) => functionFromNode(ctor, context)),
21
+ functions: getChildren(node, "function").map((fn) => functionFromNode(fn, context)),
22
+ isUnion,
23
+ });
24
+ const isVtableRecord = (node) => attr(node, "glib:is-gtype-struct-for") !== undefined;
25
+ export { recordFromNode, isVtableRecord };
26
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAuBtG,MAAM,cAAc,GAAG,CACnB,IAAa,EACb,QAAiB,EACjB,OAAgB,EAChB,OAAqB,EACZ,EAAE,CAAC,CAAC;IACb,QAAQ;IACR,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE;IACzD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC1C,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACxC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACxC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACrC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;IAClC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;IACxD,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;IACpC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvF,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnG,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACnF,OAAO;CACV,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC,KAAK,SAAS,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAkB,CAAC","sourcesContent":["import type { ParseContext } from \"./type-id.js\";\nimport { collectFields, type GirField } from \"./field.js\";\nimport { functionFromNode, type GirFunction } from \"./function.js\";\nimport { attr, getChildren, getDoc, GIR_CONSTRUCTOR_TAG, isAttrTrue, type RawNode } from \"./parse.js\";\n\ntype GirRecord = {\n isVtable: boolean;\n name: string;\n doc: string | undefined;\n cType: string | undefined;\n glibTypeName: string | undefined;\n glibGetType: string | undefined;\n glibRefFunc: string | undefined;\n glibUnrefFunc: string | undefined;\n copyFunc: string | undefined;\n freeFunc: string | undefined;\n disguised: boolean;\n opaque: boolean;\n introspectable: boolean;\n fields: GirField[];\n methods: GirFunction[];\n constructors: GirFunction[];\n functions: GirFunction[];\n isUnion: boolean;\n};\n\nconst recordFromNode = (\n node: RawNode,\n isVtable: boolean,\n isUnion: boolean,\n context: ParseContext,\n): GirRecord => ({\n isVtable,\n name: attr(node, \"name\") ?? attr(node, \"glib:name\") ?? \"\",\n doc: getDoc(node),\n cType: attr(node, \"c:type\"),\n glibTypeName: attr(node, \"glib:type-name\"),\n glibGetType: attr(node, \"glib:get-type\"),\n glibRefFunc: attr(node, \"glib:ref-func\"),\n glibUnrefFunc: attr(node, \"glib:unref-func\"),\n copyFunc: attr(node, \"copy-function\"),\n freeFunc: attr(node, \"free-function\"),\n disguised: isAttrTrue(node, \"disguised\"),\n opaque: isAttrTrue(node, \"opaque\"),\n introspectable: isAttrTrue(node, \"introspectable\", true),\n fields: collectFields(node, context),\n methods: getChildren(node, \"method\").map((method) => functionFromNode(method, context)),\n constructors: getChildren(node, GIR_CONSTRUCTOR_TAG).map((ctor) => functionFromNode(ctor, context)),\n functions: getChildren(node, \"function\").map((fn) => functionFromNode(fn, context)),\n isUnion,\n});\n\nconst isVtableRecord = (node: RawNode): boolean => attr(node, \"glib:is-gtype-struct-for\") !== undefined;\n\nexport { recordFromNode, isVtableRecord, type GirRecord };\n"]}
@@ -1,67 +1,21 @@
1
1
  import { type PrimitiveCategory } from "./primitives.js";
2
- /**
3
- * Size and alignment of a single field as it appears in a C struct laid out
4
- * according to the x86-64 ABI.
5
- */
6
- export type FieldLayout = {
7
- /** Width of the field in bytes. */
8
- readonly size: number;
9
- /** Required alignment in bytes; storage offset rounds up to a multiple of this. */
10
- readonly align: number;
2
+ type FieldLayout = {
3
+ size: number;
4
+ align: number;
11
5
  };
12
- /**
13
- * Returns the `{ size, align }` pair for a primitive category.
14
- *
15
- * Pointers and pointer-sized integers (the `pointer` and 64-bit categories)
16
- * report 8/8. Smaller integers and floats report their natural width.
17
- *
18
- * @param category - The primitive category
19
- */
20
- export declare const layoutOfPrimitive: (category: PrimitiveCategory) => FieldLayout;
21
- /**
22
- * Layout slot for a single field that may participate in bitfield packing.
23
- *
24
- * `byteOffset` is always the offset of the underlying storage word; for
25
- * non-bitfield fields it is the field's offset directly, and for bitfield
26
- * members it is the start of the shared storage unit. `bitOffset` and
27
- * `bitWidth` are populated only for bitfield members.
28
- */
29
- export type FieldSlot = {
30
- /** Byte offset of the storage word the field occupies. */
31
- readonly byteOffset: number;
32
- /** Bit position within the storage word, for bitfield members. */
33
- readonly bitOffset: number | undefined;
34
- /** Width in bits, for bitfield members. */
35
- readonly bitWidth: number | undefined;
6
+ type FieldSlot = {
7
+ byteOffset: number;
8
+ bitOffset: number | undefined;
9
+ bitWidth: number | undefined;
36
10
  };
37
- /**
38
- * Describes a field for the purposes of layout computation.
39
- */
40
- export type FieldLayoutInput = {
41
- /** Natural byte size and alignment of the field's value type. */
42
- readonly layout: FieldLayout;
43
- /** When set, the field is a bitfield member with this many bits. */
44
- readonly bits: number | undefined;
11
+ type FieldLayoutInput = {
12
+ layout: FieldLayout;
13
+ bits: number | undefined;
45
14
  };
46
- /**
47
- * Computes per-field byte offsets for a record, grouping consecutive
48
- * bitfield members of compatible storage widths into a shared storage
49
- * word.
50
- *
51
- * Mirrors the GCC/Itanium ABI rules for C bitfield packing in a
52
- * single-storage-word model: a new storage word is opened when the
53
- * underlying type's size changes, when the new field is not a bitfield,
54
- * or when adding the bits would exceed the word's bit count.
55
- *
56
- * A union (`isUnion`) overlays every member at byte offset 0; its size is the
57
- * largest member rounded up to the strongest member alignment.
58
- *
59
- * @param fields - Ordered field layouts and bit widths
60
- * @param isUnion - Whether the fields are union members (overlaid at offset 0)
61
- * @returns Parallel slot array and the total record size in bytes
62
- */
63
- export declare const computeFieldSlots: (fields: readonly FieldLayoutInput[], isUnion?: boolean) => {
64
- readonly slots: readonly FieldSlot[];
65
- readonly size: number;
15
+ declare const layoutOfPrimitive: (category: PrimitiveCategory) => FieldLayout;
16
+ declare const computeFieldSlots: (fields: FieldLayoutInput[], isUnion?: boolean) => {
17
+ slots: FieldSlot[];
18
+ size: number;
66
19
  };
20
+ export { layoutOfPrimitive, computeFieldSlots, type FieldLayout, type FieldSlot, type FieldLayoutInput };
67
21
  //# sourceMappingURL=size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAG/D,CAAC;AAQF;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,GAC1B,QAAQ,SAAS,gBAAgB,EAAE,EACnC,iBAAe,KAChB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAiD/D,CAAC"}
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AASF,QAAA,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAIxD,CAAC;AAkFF,QAAA,MAAM,iBAAiB,GAAI,QAAQ,gBAAgB,EAAE,EAAE,iBAAe,KAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CACvC,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
package/dist/gir/size.js CHANGED
@@ -1,87 +1,64 @@
1
1
  import { PRIMITIVE_SIZE } from "./primitives.js";
2
- /**
3
- * Returns the `{ size, align }` pair for a primitive category.
4
- *
5
- * Pointers and pointer-sized integers (the `pointer` and 64-bit categories)
6
- * report 8/8. Smaller integers and floats report their natural width.
7
- *
8
- * @param category - The primitive category
9
- */
10
- export const layoutOfPrimitive = (category) => {
2
+ const floorDown = (value, multiple) => value - (value % multiple);
3
+ const layoutOfPrimitive = (category) => {
11
4
  const size = PRIMITIVE_SIZE[category];
12
5
  return { size, align: size === 0 ? 1 : size };
13
6
  };
14
7
  const roundUp = (value, multiple) => {
15
- if (multiple <= 1)
8
+ if (multiple <= 1) {
16
9
  return value;
10
+ }
17
11
  const remainder = value % multiple;
18
12
  return remainder === 0 ? value : value + (multiple - remainder);
19
13
  };
20
- /**
21
- * Computes per-field byte offsets for a record, grouping consecutive
22
- * bitfield members of compatible storage widths into a shared storage
23
- * word.
24
- *
25
- * Mirrors the GCC/Itanium ABI rules for C bitfield packing in a
26
- * single-storage-word model: a new storage word is opened when the
27
- * underlying type's size changes, when the new field is not a bitfield,
28
- * or when adding the bits would exceed the word's bit count.
29
- *
30
- * A union (`isUnion`) overlays every member at byte offset 0; its size is the
31
- * largest member rounded up to the strongest member alignment.
32
- *
33
- * @param fields - Ordered field layouts and bit widths
34
- * @param isUnion - Whether the fields are union members (overlaid at offset 0)
35
- * @returns Parallel slot array and the total record size in bytes
36
- */
37
- export const computeFieldSlots = (fields, isUnion = false) => {
38
- if (isUnion) {
39
- let maxSize = 0;
40
- let maxAlign = 1;
41
- const unionSlots = fields.map((field) => {
42
- maxSize = Math.max(maxSize, field.layout.size);
43
- maxAlign = Math.max(maxAlign, field.layout.align);
44
- return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };
45
- });
46
- return { slots: unionSlots, size: roundUp(maxSize, maxAlign) };
14
+ const computeUnionSlots = (fields) => {
15
+ let maxSize = 0;
16
+ let maxAlign = 1;
17
+ const slots = fields.map((field) => {
18
+ maxSize = Math.max(maxSize, field.layout.size);
19
+ maxAlign = Math.max(maxAlign, field.layout.align);
20
+ return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };
21
+ });
22
+ return { slots, size: roundUp(maxSize, maxAlign) };
23
+ };
24
+ const pushPlainField = (state, slots, field, align) => {
25
+ const byteOffset = roundUp(roundUp(state.bitCursor, 8) / 8, align);
26
+ slots.push({ byteOffset, bitOffset: undefined, bitWidth: undefined });
27
+ state.bitCursor = (byteOffset + field.layout.size) * 8;
28
+ };
29
+ // SysV AMD64 places a bit-field at the current bit offset whenever it still fits inside a storage
30
+ // unit of its declared type aligned to that type's alignment, so the unit the cursor already sits in
31
+ // may have room even though the cursor is not on a unit boundary.
32
+ const pushBitfield = (input) => {
33
+ const { state, slots, field, align, bits } = input;
34
+ const unitStart = floorDown(floorDown(state.bitCursor, 8) / 8, align);
35
+ const isFitsInCurrentUnit = state.bitCursor + bits <= (unitStart + field.layout.size) * 8;
36
+ const byteOffset = isFitsInCurrentUnit ? unitStart : roundUp(roundUp(state.bitCursor, 8) / 8, align);
37
+ if (!isFitsInCurrentUnit) {
38
+ state.bitCursor = byteOffset * 8;
47
39
  }
40
+ slots.push({ byteOffset, bitOffset: state.bitCursor - byteOffset * 8, bitWidth: bits });
41
+ state.bitCursor += bits;
42
+ };
43
+ const processStructField = (state, slots, field) => {
44
+ const align = Math.max(1, field.layout.align);
45
+ if (align > state.maxAlign) {
46
+ state.maxAlign = align;
47
+ }
48
+ if (field.bits === undefined) {
49
+ pushPlainField(state, slots, field, align);
50
+ return;
51
+ }
52
+ pushBitfield({ state, slots, field, align, bits: field.bits });
53
+ };
54
+ const computeStructSlots = (fields) => {
48
55
  const slots = [];
49
- let cursor = 0;
50
- let maxAlign = 1;
51
- let bitfieldWordOffset;
52
- let bitfieldWordSize = 0;
53
- let bitfieldUsedBits = 0;
56
+ const state = { bitCursor: 0, maxAlign: 1 };
54
57
  for (const field of fields) {
55
- const align = Math.max(1, field.layout.align);
56
- if (align > maxAlign)
57
- maxAlign = align;
58
- if (field.bits === undefined) {
59
- bitfieldWordOffset = undefined;
60
- bitfieldWordSize = 0;
61
- bitfieldUsedBits = 0;
62
- cursor = roundUp(cursor, align);
63
- slots.push({ byteOffset: cursor, bitOffset: undefined, bitWidth: undefined });
64
- cursor += field.layout.size;
65
- continue;
66
- }
67
- const wordSizeBits = field.layout.size * 8;
68
- const fits = bitfieldWordOffset !== undefined &&
69
- bitfieldWordSize === field.layout.size &&
70
- bitfieldUsedBits + field.bits <= wordSizeBits;
71
- if (!fits) {
72
- cursor = roundUp(cursor, align);
73
- bitfieldWordOffset = cursor;
74
- bitfieldWordSize = field.layout.size;
75
- bitfieldUsedBits = 0;
76
- cursor += field.layout.size;
77
- }
78
- slots.push({
79
- byteOffset: bitfieldWordOffset ?? 0,
80
- bitOffset: bitfieldUsedBits,
81
- bitWidth: field.bits,
82
- });
83
- bitfieldUsedBits += field.bits;
58
+ processStructField(state, slots, field);
84
59
  }
85
- return { slots, size: roundUp(cursor, maxAlign) };
60
+ return { slots, size: roundUp(roundUp(state.bitCursor, 8) / 8, state.maxAlign) };
86
61
  };
62
+ const computeFieldSlots = (fields, isUnion = false) => isUnion ? computeUnionSlots(fields) : computeStructSlots(fields);
63
+ export { layoutOfPrimitive, computeFieldSlots };
87
64
  //# sourceMappingURL=size.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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","sourcesContent":["import { PRIMITIVE_SIZE, type PrimitiveCategory } from \"./primitives.js\";\n\ntype FieldLayout = {\n size: number;\n align: number;\n};\n\ntype FieldSlot = {\n byteOffset: number;\n bitOffset: number | undefined;\n bitWidth: number | undefined;\n};\n\ntype FieldLayoutInput = {\n layout: FieldLayout;\n bits: number | undefined;\n};\n\ntype StructLayoutState = {\n bitCursor: number;\n maxAlign: number;\n};\n\nconst floorDown = (value: number, multiple: number): number => value - (value % multiple);\n\nconst layoutOfPrimitive = (category: PrimitiveCategory): FieldLayout => {\n const size = PRIMITIVE_SIZE[category];\n\n return { size, align: size === 0 ? 1 : size };\n};\n\nconst roundUp = (value: number, multiple: number): number => {\n if (multiple <= 1) {\n return value;\n }\n\n const remainder = value % multiple;\n\n return remainder === 0 ? value : value + (multiple - remainder);\n};\n\nconst computeUnionSlots = (fields: FieldLayoutInput[]): { slots: FieldSlot[]; size: number } => {\n let maxSize = 0;\n let maxAlign = 1;\n\n const slots = fields.map((field) => {\n maxSize = Math.max(maxSize, field.layout.size);\n maxAlign = Math.max(maxAlign, field.layout.align);\n\n return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };\n });\n\n return { slots, size: roundUp(maxSize, maxAlign) };\n};\n\nconst pushPlainField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput, align: number): void => {\n const byteOffset = roundUp(roundUp(state.bitCursor, 8) / 8, align);\n slots.push({ byteOffset, bitOffset: undefined, bitWidth: undefined });\n state.bitCursor = (byteOffset + field.layout.size) * 8;\n};\n\n// SysV AMD64 places a bit-field at the current bit offset whenever it still fits inside a storage\n// unit of its declared type aligned to that type's alignment, so the unit the cursor already sits in\n// may have room even though the cursor is not on a unit boundary.\nconst pushBitfield = (input: {\n state: StructLayoutState;\n slots: FieldSlot[];\n field: FieldLayoutInput;\n align: number;\n bits: number;\n}): void => {\n const { state, slots, field, align, bits } = input;\n const unitStart = floorDown(floorDown(state.bitCursor, 8) / 8, align);\n const isFitsInCurrentUnit = state.bitCursor + bits <= (unitStart + field.layout.size) * 8;\n const byteOffset = isFitsInCurrentUnit ? unitStart : roundUp(roundUp(state.bitCursor, 8) / 8, align);\n\n if (!isFitsInCurrentUnit) {\n state.bitCursor = byteOffset * 8;\n }\n\n slots.push({ byteOffset, bitOffset: state.bitCursor - byteOffset * 8, bitWidth: bits });\n state.bitCursor += bits;\n};\n\nconst processStructField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput): void => {\n const align = Math.max(1, field.layout.align);\n\n if (align > state.maxAlign) {\n state.maxAlign = align;\n }\n\n if (field.bits === undefined) {\n pushPlainField(state, slots, field, align);\n\n return;\n }\n\n pushBitfield({ state, slots, field, align, bits: field.bits });\n};\n\nconst computeStructSlots = (fields: FieldLayoutInput[]): { slots: FieldSlot[]; size: number } => {\n const slots: FieldSlot[] = [];\n const state: StructLayoutState = { bitCursor: 0, maxAlign: 1 };\n\n for (const field of fields) {\n processStructField(state, slots, field);\n }\n\n return { slots, size: roundUp(roundUp(state.bitCursor, 8) / 8, state.maxAlign) };\n};\n\nconst computeFieldSlots = (fields: FieldLayoutInput[], isUnion = false): { slots: FieldSlot[]; size: number } =>\n isUnion ? computeUnionSlots(fields) : computeStructSlots(fields);\n\nexport { layoutOfPrimitive, computeFieldSlots, type FieldLayout, type FieldSlot, type FieldLayoutInput };\n"]}