@gtkx/codegen 1.0.0-rc.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -9
- package/dist/analysis/descriptor-render.d.ts +9 -4
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +51 -61
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +7 -7
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +7 -7
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +1 -2
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +25 -22
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
- package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
- package/dist/analysis/nul-terminated-bytes.js +18 -0
- package/dist/analysis/nul-terminated-bytes.js.map +1 -0
- package/dist/analysis/param-capability.d.ts +5 -0
- package/dist/analysis/param-capability.d.ts.map +1 -0
- package/dist/analysis/param-capability.js +130 -0
- package/dist/analysis/param-capability.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +13 -6
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +44 -20
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +1 -1
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +3 -5
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/analysis/type-shape.d.ts +8 -0
- package/dist/analysis/type-shape.d.ts.map +1 -0
- package/dist/analysis/type-shape.js +12 -0
- package/dist/analysis/type-shape.js.map +1 -0
- package/dist/compile.d.ts +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -1
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +79 -3
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +68 -13
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts +4 -4
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +32 -20
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/handwritten-props.d.ts +9 -0
- package/dist/docs/handwritten-props.d.ts.map +1 -0
- package/dist/docs/handwritten-props.js +149 -0
- package/dist/docs/handwritten-props.js.map +1 -0
- package/dist/docs/pipeline.d.ts +4 -4
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +6 -6
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +25 -5
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +90 -28
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +22 -0
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +129 -44
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +3 -6
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +6 -8
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +3 -11
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +0 -7
- package/dist/gi.js.map +1 -1
- package/dist/gir/ancestry.d.ts +2 -2
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +11 -1
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/annotations.d.ts +22 -0
- package/dist/gir/annotations.d.ts.map +1 -0
- package/dist/gir/annotations.js +15 -0
- package/dist/gir/annotations.js.map +1 -0
- package/dist/gir/callback.d.ts +1 -0
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +1 -0
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +32 -1
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +8 -3
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +21 -1
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +9 -9
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +19 -4
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +7 -11
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +15 -0
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +7 -0
- package/dist/gir/gir-path.d.ts.map +1 -1
- package/dist/gir/gir-path.js +7 -0
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/libraries.d.ts +13 -2
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +11 -0
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +36 -0
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +34 -0
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +38 -0
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +4 -5
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/parameter.d.ts +39 -0
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +7 -7
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +3 -1
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +6 -3
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +1 -0
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +16 -0
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +3 -3
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +22 -0
- package/dist/gir/record.d.ts.map +1 -1
- package/dist/gir/record.js +3 -2
- package/dist/gir/record.js.map +1 -1
- package/dist/gir/size.d.ts +5 -4
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +0 -3
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +36 -1
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +2 -3
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +2 -1
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +20 -0
- package/dist/gir/type.d.ts.map +1 -1
- package/dist/gir/type.js.map +1 -1
- package/dist/index.d.ts +18 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/jsx.d.ts +7 -12
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +18 -19
- package/dist/jsx.js.map +1 -1
- package/dist/khronos/args.d.ts +7 -6
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +29 -7
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/doc-context.d.ts +29 -0
- package/dist/khronos/doc-context.d.ts.map +1 -0
- package/dist/khronos/doc-context.js +29 -0
- package/dist/khronos/doc-context.js.map +1 -0
- package/dist/khronos/extensions.d.ts +13 -0
- package/dist/khronos/extensions.d.ts.map +1 -0
- package/dist/khronos/extensions.js +49 -0
- package/dist/khronos/extensions.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +17 -11
- package/dist/khronos/jsdoc.d.ts.map +1 -1
- package/dist/khronos/jsdoc.js +104 -46
- package/dist/khronos/jsdoc.js.map +1 -1
- package/dist/khronos/model.d.ts +42 -3
- package/dist/khronos/model.d.ts.map +1 -1
- package/dist/khronos/model.js +218 -63
- package/dist/khronos/model.js.map +1 -1
- package/dist/khronos/modules.d.ts +9 -6
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +96 -26
- package/dist/khronos/modules.js.map +1 -1
- package/dist/khronos/notes.d.ts +19 -0
- package/dist/khronos/notes.d.ts.map +1 -0
- package/dist/khronos/notes.js +35 -0
- package/dist/khronos/notes.js.map +1 -0
- package/dist/khronos/param-pair.d.ts +1 -1
- package/dist/khronos/param-pair.d.ts.map +1 -1
- package/dist/khronos/param-pair.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +3 -1
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js +59 -28
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +5 -5
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +8 -8
- package/dist/khronos/plan.js.map +1 -1
- package/dist/khronos/render.d.ts +8 -6
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +35 -26
- package/dist/khronos/render.js.map +1 -1
- package/dist/khronos/select.d.ts +21 -4
- package/dist/khronos/select.d.ts.map +1 -1
- package/dist/khronos/select.js +47 -34
- package/dist/khronos/select.js.map +1 -1
- package/dist/react/element-config.d.ts +16 -10
- package/dist/react/element-config.d.ts.map +1 -1
- package/dist/react/element-config.js +22 -15
- package/dist/react/element-config.js.map +1 -1
- package/dist/runner.d.ts +33 -21
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +19 -20
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +2 -3
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +2 -2
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/callable-doc.d.ts +11 -0
- package/dist/store/gi/callable-doc.d.ts.map +1 -0
- package/dist/store/gi/callable-doc.js +62 -0
- package/dist/store/gi/callable-doc.js.map +1 -0
- package/dist/store/gi/callables.d.ts +3 -1
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +16 -16
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +2 -2
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +5 -3
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/closure-invocation.d.ts +4 -0
- package/dist/store/gi/closure-invocation.d.ts.map +1 -0
- package/dist/store/gi/closure-invocation.js +22 -0
- package/dist/store/gi/closure-invocation.js.map +1 -0
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +3 -4
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +18 -20
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/doc-spec.d.ts +14 -0
- package/dist/store/gi/doc-spec.d.ts.map +1 -0
- package/dist/store/gi/doc-spec.js +23 -0
- package/dist/store/gi/doc-spec.js.map +1 -0
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +29 -16
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +28 -17
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +130 -16
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/item-comparators.d.ts.map +1 -1
- package/dist/store/gi/item-comparators.js +3 -5
- package/dist/store/gi/item-comparators.js.map +1 -1
- package/dist/store/gi/method.d.ts +9 -1
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +92 -47
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +4 -1
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +5 -1
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +3 -2
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/properties.d.ts.map +1 -1
- package/dist/store/gi/properties.js +2 -2
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +4 -2
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +10 -11
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +3 -1
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +4 -2
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +6 -11
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +1 -5
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +3 -2
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.d.ts +1 -1
- package/dist/store/gi/registration.js +2 -2
- package/dist/store/gi/registration.js.map +1 -1
- package/dist/store/gi/return-wrap.d.ts +1 -1
- package/dist/store/gi/return-wrap.d.ts.map +1 -1
- package/dist/store/gi/return-wrap.js +4 -4
- 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 +8 -5
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +27 -31
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +1 -10
- package/dist/store/gi/value-marshalable.d.ts.map +1 -1
- package/dist/store/gi/value-marshalable.js +1 -10
- package/dist/store/gi/value-marshalable.js.map +1 -1
- package/dist/store/gi/vtable.d.ts +16 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +214 -51
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +2 -3
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts +1 -3
- package/dist/store/jsx/element-components.d.ts.map +1 -1
- package/dist/store/jsx/element-components.js +6 -8
- package/dist/store/jsx/element-components.js.map +1 -1
- package/dist/store/jsx/element-prop-imports.d.ts +1 -4
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-imports.js +0 -2
- package/dist/store/jsx/element-prop-imports.js.map +1 -1
- package/dist/store/jsx/element-prop-types.d.ts +3 -1
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-types.js +7 -2
- package/dist/store/jsx/element-prop-types.js.map +1 -1
- package/dist/store/jsx/generated-elements.d.ts +29 -0
- package/dist/store/jsx/generated-elements.d.ts.map +1 -0
- package/dist/store/jsx/generated-elements.js +30 -0
- package/dist/store/jsx/generated-elements.js.map +1 -0
- package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
- package/dist/store/jsx/intrinsic-elements.js.map +1 -1
- package/dist/store/jsx/jsx.d.ts.map +1 -1
- package/dist/store/jsx/jsx.js +13 -12
- package/dist/store/jsx/jsx.js.map +1 -1
- package/dist/store/jsx/metadata.js +9 -9
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx/omitted-props.d.ts +2 -4
- package/dist/store/jsx/omitted-props.d.ts.map +1 -1
- package/dist/store/jsx/omitted-props.js +2 -4
- package/dist/store/jsx/omitted-props.js.map +1 -1
- package/dist/store/jsx/pipeline.d.ts +4 -2
- package/dist/store/jsx/pipeline.d.ts.map +1 -1
- package/dist/store/jsx/pipeline.js +3 -2
- package/dist/store/jsx/pipeline.js.map +1 -1
- package/dist/store/jsx/props.d.ts +1 -7
- package/dist/store/jsx/props.d.ts.map +1 -1
- package/dist/store/jsx/props.js +16 -8
- package/dist/store/jsx/props.js.map +1 -1
- package/dist/store/jsx-store.d.ts +2 -3
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +3 -3
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts +28 -0
- package/dist/store/resolve-store.d.ts.map +1 -0
- package/dist/store/resolve-store.js +65 -0
- package/dist/store/resolve-store.js.map +1 -0
- package/dist/store/store-fs.d.ts +5 -1
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +6 -4
- 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 +3 -0
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/doc-tags.d.ts +21 -0
- package/dist/writer/doc-tags.d.ts.map +1 -0
- package/dist/writer/doc-tags.js +38 -0
- package/dist/writer/doc-tags.js.map +1 -0
- package/dist/writer/doc.d.ts +3 -1
- package/dist/writer/doc.d.ts.map +1 -1
- package/dist/writer/doc.js +19 -6
- package/dist/writer/doc.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts +1 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +64 -15
- package/dist/writer/gtk-doc.js.map +1 -1
- package/dist/writer/module.d.ts +8 -2
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +13 -1
- package/dist/writer/module.js.map +1 -1
- package/overrides/gdk/rgba.ts.ejs +26 -0
- package/overrides/gobject/object.ts.ejs +56 -11
- package/overrides/gobject/value.ts.ejs +7 -0
- package/overrides/graphene/structs.ts.ejs +55 -0
- package/package.json +7 -11
- package/src/analysis/descriptor-render.ts +67 -73
- package/src/analysis/descriptor.ts +13 -16
- package/src/analysis/inheritance.ts +35 -34
- package/src/analysis/nul-terminated-bytes.ts +31 -0
- package/src/analysis/param-capability.ts +172 -0
- package/src/analysis/param-structure.ts +90 -32
- package/src/analysis/ts-type.ts +4 -6
- package/src/analysis/type-shape.ts +24 -0
- package/src/compile.ts +3 -2
- package/src/docs/api-reference.ts +162 -28
- package/src/docs/element-page.ts +53 -47
- package/src/docs/handwritten-props.ts +230 -0
- package/src/docs/pipeline.ts +10 -10
- package/src/docs/render.ts +153 -39
- package/src/docs/symbol-page.ts +230 -80
- package/src/fingerprint.ts +8 -14
- package/src/gi.ts +4 -11
- package/src/gir/ancestry.ts +15 -1
- package/src/gir/annotations.ts +37 -0
- package/src/gir/callback.ts +2 -0
- package/src/gir/class.ts +42 -4
- package/src/gir/enum.ts +30 -10
- package/src/gir/field.ts +24 -13
- package/src/gir/function.ts +15 -0
- package/src/gir/gir-path.ts +7 -0
- package/src/gir/libraries.ts +23 -2
- package/src/gir/library.ts +51 -2
- package/src/gir/namespace.ts +41 -5
- package/src/gir/parameter.ts +47 -7
- package/src/gir/parse.ts +8 -2
- package/src/gir/primitives.ts +1 -0
- package/src/gir/property.ts +18 -3
- package/src/gir/record.ts +24 -2
- package/src/gir/size.ts +8 -6
- package/src/gir/type-id.ts +51 -7
- package/src/gir/type-ref.ts +2 -1
- package/src/gir/type.ts +50 -6
- package/src/index.ts +18 -16
- package/src/internal.ts +2 -0
- package/src/jsx.ts +26 -26
- package/src/khronos/args.ts +37 -14
- package/src/khronos/doc-context.ts +62 -0
- package/src/khronos/extensions.ts +85 -0
- package/src/khronos/jsdoc.ts +152 -56
- package/src/khronos/model.ts +314 -69
- package/src/khronos/modules.ts +134 -40
- package/src/khronos/notes.ts +74 -0
- package/src/khronos/param-pair.ts +1 -1
- package/src/khronos/pipeline.ts +95 -42
- package/src/khronos/plan.ts +12 -13
- package/src/khronos/render.ts +62 -50
- package/src/khronos/select.ts +91 -50
- package/src/react/element-config.ts +21 -18
- package/src/runner.ts +51 -40
- package/src/store/compile-store.ts +4 -5
- package/src/store/gi/callable-doc.ts +102 -0
- package/src/store/gi/callables.ts +23 -17
- package/src/store/gi/callback.ts +3 -2
- package/src/store/gi/class.ts +6 -3
- package/src/store/gi/closure-invocation.ts +26 -0
- package/src/store/gi/constant.ts +3 -6
- package/src/store/gi/constructor-props.ts +19 -23
- package/src/store/gi/doc-spec.ts +38 -0
- package/src/store/gi/enum.ts +55 -20
- package/src/store/gi/function.ts +44 -26
- package/src/store/gi/interface.ts +214 -26
- package/src/store/gi/item-comparators.ts +3 -5
- package/src/store/gi/method.ts +126 -68
- package/src/store/gi/param-marshal.ts +15 -1
- package/src/store/gi/pipeline.ts +7 -2
- package/src/store/gi/properties.ts +3 -2
- package/src/store/gi/property-accessor.ts +14 -11
- package/src/store/gi/record-constructor.ts +6 -1
- package/src/store/gi/record-field-accessor.ts +9 -13
- package/src/store/gi/record-layout.ts +1 -5
- package/src/store/gi/record.ts +8 -2
- package/src/store/gi/registration.ts +3 -3
- package/src/store/gi/return-wrap.ts +5 -5
- package/src/store/gi/runtime-override.ts +13 -6
- package/src/store/gi/signal.ts +36 -37
- package/src/store/gi/value-marshalable.ts +1 -10
- package/src/store/gi/vtable.ts +361 -60
- package/src/store/gi-store.ts +2 -4
- package/src/store/jsx/element-components.ts +8 -11
- package/src/store/jsx/element-prop-imports.ts +6 -5
- package/src/store/jsx/element-prop-types.ts +10 -2
- package/src/store/jsx/generated-elements.ts +60 -0
- package/src/store/jsx/intrinsic-elements.ts +4 -0
- package/src/store/jsx/jsx.ts +15 -13
- package/src/store/jsx/metadata.ts +10 -10
- package/src/store/jsx/omitted-props.ts +2 -4
- package/src/store/jsx/pipeline.ts +6 -4
- package/src/store/jsx/props.ts +22 -9
- package/src/store/jsx-store.ts +5 -7
- package/src/store/resolve-store.ts +100 -0
- package/src/store/store-fs.ts +12 -5
- package/src/writer/context.ts +5 -1
- package/src/writer/doc-tags.ts +70 -0
- package/src/writer/doc.ts +29 -6
- package/src/writer/gtk-doc.ts +82 -15
- package/src/writer/module.ts +25 -2
|
@@ -20,10 +20,6 @@ type RecordFieldSlot = {
|
|
|
20
20
|
const POINTER_LAYOUT: FieldLayout = { size: 8, align: 8 };
|
|
21
21
|
const recordLayoutCache: Map<string, FieldLayout> = new Map();
|
|
22
22
|
|
|
23
|
-
// GIR carries no alignment attribute, and a type whose alignment exceeds its widest member cannot be
|
|
24
|
-
// derived from the field list: Graphene models `graphene_simd4f_t` as four `gfloat`, which computes
|
|
25
|
-
// to align 4 while the real type is a 16-byte SIMD vector. Keying the override on `c:type` keeps it
|
|
26
|
-
// to the handful of types where the XML genuinely cannot express the ABI.
|
|
27
23
|
const ALIGNMENT_OVERRIDES: Map<string, FieldLayout> = new Map([
|
|
28
24
|
["graphene_simd4f_t", { size: 16, align: 16 }],
|
|
29
25
|
["graphene_simd4x4f_t", { size: 64, align: 16 }],
|
|
@@ -70,7 +66,7 @@ const mergeBitfield = (readExpr: string, valueExpr: string, mask: number, shift:
|
|
|
70
66
|
|
|
71
67
|
const fieldLayoutInput = (context: ModuleContext, field: GirField, visited: Set<string>): FieldLayoutInput => {
|
|
72
68
|
if (field.inlineMembers !== undefined) {
|
|
73
|
-
const layout = inlineMemberLayout(context, field.inlineMembers, field.
|
|
69
|
+
const layout = inlineMemberLayout(context, field.inlineMembers, field.isInlineUnion, visited);
|
|
74
70
|
|
|
75
71
|
return { layout, bits: undefined };
|
|
76
72
|
}
|
package/src/store/gi/record.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { GirRecord } from "../../gir/record.js";
|
|
2
2
|
import type { ModuleContext } from "../../writer/context.js";
|
|
3
|
-
import { renderJsDoc } from "../../writer/doc.js";
|
|
4
3
|
import { indentMembers } from "../../writer/emit.js";
|
|
5
4
|
import { type Callables, dedupeCallables, generateBindings, renderPlainTypeMembers } from "./callables.js";
|
|
5
|
+
import { getDoc } from "./doc-spec.js";
|
|
6
6
|
import { renderSourceGtype } from "./gtype-binding.js";
|
|
7
7
|
import { renderRecordConstructor, renderRecordConstructorPropsInterface } from "./record-constructor.js";
|
|
8
8
|
import { renderRecordFieldAccessor } from "./record-field-accessor.js";
|
|
@@ -34,7 +34,13 @@ const generateRecord = (context: ModuleContext, record: GirRecord): void => {
|
|
|
34
34
|
const members = renderRecordMembers(context, record, className, callables);
|
|
35
35
|
const body = indentMembers(members);
|
|
36
36
|
const heritage = isErrorSubclass ? " extends globalThis.Error" : "";
|
|
37
|
-
|
|
37
|
+
const doc = getDoc(record);
|
|
38
|
+
|
|
39
|
+
context.module.appendDeclaration(
|
|
40
|
+
`${doc}export class ${className}${heritage} {\n${body}\n}`,
|
|
41
|
+
context.declaredType(className),
|
|
42
|
+
);
|
|
43
|
+
|
|
38
44
|
context.module.appendDeclaration(renderRecordConstructorPropsInterface(context, record, className));
|
|
39
45
|
const gtypeExpr = renderSourceGtype(context, record);
|
|
40
46
|
|
|
@@ -10,7 +10,7 @@ type InterfaceRegistration = {
|
|
|
10
10
|
className: string;
|
|
11
11
|
makerName: string;
|
|
12
12
|
gtypeExpr?: string | undefined;
|
|
13
|
-
|
|
13
|
+
layout?: string | undefined;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
const appendWrapperClassRegistration = (
|
|
@@ -29,7 +29,7 @@ const appendWrapperClassRegistration = (
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
const appendInterfaceRegistration = (context: ModuleContext, registration: InterfaceRegistration): void => {
|
|
32
|
-
const { className, makerName, gtypeExpr,
|
|
32
|
+
const { className, makerName, gtypeExpr, layout } = registration;
|
|
33
33
|
|
|
34
34
|
if (gtypeExpr === undefined) {
|
|
35
35
|
return;
|
|
@@ -37,7 +37,7 @@ const appendInterfaceRegistration = (context: ModuleContext, registration: Inter
|
|
|
37
37
|
|
|
38
38
|
context.addRuntimeImport("registerInterface");
|
|
39
39
|
const base = `${className}, ${gtypeExpr}, ${makerName}`;
|
|
40
|
-
const args =
|
|
40
|
+
const args = layout === undefined ? base : `${base}, ${layout}`;
|
|
41
41
|
context.module.appendRegistration(`registerInterface(${args});`);
|
|
42
42
|
};
|
|
43
43
|
|
|
@@ -6,14 +6,14 @@ import { renderTsType } from "../../analysis/ts-type.js";
|
|
|
6
6
|
|
|
7
7
|
type WrapReturnOptions = {
|
|
8
8
|
ref: TypeId | undefined;
|
|
9
|
-
|
|
9
|
+
isNullable: boolean;
|
|
10
10
|
valueExpression: string;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
const BIGINT_CATEGORIES: Set<PrimitiveCategory> = new Set(["gtype", "bigint64", "biguint64"]);
|
|
14
14
|
|
|
15
15
|
const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): string => {
|
|
16
|
-
const { ref,
|
|
16
|
+
const { ref, isNullable, valueExpression } = options;
|
|
17
17
|
|
|
18
18
|
if (ref === undefined) {
|
|
19
19
|
return valueExpression;
|
|
@@ -27,7 +27,7 @@ const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): st
|
|
|
27
27
|
|
|
28
28
|
switch (type.kind) {
|
|
29
29
|
case "primitive": {
|
|
30
|
-
return wrapPrimitive(type.category,
|
|
30
|
+
return wrapPrimitive(type.category, isNullable, valueExpression);
|
|
31
31
|
}
|
|
32
32
|
case "varargs": {
|
|
33
33
|
return `(${valueExpression} as unknown[])`;
|
|
@@ -39,7 +39,7 @@ const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): st
|
|
|
39
39
|
return `(${valueExpression} as number)`;
|
|
40
40
|
}
|
|
41
41
|
case "alias": {
|
|
42
|
-
return wrapAlias(context, type.value.target,
|
|
42
|
+
return wrapAlias(context, type.value.target, isNullable, valueExpression);
|
|
43
43
|
}
|
|
44
44
|
case "carray":
|
|
45
45
|
case "class":
|
|
@@ -65,7 +65,7 @@ const wrapAlias = (
|
|
|
65
65
|
): string =>
|
|
66
66
|
target === undefined
|
|
67
67
|
? valueExpression
|
|
68
|
-
: wrapReturnValue(context, { ref: target,
|
|
68
|
+
: wrapReturnValue(context, { ref: target, isNullable, valueExpression });
|
|
69
69
|
|
|
70
70
|
const wrapValue = (context: ModuleContext, ref: TypeId, valueExpression: string): string => {
|
|
71
71
|
context.addRuntimeImport("fromNative");
|
|
@@ -5,6 +5,7 @@ type RuntimeOverride = {
|
|
|
5
5
|
signature: string;
|
|
6
6
|
returnType: string;
|
|
7
7
|
body: string;
|
|
8
|
+
renames?: [string, string][];
|
|
8
9
|
};
|
|
9
10
|
|
|
10
11
|
const RUNTIME_OVERRIDES: Map<string, RuntimeOverride> = new Map([
|
|
@@ -23,16 +24,22 @@ const RUNTIME_OVERRIDES: Map<string, RuntimeOverride> = new Map([
|
|
|
23
24
|
signature: "boxed: object | null",
|
|
24
25
|
returnType: "void",
|
|
25
26
|
body: 'throw new Error("g_value_set_boxed: runtime override not installed");',
|
|
27
|
+
renames: [["v_boxed", "boxed"]],
|
|
26
28
|
},
|
|
27
29
|
],
|
|
28
30
|
]);
|
|
29
31
|
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const runtimeOverrideFor = (callable: GirFunction): RuntimeOverride | undefined =>
|
|
33
|
+
callable.cIdentifier === undefined ? undefined : RUNTIME_OVERRIDES.get(callable.cIdentifier);
|
|
34
|
+
|
|
35
|
+
const runtimeOverrideRenames = (callable: GirFunction): Map<string, string> | undefined => {
|
|
36
|
+
const renames = runtimeOverrideFor(callable)?.renames;
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
return renames === undefined ? undefined : new Map(renames);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const renderRuntimeOverride = (callable: GirFunction, memberName: string): string | undefined => {
|
|
42
|
+
const override = runtimeOverrideFor(callable);
|
|
36
43
|
|
|
37
44
|
if (override === undefined) {
|
|
38
45
|
return undefined;
|
|
@@ -43,4 +50,4 @@ const renderRuntimeOverride = (callable: GirFunction, memberName: string): strin
|
|
|
43
50
|
return `${memberName}${generics}(${override.signature}): ${override.returnType} {\n ${override.body}\n}`;
|
|
44
51
|
};
|
|
45
52
|
|
|
46
|
-
export { renderRuntimeOverride };
|
|
53
|
+
export { renderRuntimeOverride, runtimeOverrideRenames };
|
package/src/store/gi/signal.ts
CHANGED
|
@@ -13,22 +13,23 @@ import { tCallback, tObject, tVoid } from "../../analysis/descriptor.js";
|
|
|
13
13
|
import {
|
|
14
14
|
collectInterfaceProperties,
|
|
15
15
|
forEachAncestor,
|
|
16
|
-
resolveImplementedInterface,
|
|
17
16
|
resolvePrerequisiteReference,
|
|
18
17
|
} from "../../analysis/inheritance.js";
|
|
19
18
|
import { renderHandlerParameters, renderHandlerResultType } from "../../analysis/param-structure.js";
|
|
20
19
|
import { renderTsType } from "../../analysis/ts-type.js";
|
|
20
|
+
import { resolveInterfaces } from "../../gir/ancestry.js";
|
|
21
21
|
import { isCallerAllocatedOut, isOutParameter } from "../../gir/parameter.js";
|
|
22
22
|
import { renderJsDoc } from "../../writer/doc.js";
|
|
23
23
|
import { indent, renderBlock, renderBracedOrEmpty } from "../../writer/emit.js";
|
|
24
24
|
import { parentCompanionRef } from "./companion.js";
|
|
25
|
+
import { getDoc, handlerSpec } from "./doc-spec.js";
|
|
25
26
|
import { isRecordCallerOut, isRecordInout } from "./param-marshal.js";
|
|
26
27
|
|
|
27
28
|
type SignalMapSpec = {
|
|
28
29
|
context: ModuleContext;
|
|
29
30
|
klass: GirClass;
|
|
30
31
|
className: string;
|
|
31
|
-
|
|
32
|
+
isParentlessObjectSubclass: boolean;
|
|
32
33
|
suffix: string;
|
|
33
34
|
renderEntry: (context: ModuleContext, signal: GirCallable) => string;
|
|
34
35
|
};
|
|
@@ -66,7 +67,7 @@ const renderSignalMembers = (context: ModuleContext, klass: GirClass): string[]
|
|
|
66
67
|
|
|
67
68
|
const connectDefault = isRootObject
|
|
68
69
|
? "default:\n throw new globalThis.Error(\"Unknown signal '\" + signal + \"'\");"
|
|
69
|
-
: "default:\n return super.connect(signal, handler,
|
|
70
|
+
: "default:\n return super.connect(signal, handler, isAfter);";
|
|
70
71
|
|
|
71
72
|
const emitDefault = isRootObject
|
|
72
73
|
? "default:\n throw new globalThis.Error(\"Unknown signal '\" + sigName + \"'\");"
|
|
@@ -78,7 +79,10 @@ const renderSignalMembers = (context: ModuleContext, klass: GirClass): string[]
|
|
|
78
79
|
const emitSwitch = `switch (getSignalBaseName(sigName)) {\n${emitBody}\n}`;
|
|
79
80
|
|
|
80
81
|
return [
|
|
81
|
-
renderBlock(
|
|
82
|
+
renderBlock(
|
|
83
|
+
`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, isAfter?: boolean): number`,
|
|
84
|
+
connectSwitch,
|
|
85
|
+
),
|
|
82
86
|
renderBlock("emit(sigName: string, ...args: unknown[]): unknown", emitSwitch),
|
|
83
87
|
];
|
|
84
88
|
};
|
|
@@ -89,7 +93,7 @@ const renderSignalDeclarations = (
|
|
|
89
93
|
className: string,
|
|
90
94
|
isParentlessObjectSubclass: boolean,
|
|
91
95
|
): string[] => {
|
|
92
|
-
const base = { context, klass, className,
|
|
96
|
+
const base = { context, klass, className, isParentlessObjectSubclass };
|
|
93
97
|
|
|
94
98
|
const declarations = [
|
|
95
99
|
renderSignalMap({ ...base, suffix: SIGNALS_SUFFIX, renderEntry: renderSignalHandlerType }),
|
|
@@ -110,28 +114,30 @@ const renderSignalDeclarations = (
|
|
|
110
114
|
};
|
|
111
115
|
|
|
112
116
|
const renderSignalMap = (spec: SignalMapSpec): string => {
|
|
113
|
-
const { context, klass, className,
|
|
114
|
-
const extendsRefs = signalMapParentRefs(context, klass,
|
|
117
|
+
const { context, klass, className, isParentlessObjectSubclass, suffix, renderEntry } = spec;
|
|
118
|
+
const extendsRefs = signalMapParentRefs(context, klass, isParentlessObjectSubclass, suffix);
|
|
115
119
|
const extendsClause = extendsRefs.length === 0 ? "" : ` extends ${extendsRefs.join(", ")}`;
|
|
116
120
|
|
|
117
|
-
const signalEntries = collectClassSignals(context, klass).map(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return suffix === SIGNALS_SUFFIX ? `${renderJsDoc(signal.doc)}${entry}` : entry;
|
|
121
|
-
});
|
|
121
|
+
const signalEntries = collectClassSignals(context, klass).map(
|
|
122
|
+
(signal) => `${signalDoc(signal)}${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`,
|
|
123
|
+
);
|
|
122
124
|
|
|
123
125
|
const entries = [...signalEntries, ...renderNotifyDetailEntries(context, klass, suffix)];
|
|
124
126
|
|
|
125
127
|
return renderBracedOrEmpty(`export interface ${className}${suffix}${extendsClause}`, entries.join("\n"));
|
|
126
128
|
};
|
|
127
129
|
|
|
130
|
+
const signalDoc = (signal: GirCallable): string =>
|
|
131
|
+
renderJsDoc(signal.doc, undefined, handlerSpec(signal, signal.parameters));
|
|
132
|
+
|
|
128
133
|
const renderNotifyDetailEntries = (context: ModuleContext, klass: GirClass, suffix: string): string[] => {
|
|
129
134
|
const notifyValue = `${gobjectObjectMapRef(context, suffix)}["notify"]`;
|
|
130
135
|
|
|
131
|
-
return collectNotifyDetails(context, klass).map((
|
|
132
|
-
const detailedSignal = `notify::${name}`;
|
|
136
|
+
return collectNotifyDetails(context, klass).map((property) => {
|
|
137
|
+
const detailedSignal = `notify::${property.name}`;
|
|
138
|
+
const doc = getDoc(property);
|
|
133
139
|
|
|
134
|
-
return `${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
|
|
140
|
+
return `${doc}${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
|
|
135
141
|
});
|
|
136
142
|
};
|
|
137
143
|
|
|
@@ -177,8 +183,8 @@ const renderSignalConnectInterface = (className: string, isRootObject: boolean):
|
|
|
177
183
|
|
|
178
184
|
const lines = [
|
|
179
185
|
`__signals__?: ${map};`,
|
|
180
|
-
`connect<K extends keyof ${map}>(signal: K, handler: ${map}[K],
|
|
181
|
-
`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE},
|
|
186
|
+
`connect<K extends keyof ${map}>(signal: K, handler: ${map}[K], isAfter?: boolean): number;`,
|
|
187
|
+
`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, isAfter?: boolean): number;`,
|
|
182
188
|
`emit<K extends keyof ${emitMap}>(sigName: K, ...args: ${emitMap}[K]["args"]): ${emitMap}[K]["result"];`,
|
|
183
189
|
"emit(sigName: string, ...args: unknown[]): unknown;",
|
|
184
190
|
];
|
|
@@ -193,7 +199,7 @@ const renderSignalConnectInterface = (className: string, isRootObject: boolean):
|
|
|
193
199
|
}
|
|
194
200
|
};
|
|
195
201
|
|
|
196
|
-
chainable(["on", "once", "addEventListener"], ",
|
|
202
|
+
chainable(["on", "once", "addEventListener"], ", isAfter?: boolean");
|
|
197
203
|
chainable(["off", "removeEventListener"], "");
|
|
198
204
|
}
|
|
199
205
|
|
|
@@ -216,8 +222,8 @@ const renderResultType = (
|
|
|
216
222
|
library: context.library,
|
|
217
223
|
signal,
|
|
218
224
|
renderType: (ref, nullable) => renderTsType(context, ref, nullable),
|
|
219
|
-
|
|
220
|
-
|
|
225
|
+
shouldIncludeCallerAllocated,
|
|
226
|
+
isOptOut,
|
|
221
227
|
});
|
|
222
228
|
|
|
223
229
|
const renderSignalEmitEntry = (context: ModuleContext, signal: GirCallable): string => {
|
|
@@ -237,7 +243,7 @@ const nonVarargParameters = (signal: GirCallable): GirParameter[] =>
|
|
|
237
243
|
|
|
238
244
|
const renderConnectCase = (context: ModuleContext, signal: GirCallable): string => {
|
|
239
245
|
const callback = renderCallback(context, signal);
|
|
240
|
-
const body = `return connectSignal(this, signal, { callback: ${callback}, handler,
|
|
246
|
+
const body = `return connectSignal(this, signal, { callback: ${callback}, handler, isAfter: isAfter ?? false });`;
|
|
241
247
|
|
|
242
248
|
return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);
|
|
243
249
|
};
|
|
@@ -260,7 +266,7 @@ const renderEmitArgLiteral = (options: EmitArgOptions): { literal: string; nextA
|
|
|
260
266
|
const value = renderCallerOutAllocation(context, parameter);
|
|
261
267
|
|
|
262
268
|
return {
|
|
263
|
-
literal: `{ type: ${descriptor}, direction: "out",
|
|
269
|
+
literal: `{ type: ${descriptor}, direction: "out", isCallerAllocated: true, value: ${value} }`,
|
|
264
270
|
nextArgIndex: argIndex,
|
|
265
271
|
};
|
|
266
272
|
}
|
|
@@ -268,7 +274,7 @@ const renderEmitArgLiteral = (options: EmitArgOptions): { literal: string; nextA
|
|
|
268
274
|
if (isRecordInout(context, parameter)) {
|
|
269
275
|
return {
|
|
270
276
|
literal:
|
|
271
|
-
`{ type: ${descriptor}, direction: "inout",
|
|
277
|
+
`{ type: ${descriptor}, direction: "inout", isCallerAllocated: true, ` +
|
|
272
278
|
`value: args[${String(argIndex)}] }`,
|
|
273
279
|
nextArgIndex: argIndex + 1,
|
|
274
280
|
};
|
|
@@ -328,9 +334,6 @@ const renderCallerOutAllocation = (context: ModuleContext, parameter: GirParamet
|
|
|
328
334
|
const renderCallback = (context: ModuleContext, signal: GirCallable): string => {
|
|
329
335
|
const params = nonVarargParameters(signal);
|
|
330
336
|
|
|
331
|
-
// The emitted argument list prepends the instance the signal was raised on, so every index a
|
|
332
|
-
// parameter descriptor carries (an array's `sizeParamIndex`, above all) sits one slot further
|
|
333
|
-
// right than the position GIR assigned it.
|
|
334
337
|
const callbackParamDescriptors = params.map((parameter) =>
|
|
335
338
|
renderParamDescriptor(context, parameter, parameter.type, { argIndexOffset: 1 }),
|
|
336
339
|
);
|
|
@@ -342,11 +345,13 @@ const renderCallback = (context: ModuleContext, signal: GirCallable): string =>
|
|
|
342
345
|
: renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership);
|
|
343
346
|
|
|
344
347
|
const callbackArgs = [tObject("borrowed"), ...callbackParamDescriptors, tVoid];
|
|
348
|
+
const userDataIndex = String(params.length + 1);
|
|
349
|
+
const destroy = "hasDestroy: true, destroyKind: \"closureNotify\"";
|
|
345
350
|
|
|
346
351
|
return tCallback(
|
|
347
352
|
callbackArgs,
|
|
348
353
|
returnDescriptor,
|
|
349
|
-
`{
|
|
354
|
+
`{ ${destroy}, hasUserData: true, userDataIndex: ${userDataIndex} }`,
|
|
350
355
|
);
|
|
351
356
|
};
|
|
352
357
|
|
|
@@ -355,13 +360,7 @@ const forEachInterfaceSignal = (
|
|
|
355
360
|
klass: GirClass,
|
|
356
361
|
consider: (signal: GirCallable) => void,
|
|
357
362
|
): void => {
|
|
358
|
-
for (const
|
|
359
|
-
const iface = resolveImplementedInterface(context, implementName);
|
|
360
|
-
|
|
361
|
-
if (iface === undefined) {
|
|
362
|
-
continue;
|
|
363
|
-
}
|
|
364
|
-
|
|
363
|
+
for (const iface of resolveInterfaces(context.library, context.namespace.name, klass.implements)) {
|
|
365
364
|
for (const signal of iface.klass.signals) {
|
|
366
365
|
consider(signal);
|
|
367
366
|
}
|
|
@@ -420,10 +419,10 @@ const collectInheritedMemberNames = (
|
|
|
420
419
|
const collectInheritedSignalNames = (context: ModuleContext, klass: GirClass): Set<string> =>
|
|
421
420
|
collectInheritedMemberNames(context, klass, (source) => source.signals);
|
|
422
421
|
|
|
423
|
-
const collectNotifyDetails = (context: ModuleContext, klass: GirClass):
|
|
422
|
+
const collectNotifyDetails = (context: ModuleContext, klass: GirClass): GirProperty[] => {
|
|
424
423
|
const inherited = collectInheritedMemberNames(context, klass, (source) => source.properties);
|
|
425
424
|
const seen: Set<string> = new Set();
|
|
426
|
-
const result:
|
|
425
|
+
const result: GirProperty[] = [];
|
|
427
426
|
|
|
428
427
|
const consider = (property: GirProperty): void => {
|
|
429
428
|
const name = camelCase(property.name);
|
|
@@ -433,7 +432,7 @@ const collectNotifyDetails = (context: ModuleContext, klass: GirClass): string[]
|
|
|
433
432
|
}
|
|
434
433
|
|
|
435
434
|
seen.add(name);
|
|
436
|
-
result.push(property
|
|
435
|
+
result.push(property);
|
|
437
436
|
};
|
|
438
437
|
|
|
439
438
|
for (const property of klass.properties) {
|
|
@@ -7,7 +7,6 @@ import type { ModuleContext } from "../../writer/context.js";
|
|
|
7
7
|
|
|
8
8
|
type Scope = { context: ModuleContext; seen: Set<string> };
|
|
9
9
|
|
|
10
|
-
/** Primitive categories that are a pointer at the C level, so copying the bytes aliases the pointee. */
|
|
11
10
|
const POINTER_CATEGORIES: Set<PrimitiveCategory> = new Set<PrimitiveCategory>(["string", "pointer"]);
|
|
12
11
|
|
|
13
12
|
const recordKey = (namespaceName: string, record: GirRecord): string => `${namespaceName}.${record.name}`;
|
|
@@ -79,18 +78,10 @@ function isValueSafeRecord(scope: Scope, namespaceName: string, record: GirRecor
|
|
|
79
78
|
return isSafe;
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
/**
|
|
83
|
-
* Whether a record can be copied by value. A plain struct is duplicated with a byte-wise `g_memdup2`,
|
|
84
|
-
* which shallow-copies whatever the bytes hold, so only a record whose every field is transitively a
|
|
85
|
-
* scalar can be owned, allocated or written into an inline slot. A pointer, a string, a function
|
|
86
|
-
* pointer or an opaque record makes it borrow-only. Records that carry their own copy/free pair are
|
|
87
|
-
* duplicated through that instead and never reach the byte-wise path.
|
|
88
|
-
*/
|
|
89
81
|
const isValueMarshalable = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>
|
|
90
82
|
isValueSafeRecord({ context, seen: new Set<string>() }, namespaceName, record);
|
|
91
83
|
|
|
92
|
-
/** Whether a record can be allocated and populated from JavaScript. */
|
|
93
84
|
const isConstructibleRecord = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>
|
|
94
85
|
hasOwnCopySemantics(record) || isValueMarshalable(context, namespaceName, record);
|
|
95
86
|
|
|
96
|
-
export {
|
|
87
|
+
export { isConstructibleRecord, isValueMarshalable };
|