aboutsummaryrefslogtreecommitdiff
path: root/src/ffi.js
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2021-08-29 18:44:55 +0100
committerLouis Pilfold <louis@lpil.uk>2021-08-29 18:44:55 +0100
commite57c18156cf11aaeae89e66828811c9fcc42fa81 (patch)
tree4a5ceb7226481ed676f39e325bb359bcf98482ea /src/ffi.js
parent30e5e540ab4edf6582ae77f9440044e22d6d197e (diff)
downloadjavascript-e57c18156cf11aaeae89e66828811c9fcc42fa81.tar.gz
javascript-e57c18156cf11aaeae89e66828811c9fcc42fa81.zip
Mutable references
Diffstat (limited to 'src/ffi.js')
-rw-r--r--src/ffi.js20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ffi.js b/src/ffi.js
index d3ee8ce..d7b6bf9 100644
--- a/src/ffi.js
+++ b/src/ffi.js
@@ -98,3 +98,23 @@ export function map_promise(promise, fn) {
export function rescue(promise, fn) {
return promise.catch((error) => fn(error));
}
+
+class Reference {
+ constructor(value) {
+ this.value = value;
+ }
+}
+
+export function dereference(reference) {
+ return reference.value;
+}
+
+export function make_reference(value) {
+ return new Reference(value);
+}
+
+export function set_reference(ref, value) {
+ let previous = ref.value;
+ ref.value = value;
+ return previous;
+}