Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

61 Zeilen
1.4 KiB

  1. // This file is part of Jiffy released under the MIT license.
  2. // See the LICENSE file for more information.
  3. #include "jiffy.h"
  4. static int
  5. load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info)
  6. {
  7. jiffy_st* st = enif_alloc(sizeof(jiffy_st));
  8. if(st == NULL) {
  9. return 1;
  10. }
  11. st->atom_ok = make_atom(env, "ok");
  12. st->atom_error = make_atom(env, "error");
  13. st->atom_null = make_atom(env, "null");
  14. st->atom_true = make_atom(env, "true");
  15. st->atom_false = make_atom(env, "false");
  16. st->atom_bignum = make_atom(env, "bignum");
  17. st->atom_bignum_e = make_atom(env, "bignum_e");
  18. st->atom_bigdbl = make_atom(env, "bigdbl");
  19. st->atom_partial = make_atom(env, "partial");
  20. st->atom_uescape = make_atom(env, "uescape");
  21. st->atom_pretty = make_atom(env, "pretty");
  22. // Markers used in encoding
  23. st->ref_object = make_atom(env, "$object_ref$");
  24. st->ref_array = make_atom(env, "$array_ref$");
  25. *priv = (void*) st;
  26. return 0;
  27. }
  28. static int
  29. reload(ErlNifEnv* env, void** priv, ERL_NIF_TERM info)
  30. {
  31. return 0;
  32. }
  33. static int
  34. upgrade(ErlNifEnv* env, void** priv, void** old_priv, ERL_NIF_TERM info)
  35. {
  36. *priv = *old_priv;
  37. return 0;
  38. }
  39. static void
  40. unload(ErlNifEnv* env, void* priv)
  41. {
  42. enif_free(priv);
  43. return;
  44. }
  45. static ErlNifFunc funcs[] =
  46. {
  47. {"nif_decode", 1, decode},
  48. {"nif_encode", 2, encode}
  49. };
  50. ERL_NIF_INIT(jiffy, funcs, &load, &reload, &upgrade, &unload);