@gtkx/ffi 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codegen/ffi-generator.d.ts +24 -0
- package/dist/codegen/ffi-generator.js +385 -9
- package/dist/generated/cairo/context.d.ts +5 -0
- package/dist/generated/cairo/context.js +9 -0
- package/dist/generated/cairo/device.d.ts +5 -0
- package/dist/generated/cairo/device.js +9 -0
- package/dist/generated/cairo/font-face.d.ts +5 -0
- package/dist/generated/cairo/font-face.js +9 -0
- package/dist/generated/cairo/font-options.d.ts +5 -0
- package/dist/generated/cairo/font-options.js +9 -0
- package/dist/generated/cairo/glyph.d.ts +16 -0
- package/dist/generated/cairo/glyph.js +35 -0
- package/dist/generated/cairo/index.d.ts +12 -0
- package/dist/generated/cairo/index.js +12 -0
- package/dist/generated/cairo/pattern.d.ts +5 -0
- package/dist/generated/cairo/pattern.js +9 -0
- package/dist/generated/cairo/rectangle-int.d.ts +19 -0
- package/dist/generated/cairo/rectangle-int.js +43 -0
- package/dist/generated/cairo/rectangle.d.ts +19 -0
- package/dist/generated/cairo/rectangle.js +43 -0
- package/dist/generated/cairo/region.d.ts +5 -0
- package/dist/generated/cairo/region.js +9 -0
- package/dist/generated/cairo/scaled-font.d.ts +5 -0
- package/dist/generated/cairo/scaled-font.js +9 -0
- package/dist/generated/cairo/surface.d.ts +5 -0
- package/dist/generated/cairo/surface.js +9 -0
- package/dist/generated/cairo/text-cluster.d.ts +13 -0
- package/dist/generated/cairo/text-cluster.js +27 -0
- package/dist/generated/gdk/cicp-params.d.ts +2 -1
- package/dist/generated/gdk/cicp-params.js +16 -5
- package/dist/generated/gdk/clipboard.d.ts +3 -2
- package/dist/generated/gdk/clipboard.js +52 -21
- package/dist/generated/gdk/color-state.d.ts +16 -0
- package/dist/generated/gdk/color-state.js +137 -0
- package/dist/generated/gdk/content-formats-builder.d.ts +13 -0
- package/dist/generated/gdk/content-formats-builder.js +101 -0
- package/dist/generated/gdk/content-formats.d.ts +25 -0
- package/dist/generated/gdk/content-formats.js +266 -0
- package/dist/generated/gdk/content-provider.d.ts +5 -4
- package/dist/generated/gdk/content-provider.js +31 -10
- package/dist/generated/gdk/display.d.ts +3 -2
- package/dist/generated/gdk/display.js +25 -9
- package/dist/generated/gdk/dmabuf-formats.d.ts +12 -0
- package/dist/generated/gdk/dmabuf-formats.js +97 -0
- package/dist/generated/gdk/dmabuf-texture-builder.d.ts +5 -4
- package/dist/generated/gdk/dmabuf-texture-builder.js +21 -6
- package/dist/generated/gdk/drag.d.ts +3 -2
- package/dist/generated/gdk/drag.js +6 -1
- package/dist/generated/gdk/drop.d.ts +3 -2
- package/dist/generated/gdk/drop.js +25 -9
- package/dist/generated/gdk/event-sequence.d.ts +5 -0
- package/dist/generated/gdk/event-sequence.js +9 -0
- package/dist/generated/gdk/event.d.ts +2 -1
- package/dist/generated/gdk/event.js +6 -1
- package/dist/generated/gdk/file-list.d.ts +7 -0
- package/dist/generated/gdk/file-list.js +40 -0
- package/dist/generated/gdk/frame-clock.d.ts +3 -2
- package/dist/generated/gdk/frame-clock.js +12 -2
- package/dist/generated/gdk/frame-timings.d.ts +13 -0
- package/dist/generated/gdk/frame-timings.js +79 -0
- package/dist/generated/gdk/functions.d.ts +17 -13
- package/dist/generated/gdk/functions.js +61 -25
- package/dist/generated/gdk/glcontext.js +10 -4
- package/dist/generated/gdk/gltexture-builder.d.ts +5 -4
- package/dist/generated/gdk/gltexture-builder.js +11 -2
- package/dist/generated/gdk/index.d.ts +12 -0
- package/dist/generated/gdk/index.js +12 -0
- package/dist/generated/gdk/memory-texture-builder.d.ts +5 -4
- package/dist/generated/gdk/memory-texture-builder.js +11 -2
- package/dist/generated/gdk/monitor.d.ts +3 -2
- package/dist/generated/gdk/monitor.js +8 -1
- package/dist/generated/gdk/popup-layout.d.ts +25 -0
- package/dist/generated/gdk/popup-layout.js +266 -0
- package/dist/generated/gdk/popup.d.ts +2 -1
- package/dist/generated/gdk/popup.js +5 -1
- package/dist/generated/gdk/rectangle.d.ts +24 -0
- package/dist/generated/gdk/rectangle.js +129 -0
- package/dist/generated/gdk/rgba.d.ts +27 -0
- package/dist/generated/gdk/rgba.js +120 -0
- package/dist/generated/gdk/surface.js +19 -8
- package/dist/generated/gdk/texture-downloader.d.ts +20 -0
- package/dist/generated/gdk/texture-downloader.js +160 -0
- package/dist/generated/gdk/texture.d.ts +3 -2
- package/dist/generated/gdk/texture.js +6 -1
- package/dist/generated/gdk/toplevel-layout.d.ts +17 -0
- package/dist/generated/gdk/toplevel-layout.js +144 -0
- package/dist/generated/gdk/toplevel.d.ts +2 -1
- package/dist/generated/gdk/toplevel.js +5 -1
- package/dist/generated/gdkpixbuf/functions.d.ts +1 -1
- package/dist/generated/gdkpixbuf/functions.js +3 -2
- package/dist/generated/gdkpixbuf/index.d.ts +1 -0
- package/dist/generated/gdkpixbuf/index.js +1 -0
- package/dist/generated/gdkpixbuf/pixbuf-format.d.ts +32 -0
- package/dist/generated/gdkpixbuf/pixbuf-format.js +157 -0
- package/dist/generated/gdkpixbuf/pixbuf-loader.d.ts +2 -1
- package/dist/generated/gdkpixbuf/pixbuf-loader.js +34 -13
- package/dist/generated/gdkpixbuf/pixbuf.d.ts +3 -2
- package/dist/generated/gdkpixbuf/pixbuf.js +76 -30
- package/dist/generated/gio/app-info.js +73 -32
- package/dist/generated/gio/application.js +10 -4
- package/dist/generated/gio/async-initable.js +19 -8
- package/dist/generated/gio/async-result.js +10 -4
- package/dist/generated/gio/buffered-input-stream.js +28 -12
- package/dist/generated/gio/cancellable.js +10 -4
- package/dist/generated/gio/converter.js +19 -8
- package/dist/generated/gio/credentials.js +37 -16
- package/dist/generated/gio/data-input-stream.js +136 -60
- package/dist/generated/gio/data-output-stream.js +73 -32
- package/dist/generated/gio/datagram-based.js +28 -12
- package/dist/generated/gio/dbus-annotation-info.d.ts +16 -0
- package/dist/generated/gio/dbus-annotation-info.js +75 -0
- package/dist/generated/gio/dbus-arg-info.d.ts +16 -0
- package/dist/generated/gio/dbus-arg-info.js +56 -0
- package/dist/generated/gio/dbus-connection.d.ts +4 -3
- package/dist/generated/gio/dbus-connection.js +178 -75
- package/dist/generated/gio/dbus-interface-info.d.ts +27 -0
- package/dist/generated/gio/dbus-interface-info.js +166 -0
- package/dist/generated/gio/dbus-interface-skeleton.d.ts +2 -1
- package/dist/generated/gio/dbus-interface-skeleton.js +16 -5
- package/dist/generated/gio/dbus-interface.d.ts +2 -1
- package/dist/generated/gio/dbus-interface.js +6 -1
- package/dist/generated/gio/dbus-message.js +37 -16
- package/dist/generated/gio/dbus-method-info.d.ts +18 -0
- package/dist/generated/gio/dbus-method-info.js +73 -0
- package/dist/generated/gio/dbus-method-invocation.d.ts +7 -5
- package/dist/generated/gio/dbus-method-invocation.js +15 -5
- package/dist/generated/gio/dbus-node-info.d.ts +18 -0
- package/dist/generated/gio/dbus-node-info.js +110 -0
- package/dist/generated/gio/dbus-property-info.d.ts +18 -0
- package/dist/generated/gio/dbus-property-info.js +59 -0
- package/dist/generated/gio/dbus-proxy.d.ts +9 -8
- package/dist/generated/gio/dbus-proxy.js +68 -22
- package/dist/generated/gio/dbus-signal-info.d.ts +17 -0
- package/dist/generated/gio/dbus-signal-info.js +63 -0
- package/dist/generated/gio/drive.js +46 -20
- package/dist/generated/gio/dtls-connection.js +64 -28
- package/dist/generated/gio/file-attribute-info-list.d.ts +14 -0
- package/dist/generated/gio/file-attribute-info-list.js +89 -0
- package/dist/generated/gio/file-attribute-matcher.d.ts +14 -0
- package/dist/generated/gio/file-attribute-matcher.js +111 -0
- package/dist/generated/gio/file-enumerator.js +46 -20
- package/dist/generated/gio/file-info.d.ts +2 -1
- package/dist/generated/gio/file-info.js +5 -1
- package/dist/generated/gio/file-input-stream.js +19 -8
- package/dist/generated/gio/file-iostream.js +19 -8
- package/dist/generated/gio/file-output-stream.js +19 -8
- package/dist/generated/gio/file.d.ts +3 -2
- package/dist/generated/gio/file.js +679 -298
- package/dist/generated/gio/functions.d.ts +17 -14
- package/dist/generated/gio/functions.js +311 -140
- package/dist/generated/gio/index.d.ts +14 -0
- package/dist/generated/gio/index.js +14 -0
- package/dist/generated/gio/initable.js +10 -4
- package/dist/generated/gio/input-stream.js +100 -44
- package/dist/generated/gio/iostream.js +37 -16
- package/dist/generated/gio/loadable-icon.js +19 -8
- package/dist/generated/gio/mount.js +64 -28
- package/dist/generated/gio/network-address.js +19 -8
- package/dist/generated/gio/network-monitor.js +19 -8
- package/dist/generated/gio/output-stream.js +154 -68
- package/dist/generated/gio/permission.js +37 -16
- package/dist/generated/gio/pollable-input-stream.js +10 -4
- package/dist/generated/gio/pollable-output-stream.js +19 -8
- package/dist/generated/gio/proxy-resolver.js +19 -8
- package/dist/generated/gio/proxy.js +19 -8
- package/dist/generated/gio/resolver.js +91 -40
- package/dist/generated/gio/resource.d.ts +18 -0
- package/dist/generated/gio/resource.js +237 -0
- package/dist/generated/gio/seekable.js +19 -8
- package/dist/generated/gio/settings-schema-key.d.ts +14 -0
- package/dist/generated/gio/settings-schema-key.js +91 -0
- package/dist/generated/gio/settings-schema-source.d.ts +13 -0
- package/dist/generated/gio/settings-schema-source.js +108 -0
- package/dist/generated/gio/settings-schema.d.ts +14 -0
- package/dist/generated/gio/settings-schema.js +92 -0
- package/dist/generated/gio/settings.d.ts +3 -2
- package/dist/generated/gio/settings.js +6 -2
- package/dist/generated/gio/simple-async-result.d.ts +3 -3
- package/dist/generated/gio/simple-async-result.js +13 -7
- package/dist/generated/gio/socket-address-enumerator.js +19 -8
- package/dist/generated/gio/socket-address.js +10 -4
- package/dist/generated/gio/socket-client.js +73 -32
- package/dist/generated/gio/socket-connection.js +37 -16
- package/dist/generated/gio/socket-listener.js +73 -32
- package/dist/generated/gio/socket.js +280 -124
- package/dist/generated/gio/srv-target.d.ts +13 -0
- package/dist/generated/gio/srv-target.js +90 -0
- package/dist/generated/gio/subprocess-launcher.js +10 -4
- package/dist/generated/gio/subprocess.js +73 -32
- package/dist/generated/gio/task.d.ts +3 -3
- package/dist/generated/gio/task.js +40 -19
- package/dist/generated/gio/tls-certificate.js +10 -4
- package/dist/generated/gio/tls-connection.js +28 -12
- package/dist/generated/gio/tls-database.js +73 -32
- package/dist/generated/gio/tls-interaction.js +55 -24
- package/dist/generated/gio/unix-connection.js +55 -24
- package/dist/generated/gio/unix-fdlist.js +19 -8
- package/dist/generated/gio/volume.js +28 -12
- package/dist/generated/glib/array.d.ts +33 -0
- package/dist/generated/glib/array.js +489 -0
- package/dist/generated/glib/bookmark-file.d.ts +55 -0
- package/dist/generated/glib/bookmark-file.js +1242 -0
- package/dist/generated/glib/byte-array.d.ts +31 -0
- package/dist/generated/glib/byte-array.js +356 -0
- package/dist/generated/glib/bytes.d.ts +21 -0
- package/dist/generated/glib/bytes.js +233 -0
- package/dist/generated/glib/checksum.d.ts +15 -0
- package/dist/generated/glib/checksum.js +100 -0
- package/dist/generated/glib/date-time.d.ts +60 -0
- package/dist/generated/glib/date-time.js +726 -0
- package/dist/generated/glib/date.d.ts +68 -0
- package/dist/generated/glib/date.js +621 -0
- package/dist/generated/glib/dir.d.ts +12 -0
- package/dist/generated/glib/dir.js +91 -0
- package/dist/generated/glib/error.d.ts +17 -0
- package/dist/generated/glib/error.js +164 -0
- package/dist/generated/glib/functions.d.ts +135 -119
- package/dist/generated/glib/functions.js +1080 -346
- package/dist/generated/glib/hash-table.d.ts +36 -0
- package/dist/generated/glib/hash-table.js +517 -0
- package/dist/generated/glib/hmac.d.ts +13 -0
- package/dist/generated/glib/hmac.js +99 -0
- package/dist/generated/glib/index.d.ts +35 -0
- package/dist/generated/glib/index.js +35 -0
- package/dist/generated/glib/iochannel.d.ts +43 -0
- package/dist/generated/glib/iochannel.js +647 -0
- package/dist/generated/glib/key-file.d.ts +57 -0
- package/dist/generated/glib/key-file.js +1306 -0
- package/dist/generated/glib/main-context.d.ts +39 -0
- package/dist/generated/glib/main-context.js +413 -0
- package/dist/generated/glib/main-loop.d.ts +13 -0
- package/dist/generated/glib/main-loop.js +83 -0
- package/dist/generated/glib/mapped-file.d.ts +14 -0
- package/dist/generated/glib/mapped-file.js +94 -0
- package/dist/generated/glib/markup-parse-context.d.ts +19 -0
- package/dist/generated/glib/markup-parse-context.js +185 -0
- package/dist/generated/glib/match-info.d.ts +22 -0
- package/dist/generated/glib/match-info.js +221 -0
- package/dist/generated/glib/option-group.d.ts +14 -0
- package/dist/generated/glib/option-group.js +134 -0
- package/dist/generated/glib/pattern-spec.d.ts +11 -0
- package/dist/generated/glib/pattern-spec.js +86 -0
- package/dist/generated/glib/poll-fd.d.ts +16 -0
- package/dist/generated/glib/poll-fd.js +35 -0
- package/dist/generated/glib/ptr-array.d.ts +47 -0
- package/dist/generated/glib/ptr-array.js +699 -0
- package/dist/generated/glib/rand.d.ts +15 -0
- package/dist/generated/glib/rand.js +137 -0
- package/dist/generated/glib/regex.d.ts +34 -0
- package/dist/generated/glib/regex.js +562 -0
- package/dist/generated/glib/source.d.ts +44 -0
- package/dist/generated/glib/source.js +440 -0
- package/dist/generated/glib/string.d.ts +49 -0
- package/dist/generated/glib/string.js +642 -0
- package/dist/generated/glib/strv-builder.d.ts +13 -0
- package/dist/generated/glib/strv-builder.js +91 -0
- package/dist/generated/glib/thread.d.ts +23 -0
- package/dist/generated/glib/thread.js +242 -0
- package/dist/generated/glib/time-zone.d.ts +20 -0
- package/dist/generated/glib/time-zone.js +151 -0
- package/dist/generated/glib/tree.d.ts +34 -0
- package/dist/generated/glib/tree.js +364 -0
- package/dist/generated/glib/uri.d.ts +45 -0
- package/dist/generated/glib/uri.js +785 -0
- package/dist/generated/glib/variant-builder.d.ts +19 -0
- package/dist/generated/glib/variant-builder.js +159 -0
- package/dist/generated/glib/variant-dict.d.ts +19 -0
- package/dist/generated/glib/variant-dict.js +180 -0
- package/dist/generated/glib/variant-type.d.ts +37 -0
- package/dist/generated/glib/variant-type.js +362 -0
- package/dist/generated/glib/variant.d.ts +102 -0
- package/dist/generated/glib/variant.js +1213 -0
- package/dist/generated/gmodule/functions.d.ts +1 -1
- package/dist/generated/gmodule/functions.js +3 -2
- package/dist/generated/gobject/binding-group.d.ts +2 -1
- package/dist/generated/gobject/binding-group.js +10 -2
- package/dist/generated/gobject/closure.d.ts +25 -0
- package/dist/generated/gobject/closure.js +239 -0
- package/dist/generated/gobject/functions.d.ts +62 -60
- package/dist/generated/gobject/functions.js +547 -118
- package/dist/generated/gobject/index.d.ts +3 -0
- package/dist/generated/gobject/index.js +3 -0
- package/dist/generated/gobject/object.d.ts +15 -13
- package/dist/generated/gobject/object.js +55 -14
- package/dist/generated/gobject/param-spec.d.ts +7 -6
- package/dist/generated/gobject/param-spec.js +11 -6
- package/dist/generated/gobject/signal-group.d.ts +2 -1
- package/dist/generated/gobject/signal-group.js +5 -1
- package/dist/generated/gobject/value-array.d.ts +19 -0
- package/dist/generated/gobject/value-array.js +186 -0
- package/dist/generated/gobject/value.d.ts +78 -0
- package/dist/generated/gobject/value.js +775 -0
- package/dist/generated/graphene/box.d.ts +38 -0
- package/dist/generated/graphene/box.js +543 -0
- package/dist/generated/graphene/euler.d.ts +30 -0
- package/dist/generated/graphene/euler.js +353 -0
- package/dist/generated/graphene/frustum.d.ts +20 -0
- package/dist/generated/graphene/frustum.js +211 -0
- package/dist/generated/graphene/functions.d.ts +34 -26
- package/dist/generated/graphene/functions.js +78 -26
- package/dist/generated/graphene/index.d.ts +17 -0
- package/dist/generated/graphene/index.js +17 -0
- package/dist/generated/graphene/matrix.d.ts +83 -0
- package/dist/generated/graphene/matrix.js +1411 -0
- package/dist/generated/graphene/plane.d.ts +23 -0
- package/dist/generated/graphene/plane.js +287 -0
- package/dist/generated/graphene/point.d.ts +21 -0
- package/dist/generated/graphene/point.js +218 -0
- package/dist/generated/graphene/point3d.d.ts +30 -0
- package/dist/generated/graphene/point3d.js +359 -0
- package/dist/generated/graphene/quad.d.ts +15 -0
- package/dist/generated/graphene/quad.js +164 -0
- package/dist/generated/graphene/quaternion.d.ts +33 -0
- package/dist/generated/graphene/quaternion.js +502 -0
- package/dist/generated/graphene/ray.d.ts +30 -0
- package/dist/generated/graphene/ray.js +345 -0
- package/dist/generated/graphene/rect.d.ts +44 -0
- package/dist/generated/graphene/rect.js +623 -0
- package/dist/generated/graphene/size.d.ts +17 -0
- package/dist/generated/graphene/size.js +157 -0
- package/dist/generated/graphene/sphere.d.ts +21 -0
- package/dist/generated/graphene/sphere.js +248 -0
- package/dist/generated/graphene/triangle.d.ts +26 -0
- package/dist/generated/graphene/triangle.js +397 -0
- package/dist/generated/graphene/vec2.d.ts +31 -0
- package/dist/generated/graphene/vec2.js +470 -0
- package/dist/generated/graphene/vec3.d.ts +41 -0
- package/dist/generated/graphene/vec3.js +619 -0
- package/dist/generated/graphene/vec4.d.ts +41 -0
- package/dist/generated/graphene/vec4.js +608 -0
- package/dist/generated/gsk/component-transfer-node.d.ts +3 -2
- package/dist/generated/gsk/component-transfer-node.js +26 -5
- package/dist/generated/gsk/component-transfer.d.ts +14 -0
- package/dist/generated/gsk/component-transfer.js +120 -0
- package/dist/generated/gsk/fill-node.d.ts +3 -2
- package/dist/generated/gsk/fill-node.js +7 -2
- package/dist/generated/gsk/functions.d.ts +5 -3
- package/dist/generated/gsk/functions.js +17 -4
- package/dist/generated/gsk/glshader.js +10 -4
- package/dist/generated/gsk/index.d.ts +8 -0
- package/dist/generated/gsk/index.js +8 -0
- package/dist/generated/gsk/path-builder.d.ts +37 -0
- package/dist/generated/gsk/path-builder.js +601 -0
- package/dist/generated/gsk/path-measure.d.ts +16 -0
- package/dist/generated/gsk/path-measure.js +105 -0
- package/dist/generated/gsk/path-point.d.ts +18 -0
- package/dist/generated/gsk/path-point.js +151 -0
- package/dist/generated/gsk/path.d.ts +25 -0
- package/dist/generated/gsk/path.js +248 -0
- package/dist/generated/gsk/render-node.js +10 -4
- package/dist/generated/gsk/renderer.js +19 -8
- package/dist/generated/gsk/shader-args-builder.d.ts +17 -0
- package/dist/generated/gsk/shader-args-builder.js +170 -0
- package/dist/generated/gsk/stroke-node.d.ts +5 -3
- package/dist/generated/gsk/stroke-node.js +14 -4
- package/dist/generated/gsk/stroke.d.ts +24 -0
- package/dist/generated/gsk/stroke.js +190 -0
- package/dist/generated/gsk/transform-node.d.ts +3 -2
- package/dist/generated/gsk/transform-node.js +11 -2
- package/dist/generated/gsk/transform.d.ts +33 -0
- package/dist/generated/gsk/transform.js +494 -0
- package/dist/generated/gtk/accessible-list.d.ts +7 -0
- package/dist/generated/gtk/accessible-list.js +40 -0
- package/dist/generated/gtk/alert-dialog.js +10 -4
- package/dist/generated/gtk/bitset-iter.d.ts +14 -0
- package/dist/generated/gtk/bitset-iter.js +138 -0
- package/dist/generated/gtk/bitset.d.ts +33 -0
- package/dist/generated/gtk/bitset.js +383 -0
- package/dist/generated/gtk/border.d.ts +15 -0
- package/dist/generated/gtk/border.js +59 -0
- package/dist/generated/gtk/builder.js +91 -40
- package/dist/generated/gtk/cell-area.d.ts +2 -1
- package/dist/generated/gtk/cell-area.js +6 -2
- package/dist/generated/gtk/cell-renderer-combo.js +1 -1
- package/dist/generated/gtk/cell-renderer.d.ts +2 -1
- package/dist/generated/gtk/cell-renderer.js +16 -2
- package/dist/generated/gtk/cell-view.d.ts +3 -2
- package/dist/generated/gtk/cell-view.js +11 -2
- package/dist/generated/gtk/color-dialog.js +10 -4
- package/dist/generated/gtk/column-view.d.ts +2 -1
- package/dist/generated/gtk/column-view.js +5 -1
- package/dist/generated/gtk/combo-box.d.ts +3 -2
- package/dist/generated/gtk/combo-box.js +13 -2
- package/dist/generated/gtk/constraint-layout.js +10 -4
- package/dist/generated/gtk/css-provider.js +3 -1
- package/dist/generated/gtk/css-section.d.ts +16 -0
- package/dist/generated/gtk/css-section.js +134 -0
- package/dist/generated/gtk/entry-completion.js +2 -2
- package/dist/generated/gtk/expression-watch.d.ts +9 -0
- package/dist/generated/gtk/expression-watch.js +51 -0
- package/dist/generated/gtk/expression.d.ts +3 -2
- package/dist/generated/gtk/expression.js +12 -2
- package/dist/generated/gtk/file-chooser.js +37 -16
- package/dist/generated/gtk/file-dialog.js +73 -32
- package/dist/generated/gtk/file-launcher.js +19 -8
- package/dist/generated/gtk/font-dialog.js +37 -16
- package/dist/generated/gtk/functions.d.ts +21 -17
- package/dist/generated/gtk/functions.js +77 -34
- package/dist/generated/gtk/grid-view.d.ts +2 -1
- package/dist/generated/gtk/grid-view.js +5 -1
- package/dist/generated/gtk/icon-view.d.ts +22 -20
- package/dist/generated/gtk/icon-view.js +138 -23
- package/dist/generated/gtk/index.d.ts +15 -0
- package/dist/generated/gtk/index.js +15 -0
- package/dist/generated/gtk/list-store.d.ts +17 -16
- package/dist/generated/gtk/list-store.js +126 -21
- package/dist/generated/gtk/list-view.d.ts +2 -1
- package/dist/generated/gtk/list-view.js +5 -1
- package/dist/generated/gtk/media-stream.d.ts +2 -2
- package/dist/generated/gtk/media-stream.js +2 -2
- package/dist/generated/gtk/page-setup.d.ts +4 -3
- package/dist/generated/gtk/page-setup.js +44 -15
- package/dist/generated/gtk/paper-size.d.ts +31 -0
- package/dist/generated/gtk/paper-size.js +318 -0
- package/dist/generated/gtk/print-dialog.d.ts +4 -3
- package/dist/generated/gtk/print-dialog.js +44 -15
- package/dist/generated/gtk/print-job.js +28 -12
- package/dist/generated/gtk/print-operation.js +19 -8
- package/dist/generated/gtk/print-settings.d.ts +3 -2
- package/dist/generated/gtk/print-settings.js +39 -14
- package/dist/generated/gtk/print-setup.d.ts +9 -0
- package/dist/generated/gtk/print-setup.js +47 -0
- package/dist/generated/gtk/printer.d.ts +2 -1
- package/dist/generated/gtk/printer.js +5 -1
- package/dist/generated/gtk/recent-info.d.ts +30 -0
- package/dist/generated/gtk/recent-info.js +271 -0
- package/dist/generated/gtk/recent-manager.d.ts +2 -1
- package/dist/generated/gtk/recent-manager.js +43 -17
- package/dist/generated/gtk/requisition.d.ts +11 -0
- package/dist/generated/gtk/requisition.js +47 -0
- package/dist/generated/gtk/scroll-info.d.ts +11 -0
- package/dist/generated/gtk/scroll-info.js +75 -0
- package/dist/generated/gtk/scrollable.d.ts +2 -1
- package/dist/generated/gtk/scrollable.js +8 -1
- package/dist/generated/gtk/selection-model.d.ts +4 -3
- package/dist/generated/gtk/selection-model.js +14 -4
- package/dist/generated/gtk/shortcut.d.ts +2 -2
- package/dist/generated/gtk/shortcut.js +2 -2
- package/dist/generated/gtk/style-context.d.ts +4 -3
- package/dist/generated/gtk/style-context.js +24 -3
- package/dist/generated/gtk/text-buffer.d.ts +38 -37
- package/dist/generated/gtk/text-buffer.js +311 -63
- package/dist/generated/gtk/text-iter.d.ts +97 -0
- package/dist/generated/gtk/text-iter.js +1047 -0
- package/dist/generated/gtk/text-view.d.ts +14 -13
- package/dist/generated/gtk/text-view.js +77 -16
- package/dist/generated/gtk/tree-drag-dest.d.ts +3 -2
- package/dist/generated/gtk/tree-drag-dest.js +10 -2
- package/dist/generated/gtk/tree-drag-source.d.ts +4 -3
- package/dist/generated/gtk/tree-drag-source.js +15 -3
- package/dist/generated/gtk/tree-iter.d.ts +15 -0
- package/dist/generated/gtk/tree-iter.js +49 -0
- package/dist/generated/gtk/tree-model-filter.d.ts +7 -5
- package/dist/generated/gtk/tree-model-filter.js +48 -8
- package/dist/generated/gtk/tree-model-sort.d.ts +7 -5
- package/dist/generated/gtk/tree-model-sort.js +53 -9
- package/dist/generated/gtk/tree-model.d.ts +26 -24
- package/dist/generated/gtk/tree-model.js +200 -43
- package/dist/generated/gtk/tree-path.d.ts +25 -0
- package/dist/generated/gtk/tree-path.js +228 -0
- package/dist/generated/gtk/tree-row-reference.d.ts +17 -0
- package/dist/generated/gtk/tree-row-reference.js +161 -0
- package/dist/generated/gtk/tree-selection.d.ts +11 -9
- package/dist/generated/gtk/tree-selection.js +58 -11
- package/dist/generated/gtk/tree-store.d.ts +20 -19
- package/dist/generated/gtk/tree-store.js +181 -32
- package/dist/generated/gtk/tree-view-column.d.ts +2 -1
- package/dist/generated/gtk/tree-view-column.js +5 -1
- package/dist/generated/gtk/tree-view.d.ts +23 -21
- package/dist/generated/gtk/tree-view.js +151 -32
- package/dist/generated/gtk/uri-launcher.js +10 -4
- package/dist/generated/gtk/viewport.d.ts +2 -1
- package/dist/generated/gtk/viewport.js +5 -1
- package/dist/generated/gtk/widget.d.ts +2 -1
- package/dist/generated/gtk/widget.js +16 -2
- package/dist/generated/harfbuzz/blob-t.d.ts +5 -0
- package/dist/generated/harfbuzz/blob-t.js +9 -0
- package/dist/generated/harfbuzz/buffer-t.d.ts +5 -0
- package/dist/generated/harfbuzz/buffer-t.js +9 -0
- package/dist/generated/harfbuzz/color-line-t.d.ts +18 -0
- package/dist/generated/harfbuzz/color-line-t.js +49 -0
- package/dist/generated/harfbuzz/color-stop-t.d.ts +12 -0
- package/dist/generated/harfbuzz/color-stop-t.js +25 -0
- package/dist/generated/harfbuzz/draw-funcs-t.d.ts +5 -0
- package/dist/generated/harfbuzz/draw-funcs-t.js +9 -0
- package/dist/generated/harfbuzz/draw-state-t.d.ts +20 -0
- package/dist/generated/harfbuzz/draw-state-t.js +46 -0
- package/dist/generated/harfbuzz/face-t.d.ts +5 -0
- package/dist/generated/harfbuzz/face-t.js +9 -0
- package/dist/generated/harfbuzz/feature-t.d.ts +19 -0
- package/dist/generated/harfbuzz/feature-t.js +60 -0
- package/dist/generated/harfbuzz/font-funcs-t.d.ts +5 -0
- package/dist/generated/harfbuzz/font-funcs-t.js +9 -0
- package/dist/generated/harfbuzz/font-t.d.ts +5 -0
- package/dist/generated/harfbuzz/font-t.js +9 -0
- package/dist/generated/harfbuzz/functions.d.ts +513 -491
- package/dist/generated/harfbuzz/functions.js +3345 -637
- package/dist/generated/harfbuzz/glyph-info-t.d.ts +11 -0
- package/dist/generated/harfbuzz/glyph-info-t.js +22 -0
- package/dist/generated/harfbuzz/glyph-position-t.d.ts +9 -0
- package/dist/generated/harfbuzz/glyph-position-t.js +22 -0
- package/dist/generated/harfbuzz/index.d.ts +22 -0
- package/dist/generated/harfbuzz/index.js +22 -0
- package/dist/generated/harfbuzz/map-t.d.ts +5 -0
- package/dist/generated/harfbuzz/map-t.js +9 -0
- package/dist/generated/harfbuzz/ot-math-glyph-part-t.d.ts +11 -0
- package/dist/generated/harfbuzz/ot-math-glyph-part-t.js +25 -0
- package/dist/generated/harfbuzz/ot-math-glyph-variant-t.d.ts +7 -0
- package/dist/generated/harfbuzz/ot-math-glyph-variant-t.js +16 -0
- package/dist/generated/harfbuzz/ot-var-axis-info-t.d.ts +23 -0
- package/dist/generated/harfbuzz/ot-var-axis-info-t.js +52 -0
- package/dist/generated/harfbuzz/paint-funcs-t.d.ts +5 -0
- package/dist/generated/harfbuzz/paint-funcs-t.js +9 -0
- package/dist/generated/harfbuzz/segment-properties-t.d.ts +9 -0
- package/dist/generated/harfbuzz/segment-properties-t.js +19 -0
- package/dist/generated/harfbuzz/set-t.d.ts +5 -0
- package/dist/generated/harfbuzz/set-t.js +9 -0
- package/dist/generated/harfbuzz/shape-plan-t.d.ts +5 -0
- package/dist/generated/harfbuzz/shape-plan-t.js +9 -0
- package/dist/generated/harfbuzz/unicode-funcs-t.d.ts +5 -0
- package/dist/generated/harfbuzz/unicode-funcs-t.js +9 -0
- package/dist/generated/harfbuzz/user-data-key-t.d.ts +5 -0
- package/dist/generated/harfbuzz/user-data-key-t.js +10 -0
- package/dist/generated/pango/attr-iterator.d.ts +17 -0
- package/dist/generated/pango/attr-iterator.js +117 -0
- package/dist/generated/pango/attr-list.d.ts +21 -0
- package/dist/generated/pango/attr-list.js +222 -0
- package/dist/generated/pango/attribute.d.ts +27 -0
- package/dist/generated/pango/attribute.js +151 -0
- package/dist/generated/pango/color.d.ts +22 -0
- package/dist/generated/pango/color.js +95 -0
- package/dist/generated/pango/context.d.ts +13 -9
- package/dist/generated/pango/context.js +64 -12
- package/dist/generated/pango/font-description.d.ts +44 -0
- package/dist/generated/pango/font-description.js +444 -0
- package/dist/generated/pango/font-face.d.ts +2 -1
- package/dist/generated/pango/font-face.js +6 -1
- package/dist/generated/pango/font-map.d.ts +4 -2
- package/dist/generated/pango/font-map.js +25 -7
- package/dist/generated/pango/font-metrics.d.ts +16 -0
- package/dist/generated/pango/font-metrics.js +103 -0
- package/dist/generated/pango/font.d.ts +9 -6
- package/dist/generated/pango/font.js +54 -11
- package/dist/generated/pango/fontset-simple.d.ts +2 -1
- package/dist/generated/pango/fontset-simple.js +5 -1
- package/dist/generated/pango/fontset.d.ts +2 -1
- package/dist/generated/pango/fontset.js +6 -1
- package/dist/generated/pango/functions.d.ts +66 -57
- package/dist/generated/pango/functions.js +380 -71
- package/dist/generated/pango/glyph-item-iter.d.ts +34 -0
- package/dist/generated/pango/glyph-item-iter.js +142 -0
- package/dist/generated/pango/glyph-item.d.ts +28 -0
- package/dist/generated/pango/glyph-item.js +149 -0
- package/dist/generated/pango/glyph-string.d.ts +21 -0
- package/dist/generated/pango/glyph-string.js +260 -0
- package/dist/generated/pango/index.d.ts +16 -0
- package/dist/generated/pango/index.js +16 -0
- package/dist/generated/pango/item.d.ts +18 -0
- package/dist/generated/pango/item.js +101 -0
- package/dist/generated/pango/language.d.ts +15 -0
- package/dist/generated/pango/language.js +102 -0
- package/dist/generated/pango/layout-iter.d.ts +28 -0
- package/dist/generated/pango/layout-iter.js +243 -0
- package/dist/generated/pango/layout-line.d.ts +33 -0
- package/dist/generated/pango/layout-line.js +225 -0
- package/dist/generated/pango/layout.d.ts +14 -9
- package/dist/generated/pango/layout.js +70 -17
- package/dist/generated/pango/matrix.d.ts +39 -0
- package/dist/generated/pango/matrix.js +228 -0
- package/dist/generated/pango/renderer.d.ts +13 -8
- package/dist/generated/pango/renderer.js +43 -8
- package/dist/generated/pango/script-iter.d.ts +11 -0
- package/dist/generated/pango/script-iter.js +60 -0
- package/dist/generated/pango/tab-array.d.ts +23 -0
- package/dist/generated/pango/tab-array.js +236 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/native-error.d.ts +6 -0
- package/dist/native-error.js +17 -0
- package/package.json +3 -3
|
@@ -10,11 +10,20 @@ export declare class CodeGenerator {
|
|
|
10
10
|
private usesRef;
|
|
11
11
|
private usesCall;
|
|
12
12
|
private usesType;
|
|
13
|
+
private usesRead;
|
|
14
|
+
private usesWrite;
|
|
15
|
+
private usesAlloc;
|
|
16
|
+
private usesNativeError;
|
|
13
17
|
private usedEnums;
|
|
18
|
+
private usedRecords;
|
|
14
19
|
private signalClasses;
|
|
20
|
+
private recordNameToFile;
|
|
21
|
+
private currentSharedLibrary;
|
|
15
22
|
constructor(options: GeneratorOptions);
|
|
16
23
|
generateNamespace(namespace: GirNamespace): Promise<Map<string, string>>;
|
|
17
24
|
private registerEnumsAndBitfields;
|
|
25
|
+
private registerRecords;
|
|
26
|
+
private shouldGenerateRecord;
|
|
18
27
|
private buildClassMap;
|
|
19
28
|
private attachConstructorFunctions;
|
|
20
29
|
private getStandaloneFunctions;
|
|
@@ -33,6 +42,21 @@ export declare class CodeGenerator {
|
|
|
33
42
|
private extractSignalParamClass;
|
|
34
43
|
private generateSignalConnect;
|
|
35
44
|
private generateInterface;
|
|
45
|
+
private generateRecord;
|
|
46
|
+
private generateRecordInitInterface;
|
|
47
|
+
private generateRecordConstructors;
|
|
48
|
+
private getWritableFields;
|
|
49
|
+
private generateFieldInitInterface;
|
|
50
|
+
private generateRecordCreatePtr;
|
|
51
|
+
private generateFieldWrites;
|
|
52
|
+
private calculateStructSize;
|
|
53
|
+
private generateRecordStaticFactoryMethod;
|
|
54
|
+
private generateRecordStaticFunctions;
|
|
55
|
+
private generateRecordMethods;
|
|
56
|
+
private generateRecordFields;
|
|
57
|
+
private isWritableType;
|
|
58
|
+
private getFieldSize;
|
|
59
|
+
private getFieldAlignment;
|
|
36
60
|
private generateFunctions;
|
|
37
61
|
private generateFunction;
|
|
38
62
|
private generateEnums;
|
|
@@ -48,6 +48,8 @@ const RESERVED_WORDS = new Set([
|
|
|
48
48
|
"public",
|
|
49
49
|
"await",
|
|
50
50
|
"async",
|
|
51
|
+
"eval",
|
|
52
|
+
"arguments",
|
|
51
53
|
]);
|
|
52
54
|
const METHOD_RENAMES = new Map([
|
|
53
55
|
["IconView", new Map([["setCursor", "setCursorPath"]])],
|
|
@@ -67,7 +69,13 @@ const METHOD_RENAMES = new Map([
|
|
|
67
69
|
]),
|
|
68
70
|
],
|
|
69
71
|
]);
|
|
70
|
-
const
|
|
72
|
+
const CLASS_RENAMES = new Map([
|
|
73
|
+
["Error", "GError"],
|
|
74
|
+
]);
|
|
75
|
+
const toKebabCase = (str) => str
|
|
76
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2")
|
|
77
|
+
.replace(/_/g, "-")
|
|
78
|
+
.toLowerCase();
|
|
71
79
|
const toConstantCase = (str) => str.replace(/-/g, "_").toUpperCase();
|
|
72
80
|
const sanitizeDoc = (doc) => {
|
|
73
81
|
let result = doc;
|
|
@@ -126,7 +134,16 @@ const toValidIdentifier = (str) => {
|
|
|
126
134
|
result = `_${result}`;
|
|
127
135
|
return result;
|
|
128
136
|
};
|
|
129
|
-
const normalizeClassName = (name) =>
|
|
137
|
+
const normalizeClassName = (name) => {
|
|
138
|
+
const pascalName = toPascalCase(name);
|
|
139
|
+
if (CLASS_RENAMES.has(pascalName)) {
|
|
140
|
+
return CLASS_RENAMES.get(pascalName);
|
|
141
|
+
}
|
|
142
|
+
if (pascalName === "Object") {
|
|
143
|
+
return "GObject";
|
|
144
|
+
}
|
|
145
|
+
return pascalName;
|
|
146
|
+
};
|
|
130
147
|
const hasOutParameter = (params) => params.some((p) => p.direction === "out" || p.direction === "inout");
|
|
131
148
|
const isVararg = (param) => param.name === "..." || param.name === "";
|
|
132
149
|
export class CodeGenerator {
|
|
@@ -135,15 +152,24 @@ export class CodeGenerator {
|
|
|
135
152
|
usesRef = false;
|
|
136
153
|
usesCall = false;
|
|
137
154
|
usesType = false;
|
|
155
|
+
usesRead = false;
|
|
156
|
+
usesWrite = false;
|
|
157
|
+
usesAlloc = false;
|
|
158
|
+
usesNativeError = false;
|
|
138
159
|
usedEnums = new Set();
|
|
160
|
+
usedRecords = new Set();
|
|
139
161
|
signalClasses = new Set();
|
|
162
|
+
recordNameToFile = new Map();
|
|
163
|
+
currentSharedLibrary = "";
|
|
140
164
|
constructor(options) {
|
|
141
165
|
this.options = options;
|
|
142
166
|
this.typeMapper = new TypeMapper();
|
|
143
167
|
}
|
|
144
168
|
async generateNamespace(namespace) {
|
|
145
169
|
const files = new Map();
|
|
170
|
+
this.currentSharedLibrary = namespace.sharedLibrary;
|
|
146
171
|
this.registerEnumsAndBitfields(namespace);
|
|
172
|
+
this.registerRecords(namespace);
|
|
147
173
|
const classMap = this.buildClassMap(namespace);
|
|
148
174
|
this.attachConstructorFunctions(namespace, classMap);
|
|
149
175
|
for (const iface of namespace.interfaces) {
|
|
@@ -152,6 +178,11 @@ export class CodeGenerator {
|
|
|
152
178
|
for (const cls of namespace.classes) {
|
|
153
179
|
files.set(`${toKebabCase(cls.name)}.ts`, await this.generateClass(cls, namespace.sharedLibrary, classMap));
|
|
154
180
|
}
|
|
181
|
+
for (const record of namespace.records) {
|
|
182
|
+
if (this.shouldGenerateRecord(record)) {
|
|
183
|
+
files.set(`${toKebabCase(record.name)}.ts`, await this.generateRecord(record, namespace.sharedLibrary));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
155
186
|
const standaloneFunctions = this.getStandaloneFunctions(namespace, classMap);
|
|
156
187
|
if (standaloneFunctions.length > 0) {
|
|
157
188
|
files.set("functions.ts", await this.generateFunctions(standaloneFunctions, namespace.sharedLibrary));
|
|
@@ -171,6 +202,28 @@ export class CodeGenerator {
|
|
|
171
202
|
this.typeMapper.registerEnum(bitfield.name, toPascalCase(bitfield.name));
|
|
172
203
|
}
|
|
173
204
|
}
|
|
205
|
+
registerRecords(namespace) {
|
|
206
|
+
for (const record of namespace.records) {
|
|
207
|
+
if (this.shouldGenerateRecord(record)) {
|
|
208
|
+
const normalizedName = normalizeClassName(record.name);
|
|
209
|
+
this.typeMapper.registerRecord(record.name, normalizedName, record.glibTypeName);
|
|
210
|
+
this.recordNameToFile.set(normalizedName, record.name);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
shouldGenerateRecord(record) {
|
|
215
|
+
if (record.disguised)
|
|
216
|
+
return false;
|
|
217
|
+
if (record.name.endsWith("Class"))
|
|
218
|
+
return false;
|
|
219
|
+
if (record.name.endsWith("Private"))
|
|
220
|
+
return false;
|
|
221
|
+
if (record.name.endsWith("Iface"))
|
|
222
|
+
return false;
|
|
223
|
+
if (!record.glibTypeName)
|
|
224
|
+
return false;
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
174
227
|
buildClassMap(namespace) {
|
|
175
228
|
const classMap = new Map();
|
|
176
229
|
for (const cls of namespace.classes) {
|
|
@@ -214,9 +267,15 @@ export class CodeGenerator {
|
|
|
214
267
|
this.usesRef = false;
|
|
215
268
|
this.usesCall = false;
|
|
216
269
|
this.usesType = false;
|
|
270
|
+
this.usesRead = false;
|
|
271
|
+
this.usesWrite = false;
|
|
272
|
+
this.usesAlloc = false;
|
|
273
|
+
this.usesNativeError = false;
|
|
217
274
|
this.usedEnums.clear();
|
|
275
|
+
this.usedRecords.clear();
|
|
218
276
|
this.signalClasses.clear();
|
|
219
277
|
this.typeMapper.setEnumUsageCallback((enumName) => this.usedEnums.add(enumName));
|
|
278
|
+
this.typeMapper.setRecordUsageCallback((recordName) => this.usedRecords.add(recordName));
|
|
220
279
|
}
|
|
221
280
|
async generateClass(cls, sharedLibrary, classMap) {
|
|
222
281
|
this.resetState();
|
|
@@ -561,8 +620,10 @@ ${allArgs ? `${allArgs},` : ""}
|
|
|
561
620
|
}
|
|
562
621
|
generateSignalConnect(sharedLibrary, signals, hasConnectMethod, classMap) {
|
|
563
622
|
const methodName = hasConnectMethod ? "on" : "connect";
|
|
564
|
-
const
|
|
623
|
+
const savedEnumCallback = this.typeMapper.getEnumUsageCallback();
|
|
624
|
+
const savedRecordCallback = this.typeMapper.getRecordUsageCallback();
|
|
565
625
|
this.typeMapper.setEnumUsageCallback(null);
|
|
626
|
+
this.typeMapper.setRecordUsageCallback(null);
|
|
566
627
|
const signalMetadata = signals.map((signal) => {
|
|
567
628
|
const paramEntries = (signal.parameters ?? []).map((param) => {
|
|
568
629
|
const ffiType = JSON.stringify(this.typeMapper.mapType(param.type).ffi);
|
|
@@ -575,7 +636,8 @@ ${allArgs ? `${allArgs},` : ""}
|
|
|
575
636
|
});
|
|
576
637
|
return ` "${signal.name}": [${paramEntries.join(", ")}]`;
|
|
577
638
|
});
|
|
578
|
-
this.typeMapper.setEnumUsageCallback(
|
|
639
|
+
this.typeMapper.setEnumUsageCallback(savedEnumCallback);
|
|
640
|
+
this.typeMapper.setRecordUsageCallback(savedRecordCallback);
|
|
579
641
|
this.usesType = true;
|
|
580
642
|
const signalMapCode = signalMetadata.length > 0
|
|
581
643
|
? `const signalMeta: Record<string, { type: Type; cls?: { prototype: object } }[]> = {\n${signalMetadata.join(",\n")}\n };
|
|
@@ -638,6 +700,297 @@ ${allArgs ? `${allArgs},` : ""}
|
|
|
638
700
|
const imports = this.generateImports(interfaceName);
|
|
639
701
|
return this.formatCode(imports + sections.join("\n"));
|
|
640
702
|
}
|
|
703
|
+
async generateRecord(record, sharedLibrary) {
|
|
704
|
+
this.resetState();
|
|
705
|
+
this.usesRef =
|
|
706
|
+
record.methods.some((m) => hasOutParameter(m.parameters)) ||
|
|
707
|
+
record.constructors.some((c) => hasOutParameter(c.parameters)) ||
|
|
708
|
+
record.functions.some((f) => hasOutParameter(f.parameters));
|
|
709
|
+
this.usesCall =
|
|
710
|
+
record.methods.length > 0 || record.constructors.length > 0 || record.functions.length > 0;
|
|
711
|
+
const hasReadableFields = record.fields.some((f) => f.readable !== false && !f.private);
|
|
712
|
+
if (hasReadableFields) {
|
|
713
|
+
this.usesRead = true;
|
|
714
|
+
}
|
|
715
|
+
const recordName = normalizeClassName(record.name);
|
|
716
|
+
const sections = [];
|
|
717
|
+
const initInterface = this.generateRecordInitInterface(record);
|
|
718
|
+
if (initInterface) {
|
|
719
|
+
sections.push(initInterface);
|
|
720
|
+
}
|
|
721
|
+
if (record.doc) {
|
|
722
|
+
sections.push(formatDoc(record.doc));
|
|
723
|
+
}
|
|
724
|
+
sections.push(`export class ${recordName} {`);
|
|
725
|
+
sections.push(` ptr: unknown;\n`);
|
|
726
|
+
sections.push(this.generateRecordConstructors(record, sharedLibrary));
|
|
727
|
+
sections.push(this.generateRecordStaticFunctions(record.functions, sharedLibrary, recordName));
|
|
728
|
+
sections.push(this.generateRecordMethods(record.methods, sharedLibrary, record.name));
|
|
729
|
+
sections.push(this.generateRecordFields(record.fields, record.methods));
|
|
730
|
+
sections.push("}");
|
|
731
|
+
const imports = this.generateImports(recordName);
|
|
732
|
+
return this.formatCode(imports + sections.join("\n"));
|
|
733
|
+
}
|
|
734
|
+
generateRecordInitInterface(record) {
|
|
735
|
+
const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
|
|
736
|
+
if (mainConstructor)
|
|
737
|
+
return null;
|
|
738
|
+
const initFields = this.getWritableFields(record.fields);
|
|
739
|
+
if (initFields.length === 0)
|
|
740
|
+
return null;
|
|
741
|
+
const recordName = normalizeClassName(record.name);
|
|
742
|
+
return this.generateFieldInitInterface(recordName, initFields);
|
|
743
|
+
}
|
|
744
|
+
generateRecordConstructors(record, sharedLibrary) {
|
|
745
|
+
const recordName = normalizeClassName(record.name);
|
|
746
|
+
const sections = [];
|
|
747
|
+
const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
|
|
748
|
+
if (mainConstructor) {
|
|
749
|
+
const ctorDoc = formatMethodDoc(mainConstructor.doc, mainConstructor.parameters);
|
|
750
|
+
const filteredParams = mainConstructor.parameters.filter((p) => !isVararg(p));
|
|
751
|
+
if (filteredParams.length === 0) {
|
|
752
|
+
sections.push(`${ctorDoc} constructor() {\n this.ptr = this.createPtr([]);\n }\n`);
|
|
753
|
+
}
|
|
754
|
+
else {
|
|
755
|
+
const typedParams = this.generateParameterList(mainConstructor.parameters, false);
|
|
756
|
+
const paramNames = filteredParams.map((p) => toValidIdentifier(toCamelCase(p.name)));
|
|
757
|
+
const firstParamType = this.typeMapper.mapParameter(filteredParams[0]).ts;
|
|
758
|
+
const isFirstParamArray = firstParamType.endsWith("[]") || firstParamType.startsWith("Array<");
|
|
759
|
+
if (isFirstParamArray) {
|
|
760
|
+
sections.push(`${ctorDoc} constructor(${typedParams}) {
|
|
761
|
+
const _args = [${paramNames.join(", ")}];
|
|
762
|
+
this.ptr = this.createPtr(_args);
|
|
763
|
+
}
|
|
764
|
+
`);
|
|
765
|
+
}
|
|
766
|
+
else {
|
|
767
|
+
sections.push(`${ctorDoc} constructor(${typedParams});
|
|
768
|
+
constructor(_args: unknown[]);
|
|
769
|
+
constructor(...args: unknown[]) {
|
|
770
|
+
const _args = args.length === 1 && Array.isArray(args[0]) ? args[0] : args;
|
|
771
|
+
this.ptr = this.createPtr(_args);
|
|
772
|
+
}
|
|
773
|
+
`);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
for (const ctor of record.constructors) {
|
|
777
|
+
if (ctor !== mainConstructor) {
|
|
778
|
+
sections.push(this.generateRecordStaticFactoryMethod(ctor, recordName, sharedLibrary));
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
else {
|
|
783
|
+
const initFields = this.getWritableFields(record.fields);
|
|
784
|
+
if (initFields.length > 0) {
|
|
785
|
+
sections.push(` constructor(init: ${recordName}Init = {}) {\n this.ptr = this.createPtr(init);\n }\n`);
|
|
786
|
+
}
|
|
787
|
+
else {
|
|
788
|
+
sections.push(` constructor() {\n this.ptr = this.createPtr({});\n }\n`);
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
sections.push(this.generateRecordCreatePtr(record, sharedLibrary));
|
|
792
|
+
return sections.join("\n");
|
|
793
|
+
}
|
|
794
|
+
getWritableFields(fields) {
|
|
795
|
+
return fields.filter((f) => !f.private && f.writable !== false && this.isWritableType(f.type));
|
|
796
|
+
}
|
|
797
|
+
generateFieldInitInterface(recordName, fields) {
|
|
798
|
+
const properties = fields.map((field) => {
|
|
799
|
+
const fieldName = toValidIdentifier(toCamelCase(field.name));
|
|
800
|
+
const typeMapping = this.typeMapper.mapType(field.type);
|
|
801
|
+
return ` ${fieldName}?: ${typeMapping.ts};`;
|
|
802
|
+
});
|
|
803
|
+
return `export interface ${recordName}Init {\n${properties.join("\n")}\n}\n\n`;
|
|
804
|
+
}
|
|
805
|
+
generateRecordCreatePtr(record, sharedLibrary) {
|
|
806
|
+
const recordName = normalizeClassName(record.name);
|
|
807
|
+
const mainConstructor = record.constructors.find((c) => !c.parameters.some(isVararg));
|
|
808
|
+
if (!mainConstructor) {
|
|
809
|
+
if (record.glibTypeName && record.fields.length > 0) {
|
|
810
|
+
const structSize = this.calculateStructSize(record.fields);
|
|
811
|
+
const initFields = this.getWritableFields(record.fields);
|
|
812
|
+
this.usesAlloc = true;
|
|
813
|
+
if (initFields.length > 0) {
|
|
814
|
+
const fieldWrites = this.generateFieldWrites(record.fields);
|
|
815
|
+
this.usesWrite = true;
|
|
816
|
+
return ` protected createPtr(init: ${recordName}Init): unknown {
|
|
817
|
+
const ptr = alloc(${structSize}, "${record.glibTypeName}", "${sharedLibrary}");
|
|
818
|
+
${fieldWrites}
|
|
819
|
+
return ptr;
|
|
820
|
+
}
|
|
821
|
+
`;
|
|
822
|
+
}
|
|
823
|
+
return ` protected createPtr(_init: Record<string, unknown>): unknown {
|
|
824
|
+
return alloc(${structSize}, "${record.glibTypeName}", "${sharedLibrary}");
|
|
825
|
+
}
|
|
826
|
+
`;
|
|
827
|
+
}
|
|
828
|
+
return ` protected createPtr(_init: Record<string, unknown>): unknown {\n return null;\n }\n`;
|
|
829
|
+
}
|
|
830
|
+
const filteredParams = mainConstructor.parameters.filter((p) => !isVararg(p));
|
|
831
|
+
const paramTypes = filteredParams.map((p) => this.typeMapper.mapParameter(p).ts);
|
|
832
|
+
const paramNames = filteredParams.map((p) => toValidIdentifier(toCamelCase(p.name)));
|
|
833
|
+
const destructuring = paramNames.length > 0
|
|
834
|
+
? ` const [${paramNames.join(", ")}] = _args as [${paramTypes.join(", ")}];\n`
|
|
835
|
+
: "";
|
|
836
|
+
const args = this.generateCallArguments(mainConstructor.parameters);
|
|
837
|
+
const glibTypeName = record.glibTypeName ?? record.cType;
|
|
838
|
+
return ` protected createPtr(_args: unknown[]): unknown {
|
|
839
|
+
${destructuring} return call(
|
|
840
|
+
"${sharedLibrary}",
|
|
841
|
+
"${mainConstructor.cIdentifier}",
|
|
842
|
+
[
|
|
843
|
+
${args}
|
|
844
|
+
],
|
|
845
|
+
{ type: "boxed", borrowed: true, innerType: "${glibTypeName}" }
|
|
846
|
+
);
|
|
847
|
+
}
|
|
848
|
+
`;
|
|
849
|
+
}
|
|
850
|
+
generateFieldWrites(fields) {
|
|
851
|
+
const writes = [];
|
|
852
|
+
let currentOffset = 0;
|
|
853
|
+
for (const field of fields) {
|
|
854
|
+
if (field.private)
|
|
855
|
+
continue;
|
|
856
|
+
const fieldSize = this.getFieldSize(field.type);
|
|
857
|
+
const alignment = this.getFieldAlignment(field.type);
|
|
858
|
+
currentOffset = Math.ceil(currentOffset / alignment) * alignment;
|
|
859
|
+
if (field.writable !== false && this.isWritableType(field.type)) {
|
|
860
|
+
const fieldName = toValidIdentifier(toCamelCase(field.name));
|
|
861
|
+
const typeMapping = this.typeMapper.mapType(field.type);
|
|
862
|
+
writes.push(` if (init.${fieldName} !== undefined) write(ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${currentOffset}, init.${fieldName});`);
|
|
863
|
+
}
|
|
864
|
+
currentOffset += fieldSize;
|
|
865
|
+
}
|
|
866
|
+
return writes.join("\n");
|
|
867
|
+
}
|
|
868
|
+
calculateStructSize(fields) {
|
|
869
|
+
let currentOffset = 0;
|
|
870
|
+
for (const field of fields) {
|
|
871
|
+
if (field.private)
|
|
872
|
+
continue;
|
|
873
|
+
const fieldSize = this.getFieldSize(field.type);
|
|
874
|
+
const alignment = this.getFieldAlignment(field.type);
|
|
875
|
+
currentOffset = Math.ceil(currentOffset / alignment) * alignment;
|
|
876
|
+
currentOffset += fieldSize;
|
|
877
|
+
}
|
|
878
|
+
const maxAlignment = Math.max(...fields.map((f) => this.getFieldAlignment(f.type)), 1);
|
|
879
|
+
return Math.ceil(currentOffset / maxAlignment) * maxAlignment;
|
|
880
|
+
}
|
|
881
|
+
generateRecordStaticFactoryMethod(ctor, recordName, sharedLibrary) {
|
|
882
|
+
let methodName = "new";
|
|
883
|
+
if (ctor.cIdentifier) {
|
|
884
|
+
const parts = ctor.cIdentifier.split("_");
|
|
885
|
+
const nameParts = parts.slice(2).join("_");
|
|
886
|
+
if (nameParts && nameParts !== "new") {
|
|
887
|
+
methodName = toCamelCase(nameParts);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
const params = this.generateParameterList(ctor.parameters);
|
|
891
|
+
const args = this.generateCallArguments(ctor.parameters);
|
|
892
|
+
const ctorDoc = formatMethodDoc(ctor.doc, ctor.parameters);
|
|
893
|
+
return `${ctorDoc} static ${methodName}(${params}): ${recordName} {
|
|
894
|
+
const ptr = call(
|
|
895
|
+
"${sharedLibrary}",
|
|
896
|
+
"${ctor.cIdentifier}",
|
|
897
|
+
[
|
|
898
|
+
${args}
|
|
899
|
+
],
|
|
900
|
+
{ type: "boxed", borrowed: true, innerType: "${recordName}" }
|
|
901
|
+
);
|
|
902
|
+
const instance = Object.create(${recordName}.prototype) as ${recordName} & { ptr: unknown };
|
|
903
|
+
instance.ptr = ptr;
|
|
904
|
+
return instance;
|
|
905
|
+
}
|
|
906
|
+
`;
|
|
907
|
+
}
|
|
908
|
+
generateRecordStaticFunctions(functions, sharedLibrary, recordName) {
|
|
909
|
+
return this.generateStaticFunctions(functions, sharedLibrary, recordName);
|
|
910
|
+
}
|
|
911
|
+
generateRecordMethods(methods, sharedLibrary, recordName) {
|
|
912
|
+
return this.generateMethods(methods, sharedLibrary, recordName);
|
|
913
|
+
}
|
|
914
|
+
generateRecordFields(fields, methods) {
|
|
915
|
+
const sections = [];
|
|
916
|
+
const fieldOffsets = [];
|
|
917
|
+
const methodNames = new Set(methods.map((m) => toCamelCase(m.name)));
|
|
918
|
+
let currentOffset = 0;
|
|
919
|
+
for (const field of fields) {
|
|
920
|
+
if (field.private)
|
|
921
|
+
continue;
|
|
922
|
+
const fieldSize = this.getFieldSize(field.type);
|
|
923
|
+
const alignment = this.getFieldAlignment(field.type);
|
|
924
|
+
currentOffset = Math.ceil(currentOffset / alignment) * alignment;
|
|
925
|
+
fieldOffsets.push({ field, offset: currentOffset });
|
|
926
|
+
currentOffset += fieldSize;
|
|
927
|
+
}
|
|
928
|
+
for (const { field, offset } of fieldOffsets) {
|
|
929
|
+
const isReadable = field.readable !== false;
|
|
930
|
+
const isWritable = field.writable !== false;
|
|
931
|
+
if (!isReadable && !isWritable)
|
|
932
|
+
continue;
|
|
933
|
+
const fieldName = toValidIdentifier(toCamelCase(field.name));
|
|
934
|
+
if (methodNames.has(fieldName))
|
|
935
|
+
continue;
|
|
936
|
+
const typeMapping = this.typeMapper.mapType(field.type);
|
|
937
|
+
if (field.doc) {
|
|
938
|
+
sections.push(formatDoc(field.doc, " ").trimEnd());
|
|
939
|
+
}
|
|
940
|
+
if (isReadable) {
|
|
941
|
+
sections.push(` get ${fieldName}(): ${typeMapping.ts} {
|
|
942
|
+
return read(this.ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${offset}) as ${typeMapping.ts};
|
|
943
|
+
}
|
|
944
|
+
`);
|
|
945
|
+
}
|
|
946
|
+
if (isWritable && this.isWritableType(field.type)) {
|
|
947
|
+
this.usesWrite = true;
|
|
948
|
+
sections.push(` set ${fieldName}(value: ${typeMapping.ts}) {
|
|
949
|
+
write(this.ptr, ${this.generateTypeDescriptor(typeMapping.ffi)}, ${offset}, value);
|
|
950
|
+
}
|
|
951
|
+
`);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
return sections.join("\n");
|
|
955
|
+
}
|
|
956
|
+
isWritableType(type) {
|
|
957
|
+
const typeName = type.name;
|
|
958
|
+
if (typeName === "gboolean" || typeName === "guint8" || typeName === "gint8" || typeName === "guchar" || typeName === "gchar") {
|
|
959
|
+
return true;
|
|
960
|
+
}
|
|
961
|
+
if (typeName === "gint16" || typeName === "guint16" || typeName === "gshort" || typeName === "gushort") {
|
|
962
|
+
return true;
|
|
963
|
+
}
|
|
964
|
+
if (typeName === "gint" || typeName === "guint" || typeName === "gint32" || typeName === "guint32") {
|
|
965
|
+
return true;
|
|
966
|
+
}
|
|
967
|
+
if (typeName === "gint64" || typeName === "guint64" || typeName === "glong" || typeName === "gulong" || typeName === "gsize" || typeName === "gssize") {
|
|
968
|
+
return true;
|
|
969
|
+
}
|
|
970
|
+
if (typeName === "gfloat" || typeName === "float" || typeName === "gdouble" || typeName === "double") {
|
|
971
|
+
return true;
|
|
972
|
+
}
|
|
973
|
+
return false;
|
|
974
|
+
}
|
|
975
|
+
getFieldSize(type) {
|
|
976
|
+
const typeName = type.name;
|
|
977
|
+
if (typeName === "gboolean" || typeName === "guint8" || typeName === "gint8" || typeName === "guchar" || typeName === "gchar") {
|
|
978
|
+
return 1;
|
|
979
|
+
}
|
|
980
|
+
if (typeName === "gint16" || typeName === "guint16" || typeName === "gshort" || typeName === "gushort") {
|
|
981
|
+
return 2;
|
|
982
|
+
}
|
|
983
|
+
if (typeName === "gint" || typeName === "guint" || typeName === "gint32" || typeName === "guint32" || typeName === "gfloat" || typeName === "float" || typeName === "Quark" || typeName === "GQuark") {
|
|
984
|
+
return 4;
|
|
985
|
+
}
|
|
986
|
+
if (typeName === "gint64" || typeName === "guint64" || typeName === "gdouble" || typeName === "double" || typeName === "glong" || typeName === "gulong" || typeName === "gsize" || typeName === "gssize" || typeName === "GType") {
|
|
987
|
+
return 8;
|
|
988
|
+
}
|
|
989
|
+
return 8;
|
|
990
|
+
}
|
|
991
|
+
getFieldAlignment(type) {
|
|
992
|
+
return this.getFieldSize(type);
|
|
993
|
+
}
|
|
641
994
|
async generateFunctions(functions, sharedLibrary) {
|
|
642
995
|
this.resetState();
|
|
643
996
|
this.usesRef = functions.some((f) => hasOutParameter(f.parameters));
|
|
@@ -734,13 +1087,12 @@ ${allArgs ? `${allArgs},` : ""}
|
|
|
734
1087
|
.join(",\n");
|
|
735
1088
|
}
|
|
736
1089
|
generateErrorArgument(indent = " ") {
|
|
737
|
-
return `${indent} {\n${indent} type: { type: "ref", innerType: { type: "
|
|
1090
|
+
return `${indent} {\n${indent} type: { type: "ref", innerType: { type: "boxed", innerType: "GError", lib: "libglib-2.0.so.0" } },\n${indent} value: error,\n${indent} }`;
|
|
738
1091
|
}
|
|
739
1092
|
generateErrorCheck(indent = " ") {
|
|
1093
|
+
this.usesNativeError = true;
|
|
740
1094
|
return `${indent} if (error.value !== null) {
|
|
741
|
-
${indent}
|
|
742
|
-
${indent} (jsError as any).gError = error.value;
|
|
743
|
-
${indent} throw jsError;
|
|
1095
|
+
${indent} throw new NativeError(error.value);
|
|
744
1096
|
${indent} }`;
|
|
745
1097
|
}
|
|
746
1098
|
generateTypeDescriptor(type) {
|
|
@@ -753,7 +1105,14 @@ ${indent} }`;
|
|
|
753
1105
|
if (type.type === "gobject") {
|
|
754
1106
|
return type.borrowed ? `{ type: "gobject", borrowed: true }` : `{ type: "gobject" }`;
|
|
755
1107
|
}
|
|
756
|
-
if (type.type === "
|
|
1108
|
+
if (type.type === "boxed") {
|
|
1109
|
+
const innerType = typeof type.innerType === "string" ? type.innerType : "";
|
|
1110
|
+
const lib = this.currentSharedLibrary;
|
|
1111
|
+
return type.borrowed
|
|
1112
|
+
? `{ type: "boxed", borrowed: true, innerType: "${innerType}", lib: "${lib}" }`
|
|
1113
|
+
: `{ type: "boxed", innerType: "${innerType}", lib: "${lib}" }`;
|
|
1114
|
+
}
|
|
1115
|
+
if (type.type === "ref" && type.innerType && typeof type.innerType !== "string") {
|
|
757
1116
|
return `{ type: "ref", innerType: ${this.generateTypeDescriptor(type.innerType)} }`;
|
|
758
1117
|
}
|
|
759
1118
|
if (type.type === "array" && type.itemType) {
|
|
@@ -763,8 +1122,14 @@ ${indent} }`;
|
|
|
763
1122
|
}
|
|
764
1123
|
generateImports(currentClassName, parentClassName) {
|
|
765
1124
|
const nativeImports = [];
|
|
1125
|
+
if (this.usesAlloc)
|
|
1126
|
+
nativeImports.push("alloc");
|
|
766
1127
|
if (this.usesCall)
|
|
767
1128
|
nativeImports.push("call");
|
|
1129
|
+
if (this.usesRead)
|
|
1130
|
+
nativeImports.push("read");
|
|
1131
|
+
if (this.usesWrite)
|
|
1132
|
+
nativeImports.push("write");
|
|
768
1133
|
if (this.usesRef)
|
|
769
1134
|
nativeImports.push("Ref");
|
|
770
1135
|
if (this.usesType)
|
|
@@ -773,10 +1138,21 @@ ${indent} }`;
|
|
|
773
1138
|
if (nativeImports.length > 0) {
|
|
774
1139
|
lines.push(`import { ${nativeImports.join(", ")} } from "@gtkx/native";`);
|
|
775
1140
|
}
|
|
1141
|
+
if (this.usesNativeError) {
|
|
1142
|
+
lines.push(`import { NativeError } from "@gtkx/ffi";`);
|
|
1143
|
+
}
|
|
776
1144
|
if (this.usedEnums.size > 0) {
|
|
777
1145
|
const enumList = Array.from(this.usedEnums).sort().join(", ");
|
|
778
1146
|
lines.push(`import { ${enumList} } from "./enums.js";`);
|
|
779
1147
|
}
|
|
1148
|
+
for (const normalizedRecordName of Array.from(this.usedRecords).sort()) {
|
|
1149
|
+
const normalizedCurrentClass = currentClassName ? normalizeClassName(currentClassName) : "";
|
|
1150
|
+
const normalizedParentClass = parentClassName ? normalizeClassName(parentClassName) : "";
|
|
1151
|
+
if (normalizedRecordName !== normalizedCurrentClass && normalizedRecordName !== normalizedParentClass) {
|
|
1152
|
+
const originalName = this.recordNameToFile.get(normalizedRecordName) ?? normalizedRecordName;
|
|
1153
|
+
lines.push(`import type { ${normalizedRecordName} } from "./${toKebabCase(originalName)}.js";`);
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
780
1156
|
for (const className of Array.from(this.signalClasses).sort()) {
|
|
781
1157
|
if (className !== currentClassName && className !== parentClassName) {
|
|
782
1158
|
lines.push(`import { ${className} } from "./${toKebabCase(className)}.js";`);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface GlyphInit {
|
|
2
|
+
index?: number;
|
|
3
|
+
x?: number;
|
|
4
|
+
y?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class Glyph {
|
|
7
|
+
ptr: unknown;
|
|
8
|
+
constructor(init?: GlyphInit);
|
|
9
|
+
protected createPtr(init: GlyphInit): unknown;
|
|
10
|
+
get index(): number;
|
|
11
|
+
set index(value: number);
|
|
12
|
+
get x(): number;
|
|
13
|
+
set x(value: number);
|
|
14
|
+
get y(): number;
|
|
15
|
+
set y(value: number);
|
|
16
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { alloc, read, write } from "@gtkx/native";
|
|
2
|
+
export class Glyph {
|
|
3
|
+
ptr;
|
|
4
|
+
constructor(init = {}) {
|
|
5
|
+
this.ptr = this.createPtr(init);
|
|
6
|
+
}
|
|
7
|
+
createPtr(init) {
|
|
8
|
+
const ptr = alloc(24, "CairoGlyph", "libcairo-gobject.so.2");
|
|
9
|
+
if (init.index !== undefined)
|
|
10
|
+
write(ptr, { type: "int", size: 64, unsigned: true }, 0, init.index);
|
|
11
|
+
if (init.x !== undefined)
|
|
12
|
+
write(ptr, { type: "float", size: 64 }, 8, init.x);
|
|
13
|
+
if (init.y !== undefined)
|
|
14
|
+
write(ptr, { type: "float", size: 64 }, 16, init.y);
|
|
15
|
+
return ptr;
|
|
16
|
+
}
|
|
17
|
+
get index() {
|
|
18
|
+
return read(this.ptr, { type: "int", size: 64, unsigned: true }, 0);
|
|
19
|
+
}
|
|
20
|
+
set index(value) {
|
|
21
|
+
write(this.ptr, { type: "int", size: 64, unsigned: true }, 0, value);
|
|
22
|
+
}
|
|
23
|
+
get x() {
|
|
24
|
+
return read(this.ptr, { type: "float", size: 64 }, 8);
|
|
25
|
+
}
|
|
26
|
+
set x(value) {
|
|
27
|
+
write(this.ptr, { type: "float", size: 64 }, 8, value);
|
|
28
|
+
}
|
|
29
|
+
get y() {
|
|
30
|
+
return read(this.ptr, { type: "float", size: 64 }, 16);
|
|
31
|
+
}
|
|
32
|
+
set y(value) {
|
|
33
|
+
write(this.ptr, { type: "float", size: 64 }, 16, value);
|
|
34
|
+
}
|
|
35
|
+
}
|