//go:build wasm //:build wasm package callback type entry struct { fn interface{} once bool } var table = map[int32]entry{} var nextID int32 = 1 func register(fn interface{}, once bool) (n int32) { id := nextID nextID++ table[id] = entry{fn, once} return id } func lookup(id int32) (interface{}, bool) { e, ok := table[id] if !ok { return nil, false } if e.once { delete(table, id) } return e.fn, true } func Release(id int32) { delete(table, id) } func Register0(fn func()) (n int32) { return register(fn, false) } func Register0Once(fn func()) (n int32) { return register(fn, true) } func RegisterS(fn func(string)) (n int32) { return register(fn, false) } func RegisterSOnce(fn func(string)) (n int32) { return register(fn, true) } func RegisterB(fn func(bool)) (n int32) { return register(fn, false) } func RegisterBOnce(fn func(bool)) (n int32) { return register(fn, true) } func RegisterI(fn func(int32)) (n int32) { return register(fn, false) } func RegisterIOnce(fn func(int32)) (n int32) { return register(fn, true) } func RegisterIS(fn func(int32, string)) (n int32) { return register(fn, false) } func RegisterISOnce(fn func(int32, string)) (n int32) { return register(fn, true) } func RegisterIIS(fn func(int32, int32, string)) (n int32) { return register(fn, false) } func RegisterIISOnce(fn func(int32, int32, string)) (n int32) { return register(fn, true) } func RegisterSS(fn func(string, string)) (n int32) { return register(fn, false) } func RegisterSSOnce(fn func(string, string)) (n int32) { return register(fn, true) } func Register6I(fn func(int32, int32, int32, int32, int32, int32)) (n int32) { return register(fn, false) } func Register6IOnce(fn func(int32, int32, int32, int32, int32, int32)) (n int32) { return register(fn, true) } func RegisterII(fn func(int32, int32)) (n int32) { return register(fn, false) } func RegisterIIOnce(fn func(int32, int32)) (n int32) { return register(fn, true) } func RegisterIII(fn func(int32, int32, int32)) (n int32) { return register(fn, false) } func RegisterIIIOnce(fn func(int32, int32, int32)) (n int32) { return register(fn, true) } func RegisterBytes(fn func([]byte)) (n int32) { return register(fn, false) } func RegisterBytesOnce(fn func([]byte)) (n int32) { return register(fn, true) }