@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
package/dist/gir/record.d.ts
CHANGED
|
@@ -1,25 +1,47 @@
|
|
|
1
1
|
import type { ParseContext } from "./type-id.js";
|
|
2
|
+
import { type GirAnnotations } from "./annotations.js";
|
|
2
3
|
import { type GirField } from "./field.js";
|
|
3
4
|
import { type GirFunction } from "./function.js";
|
|
4
5
|
import { type RawNode } from "./parse.js";
|
|
6
|
+
/** A C struct or union declared by a GIR namespace: a plain record, a boxed type, or a GObject vtable. */
|
|
5
7
|
type GirRecord = {
|
|
8
|
+
/** Whether the record is the class or interface struct holding another type's virtual methods. */
|
|
6
9
|
isVtable: boolean;
|
|
10
|
+
/** Name within the declaring namespace, such as `"TextIter"`. */
|
|
7
11
|
name: string;
|
|
12
|
+
/** Raw gtk-doc text from the GIR, undefined when the record is undocumented. */
|
|
8
13
|
doc: string | undefined;
|
|
14
|
+
/** Release and deprecation annotations GIR carries on the record. */
|
|
15
|
+
annotations: GirAnnotations;
|
|
16
|
+
/** C struct name, such as `"GtkTextIter"`. */
|
|
9
17
|
cType: string | undefined;
|
|
18
|
+
/** GLib type name the record is registered under, present when it is a boxed type. */
|
|
10
19
|
glibTypeName: string | undefined;
|
|
20
|
+
/** Name of the function registering the record's GType, such as `"gtk_text_iter_get_type"`. */
|
|
11
21
|
glibGetType: string | undefined;
|
|
22
|
+
/** Name of the function taking a reference, for reference-counted records. */
|
|
12
23
|
glibRefFunc: string | undefined;
|
|
24
|
+
/** Name of the function dropping a reference, for reference-counted records. */
|
|
13
25
|
glibUnrefFunc: string | undefined;
|
|
26
|
+
/** Name of the function duplicating an instance, used when the record has no ref function. */
|
|
14
27
|
copyFunc: string | undefined;
|
|
28
|
+
/** Name of the function releasing an instance, used when the record has no unref function. */
|
|
15
29
|
freeFunc: string | undefined;
|
|
30
|
+
/** Whether the struct is only ever handled behind a pointer, so its layout stays hidden. */
|
|
16
31
|
disguised: boolean;
|
|
32
|
+
/** Whether the struct's fields are private, so instances cannot be allocated or read directly. */
|
|
17
33
|
opaque: boolean;
|
|
34
|
+
/** Whether the record is exposed to language bindings. */
|
|
18
35
|
introspectable: boolean;
|
|
36
|
+
/** Struct members: the named fields first, then the anonymous inline unions, then the inline records. */
|
|
19
37
|
fields: GirField[];
|
|
38
|
+
/** Functions taking an instance of the record as their first argument. */
|
|
20
39
|
methods: GirFunction[];
|
|
40
|
+
/** Functions returning a new instance of the record. */
|
|
21
41
|
constructors: GirFunction[];
|
|
42
|
+
/** Functions scoped to the record but taking no instance. */
|
|
22
43
|
functions: GirFunction[];
|
|
44
|
+
/** Whether the record is a union, so its fields overlap instead of following one another. */
|
|
23
45
|
isUnion: boolean;
|
|
24
46
|
};
|
|
25
47
|
declare const recordFromNode: (node: RawNode, isVtable: boolean, isUnion: boolean, context: ParseContext) => GirRecord;
|
package/dist/gir/record.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAsD,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9F,0GAA0G;AAC1G,KAAK,SAAS,GAAG;IACb,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,qEAAqE;IACrE,WAAW,EAAE,cAAc,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,sFAAsF;IACtF,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,+FAA+F;IAC/F,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,4FAA4F;IAC5F,SAAS,EAAE,OAAO,CAAC;IACnB,kGAAkG;IAClG,MAAM,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,yGAAyG;IACzG,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wDAAwD;IACxD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,cAAc,GAChB,MAAM,OAAO,EACb,UAAU,OAAO,EACjB,SAAS,OAAO,EAChB,SAAS,YAAY,KACtB,SAmBD,CAAC;AAEH,QAAA,MAAM,cAAc,GAAI,MAAM,OAAO,KAAG,OAA+D,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,CAAC"}
|
package/dist/gir/record.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { documentedFromNode } from "./annotations.js";
|
|
1
2
|
import { collectFields } from "./field.js";
|
|
2
3
|
import { functionFromNode } from "./function.js";
|
|
3
|
-
import { attr, getChildren,
|
|
4
|
+
import { attr, getChildren, GIR_CONSTRUCTOR_TAG, isAttrTrue } from "./parse.js";
|
|
4
5
|
const recordFromNode = (node, isVtable, isUnion, context) => ({
|
|
5
6
|
isVtable,
|
|
7
|
+
...documentedFromNode(node),
|
|
6
8
|
name: attr(node, "name") ?? attr(node, "glib:name") ?? "",
|
|
7
|
-
doc: getDoc(node),
|
|
8
9
|
cType: attr(node, "c:type"),
|
|
9
10
|
glibTypeName: attr(node, "glib:type-name"),
|
|
10
11
|
glibGetType: attr(node, "glib:get-type"),
|
package/dist/gir/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/gir/record.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AA4C9F,MAAM,cAAc,GAAG,CACnB,IAAa,EACb,QAAiB,EACjB,OAAgB,EAChB,OAAqB,EACZ,EAAE,CAAC,CAAC;IACb,QAAQ;IACR,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE;IACzD,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC1C,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACxC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACxC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;IACrC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;IAClC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;IACxD,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;IACpC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvF,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnG,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACnF,OAAO;CACV,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC,KAAK,SAAS,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAkB,CAAC","sourcesContent":["import type { ParseContext } from \"./type-id.js\";\nimport { documentedFromNode, type GirAnnotations } from \"./annotations.js\";\nimport { collectFields, type GirField } from \"./field.js\";\nimport { functionFromNode, type GirFunction } from \"./function.js\";\nimport { attr, getChildren, GIR_CONSTRUCTOR_TAG, isAttrTrue, type RawNode } from \"./parse.js\";\n\n/** A C struct or union declared by a GIR namespace: a plain record, a boxed type, or a GObject vtable. */\ntype GirRecord = {\n /** Whether the record is the class or interface struct holding another type's virtual methods. */\n isVtable: boolean;\n /** Name within the declaring namespace, such as `\"TextIter\"`. */\n name: string;\n /** Raw gtk-doc text from the GIR, undefined when the record is undocumented. */\n doc: string | undefined;\n /** Release and deprecation annotations GIR carries on the record. */\n annotations: GirAnnotations;\n /** C struct name, such as `\"GtkTextIter\"`. */\n cType: string | undefined;\n /** GLib type name the record is registered under, present when it is a boxed type. */\n glibTypeName: string | undefined;\n /** Name of the function registering the record's GType, such as `\"gtk_text_iter_get_type\"`. */\n glibGetType: string | undefined;\n /** Name of the function taking a reference, for reference-counted records. */\n glibRefFunc: string | undefined;\n /** Name of the function dropping a reference, for reference-counted records. */\n glibUnrefFunc: string | undefined;\n /** Name of the function duplicating an instance, used when the record has no ref function. */\n copyFunc: string | undefined;\n /** Name of the function releasing an instance, used when the record has no unref function. */\n freeFunc: string | undefined;\n /** Whether the struct is only ever handled behind a pointer, so its layout stays hidden. */\n disguised: boolean;\n /** Whether the struct's fields are private, so instances cannot be allocated or read directly. */\n opaque: boolean;\n /** Whether the record is exposed to language bindings. */\n introspectable: boolean;\n /** Struct members: the named fields first, then the anonymous inline unions, then the inline records. */\n fields: GirField[];\n /** Functions taking an instance of the record as their first argument. */\n methods: GirFunction[];\n /** Functions returning a new instance of the record. */\n constructors: GirFunction[];\n /** Functions scoped to the record but taking no instance. */\n functions: GirFunction[];\n /** Whether the record is a union, so its fields overlap instead of following one another. */\n isUnion: boolean;\n};\n\nconst recordFromNode = (\n node: RawNode,\n isVtable: boolean,\n isUnion: boolean,\n context: ParseContext,\n): GirRecord => ({\n isVtable,\n ...documentedFromNode(node),\n name: attr(node, \"name\") ?? attr(node, \"glib:name\") ?? \"\",\n cType: attr(node, \"c:type\"),\n glibTypeName: attr(node, \"glib:type-name\"),\n glibGetType: attr(node, \"glib:get-type\"),\n glibRefFunc: attr(node, \"glib:ref-func\"),\n glibUnrefFunc: attr(node, \"glib:unref-func\"),\n copyFunc: attr(node, \"copy-function\"),\n freeFunc: attr(node, \"free-function\"),\n disguised: isAttrTrue(node, \"disguised\"),\n opaque: isAttrTrue(node, \"opaque\"),\n introspectable: isAttrTrue(node, \"introspectable\", true),\n fields: collectFields(node, context),\n methods: getChildren(node, \"method\").map((method) => functionFromNode(method, context)),\n constructors: getChildren(node, GIR_CONSTRUCTOR_TAG).map((ctor) => functionFromNode(ctor, context)),\n functions: getChildren(node, \"function\").map((fn) => functionFromNode(fn, context)),\n isUnion,\n});\n\nconst isVtableRecord = (node: RawNode): boolean => attr(node, \"glib:is-gtype-struct-for\") !== undefined;\n\nexport { recordFromNode, isVtableRecord, type GirRecord };\n"]}
|
package/dist/gir/size.d.ts
CHANGED
|
@@ -8,14 +8,15 @@ type FieldSlot = {
|
|
|
8
8
|
bitOffset: number | undefined;
|
|
9
9
|
bitWidth: number | undefined;
|
|
10
10
|
};
|
|
11
|
+
type FieldSlots = {
|
|
12
|
+
slots: FieldSlot[];
|
|
13
|
+
size: number;
|
|
14
|
+
};
|
|
11
15
|
type FieldLayoutInput = {
|
|
12
16
|
layout: FieldLayout;
|
|
13
17
|
bits: number | undefined;
|
|
14
18
|
};
|
|
15
19
|
declare const layoutOfPrimitive: (category: PrimitiveCategory) => FieldLayout;
|
|
16
|
-
declare const computeFieldSlots: (fields: FieldLayoutInput[], isUnion?: boolean) =>
|
|
17
|
-
slots: FieldSlot[];
|
|
18
|
-
size: number;
|
|
19
|
-
};
|
|
20
|
+
declare const computeFieldSlots: (fields: FieldLayoutInput[], isUnion?: boolean) => FieldSlots;
|
|
20
21
|
export { layoutOfPrimitive, computeFieldSlots, type FieldLayout, type FieldSlot, type FieldLayoutInput };
|
|
21
22
|
//# sourceMappingURL=size.d.ts.map
|
package/dist/gir/size.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AASF,QAAA,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAIxD,CAAC;AA+EF,QAAA,MAAM,iBAAiB,GAAI,QAAQ,gBAAgB,EAAE,EAAE,iBAAe,KAAG
|
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,KAAK,WAAW,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,KAAK,UAAU,GAAG;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AASF,QAAA,MAAM,iBAAiB,GAAI,UAAU,iBAAiB,KAAG,WAIxD,CAAC;AA+EF,QAAA,MAAM,iBAAiB,GAAI,QAAQ,gBAAgB,EAAE,EAAE,iBAAe,KAAG,UACL,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|
package/dist/gir/size.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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","sourcesContent":["import { PRIMITIVE_SIZE, type PrimitiveCategory } from \"./primitives.js\";\n\ntype FieldLayout = {\n size: number;\n align: number;\n};\n\ntype FieldSlot = {\n byteOffset: number;\n bitOffset: number | undefined;\n bitWidth: number | undefined;\n};\n\ntype FieldSlots = {\n slots: FieldSlot[];\n size: number;\n};\n\ntype FieldLayoutInput = {\n layout: FieldLayout;\n bits: number | undefined;\n};\n\ntype StructLayoutState = {\n bitCursor: number;\n maxAlign: number;\n};\n\nconst floorDown = (value: number, multiple: number): number => value - (value % multiple);\n\nconst layoutOfPrimitive = (category: PrimitiveCategory): FieldLayout => {\n const size = PRIMITIVE_SIZE[category];\n\n return { size, align: size === 0 ? 1 : size };\n};\n\nconst roundUp = (value: number, multiple: number): number => {\n if (multiple <= 1) {\n return value;\n }\n\n const remainder = value % multiple;\n\n return remainder === 0 ? value : value + (multiple - remainder);\n};\n\nconst computeUnionSlots = (fields: FieldLayoutInput[]): FieldSlots => {\n let maxSize = 0;\n let maxAlign = 1;\n\n const slots = fields.map((field) => {\n maxSize = Math.max(maxSize, field.layout.size);\n maxAlign = Math.max(maxAlign, field.layout.align);\n\n return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };\n });\n\n return { slots, size: roundUp(maxSize, maxAlign) };\n};\n\nconst pushPlainField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput, align: number): void => {\n const byteOffset = roundUp(roundUp(state.bitCursor, 8) / 8, align);\n slots.push({ byteOffset, bitOffset: undefined, bitWidth: undefined });\n state.bitCursor = (byteOffset + field.layout.size) * 8;\n};\n\nconst pushBitfield = (input: {\n state: StructLayoutState;\n slots: FieldSlot[];\n field: FieldLayoutInput;\n align: number;\n bits: number;\n}): void => {\n const { state, slots, field, align, bits } = input;\n const unitStart = floorDown(floorDown(state.bitCursor, 8) / 8, align);\n const isFitsInCurrentUnit = state.bitCursor + bits <= (unitStart + field.layout.size) * 8;\n const byteOffset = isFitsInCurrentUnit ? unitStart : roundUp(roundUp(state.bitCursor, 8) / 8, align);\n\n if (!isFitsInCurrentUnit) {\n state.bitCursor = byteOffset * 8;\n }\n\n slots.push({ byteOffset, bitOffset: state.bitCursor - byteOffset * 8, bitWidth: bits });\n state.bitCursor += bits;\n};\n\nconst processStructField = (state: StructLayoutState, slots: FieldSlot[], field: FieldLayoutInput): void => {\n const align = Math.max(1, field.layout.align);\n\n if (align > state.maxAlign) {\n state.maxAlign = align;\n }\n\n if (field.bits === undefined) {\n pushPlainField(state, slots, field, align);\n\n return;\n }\n\n pushBitfield({ state, slots, field, align, bits: field.bits });\n};\n\nconst computeStructSlots = (fields: FieldLayoutInput[]): FieldSlots => {\n const slots: FieldSlot[] = [];\n const state: StructLayoutState = { bitCursor: 0, maxAlign: 1 };\n\n for (const field of fields) {\n processStructField(state, slots, field);\n }\n\n return { slots, size: roundUp(roundUp(state.bitCursor, 8) / 8, state.maxAlign) };\n};\n\nconst computeFieldSlots = (fields: FieldLayoutInput[], isUnion = false): FieldSlots =>\n isUnion ? computeUnionSlots(fields) : computeStructSlots(fields);\n\nexport { layoutOfPrimitive, computeFieldSlots, type FieldLayout, type FieldSlot, type FieldLayoutInput };\n"]}
|
package/dist/gir/type-id.d.ts
CHANGED
|
@@ -1,44 +1,79 @@
|
|
|
1
1
|
import type { RawNode } from "./parse.js";
|
|
2
2
|
import type { PrimitiveCategory } from "./primitives.js";
|
|
3
|
+
/** A reference to a parsed type: the type table holding it, and its slot in that table. */
|
|
3
4
|
type TypeId = {
|
|
5
|
+
/** Id of the table holding the type: a namespace's, or the internal one primitives and varargs intern into. */
|
|
4
6
|
nsId: number;
|
|
7
|
+
/** Slot the type occupies in that table. */
|
|
5
8
|
id: number;
|
|
6
9
|
};
|
|
10
|
+
/** Which GLib container a {@link ListType} is. */
|
|
7
11
|
type ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];
|
|
12
|
+
/** A type that marshals directly as a value, such as `gint` or `utf8`. */
|
|
8
13
|
type PrimitiveType = {
|
|
14
|
+
/** Discriminates {@link StructuralType}. */
|
|
9
15
|
kind: "primitive";
|
|
16
|
+
/** The scalar the type marshals as. */
|
|
10
17
|
category: PrimitiveCategory;
|
|
11
18
|
};
|
|
19
|
+
/** The trailing `...` argument list of a variadic C function. */
|
|
12
20
|
type VarargsType = {
|
|
21
|
+
/** Discriminates {@link StructuralType}. */
|
|
13
22
|
kind: "varargs";
|
|
14
23
|
};
|
|
24
|
+
/** A C array, along with whatever the GIR says about how its length is determined. */
|
|
15
25
|
type CArrayType = {
|
|
26
|
+
/** Discriminates {@link StructuralType}. */
|
|
16
27
|
kind: "carray";
|
|
28
|
+
/** Type of the array's elements, paired with `elementCType` to build the element descriptor. */
|
|
17
29
|
element: TypeId;
|
|
30
|
+
/** C declaration of an element, which tells an inline struct apart from a pointer to one. */
|
|
18
31
|
elementCType: string | undefined;
|
|
32
|
+
/** C declaration of the array itself. */
|
|
33
|
+
arrayCType: string | undefined;
|
|
34
|
+
/** Index of the parameter, or of the sibling record field, carrying the length. */
|
|
19
35
|
lengthParameterIndex: number | undefined;
|
|
36
|
+
/** Element count when the array has a fixed size. */
|
|
20
37
|
fixedSize: number | undefined;
|
|
38
|
+
/** Whether the array ends at a null element. */
|
|
21
39
|
isZeroTerminated: boolean;
|
|
22
40
|
};
|
|
41
|
+
/** A GLib list or array container over a single element type. */
|
|
23
42
|
type ListType = {
|
|
43
|
+
/** Discriminates {@link StructuralType}. */
|
|
24
44
|
kind: "list";
|
|
45
|
+
/** Which container the type is. */
|
|
25
46
|
flavor: ListFlavor;
|
|
47
|
+
/** Type the container's elements marshal as, which the list descriptor wraps. */
|
|
26
48
|
element: TypeId;
|
|
27
49
|
};
|
|
50
|
+
/** A `GLib.HashTable`. */
|
|
28
51
|
type HashTableType = {
|
|
52
|
+
/** Discriminates {@link StructuralType}. */
|
|
29
53
|
kind: "hashtable";
|
|
54
|
+
/** Type the keys marshal as, rendered as the key half of a `Record` or `Map`. */
|
|
30
55
|
key: TypeId;
|
|
56
|
+
/** Type the values marshal as, rendered as the value half of a `Record` or `Map`. */
|
|
31
57
|
value: TypeId;
|
|
32
58
|
};
|
|
59
|
+
/** A type the GIR describes by its structure rather than by a name it declares. */
|
|
33
60
|
type StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;
|
|
61
|
+
/** The hooks the GIR parsers use to reference and register types while walking one namespace. */
|
|
34
62
|
type ParseContext = {
|
|
63
|
+
/** Id of the namespace being parsed. */
|
|
35
64
|
nsId: number;
|
|
65
|
+
/** Resolves a GIR type name, optionally namespace-qualified, reserving a slot when it is not parsed yet. */
|
|
36
66
|
findType(name: string): TypeId;
|
|
67
|
+
/** Interns a primitive type and returns its id. */
|
|
37
68
|
addPrimitive(category: PrimitiveCategory): TypeId;
|
|
69
|
+
/** Interns the varargs type and returns its id. */
|
|
38
70
|
addVarargs(): TypeId;
|
|
71
|
+
/** Registers an unnamed container type in the namespace and returns its id. */
|
|
39
72
|
addContainer(type: CArrayType | ListType | HashTableType): TypeId;
|
|
73
|
+
/** Parses an inline `<callback>` node, registers it as an unnamed type, and returns its id. */
|
|
40
74
|
addAnonymousCallback(node: RawNode): TypeId;
|
|
41
75
|
};
|
|
76
|
+
/** GIR type names of the GLib containers, mapped to the {@link ListFlavor} each one parses to. */
|
|
42
77
|
declare const LIST_FLAVOR_BY_NAME: {
|
|
43
78
|
readonly "GLib.List": "glist";
|
|
44
79
|
readonly "GLib.SList": "gslist";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,MAAM,GAAG;
|
|
1
|
+
{"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,2FAA2F;AAC3F,KAAK,MAAM,GAAG;IACV,+GAA+G;IAC/G,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,kDAAkD;AAClD,KAAK,UAAU,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjF,0EAA0E;AAC1E,KAAK,aAAa,GAAG;IACjB,4CAA4C;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,iEAAiE;AACjE,KAAK,WAAW,GAAG;IACf,4CAA4C;IAC5C,IAAI,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,sFAAsF;AACtF,KAAK,UAAU,GAAG;IACd,4CAA4C;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,yCAAyC;IACzC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gDAAgD;IAChD,gBAAgB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,iEAAiE;AACjE,KAAK,QAAQ,GAAG;IACZ,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0BAA0B;AAC1B,KAAK,aAAa,GAAG;IACjB,4CAA4C;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,mFAAmF;AACnF,KAAK,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1F,iGAAiG;AACjG,KAAK,YAAY,GAAG;IAChB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,4GAA4G;IAC5G,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,mDAAmD;IACnD,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClD,mDAAmD;IACnD,UAAU,IAAI,MAAM,CAAC;IACrB,+EAA+E;IAC/E,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IAClE,+FAA+F;IAC/F,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/C,CAAC;AAEF,kGAAkG;AAClG,QAAA,MAAM,mBAAmB;;;;;;CAMf,CAAC;AAEX,QAAA,MAAM,qBAAqB,GAAI,KAAK,UAAU,KAAG,OACiD,CAAC;AAEnG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,GACpB,CAAC"}
|
package/dist/gir/type-id.js
CHANGED
package/dist/gir/type-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAqFA,kGAAkG;AAClG,MAAM,mBAAmB,GAAG;IACxB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC;AAEX,MAAM,qBAAqB,GAAG,CAAC,GAAe,EAAW,EAAE,CACvD,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC;AAEnG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,GAQtB,CAAC","sourcesContent":["import type { RawNode } from \"./parse.js\";\nimport type { PrimitiveCategory } from \"./primitives.js\";\n\n/** A reference to a parsed type: the type table holding it, and its slot in that table. */\ntype TypeId = {\n /** Id of the table holding the type: a namespace's, or the internal one primitives and varargs intern into. */\n nsId: number;\n /** Slot the type occupies in that table. */\n id: number;\n};\n\n/** Which GLib container a {@link ListType} is. */\ntype ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];\n\n/** A type that marshals directly as a value, such as `gint` or `utf8`. */\ntype PrimitiveType = {\n /** Discriminates {@link StructuralType}. */\n kind: \"primitive\";\n /** The scalar the type marshals as. */\n category: PrimitiveCategory;\n};\n\n/** The trailing `...` argument list of a variadic C function. */\ntype VarargsType = {\n /** Discriminates {@link StructuralType}. */\n kind: \"varargs\";\n};\n\n/** A C array, along with whatever the GIR says about how its length is determined. */\ntype CArrayType = {\n /** Discriminates {@link StructuralType}. */\n kind: \"carray\";\n /** Type of the array's elements, paired with `elementCType` to build the element descriptor. */\n element: TypeId;\n /** C declaration of an element, which tells an inline struct apart from a pointer to one. */\n elementCType: string | undefined;\n /** C declaration of the array itself. */\n arrayCType: string | undefined;\n /** Index of the parameter, or of the sibling record field, carrying the length. */\n lengthParameterIndex: number | undefined;\n /** Element count when the array has a fixed size. */\n fixedSize: number | undefined;\n /** Whether the array ends at a null element. */\n isZeroTerminated: boolean;\n};\n\n/** A GLib list or array container over a single element type. */\ntype ListType = {\n /** Discriminates {@link StructuralType}. */\n kind: \"list\";\n /** Which container the type is. */\n flavor: ListFlavor;\n /** Type the container's elements marshal as, which the list descriptor wraps. */\n element: TypeId;\n};\n\n/** A `GLib.HashTable`. */\ntype HashTableType = {\n /** Discriminates {@link StructuralType}. */\n kind: \"hashtable\";\n /** Type the keys marshal as, rendered as the key half of a `Record` or `Map`. */\n key: TypeId;\n /** Type the values marshal as, rendered as the value half of a `Record` or `Map`. */\n value: TypeId;\n};\n\n/** A type the GIR describes by its structure rather than by a name it declares. */\ntype StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;\n\n/** The hooks the GIR parsers use to reference and register types while walking one namespace. */\ntype ParseContext = {\n /** Id of the namespace being parsed. */\n nsId: number;\n /** Resolves a GIR type name, optionally namespace-qualified, reserving a slot when it is not parsed yet. */\n findType(name: string): TypeId;\n /** Interns a primitive type and returns its id. */\n addPrimitive(category: PrimitiveCategory): TypeId;\n /** Interns the varargs type and returns its id. */\n addVarargs(): TypeId;\n /** Registers an unnamed container type in the namespace and returns its id. */\n addContainer(type: CArrayType | ListType | HashTableType): TypeId;\n /** Parses an inline `<callback>` node, registers it as an unnamed type, and returns its id. */\n addAnonymousCallback(node: RawNode): TypeId;\n};\n\n/** GIR type names of the GLib containers, mapped to the {@link ListFlavor} each one parses to. */\nconst LIST_FLAVOR_BY_NAME = {\n \"GLib.List\": \"glist\",\n \"GLib.SList\": \"gslist\",\n \"GLib.PtrArray\": \"gptrarray\",\n \"GLib.Array\": \"garray\",\n \"GLib.ByteArray\": \"gbytearray\",\n} as const;\n\nconst hasUnknownArrayLength = (ref: CArrayType): boolean =>\n !ref.isZeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;\n\nexport {\n hasUnknownArrayLength,\n LIST_FLAVOR_BY_NAME,\n type TypeId,\n type ListFlavor,\n type CArrayType,\n type ListType,\n type HashTableType,\n type StructuralType,\n type ParseContext,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtG,OAAO,EAAyD,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAUrH,QAAA,MAAM,eAAe,GAAI,QAAQ,OAAO,GAAG,SAAS,EAAE,SAAS,YAAY,KAAG,MAAM,GAAG,SA4BtF,CAAC;
|
|
1
|
+
{"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtG,OAAO,EAAyD,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAUrH,QAAA,MAAM,eAAe,GAAI,QAAQ,OAAO,GAAG,SAAS,EAAE,SAAS,YAAY,KAAG,MAAM,GAAG,SA4BtF,CAAC;AA6DF,QAAA,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAQzE,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/gir/type-ref.js
CHANGED
|
@@ -64,6 +64,7 @@ const arrayTypeRefFromNode = (arrayNode, context) => {
|
|
|
64
64
|
kind: "carray",
|
|
65
65
|
element,
|
|
66
66
|
elementCType: elementNode === undefined ? undefined : attr(elementNode, "c:type"),
|
|
67
|
+
arrayCType: attr(arrayNode, "c:type"),
|
|
67
68
|
lengthParameterIndex: intAttr(arrayNode, "length"),
|
|
68
69
|
fixedSize: intAttr(arrayNode, "fixed-size"),
|
|
69
70
|
isZeroTerminated: isAttrTrue(arrayNode, "zero-terminated", true),
|
package/dist/gir/type-ref.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, getChild, getChildren, intAttr, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\nimport { primitiveCategory } from \"./primitives.js\";\nimport { type CArrayType, LIST_FLAVOR_BY_NAME, type ListFlavor, type ParseContext, type TypeId } from \"./type-id.js\";\n\nconst LIST_FLAVOR_BY_NAME_LOOKUP: Map<string, ListFlavor> = new Map(Object.entries(LIST_FLAVOR_BY_NAME));\n\nconst getElementRef = (node: RawNode, context: ParseContext): TypeId => {\n const elementNode = getChild(node, \"type\");\n\n return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);\n};\n\nconst typeRefFromNode = (parent: RawNode | undefined, context: ParseContext): TypeId | undefined => {\n if (parent === undefined) {\n return undefined;\n }\n\n if (getChild(parent, \"varargs\") !== undefined) {\n return context.addVarargs();\n }\n\n const arrayNode = getChild(parent, \"array\");\n\n if (arrayNode !== undefined) {\n return arrayTypeRefFromNode(arrayNode, context);\n }\n\n const typeNode = getChild(parent, \"type\");\n\n if (typeNode !== undefined) {\n return typeRefFromTypeNode(typeNode, context);\n }\n\n const callback = getChild(parent, \"callback\");\n\n if (callback !== undefined) {\n return context.addAnonymousCallback(callback);\n }\n\n return undefined;\n};\n\nconst hashTableRefFromNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const elementTypes = getChildren(typeNode, \"type\");\n const keyNode = elementTypes[0];\n const valueNode = elementTypes[1];\n\n return context.addContainer({\n kind: \"hashtable\",\n key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),\n value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),\n });\n};\n\nconst typeRefFromTypeNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const name = nameAttr(typeNode);\n const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element: getElementRef(typeNode, context) });\n }\n\n if (name === \"GLib.HashTable\") {\n return hashTableRefFromNode(typeNode, context);\n }\n\n const primitive = primitiveCategory(name);\n\n if (primitive !== undefined) {\n return context.addPrimitive(primitive);\n }\n\n return context.findType(name);\n};\n\nconst arrayTypeRefFromNode = (arrayNode: RawNode, context: ParseContext): TypeId => {\n const element = getElementRef(arrayNode, context);\n const arrayName = attr(arrayNode, \"name\");\n const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element });\n }\n\n const elementNode = getChild(arrayNode, \"type\");\n\n const carray: CArrayType = {\n kind: \"carray\",\n element,\n elementCType: elementNode === undefined ? undefined : attr(elementNode, \"c:type\"),\n lengthParameterIndex: intAttr(arrayNode, \"length\"),\n fixedSize: intAttr(arrayNode, \"fixed-size\"),\n isZeroTerminated: isAttrTrue(arrayNode, \"zero-terminated\", true),\n };\n\n return context.addContainer(carray);\n};\n\nconst pointerFallback = (context: ParseContext): TypeId => context.addPrimitive(\"pointer\");\n\nconst splitOptionalNamespace = (name: string): [string | undefined, string] => {\n const dot = name.indexOf(\".\");\n\n if (dot === -1) {\n return [undefined, name];\n }\n\n return [name.slice(0, dot), name.slice(dot + 1)];\n};\n\nexport { typeRefFromNode, splitOptionalNamespace };\n"]}
|
|
1
|
+
{"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, getChild, getChildren, intAttr, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\nimport { primitiveCategory } from \"./primitives.js\";\nimport { type CArrayType, LIST_FLAVOR_BY_NAME, type ListFlavor, type ParseContext, type TypeId } from \"./type-id.js\";\n\nconst LIST_FLAVOR_BY_NAME_LOOKUP: Map<string, ListFlavor> = new Map(Object.entries(LIST_FLAVOR_BY_NAME));\n\nconst getElementRef = (node: RawNode, context: ParseContext): TypeId => {\n const elementNode = getChild(node, \"type\");\n\n return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);\n};\n\nconst typeRefFromNode = (parent: RawNode | undefined, context: ParseContext): TypeId | undefined => {\n if (parent === undefined) {\n return undefined;\n }\n\n if (getChild(parent, \"varargs\") !== undefined) {\n return context.addVarargs();\n }\n\n const arrayNode = getChild(parent, \"array\");\n\n if (arrayNode !== undefined) {\n return arrayTypeRefFromNode(arrayNode, context);\n }\n\n const typeNode = getChild(parent, \"type\");\n\n if (typeNode !== undefined) {\n return typeRefFromTypeNode(typeNode, context);\n }\n\n const callback = getChild(parent, \"callback\");\n\n if (callback !== undefined) {\n return context.addAnonymousCallback(callback);\n }\n\n return undefined;\n};\n\nconst hashTableRefFromNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const elementTypes = getChildren(typeNode, \"type\");\n const keyNode = elementTypes[0];\n const valueNode = elementTypes[1];\n\n return context.addContainer({\n kind: \"hashtable\",\n key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),\n value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),\n });\n};\n\nconst typeRefFromTypeNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const name = nameAttr(typeNode);\n const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element: getElementRef(typeNode, context) });\n }\n\n if (name === \"GLib.HashTable\") {\n return hashTableRefFromNode(typeNode, context);\n }\n\n const primitive = primitiveCategory(name);\n\n if (primitive !== undefined) {\n return context.addPrimitive(primitive);\n }\n\n return context.findType(name);\n};\n\nconst arrayTypeRefFromNode = (arrayNode: RawNode, context: ParseContext): TypeId => {\n const element = getElementRef(arrayNode, context);\n const arrayName = attr(arrayNode, \"name\");\n const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element });\n }\n\n const elementNode = getChild(arrayNode, \"type\");\n\n const carray: CArrayType = {\n kind: \"carray\",\n element,\n elementCType: elementNode === undefined ? undefined : attr(elementNode, \"c:type\"),\n arrayCType: attr(arrayNode, \"c:type\"),\n lengthParameterIndex: intAttr(arrayNode, \"length\"),\n fixedSize: intAttr(arrayNode, \"fixed-size\"),\n isZeroTerminated: isAttrTrue(arrayNode, \"zero-terminated\", true),\n };\n\n return context.addContainer(carray);\n};\n\nconst pointerFallback = (context: ParseContext): TypeId => context.addPrimitive(\"pointer\");\n\nconst splitOptionalNamespace = (name: string): [string | undefined, string] => {\n const dot = name.indexOf(\".\");\n\n if (dot === -1) {\n return [undefined, name];\n }\n\n return [name.slice(0, dot), name.slice(dot + 1)];\n};\n\nexport { typeRefFromNode, splitOptionalNamespace };\n"]}
|
package/dist/gir/type.d.ts
CHANGED
|
@@ -4,31 +4,51 @@ import type { GirEnum } from "./enum.js";
|
|
|
4
4
|
import type { GirAlias, GirNamespace } from "./namespace.js";
|
|
5
5
|
import type { GirRecord } from "./record.js";
|
|
6
6
|
import type { StructuralType } from "./type-id.js";
|
|
7
|
+
/** A named entity a GIR namespace declares, discriminated by `kind` and carrying the parsed node. */
|
|
7
8
|
type EntityType = {
|
|
9
|
+
/** Discriminates {@link EntityType}. */
|
|
8
10
|
kind: "class";
|
|
11
|
+
/** Namespace declaring the class. */
|
|
9
12
|
namespace: GirNamespace;
|
|
13
|
+
/** Parsed class, carrying its GType metadata and the members it declares. */
|
|
10
14
|
value: GirClass;
|
|
11
15
|
} | {
|
|
16
|
+
/** Discriminates {@link EntityType}. */
|
|
12
17
|
kind: "interface";
|
|
18
|
+
/** Namespace declaring the interface. */
|
|
13
19
|
namespace: GirNamespace;
|
|
20
|
+
/** Parsed interface, modeled the same way as a class. */
|
|
14
21
|
value: GirClass;
|
|
15
22
|
} | {
|
|
23
|
+
/** Discriminates {@link EntityType}. */
|
|
16
24
|
kind: "record";
|
|
25
|
+
/** Namespace declaring the record. */
|
|
17
26
|
namespace: GirNamespace;
|
|
27
|
+
/** Parsed record, either a struct or a union. */
|
|
18
28
|
value: GirRecord;
|
|
19
29
|
} | {
|
|
30
|
+
/** Discriminates {@link EntityType}. */
|
|
20
31
|
kind: "enum";
|
|
32
|
+
/** Namespace declaring the enumeration. */
|
|
21
33
|
namespace: GirNamespace;
|
|
34
|
+
/** Parsed enumeration or bitfield. */
|
|
22
35
|
value: GirEnum;
|
|
23
36
|
} | {
|
|
37
|
+
/** Discriminates {@link EntityType}. */
|
|
24
38
|
kind: "callback";
|
|
39
|
+
/** Namespace declaring the callback. */
|
|
25
40
|
namespace: GirNamespace;
|
|
41
|
+
/** Parsed callback signature. */
|
|
26
42
|
value: GirCallback;
|
|
27
43
|
} | {
|
|
44
|
+
/** Discriminates {@link EntityType}. */
|
|
28
45
|
kind: "alias";
|
|
46
|
+
/** Namespace declaring the alias. */
|
|
29
47
|
namespace: GirNamespace;
|
|
48
|
+
/** Parsed alias, holding the type it stands for. */
|
|
30
49
|
value: GirAlias;
|
|
31
50
|
};
|
|
51
|
+
/** What a GIR type reference resolves to: a structural type, or an entity a namespace declares. */
|
|
32
52
|
type GirType = StructuralType | EntityType;
|
|
33
53
|
export { type EntityType, type GirType };
|
|
34
54
|
//# sourceMappingURL=type.d.ts.map
|
package/dist/gir/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,KAAK,UAAU,GACT;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,qGAAqG;AACrG,KAAK,UAAU,GACT;IACE,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,SAAS,EAAE,YAAY,CAAC;IACxB,6EAA6E;IAC7E,KAAK,EAAE,QAAQ,CAAC;CACnB,GACD;IACI,wCAAwC;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,YAAY,CAAC;IACxB,yDAAyD;IACzD,KAAK,EAAE,QAAQ,CAAC;CACnB,GACD;IACI,wCAAwC;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,YAAY,CAAC;IACxB,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAC;CACpB,GACD;IACI,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,SAAS,EAAE,YAAY,CAAC;IACxB,sCAAsC;IACtC,KAAK,EAAE,OAAO,CAAC;CAClB,GACD;IACI,wCAAwC;IACxC,IAAI,EAAE,UAAU,CAAC;IACjB,wCAAwC;IACxC,SAAS,EAAE,YAAY,CAAC;IACxB,iCAAiC;IACjC,KAAK,EAAE,WAAW,CAAC;CACtB,GACD;IACI,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,SAAS,EAAE,YAAY,CAAC;IACxB,oDAAoD;IACpD,KAAK,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEN,mGAAmG;AACnG,KAAK,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC;AAE3C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,CAAC"}
|
package/dist/gir/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AA6DA,OAAO,EAAiC,CAAC","sourcesContent":["import type { GirCallback } from \"./callback.js\";\nimport type { GirClass } from \"./class.js\";\nimport type { GirEnum } from \"./enum.js\";\nimport type { GirAlias, GirNamespace } from \"./namespace.js\";\nimport type { GirRecord } from \"./record.js\";\nimport type { StructuralType } from \"./type-id.js\";\n\n/** A named entity a GIR namespace declares, discriminated by `kind` and carrying the parsed node. */\ntype EntityType =\n | {\n /** Discriminates {@link EntityType}. */\n kind: \"class\";\n /** Namespace declaring the class. */\n namespace: GirNamespace;\n /** Parsed class, carrying its GType metadata and the members it declares. */\n value: GirClass;\n } |\n {\n /** Discriminates {@link EntityType}. */\n kind: \"interface\";\n /** Namespace declaring the interface. */\n namespace: GirNamespace;\n /** Parsed interface, modeled the same way as a class. */\n value: GirClass;\n } |\n {\n /** Discriminates {@link EntityType}. */\n kind: \"record\";\n /** Namespace declaring the record. */\n namespace: GirNamespace;\n /** Parsed record, either a struct or a union. */\n value: GirRecord;\n } |\n {\n /** Discriminates {@link EntityType}. */\n kind: \"enum\";\n /** Namespace declaring the enumeration. */\n namespace: GirNamespace;\n /** Parsed enumeration or bitfield. */\n value: GirEnum;\n } |\n {\n /** Discriminates {@link EntityType}. */\n kind: \"callback\";\n /** Namespace declaring the callback. */\n namespace: GirNamespace;\n /** Parsed callback signature. */\n value: GirCallback;\n } |\n {\n /** Discriminates {@link EntityType}. */\n kind: \"alias\";\n /** Namespace declaring the alias. */\n namespace: GirNamespace;\n /** Parsed alias, holding the type it stands for. */\n value: GirAlias;\n };\n\n/** What a GIR type reference resolves to: a structural type, or an entity a namespace declares. */\ntype GirType = StructuralType | EntityType;\n\nexport { type EntityType, type GirType };\n"]}
|
package/dist/khronos/args.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { CommandPlan, GlScalar } from "./plan.js";
|
|
1
|
+
import type { CommandPlan, GlScalar, ReturnPlan } from "./plan.js";
|
|
2
2
|
type InArg = {
|
|
3
|
-
|
|
3
|
+
isOut: false;
|
|
4
4
|
name: string;
|
|
5
5
|
tsType: string;
|
|
6
6
|
descriptor: string;
|
|
7
7
|
};
|
|
8
8
|
type OutArg = {
|
|
9
|
-
|
|
9
|
+
isOut: true;
|
|
10
10
|
cellName: string;
|
|
11
11
|
seed: string;
|
|
12
12
|
tsType: string;
|
|
@@ -15,16 +15,17 @@ type OutArg = {
|
|
|
15
15
|
};
|
|
16
16
|
type PlannedArg = InArg | OutArg;
|
|
17
17
|
declare const scalarAliasOrGroup: (scalar: GlScalar, group: string | undefined) => string;
|
|
18
|
+
declare const returnPlanTsType: (plan: ReturnPlan, group: string | undefined) => string;
|
|
18
19
|
declare const trackInto: (usedTypes: Set<string>) => (alias: string) => string;
|
|
19
20
|
declare const planArgs: (plan: CommandPlan & {
|
|
20
|
-
|
|
21
|
+
isOk: true;
|
|
21
22
|
}, usedTypes: Set<string>) => {
|
|
22
23
|
args: PlannedArg[];
|
|
23
24
|
ins: InArg[];
|
|
24
25
|
outs: OutArg[];
|
|
25
26
|
};
|
|
26
27
|
declare const scalarPrefixArgs: (plan: CommandPlan & {
|
|
27
|
-
|
|
28
|
+
isOk: true;
|
|
28
29
|
}, usedTypes: Set<string>) => InArg[] | undefined;
|
|
29
|
-
export { scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs, type InArg, type OutArg };
|
|
30
|
+
export { returnPlanTsType, scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs, type InArg, type OutArg };
|
|
30
31
|
//# sourceMappingURL=args.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,UAAU,EAAE,MAAM,WAAW,CAAC;AAc9E,KAAK,KAAK,GAAG;IACT,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAqBjC,QAAA,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,EAAE,OAAO,MAAM,GAAG,SAAS,KAAG,MACQ,CAAC;AAEnF,QAAA,MAAM,gBAAgB,GAAI,MAAM,UAAU,EAAE,OAAO,MAAM,GAAG,SAAS,KAAG,MAqBvE,CAAC;AA8IF,QAAA,MAAM,SAAS,GACV,WAAW,GAAG,CAAC,MAAM,CAAC,MAClB,OAAO,MAAM,KAAG,MAIhB,CAAC;AAEV,QAAA,MAAM,QAAQ,GACV,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAClC,WAAW,GAAG,CAAC,MAAM,CAAC,KACvB;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAsBpD,CAAC;AAwBF,QAAA,MAAM,gBAAgB,GAAI,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,WAAW,GAAG,CAAC,MAAM,CAAC,KAAG,KAAK,EAAE,GAAG,SAehG,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC"}
|
package/dist/khronos/args.js
CHANGED
|
@@ -3,6 +3,28 @@ import { tArray, tBoolean, tBuffer, tFixedArray, tInlineStruct, tRef, tSizedArra
|
|
|
3
3
|
import { paramPairAt } from "./param-pair.js";
|
|
4
4
|
const OUT_PLAN_KINDS = new Set(["ref-out", "ref-array-out", "ref-fixed-out", "string-out"]);
|
|
5
5
|
const scalarAliasOrGroup = (scalar, group) => group !== undefined && scalar.isGroupBearing === true ? group : scalar.tsAlias;
|
|
6
|
+
const returnPlanTsType = (plan, group) => {
|
|
7
|
+
switch (plan.kind) {
|
|
8
|
+
case "void": {
|
|
9
|
+
return "void";
|
|
10
|
+
}
|
|
11
|
+
case "scalar": {
|
|
12
|
+
return scalarAliasOrGroup(plan.scalar, group);
|
|
13
|
+
}
|
|
14
|
+
case "boolean": {
|
|
15
|
+
return "boolean";
|
|
16
|
+
}
|
|
17
|
+
case "string": {
|
|
18
|
+
return "string";
|
|
19
|
+
}
|
|
20
|
+
case "sync": {
|
|
21
|
+
return "GLsync";
|
|
22
|
+
}
|
|
23
|
+
case "opaque-pointer": {
|
|
24
|
+
return "GLpointer";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
6
28
|
const paramIndexByName = (command, name) => {
|
|
7
29
|
const index = command.params.findIndex((param) => param.name === name);
|
|
8
30
|
if (index === -1) {
|
|
@@ -15,7 +37,7 @@ const arrayInTsType = (scalar, group) => {
|
|
|
15
37
|
return scalar.viewType === undefined ? `${element}[]` : `${element}[] | ${scalar.viewType}`;
|
|
16
38
|
};
|
|
17
39
|
const inArg = (name, tsType, descriptor) => ({
|
|
18
|
-
|
|
40
|
+
isOut: false,
|
|
19
41
|
name,
|
|
20
42
|
tsType,
|
|
21
43
|
descriptor,
|
|
@@ -78,7 +100,7 @@ const outArgFields = (options) => {
|
|
|
78
100
|
const lenIdentifier = toCamelIdentifier(plan.lenParamName);
|
|
79
101
|
return {
|
|
80
102
|
seed: `const ${cellName} = { value: new Array<number>(${lenIdentifier}).fill(0) };`,
|
|
81
|
-
tsType: `${track(plan.scalar.
|
|
103
|
+
tsType: `${track(scalarAliasOrGroup(plan.scalar, param.group))}[]`,
|
|
82
104
|
descriptor: tRef(tSizedArray(plan.scalar.descriptor, sizeIndex)),
|
|
83
105
|
};
|
|
84
106
|
}
|
|
@@ -116,12 +138,12 @@ const buildOutArg = (options, track) => {
|
|
|
116
138
|
throw new Error(`Parameter index ${String(index)} out of range on ${command.name}`);
|
|
117
139
|
}
|
|
118
140
|
const cellName = `out${String(outIndex)}`;
|
|
119
|
-
const cell = {
|
|
141
|
+
const cell = { isOut: true, cellName, paramIndex: index };
|
|
120
142
|
return { ...cell, ...outArgFields({ command, plan, param, cellName, track }) };
|
|
121
143
|
};
|
|
122
144
|
const isOutPlan = (plan) => OUT_PLAN_KINDS.has(plan.kind);
|
|
123
|
-
const isInArg = (arg) => !arg.
|
|
124
|
-
const isOutArg = (arg) => arg.
|
|
145
|
+
const isInArg = (arg) => !arg.isOut;
|
|
146
|
+
const isOutArg = (arg) => arg.isOut;
|
|
125
147
|
const buildArg = (options, name, track) => isOutPlan(options.plan) ? buildOutArg(options, track) : buildInArg(options, name, track);
|
|
126
148
|
const trackInto = (usedTypes) => (alias) => {
|
|
127
149
|
usedTypes.add(alias);
|
|
@@ -167,5 +189,5 @@ const scalarPrefixArgs = (plan, usedTypes) => {
|
|
|
167
189
|
}
|
|
168
190
|
return prefix;
|
|
169
191
|
};
|
|
170
|
-
export { scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs };
|
|
192
|
+
export { returnPlanTsType, scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs };
|
|
171
193
|
//# sourceMappingURL=args.js.map
|