dispatch.myr 470 B

123456789101112131415161718192021222324252627
  1. use std
  2. pkg dispatch =
  3. const register : (cmd: byte[:], f: (params: byte[:][:] -> void) -> void)
  4. const call : (cmd: byte[:], params: byte[:][:] -> bool)
  5. ;;
  6. var tbl : std.htab(byte[:], (params: byte[:][:] -> void))#
  7. const __init__ = {
  8. tbl = std.mkht()
  9. }
  10. const register = {cmd, f
  11. std.htput(tbl, cmd, f)
  12. }
  13. const call = {cmd, params
  14. std.put("disp {} - {}\n",cmd,params)
  15. match std.htget(tbl, cmd)
  16. | `std.Some f:
  17. f(params)
  18. -> true
  19. | `std.None: -> false
  20. ;;
  21. }