Adding getItem/setItem web bindings.

This commit is contained in:
Brad Nelson
2022-11-14 21:26:23 -08:00
parent 9090fc4776
commit 1baa1aa76c

View File

@ -78,6 +78,14 @@ if (!globalObj.write) {
} }
}, 50); }, 50);
context.GetRawString = function(addr, len) {
var data = '';
for (var i = 0; i < len; ++i) {
data += String.fromCharCode(u8[addr + i]);
}
return data;
};
context.terminal = document.createElement('div'); context.terminal = document.createElement('div');
context.terminal.style.width = '100%'; context.terminal.style.width = '100%';
context.terminal.style.whiteSpace = 'pre-wrap'; context.terminal.style.whiteSpace = 'pre-wrap';
@ -702,6 +710,54 @@ r|
}) })
| 19 jseval! | 19 jseval!
r|
(function(sp) {
var session = i32[sp>>2]; sp -= 4;
var key_len = i32[sp>>2]; sp -= 4;
var key = i32[sp>>2]; sp -= 4;
var value_len = i32[sp>>2]; sp -= 4;
var value = i32[sp>>2]; sp -= 4;
if (globalObj.write) {
return sp;
}
if (session) {
sessionStorage.setItem(context.GetRawString(key, key_len),
context.GetRawString(value, value_len));
} else {
localStorage.setItem(context.GetRawString(key, key_len),
context.GetRawString(value, value_len));
}
return sp;
})
| 20 jseval!
r|
(function(sp) {
var session = i32[sp>>2]; sp -= 4;
var key_len = i32[sp>>2]; sp -= 4;
var key = i32[sp>>2]; sp -= 4;
var dst_limit = i32[sp>>2]; sp -= 4;
var dst = i32[sp>>2]; sp -= 4;
if (globalObj.write) {
return sp;
}
if (session) {
var data = sessionStorage.getItem(context.GetRawString(key, key_len));
} else {
var data = localStorage.getItem(context.GetRawString(key, key_len));
}
if (data === null) {
sp += 4; i32[sp>>2] = -1;
return sp;
}
for (var i = 0; i < dst_limit && i < data.length; ++i) {
u8[dst + i] = data.charCodeAt(i);
}
sp += 4; i32[sp>>2] = data.length;
return sp;
})
| 21 jseval!
forth definitions web forth definitions web
: bye 0 terminate ; : bye 0 terminate ;
@ -725,5 +781,7 @@ $ffffff value color
: gpush 17 call ; : gpush 17 call ;
: gpop 18 call ; : gpop 18 call ;
: smooth ( f -- ) 19 call ; : smooth ( f -- ) 19 call ;
: setItem ( a n a n sess -- ) 20 call ;
: getItem ( a n a n sess -- n ) 21 call ;
forth definitions forth definitions