localstorage_wasm.mx raw
1 //go:build wasm
2 //:build wasm
3
4 package localstorage
5
6 import "unsafe"
7
8 //:wasmimport bridge localstorage_get_item
9 func wasmGetItem(kPtr *byte, kLen int32, kCap int32, outPtr *int32, outLen *int32)
10
11 //:wasmimport bridge localstorage_set_item
12 func wasmSetItem(kPtr *byte, kLen int32, kCap int32, vPtr *byte, vLen int32, vCap int32)
13
14 //:wasmimport bridge localstorage_remove_item
15 func wasmRemoveItem(kPtr *byte, kLen int32, kCap int32)
16
17 func GetItem(key string) (s string) {
18 var rPtr, rLen int32
19 wasmGetItem(unsafe.StringData(key), int32(len(key)), int32(len(key)), &rPtr, &rLen)
20 if rLen <= 0 {
21 return ""
22 }
23 return unsafe.String((*byte)(unsafe.Pointer(uintptr(rPtr))), rLen)
24 }
25
26 func SetItem(key, value string) {
27 wasmSetItem(
28 unsafe.StringData(key), int32(len(key)), int32(len(key)),
29 unsafe.StringData(value), int32(len(value)), int32(len(value)),
30 )
31 }
32
33 func RemoveItem(key string) {
34 wasmRemoveItem(unsafe.StringData(key), int32(len(key)), int32(len(key)))
35 }
36