- SSOT using profiles (aliases/packages via nyash.toml), AST prelude merge - Parser/member guards; Builder pin/PHI and instance→function rewrite (dev on) - VM refactors (handlers split) and JSON roundtrip/nested stabilization - CURRENT_TASK.md updated with scope and acceptance criteria Notes: dev-only guards remain togglable via env; no default behavior changes for prod.
27 lines
1.2 KiB
Rust
27 lines
1.2 KiB
Rust
//! 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;
|
|
}
|