@gtkx/codegen 1.0.0-rc.1 → 1.0.0-rc.3
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/dist/analysis/descriptor-render.d.ts +20 -11
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +296 -152
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +37 -34
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +34 -30
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +16 -16
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +139 -84
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/param-structure.d.ts +14 -13
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +104 -53
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +6 -5
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +71 -29
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/compile.d.ts +5 -5
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +70 -63
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +12 -11
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +192 -123
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts +6 -9
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +69 -133
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/pipeline.d.ts +10 -7
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +81 -53
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +21 -19
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +80 -71
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +6 -6
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +126 -84
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +29 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +69 -13
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +18 -0
- package/dist/gi.d.ts.map +1 -0
- package/dist/gi.js +23 -0
- package/dist/gi.js.map +1 -0
- package/dist/gir/ancestry.d.ts +4 -3
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +12 -15
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/callback.d.ts +6 -11
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +6 -7
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +7 -5
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +14 -12
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +3 -3
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +7 -6
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +8 -3
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +30 -7
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +6 -3
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +23 -7
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +2 -1
- package/dist/gir/gir-path.d.ts.map +1 -1
- package/dist/gir/gir-path.js +26 -10
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/libraries.d.ts +5 -3
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +41 -28
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +17 -11
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +116 -92
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +10 -10
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +21 -20
- 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 +14 -12
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +27 -18
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +12 -13
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +50 -40
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +5 -4
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +4 -3
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +5 -4
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +10 -9
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +5 -4
- package/dist/gir/record.d.ts.map +1 -1
- package/dist/gir/record.js +13 -12
- package/dist/gir/record.js.map +1 -1
- package/dist/gir/size.d.ts +6 -5
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +49 -47
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +17 -15
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +5 -1
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.d.ts +3 -2
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +36 -25
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +3 -2
- package/dist/gir/type.d.ts.map +1 -1
- package/dist/gir/type.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +28 -0
- package/dist/jsx.d.ts.map +1 -0
- package/dist/jsx.js +44 -0
- package/dist/jsx.js.map +1 -0
- package/dist/khronos/args.d.ts +7 -7
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +88 -67
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/jsdoc.d.ts +4 -4
- package/dist/khronos/jsdoc.d.ts.map +1 -1
- package/dist/khronos/jsdoc.js +29 -16
- package/dist/khronos/jsdoc.js.map +1 -1
- package/dist/khronos/model.d.ts +8 -7
- package/dist/khronos/model.d.ts.map +1 -1
- package/dist/khronos/model.js +94 -59
- package/dist/khronos/model.js.map +1 -1
- package/dist/khronos/modules.d.ts +4 -3
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +40 -25
- package/dist/khronos/modules.js.map +1 -1
- 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 +7 -8
- package/dist/khronos/parse.d.ts.map +1 -1
- package/dist/khronos/parse.js +17 -16
- package/dist/khronos/parse.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +4 -4
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js +97 -56
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +11 -10
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +109 -45
- package/dist/khronos/plan.js.map +1 -1
- package/dist/khronos/render.d.ts +5 -4
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +106 -59
- package/dist/khronos/render.js.map +1 -1
- package/dist/khronos/select.d.ts +4 -4
- package/dist/khronos/select.d.ts.map +1 -1
- package/dist/khronos/select.js +30 -19
- package/dist/khronos/select.js.map +1 -1
- package/dist/react/element-config.d.ts +20 -0
- package/dist/react/element-config.d.ts.map +1 -0
- package/dist/react/element-config.js +64 -0
- package/dist/react/element-config.js.map +1 -0
- package/dist/runner.d.ts +19 -10
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +48 -43
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +5 -3
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +24 -22
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/async.d.ts +2 -1
- package/dist/store/gi/async.d.ts.map +1 -1
- package/dist/store/gi/async.js +28 -24
- package/dist/store/gi/async.js.map +1 -1
- package/dist/store/gi/callables.d.ts +26 -20
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +157 -100
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts +3 -2
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +6 -3
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts +2 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +86 -47
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/companion.d.ts +2 -1
- package/dist/store/gi/companion.d.ts.map +1 -1
- package/dist/store/gi/companion.js +8 -5
- package/dist/store/gi/companion.js.map +1 -1
- package/dist/store/gi/constant.d.ts +3 -2
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +25 -8
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts +3 -2
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +17 -10
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/enum.d.ts +3 -2
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +14 -11
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts +5 -4
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +48 -23
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts +4 -4
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +15 -11
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.d.ts +2 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +36 -18
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/item-comparators.d.ts +3 -2
- package/dist/store/gi/item-comparators.d.ts.map +1 -1
- package/dist/store/gi/item-comparators.js +33 -21
- package/dist/store/gi/item-comparators.js.map +1 -1
- package/dist/store/gi/method.d.ts +13 -13
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +188 -130
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +7 -6
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +26 -13
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts +2 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +38 -23
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/properties.d.ts +2 -1
- package/dist/store/gi/properties.d.ts.map +1 -1
- package/dist/store/gi/properties.js +6 -4
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +11 -10
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +86 -60
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts +3 -2
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +40 -28
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +9 -8
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +187 -99
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts +6 -5
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +75 -39
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts +2 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +15 -16
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.d.ts +3 -3
- package/dist/store/gi/registration.d.ts.map +1 -1
- package/dist/store/gi/registration.js +3 -2
- package/dist/store/gi/registration.js.map +1 -1
- package/dist/store/gi/return-wrap.d.ts +2 -2
- package/dist/store/gi/return-wrap.d.ts.map +1 -1
- package/dist/store/gi/return-wrap.js +43 -22
- package/dist/store/gi/return-wrap.js.map +1 -1
- package/dist/store/gi/runtime-override.d.ts +2 -1
- package/dist/store/gi/runtime-override.d.ts.map +1 -1
- package/dist/store/gi/runtime-override.js +6 -3
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.d.ts +3 -2
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +113 -66
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +15 -0
- package/dist/store/gi/value-marshalable.d.ts.map +1 -0
- package/dist/store/gi/value-marshalable.js +66 -0
- package/dist/store/gi/value-marshalable.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +2 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +60 -30
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +5 -4
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +4 -2
- package/dist/store/gi-store.js.map +1 -1
- 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 +26 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/jsx/intrinsic-elements.js +127 -0
- package/dist/store/jsx/intrinsic-elements.js.map +1 -0
- package/dist/store/{react → jsx}/jsx.d.ts +2 -4
- package/dist/store/jsx/jsx.d.ts.map +1 -0
- package/dist/store/{react → jsx}/jsx.js +110 -71
- 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/{react → jsx}/metadata.js +148 -69
- package/dist/store/jsx/metadata.js.map +1 -0
- package/dist/store/jsx/omitted-props.d.ts +10 -0
- package/dist/store/jsx/omitted-props.d.ts.map +1 -0
- package/dist/store/jsx/omitted-props.js +22 -0
- package/dist/store/jsx/omitted-props.js.map +1 -0
- package/dist/store/jsx/pipeline.d.ts +23 -0
- package/dist/store/jsx/pipeline.d.ts.map +1 -0
- package/dist/store/{react → jsx}/pipeline.js +38 -15
- package/dist/store/jsx/pipeline.js.map +1 -0
- package/dist/store/{react → jsx}/props.d.ts +9 -12
- package/dist/store/jsx/props.d.ts.map +1 -0
- package/dist/store/jsx/props.js +153 -0
- package/dist/store/jsx/props.js.map +1 -0
- package/dist/store/jsx-store.d.ts +5 -3
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +4 -1
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +14 -12
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +9 -7
- package/dist/store/store-fs.js.map +1 -1
- package/dist/writer/context.d.ts +2 -1
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +12 -6
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/doc.d.ts +2 -1
- package/dist/writer/doc.d.ts.map +1 -1
- package/dist/writer/doc.js +13 -7
- package/dist/writer/doc.js.map +1 -1
- package/dist/writer/emit.d.ts +8 -7
- package/dist/writer/emit.d.ts.map +1 -1
- package/dist/writer/emit.js +13 -10
- package/dist/writer/emit.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts +2 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +29 -18
- package/dist/writer/gtk-doc.js.map +1 -1
- package/dist/writer/imports.d.ts +4 -2
- package/dist/writer/imports.d.ts.map +1 -1
- package/dist/writer/imports.js +35 -24
- package/dist/writer/imports.js.map +1 -1
- package/dist/writer/module.d.ts +3 -2
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +16 -9
- package/dist/writer/module.js.map +1 -1
- 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 +7 -7
- package/overrides/cairo/matrix.ts.ejs +2 -2
- package/overrides/cairo/recording-surface.ts.ejs +2 -2
- package/overrides/cairo/region.ts.ejs +1 -1
- package/overrides/cairo/scaled-font.ts.ejs +3 -3
- package/package.json +14 -9
- package/src/analysis/descriptor-render.ts +516 -168
- package/src/analysis/descriptor.ts +162 -125
- package/src/analysis/inheritance.ts +286 -98
- package/src/analysis/param-structure.ts +188 -57
- package/src/analysis/ts-type.ts +113 -34
- package/src/compile.ts +103 -76
- package/src/docs/api-reference.ts +337 -146
- package/src/docs/element-page.ts +137 -150
- package/src/docs/pipeline.ts +135 -73
- package/src/docs/render.ts +151 -87
- package/src/docs/symbol-page.ts +268 -123
- package/src/fingerprint.ts +138 -26
- package/src/gi.ts +35 -0
- package/src/gir/ancestry.ts +26 -14
- package/src/gir/callback.ts +10 -15
- package/src/gir/class.ts +20 -16
- package/src/gir/enum.ts +9 -7
- package/src/gir/field.ts +37 -8
- package/src/gir/function.ts +33 -9
- package/src/gir/gir-path.ts +36 -12
- package/src/gir/libraries.ts +59 -33
- package/src/gir/library.ts +200 -97
- package/src/gir/namespace.ts +42 -26
- package/src/gir/nullable-overrides.ts +5 -0
- package/src/gir/parameter.ts +80 -42
- package/src/gir/parse.ts +102 -47
- package/src/gir/primitives.ts +25 -23
- package/src/gir/property.ts +13 -11
- package/src/gir/record.ts +16 -14
- package/src/gir/size.ts +91 -58
- package/src/gir/type-id.ts +33 -18
- package/src/gir/type-ref.ts +62 -26
- package/src/gir/type.ts +10 -8
- package/src/index.ts +8 -0
- package/src/jsx.ts +75 -0
- package/src/khronos/args.ts +158 -89
- package/src/khronos/jsdoc.ts +67 -29
- package/src/khronos/model.ts +154 -53
- package/src/khronos/modules.ts +67 -27
- package/src/khronos/param-pair.ts +14 -0
- package/src/khronos/parse.ts +37 -17
- package/src/khronos/pipeline.ts +193 -90
- package/src/khronos/plan.ts +235 -86
- package/src/khronos/render.ts +208 -71
- package/src/khronos/select.ts +48 -18
- package/src/react/element-config.ts +97 -0
- package/src/runner.ts +100 -57
- package/src/store/compile-store.ts +32 -26
- package/src/store/gi/async.ts +48 -21
- package/src/store/gi/callables.ts +339 -136
- package/src/store/gi/callback.ts +13 -4
- package/src/store/gi/class.ts +186 -64
- package/src/store/gi/companion.ts +15 -6
- package/src/store/gi/constant.ts +42 -8
- package/src/store/gi/constructor-props.ts +42 -16
- package/src/store/gi/enum.ts +28 -13
- package/src/store/gi/function.ts +88 -24
- package/src/store/gi/gtype-binding.ts +31 -18
- package/src/store/gi/interface.ts +101 -36
- package/src/store/gi/item-comparators.ts +74 -26
- package/src/store/gi/method.ts +377 -159
- package/src/store/gi/param-marshal.ts +38 -15
- package/src/store/gi/pipeline.ts +72 -22
- package/src/store/gi/properties.ts +16 -5
- package/src/store/gi/property-accessor.ts +192 -84
- package/src/store/gi/record-constructor.ts +70 -33
- package/src/store/gi/record-field-accessor.ts +415 -167
- package/src/store/gi/record-layout.ts +130 -43
- package/src/store/gi/record.ts +29 -15
- package/src/store/gi/registration.ts +15 -9
- package/src/store/gi/return-wrap.ts +71 -23
- package/src/store/gi/runtime-override.ts +13 -3
- package/src/store/gi/signal.ts +244 -104
- package/src/store/gi/value-marshalable.ts +96 -0
- package/src/store/gi/vtable.ts +117 -41
- package/src/store/gi-store.ts +26 -13
- 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 +253 -0
- package/src/store/{react → jsx}/jsx.ts +213 -99
- package/src/store/jsx/metadata.ts +385 -0
- package/src/store/jsx/omitted-props.ts +32 -0
- package/src/store/jsx/pipeline.ts +148 -0
- package/src/store/jsx/props.ts +262 -0
- package/src/store/jsx-store.ts +15 -3
- package/src/store/store-fs.ts +36 -20
- package/src/writer/context.ts +25 -6
- package/src/writer/doc.ts +19 -5
- package/src/writer/emit.ts +20 -11
- package/src/writer/gtk-doc.ts +48 -21
- package/src/writer/imports.ts +63 -28
- package/src/writer/module.ts +35 -11
- package/src/xml.ts +12 -0
- package/dist/store/gi/class-struct-record.d.ts +0 -9
- package/dist/store/gi/class-struct-record.d.ts.map +0 -1
- package/dist/store/gi/class-struct-record.js +0 -34
- package/dist/store/gi/class-struct-record.js.map +0 -1
- package/dist/store/react/built-ins.d.ts +0 -9
- package/dist/store/react/built-ins.d.ts.map +0 -1
- package/dist/store/react/built-ins.js +0 -226
- package/dist/store/react/built-ins.js.map +0 -1
- package/dist/store/react/element-components.d.ts +0 -15
- package/dist/store/react/element-components.d.ts.map +0 -1
- package/dist/store/react/element-components.js +0 -92
- package/dist/store/react/element-components.js.map +0 -1
- package/dist/store/react/element-prop-types.d.ts +0 -19
- package/dist/store/react/element-prop-types.d.ts.map +0 -1
- package/dist/store/react/element-prop-types.js +0 -244
- package/dist/store/react/element-prop-types.js.map +0 -1
- package/dist/store/react/element-props.d.ts +0 -4
- package/dist/store/react/element-props.d.ts.map +0 -1
- package/dist/store/react/element-props.js +0 -178
- package/dist/store/react/element-props.js.map +0 -1
- package/dist/store/react/gir-index.d.ts +0 -25
- package/dist/store/react/gir-index.d.ts.map +0 -1
- package/dist/store/react/gir-index.js +0 -55
- package/dist/store/react/gir-index.js.map +0 -1
- package/dist/store/react/intrinsic-elements.d.ts +0 -26
- package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
- package/dist/store/react/intrinsic-elements.js +0 -107
- package/dist/store/react/intrinsic-elements.js.map +0 -1
- package/dist/store/react/jsx.d.ts.map +0 -1
- package/dist/store/react/jsx.js.map +0 -1
- package/dist/store/react/metadata.d.ts +0 -4
- package/dist/store/react/metadata.d.ts.map +0 -1
- package/dist/store/react/metadata.js.map +0 -1
- package/dist/store/react/pipeline.d.ts +0 -14
- package/dist/store/react/pipeline.d.ts.map +0 -1
- package/dist/store/react/pipeline.js.map +0 -1
- package/dist/store/react/props.d.ts.map +0 -1
- package/dist/store/react/props.js +0 -133
- package/dist/store/react/props.js.map +0 -1
- package/overrides/gtk/constants.ts.ejs +0 -3
- package/overrides/gtk/index.ts.ejs +0 -2
- package/src/store/gi/class-struct-record.ts +0 -40
- package/src/store/react/built-ins.ts +0 -260
- package/src/store/react/element-components.ts +0 -138
- package/src/store/react/element-prop-types.ts +0 -280
- package/src/store/react/element-props.ts +0 -204
- package/src/store/react/gir-index.ts +0 -85
- package/src/store/react/intrinsic-elements.ts +0 -161
- package/src/store/react/metadata.ts +0 -197
- package/src/store/react/pipeline.ts +0 -90
- package/src/store/react/props.ts +0 -197
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import type { Library } from "../gir/library.js";
|
|
2
|
-
import { type GirParameter, type GirReturnValue, type ParameterTransfer } from "../gir/parameter.js";
|
|
3
|
-
import type { TypeId } from "../gir/type-id.js";
|
|
4
2
|
import type { ModuleContext } from "../writer/context.js";
|
|
3
|
+
import { type GirParameter, type GirReturnValue, type ParameterTransfer } from "../gir/parameter.js";
|
|
4
|
+
import { type TypeId } from "../gir/type-id.js";
|
|
5
5
|
type RenderDescriptorOptions = {
|
|
6
6
|
argIndexOffset?: number;
|
|
7
|
+
/** GIR parameter index to emitted argument index, for callables that drop parameters. */
|
|
8
|
+
argIndexMap?: Map<number, number> | undefined;
|
|
7
9
|
callerAllocated?: boolean;
|
|
10
|
+
isInline?: boolean;
|
|
11
|
+
/** Set on the return value of a callable with no instance parameter, which creates what it returns. */
|
|
12
|
+
isNewlyCreated?: boolean;
|
|
13
|
+
};
|
|
14
|
+
type ArgIndexOptions = {
|
|
15
|
+
argIndexOffset: number;
|
|
16
|
+
argIndexMap: Map<number, number> | undefined;
|
|
8
17
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export {};
|
|
18
|
+
declare const isInlineCallbackRef: (library: Library, ref: TypeId | undefined) => boolean;
|
|
19
|
+
declare const shouldOmitPrimaryReturn: (library: Library, returnValue: GirReturnValue) => boolean;
|
|
20
|
+
declare const renderDescriptor: (context: ModuleContext, ref: TypeId | undefined, transfer?: ParameterTransfer, options?: RenderDescriptorOptions) => string;
|
|
21
|
+
declare const isScalarRef: (library: Library, ref: TypeId | undefined) => boolean;
|
|
22
|
+
declare const isCellInout: (library: Library, parameter: GirParameter) => boolean;
|
|
23
|
+
declare const renderParamDescriptor: (context: ModuleContext, parameter: GirParameter, ref: TypeId | undefined, argIndex?: Partial<ArgIndexOptions>) => string;
|
|
24
|
+
declare const renderCallbackType: (context: ModuleContext, ref: TypeId | undefined, owningParameter: GirParameter, argOverrides?: Map<number, string>) => string | undefined;
|
|
25
|
+
declare const renderSelfDescriptor: (context: ModuleContext, instance: GirParameter) => string;
|
|
26
|
+
export { isInlineCallbackRef, shouldOmitPrimaryReturn, renderDescriptor, isScalarRef, isCellInout, renderParamDescriptor, renderCallbackType, renderSelfDescriptor, };
|
|
18
27
|
//# sourceMappingURL=descriptor-render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor-render.d.ts","sourceRoot":"","sources":["../../src/analysis/descriptor-render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"descriptor-render.d.ts","sourceRoot":"","sources":["../../src/analysis/descriptor-render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,cAAc,EAInB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKH,KAAK,MAAM,EACd,MAAM,mBAAmB,CAAC;AA+B3B,KAAK,uBAAuB,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uGAAuG;IACvG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAChD,CAAC;AAiFF,QAAA,MAAM,mBAAmB,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,OAC+B,CAAC;AAEzG,QAAA,MAAM,uBAAuB,GAAI,SAAS,OAAO,EAAE,aAAa,cAAc,KAAG,OACrB,CAAC;AAE7D,QAAA,MAAM,gBAAgB,GAClB,SAAS,aAAa,EACtB,KAAK,MAAM,GAAG,SAAS,EACvB,WAAU,iBAA0B,EACpC,UAAS,uBAA4B,KACtC,MAgDF,CAAC;AAyDF,QAAA,MAAM,WAAW,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,OAQhE,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,SAAS,OAAO,EAAE,WAAW,YAAY,KAAG,OACM,CAAC;AAExE,QAAA,MAAM,qBAAqB,GACvB,SAAS,aAAa,EACtB,WAAW,YAAY,EACvB,KAAK,MAAM,GAAG,SAAS,EACvB,WAAU,OAAO,CAAC,eAAe,CAAM,KACxC,MAaF,CAAC;AAyCF,QAAA,MAAM,kBAAkB,GACpB,SAAS,aAAa,EACtB,KAAK,MAAM,GAAG,SAAS,EACvB,iBAAiB,YAAY,EAC7B,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACnC,MAAM,GAAG,SAoBX,CAAC;AAkIF,QAAA,MAAM,oBAAoB,GAAI,SAAS,aAAa,EAAE,UAAU,YAAY,KAAG,MAsB9E,CAAC;AA2OF,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACvB,CAAC"}
|
|
@@ -1,292 +1,435 @@
|
|
|
1
1
|
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
2
|
import { isCallerAllocatedOut, isInoutParameter, isOutParameter, } from "../gir/parameter.js";
|
|
3
|
+
import { hasUnknownArrayLength, } from "../gir/type-id.js";
|
|
3
4
|
import { isRecordInout } from "../store/gi/param-marshal.js";
|
|
4
5
|
import { computeRecordFieldSlots } from "../store/gi/record-layout.js";
|
|
6
|
+
import { isValueMarshalable } from "../store/gi/value-marshalable.js";
|
|
5
7
|
import { tArray, tBoxed, tByteArray, tCallback, tEnum, tFixedArray, tFlags, tFundamental, tGtype, tHashTable, tInt32, tList, tObject, tRef, tScalar, tSizedArray, tString, tStruct, tUint32, tUint64, tVoid, } from "./descriptor.js";
|
|
8
|
+
const LIST_HELPERS = {
|
|
9
|
+
glist: "list",
|
|
10
|
+
gslist: "slist",
|
|
11
|
+
gptrarray: "ptrArray",
|
|
12
|
+
garray: "gArray",
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* `glib:type-name` of every fundamental whose instances are born with a floating reference, so a
|
|
16
|
+
* callable that creates one hands back a claim nobody has taken rather than an owned reference.
|
|
17
|
+
* GIR annotates those returns `transfer-ownership="full"` all the same, so the annotation alone
|
|
18
|
+
* cannot tell them apart from a genuinely owned return such as `g_param_spec_ref`.
|
|
19
|
+
*/
|
|
20
|
+
const FLOATING_FUNDAMENTALS = new Set(["GParam"]);
|
|
21
|
+
// A callable that drops parameters (varargs, and the closure/destroy slots folded into a callback)
|
|
22
|
+
// shifts every later parameter left, so a GIR length index has to be looked up in the emitted list
|
|
23
|
+
// rather than shifted by the instance offset alone.
|
|
24
|
+
const mapArgIndex = (options, girIndex) => options.argIndexMap?.get(girIndex) ?? girIndex + options.argIndexOffset;
|
|
6
25
|
const transferOwnership = (transfer) => {
|
|
7
|
-
if (transfer === "full")
|
|
26
|
+
if (transfer === "full") {
|
|
8
27
|
return "full";
|
|
9
|
-
|
|
28
|
+
}
|
|
29
|
+
if (transfer === "container") {
|
|
10
30
|
return "full";
|
|
31
|
+
}
|
|
11
32
|
return "borrowed";
|
|
12
33
|
};
|
|
13
34
|
const deriveElementTransfer = (transfer) => transfer === "container" ? "none" : transfer;
|
|
14
35
|
const isVoidRef = (library, ref) => {
|
|
15
|
-
if (ref === undefined)
|
|
36
|
+
if (ref === undefined) {
|
|
16
37
|
return true;
|
|
17
|
-
|
|
38
|
+
}
|
|
39
|
+
const type = library.typeFor(ref);
|
|
18
40
|
return type?.kind === "primitive" && type.category === "void";
|
|
19
41
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (ref === undefined)
|
|
42
|
+
const isInlineCallbackRef = (library, ref) => ref !== undefined && library.typeFor(ref)?.kind === "callback" && library.nameFor(ref) === undefined;
|
|
43
|
+
const shouldOmitPrimaryReturn = (library, returnValue) => isVoidRef(library, returnValue.type) || returnValue.skip;
|
|
44
|
+
const renderDescriptor = (context, ref, transfer = "none", options = {}) => {
|
|
45
|
+
if (ref === undefined) {
|
|
24
46
|
return tVoid;
|
|
47
|
+
}
|
|
25
48
|
const { argIndexOffset = 0 } = options;
|
|
49
|
+
const indexOptions = { argIndexOffset, argIndexMap: options.argIndexMap };
|
|
26
50
|
const ownership = transferOwnership(transfer);
|
|
27
|
-
const type = context.library.
|
|
28
|
-
if (type === undefined)
|
|
51
|
+
const type = context.library.typeFor(ref);
|
|
52
|
+
if (type === undefined) {
|
|
29
53
|
return tObject(ownership);
|
|
54
|
+
}
|
|
30
55
|
switch (type.kind) {
|
|
31
|
-
case "primitive":
|
|
56
|
+
case "primitive": {
|
|
32
57
|
return primitiveExpression(type.category, ownership);
|
|
33
|
-
|
|
34
|
-
case "
|
|
58
|
+
}
|
|
59
|
+
case "varargs": {
|
|
35
60
|
return tVoid;
|
|
61
|
+
}
|
|
62
|
+
// A callback in a slot no `renderCallbackType` covers (a vtable entry, a signal argument, a
|
|
63
|
+
// record field) is still a function pointer occupying a pointer-sized slot. `t.void` would
|
|
64
|
+
// hand the implementation `undefined` where the pointer belongs.
|
|
65
|
+
case "callback": {
|
|
66
|
+
return tUint64;
|
|
67
|
+
}
|
|
36
68
|
case "class":
|
|
37
69
|
case "interface":
|
|
38
70
|
case "record":
|
|
39
71
|
case "enum":
|
|
40
|
-
case "alias":
|
|
72
|
+
case "alias": {
|
|
41
73
|
return expressionForResolved(context, type, transfer, options);
|
|
42
|
-
|
|
43
|
-
|
|
74
|
+
}
|
|
75
|
+
case "carray": {
|
|
76
|
+
return arrayExpression(context, type, transfer, indexOptions);
|
|
77
|
+
}
|
|
44
78
|
case "list": {
|
|
45
|
-
|
|
46
|
-
return tByteArray(ownership);
|
|
47
|
-
const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), {
|
|
48
|
-
argIndexOffset,
|
|
49
|
-
});
|
|
50
|
-
return tList(LIST_HELPERS[type.flavor], element, ownership);
|
|
79
|
+
return listExpression(context, type, transfer, indexOptions);
|
|
51
80
|
}
|
|
52
81
|
case "hashtable": {
|
|
53
82
|
const elementTransfer = deriveElementTransfer(transfer);
|
|
54
|
-
const key = renderDescriptor(context, type.key, elementTransfer,
|
|
55
|
-
const value = renderDescriptor(context, type.value, elementTransfer,
|
|
83
|
+
const key = renderDescriptor(context, type.key, elementTransfer, indexOptions);
|
|
84
|
+
const value = renderDescriptor(context, type.value, elementTransfer, indexOptions);
|
|
56
85
|
return tHashTable(key, value, ownership);
|
|
57
86
|
}
|
|
58
87
|
}
|
|
59
88
|
};
|
|
89
|
+
const listExpression = (context, type, transfer, indexOptions) => {
|
|
90
|
+
const ownership = transferOwnership(transfer);
|
|
91
|
+
if (type.flavor === "gbytearray") {
|
|
92
|
+
return tByteArray(ownership);
|
|
93
|
+
}
|
|
94
|
+
const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), indexOptions);
|
|
95
|
+
return tList(LIST_HELPERS[type.flavor], element, ownership);
|
|
96
|
+
};
|
|
60
97
|
const resolveCallbackType = (context, ref) => {
|
|
61
|
-
if (ref === undefined)
|
|
98
|
+
if (ref === undefined) {
|
|
62
99
|
return undefined;
|
|
63
|
-
|
|
64
|
-
|
|
100
|
+
}
|
|
101
|
+
const type = context.library.typeFor(ref);
|
|
102
|
+
if (type?.kind !== "callback") {
|
|
65
103
|
return undefined;
|
|
104
|
+
}
|
|
66
105
|
return type.value;
|
|
67
106
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
107
|
+
const isScalarType = (library, type) => {
|
|
108
|
+
switch (type.kind) {
|
|
109
|
+
case "primitive": {
|
|
110
|
+
return type.category !== "string" && type.category !== "void";
|
|
111
|
+
}
|
|
112
|
+
case "enum": {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
case "alias": {
|
|
116
|
+
return type.value.target !== undefined && isScalarRef(library, type.value.target);
|
|
117
|
+
}
|
|
118
|
+
case "callback":
|
|
119
|
+
case "carray":
|
|
120
|
+
case "class":
|
|
121
|
+
case "hashtable":
|
|
122
|
+
case "interface":
|
|
123
|
+
case "list":
|
|
124
|
+
case "record":
|
|
125
|
+
case "varargs": {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const isScalarRef = (library, ref) => {
|
|
131
|
+
if (ref === undefined) {
|
|
73
132
|
return false;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return true;
|
|
78
|
-
if (type.kind === "alias")
|
|
79
|
-
return type.value.target !== undefined && isScalarRef(library, type.value.target);
|
|
80
|
-
return false;
|
|
133
|
+
}
|
|
134
|
+
const type = library.typeFor(ref);
|
|
135
|
+
return type !== undefined && isScalarType(library, type);
|
|
81
136
|
};
|
|
82
|
-
|
|
83
|
-
|
|
137
|
+
const isCellInout = (library, parameter) => isInoutParameter(parameter) && isScalarRef(library, parameter.type);
|
|
138
|
+
const renderParamDescriptor = (context, parameter, ref, argIndex = {}) => {
|
|
84
139
|
if (isCellInout(context.library, parameter)) {
|
|
85
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership), true);
|
|
140
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, argIndex), true);
|
|
86
141
|
}
|
|
87
142
|
if (isOutParameter(parameter)) {
|
|
88
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership));
|
|
143
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, argIndex));
|
|
89
144
|
}
|
|
90
145
|
return renderDescriptor(context, ref, parameter.transferOwnership, {
|
|
146
|
+
...argIndex,
|
|
91
147
|
callerAllocated: isCallerAllocatedOut(parameter) || isRecordInout(context, parameter),
|
|
92
148
|
});
|
|
93
149
|
};
|
|
94
|
-
|
|
150
|
+
// `closure=` on a callback's own parameter states which slot carries the user data, and it is what
|
|
151
|
+
// the TypeScript signature already goes by. The name scan stays as a fallback: 88 callbacks across
|
|
152
|
+
// the installed GIRs carry no `closure=` at all.
|
|
153
|
+
const userDataIndexByName = (parameters) => {
|
|
154
|
+
let userDataIndex;
|
|
155
|
+
for (const [index, parameter] of parameters.entries()) {
|
|
156
|
+
if (parameter.name === "user_data" || parameter.name === "data") {
|
|
157
|
+
userDataIndex = index;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return userDataIndex;
|
|
161
|
+
};
|
|
162
|
+
const findUserDataIndex = (parameters) => {
|
|
163
|
+
const declared = parameters.find((parameter) => parameter.closureIndex !== undefined);
|
|
164
|
+
return declared?.closureIndex ?? userDataIndexByName(parameters);
|
|
165
|
+
};
|
|
166
|
+
const callbackOptionsArg = (owningParameter, userDataIndex) => {
|
|
167
|
+
const options = [];
|
|
168
|
+
if (owningParameter.destroyIndex !== undefined) {
|
|
169
|
+
options.push("hasDestroy: true");
|
|
170
|
+
}
|
|
171
|
+
if (userDataIndex !== undefined) {
|
|
172
|
+
options.push(`userDataIndex: ${String(userDataIndex)}`);
|
|
173
|
+
}
|
|
174
|
+
if (owningParameter.scope !== undefined) {
|
|
175
|
+
options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);
|
|
176
|
+
}
|
|
177
|
+
return options.length > 0 ? `{ ${options.join(", ")} }` : undefined;
|
|
178
|
+
};
|
|
179
|
+
const renderCallbackType = (context, ref, owningParameter, argOverrides) => {
|
|
95
180
|
const callback = resolveCallbackType(context, ref);
|
|
96
|
-
if (callback === undefined)
|
|
181
|
+
if (callback === undefined) {
|
|
97
182
|
return undefined;
|
|
183
|
+
}
|
|
98
184
|
const argTypes = callback.parameters.map((parameter, index) => argOverrides?.get(index) ?? renderParamDescriptor(context, parameter, parameter.type));
|
|
99
|
-
let userDataIndex;
|
|
100
|
-
callback.parameters.forEach((parameter, index) => {
|
|
101
|
-
if (parameter.name === "user_data" || parameter.name === "data")
|
|
102
|
-
userDataIndex = index;
|
|
103
|
-
});
|
|
104
185
|
const returnRef = callback.returnValue.type;
|
|
105
186
|
const returnType = isVoidRef(context.library, returnRef)
|
|
106
187
|
? tVoid
|
|
107
188
|
: renderDescriptor(context, returnRef, callback.returnValue.transferOwnership);
|
|
108
|
-
const
|
|
109
|
-
if (owningParameter.destroyIndex !== undefined)
|
|
110
|
-
options.push("hasDestroy: true");
|
|
111
|
-
if (userDataIndex !== undefined)
|
|
112
|
-
options.push(`userDataIndex: ${userDataIndex}`);
|
|
113
|
-
if (owningParameter.scope !== undefined)
|
|
114
|
-
options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);
|
|
115
|
-
const optionsArg = options.length > 0 ? `{ ${options.join(", ")} }` : undefined;
|
|
189
|
+
const optionsArg = callbackOptionsArg(owningParameter, findUserDataIndex(callback.parameters));
|
|
116
190
|
return tCallback(argTypes, returnType, optionsArg);
|
|
117
191
|
};
|
|
118
|
-
const LIST_HELPERS = {
|
|
119
|
-
glist: "list",
|
|
120
|
-
gslist: "slist",
|
|
121
|
-
gptrarray: "ptrArray",
|
|
122
|
-
garray: "gArray",
|
|
123
|
-
};
|
|
124
192
|
const primitiveExpression = (category, ownership) => {
|
|
125
|
-
if (category === "void")
|
|
193
|
+
if (category === "void") {
|
|
126
194
|
return tVoid;
|
|
127
|
-
|
|
195
|
+
}
|
|
196
|
+
if (category === "string") {
|
|
128
197
|
return tString(ownership);
|
|
129
|
-
|
|
198
|
+
}
|
|
199
|
+
if (category === "pointer") {
|
|
130
200
|
return tUint64;
|
|
131
|
-
|
|
201
|
+
}
|
|
202
|
+
if (category === "gtype") {
|
|
132
203
|
return tGtype;
|
|
204
|
+
}
|
|
133
205
|
return tScalar(category);
|
|
134
206
|
};
|
|
135
|
-
const referenceAddingFunc = (refFunc) => refFunc.endsWith("_ref_sink") ? refFunc.slice(0, -"_sink".length) : refFunc;
|
|
136
207
|
const renderFundamental = (descriptor) => {
|
|
137
|
-
const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass } = descriptor;
|
|
138
|
-
return tFundamental(lib,
|
|
208
|
+
const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass, inline } = descriptor;
|
|
209
|
+
return tFundamental(lib, refFunc, unrefFunc, {
|
|
139
210
|
ownership,
|
|
140
211
|
typeName,
|
|
141
212
|
wrapperClass,
|
|
213
|
+
inline,
|
|
142
214
|
});
|
|
143
215
|
};
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
216
|
+
// A freshly created floating instance is claimed by sinking it, which is what the fundamental's
|
|
217
|
+
// declared ref function does, so it is marshalled as transfer-none: adopting the floating reference
|
|
218
|
+
// instead would leave the handle releasing a claim it never took.
|
|
219
|
+
const sunkOwnership = (ancestor, ownership, isNewlyCreated) => {
|
|
220
|
+
if (!isNewlyCreated || ownership !== "full" || ancestor.typeName === undefined) {
|
|
221
|
+
return ownership;
|
|
222
|
+
}
|
|
223
|
+
return FLOATING_FUNDAMENTALS.has(ancestor.typeName) ? "borrowed" : ownership;
|
|
224
|
+
};
|
|
225
|
+
// GIR marks only the root of a fundamental hierarchy with `glib:fundamental` and its ref/unref pair,
|
|
226
|
+
// so a derived type such as GtkPropertyExpression carries neither and has to inherit both.
|
|
227
|
+
const classOrInterfaceExpression = (context, resolved, ownership, isNewlyCreated) => {
|
|
228
|
+
const ancestor = fundamentalAncestor(context, resolved);
|
|
229
|
+
if (ancestor === undefined) {
|
|
147
230
|
return tObject(ownership);
|
|
148
231
|
}
|
|
149
|
-
return renderFundamental({
|
|
150
|
-
|
|
232
|
+
return renderFundamental({ ...ancestor, ownership: sunkOwnership(ancestor, ownership, isNewlyCreated) });
|
|
233
|
+
};
|
|
234
|
+
const isClassOrInterface = (type) => type !== undefined && (type.kind === "class" || type.kind === "interface");
|
|
235
|
+
const getFundamental = (node) => {
|
|
236
|
+
const cls = node.value;
|
|
237
|
+
if (!cls.fundamental || cls.glibRefFunc === undefined || cls.glibUnrefFunc === undefined) {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
lib: node.namespace.sharedLibrary ?? "",
|
|
151
242
|
refFunc: cls.glibRefFunc,
|
|
152
243
|
unrefFunc: cls.glibUnrefFunc,
|
|
153
244
|
typeName: cls.glibTypeName,
|
|
154
|
-
|
|
155
|
-
});
|
|
245
|
+
};
|
|
156
246
|
};
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
refFunc: cls.glibRefFunc,
|
|
170
|
-
unrefFunc: cls.glibUnrefFunc,
|
|
171
|
-
typeName: cls.glibTypeName,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
if (cls.parent === undefined)
|
|
175
|
-
return undefined;
|
|
176
|
-
current = context.library.resolveType(current.namespace.name, cls.parent);
|
|
247
|
+
const walkFundamental = (context, current, seen) => {
|
|
248
|
+
if (!isClassOrInterface(current)) {
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
const key = `${current.namespace.name}.${current.value.name}`;
|
|
252
|
+
if (seen.has(key)) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
seen.add(key);
|
|
256
|
+
const fundamental = getFundamental(current);
|
|
257
|
+
if (fundamental !== undefined) {
|
|
258
|
+
return fundamental;
|
|
177
259
|
}
|
|
178
|
-
|
|
260
|
+
if (current.value.parent === undefined) {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
const parent = context.library.resolveType(current.namespace.name, current.value.parent);
|
|
264
|
+
return walkFundamental(context, parent, seen);
|
|
179
265
|
};
|
|
180
|
-
|
|
266
|
+
const fundamentalAncestor = (context, start) => walkFundamental(context, start, new Set());
|
|
267
|
+
const classSelfDescriptor = (context, type) => {
|
|
268
|
+
const ancestor = fundamentalAncestor(context, type);
|
|
269
|
+
return ancestor === undefined ? tObject("borrowed") : renderFundamental({ ...ancestor, ownership: "borrowed" });
|
|
270
|
+
};
|
|
271
|
+
const renderSelfDescriptor = (context, instance) => {
|
|
181
272
|
const ref = instance.type;
|
|
182
|
-
if (ref === undefined)
|
|
273
|
+
if (ref === undefined) {
|
|
183
274
|
return tObject("borrowed");
|
|
184
|
-
|
|
185
|
-
|
|
275
|
+
}
|
|
276
|
+
const type = context.library.typeFor(ref);
|
|
277
|
+
if (type === undefined) {
|
|
186
278
|
return tObject("borrowed");
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return
|
|
279
|
+
}
|
|
280
|
+
if (isClassOrInterface(type)) {
|
|
281
|
+
return classSelfDescriptor(context, type);
|
|
190
282
|
}
|
|
191
283
|
if (type.kind === "record") {
|
|
192
284
|
return recordExpression(context, type, transferOwnership(instance.transferOwnership));
|
|
193
285
|
}
|
|
194
286
|
return tObject("borrowed");
|
|
195
287
|
};
|
|
288
|
+
// A record expresses its acquire/release pair as `copy-function`/`free-function`: no `<record>` in
|
|
289
|
+
// any installed GIR carries `glib:ref-func`, and GVariant's copy function really is
|
|
290
|
+
// `g_variant_ref_sink`.
|
|
196
291
|
const recordRefPair = (record) => ({
|
|
197
292
|
refFunc: record.glibRefFunc ?? record.copyFunc,
|
|
198
293
|
unrefFunc: record.glibUnrefFunc ?? record.freeFunc,
|
|
199
294
|
});
|
|
200
|
-
const
|
|
295
|
+
const requiresFallbackClass = (record) => {
|
|
201
296
|
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
202
|
-
if (refFunc !== undefined && unrefFunc !== undefined)
|
|
297
|
+
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
203
298
|
return record.glibTypeName === undefined;
|
|
299
|
+
}
|
|
204
300
|
return record.glibGetType === undefined;
|
|
205
301
|
};
|
|
206
|
-
const structExpression = (context, resolved, ownership,
|
|
302
|
+
const structExpression = (context, resolved, ownership, options) => {
|
|
207
303
|
const { size } = computeRecordFieldSlots(context, resolved.value.fields, resolved.value.isUnion);
|
|
208
304
|
const wrapperClass = context.qualify(resolved.namespace.name, resolved.value.name);
|
|
305
|
+
const isCopyable = isValueMarshalable(context, resolved.namespace.name, resolved.value);
|
|
209
306
|
return tStruct(ownership, {
|
|
210
|
-
size: size > 0 ? size : undefined,
|
|
307
|
+
size: isCopyable && size > 0 ? size : undefined,
|
|
211
308
|
wrapperClass,
|
|
309
|
+
callerAllocated: options.callerAllocated,
|
|
310
|
+
inline: options.inline,
|
|
311
|
+
});
|
|
312
|
+
};
|
|
313
|
+
const fundamentalRecordExpression = (options) => {
|
|
314
|
+
const { resolved, refFunc, unrefFunc, ownership, wrapperClass, inline } = options;
|
|
315
|
+
return renderFundamental({
|
|
316
|
+
lib: resolved.namespace.sharedLibrary ?? "",
|
|
317
|
+
refFunc,
|
|
318
|
+
unrefFunc,
|
|
319
|
+
typeName: resolved.value.glibTypeName,
|
|
320
|
+
ownership,
|
|
321
|
+
wrapperClass,
|
|
322
|
+
inline,
|
|
323
|
+
});
|
|
324
|
+
};
|
|
325
|
+
const boxedRecordExpression = (options) => {
|
|
326
|
+
const { context, resolved, ownership, callerAllocated, inline, typeFnName } = options;
|
|
327
|
+
const record = resolved.value;
|
|
328
|
+
const glibName = record.glibTypeName ?? record.cType ?? record.name;
|
|
329
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
330
|
+
return tBoxed(glibName, {
|
|
331
|
+
ownership,
|
|
332
|
+
sharedLibrary: resolved.namespace.sharedLibrary,
|
|
333
|
+
getTypeFnName: typeFnName,
|
|
212
334
|
callerAllocated,
|
|
335
|
+
inline,
|
|
336
|
+
size: size > 0 ? size : undefined,
|
|
213
337
|
});
|
|
214
338
|
};
|
|
215
|
-
const
|
|
339
|
+
const plainRecordExpression = (context, resolved, ownership, placement) => {
|
|
340
|
+
const record = resolved.value;
|
|
341
|
+
const layout = {
|
|
342
|
+
callerAllocated: placement.isCallerAllocated ?? false,
|
|
343
|
+
inline: placement.isInline ?? false,
|
|
344
|
+
};
|
|
345
|
+
if (record.glibGetType === undefined) {
|
|
346
|
+
return structExpression(context, resolved, ownership, layout);
|
|
347
|
+
}
|
|
348
|
+
return boxedRecordExpression({ context, resolved, ownership, ...layout, typeFnName: record.glibGetType });
|
|
349
|
+
};
|
|
350
|
+
const recordExpression = (context, resolved, ownership, placement = {}) => {
|
|
216
351
|
const record = resolved.value;
|
|
217
352
|
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
218
|
-
const wrapperClass = recordNeedsFallbackClass(record)
|
|
219
|
-
? context.qualify(resolved.namespace.name, record.name)
|
|
220
|
-
: undefined;
|
|
221
353
|
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
354
|
+
const wrapperClass = requiresFallbackClass(record)
|
|
355
|
+
? context.qualify(resolved.namespace.name, record.name)
|
|
356
|
+
: undefined;
|
|
357
|
+
return fundamentalRecordExpression({
|
|
358
|
+
resolved,
|
|
225
359
|
refFunc,
|
|
226
360
|
unrefFunc,
|
|
227
|
-
typeName: record.glibTypeName,
|
|
228
361
|
ownership,
|
|
229
362
|
wrapperClass,
|
|
363
|
+
inline: placement.isInline ?? false,
|
|
230
364
|
});
|
|
231
365
|
}
|
|
232
|
-
|
|
233
|
-
|
|
366
|
+
return plainRecordExpression(context, resolved, ownership, placement);
|
|
367
|
+
};
|
|
368
|
+
const rawEnumDescriptor = (isSigned) => (isSigned ? tInt32 : tUint32);
|
|
369
|
+
const enumExpression = (resolved) => {
|
|
370
|
+
const getter = resolved.value.glibGetType;
|
|
371
|
+
const isSigned = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
372
|
+
if (getter === undefined || getter === "") {
|
|
373
|
+
return rawEnumDescriptor(isSigned);
|
|
234
374
|
}
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
return tBoxed(glibName, {
|
|
238
|
-
ownership,
|
|
239
|
-
sharedLibrary: resolved.namespace.sharedLibrary,
|
|
240
|
-
getTypeFnName: record.glibGetType,
|
|
241
|
-
callerAllocated,
|
|
242
|
-
size: size > 0 ? size : undefined,
|
|
243
|
-
});
|
|
375
|
+
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
376
|
+
return resolved.value.kind === "bitfield" ? tFlags(lib, getter, isSigned) : tEnum(lib, getter, isSigned);
|
|
244
377
|
};
|
|
245
378
|
const expressionForResolved = (context, resolved, transfer, options) => {
|
|
246
379
|
const ownership = transferOwnership(transfer);
|
|
247
380
|
switch (resolved.kind) {
|
|
248
381
|
case "class":
|
|
249
|
-
case "interface":
|
|
250
|
-
return classOrInterfaceExpression(resolved, ownership);
|
|
251
|
-
|
|
252
|
-
|
|
382
|
+
case "interface": {
|
|
383
|
+
return classOrInterfaceExpression(context, resolved, ownership, options.isNewlyCreated ?? false);
|
|
384
|
+
}
|
|
385
|
+
case "record": {
|
|
386
|
+
return recordExpression(context, resolved, ownership, {
|
|
387
|
+
isCallerAllocated: options.callerAllocated ?? false,
|
|
388
|
+
isInline: options.isInline ?? false,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
253
391
|
case "enum": {
|
|
254
|
-
|
|
255
|
-
const signed = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
256
|
-
if (getter === undefined || getter === "")
|
|
257
|
-
return signed ? tInt32 : tUint32;
|
|
258
|
-
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
259
|
-
return resolved.value.kind === "bitfield" ? tFlags(lib, getter, signed) : tEnum(lib, getter, signed);
|
|
392
|
+
return enumExpression(resolved);
|
|
260
393
|
}
|
|
261
|
-
case "alias":
|
|
394
|
+
case "alias": {
|
|
262
395
|
return aliasExpression(context, resolved.value.target, transfer, options);
|
|
396
|
+
}
|
|
263
397
|
}
|
|
264
398
|
};
|
|
265
|
-
const arrayExpression = (context, ref, transfer,
|
|
399
|
+
const arrayExpression = (context, ref, transfer, options) => {
|
|
400
|
+
if (hasUnknownArrayLength(ref)) {
|
|
401
|
+
return tUint64;
|
|
402
|
+
}
|
|
266
403
|
const ownership = transferOwnership(transfer);
|
|
267
|
-
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer),
|
|
404
|
+
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer), options);
|
|
268
405
|
const size = inlineElementSize(context, ref.element, ref.elementCType);
|
|
269
406
|
if (ref.lengthParameterIndex !== undefined) {
|
|
270
|
-
return tSizedArray(element, ref.lengthParameterIndex
|
|
407
|
+
return tSizedArray(element, mapArgIndex(options, ref.lengthParameterIndex), ownership, size);
|
|
271
408
|
}
|
|
272
409
|
if (ref.fixedSize !== undefined) {
|
|
273
410
|
return tFixedArray(element, ref.fixedSize, ownership, size);
|
|
274
411
|
}
|
|
275
412
|
return tArray(element, ownership, size);
|
|
276
413
|
};
|
|
277
|
-
const
|
|
278
|
-
if (
|
|
414
|
+
const recordInlineSize = (context, record) => {
|
|
415
|
+
if (record.opaque || record.disguised || record.fields.length === 0) {
|
|
279
416
|
return undefined;
|
|
280
|
-
|
|
417
|
+
}
|
|
418
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
419
|
+
return size > 0 ? size : undefined;
|
|
420
|
+
};
|
|
421
|
+
const inlineElementSize = (context, element, elementCType) => {
|
|
422
|
+
if (element === undefined) {
|
|
281
423
|
return undefined;
|
|
282
|
-
|
|
283
|
-
if (
|
|
424
|
+
}
|
|
425
|
+
if (elementCType?.includes("*")) {
|
|
284
426
|
return undefined;
|
|
285
|
-
|
|
286
|
-
|
|
427
|
+
}
|
|
428
|
+
const type = context.library.typeFor(element);
|
|
429
|
+
if (type?.kind !== "record") {
|
|
287
430
|
return undefined;
|
|
288
|
-
|
|
289
|
-
return
|
|
431
|
+
}
|
|
432
|
+
return recordInlineSize(context, type.value);
|
|
290
433
|
};
|
|
291
434
|
const aliasExpression = (context, target, transfer, options) => {
|
|
292
435
|
if (target === undefined) {
|
|
@@ -294,4 +437,5 @@ const aliasExpression = (context, target, transfer, options) => {
|
|
|
294
437
|
}
|
|
295
438
|
return renderDescriptor(context, target, transfer, options);
|
|
296
439
|
};
|
|
440
|
+
export { isInlineCallbackRef, shouldOmitPrimaryReturn, renderDescriptor, isScalarRef, isCellInout, renderParamDescriptor, renderCallbackType, renderSelfDescriptor, };
|
|
297
441
|
//# sourceMappingURL=descriptor-render.js.map
|