@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,6 +1,9 @@
|
|
|
1
1
|
import { sourceStringLiteral } from "@gtkx/utils";
|
|
2
2
|
import type { GirCallback } from "../gir/callback.js";
|
|
3
3
|
import type { Library } from "../gir/library.js";
|
|
4
|
+
import type { PrimitiveCategory } from "../gir/primitives.js";
|
|
5
|
+
import type { EntityType, GirType } from "../gir/type.js";
|
|
6
|
+
import type { ModuleContext } from "../writer/context.js";
|
|
4
7
|
import {
|
|
5
8
|
type GirParameter,
|
|
6
9
|
type GirReturnValue,
|
|
@@ -9,12 +12,16 @@ import {
|
|
|
9
12
|
isOutParameter,
|
|
10
13
|
type ParameterTransfer,
|
|
11
14
|
} from "../gir/parameter.js";
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
import {
|
|
16
|
+
type CArrayType,
|
|
17
|
+
hasUnknownArrayLength,
|
|
18
|
+
type ListFlavor,
|
|
19
|
+
type ListType,
|
|
20
|
+
type TypeId,
|
|
21
|
+
} from "../gir/type-id.js";
|
|
15
22
|
import { isRecordInout } from "../store/gi/param-marshal.js";
|
|
16
23
|
import { computeRecordFieldSlots } from "../store/gi/record-layout.js";
|
|
17
|
-
import
|
|
24
|
+
import { isValueMarshalable } from "../store/gi/value-marshalable.js";
|
|
18
25
|
import {
|
|
19
26
|
type ListDescriptorName,
|
|
20
27
|
type Ownership,
|
|
@@ -42,246 +49,482 @@ import {
|
|
|
42
49
|
tVoid,
|
|
43
50
|
} from "./descriptor.js";
|
|
44
51
|
|
|
52
|
+
type RenderDescriptorOptions = {
|
|
53
|
+
argIndexOffset?: number;
|
|
54
|
+
/** GIR parameter index to emitted argument index, for callables that drop parameters. */
|
|
55
|
+
argIndexMap?: Map<number, number> | undefined;
|
|
56
|
+
callerAllocated?: boolean;
|
|
57
|
+
isInline?: boolean;
|
|
58
|
+
/** Set on the return value of a callable with no instance parameter, which creates what it returns. */
|
|
59
|
+
isNewlyCreated?: boolean;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
type ArgIndexOptions = {
|
|
63
|
+
argIndexOffset: number;
|
|
64
|
+
argIndexMap: Map<number, number> | undefined;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
type RecordPlacement = {
|
|
68
|
+
isCallerAllocated?: boolean;
|
|
69
|
+
isInline?: boolean;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
type FundamentalDescriptor = {
|
|
73
|
+
lib: string;
|
|
74
|
+
refFunc: string;
|
|
75
|
+
unrefFunc: string;
|
|
76
|
+
typeName: string | undefined;
|
|
77
|
+
ownership: Ownership;
|
|
78
|
+
wrapperClass?: string | undefined;
|
|
79
|
+
inline?: boolean | undefined;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
type AncestorFundamental = {
|
|
83
|
+
lib: string;
|
|
84
|
+
refFunc: string;
|
|
85
|
+
unrefFunc: string;
|
|
86
|
+
typeName: string | undefined;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
type ResolvedRecord = Extract<EntityType, { kind: "record" }>["value"];
|
|
90
|
+
|
|
91
|
+
type FundamentalRecordOptions = {
|
|
92
|
+
resolved: Extract<EntityType, { kind: "record" }>;
|
|
93
|
+
refFunc: string;
|
|
94
|
+
unrefFunc: string;
|
|
95
|
+
ownership: Ownership;
|
|
96
|
+
wrapperClass: string | undefined;
|
|
97
|
+
inline: boolean;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const LIST_HELPERS: Record<Exclude<ListFlavor, "gbytearray">, ListDescriptorName> = {
|
|
101
|
+
glist: "list",
|
|
102
|
+
gslist: "slist",
|
|
103
|
+
gptrarray: "ptrArray",
|
|
104
|
+
garray: "gArray",
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* `glib:type-name` of every fundamental whose instances are born with a floating reference, so a
|
|
109
|
+
* callable that creates one hands back a claim nobody has taken rather than an owned reference.
|
|
110
|
+
* GIR annotates those returns `transfer-ownership="full"` all the same, so the annotation alone
|
|
111
|
+
* cannot tell them apart from a genuinely owned return such as `g_param_spec_ref`.
|
|
112
|
+
*/
|
|
113
|
+
const FLOATING_FUNDAMENTALS: Set<string> = new Set(["GParam"]);
|
|
114
|
+
|
|
115
|
+
// A callable that drops parameters (varargs, and the closure/destroy slots folded into a callback)
|
|
116
|
+
// shifts every later parameter left, so a GIR length index has to be looked up in the emitted list
|
|
117
|
+
// rather than shifted by the instance offset alone.
|
|
118
|
+
const mapArgIndex = (options: ArgIndexOptions, girIndex: number): number =>
|
|
119
|
+
options.argIndexMap?.get(girIndex) ?? girIndex + options.argIndexOffset;
|
|
120
|
+
|
|
45
121
|
const transferOwnership = (transfer: ParameterTransfer): Ownership => {
|
|
46
|
-
if (transfer === "full")
|
|
47
|
-
|
|
122
|
+
if (transfer === "full") {
|
|
123
|
+
return "full";
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (transfer === "container") {
|
|
127
|
+
return "full";
|
|
128
|
+
}
|
|
129
|
+
|
|
48
130
|
return "borrowed";
|
|
49
131
|
};
|
|
50
132
|
|
|
51
133
|
const deriveElementTransfer = (transfer: ParameterTransfer): ParameterTransfer =>
|
|
52
134
|
transfer === "container" ? "none" : transfer;
|
|
53
135
|
|
|
54
|
-
type RenderDescriptorOptions = {
|
|
55
|
-
argIndexOffset?: number;
|
|
56
|
-
callerAllocated?: boolean;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
136
|
const isVoidRef = (library: Library, ref: TypeId | undefined): boolean => {
|
|
60
|
-
if (ref === undefined)
|
|
61
|
-
|
|
137
|
+
if (ref === undefined) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const type = library.typeFor(ref);
|
|
142
|
+
|
|
62
143
|
return type?.kind === "primitive" && type.category === "void";
|
|
63
144
|
};
|
|
64
145
|
|
|
65
|
-
|
|
66
|
-
ref !== undefined && library.
|
|
146
|
+
const isInlineCallbackRef = (library: Library, ref: TypeId | undefined): boolean =>
|
|
147
|
+
ref !== undefined && library.typeFor(ref)?.kind === "callback" && library.nameFor(ref) === undefined;
|
|
67
148
|
|
|
68
|
-
|
|
149
|
+
const shouldOmitPrimaryReturn = (library: Library, returnValue: GirReturnValue): boolean =>
|
|
69
150
|
isVoidRef(library, returnValue.type) || returnValue.skip;
|
|
70
151
|
|
|
71
|
-
|
|
152
|
+
const renderDescriptor = (
|
|
72
153
|
context: ModuleContext,
|
|
73
154
|
ref: TypeId | undefined,
|
|
74
155
|
transfer: ParameterTransfer = "none",
|
|
75
156
|
options: RenderDescriptorOptions = {},
|
|
76
157
|
): string => {
|
|
77
|
-
if (ref === undefined)
|
|
158
|
+
if (ref === undefined) {
|
|
159
|
+
return tVoid;
|
|
160
|
+
}
|
|
161
|
+
|
|
78
162
|
const { argIndexOffset = 0 } = options;
|
|
163
|
+
const indexOptions: ArgIndexOptions = { argIndexOffset, argIndexMap: options.argIndexMap };
|
|
79
164
|
const ownership = transferOwnership(transfer);
|
|
80
|
-
const type = context.library.
|
|
81
|
-
|
|
165
|
+
const type = context.library.typeFor(ref);
|
|
166
|
+
|
|
167
|
+
if (type === undefined) {
|
|
168
|
+
return tObject(ownership);
|
|
169
|
+
}
|
|
170
|
+
|
|
82
171
|
switch (type.kind) {
|
|
83
|
-
case "primitive":
|
|
172
|
+
case "primitive": {
|
|
84
173
|
return primitiveExpression(type.category, ownership);
|
|
85
|
-
|
|
86
|
-
case "
|
|
174
|
+
}
|
|
175
|
+
case "varargs": {
|
|
87
176
|
return tVoid;
|
|
177
|
+
}
|
|
178
|
+
// A callback in a slot no `renderCallbackType` covers (a vtable entry, a signal argument, a
|
|
179
|
+
// record field) is still a function pointer occupying a pointer-sized slot. `t.void` would
|
|
180
|
+
// hand the implementation `undefined` where the pointer belongs.
|
|
181
|
+
case "callback": {
|
|
182
|
+
return tUint64;
|
|
183
|
+
}
|
|
88
184
|
case "class":
|
|
89
185
|
case "interface":
|
|
90
186
|
case "record":
|
|
91
187
|
case "enum":
|
|
92
|
-
case "alias":
|
|
188
|
+
case "alias": {
|
|
93
189
|
return expressionForResolved(context, type, transfer, options);
|
|
94
|
-
|
|
95
|
-
|
|
190
|
+
}
|
|
191
|
+
case "carray": {
|
|
192
|
+
return arrayExpression(context, type, transfer, indexOptions);
|
|
193
|
+
}
|
|
96
194
|
case "list": {
|
|
97
|
-
|
|
98
|
-
const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), {
|
|
99
|
-
argIndexOffset,
|
|
100
|
-
});
|
|
101
|
-
return tList(LIST_HELPERS[type.flavor], element, ownership);
|
|
195
|
+
return listExpression(context, type, transfer, indexOptions);
|
|
102
196
|
}
|
|
103
197
|
case "hashtable": {
|
|
104
198
|
const elementTransfer = deriveElementTransfer(transfer);
|
|
105
|
-
const key = renderDescriptor(context, type.key, elementTransfer,
|
|
106
|
-
const value = renderDescriptor(context, type.value, elementTransfer,
|
|
199
|
+
const key = renderDescriptor(context, type.key, elementTransfer, indexOptions);
|
|
200
|
+
const value = renderDescriptor(context, type.value, elementTransfer, indexOptions);
|
|
201
|
+
|
|
107
202
|
return tHashTable(key, value, ownership);
|
|
108
203
|
}
|
|
109
204
|
}
|
|
110
205
|
};
|
|
111
206
|
|
|
207
|
+
const listExpression = (
|
|
208
|
+
context: ModuleContext,
|
|
209
|
+
type: ListType,
|
|
210
|
+
transfer: ParameterTransfer,
|
|
211
|
+
indexOptions: ArgIndexOptions,
|
|
212
|
+
): string => {
|
|
213
|
+
const ownership = transferOwnership(transfer);
|
|
214
|
+
|
|
215
|
+
if (type.flavor === "gbytearray") {
|
|
216
|
+
return tByteArray(ownership);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const element = renderDescriptor(context, type.element, deriveElementTransfer(transfer), indexOptions);
|
|
220
|
+
|
|
221
|
+
return tList(LIST_HELPERS[type.flavor], element, ownership);
|
|
222
|
+
};
|
|
223
|
+
|
|
112
224
|
const resolveCallbackType = (context: ModuleContext, ref: TypeId | undefined): GirCallback | undefined => {
|
|
113
|
-
if (ref === undefined)
|
|
114
|
-
|
|
115
|
-
|
|
225
|
+
if (ref === undefined) {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const type = context.library.typeFor(ref);
|
|
230
|
+
|
|
231
|
+
if (type?.kind !== "callback") {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
|
|
116
235
|
return type.value;
|
|
117
236
|
};
|
|
118
237
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
238
|
+
const isScalarType = (library: Library, type: GirType): boolean => {
|
|
239
|
+
switch (type.kind) {
|
|
240
|
+
case "primitive": {
|
|
241
|
+
return type.category !== "string" && type.category !== "void";
|
|
242
|
+
}
|
|
243
|
+
case "enum": {
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
case "alias": {
|
|
247
|
+
return type.value.target !== undefined && isScalarRef(library, type.value.target);
|
|
248
|
+
}
|
|
249
|
+
case "callback":
|
|
250
|
+
case "carray":
|
|
251
|
+
case "class":
|
|
252
|
+
case "hashtable":
|
|
253
|
+
case "interface":
|
|
254
|
+
case "list":
|
|
255
|
+
case "record":
|
|
256
|
+
case "varargs": {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
const isScalarRef = (library: Library, ref: TypeId | undefined): boolean => {
|
|
263
|
+
if (ref === undefined) {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const type = library.typeFor(ref);
|
|
268
|
+
|
|
269
|
+
return type !== undefined && isScalarType(library, type);
|
|
127
270
|
};
|
|
128
271
|
|
|
129
|
-
|
|
272
|
+
const isCellInout = (library: Library, parameter: GirParameter): boolean =>
|
|
130
273
|
isInoutParameter(parameter) && isScalarRef(library, parameter.type);
|
|
131
274
|
|
|
132
|
-
|
|
275
|
+
const renderParamDescriptor = (
|
|
133
276
|
context: ModuleContext,
|
|
134
277
|
parameter: GirParameter,
|
|
135
278
|
ref: TypeId | undefined,
|
|
279
|
+
argIndex: Partial<ArgIndexOptions> = {},
|
|
136
280
|
): string => {
|
|
137
281
|
if (isCellInout(context.library, parameter)) {
|
|
138
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership), true);
|
|
282
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, argIndex), true);
|
|
139
283
|
}
|
|
284
|
+
|
|
140
285
|
if (isOutParameter(parameter)) {
|
|
141
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership));
|
|
286
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, argIndex));
|
|
142
287
|
}
|
|
288
|
+
|
|
143
289
|
return renderDescriptor(context, ref, parameter.transferOwnership, {
|
|
290
|
+
...argIndex,
|
|
144
291
|
callerAllocated: isCallerAllocatedOut(parameter) || isRecordInout(context, parameter),
|
|
145
292
|
});
|
|
146
293
|
};
|
|
147
294
|
|
|
148
|
-
|
|
295
|
+
// `closure=` on a callback's own parameter states which slot carries the user data, and it is what
|
|
296
|
+
// the TypeScript signature already goes by. The name scan stays as a fallback: 88 callbacks across
|
|
297
|
+
// the installed GIRs carry no `closure=` at all.
|
|
298
|
+
const userDataIndexByName = (parameters: GirParameter[]): number | undefined => {
|
|
299
|
+
let userDataIndex: number | undefined;
|
|
300
|
+
|
|
301
|
+
for (const [index, parameter] of parameters.entries()) {
|
|
302
|
+
if (parameter.name === "user_data" || parameter.name === "data") {
|
|
303
|
+
userDataIndex = index;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return userDataIndex;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
const findUserDataIndex = (parameters: GirParameter[]): number | undefined => {
|
|
311
|
+
const declared = parameters.find((parameter) => parameter.closureIndex !== undefined);
|
|
312
|
+
|
|
313
|
+
return declared?.closureIndex ?? userDataIndexByName(parameters);
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const callbackOptionsArg = (owningParameter: GirParameter, userDataIndex: number | undefined): string | undefined => {
|
|
317
|
+
const options: string[] = [];
|
|
318
|
+
|
|
319
|
+
if (owningParameter.destroyIndex !== undefined) {
|
|
320
|
+
options.push("hasDestroy: true");
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (userDataIndex !== undefined) {
|
|
324
|
+
options.push(`userDataIndex: ${String(userDataIndex)}`);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (owningParameter.scope !== undefined) {
|
|
328
|
+
options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return options.length > 0 ? `{ ${options.join(", ")} }` : undefined;
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
const renderCallbackType = (
|
|
149
335
|
context: ModuleContext,
|
|
150
336
|
ref: TypeId | undefined,
|
|
151
337
|
owningParameter: GirParameter,
|
|
152
338
|
argOverrides?: Map<number, string>,
|
|
153
339
|
): string | undefined => {
|
|
154
340
|
const callback = resolveCallbackType(context, ref);
|
|
155
|
-
|
|
341
|
+
|
|
342
|
+
if (callback === undefined) {
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
|
|
156
346
|
const argTypes = callback.parameters.map(
|
|
157
347
|
(parameter, index) => argOverrides?.get(index) ?? renderParamDescriptor(context, parameter, parameter.type),
|
|
158
348
|
);
|
|
159
|
-
|
|
160
|
-
callback.parameters.forEach((parameter, index) => {
|
|
161
|
-
if (parameter.name === "user_data" || parameter.name === "data") userDataIndex = index;
|
|
162
|
-
});
|
|
349
|
+
|
|
163
350
|
const returnRef = callback.returnValue.type;
|
|
351
|
+
|
|
164
352
|
const returnType = isVoidRef(context.library, returnRef)
|
|
165
353
|
? tVoid
|
|
166
354
|
: renderDescriptor(context, returnRef, callback.returnValue.transferOwnership);
|
|
167
|
-
const options: string[] = [];
|
|
168
|
-
if (owningParameter.destroyIndex !== undefined) options.push("hasDestroy: true");
|
|
169
|
-
if (userDataIndex !== undefined) options.push(`userDataIndex: ${userDataIndex}`);
|
|
170
|
-
if (owningParameter.scope !== undefined) options.push(`scope: ${sourceStringLiteral(owningParameter.scope)}`);
|
|
171
|
-
const optionsArg = options.length > 0 ? `{ ${options.join(", ")} }` : undefined;
|
|
172
|
-
return tCallback(argTypes, returnType, optionsArg);
|
|
173
|
-
};
|
|
174
355
|
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
gptrarray: "ptrArray",
|
|
179
|
-
garray: "gArray",
|
|
356
|
+
const optionsArg = callbackOptionsArg(owningParameter, findUserDataIndex(callback.parameters));
|
|
357
|
+
|
|
358
|
+
return tCallback(argTypes, returnType, optionsArg);
|
|
180
359
|
};
|
|
181
360
|
|
|
182
361
|
const primitiveExpression = (category: PrimitiveCategory, ownership: Ownership): string => {
|
|
183
|
-
if (category === "void")
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (category === "gtype") return tGtype;
|
|
187
|
-
return tScalar(category satisfies ScalarDescriptorName);
|
|
188
|
-
};
|
|
362
|
+
if (category === "void") {
|
|
363
|
+
return tVoid;
|
|
364
|
+
}
|
|
189
365
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
unrefFunc: string;
|
|
194
|
-
typeName: string | undefined;
|
|
195
|
-
ownership: Ownership;
|
|
196
|
-
wrapperClass?: string | undefined;
|
|
197
|
-
};
|
|
366
|
+
if (category === "string") {
|
|
367
|
+
return tString(ownership);
|
|
368
|
+
}
|
|
198
369
|
|
|
199
|
-
|
|
200
|
-
|
|
370
|
+
if (category === "pointer") {
|
|
371
|
+
return tUint64;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (category === "gtype") {
|
|
375
|
+
return tGtype;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
return tScalar(category satisfies ScalarDescriptorName);
|
|
379
|
+
};
|
|
201
380
|
|
|
202
381
|
const renderFundamental = (descriptor: FundamentalDescriptor): string => {
|
|
203
|
-
const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass } = descriptor;
|
|
204
|
-
|
|
382
|
+
const { lib, refFunc, unrefFunc, typeName, ownership, wrapperClass, inline } = descriptor;
|
|
383
|
+
|
|
384
|
+
return tFundamental(lib, refFunc, unrefFunc, {
|
|
205
385
|
ownership,
|
|
206
386
|
typeName,
|
|
207
387
|
wrapperClass,
|
|
388
|
+
inline,
|
|
208
389
|
});
|
|
209
390
|
};
|
|
210
391
|
|
|
392
|
+
// A freshly created floating instance is claimed by sinking it, which is what the fundamental's
|
|
393
|
+
// declared ref function does, so it is marshalled as transfer-none: adopting the floating reference
|
|
394
|
+
// instead would leave the handle releasing a claim it never took.
|
|
395
|
+
const sunkOwnership = (
|
|
396
|
+
ancestor: AncestorFundamental,
|
|
397
|
+
ownership: Ownership,
|
|
398
|
+
isNewlyCreated: boolean,
|
|
399
|
+
): Ownership => {
|
|
400
|
+
if (!isNewlyCreated || ownership !== "full" || ancestor.typeName === undefined) {
|
|
401
|
+
return ownership;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return FLOATING_FUNDAMENTALS.has(ancestor.typeName) ? "borrowed" : ownership;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
// GIR marks only the root of a fundamental hierarchy with `glib:fundamental` and its ref/unref pair,
|
|
408
|
+
// so a derived type such as GtkPropertyExpression carries neither and has to inherit both.
|
|
211
409
|
const classOrInterfaceExpression = (
|
|
410
|
+
context: ModuleContext,
|
|
212
411
|
resolved: Extract<EntityType, { kind: "class" | "interface" }>,
|
|
213
412
|
ownership: Ownership,
|
|
413
|
+
isNewlyCreated: boolean,
|
|
214
414
|
): string => {
|
|
215
|
-
const
|
|
216
|
-
|
|
415
|
+
const ancestor = fundamentalAncestor(context, resolved);
|
|
416
|
+
|
|
417
|
+
if (ancestor === undefined) {
|
|
217
418
|
return tObject(ownership);
|
|
218
419
|
}
|
|
219
|
-
|
|
220
|
-
|
|
420
|
+
|
|
421
|
+
return renderFundamental({ ...ancestor, ownership: sunkOwnership(ancestor, ownership, isNewlyCreated) });
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
const isClassOrInterface = (type: GirType | undefined): type is Extract<EntityType, { kind: "class" | "interface" }> =>
|
|
425
|
+
type !== undefined && (type.kind === "class" || type.kind === "interface");
|
|
426
|
+
|
|
427
|
+
const getFundamental = (
|
|
428
|
+
node: Extract<EntityType, { kind: "class" | "interface" }>,
|
|
429
|
+
): AncestorFundamental | undefined => {
|
|
430
|
+
const cls = node.value;
|
|
431
|
+
|
|
432
|
+
if (!cls.fundamental || cls.glibRefFunc === undefined || cls.glibUnrefFunc === undefined) {
|
|
433
|
+
return undefined;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
return {
|
|
437
|
+
lib: node.namespace.sharedLibrary ?? "",
|
|
221
438
|
refFunc: cls.glibRefFunc,
|
|
222
439
|
unrefFunc: cls.glibUnrefFunc,
|
|
223
440
|
typeName: cls.glibTypeName,
|
|
224
|
-
|
|
225
|
-
});
|
|
441
|
+
};
|
|
226
442
|
};
|
|
227
443
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
444
|
+
const walkFundamental = (
|
|
445
|
+
context: ModuleContext,
|
|
446
|
+
current: GirType | undefined,
|
|
447
|
+
seen: Set<string>,
|
|
448
|
+
): AncestorFundamental | undefined => {
|
|
449
|
+
if (!isClassOrInterface(current)) {
|
|
450
|
+
return undefined;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
const key = `${current.namespace.name}.${current.value.name}`;
|
|
454
|
+
|
|
455
|
+
if (seen.has(key)) {
|
|
456
|
+
return undefined;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
seen.add(key);
|
|
460
|
+
const fundamental = getFundamental(current);
|
|
461
|
+
|
|
462
|
+
if (fundamental !== undefined) {
|
|
463
|
+
return fundamental;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
if (current.value.parent === undefined) {
|
|
467
|
+
return undefined;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const parent = context.library.resolveType(current.namespace.name, current.value.parent);
|
|
471
|
+
|
|
472
|
+
return walkFundamental(context, parent, seen);
|
|
233
473
|
};
|
|
234
474
|
|
|
235
475
|
const fundamentalAncestor = (
|
|
236
476
|
context: ModuleContext,
|
|
237
477
|
start: Extract<EntityType, { kind: "class" | "interface" }>,
|
|
238
|
-
): AncestorFundamental | undefined =>
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
return {
|
|
248
|
-
lib: current.namespace.sharedLibrary ?? "",
|
|
249
|
-
refFunc: cls.glibRefFunc,
|
|
250
|
-
unrefFunc: cls.glibUnrefFunc,
|
|
251
|
-
typeName: cls.glibTypeName,
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
if (cls.parent === undefined) return undefined;
|
|
255
|
-
current = context.library.resolveType(current.namespace.name, cls.parent);
|
|
256
|
-
}
|
|
257
|
-
return undefined;
|
|
478
|
+
): AncestorFundamental | undefined => walkFundamental(context, start, new Set<string>());
|
|
479
|
+
|
|
480
|
+
const classSelfDescriptor = (
|
|
481
|
+
context: ModuleContext,
|
|
482
|
+
type: Extract<EntityType, { kind: "class" | "interface" }>,
|
|
483
|
+
): string => {
|
|
484
|
+
const ancestor = fundamentalAncestor(context, type);
|
|
485
|
+
|
|
486
|
+
return ancestor === undefined ? tObject("borrowed") : renderFundamental({ ...ancestor, ownership: "borrowed" });
|
|
258
487
|
};
|
|
259
488
|
|
|
260
|
-
|
|
489
|
+
const renderSelfDescriptor = (context: ModuleContext, instance: GirParameter): string => {
|
|
261
490
|
const ref = instance.type;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
491
|
+
|
|
492
|
+
if (ref === undefined) {
|
|
493
|
+
return tObject("borrowed");
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
const type = context.library.typeFor(ref);
|
|
497
|
+
|
|
498
|
+
if (type === undefined) {
|
|
499
|
+
return tObject("borrowed");
|
|
268
500
|
}
|
|
501
|
+
|
|
502
|
+
if (isClassOrInterface(type)) {
|
|
503
|
+
return classSelfDescriptor(context, type);
|
|
504
|
+
}
|
|
505
|
+
|
|
269
506
|
if (type.kind === "record") {
|
|
270
507
|
return recordExpression(context, type, transferOwnership(instance.transferOwnership));
|
|
271
508
|
}
|
|
509
|
+
|
|
272
510
|
return tObject("borrowed");
|
|
273
511
|
};
|
|
274
512
|
|
|
275
|
-
|
|
276
|
-
|
|
513
|
+
// A record expresses its acquire/release pair as `copy-function`/`free-function`: no `<record>` in
|
|
514
|
+
// any installed GIR carries `glib:ref-func`, and GVariant's copy function really is
|
|
515
|
+
// `g_variant_ref_sink`.
|
|
277
516
|
const recordRefPair = (record: ResolvedRecord): { refFunc: string | undefined; unrefFunc: string | undefined } => ({
|
|
278
517
|
refFunc: record.glibRefFunc ?? record.copyFunc,
|
|
279
518
|
unrefFunc: record.glibUnrefFunc ?? record.freeFunc,
|
|
280
519
|
});
|
|
281
520
|
|
|
282
|
-
const
|
|
521
|
+
const requiresFallbackClass = (record: ResolvedRecord): boolean => {
|
|
283
522
|
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
284
|
-
|
|
523
|
+
|
|
524
|
+
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
525
|
+
return record.glibTypeName === undefined;
|
|
526
|
+
}
|
|
527
|
+
|
|
285
528
|
return record.glibGetType === undefined;
|
|
286
529
|
};
|
|
287
530
|
|
|
@@ -289,51 +532,117 @@ const structExpression = (
|
|
|
289
532
|
context: ModuleContext,
|
|
290
533
|
resolved: Extract<EntityType, { kind: "record" }>,
|
|
291
534
|
ownership: Ownership,
|
|
292
|
-
callerAllocated: boolean,
|
|
535
|
+
options: { callerAllocated: boolean; inline: boolean },
|
|
293
536
|
): string => {
|
|
294
537
|
const { size } = computeRecordFieldSlots(context, resolved.value.fields, resolved.value.isUnion);
|
|
295
538
|
const wrapperClass = context.qualify(resolved.namespace.name, resolved.value.name);
|
|
539
|
+
const isCopyable = isValueMarshalable(context, resolved.namespace.name, resolved.value);
|
|
540
|
+
|
|
296
541
|
return tStruct(ownership, {
|
|
297
|
-
size: size > 0 ? size : undefined,
|
|
542
|
+
size: isCopyable && size > 0 ? size : undefined,
|
|
298
543
|
wrapperClass,
|
|
544
|
+
callerAllocated: options.callerAllocated,
|
|
545
|
+
inline: options.inline,
|
|
546
|
+
});
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
const fundamentalRecordExpression = (options: FundamentalRecordOptions): string => {
|
|
550
|
+
const { resolved, refFunc, unrefFunc, ownership, wrapperClass, inline } = options;
|
|
551
|
+
|
|
552
|
+
return renderFundamental({
|
|
553
|
+
lib: resolved.namespace.sharedLibrary ?? "",
|
|
554
|
+
refFunc,
|
|
555
|
+
unrefFunc,
|
|
556
|
+
typeName: resolved.value.glibTypeName,
|
|
557
|
+
ownership,
|
|
558
|
+
wrapperClass,
|
|
559
|
+
inline,
|
|
560
|
+
});
|
|
561
|
+
};
|
|
562
|
+
|
|
563
|
+
const boxedRecordExpression = (options: {
|
|
564
|
+
context: ModuleContext;
|
|
565
|
+
resolved: Extract<EntityType, { kind: "record" }>;
|
|
566
|
+
ownership: Ownership;
|
|
567
|
+
callerAllocated: boolean;
|
|
568
|
+
inline: boolean;
|
|
569
|
+
typeFnName: string;
|
|
570
|
+
}): string => {
|
|
571
|
+
const { context, resolved, ownership, callerAllocated, inline, typeFnName } = options;
|
|
572
|
+
const record = resolved.value;
|
|
573
|
+
const glibName = record.glibTypeName ?? record.cType ?? record.name;
|
|
574
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
575
|
+
|
|
576
|
+
return tBoxed(glibName, {
|
|
577
|
+
ownership,
|
|
578
|
+
sharedLibrary: resolved.namespace.sharedLibrary,
|
|
579
|
+
getTypeFnName: typeFnName,
|
|
299
580
|
callerAllocated,
|
|
581
|
+
inline,
|
|
582
|
+
size: size > 0 ? size : undefined,
|
|
300
583
|
});
|
|
301
584
|
};
|
|
302
585
|
|
|
586
|
+
const plainRecordExpression = (
|
|
587
|
+
context: ModuleContext,
|
|
588
|
+
resolved: Extract<EntityType, { kind: "record" }>,
|
|
589
|
+
ownership: Ownership,
|
|
590
|
+
placement: RecordPlacement,
|
|
591
|
+
): string => {
|
|
592
|
+
const record = resolved.value;
|
|
593
|
+
|
|
594
|
+
const layout = {
|
|
595
|
+
callerAllocated: placement.isCallerAllocated ?? false,
|
|
596
|
+
inline: placement.isInline ?? false,
|
|
597
|
+
};
|
|
598
|
+
|
|
599
|
+
if (record.glibGetType === undefined) {
|
|
600
|
+
return structExpression(context, resolved, ownership, layout);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
return boxedRecordExpression({ context, resolved, ownership, ...layout, typeFnName: record.glibGetType });
|
|
604
|
+
};
|
|
605
|
+
|
|
303
606
|
const recordExpression = (
|
|
304
607
|
context: ModuleContext,
|
|
305
608
|
resolved: Extract<EntityType, { kind: "record" }>,
|
|
306
609
|
ownership: Ownership,
|
|
307
|
-
|
|
610
|
+
placement: RecordPlacement = {},
|
|
308
611
|
): string => {
|
|
309
612
|
const record = resolved.value;
|
|
310
613
|
const { refFunc, unrefFunc } = recordRefPair(record);
|
|
311
|
-
|
|
312
|
-
? context.qualify(resolved.namespace.name, record.name)
|
|
313
|
-
: undefined;
|
|
614
|
+
|
|
314
615
|
if (refFunc !== undefined && unrefFunc !== undefined) {
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
616
|
+
const wrapperClass = requiresFallbackClass(record)
|
|
617
|
+
? context.qualify(resolved.namespace.name, record.name)
|
|
618
|
+
: undefined;
|
|
619
|
+
|
|
620
|
+
return fundamentalRecordExpression({
|
|
621
|
+
resolved,
|
|
318
622
|
refFunc,
|
|
319
623
|
unrefFunc,
|
|
320
|
-
typeName: record.glibTypeName,
|
|
321
624
|
ownership,
|
|
322
625
|
wrapperClass,
|
|
626
|
+
inline: placement.isInline ?? false,
|
|
323
627
|
});
|
|
324
628
|
}
|
|
325
|
-
|
|
326
|
-
|
|
629
|
+
|
|
630
|
+
return plainRecordExpression(context, resolved, ownership, placement);
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
const rawEnumDescriptor = (isSigned: boolean): string => (isSigned ? tInt32 : tUint32);
|
|
634
|
+
|
|
635
|
+
const enumExpression = (resolved: Extract<EntityType, { kind: "enum" }>): string => {
|
|
636
|
+
const getter = resolved.value.glibGetType;
|
|
637
|
+
const isSigned = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
638
|
+
|
|
639
|
+
if (getter === undefined || getter === "") {
|
|
640
|
+
return rawEnumDescriptor(isSigned);
|
|
327
641
|
}
|
|
328
|
-
|
|
329
|
-
const
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
sharedLibrary: resolved.namespace.sharedLibrary,
|
|
333
|
-
getTypeFnName: record.glibGetType,
|
|
334
|
-
callerAllocated,
|
|
335
|
-
size: size > 0 ? size : undefined,
|
|
336
|
-
});
|
|
642
|
+
|
|
643
|
+
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
644
|
+
|
|
645
|
+
return resolved.value.kind === "bitfield" ? tFlags(lib, getter, isSigned) : tEnum(lib, getter, isSigned);
|
|
337
646
|
};
|
|
338
647
|
|
|
339
648
|
const expressionForResolved = (
|
|
@@ -343,21 +652,24 @@ const expressionForResolved = (
|
|
|
343
652
|
options: RenderDescriptorOptions,
|
|
344
653
|
): string => {
|
|
345
654
|
const ownership = transferOwnership(transfer);
|
|
655
|
+
|
|
346
656
|
switch (resolved.kind) {
|
|
347
657
|
case "class":
|
|
348
|
-
case "interface":
|
|
349
|
-
return classOrInterfaceExpression(resolved, ownership);
|
|
350
|
-
|
|
351
|
-
|
|
658
|
+
case "interface": {
|
|
659
|
+
return classOrInterfaceExpression(context, resolved, ownership, options.isNewlyCreated ?? false);
|
|
660
|
+
}
|
|
661
|
+
case "record": {
|
|
662
|
+
return recordExpression(context, resolved, ownership, {
|
|
663
|
+
isCallerAllocated: options.callerAllocated ?? false,
|
|
664
|
+
isInline: options.isInline ?? false,
|
|
665
|
+
});
|
|
666
|
+
}
|
|
352
667
|
case "enum": {
|
|
353
|
-
|
|
354
|
-
const signed = resolved.value.members.some((member) => member.value.startsWith("-"));
|
|
355
|
-
if (getter === undefined || getter === "") return signed ? tInt32 : tUint32;
|
|
356
|
-
const lib = resolved.namespace.sharedLibrary ?? "";
|
|
357
|
-
return resolved.value.kind === "bitfield" ? tFlags(lib, getter, signed) : tEnum(lib, getter, signed);
|
|
668
|
+
return enumExpression(resolved);
|
|
358
669
|
}
|
|
359
|
-
case "alias":
|
|
670
|
+
case "alias": {
|
|
360
671
|
return aliasExpression(context, resolved.value.target, transfer, options);
|
|
672
|
+
}
|
|
361
673
|
}
|
|
362
674
|
};
|
|
363
675
|
|
|
@@ -365,33 +677,57 @@ const arrayExpression = (
|
|
|
365
677
|
context: ModuleContext,
|
|
366
678
|
ref: CArrayType,
|
|
367
679
|
transfer: ParameterTransfer,
|
|
368
|
-
|
|
680
|
+
options: ArgIndexOptions,
|
|
369
681
|
): string => {
|
|
682
|
+
if (hasUnknownArrayLength(ref)) {
|
|
683
|
+
return tUint64;
|
|
684
|
+
}
|
|
685
|
+
|
|
370
686
|
const ownership = transferOwnership(transfer);
|
|
371
|
-
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer),
|
|
687
|
+
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer), options);
|
|
372
688
|
const size = inlineElementSize(context, ref.element, ref.elementCType);
|
|
689
|
+
|
|
373
690
|
if (ref.lengthParameterIndex !== undefined) {
|
|
374
|
-
return tSizedArray(element, ref.lengthParameterIndex
|
|
691
|
+
return tSizedArray(element, mapArgIndex(options, ref.lengthParameterIndex), ownership, size);
|
|
375
692
|
}
|
|
693
|
+
|
|
376
694
|
if (ref.fixedSize !== undefined) {
|
|
377
695
|
return tFixedArray(element, ref.fixedSize, ownership, size);
|
|
378
696
|
}
|
|
697
|
+
|
|
379
698
|
return tArray(element, ownership, size);
|
|
380
699
|
};
|
|
381
700
|
|
|
701
|
+
const recordInlineSize = (context: ModuleContext, record: ResolvedRecord): number | undefined => {
|
|
702
|
+
if (record.opaque || record.disguised || record.fields.length === 0) {
|
|
703
|
+
return undefined;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
const { size } = computeRecordFieldSlots(context, record.fields, record.isUnion);
|
|
707
|
+
|
|
708
|
+
return size > 0 ? size : undefined;
|
|
709
|
+
};
|
|
710
|
+
|
|
382
711
|
const inlineElementSize = (
|
|
383
712
|
context: ModuleContext,
|
|
384
713
|
element: TypeId | undefined,
|
|
385
714
|
elementCType: string | undefined,
|
|
386
715
|
): number | undefined => {
|
|
387
|
-
if (element === undefined)
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
716
|
+
if (element === undefined) {
|
|
717
|
+
return undefined;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
if (elementCType?.includes("*")) {
|
|
721
|
+
return undefined;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
const type = context.library.typeFor(element);
|
|
725
|
+
|
|
726
|
+
if (type?.kind !== "record") {
|
|
727
|
+
return undefined;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
return recordInlineSize(context, type.value);
|
|
395
731
|
};
|
|
396
732
|
|
|
397
733
|
const aliasExpression = (
|
|
@@ -403,5 +739,17 @@ const aliasExpression = (
|
|
|
403
739
|
if (target === undefined) {
|
|
404
740
|
return tObject(transferOwnership(transfer));
|
|
405
741
|
}
|
|
742
|
+
|
|
406
743
|
return renderDescriptor(context, target, transfer, options);
|
|
407
744
|
};
|
|
745
|
+
|
|
746
|
+
export {
|
|
747
|
+
isInlineCallbackRef,
|
|
748
|
+
shouldOmitPrimaryReturn,
|
|
749
|
+
renderDescriptor,
|
|
750
|
+
isScalarRef,
|
|
751
|
+
isCellInout,
|
|
752
|
+
renderParamDescriptor,
|
|
753
|
+
renderCallbackType,
|
|
754
|
+
renderSelfDescriptor,
|
|
755
|
+
};
|