@gtkx/codegen 1.0.0-rc.4 → 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 +5 -5
- package/dist/analysis/descriptor-render.d.ts +8 -1
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +37 -24
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +1 -1
- package/dist/analysis/descriptor.d.ts.map +1 -1
- 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 +11 -4
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +40 -14
- package/dist/analysis/param-structure.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.map +1 -1
- package/dist/docs/api-reference.d.ts +2 -2
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +7 -14
- 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.js +2 -2
- 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 +84 -22
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +17 -0
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +128 -43
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +1 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.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 -3
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +7 -8
- 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/libraries.d.ts +1 -3
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +0 -1
- 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 -3
- 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.map +1 -1
- package/dist/gir/type-id.d.ts +35 -0
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +1 -0
- 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 +1 -0
- 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/khronos/args.d.ts +7 -6
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +28 -6
- 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 +58 -27
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +3 -3
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +2 -2
- 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 +2 -2
- package/dist/react/element-config.d.ts.map +1 -1
- package/dist/react/element-config.js.map +1 -1
- package/dist/runner.d.ts +1 -7
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +1 -1
- package/dist/store/compile-store.d.ts.map +1 -1
- 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 +12 -12
- 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 -2
- 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 +27 -12
- 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 +69 -26
- 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 +3 -1
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +6 -5
- 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 +3 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +3 -2
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.js +1 -1
- 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/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 +14 -15
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +1 -2
- package/dist/store/gi/value-marshalable.d.ts.map +1 -1
- package/dist/store/gi/value-marshalable.js +1 -1
- 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/jsx/element-components.d.ts +1 -1
- package/dist/store/jsx/element-components.d.ts.map +1 -1
- package/dist/store/jsx/element-components.js +6 -4
- package/dist/store/jsx/element-components.js.map +1 -1
- package/dist/store/jsx/element-prop-imports.d.ts +1 -3
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-imports.js.map +1 -1
- package/dist/store/jsx/element-prop-types.d.ts +3 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-types.js +7 -1
- package/dist/store/jsx/element-prop-types.js.map +1 -1
- 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 +7 -6
- package/dist/store/jsx/jsx.js.map +1 -1
- package/dist/store/jsx/metadata.js +2 -2
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx/pipeline.d.ts +1 -1
- package/dist/store/jsx/pipeline.d.ts.map +1 -1
- 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 +14 -6
- package/dist/store/jsx/props.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 +48 -3
- package/overrides/gobject/value.ts.ejs +7 -0
- package/overrides/graphene/structs.ts.ejs +55 -0
- package/package.json +4 -4
- package/src/analysis/descriptor-render.ts +47 -28
- package/src/analysis/descriptor.ts +0 -3
- 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 +83 -23
- package/src/analysis/type-shape.ts +24 -0
- package/src/compile.ts +1 -1
- package/src/docs/api-reference.ts +36 -25
- package/src/docs/element-page.ts +53 -47
- package/src/docs/handwritten-props.ts +230 -0
- package/src/docs/pipeline.ts +2 -2
- package/src/docs/render.ts +146 -32
- package/src/docs/symbol-page.ts +224 -79
- package/src/fingerprint.ts +0 -1
- 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 -9
- package/src/gir/function.ts +15 -0
- package/src/gir/libraries.ts +11 -3
- package/src/gir/library.ts +51 -2
- package/src/gir/namespace.ts +41 -5
- package/src/gir/parameter.ts +47 -3
- 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 -3
- package/src/gir/type-id.ts +49 -3
- package/src/gir/type-ref.ts +1 -0
- package/src/gir/type.ts +50 -6
- package/src/khronos/args.ts +36 -13
- 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 +94 -41
- package/src/khronos/plan.ts +4 -5
- package/src/khronos/render.ts +62 -50
- package/src/khronos/select.ts +91 -50
- package/src/react/element-config.ts +2 -2
- package/src/runner.ts +1 -8
- package/src/store/compile-store.ts +1 -1
- package/src/store/gi/callable-doc.ts +102 -0
- package/src/store/gi/callables.ts +18 -12
- 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 -4
- 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 +43 -21
- package/src/store/gi/interface.ts +214 -26
- package/src/store/gi/item-comparators.ts +3 -5
- package/src/store/gi/method.ts +98 -42
- 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 +9 -4
- package/src/store/gi/record-constructor.ts +6 -1
- package/src/store/gi/record-field-accessor.ts +5 -3
- package/src/store/gi/record-layout.ts +1 -1
- package/src/store/gi/record.ts +8 -2
- package/src/store/gi/registration.ts +3 -3
- package/src/store/gi/runtime-override.ts +13 -6
- package/src/store/gi/signal.ts +19 -20
- package/src/store/gi/value-marshalable.ts +1 -1
- package/src/store/gi/vtable.ts +361 -60
- package/src/store/jsx/element-components.ts +8 -5
- package/src/store/jsx/element-prop-imports.ts +1 -3
- package/src/store/jsx/element-prop-types.ts +10 -1
- package/src/store/jsx/intrinsic-elements.ts +4 -0
- package/src/store/jsx/jsx.ts +8 -6
- package/src/store/jsx/metadata.ts +2 -2
- package/src/store/jsx/pipeline.ts +1 -1
- package/src/store/jsx/props.ts +20 -7
- 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
|
@@ -1,22 +1,67 @@
|
|
|
1
|
-
import { offSignal, onceSignal, onSignal } from "@gtkx/runtime";
|
|
2
|
-
import { Object as GObject,
|
|
1
|
+
import { disconnectSignal, offSignal, onceSignal, onSignal } from "@gtkx/runtime";
|
|
2
|
+
import { Object as GObject, type Type } from "../gobject.js";
|
|
3
3
|
|
|
4
4
|
type Listener = (...args: unknown[]) => unknown;
|
|
5
5
|
|
|
6
6
|
declare module "../gobject.js" {
|
|
7
7
|
interface Object {
|
|
8
|
+
/** GType the instance's class is registered under, carried on the prototype. */
|
|
8
9
|
__type__: Type;
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Disconnects the handler `connect` returned the given id for.
|
|
13
|
+
*
|
|
14
|
+
* @param handlerId Id of the handler to disconnect.
|
|
15
|
+
*/
|
|
10
16
|
disconnect(handlerId: number): void;
|
|
11
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Connects a handler that runs on every emission of `sigName`, remembering it so `off` can
|
|
20
|
+
* take the same callback back off again.
|
|
21
|
+
*
|
|
22
|
+
* @param sigName Signal to connect to.
|
|
23
|
+
* @param callback Handler invoked on each emission.
|
|
24
|
+
* @param isAfter Run the handler after the default handler rather than before it.
|
|
25
|
+
* @returns The same object, so calls chain.
|
|
26
|
+
*/
|
|
12
27
|
on(sigName: string, callback: (...args: unknown[]) => unknown, isAfter?: boolean): Object;
|
|
13
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Connects a handler that runs at most once and disconnects itself after the first emission.
|
|
31
|
+
*
|
|
32
|
+
* @param sigName Signal to connect to.
|
|
33
|
+
* @param callback Handler invoked on the first emission.
|
|
34
|
+
* @param isAfter Run the handler after the default handler rather than before it.
|
|
35
|
+
* @returns The same object, so calls chain.
|
|
36
|
+
*/
|
|
14
37
|
once(sigName: string, callback: (...args: unknown[]) => unknown, isAfter?: boolean): Object;
|
|
15
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Disconnects a handler previously connected with `on` or `once`, given the same callback.
|
|
41
|
+
*
|
|
42
|
+
* @param sigName Signal the handler was connected to.
|
|
43
|
+
* @param callback The handler that was connected.
|
|
44
|
+
* @returns The same object, so calls chain.
|
|
45
|
+
*/
|
|
16
46
|
off(sigName: string, callback: (...args: unknown[]) => unknown): Object;
|
|
17
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Alias of `on`, for callers who prefer the DOM spelling.
|
|
50
|
+
*
|
|
51
|
+
* @param sigName Signal to connect to.
|
|
52
|
+
* @param callback Handler invoked on each emission.
|
|
53
|
+
* @param isAfter Run the handler after the default handler rather than before it.
|
|
54
|
+
* @returns The same object, so calls chain.
|
|
55
|
+
*/
|
|
18
56
|
addEventListener(sigName: string, callback: (...args: unknown[]) => unknown, isAfter?: boolean): Object;
|
|
19
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Alias of `off`, for callers who prefer the DOM spelling.
|
|
60
|
+
*
|
|
61
|
+
* @param sigName Signal the handler was connected to.
|
|
62
|
+
* @param callback The handler that was connected.
|
|
63
|
+
* @returns The same object, so calls chain.
|
|
64
|
+
*/
|
|
20
65
|
removeEventListener(sigName: string, callback: (...args: unknown[]) => unknown): Object;
|
|
21
66
|
}
|
|
22
67
|
}
|
|
@@ -26,7 +71,7 @@ type GObjectWithConnect = GObject & {
|
|
|
26
71
|
};
|
|
27
72
|
|
|
28
73
|
GObject.prototype.disconnect = function disconnect(handlerId: number): void {
|
|
29
|
-
|
|
74
|
+
disconnectSignal(this, handlerId);
|
|
30
75
|
};
|
|
31
76
|
|
|
32
77
|
function onImpl(this: GObjectWithConnect, sigName: string, callback: Listener, isAfter?: boolean): GObject {
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { getBoxedValue, getHandle, setBoxedValue } from "@gtkx/runtime";
|
|
2
2
|
import { type Type, Value } from "../gobject.js";
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Allocates a `Value`, initializes it to `gtype`, and hands it to `populate` to fill in.
|
|
6
|
+
*
|
|
7
|
+
* @param gtype GType the value holds.
|
|
8
|
+
* @param populate Called with the initialized value to write the contents.
|
|
9
|
+
* @returns The populated value.
|
|
10
|
+
*/
|
|
4
11
|
export const buildValue = (gtype: Type, populate: (value: Value) => void): Value => {
|
|
5
12
|
const value = new Value();
|
|
6
13
|
value.init(gtype);
|
|
@@ -1,37 +1,92 @@
|
|
|
1
1
|
import { Point as GeneratedPoint, Rect as GeneratedRect, Size as GeneratedSize } from "../graphene.js";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Allocates a new `Point` and initializes it to the given coordinates.
|
|
5
|
+
*
|
|
6
|
+
* @param x the X coordinate
|
|
7
|
+
* @param y the Y coordinate
|
|
8
|
+
* @returns the initialized point
|
|
9
|
+
*/
|
|
3
10
|
const createPoint = (x: number, y: number): GeneratedPoint => {
|
|
4
11
|
const point = GeneratedPoint.alloc();
|
|
5
12
|
point.init(x, y);
|
|
6
13
|
return point;
|
|
7
14
|
};
|
|
8
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Allocates a new `Rect` and initializes it to the given origin and size.
|
|
18
|
+
*
|
|
19
|
+
* @param x the X coordinate of the origin
|
|
20
|
+
* @param y the Y coordinate of the origin
|
|
21
|
+
* @param width the width of the rectangle
|
|
22
|
+
* @param height the height of the rectangle
|
|
23
|
+
* @returns the initialized rectangle
|
|
24
|
+
*/
|
|
9
25
|
const createRect = (x: number, y: number, width: number, height: number): GeneratedRect => {
|
|
10
26
|
const rect = GeneratedRect.alloc();
|
|
11
27
|
rect.init(x, y, width, height);
|
|
12
28
|
return rect;
|
|
13
29
|
};
|
|
14
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Allocates a new `Size` and initializes it to the given width and height.
|
|
33
|
+
*
|
|
34
|
+
* @param width the width
|
|
35
|
+
* @param height the height
|
|
36
|
+
* @returns the initialized size
|
|
37
|
+
*/
|
|
15
38
|
const createSize = (width: number, height: number): GeneratedSize => {
|
|
16
39
|
const size = GeneratedSize.alloc();
|
|
17
40
|
size.init(width, height);
|
|
18
41
|
return size;
|
|
19
42
|
};
|
|
20
43
|
|
|
44
|
+
/** A point with two coordinates. */
|
|
21
45
|
export const Point: typeof GeneratedPoint & { create: typeof createPoint } = Object.assign(GeneratedPoint, {
|
|
22
46
|
create: createPoint,
|
|
23
47
|
});
|
|
24
48
|
|
|
49
|
+
/** A point with two coordinates. */
|
|
25
50
|
export type Point = GeneratedPoint;
|
|
26
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The location and size of a rectangle region.
|
|
54
|
+
*
|
|
55
|
+
* The width and height of a `graphene_rect_t` can be negative; for instance,
|
|
56
|
+
* a `graphene_rect_t` with an origin of [ 0, 0 ] and a size of [ 10, 10 ] is
|
|
57
|
+
* equivalent to a `graphene_rect_t` with an origin of [ 10, 10 ] and a size
|
|
58
|
+
* of [ -10, -10 ].
|
|
59
|
+
*
|
|
60
|
+
* Application code can normalize rectangles using `graphene_rect_normalize()`;
|
|
61
|
+
* this function will ensure that the width and height of a rectangle are
|
|
62
|
+
* positive values. All functions taking a `graphene_rect_t` as an argument
|
|
63
|
+
* will internally operate on a normalized copy; all functions returning a
|
|
64
|
+
* `graphene_rect_t` will always return a normalized rectangle.
|
|
65
|
+
*/
|
|
27
66
|
export const Rect: typeof GeneratedRect & { create: typeof createRect } = Object.assign(GeneratedRect, {
|
|
28
67
|
create: createRect,
|
|
29
68
|
});
|
|
30
69
|
|
|
70
|
+
/**
|
|
71
|
+
* The location and size of a rectangle region.
|
|
72
|
+
*
|
|
73
|
+
* The width and height of a `graphene_rect_t` can be negative; for instance,
|
|
74
|
+
* a `graphene_rect_t` with an origin of [ 0, 0 ] and a size of [ 10, 10 ] is
|
|
75
|
+
* equivalent to a `graphene_rect_t` with an origin of [ 10, 10 ] and a size
|
|
76
|
+
* of [ -10, -10 ].
|
|
77
|
+
*
|
|
78
|
+
* Application code can normalize rectangles using `graphene_rect_normalize()`;
|
|
79
|
+
* this function will ensure that the width and height of a rectangle are
|
|
80
|
+
* positive values. All functions taking a `graphene_rect_t` as an argument
|
|
81
|
+
* will internally operate on a normalized copy; all functions returning a
|
|
82
|
+
* `graphene_rect_t` will always return a normalized rectangle.
|
|
83
|
+
*/
|
|
31
84
|
export type Rect = GeneratedRect;
|
|
32
85
|
|
|
86
|
+
/** A size. */
|
|
33
87
|
export const Size: typeof GeneratedSize & { create: typeof createSize } = Object.assign(GeneratedSize, {
|
|
34
88
|
create: createSize,
|
|
35
89
|
});
|
|
36
90
|
|
|
91
|
+
/** A size. */
|
|
37
92
|
export type Size = GeneratedSize;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/codegen",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Generates the typed GTKX bindings and API reference from GIR and OpenGL registry data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"node": ">=24"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@types/node": "^26.
|
|
47
|
+
"@types/node": "^26.2.0",
|
|
48
48
|
"fast-xml-parser": "^5.10.1",
|
|
49
49
|
"typescript": "^6.0.3",
|
|
50
|
-
"@gtkx/
|
|
51
|
-
"@gtkx/
|
|
50
|
+
"@gtkx/utils": "1.0.0",
|
|
51
|
+
"@gtkx/react": "1.0.0"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"release": "tsx ../../scripts/release-package.ts"
|
|
@@ -48,10 +48,12 @@ import {
|
|
|
48
48
|
tUint64,
|
|
49
49
|
tVoid,
|
|
50
50
|
} from "./descriptor.js";
|
|
51
|
+
import { carrayFor, isUnboundedArray, primitiveCategoryFor } from "./type-shape.js";
|
|
51
52
|
|
|
52
53
|
type RenderDescriptorOptions = {
|
|
53
54
|
argIndexOffset?: number;
|
|
54
55
|
argIndexMap?: Map<number, number> | undefined;
|
|
56
|
+
hasOutIndirection?: boolean;
|
|
55
57
|
isCallerAllocated?: boolean;
|
|
56
58
|
isInline?: boolean;
|
|
57
59
|
isNewlyCreated?: boolean;
|
|
@@ -60,6 +62,7 @@ type RenderDescriptorOptions = {
|
|
|
60
62
|
type ArgIndexOptions = {
|
|
61
63
|
argIndexOffset: number;
|
|
62
64
|
argIndexMap: Map<number, number> | undefined;
|
|
65
|
+
hasOutIndirection: boolean;
|
|
63
66
|
};
|
|
64
67
|
|
|
65
68
|
type RecordPlacement = {
|
|
@@ -122,15 +125,8 @@ const transferOwnership = (transfer: ParameterTransfer): Ownership => {
|
|
|
122
125
|
const deriveElementTransfer = (transfer: ParameterTransfer): ParameterTransfer =>
|
|
123
126
|
transfer === "container" ? "none" : transfer;
|
|
124
127
|
|
|
125
|
-
const isVoidRef = (library: Library, ref: TypeId | undefined): boolean =>
|
|
126
|
-
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const type = library.typeFor(ref);
|
|
131
|
-
|
|
132
|
-
return type?.kind === "primitive" && type.category === "void";
|
|
133
|
-
};
|
|
128
|
+
const isVoidRef = (library: Library, ref: TypeId | undefined): boolean =>
|
|
129
|
+
ref === undefined || primitiveCategoryFor(library, ref) === "void";
|
|
134
130
|
|
|
135
131
|
const isInlineCallbackRef = (library: Library, ref: TypeId | undefined): boolean =>
|
|
136
132
|
ref !== undefined && library.typeFor(ref)?.kind === "callback" && library.nameFor(ref) === undefined;
|
|
@@ -138,6 +134,12 @@ const isInlineCallbackRef = (library: Library, ref: TypeId | undefined): boolean
|
|
|
138
134
|
const shouldOmitPrimaryReturn = (library: Library, returnValue: GirReturnValue): boolean =>
|
|
139
135
|
isVoidRef(library, returnValue.type) || returnValue.skip;
|
|
140
136
|
|
|
137
|
+
const argIndexOptions = (options: RenderDescriptorOptions): ArgIndexOptions => ({
|
|
138
|
+
argIndexOffset: options.argIndexOffset ?? 0,
|
|
139
|
+
argIndexMap: options.argIndexMap,
|
|
140
|
+
hasOutIndirection: options.hasOutIndirection === true,
|
|
141
|
+
});
|
|
142
|
+
|
|
141
143
|
const renderDescriptor = (
|
|
142
144
|
context: ModuleContext,
|
|
143
145
|
ref: TypeId | undefined,
|
|
@@ -148,8 +150,7 @@ const renderDescriptor = (
|
|
|
148
150
|
return tVoid;
|
|
149
151
|
}
|
|
150
152
|
|
|
151
|
-
const
|
|
152
|
-
const indexOptions: ArgIndexOptions = { argIndexOffset, argIndexMap: options.argIndexMap };
|
|
153
|
+
const indexOptions = argIndexOptions(options);
|
|
153
154
|
const ownership = transferOwnership(transfer);
|
|
154
155
|
const type = context.library.typeFor(ref);
|
|
155
156
|
|
|
@@ -255,8 +256,19 @@ const isScalarRef = (library: Library, ref: TypeId | undefined): boolean => {
|
|
|
255
256
|
return type !== undefined && isScalarType(library, type);
|
|
256
257
|
};
|
|
257
258
|
|
|
259
|
+
const isStrvRef = (library: Library, ref: TypeId | undefined): boolean => {
|
|
260
|
+
const type = carrayFor(library, ref);
|
|
261
|
+
|
|
262
|
+
if (type === undefined) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return isUnboundedArray(type) && primitiveCategoryFor(library, type.element) === "string";
|
|
267
|
+
};
|
|
268
|
+
|
|
258
269
|
const isCellInout = (library: Library, parameter: GirParameter): boolean =>
|
|
259
|
-
isInoutParameter(parameter) &&
|
|
270
|
+
isInoutParameter(parameter) &&
|
|
271
|
+
(isScalarRef(library, parameter.type) || isStrvRef(library, parameter.type));
|
|
260
272
|
|
|
261
273
|
const renderParamDescriptor = (
|
|
262
274
|
context: ModuleContext,
|
|
@@ -264,12 +276,14 @@ const renderParamDescriptor = (
|
|
|
264
276
|
ref: TypeId | undefined,
|
|
265
277
|
argIndex: Partial<ArgIndexOptions> = {},
|
|
266
278
|
): string => {
|
|
279
|
+
const behindRef: RenderDescriptorOptions = { ...argIndex, hasOutIndirection: true };
|
|
280
|
+
|
|
267
281
|
if (isCellInout(context.library, parameter)) {
|
|
268
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership,
|
|
282
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, behindRef), true);
|
|
269
283
|
}
|
|
270
284
|
|
|
271
285
|
if (isOutParameter(parameter)) {
|
|
272
|
-
return tRef(renderDescriptor(context, ref, parameter.transferOwnership,
|
|
286
|
+
return tRef(renderDescriptor(context, ref, parameter.transferOwnership, behindRef));
|
|
273
287
|
}
|
|
274
288
|
|
|
275
289
|
return renderDescriptor(context, ref, parameter.transferOwnership, {
|
|
@@ -303,6 +317,10 @@ const callbackOptionsArg = (owningParameter: GirParameter, userDataIndex: number
|
|
|
303
317
|
options.push("hasDestroy: true");
|
|
304
318
|
}
|
|
305
319
|
|
|
320
|
+
if (owningParameter.closureIndex !== undefined) {
|
|
321
|
+
options.push("hasUserData: true");
|
|
322
|
+
}
|
|
323
|
+
|
|
306
324
|
if (userDataIndex !== undefined) {
|
|
307
325
|
options.push(`userDataIndex: ${String(userDataIndex)}`);
|
|
308
326
|
}
|
|
@@ -458,10 +476,11 @@ const fundamentalAncestor = (
|
|
|
458
476
|
const classSelfDescriptor = (
|
|
459
477
|
context: ModuleContext,
|
|
460
478
|
type: Extract<EntityType, { kind: "class" | "interface" }>,
|
|
479
|
+
ownership: Ownership,
|
|
461
480
|
): string => {
|
|
462
481
|
const ancestor = fundamentalAncestor(context, type);
|
|
463
482
|
|
|
464
|
-
return ancestor === undefined ? tObject(
|
|
483
|
+
return ancestor === undefined ? tObject(ownership) : renderFundamental({ ...ancestor, ownership });
|
|
465
484
|
};
|
|
466
485
|
|
|
467
486
|
const renderSelfDescriptor = (context: ModuleContext, instance: GirParameter): string => {
|
|
@@ -478,7 +497,7 @@ const renderSelfDescriptor = (context: ModuleContext, instance: GirParameter): s
|
|
|
478
497
|
}
|
|
479
498
|
|
|
480
499
|
if (isClassOrInterface(type)) {
|
|
481
|
-
return classSelfDescriptor(context, type);
|
|
500
|
+
return classSelfDescriptor(context, type, transferOwnership(instance.transferOwnership));
|
|
482
501
|
}
|
|
483
502
|
|
|
484
503
|
if (type.kind === "record") {
|
|
@@ -659,8 +678,9 @@ const arrayExpression = (
|
|
|
659
678
|
}
|
|
660
679
|
|
|
661
680
|
const ownership = transferOwnership(transfer);
|
|
662
|
-
const
|
|
663
|
-
const
|
|
681
|
+
const elementOptions: ArgIndexOptions = { ...options, hasOutIndirection: false };
|
|
682
|
+
const element = renderDescriptor(context, ref.element, deriveElementTransfer(transfer), elementOptions);
|
|
683
|
+
const size = inlineElementSize(context, ref, options.hasOutIndirection);
|
|
664
684
|
|
|
665
685
|
if (ref.lengthParameterIndex !== undefined) {
|
|
666
686
|
return tSizedArray(element, mapArgIndex(options, ref.lengthParameterIndex), ownership, size);
|
|
@@ -683,20 +703,18 @@ const recordInlineSize = (context: ModuleContext, record: ResolvedRecord): numbe
|
|
|
683
703
|
return size > 0 ? size : undefined;
|
|
684
704
|
};
|
|
685
705
|
|
|
686
|
-
const
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
if (element === undefined) {
|
|
692
|
-
return undefined;
|
|
693
|
-
}
|
|
706
|
+
const elementPointerDepth = (elementCType: string | undefined, hasOutIndirection: boolean): number => {
|
|
707
|
+
const declared = elementCType === undefined ? 0 : elementCType.split("*").length - 1;
|
|
708
|
+
|
|
709
|
+
return hasOutIndirection ? declared - 1 : declared;
|
|
710
|
+
};
|
|
694
711
|
|
|
695
|
-
|
|
712
|
+
const inlineElementSize = (context: ModuleContext, ref: CArrayType, hasOutIndirection: boolean): number | undefined => {
|
|
713
|
+
if (elementPointerDepth(ref.elementCType, hasOutIndirection) > 0) {
|
|
696
714
|
return undefined;
|
|
697
715
|
}
|
|
698
716
|
|
|
699
|
-
const type = context.library.typeFor(element);
|
|
717
|
+
const type = context.library.typeFor(ref.element);
|
|
700
718
|
|
|
701
719
|
if (type?.kind !== "record") {
|
|
702
720
|
return undefined;
|
|
@@ -724,6 +742,7 @@ export {
|
|
|
724
742
|
renderDescriptor,
|
|
725
743
|
isScalarRef,
|
|
726
744
|
isCellInout,
|
|
745
|
+
recordInlineSize,
|
|
727
746
|
renderParamDescriptor,
|
|
728
747
|
renderCallbackType,
|
|
729
748
|
renderSelfDescriptor,
|
|
@@ -5,9 +5,10 @@ import type { Library } from "../gir/library.js";
|
|
|
5
5
|
import type { GirProperty } from "../gir/property.js";
|
|
6
6
|
import type { TypeId } from "../gir/type-id.js";
|
|
7
7
|
import type { ModuleContext } from "../writer/context.js";
|
|
8
|
-
import { ancestorChain, type ResolvedAncestor,
|
|
8
|
+
import { ancestorChain, type ResolvedAncestor, resolveInterfaces } from "../gir/ancestry.js";
|
|
9
9
|
import { methodExportName } from "../store/gi/method.js";
|
|
10
10
|
import { resolveAccessorType } from "../store/gi/property-accessor.js";
|
|
11
|
+
import { vfuncMemberNames } from "../store/gi/vtable.js";
|
|
11
12
|
import { inputParameters } from "./param-structure.js";
|
|
12
13
|
import { renderTsType } from "./ts-type.js";
|
|
13
14
|
|
|
@@ -45,29 +46,11 @@ const RESERVED_SIGNAL_MEMBERS = new Set([
|
|
|
45
46
|
"removeEventListener",
|
|
46
47
|
]);
|
|
47
48
|
|
|
48
|
-
const resolveImplementedInterface = (
|
|
49
|
-
context: AncestryContext,
|
|
50
|
-
name: string,
|
|
51
|
-
defaultNamespace: string = context.namespace.name,
|
|
52
|
-
): ResolvedAncestor | undefined => resolveInterface(context.library, defaultNamespace, name);
|
|
53
|
-
|
|
54
49
|
const resolveDirectInterfaces = (
|
|
55
50
|
context: AncestryContext,
|
|
56
51
|
klass: GirClass,
|
|
57
52
|
defaultNamespace: string,
|
|
58
|
-
): ResolvedAncestor[] =>
|
|
59
|
-
const interfaces: ResolvedAncestor[] = [];
|
|
60
|
-
|
|
61
|
-
for (const implementName of klass.implements) {
|
|
62
|
-
const iface = resolveImplementedInterface(context, implementName, defaultNamespace);
|
|
63
|
-
|
|
64
|
-
if (iface !== undefined) {
|
|
65
|
-
interfaces.push(iface);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return interfaces;
|
|
70
|
-
};
|
|
53
|
+
): ResolvedAncestor[] => resolveInterfaces(context.library, defaultNamespace, klass.implements);
|
|
71
54
|
|
|
72
55
|
const resolvePrerequisiteReference = (context: ModuleContext, name: string): string | undefined => {
|
|
73
56
|
const resolved = context.library.resolveType(context.namespace.name, name);
|
|
@@ -221,25 +204,45 @@ const mergeOmissionName = (
|
|
|
221
204
|
return ancestor.returnType !== returnType || ancestor.arity !== arity ? name : undefined;
|
|
222
205
|
};
|
|
223
206
|
|
|
224
|
-
const
|
|
207
|
+
const classChainVfuncNames = (context: ModuleContext, klass: GirClass): Set<string> => {
|
|
208
|
+
const names: Set<string> = new Set(vfuncMemberNames(context, context.namespace.name, klass));
|
|
209
|
+
|
|
210
|
+
forEachAncestor(context, klass, (ancestor) => {
|
|
211
|
+
for (const name of vfuncMemberNames(context, ancestor.namespaceName, ancestor.klass)) {
|
|
212
|
+
names.add(name);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
return names;
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const methodMergeOmissions = (context: ModuleContext, klass: GirClass, iface: GirClass): string[] => {
|
|
220
|
+
const ancestors = ancestorClassMethodSignatures(context, klass);
|
|
221
|
+
|
|
222
|
+
return iface.methods
|
|
223
|
+
.map((method) => mergeOmissionName(context, method, ancestors))
|
|
224
|
+
.filter((name): name is string => name !== undefined);
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const vfuncMergeOmissions = (
|
|
225
228
|
context: ModuleContext,
|
|
226
229
|
klass: GirClass,
|
|
227
230
|
iface: { klass: GirClass; namespaceName: string },
|
|
228
231
|
): string[] => {
|
|
229
|
-
const
|
|
230
|
-
const omissions: string[] = [];
|
|
232
|
+
const claimed = classChainVfuncNames(context, klass);
|
|
231
233
|
|
|
232
|
-
|
|
233
|
-
const name = mergeOmissionName(context, method, ancestors);
|
|
234
|
-
|
|
235
|
-
if (name !== undefined) {
|
|
236
|
-
omissions.push(name);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return omissions;
|
|
234
|
+
return vfuncMemberNames(context, iface.namespaceName, iface.klass).filter((name) => claimed.has(name));
|
|
241
235
|
};
|
|
242
236
|
|
|
237
|
+
const collectInterfaceMergeOmissions = (
|
|
238
|
+
context: ModuleContext,
|
|
239
|
+
klass: GirClass,
|
|
240
|
+
iface: { klass: GirClass; namespaceName: string },
|
|
241
|
+
): string[] => [
|
|
242
|
+
...methodMergeOmissions(context, klass, iface.klass),
|
|
243
|
+
...vfuncMergeOmissions(context, klass, iface),
|
|
244
|
+
];
|
|
245
|
+
|
|
243
246
|
const collectInheritedPropertyTypes = (context: ModuleContext, klass: GirClass): Map<string, string> => {
|
|
244
247
|
const types: Map<string, string> = new Map();
|
|
245
248
|
|
|
@@ -416,7 +419,6 @@ const enumIdentity = (context: ModuleContext, ref: TypeId | undefined): string |
|
|
|
416
419
|
};
|
|
417
420
|
|
|
418
421
|
export {
|
|
419
|
-
resolveImplementedInterface,
|
|
420
422
|
resolvePrerequisiteReference,
|
|
421
423
|
forEachAncestor,
|
|
422
424
|
collectInterfaceProperties,
|
|
@@ -425,6 +427,5 @@ export {
|
|
|
425
427
|
collectInheritedMethods,
|
|
426
428
|
conflictRename,
|
|
427
429
|
reservedSignalMemberRename,
|
|
428
|
-
type OwnedProperty,
|
|
429
430
|
type InheritedMethods,
|
|
430
431
|
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Library } from "../gir/library.js";
|
|
2
|
+
import type { GirCallable, GirParameter } from "../gir/parameter.js";
|
|
3
|
+
import type { TypeId } from "../gir/type-id.js";
|
|
4
|
+
import { isOutParameter } from "../gir/parameter.js";
|
|
5
|
+
import { carrayFor, isUnboundedArray, primitiveCategoryFor } from "./type-shape.js";
|
|
6
|
+
|
|
7
|
+
const BYTE_CATEGORIES: Set<string> = new Set(["int8", "uint8"]);
|
|
8
|
+
const CHAR_POINTER = /char\s*\*/;
|
|
9
|
+
|
|
10
|
+
const isByteElement = (library: Library, element: TypeId): boolean => {
|
|
11
|
+
const category = primitiveCategoryFor(library, element);
|
|
12
|
+
|
|
13
|
+
return category !== undefined && BYTE_CATEGORIES.has(category);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const isNulTerminatedBytes = (library: Library, ref: TypeId | undefined): boolean => {
|
|
17
|
+
const type = carrayFor(library, ref);
|
|
18
|
+
|
|
19
|
+
if (type?.arrayCType === undefined || !CHAR_POINTER.test(type.arrayCType)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return isUnboundedArray(type) && isByteElement(library, type.element);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const nulTerminatedByteParams = (library: Library, callable: GirCallable): GirParameter[] =>
|
|
27
|
+
callable.parameters.filter(
|
|
28
|
+
(parameter) => !isOutParameter(parameter) && isNulTerminatedBytes(library, parameter.type),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
export { nulTerminatedByteParams };
|