• Philipp Stephani's avatar
    Implement native JSON support using Jansson · ab203e36
    Philipp Stephani authored
    * 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.
    ab203e36
NEWS 6.27 KB