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