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