Files
hakorune/plugins/nyash-json-plugin/src/ffi.rs
nyash-codex cdf826cbe7 public: publish selfhost snapshot to public repo (SSOT using + AST merge + JSON VM fixes)
- 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.
2025-09-26 14:34:42 +09:00

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;
}