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