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