Files
hakorune/plugins/nyash-json-plugin/src/ffi.rs

25 lines
1.2 KiB
Rust
Raw Normal View History

//! FFI definitions for yyjson C library integration
use std::os::raw::{c_char, c_void};
// External C functions for yyjson provider
extern "C" {
pub fn nyash_json_shim_parse(text: *const c_char, len: usize) -> i32;
pub fn nyjson_parse_doc(text: *const c_char, len: usize, out_err_code: *mut i32) -> *mut c_void;
pub fn nyjson_doc_free(doc: *mut c_void);
pub fn nyjson_doc_root(doc: *mut c_void) -> *mut c_void;
pub fn nyjson_is_null(v: *mut c_void) -> i32;
pub fn nyjson_is_bool(v: *mut c_void) -> i32;
pub fn nyjson_is_int(v: *mut c_void) -> i32;
pub fn nyjson_is_real(v: *mut c_void) -> i32;
pub fn nyjson_is_str(v: *mut c_void) -> i32;
pub fn nyjson_is_arr(v: *mut c_void) -> i32;
pub fn nyjson_is_obj(v: *mut c_void) -> i32;
pub fn nyjson_get_bool_val(v: *mut c_void) -> i32;
pub fn nyjson_get_sint_val(v: *mut c_void) -> i64;
pub fn nyjson_get_str_val(v: *mut c_void) -> *const c_char;
pub fn nyjson_arr_size_val(v: *mut c_void) -> usize;
pub fn nyjson_arr_get_val(v: *mut c_void, idx: usize) -> *mut c_void;
pub fn nyjson_obj_size_val(v: *mut c_void) -> usize;
pub fn nyjson_obj_get_key(v: *mut c_void, key: *const c_char) -> *mut c_void;
}