Advertisement
Guest User

func_ptr_nim_to_c_1

a guest
Nov 13th, 2015
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 1.51 KB | None | 0 0
  1. const
  2.   uvheader = "uv.h"
  3.  
  4. type
  5.   uv_run_mode* {. size: sizeof(cint) .} = enum
  6.     UV_RUN_DEFAULT = 0, UV_RUN_ONCE, UV_RUN_NOWAIT    
  7.   uv_loop_t* {.pure, final, importc: "uv_loop_t", header: uvheader.} = object
  8.   uv_idle_t* {.pure, final, importc: "uv_idle_t", header: uvheader.} = object
  9.   p_uv_loop_t* = ptr uv_loop_t
  10.   p_uv_idle_t* = ptr uv_idle_t
  11.   uv_idle_cb* {.importc: "uv_idle_cb", header: uvheader.} = (proc(idler: p_uv_idle_t) : void)
  12.  
  13. proc uv_idle_init*(h: p_uv_loop_t, i: p_uv_idle_t): int {.importc: "uv_idle_init", header: uvheader, discardable.}
  14. proc uv_idle_start*(i: p_uv_idle_t, cb: uv_idle_cb): int {.importc: "uv_idle_start", header: uvheader, discardable.}
  15. proc uv_idle_stop*(i: p_uv_idle_t) : int {.importc: "uv_idle_stop", header: uvheader, discardable.}
  16. proc uv_default_loop*() : p_uv_loop_t {.importc: "uv_default_loop", header: uvheader.}
  17. proc uv_loop_init*(loop: p_uv_loop_t) {.importc: "uv_loop_init", header: uvheader.}
  18. proc uv_loop_close*(loop: p_uv_loop_t) {.importc: "uv_loop_close", header: uvheader.}
  19. proc uv_run*(loop: p_uv_loop_t, mode: uv_run_mode = UV_RUN_DEFAULT): int {.importc: "uv_run", header: uvheader, discardable.}
  20.  
  21. proc wait_for_a_while(h: p_uv_idle_t): void =
  22.   var counter {.global.} : int = 0
  23.   counter = counter + 1
  24.   if counter >= 10000:
  25.     echo "done!"
  26.     uv_idle_stop(h)
  27.  
  28. var idle: uv_idle_t
  29. var p_loop = uv_default_loop()
  30. var p_idle = addr idle
  31.  
  32. uv_idle_init(p_loop, p_idle)
  33. uv_idle_start(p_idle, wait_for_a_while)
  34. uv_run(p_loop)
  35. uv_loop_close(p_loop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement