Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

53 linhas
1.1 KiB

  1. #include "jiffy.h"
  2. static int
  3. load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info)
  4. {
  5. jiffy_st* st = enif_alloc(sizeof(jiffy_st));
  6. if(st == NULL) {
  7. return 1;
  8. }
  9. st->atom_ok = make_atom(env, "ok");
  10. st->atom_error = make_atom(env, "error");
  11. st->atom_null = make_atom(env, "null");
  12. st->atom_true = make_atom(env, "true");
  13. st->atom_false = make_atom(env, "false");
  14. st->atom_bignum = make_atom(env, "bignum");
  15. // Markers used in encoding
  16. st->ref_object = make_atom(env, "$object_ref$");
  17. st->ref_array = make_atom(env, "$array_ref$");
  18. *priv = (void*) st;
  19. return 0;
  20. }
  21. static int
  22. reload(ErlNifEnv* env, void** priv, ERL_NIF_TERM info)
  23. {
  24. return 0;
  25. }
  26. static int
  27. upgrade(ErlNifEnv* env, void** priv, void** old_priv, ERL_NIF_TERM info)
  28. {
  29. *priv = *old_priv;
  30. return 0;
  31. }
  32. static void
  33. unload(ErlNifEnv* env, void* priv)
  34. {
  35. enif_free(priv);
  36. return;
  37. }
  38. static ErlNifFunc funcs[] =
  39. {
  40. {"nif_decode", 1, decode},
  41. {"nif_encode", 1, encode}
  42. };
  43. ERL_NIF_INIT(jiffy, funcs, &load, &reload, &upgrade, &unload);