]> git.eshelyaron.com Git - emacs.git/commit
Implement native JSON support using Jansson
authorPhilipp Stephani <phst@google.com>
Mon, 18 Sep 2017 08:51:39 +0000 (10:51 +0200)
committerPhilipp Stephani <phst@google.com>
Sun, 10 Dec 2017 12:49:08 +0000 (13:49 +0100)
commitab203e36d5f84a99b6d4b04f1a22ba028be750e3
tree660ed9e9cf32973808ace1c5aed572885bafd110
parent402e790ad4cff87d0e40e516a15553c408f12de1
Implement native JSON support using Jansson

* configure.ac: New option --with-json.

* src/json.c (Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): New defuns.
(json_malloc, json_free, json_has_prefix, json_has_suffix)
(json_make_string, json_build_string, json_encode)
(json_out_of_memory, json_parse_error)
(json_release_object, check_string_without_embedded_nulls, json_check)
(lisp_to_json, lisp_to_json_toplevel, lisp_to_json_toplevel_1)
(json_insert, json_insert_callback, json_to_lisp)
(json_read_buffer_callback, Fjson_parse_buffer, define_error): New
helper functions.
(init_json, syms_of_json): New file.

* src/lisp.h: Declaration for init_json and syms_of_json.

* src/emacs.c (main): Enable JSON functions.

* src/eval.c (internal_catch_all, internal_catch_all_1): New helper
functions to catch all signals.
(syms_of_eval): Add uninterned symbol to signify out of memory.

* src/Makefile.in (JSON_LIBS, JSON_CFLAGS, JSON_OBJ, EMACS_CFLAGS)
(base_obj, LIBES): Compile json.c if --with-json is enabled.

* test/src/json-tests.el (json-serialize/roundtrip)
(json-serialize/object, json-parse-string/object)
(json-parse-string/string, json-serialize/string)
(json-parse-string/incomplete, json-parse-string/trailing)
(json-parse-buffer/incomplete, json-parse-buffer/trailing): New unit
tests.

* doc/lispref/text.texi (Parsing JSON): New manual section.
configure.ac
doc/lispref/text.texi
etc/NEWS
src/Makefile.in
src/emacs.c
src/eval.c
src/json.c [new file with mode: 0644]
src/lisp.h
test/src/json-tests.el [new file with mode: 0644]