
/*
 * Symbol versioning for libjson-c.
 * All exported symbols must be listed here.
 *
 * See 
 *   https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
 */

/*
 * Symbols in JSONC_PRIVATE are exported for historical
 * reasons, but should not be used outside of json-c.
 */
JSONC_PRIVATE {
    array_list_add;
    array_list_del_idx;
    array_list_free;
    array_list_new;
    array_list_put_idx;
    array_list_set_idx;
    array_list_sort;
    json_hex_chars;
    json_parse_double;
    json_parse_int64;
    json_parse_uint64;
    lh_table_delete;
    lh_table_delete_entry;
    lh_table_delete_entry_to_tail;
    lh_table_free;
    lh_table_insert;
    lh_table_insert_w_hash;
    lh_table_new;
    lh_table_resize;
    mc_debug;
    mc_error;
    mc_get_debug;
    mc_info;
    mc_set_debug;
    mc_set_syslog;
    printbuf_free;
    printbuf_memappend;
    printbuf_memset;
    printbuf_new;
    printbuf_reset;
    sprintbuf;
    # Used by tests:
    _json_c_strerror;
};

JSONC_0.14 {
  global:
    array_list_bsearch;
    array_list_get_idx;
    array_list_length;
    json_c_get_random_seed;
    json_c_object_sizeof;
    json_c_set_serialization_double_format;
    json_c_shallow_copy_default;
    json_c_version;
    json_c_version_num;
    json_c_visit;
    json_global_set_string_hash;
    json_number_chars;
    json_object_array_add;
    json_object_array_bsearch;
    json_object_array_del_idx;
    json_object_array_get_idx;
    json_object_array_length;
    json_object_array_put_idx;
    json_object_array_sort;
    json_object_deep_copy;
    json_object_double_to_json_string;
    json_object_equal;
    json_object_free_userdata;
    json_object_from_fd;
    json_object_from_fd_ex;
    json_object_from_file;
    json_object_get;
    json_object_get_array;
    json_object_get_boolean;
    json_object_get_double;
    json_object_get_int64;
    json_object_get_int;
    json_object_get_object;
    json_object_get_string;
    json_object_get_string_len;
    json_object_get_type;
    json_object_get_uint64;
    json_object_get_userdata;
    json_object_int_inc;
    json_object_is_type;
    json_object_iter_begin;
    json_object_iter_end;
    json_object_iter_equal;
    json_object_iter_init_default;
    json_object_iter_next;
    json_object_iter_peek_name;
    json_object_iter_peek_value;
    json_object_new_array;
    json_object_new_boolean;
    json_object_new_double;
    json_object_new_double_s;
    json_object_new_int64;
    json_object_new_int;
    json_object_new_null;
    json_object_new_object;
    json_object_new_string;
    json_object_new_string_len;
    json_object_new_uint64;
    json_object_object_add;
    json_object_object_add_ex;
    json_object_object_del;
    json_object_object_get;
    json_object_object_get_ex;
    json_object_object_length;
    json_object_put;
    json_object_set_boolean;
    json_object_set_double;
    json_object_set_int64;
    json_object_set_int;
    json_object_set_serializer;
    json_object_set_string;
    json_object_set_string_len;
    json_object_set_uint64;
    json_object_set_userdata;
    json_object_to_fd;
    json_object_to_file;
    json_object_to_file_ext;
    json_object_to_json_string;
    json_object_to_json_string_ext;
    json_object_to_json_string_length;
    json_object_userdata_to_json_string;
    json_pointer_get;
    json_pointer_getf;
    json_pointer_set;
    json_pointer_setf;
    json_tokener_error_desc;
    json_tokener_free;
    json_tokener_get_error;
    json_tokener_get_parse_end;
    json_tokener_new;
    json_tokener_new_ex;
    json_tokener_parse;
    json_tokener_parse_ex;
    json_tokener_parse_verbose;
    json_tokener_reset;
    json_tokener_set_flags;
    json_type_to_name;
    json_util_get_last_err;
    lh_char_equal;
    lh_kchar_table_new;
    lh_kptr_table_new;
    lh_ptr_equal;
    lh_table_length;
    lh_table_lookup_entry;
    lh_table_lookup_entry_w_hash;
    lh_table_lookup_ex;

  local:
    *;
};

JSONC_0.15 {
  global:
    array_list_new2;
    array_list_shrink;
    json_object_array_shrink;
    json_object_new_array_ext;
} JSONC_0.14;

JSONC_0.16 {
# No new symbols in 0.16
} JSONC_0.15;

JSONC_0.17 {
  global:
    json_object_array_insert_idx;
    json_patch_apply;
#    array_list_insert_idx is intentionally not exported
} JSONC_0.16;

JSONC_0.18 {
#  global:
} JSONC_0.17;

JSONC_0.19 {
  global:
    json_pointer_set_with_limit_index;
    json_pointer_set_with_cb;
    json_object_array_put_with_idx_limit_cb;
} JSONC_0.18;
