@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.
- package/README.md +173 -0
- package/dist/analysis/descriptor-render.d.ts +25 -0
- package/dist/analysis/descriptor-render.d.ts.map +1 -0
- package/dist/analysis/descriptor-render.js +420 -0
- package/dist/analysis/descriptor-render.js.map +1 -0
- package/dist/analysis/descriptor.d.ts +62 -0
- package/dist/analysis/descriptor.d.ts.map +1 -0
- package/dist/analysis/descriptor.js +127 -0
- package/dist/analysis/descriptor.js.map +1 -0
- package/dist/analysis/inheritance.d.ts +38 -0
- package/dist/analysis/inheritance.d.ts.map +1 -0
- package/dist/analysis/inheritance.js +248 -0
- package/dist/analysis/inheritance.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +27 -0
- package/dist/analysis/param-structure.d.ts.map +1 -0
- package/dist/analysis/param-structure.js +158 -0
- package/dist/analysis/param-structure.js.map +1 -0
- package/dist/analysis/ts-type.d.ts +20 -0
- package/dist/analysis/ts-type.d.ts.map +1 -0
- package/dist/analysis/ts-type.js +111 -0
- package/dist/analysis/ts-type.js.map +1 -0
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +130 -0
- package/dist/compile.js.map +1 -0
- package/dist/docs/api-reference.d.ts +67 -0
- package/dist/docs/api-reference.d.ts.map +1 -0
- package/dist/docs/api-reference.js +372 -0
- package/dist/docs/api-reference.js.map +1 -0
- package/dist/docs/element-page.d.ts +12 -0
- package/dist/docs/element-page.d.ts.map +1 -0
- package/dist/docs/element-page.js +156 -0
- package/dist/docs/element-page.js.map +1 -0
- package/dist/docs/pipeline.d.ts +26 -0
- package/dist/docs/pipeline.d.ts.map +1 -0
- package/dist/docs/pipeline.js +156 -0
- package/dist/docs/pipeline.js.map +1 -0
- package/dist/docs/render.d.ts +34 -0
- package/dist/docs/render.d.ts.map +1 -0
- package/dist/docs/render.js +143 -0
- package/dist/docs/render.js.map +1 -0
- package/dist/docs/symbol-page.d.ts +41 -0
- package/dist/docs/symbol-page.d.ts.map +1 -0
- package/dist/docs/symbol-page.js +380 -0
- package/dist/docs/symbol-page.js.map +1 -0
- package/dist/fingerprint.d.ts +31 -28
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +84 -19
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +13 -0
- package/dist/gi.d.ts.map +1 -0
- package/dist/gi.js +21 -0
- package/dist/gi.js.map +1 -0
- package/dist/gir/ancestry.d.ts +10 -0
- package/dist/gir/ancestry.d.ts.map +1 -0
- package/dist/gir/ancestry.js +26 -0
- package/dist/gir/ancestry.js.map +1 -0
- package/dist/gir/callback.d.ts +8 -14
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +16 -16
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +25 -44
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +16 -26
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +16 -34
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +10 -16
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +16 -24
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +35 -18
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +15 -43
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +26 -23
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +3 -0
- package/dist/gir/gir-path.d.ts.map +1 -0
- package/dist/gir/gir-path.js +57 -0
- package/dist/gir/gir-path.js.map +1 -0
- package/dist/gir/libraries.d.ts +5 -0
- package/dist/gir/libraries.d.ts.map +1 -0
- package/dist/gir/libraries.js +74 -0
- package/dist/gir/libraries.js.map +1 -0
- package/dist/gir/library.d.ts +43 -0
- package/dist/gir/library.d.ts.map +1 -0
- package/dist/gir/library.js +242 -0
- package/dist/gir/library.js.map +1 -0
- package/dist/gir/namespace.d.ts +40 -54
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +51 -40
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/nullable-overrides.d.ts +3 -0
- package/dist/gir/nullable-overrides.d.ts.map +1 -0
- package/dist/gir/nullable-overrides.js +5 -0
- package/dist/gir/nullable-overrides.js.map +1 -0
- package/dist/gir/parameter.d.ts +34 -76
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +47 -59
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +12 -77
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +65 -103
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +5 -35
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +21 -36
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +18 -26
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +16 -12
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +28 -0
- package/dist/gir/record.d.ts.map +1 -0
- package/dist/gir/record.js +26 -0
- package/dist/gir/record.js.map +1 -0
- package/dist/gir/size.d.ts +15 -61
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +49 -72
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +51 -0
- package/dist/gir/type-id.d.ts.map +1 -0
- package/dist/gir/type-id.js +12 -0
- package/dist/gir/type-id.js.map +1 -0
- package/dist/gir/type-ref.d.ts +4 -77
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +58 -77
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +34 -0
- package/dist/gir/type.d.ts.map +1 -0
- package/dist/gir/type.js +2 -0
- package/dist/gir/type.js.map +1 -0
- package/dist/index.d.ts +7 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +26 -0
- package/dist/jsx.d.ts.map +1 -0
- package/dist/jsx.js +40 -0
- package/dist/jsx.js.map +1 -0
- package/dist/khronos/args.d.ts +30 -0
- package/dist/khronos/args.d.ts.map +1 -0
- package/dist/khronos/args.js +171 -0
- package/dist/khronos/args.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +21 -0
- package/dist/khronos/jsdoc.d.ts.map +1 -0
- package/dist/khronos/jsdoc.js +72 -0
- package/dist/khronos/jsdoc.js.map +1 -0
- package/dist/khronos/model.d.ts +38 -0
- package/dist/khronos/model.d.ts.map +1 -0
- package/dist/khronos/model.js +167 -0
- package/dist/khronos/model.js.map +1 -0
- package/dist/khronos/modules.d.ts +12 -0
- package/dist/khronos/modules.d.ts.map +1 -0
- package/dist/khronos/modules.js +73 -0
- package/dist/khronos/modules.js.map +1 -0
- package/dist/khronos/param-pair.d.ts +11 -0
- package/dist/khronos/param-pair.d.ts.map +1 -0
- package/dist/khronos/param-pair.js +6 -0
- package/dist/khronos/param-pair.js.map +1 -0
- package/dist/khronos/parse.d.ts +8 -0
- package/dist/khronos/parse.d.ts.map +1 -0
- package/dist/khronos/parse.js +62 -0
- package/dist/khronos/parse.js.map +1 -0
- package/dist/khronos/pipeline.d.ts +24 -0
- package/dist/khronos/pipeline.d.ts.map +1 -0
- package/dist/khronos/pipeline.js +223 -0
- package/dist/khronos/pipeline.js.map +1 -0
- package/dist/khronos/plan.d.ts +81 -0
- package/dist/khronos/plan.d.ts.map +1 -0
- package/dist/khronos/plan.js +200 -0
- package/dist/khronos/plan.js.map +1 -0
- package/dist/khronos/render.d.ts +17 -0
- package/dist/khronos/render.d.ts.map +1 -0
- package/dist/khronos/render.js +205 -0
- package/dist/khronos/render.js.map +1 -0
- package/dist/khronos/select.d.ts +15 -0
- package/dist/khronos/select.d.ts.map +1 -0
- package/dist/khronos/select.js +56 -0
- package/dist/khronos/select.js.map +1 -0
- package/dist/react/element-config.d.ts +17 -0
- package/dist/react/element-config.d.ts.map +1 -0
- package/dist/react/element-config.js +61 -0
- package/dist/react/element-config.js.map +1 -0
- package/dist/runner.d.ts +38 -49
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +81 -54
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +11 -0
- package/dist/store/compile-store.d.ts.map +1 -0
- package/dist/store/compile-store.js +40 -0
- package/dist/store/compile-store.js.map +1 -0
- package/dist/store/gi/async.d.ts +5 -0
- package/dist/store/gi/async.d.ts.map +1 -0
- package/dist/store/gi/async.js +45 -0
- package/dist/store/gi/async.js.map +1 -0
- package/dist/store/gi/callables.d.ts +42 -0
- package/dist/store/gi/callables.d.ts.map +1 -0
- package/dist/store/gi/callables.js +264 -0
- package/dist/store/gi/callables.js.map +1 -0
- package/dist/store/gi/callback.d.ts +5 -0
- package/dist/store/gi/callback.d.ts.map +1 -0
- package/dist/store/gi/callback.js +17 -0
- package/dist/store/gi/callback.js.map +1 -0
- package/dist/store/gi/class-struct-record.d.ts +10 -0
- package/dist/store/gi/class-struct-record.d.ts.map +1 -0
- package/dist/store/gi/class-struct-record.js +52 -0
- package/dist/store/gi/class-struct-record.js.map +1 -0
- package/dist/store/gi/class.d.ts +5 -0
- package/dist/store/gi/class.d.ts.map +1 -0
- package/dist/store/gi/class.js +208 -0
- package/dist/store/gi/class.js.map +1 -0
- package/dist/store/gi/companion.d.ts +5 -0
- package/dist/store/gi/companion.d.ts.map +1 -0
- package/dist/store/gi/companion.js +16 -0
- package/dist/store/gi/companion.js.map +1 -0
- package/dist/store/gi/constant.d.ts +6 -0
- package/dist/store/gi/constant.d.ts.map +1 -0
- package/dist/store/gi/constant.js +35 -0
- package/dist/store/gi/constant.js.map +1 -0
- package/dist/store/gi/constructor-props.d.ts +6 -0
- package/dist/store/gi/constructor-props.d.ts.map +1 -0
- package/dist/store/gi/constructor-props.js +71 -0
- package/dist/store/gi/constructor-props.js.map +1 -0
- package/dist/store/gi/enum.d.ts +6 -0
- package/dist/store/gi/enum.d.ts.map +1 -0
- package/dist/store/gi/enum.js +41 -0
- package/dist/store/gi/enum.js.map +1 -0
- package/dist/store/gi/function.d.ts +9 -0
- package/dist/store/gi/function.d.ts.map +1 -0
- package/dist/store/gi/function.js +114 -0
- package/dist/store/gi/function.js.map +1 -0
- package/dist/store/gi/gtype-binding.d.ts +10 -0
- package/dist/store/gi/gtype-binding.d.ts.map +1 -0
- package/dist/store/gi/gtype-binding.js +24 -0
- package/dist/store/gi/gtype-binding.js.map +1 -0
- package/dist/store/gi/interface.d.ts +5 -0
- package/dist/store/gi/interface.d.ts.map +1 -0
- package/dist/store/gi/interface.js +117 -0
- package/dist/store/gi/interface.js.map +1 -0
- package/dist/store/gi/item-comparators.d.ts +7 -0
- package/dist/store/gi/item-comparators.d.ts.map +1 -0
- package/dist/store/gi/item-comparators.js +88 -0
- package/dist/store/gi/item-comparators.js.map +1 -0
- package/dist/store/gi/method.d.ts +24 -0
- package/dist/store/gi/method.d.ts.map +1 -0
- package/dist/store/gi/method.js +336 -0
- package/dist/store/gi/method.js.map +1 -0
- package/dist/store/gi/param-marshal.d.ts +10 -0
- package/dist/store/gi/param-marshal.d.ts.map +1 -0
- package/dist/store/gi/param-marshal.js +50 -0
- package/dist/store/gi/param-marshal.js.map +1 -0
- package/dist/store/gi/pipeline.d.ts +5 -0
- package/dist/store/gi/pipeline.d.ts.map +1 -0
- package/dist/store/gi/pipeline.js +95 -0
- package/dist/store/gi/pipeline.js.map +1 -0
- package/dist/store/gi/properties.d.ts +6 -0
- package/dist/store/gi/properties.d.ts.map +1 -0
- package/dist/store/gi/properties.js +32 -0
- package/dist/store/gi/properties.js.map +1 -0
- package/dist/store/gi/property-accessor.d.ts +27 -0
- package/dist/store/gi/property-accessor.d.ts.map +1 -0
- package/dist/store/gi/property-accessor.js +158 -0
- package/dist/store/gi/property-accessor.js.map +1 -0
- package/dist/store/gi/record-constructor.d.ts +6 -0
- package/dist/store/gi/record-constructor.d.ts.map +1 -0
- package/dist/store/gi/record-constructor.js +76 -0
- package/dist/store/gi/record-constructor.js.map +1 -0
- package/dist/store/gi/record-field-accessor.d.ts +25 -0
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
- package/dist/store/gi/record-field-accessor.js +360 -0
- package/dist/store/gi/record-field-accessor.js.map +1 -0
- package/dist/store/gi/record-layout.d.ts +15 -0
- package/dist/store/gi/record-layout.d.ts.map +1 -0
- package/dist/store/gi/record-layout.js +132 -0
- package/dist/store/gi/record-layout.js.map +1 -0
- package/dist/store/gi/record.d.ts +5 -0
- package/dist/store/gi/record.d.ts.map +1 -0
- package/dist/store/gi/record.js +65 -0
- package/dist/store/gi/record.js.map +1 -0
- package/dist/store/gi/registration.d.ts +16 -0
- package/dist/store/gi/registration.d.ts.map +1 -0
- package/dist/store/gi/registration.js +21 -0
- package/dist/store/gi/registration.js.map +1 -0
- package/dist/store/gi/return-wrap.d.ts +10 -0
- package/dist/store/gi/return-wrap.d.ts.map +1 -0
- package/dist/store/gi/return-wrap.js +67 -0
- package/dist/store/gi/return-wrap.js.map +1 -0
- package/dist/store/gi/runtime-override.d.ts +4 -0
- package/dist/store/gi/runtime-override.d.ts.map +1 -0
- package/dist/store/gi/runtime-override.js +32 -0
- package/dist/store/gi/runtime-override.js.map +1 -0
- package/dist/store/gi/signal.d.ts +6 -0
- package/dist/store/gi/signal.d.ts.map +1 -0
- package/dist/store/gi/signal.js +280 -0
- package/dist/store/gi/signal.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +5 -0
- package/dist/store/gi/vtable.d.ts.map +1 -0
- package/dist/store/gi/vtable.js +108 -0
- package/dist/store/gi/vtable.js.map +1 -0
- package/dist/store/gi-store.d.ts +10 -0
- package/dist/store/gi-store.d.ts.map +1 -0
- package/dist/store/gi-store.js +59 -0
- package/dist/store/gi-store.js.map +1 -0
- package/dist/store/jsx/element-components.d.ts +23 -0
- package/dist/store/jsx/element-components.d.ts.map +1 -0
- package/dist/store/jsx/element-components.js +86 -0
- package/dist/store/jsx/element-components.js.map +1 -0
- package/dist/store/jsx/element-prop-imports.d.ts +17 -0
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-imports.js +15 -0
- package/dist/store/jsx/element-prop-imports.js.map +1 -0
- package/dist/store/jsx/element-prop-types.d.ts +10 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-types.js +41 -0
- package/dist/store/jsx/element-prop-types.js.map +1 -0
- package/dist/store/jsx/gir-index.d.ts +16 -0
- package/dist/store/jsx/gir-index.d.ts.map +1 -0
- package/dist/store/jsx/gir-index.js +33 -0
- package/dist/store/jsx/gir-index.js.map +1 -0
- package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/jsx/intrinsic-elements.js +128 -0
- package/dist/store/jsx/intrinsic-elements.js.map +1 -0
- package/dist/store/jsx/jsx.d.ts +16 -0
- package/dist/store/jsx/jsx.d.ts.map +1 -0
- package/dist/store/jsx/jsx.js +242 -0
- package/dist/store/jsx/jsx.js.map +1 -0
- package/dist/store/jsx/metadata.d.ts +4 -0
- package/dist/store/jsx/metadata.d.ts.map +1 -0
- package/dist/store/jsx/metadata.js +253 -0
- package/dist/store/jsx/metadata.js.map +1 -0
- package/dist/store/jsx/pipeline.d.ts +21 -0
- package/dist/store/jsx/pipeline.d.ts.map +1 -0
- package/dist/store/jsx/pipeline.js +81 -0
- package/dist/store/jsx/pipeline.js.map +1 -0
- package/dist/store/jsx/props.d.ts +33 -0
- package/dist/store/jsx/props.d.ts.map +1 -0
- package/dist/store/jsx/props.js +158 -0
- package/dist/store/jsx/props.js.map +1 -0
- package/dist/store/jsx-store.d.ts +7 -0
- package/dist/store/jsx-store.d.ts.map +1 -0
- package/dist/store/jsx-store.js +26 -0
- package/dist/store/jsx-store.js.map +1 -0
- package/dist/store/store-fs.d.ts +43 -0
- package/dist/store/store-fs.d.ts.map +1 -0
- package/dist/store/store-fs.js +73 -0
- package/dist/store/store-fs.js.map +1 -0
- package/dist/writer/context.d.ts +17 -0
- package/dist/writer/context.d.ts.map +1 -0
- package/dist/writer/context.js +50 -0
- package/dist/writer/context.js.map +1 -0
- package/dist/writer/doc.d.ts +3 -0
- package/dist/writer/doc.d.ts.map +1 -0
- package/dist/writer/doc.js +18 -0
- package/dist/writer/doc.js.map +1 -0
- package/dist/writer/emit.d.ts +9 -0
- package/dist/writer/emit.d.ts.map +1 -0
- package/dist/writer/emit.js +24 -0
- package/dist/writer/emit.js.map +1 -0
- package/dist/writer/gtk-doc.d.ts +3 -0
- package/dist/writer/gtk-doc.d.ts.map +1 -0
- package/dist/writer/gtk-doc.js +78 -0
- package/dist/writer/gtk-doc.js.map +1 -0
- package/dist/writer/imports.d.ts +12 -0
- package/dist/writer/imports.d.ts.map +1 -0
- package/dist/writer/imports.js +61 -0
- package/dist/writer/imports.js.map +1 -0
- package/dist/writer/module.d.ts +16 -0
- package/dist/writer/module.d.ts.map +1 -0
- package/dist/writer/module.js +53 -0
- package/dist/writer/module.js.map +1 -0
- package/dist/xml.d.ts +4 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +10 -0
- package/dist/xml.js.map +1 -0
- package/overrides/cairo/context.ts.ejs +1269 -0
- package/overrides/cairo/font-face.ts.ejs +151 -0
- package/overrides/cairo/font-options.ts.ejs +199 -0
- package/overrides/cairo/image-surface.ts.ejs +132 -0
- package/overrides/cairo/index.ts.ejs +22 -0
- package/overrides/cairo/matrix.ts.ejs +171 -0
- package/overrides/cairo/pattern.ts.ejs +476 -0
- package/overrides/cairo/recording-surface.ts.ejs +102 -0
- package/overrides/cairo/region.ts.ejs +237 -0
- package/overrides/cairo/scaled-font.ts.ejs +330 -0
- package/overrides/cairo/surface.ts.ejs +296 -0
- package/overrides/gdk/index.ts.ejs +2 -0
- package/overrides/gdk/rgba.ts.ejs +11 -0
- package/overrides/gobject/index.ts.ejs +29 -0
- package/overrides/gobject/object.ts.ejs +51 -0
- package/overrides/gobject/value.ts.ejs +17 -0
- package/overrides/graphene/index.ts.ejs +2 -0
- package/overrides/graphene/structs.ts.ejs +37 -0
- package/package.json +21 -15
- package/src/analysis/descriptor-render.ts +723 -0
- package/src/analysis/descriptor.ts +300 -0
- package/src/analysis/inheritance.ts +430 -0
- package/src/analysis/param-structure.ts +258 -0
- package/src/analysis/ts-type.ts +174 -0
- package/src/compile.ts +179 -0
- package/src/docs/api-reference.ts +557 -0
- package/src/docs/element-page.ts +281 -0
- package/src/docs/pipeline.ts +241 -0
- package/src/docs/render.ts +255 -0
- package/src/docs/symbol-page.ts +589 -0
- package/src/fingerprint.ts +144 -35
- package/src/gi.ts +26 -0
- package/src/gir/ancestry.ts +53 -0
- package/src/gir/callback.ts +22 -24
- package/src/gir/class.ts +39 -61
- package/src/gir/enum.ts +25 -41
- package/src/gir/field.ts +51 -37
- package/src/gir/function.ts +44 -59
- package/src/gir/gir-path.ts +73 -0
- package/src/gir/libraries.ts +102 -0
- package/src/gir/library.ts +351 -0
- package/src/gir/namespace.ts +109 -88
- package/src/gir/nullable-overrides.ts +5 -0
- package/src/gir/parameter.ts +111 -102
- package/src/gir/parse.ts +124 -121
- package/src/gir/primitives.ts +43 -63
- package/src/gir/property.ts +33 -33
- package/src/gir/record.ts +55 -0
- package/src/gir/size.ts +93 -107
- package/src/gir/type-id.ts +64 -0
- package/src/gir/type-ref.ts +77 -146
- package/src/gir/type.ts +18 -0
- package/src/index.ts +27 -15
- package/src/jsx.ts +70 -0
- package/src/khronos/args.ts +271 -0
- package/src/khronos/jsdoc.ts +114 -0
- package/src/khronos/model.ts +267 -0
- package/src/khronos/modules.ts +115 -0
- package/src/khronos/param-pair.ts +14 -0
- package/src/khronos/parse.ts +86 -0
- package/src/khronos/pipeline.ts +337 -0
- package/src/khronos/plan.ts +340 -0
- package/src/khronos/registry/LICENSE +202 -0
- package/src/khronos/registry/gl.xml +47748 -0
- package/src/khronos/render.ts +330 -0
- package/src/khronos/select.ts +97 -0
- package/src/react/element-config.ts +91 -0
- package/src/runner.ts +153 -80
- package/src/store/compile-store.ts +55 -0
- package/src/store/gi/async.ts +69 -0
- package/src/store/gi/callables.ts +518 -0
- package/src/store/gi/callback.ts +24 -0
- package/src/store/gi/class-struct-record.ts +72 -0
- package/src/store/gi/class.ts +334 -0
- package/src/store/gi/companion.ts +22 -0
- package/src/store/gi/constant.ts +58 -0
- package/src/store/gi/constructor-props.ts +108 -0
- package/src/store/gi/enum.ts +64 -0
- package/src/store/gi/function.ts +173 -0
- package/src/store/gi/gtype-binding.ts +46 -0
- package/src/store/gi/interface.ts +222 -0
- package/src/store/gi/item-comparators.ts +138 -0
- package/src/store/gi/method.ts +634 -0
- package/src/store/gi/param-marshal.ts +71 -0
- package/src/store/gi/pipeline.ts +135 -0
- package/src/store/gi/properties.ts +50 -0
- package/src/store/gi/property-accessor.ts +302 -0
- package/src/store/gi/record-constructor.ts +119 -0
- package/src/store/gi/record-field-accessor.ts +607 -0
- package/src/store/gi/record-layout.ts +221 -0
- package/src/store/gi/record.ts +89 -0
- package/src/store/gi/registration.ts +44 -0
- package/src/store/gi/return-wrap.ts +100 -0
- package/src/store/gi/runtime-override.ts +46 -0
- package/src/store/gi/signal.ts +450 -0
- package/src/store/gi/vtable.ts +175 -0
- package/src/store/gi-store.ts +92 -0
- package/src/store/jsx/element-components.ts +152 -0
- package/src/store/jsx/element-prop-imports.ts +24 -0
- package/src/store/jsx/element-prop-types.ts +59 -0
- package/src/store/jsx/gir-index.ts +62 -0
- package/src/store/jsx/intrinsic-elements.ts +262 -0
- package/src/store/jsx/jsx.ts +408 -0
- package/src/store/jsx/metadata.ts +385 -0
- package/src/store/jsx/pipeline.ts +145 -0
- package/src/store/jsx/props.ts +274 -0
- package/src/store/jsx-store.ts +39 -0
- package/src/store/store-fs.ts +128 -0
- package/src/writer/context.ts +67 -0
- package/src/writer/doc.ts +25 -0
- package/src/writer/emit.ts +35 -0
- package/src/writer/gtk-doc.ts +101 -0
- package/src/writer/imports.ts +94 -0
- package/src/writer/module.ts +69 -0
- package/src/xml.ts +12 -0
- package/LICENSE +0 -373
- package/dist/dsl/context.d.ts +0 -104
- package/dist/dsl/context.d.ts.map +0 -1
- package/dist/dsl/context.js +0 -140
- package/dist/dsl/context.js.map +0 -1
- package/dist/dsl/emit.d.ts +0 -28
- package/dist/dsl/emit.d.ts.map +0 -1
- package/dist/dsl/emit.js +0 -41
- package/dist/dsl/emit.js.map +0 -1
- package/dist/dsl/identifier.d.ts +0 -28
- package/dist/dsl/identifier.d.ts.map +0 -1
- package/dist/dsl/identifier.js +0 -45
- package/dist/dsl/identifier.js.map +0 -1
- package/dist/dsl/imports.d.ts +0 -58
- package/dist/dsl/imports.d.ts.map +0 -1
- package/dist/dsl/imports.js +0 -107
- package/dist/dsl/imports.js.map +0 -1
- package/dist/dsl/module.d.ts +0 -53
- package/dist/dsl/module.d.ts.map +0 -1
- package/dist/dsl/module.js +0 -76
- package/dist/dsl/module.js.map +0 -1
- package/dist/ffi/pipeline.d.ts +0 -19
- package/dist/ffi/pipeline.d.ts.map +0 -1
- package/dist/ffi/pipeline.js +0 -107
- package/dist/ffi/pipeline.js.map +0 -1
- package/dist/gi-store.d.ts +0 -34
- package/dist/gi-store.d.ts.map +0 -1
- package/dist/gi-store.js +0 -154
- package/dist/gi-store.js.map +0 -1
- package/dist/gir/boxed.d.ts +0 -66
- package/dist/gir/boxed.d.ts.map +0 -1
- package/dist/gir/boxed.js +0 -49
- package/dist/gir/boxed.js.map +0 -1
- package/dist/gir/qualified-name.d.ts +0 -37
- package/dist/gir/qualified-name.d.ts.map +0 -1
- package/dist/gir/qualified-name.js +0 -39
- package/dist/gir/qualified-name.js.map +0 -1
- package/dist/gir/qualify.d.ts +0 -32
- package/dist/gir/qualify.d.ts.map +0 -1
- package/dist/gir/qualify.js +0 -60
- package/dist/gir/qualify.js.map +0 -1
- package/dist/gir/repository.d.ts +0 -82
- package/dist/gir/repository.d.ts.map +0 -1
- package/dist/gir/repository.js +0 -122
- package/dist/gir/repository.js.map +0 -1
- package/dist/gir/signal.d.ts +0 -22
- package/dist/gir/signal.d.ts.map +0 -1
- package/dist/gir/signal.js +0 -20
- package/dist/gir/signal.js.map +0 -1
- package/dist/jsx-store.d.ts +0 -22
- package/dist/jsx-store.d.ts.map +0 -1
- package/dist/jsx-store.js +0 -40
- package/dist/jsx-store.js.map +0 -1
- package/dist/react/compounds-meta.d.ts +0 -18
- package/dist/react/compounds-meta.d.ts.map +0 -1
- package/dist/react/compounds-meta.js +0 -93
- package/dist/react/compounds-meta.js.map +0 -1
- package/dist/react/compounds.d.ts +0 -27
- package/dist/react/compounds.d.ts.map +0 -1
- package/dist/react/compounds.js +0 -164
- package/dist/react/compounds.js.map +0 -1
- package/dist/react/internal.d.ts +0 -14
- package/dist/react/internal.d.ts.map +0 -1
- package/dist/react/internal.js +0 -79
- package/dist/react/internal.js.map +0 -1
- package/dist/react/jsx.d.ts +0 -22
- package/dist/react/jsx.d.ts.map +0 -1
- package/dist/react/jsx.js +0 -134
- package/dist/react/jsx.js.map +0 -1
- package/dist/react/pipeline.d.ts +0 -13
- package/dist/react/pipeline.d.ts.map +0 -1
- package/dist/react/pipeline.js +0 -25
- package/dist/react/pipeline.js.map +0 -1
- package/dist/react/props.d.ts +0 -38
- package/dist/react/props.d.ts.map +0 -1
- package/dist/react/props.js +0 -231
- package/dist/react/props.js.map +0 -1
- package/dist/react/slot-props.d.ts +0 -10
- package/dist/react/slot-props.d.ts.map +0 -1
- package/dist/react/slot-props.js +0 -56
- package/dist/react/slot-props.js.map +0 -1
- package/dist/react/widgets.d.ts +0 -83
- package/dist/react/widgets.d.ts.map +0 -1
- package/dist/react/widgets.js +0 -152
- package/dist/react/widgets.js.map +0 -1
- package/dist/store-fs.d.ts +0 -109
- package/dist/store-fs.d.ts.map +0 -1
- package/dist/store-fs.js +0 -98
- package/dist/store-fs.js.map +0 -1
- package/dist/transpile.d.ts +0 -32
- package/dist/transpile.d.ts.map +0 -1
- package/dist/transpile.js +0 -63
- package/dist/transpile.js.map +0 -1
- package/dist/typecheck-store.d.ts +0 -41
- package/dist/typecheck-store.d.ts.map +0 -1
- package/dist/typecheck-store.js +0 -102
- package/dist/typecheck-store.js.map +0 -1
- package/dist/writers/alias.d.ts +0 -13
- package/dist/writers/alias.d.ts.map +0 -1
- package/dist/writers/alias.js +0 -17
- package/dist/writers/alias.js.map +0 -1
- package/dist/writers/async.d.ts +0 -22
- package/dist/writers/async.d.ts.map +0 -1
- package/dist/writers/async.js +0 -48
- package/dist/writers/async.js.map +0 -1
- package/dist/writers/boxed-constructor.d.ts +0 -26
- package/dist/writers/boxed-constructor.d.ts.map +0 -1
- package/dist/writers/boxed-constructor.js +0 -85
- package/dist/writers/boxed-constructor.js.map +0 -1
- package/dist/writers/boxed-field-accessor.d.ts +0 -18
- package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
- package/dist/writers/boxed-field-accessor.js +0 -260
- package/dist/writers/boxed-field-accessor.js.map +0 -1
- package/dist/writers/boxed-layout.d.ts +0 -27
- package/dist/writers/boxed-layout.d.ts.map +0 -1
- package/dist/writers/boxed-layout.js +0 -128
- package/dist/writers/boxed-layout.js.map +0 -1
- package/dist/writers/boxed.d.ts +0 -20
- package/dist/writers/boxed.d.ts.map +0 -1
- package/dist/writers/boxed.js +0 -71
- package/dist/writers/boxed.js.map +0 -1
- package/dist/writers/callables.d.ts +0 -124
- package/dist/writers/callables.d.ts.map +0 -1
- package/dist/writers/callables.js +0 -283
- package/dist/writers/callables.js.map +0 -1
- package/dist/writers/callback.d.ts +0 -16
- package/dist/writers/callback.d.ts.map +0 -1
- package/dist/writers/callback.js +0 -38
- package/dist/writers/callback.js.map +0 -1
- package/dist/writers/class-struct-record.d.ts +0 -31
- package/dist/writers/class-struct-record.d.ts.map +0 -1
- package/dist/writers/class-struct-record.js +0 -67
- package/dist/writers/class-struct-record.js.map +0 -1
- package/dist/writers/class-struct.d.ts +0 -22
- package/dist/writers/class-struct.d.ts.map +0 -1
- package/dist/writers/class-struct.js +0 -85
- package/dist/writers/class-struct.js.map +0 -1
- package/dist/writers/class.d.ts +0 -16
- package/dist/writers/class.d.ts.map +0 -1
- package/dist/writers/class.js +0 -307
- package/dist/writers/class.js.map +0 -1
- package/dist/writers/constant.d.ts +0 -15
- package/dist/writers/constant.d.ts.map +0 -1
- package/dist/writers/constant.js +0 -23
- package/dist/writers/constant.js.map +0 -1
- package/dist/writers/constants.d.ts +0 -15
- package/dist/writers/constants.d.ts.map +0 -1
- package/dist/writers/constants.js +0 -23
- package/dist/writers/constants.js.map +0 -1
- package/dist/writers/constructor-props.d.ts +0 -32
- package/dist/writers/constructor-props.d.ts.map +0 -1
- package/dist/writers/constructor-props.js +0 -110
- package/dist/writers/constructor-props.js.map +0 -1
- package/dist/writers/enum.d.ts +0 -21
- package/dist/writers/enum.d.ts.map +0 -1
- package/dist/writers/enum.js +0 -48
- package/dist/writers/enum.js.map +0 -1
- package/dist/writers/function.d.ts +0 -40
- package/dist/writers/function.d.ts.map +0 -1
- package/dist/writers/function.js +0 -127
- package/dist/writers/function.js.map +0 -1
- package/dist/writers/gtype-binding.d.ts +0 -19
- package/dist/writers/gtype-binding.d.ts.map +0 -1
- package/dist/writers/gtype-binding.js +0 -40
- package/dist/writers/gtype-binding.js.map +0 -1
- package/dist/writers/inheritance.d.ts +0 -48
- package/dist/writers/inheritance.d.ts.map +0 -1
- package/dist/writers/inheritance.js +0 -90
- package/dist/writers/inheritance.js.map +0 -1
- package/dist/writers/interface.d.ts +0 -16
- package/dist/writers/interface.d.ts.map +0 -1
- package/dist/writers/interface.js +0 -155
- package/dist/writers/interface.js.map +0 -1
- package/dist/writers/method.d.ts +0 -150
- package/dist/writers/method.d.ts.map +0 -1
- package/dist/writers/method.js +0 -510
- package/dist/writers/method.js.map +0 -1
- package/dist/writers/param-classify.d.ts +0 -93
- package/dist/writers/param-classify.d.ts.map +0 -1
- package/dist/writers/param-classify.js +0 -163
- package/dist/writers/param-classify.js.map +0 -1
- package/dist/writers/property-accessor.d.ts +0 -19
- package/dist/writers/property-accessor.d.ts.map +0 -1
- package/dist/writers/property-accessor.js +0 -117
- package/dist/writers/property-accessor.js.map +0 -1
- package/dist/writers/registration.d.ts +0 -27
- package/dist/writers/registration.d.ts.map +0 -1
- package/dist/writers/registration.js +0 -30
- package/dist/writers/registration.js.map +0 -1
- package/dist/writers/return-wrap.d.ts +0 -39
- package/dist/writers/return-wrap.d.ts.map +0 -1
- package/dist/writers/return-wrap.js +0 -152
- package/dist/writers/return-wrap.js.map +0 -1
- package/dist/writers/runtime-override.d.ts +0 -18
- package/dist/writers/runtime-override.d.ts.map +0 -1
- package/dist/writers/runtime-override.js +0 -44
- package/dist/writers/runtime-override.js.map +0 -1
- package/dist/writers/signal.d.ts +0 -21
- package/dist/writers/signal.d.ts.map +0 -1
- package/dist/writers/signal.js +0 -260
- package/dist/writers/signal.js.map +0 -1
- package/dist/writers/ts-type.d.ts +0 -50
- package/dist/writers/ts-type.d.ts.map +0 -1
- package/dist/writers/ts-type.js +0 -75
- package/dist/writers/ts-type.js.map +0 -1
- package/dist/writers/types-ts.d.ts +0 -27
- package/dist/writers/types-ts.d.ts.map +0 -1
- package/dist/writers/types-ts.js +0 -97
- package/dist/writers/types-ts.js.map +0 -1
- package/dist/writers/value.d.ts +0 -89
- package/dist/writers/value.d.ts.map +0 -1
- package/dist/writers/value.js +0 -402
- package/dist/writers/value.js.map +0 -1
- package/src/dsl/context.ts +0 -146
- package/src/dsl/emit.ts +0 -42
- package/src/dsl/identifier.ts +0 -52
- package/src/dsl/imports.ts +0 -109
- package/src/dsl/module.ts +0 -75
- package/src/ffi/pipeline.ts +0 -113
- package/src/gi-store.ts +0 -199
- package/src/gir/boxed.ts +0 -94
- package/src/gir/qualified-name.ts +0 -55
- package/src/gir/qualify.ts +0 -64
- package/src/gir/repository.ts +0 -149
- package/src/gir/signal.ts +0 -36
- package/src/jsx-store.ts +0 -53
- package/src/react/compounds-meta.ts +0 -99
- package/src/react/compounds.ts +0 -204
- package/src/react/internal.ts +0 -91
- package/src/react/jsx.ts +0 -155
- package/src/react/pipeline.ts +0 -29
- package/src/react/props.ts +0 -307
- package/src/react/slot-props.ts +0 -57
- package/src/react/widgets.ts +0 -185
- package/src/store-fs.ts +0 -157
- package/src/transpile.ts +0 -80
- package/src/typecheck-store.ts +0 -136
- package/src/writers/alias.ts +0 -19
- package/src/writers/async.ts +0 -44
- package/src/writers/boxed-constructor.ts +0 -105
- package/src/writers/boxed-field-accessor.ts +0 -306
- package/src/writers/boxed-layout.ts +0 -166
- package/src/writers/boxed.ts +0 -77
- package/src/writers/callables.ts +0 -339
- package/src/writers/callback.ts +0 -40
- package/src/writers/class-struct-record.ts +0 -75
- package/src/writers/class-struct.ts +0 -96
- package/src/writers/class.ts +0 -384
- package/src/writers/constant.ts +0 -29
- package/src/writers/constructor-props.ts +0 -130
- package/src/writers/enum.ts +0 -53
- package/src/writers/function.ts +0 -136
- package/src/writers/gtype-binding.ts +0 -48
- package/src/writers/inheritance.ts +0 -104
- package/src/writers/interface.ts +0 -168
- package/src/writers/method.ts +0 -678
- package/src/writers/param-classify.ts +0 -178
- package/src/writers/property-accessor.ts +0 -139
- package/src/writers/registration.ts +0 -42
- package/src/writers/return-wrap.ts +0 -180
- package/src/writers/runtime-override.ts +0 -59
- package/src/writers/signal.ts +0 -318
- package/src/writers/ts-type.ts +0 -115
- package/src/writers/value.ts +0 -485
package/dist/writers/value.d.ts
DELETED
|
@@ -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"}
|
package/dist/writers/value.js
DELETED
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
import { quote } from "@gtkx/utils";
|
|
2
|
-
import { joinArgs } from "../dsl/emit.js";
|
|
3
|
-
import { callbackFromNode } from "../gir/callback.js";
|
|
4
|
-
import { isInoutParameter, isOutParameter } from "../gir/parameter.js";
|
|
5
|
-
import { qualifyTypeRef } from "../gir/qualify.js";
|
|
6
|
-
import { computeBoxedFieldSlots } from "./boxed-layout.js";
|
|
7
|
-
/**
|
|
8
|
-
* Inline byte sizes for boxed value types whose GIR record is opaque, so the
|
|
9
|
-
* field layout cannot be computed but the type is still passed by value in
|
|
10
|
-
* arrays (e.g. the `GValue` cells `g_signal_emitv` consumes).
|
|
11
|
-
*/
|
|
12
|
-
const HARDCODED_INLINE_ELEMENT_SIZES = new Map([["GObject.Value", 24]]);
|
|
13
|
-
/**
|
|
14
|
-
* Maps a GIR transfer-ownership value to the FFI runtime's ownership
|
|
15
|
-
* vocabulary.
|
|
16
|
-
*
|
|
17
|
-
* The runtime treats `"none"` as `"borrowed"` for incoming values and as
|
|
18
|
-
* `"full"` for return values that already own the pointer. Callers pass
|
|
19
|
-
* the GIR string directly; this helper does the translation.
|
|
20
|
-
*
|
|
21
|
-
* @param transfer - GIR transfer-ownership (`"none"`, `"full"`, `"container"`)
|
|
22
|
-
*/
|
|
23
|
-
const ffiOwnership = (transfer) => {
|
|
24
|
-
if (transfer === "full")
|
|
25
|
-
return "full";
|
|
26
|
-
if (transfer === "container")
|
|
27
|
-
return "full";
|
|
28
|
-
return "borrowed";
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Derives the transfer of a container's elements from the container's own
|
|
32
|
-
* transfer. A `"container"` transfer owns the container but borrows its
|
|
33
|
-
* elements, so they marshal as `"none"`; otherwise elements inherit the
|
|
34
|
-
* container's transfer.
|
|
35
|
-
*
|
|
36
|
-
* @param transfer - The container's GIR transfer-ownership
|
|
37
|
-
*/
|
|
38
|
-
const deriveElementTransfer = (transfer) => transfer === "container" ? "none" : transfer;
|
|
39
|
-
/**
|
|
40
|
-
* Renders a TypeScript expression that materialises the FFI type
|
|
41
|
-
* descriptor for `ref`.
|
|
42
|
-
*
|
|
43
|
-
* @param context - The module context (used for cross-namespace imports)
|
|
44
|
-
* @param ref - The GIR type reference, or `undefined` for void
|
|
45
|
-
* @param transfer - GIR transfer-ownership conveyed onto the descriptor
|
|
46
|
-
* @param argIndexOffset - Shift applied to a sized array's length-parameter
|
|
47
|
-
* index so it addresses the FFI argument list (which includes the
|
|
48
|
-
* instance receiver) rather than the GIR parameter list
|
|
49
|
-
*/
|
|
50
|
-
export const renderFfiType = (context, ref, transfer = "none", argIndexOffset = 0) => {
|
|
51
|
-
if (ref === undefined)
|
|
52
|
-
return "t.void";
|
|
53
|
-
const ownership = ffiOwnership(transfer);
|
|
54
|
-
switch (ref.kind) {
|
|
55
|
-
case "primitive":
|
|
56
|
-
return primitiveExpression(ref.category, ownership);
|
|
57
|
-
case "varargs":
|
|
58
|
-
return "t.void";
|
|
59
|
-
case "callback":
|
|
60
|
-
return "t.void";
|
|
61
|
-
case "named":
|
|
62
|
-
return namedExpression(context, ref, ownership);
|
|
63
|
-
case "array":
|
|
64
|
-
return arrayExpression(context, ref, transfer, argIndexOffset);
|
|
65
|
-
case "list": {
|
|
66
|
-
if (ref.flavor === "gbytearray")
|
|
67
|
-
return `t.byteArray(${quote(ownership)})`;
|
|
68
|
-
const element = renderFfiType(context, ref.element, deriveElementTransfer(transfer), argIndexOffset);
|
|
69
|
-
const helper = LIST_HELPERS[ref.flavor];
|
|
70
|
-
return `t.${helper}(${element}, ${quote(ownership)})`;
|
|
71
|
-
}
|
|
72
|
-
case "hashtable": {
|
|
73
|
-
const elementTransfer = deriveElementTransfer(transfer);
|
|
74
|
-
const key = renderFfiType(context, ref.key, elementTransfer, argIndexOffset);
|
|
75
|
-
const value = renderFfiType(context, ref.value, elementTransfer, argIndexOffset);
|
|
76
|
-
return `t.hashTable(${key}, ${value}, ${quote(ownership)})`;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Resolves a parameter type reference to its callback declaration, whether
|
|
82
|
-
* declared inline (`<callback>` child) or by name (a namespace-level
|
|
83
|
-
* `<callback>`). Returns `undefined` for non-callback references.
|
|
84
|
-
*
|
|
85
|
-
* @param context - The module context
|
|
86
|
-
* @param ref - The parameter type reference
|
|
87
|
-
*/
|
|
88
|
-
export const resolveCallbackType = (context, ref) => {
|
|
89
|
-
if (ref === undefined)
|
|
90
|
-
return undefined;
|
|
91
|
-
if (ref.kind === "callback")
|
|
92
|
-
return { callback: callbackFromNode(ref.callback), namespaceName: context.namespace.name };
|
|
93
|
-
if (ref.kind !== "named")
|
|
94
|
-
return undefined;
|
|
95
|
-
const owner = ref.namespaceName ?? context.namespace.name;
|
|
96
|
-
const resolved = context.repository.resolveNamed(owner, ref.typeName);
|
|
97
|
-
if (resolved === undefined || resolved.kind !== "callback")
|
|
98
|
-
return undefined;
|
|
99
|
-
return { callback: resolved.value, namespaceName: resolved.namespace.name };
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Whether a type reference is a scalar the native trampoline can read and
|
|
103
|
-
* write through a `{ value }` cell: a non-string, non-void primitive, an enum or
|
|
104
|
-
* flags type, or an alias resolving to one. Pointer-shaped types (strings,
|
|
105
|
-
* objects, boxed records, arrays) are excluded — their out-parameter slots may
|
|
106
|
-
* be uninitialized, so reading the incoming value would be unsound.
|
|
107
|
-
*
|
|
108
|
-
* @param repository - The GIR repository
|
|
109
|
-
* @param namespaceName - The namespace the reference is resolved against
|
|
110
|
-
* @param ref - The type reference
|
|
111
|
-
*/
|
|
112
|
-
export const isScalarRef = (repository, namespaceName, ref) => {
|
|
113
|
-
if (ref === undefined)
|
|
114
|
-
return false;
|
|
115
|
-
if (ref.kind === "primitive")
|
|
116
|
-
return ref.category !== "string" && ref.category !== "void";
|
|
117
|
-
if (ref.kind !== "named")
|
|
118
|
-
return false;
|
|
119
|
-
const resolved = repository.resolveNamed(ref.namespaceName ?? namespaceName, ref.typeName);
|
|
120
|
-
if (resolved === undefined)
|
|
121
|
-
return false;
|
|
122
|
-
if (resolved.kind === "enum")
|
|
123
|
-
return true;
|
|
124
|
-
if (resolved.kind === "alias") {
|
|
125
|
-
return resolved.targetRef !== undefined && isScalarRef(repository, resolved.namespace.name, resolved.targetRef);
|
|
126
|
-
}
|
|
127
|
-
return false;
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* Whether an inout parameter marshals through a readable-and-writable
|
|
131
|
-
* `{ value }` cell rather than being passed by handle and mutated in place.
|
|
132
|
-
*
|
|
133
|
-
* True for scalar inout parameters (see {@link isScalarRef}): the native
|
|
134
|
-
* trampoline seeds the cell with the incoming value, the handler returns its
|
|
135
|
-
* replacement in the tuple, and the cell is flushed back through the pointer.
|
|
136
|
-
* Handle-passing inout parameters (objects, interfaces, boxed records) stay
|
|
137
|
-
* plain arguments the handler mutates directly.
|
|
138
|
-
*
|
|
139
|
-
* @param context - The module context
|
|
140
|
-
* @param parameter - The parameter to test
|
|
141
|
-
*/
|
|
142
|
-
export const isCellInout = (context, parameter) => isInoutParameter(parameter) && isScalarRef(context.repository, context.namespace.name, parameter.type);
|
|
143
|
-
/**
|
|
144
|
-
* Renders the `t.trampoline(...)` FFI descriptor for a callback parameter.
|
|
145
|
-
*
|
|
146
|
-
* The trampoline carries the callback's own argument and return FFI types,
|
|
147
|
-
* the index of its `user_data` slot, and the owning parameter's `scope` plus
|
|
148
|
-
* whether a paired `GDestroyNotify` is present. The native marshaller folds
|
|
149
|
-
* the C-level callback, `user_data`, and destroy arguments into this single
|
|
150
|
-
* descriptor. Returns `undefined` when `ref` is not a callback.
|
|
151
|
-
*
|
|
152
|
-
* @param context - The module context
|
|
153
|
-
* @param ref - The parameter type reference
|
|
154
|
-
* @param owningParameter - The parameter that carries the callback, for scope/destroy
|
|
155
|
-
*/
|
|
156
|
-
export const renderTrampolineType = (context, ref, owningParameter) => {
|
|
157
|
-
const resolved = resolveCallbackType(context, ref);
|
|
158
|
-
if (resolved === undefined)
|
|
159
|
-
return undefined;
|
|
160
|
-
const { callback, namespaceName } = resolved;
|
|
161
|
-
const argTypes = callback.parameters.map((parameter) => {
|
|
162
|
-
const ffi = renderFfiType(context, qualifyTypeRef(parameter.type, namespaceName), parameter.transferOwnership);
|
|
163
|
-
return isOutParameter(parameter) || isCellInout(context, parameter) ? `t.ref(${ffi})` : ffi;
|
|
164
|
-
});
|
|
165
|
-
let userDataIndex;
|
|
166
|
-
callback.parameters.forEach((parameter, index) => {
|
|
167
|
-
if (parameter.name === "user_data" || parameter.name === "data")
|
|
168
|
-
userDataIndex = index;
|
|
169
|
-
});
|
|
170
|
-
const returnRef = qualifyTypeRef(callback.returnValue.type, namespaceName);
|
|
171
|
-
const isVoid = returnRef === undefined || (returnRef.kind === "primitive" && returnRef.category === "void");
|
|
172
|
-
const returnType = isVoid ? "t.void" : renderFfiType(context, returnRef, callback.returnValue.transferOwnership);
|
|
173
|
-
const options = [];
|
|
174
|
-
if (owningParameter.destroyIndex !== undefined)
|
|
175
|
-
options.push("hasDestroy: true");
|
|
176
|
-
if (userDataIndex !== undefined)
|
|
177
|
-
options.push(`userDataIndex: ${userDataIndex}`);
|
|
178
|
-
if (owningParameter.scope !== undefined)
|
|
179
|
-
options.push(`scope: ${quote(owningParameter.scope)}`);
|
|
180
|
-
const optionsArg = options.length > 0 ? `, { ${options.join(", ")} }` : "";
|
|
181
|
-
return `t.trampoline([${argTypes.join(", ")}], ${returnType}${optionsArg})`;
|
|
182
|
-
};
|
|
183
|
-
const LIST_HELPERS = {
|
|
184
|
-
glist: "list",
|
|
185
|
-
gslist: "slist",
|
|
186
|
-
gptrarray: "ptrArray",
|
|
187
|
-
garray: "gArray",
|
|
188
|
-
gbytearray: "byteArray",
|
|
189
|
-
};
|
|
190
|
-
const primitiveExpression = (category, ownership) => {
|
|
191
|
-
if (category === "void")
|
|
192
|
-
return "t.void";
|
|
193
|
-
if (category === "string")
|
|
194
|
-
return `t.string(${quote(ownership)})`;
|
|
195
|
-
if (category === "pointer")
|
|
196
|
-
return "t.uint64";
|
|
197
|
-
return `t.${category}`;
|
|
198
|
-
};
|
|
199
|
-
const namedExpression = (context, ref, ownership) => {
|
|
200
|
-
const namespaceName = ref.namespaceName ?? context.namespace.name;
|
|
201
|
-
const resolved = context.repository.resolveNamed(namespaceName, ref.typeName);
|
|
202
|
-
if (resolved === undefined) {
|
|
203
|
-
return `t.object(${quote(ownership)})`;
|
|
204
|
-
}
|
|
205
|
-
return expressionForResolved(context, resolved, ownership);
|
|
206
|
-
};
|
|
207
|
-
/**
|
|
208
|
-
* Ref/unref functions for fundamental types whose GIR record omits
|
|
209
|
-
* `glib:ref-func`/`glib:unref-func` but which are nonetheless ref-counted
|
|
210
|
-
* fundamentals (their `GType` is not a boxed type, so `g_boxed_free` aborts).
|
|
211
|
-
* Keyed by GLib type name.
|
|
212
|
-
*/
|
|
213
|
-
const INTRINSIC_FUNDAMENTAL_FUNCS = new Map([
|
|
214
|
-
["GVariant", { ref: "g_variant_ref_sink", unref: "g_variant_unref" }],
|
|
215
|
-
]);
|
|
216
|
-
/**
|
|
217
|
-
* Translates a GLib ref-func into the function the FFI runtime calls to add an
|
|
218
|
-
* independent reference.
|
|
219
|
-
*
|
|
220
|
-
* The runtime references a fundamental to make a defensive copy of a borrowed
|
|
221
|
-
* return, to clone a handle, or to hand a callee its own reference for a
|
|
222
|
-
* transfer-full argument — each must *add* a reference. GObject registers
|
|
223
|
-
* `*_ref_sink` (e.g. `g_param_spec_ref_sink`, `g_variant_ref_sink`) as the
|
|
224
|
-
* ref-func for floating types, but a sink only clears the floating flag on a
|
|
225
|
-
* floating instance and adds no reference, so a wrapper built from it would
|
|
226
|
-
* later unref a reference it never took and abort. The plain `*_ref`
|
|
227
|
-
* counterpart adds a reference for floating and non-floating instances alike.
|
|
228
|
-
*/
|
|
229
|
-
const referenceAddingFunc = (refFunc) => refFunc.endsWith("_ref_sink") ? refFunc.slice(0, -"_sink".length) : refFunc;
|
|
230
|
-
const renderFundamental = (descriptor) => {
|
|
231
|
-
const { lib, refFunc, unrefFunc, glibTypeName, ownership } = descriptor;
|
|
232
|
-
const parts = [`ownership: ${quote(ownership)}`];
|
|
233
|
-
if (glibTypeName !== undefined)
|
|
234
|
-
parts.push(`typeName: ${quote(glibTypeName)}`);
|
|
235
|
-
return `t.fundamental(${quote(lib)}, ${quote(referenceAddingFunc(refFunc))}, ${quote(unrefFunc)}, { ${parts.join(", ")} })`;
|
|
236
|
-
};
|
|
237
|
-
const classOrInterfaceExpression = (resolved, ownership) => {
|
|
238
|
-
const cls = resolved.value;
|
|
239
|
-
if (cls.glibRefFunc === undefined || cls.glibUnrefFunc === undefined) {
|
|
240
|
-
return `t.object(${quote(ownership)})`;
|
|
241
|
-
}
|
|
242
|
-
return renderFundamental({
|
|
243
|
-
lib: resolved.namespace.sharedLibrary ?? "",
|
|
244
|
-
refFunc: cls.glibRefFunc,
|
|
245
|
-
unrefFunc: cls.glibUnrefFunc,
|
|
246
|
-
glibTypeName: cls.glibTypeName,
|
|
247
|
-
ownership,
|
|
248
|
-
});
|
|
249
|
-
};
|
|
250
|
-
const fundamentalAncestor = (context, namespaceName, typeName) => {
|
|
251
|
-
const seen = new Set();
|
|
252
|
-
let owner = namespaceName;
|
|
253
|
-
let name = typeName;
|
|
254
|
-
while (!seen.has(`${owner}.${name}`)) {
|
|
255
|
-
seen.add(`${owner}.${name}`);
|
|
256
|
-
const resolved = context.repository.resolveNamed(owner, name);
|
|
257
|
-
if (resolved === undefined || (resolved.kind !== "class" && resolved.kind !== "interface"))
|
|
258
|
-
return undefined;
|
|
259
|
-
const cls = resolved.value;
|
|
260
|
-
if (cls.fundamental && cls.glibRefFunc !== undefined && cls.glibUnrefFunc !== undefined) {
|
|
261
|
-
return {
|
|
262
|
-
lib: resolved.namespace.sharedLibrary ?? "",
|
|
263
|
-
refFunc: cls.glibRefFunc,
|
|
264
|
-
unrefFunc: cls.glibUnrefFunc,
|
|
265
|
-
glibTypeName: cls.glibTypeName,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
if (cls.parent === undefined)
|
|
269
|
-
return undefined;
|
|
270
|
-
const dot = cls.parent.indexOf(".");
|
|
271
|
-
owner = dot === -1 ? resolved.namespace.name : cls.parent.slice(0, dot);
|
|
272
|
-
name = dot === -1 ? cls.parent : cls.parent.slice(dot + 1);
|
|
273
|
-
}
|
|
274
|
-
return undefined;
|
|
275
|
-
};
|
|
276
|
-
/**
|
|
277
|
-
* Renders the FFI descriptor for a method's instance (`self`) parameter.
|
|
278
|
-
*
|
|
279
|
-
* The receiver is always passed as a borrowed pointer regardless of the GIR
|
|
280
|
-
* instance-parameter transfer (`transfer="full"` on e.g. `gdk_event_unref`
|
|
281
|
-
* describes C-side consumption, not FFI ownership). A receiver whose ancestry
|
|
282
|
-
* reaches a ref-counted fundamental (e.g. `GskRenderNode`) is marshalled as
|
|
283
|
-
* `t.fundamental`; every other receiver — GObject subclasses and opaque
|
|
284
|
-
* records alike — is a borrowed `t.object`.
|
|
285
|
-
*
|
|
286
|
-
* @param context - The module context
|
|
287
|
-
* @param instance - The instance parameter
|
|
288
|
-
*/
|
|
289
|
-
export const renderSelfFfiType = (context, instance) => {
|
|
290
|
-
const ref = instance.type;
|
|
291
|
-
if (ref === undefined || ref.kind !== "named")
|
|
292
|
-
return `t.object("borrowed")`;
|
|
293
|
-
const owner = ref.namespaceName ?? context.namespace.name;
|
|
294
|
-
const resolved = context.repository.resolveNamed(owner, ref.typeName);
|
|
295
|
-
if (resolved === undefined)
|
|
296
|
-
return `t.object("borrowed")`;
|
|
297
|
-
if (resolved.kind === "class" || resolved.kind === "interface") {
|
|
298
|
-
const ancestor = fundamentalAncestor(context, owner, ref.typeName);
|
|
299
|
-
return ancestor === undefined
|
|
300
|
-
? `t.object("borrowed")`
|
|
301
|
-
: renderFundamental({ ...ancestor, ownership: "borrowed" });
|
|
302
|
-
}
|
|
303
|
-
if (resolved.kind === "boxed" && isReferenceableBoxed(resolved.value)) {
|
|
304
|
-
return boxedExpression(resolved, ffiOwnership(instance.transferOwnership));
|
|
305
|
-
}
|
|
306
|
-
return `t.object("borrowed")`;
|
|
307
|
-
};
|
|
308
|
-
const isReferenceableBoxed = (boxed) => {
|
|
309
|
-
const hasRefPair = (boxed.glibRefFunc ?? boxed.copyFunc) !== undefined && (boxed.glibUnrefFunc ?? boxed.freeFunc) !== undefined;
|
|
310
|
-
const hasIntrinsic = boxed.glibTypeName !== undefined && INTRINSIC_FUNDAMENTAL_FUNCS.has(boxed.glibTypeName);
|
|
311
|
-
return hasRefPair || hasIntrinsic || boxed.glibGetType !== undefined;
|
|
312
|
-
};
|
|
313
|
-
const boxedExpression = (resolved, ownership) => {
|
|
314
|
-
const boxed = resolved.value;
|
|
315
|
-
const intrinsic = boxed.glibTypeName === undefined ? undefined : INTRINSIC_FUNDAMENTAL_FUNCS.get(boxed.glibTypeName);
|
|
316
|
-
const refFunc = boxed.glibRefFunc ?? boxed.copyFunc ?? intrinsic?.ref;
|
|
317
|
-
const unrefFunc = boxed.glibUnrefFunc ?? boxed.freeFunc ?? intrinsic?.unref;
|
|
318
|
-
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
319
|
-
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
320
|
-
return renderFundamental({ lib, refFunc, unrefFunc, glibTypeName: boxed.glibTypeName, ownership });
|
|
321
|
-
}
|
|
322
|
-
if (boxed.glibGetType === undefined) {
|
|
323
|
-
return `t.struct(${quote(ownership)})`;
|
|
324
|
-
}
|
|
325
|
-
const glibName = boxed.glibTypeName ?? boxed.cType ?? boxed.name;
|
|
326
|
-
const lib = resolved.namespace.sharedLibrary;
|
|
327
|
-
const libExpr = lib === undefined ? "undefined" : quote(lib);
|
|
328
|
-
return `t.boxed(${joinArgs([quote(glibName), quote(ownership), libExpr, quote(boxed.glibGetType)])})`;
|
|
329
|
-
};
|
|
330
|
-
const expressionForResolved = (context, resolved, ownership) => {
|
|
331
|
-
switch (resolved.kind) {
|
|
332
|
-
case "class":
|
|
333
|
-
case "interface":
|
|
334
|
-
return classOrInterfaceExpression(resolved, ownership);
|
|
335
|
-
case "boxed":
|
|
336
|
-
return boxedExpression(resolved, ownership);
|
|
337
|
-
case "enum": {
|
|
338
|
-
const getter = resolved.value.glibGetType;
|
|
339
|
-
const signed = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
340
|
-
if (getter === undefined || getter === "")
|
|
341
|
-
return signed ? "t.int32" : "t.uint32";
|
|
342
|
-
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
343
|
-
const helper = resolved.value.kind === "bitfield" ? "flags" : "enum";
|
|
344
|
-
return `t.${helper}(${quote(lib)}, ${quote(getter)}, ${String(signed)})`;
|
|
345
|
-
}
|
|
346
|
-
case "callback":
|
|
347
|
-
return "t.void";
|
|
348
|
-
case "alias":
|
|
349
|
-
return aliasExpression(context, {
|
|
350
|
-
namespace: resolved.namespace,
|
|
351
|
-
targetRef: resolved.targetRef,
|
|
352
|
-
ownership,
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
};
|
|
356
|
-
const arrayExpression = (context, ref, transfer, argIndexOffset) => {
|
|
357
|
-
const ownership = ffiOwnership(transfer);
|
|
358
|
-
const element = renderFfiType(context, ref.element, deriveElementTransfer(transfer), argIndexOffset);
|
|
359
|
-
const size = inlineElementSize(context, ref.element);
|
|
360
|
-
const sizeArg = size === undefined ? "" : `, ${size}`;
|
|
361
|
-
if (ref.lengthParameterIndex !== undefined) {
|
|
362
|
-
return `t.sizedArray(${element}, ${ref.lengthParameterIndex + argIndexOffset}, ${quote(ownership)}${sizeArg})`;
|
|
363
|
-
}
|
|
364
|
-
if (ref.fixedSize !== undefined) {
|
|
365
|
-
return `t.fixedArray(${element}, ${ref.fixedSize}, ${quote(ownership)}${sizeArg})`;
|
|
366
|
-
}
|
|
367
|
-
const optionsArg = size === undefined ? "" : `, { elementSize: ${size} }`;
|
|
368
|
-
return `t.array(${element}, "array", ${quote(ownership)}${optionsArg})`;
|
|
369
|
-
};
|
|
370
|
-
/**
|
|
371
|
-
* Computes the inline byte size of an array element when it is a by-value
|
|
372
|
-
* boxed struct, so the native marshaller can lay out a contiguous element
|
|
373
|
-
* buffer. Returns `undefined` for pointer elements (objects, strings, boxed
|
|
374
|
-
* pointers) and primitives, which the native layer already sizes.
|
|
375
|
-
*/
|
|
376
|
-
const inlineElementSize = (context, element) => {
|
|
377
|
-
if (element === undefined || element.kind !== "named")
|
|
378
|
-
return undefined;
|
|
379
|
-
const owner = element.namespaceName ?? context.namespace.name;
|
|
380
|
-
const hardcoded = HARDCODED_INLINE_ELEMENT_SIZES.get(`${owner}.${element.typeName}`);
|
|
381
|
-
if (hardcoded !== undefined)
|
|
382
|
-
return hardcoded;
|
|
383
|
-
if (element.cType?.includes("*"))
|
|
384
|
-
return undefined;
|
|
385
|
-
const resolved = context.repository.resolveNamed(owner, element.typeName);
|
|
386
|
-
if (resolved === undefined || resolved.kind !== "boxed")
|
|
387
|
-
return undefined;
|
|
388
|
-
const boxed = resolved.value;
|
|
389
|
-
if (boxed.opaque || boxed.disguised || boxed.fields.length === 0)
|
|
390
|
-
return undefined;
|
|
391
|
-
const { size } = computeBoxedFieldSlots(context, boxed.fields, boxed.isUnion);
|
|
392
|
-
return size > 0 ? size : undefined;
|
|
393
|
-
};
|
|
394
|
-
const aliasExpression = (context, options) => {
|
|
395
|
-
const { namespace, targetRef, ownership } = options;
|
|
396
|
-
const qualified = qualifyTypeRef(targetRef, namespace.name);
|
|
397
|
-
if (qualified === undefined) {
|
|
398
|
-
return `t.object(${quote(ownership)})`;
|
|
399
|
-
}
|
|
400
|
-
return renderFfiType(context, qualified, ownership === "full" ? "full" : "none");
|
|
401
|
-
};
|
|
402
|
-
//# sourceMappingURL=value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/writers/value.ts"],"names":[],"mappings":"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"}
|
package/src/dsl/context.ts
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import type { GirNamespace } from "../gir/namespace.js";
|
|
2
|
-
import type { GirRepository } from "../gir/repository.js";
|
|
3
|
-
import { ModuleBuilder } from "./module.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Shared context handed to every writer for a single generated FFI module.
|
|
7
|
-
*
|
|
8
|
-
* Bundles the namespace the writer is emitting for, the broader repository
|
|
9
|
-
* (for cross-namespace lookups), and the in-progress {@link ModuleBuilder}.
|
|
10
|
-
* Writers also call back into this context to register cross-namespace
|
|
11
|
-
* runtime imports so individual writers do not need to know the relative
|
|
12
|
-
* path layout of the generated output.
|
|
13
|
-
*
|
|
14
|
-
* Generated bindings live in the `@gtkx/gi` package at `<ns>/<ns>.{js,d.ts}`,
|
|
15
|
-
* with a per-namespace barrel at `<ns>/index.js` and the augment overlay at
|
|
16
|
-
* `<ns>/augment/*.js`. The hand-written runtime is reached through the single
|
|
17
|
-
* `@gtkx/ffi` barrel; sibling generated namespaces are reached relative to the
|
|
18
|
-
* gi package root.
|
|
19
|
-
*/
|
|
20
|
-
export class ModuleContext {
|
|
21
|
-
public readonly module = new ModuleBuilder();
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @param namespace - The namespace this module corresponds to
|
|
25
|
-
* @param repository - The repository containing every loaded namespace
|
|
26
|
-
*/
|
|
27
|
-
constructor(
|
|
28
|
-
public readonly namespace: GirNamespace,
|
|
29
|
-
public readonly repository: GirRepository,
|
|
30
|
-
) {}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Adds a named import from the `@gtkx/ffi` runtime barrel.
|
|
34
|
-
*/
|
|
35
|
-
addRuntimeImport(name: string): void {
|
|
36
|
-
this.module.imports.addNamed("@gtkx/ffi", name);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Adds a type-only named import from the `@gtkx/ffi` runtime barrel
|
|
41
|
-
* (`import { type Name }`), erased from the emitted `.js`.
|
|
42
|
-
*/
|
|
43
|
-
addRuntimeTypeImport(name: string): void {
|
|
44
|
-
this.module.imports.addNamed("@gtkx/ffi", name, true);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Adds a named import from the low-level `@gtkx/native` runtime.
|
|
49
|
-
*
|
|
50
|
-
* The transport primitives (`alloc`, `call`, `read`, `write`) live in
|
|
51
|
-
* `@gtkx/native`; generated bindings reach them directly so `@gtkx/ffi`
|
|
52
|
-
* stays the home of higher-level runtime helpers only.
|
|
53
|
-
*/
|
|
54
|
-
addNativeImport(name: string): void {
|
|
55
|
-
this.module.imports.addNamed("@gtkx/native", name);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Adds a type-only named import from `@gtkx/native`
|
|
60
|
-
* (`import { type Name }`), erased from the emitted `.js`.
|
|
61
|
-
*/
|
|
62
|
-
addNativeTypeImport(name: string): void {
|
|
63
|
-
this.module.imports.addNamed("@gtkx/native", name, true);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/** Adds the canonical `constructGObjectInstance` import from `@gtkx/ffi`. */
|
|
67
|
-
addConstructGObjectInstanceImport(): void {
|
|
68
|
-
this.module.imports.addNamed("@gtkx/ffi", "constructGObjectInstance");
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** Adds the `valueFromFfi` import from `@gtkx/ffi`. */
|
|
72
|
-
addValueFromFfiImport(): void {
|
|
73
|
-
this.module.imports.addNamed("@gtkx/ffi", "valueFromFfi");
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** Adds the `valueFromFfiOptional` import from `@gtkx/ffi`. */
|
|
77
|
-
addValueFromFfiOptionalImport(): void {
|
|
78
|
-
this.module.imports.addNamed("@gtkx/ffi", "valueFromFfiOptional");
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Adds the canonical side-effect imports for `gobject/object.js` and
|
|
83
|
-
* `gobject/value.js`.
|
|
84
|
-
*
|
|
85
|
-
* Skipped for the `GObject` namespace itself (those modules import its
|
|
86
|
-
* generated classes) and for `GLib`, which lives below GObject in the
|
|
87
|
-
* import graph. Letting GLib bootstrap creates a runtime cycle:
|
|
88
|
-
* `gobject.js` imports `glib.js` for `GLib.Variant` return-wrapping,
|
|
89
|
-
* `glib.js`'s bootstrap re-enters `gobject/value.js`, and `value.ts`
|
|
90
|
-
* touches `Value.prototype` before `gobject.js` has finished defining
|
|
91
|
-
* `Value`. Other namespaces install the override on first import.
|
|
92
|
-
*/
|
|
93
|
-
addGObjectBootstrapImports(): void {
|
|
94
|
-
if (this.namespace.name === "GObject") return;
|
|
95
|
-
if (this.namespace.name === "GLib") return;
|
|
96
|
-
this.module.imports.addSideEffect("../gobject/augment/object.js");
|
|
97
|
-
this.module.imports.addSideEffect("../gobject/augment/value.js");
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Adds a wildcard import for another namespace and returns the local
|
|
102
|
-
* alias used.
|
|
103
|
-
*
|
|
104
|
-
* Most namespaces are routed through their hand-written `index.js` so any
|
|
105
|
-
* prototype augmentations (Cairo `Context` methods, Gdk `RGBA`, Graphene
|
|
106
|
-
* structs, …) load whenever a generated module references the namespace.
|
|
107
|
-
* The foundational `gobject` and `glib` namespaces are routed straight to
|
|
108
|
-
* their generated module instead, because their indexes pull in modules
|
|
109
|
-
* that depend on values still mid-initialization, which would deadlock the
|
|
110
|
-
* import graph.
|
|
111
|
-
*
|
|
112
|
-
* For non-foundational namespaces a side-effect import is recorded
|
|
113
|
-
* alongside the wildcard so the foreign module loads even when its alias
|
|
114
|
-
* appears only in type positions. The wildcard alias is type-stripped out
|
|
115
|
-
* of the emitted `.js` whenever it is never read as a value, which would
|
|
116
|
-
* otherwise drop the foreign module from the runtime graph and skip its
|
|
117
|
-
* eager `*_get_type` registrations. The side-effect import survives type
|
|
118
|
-
* stripping and pins the module in place. The foundational `gobject` and
|
|
119
|
-
* `glib` wildcards are always read as values (enums, base classes) and so
|
|
120
|
-
* are never stripped, needing no side-effect pin.
|
|
121
|
-
*
|
|
122
|
-
* @param namespaceName - The other namespace (e.g. `"GLib"`)
|
|
123
|
-
*/
|
|
124
|
-
addCrossNamespaceImport(namespaceName: string): string {
|
|
125
|
-
if (namespaceName === this.namespace.name) return namespaceName;
|
|
126
|
-
const directory = namespaceName.toLowerCase();
|
|
127
|
-
const isFoundational = directory === "gobject" || directory === "glib";
|
|
128
|
-
const path = isFoundational ? `../${directory}/${directory}.js` : `../${directory}/index.js`;
|
|
129
|
-
if (!isFoundational) this.module.imports.addSideEffect(`../${directory}/${directory}.js`);
|
|
130
|
-
this.module.imports.addNamespace(path, namespaceName);
|
|
131
|
-
return namespaceName;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Renders a namespace-qualified reference to `typeName`: the bare name when
|
|
136
|
-
* it lives in this module's own namespace, otherwise `Alias.Name` with the
|
|
137
|
-
* foreign namespace imported on demand via {@link addCrossNamespaceImport}.
|
|
138
|
-
*
|
|
139
|
-
* @param namespaceName - The namespace the referenced type lives in
|
|
140
|
-
* @param typeName - The local type or export name within that namespace
|
|
141
|
-
*/
|
|
142
|
-
qualify(namespaceName: string, typeName: string): string {
|
|
143
|
-
if (namespaceName === this.namespace.name) return typeName;
|
|
144
|
-
return `${this.addCrossNamespaceImport(namespaceName)}.${typeName}`;
|
|
145
|
-
}
|
|
146
|
-
}
|