aboutsummaryrefslogtreecommitdiff
path: root/src/ffi.js
diff options
context:
space:
mode:
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;
+}