Skip to content

Instantly share code, notes, and snippets.

@pauldub
Forked from anonymous/-
Created August 15, 2014 16:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pauldub/efe4c4adf2820915ade7 to your computer and use it in GitHub Desktop.
Save pauldub/efe4c4adf2820915ade7 to your computer and use it in GitHub Desktop.
type
TR3Node {.importc: "node", header: "<r3/r3.h>".} = object
data: pointer
proc r3_tree_create(size: int): ptr TR3Node
{.importc, dynlib: "libr3.so"}
proc r3_tree_insert_path(node: ptr TR3Node, path: cstring, data: pointer)
{.importc, header: "<r3/r3.h>".}
proc r3_tree_compile(node: ptr TR3Node, err: ptr cstring): int
{.importc, dynlib: "libr3.so".}
proc r3_tree_dump(node: ptr TR3Node, depth: int)
{.importc, dynlib: "libr3.so".}
proc r3_tree_match(node: ptr TR3Node, path: cstring, entry: ptr object): ptr TR3Node
{.importc, header: "<r3/r3.h>".}
let n = r3_tree_create(10)
var
callback = proc () =
echo "called"
r3_tree_insert_path(n, "/users/{id}", addr(callback))
var errstr: ptr cstring
let err = r3_tree_compile(n, errstr)
if err != 0:
echo errstr[]
r3_tree_dump(n, 0)
var node = r3_tree_match(n, "/users/1", nil)
if node != nil:
var cb: ref proc () = cast[ref proc ()](node.data)
cb[]()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment