123use std::{4 ffi::c_void,5 os::raw::{c_char, c_int},6};78use jrsonnet_evaluator::Val;910use crate::{import::jsonnet_import_callback, native::jsonnet_native_callback};1112extern "C" {13 pub fn _jrsonnet_static_import_callback(14 ctx: *mut c_void,15 base: *const c_char,16 rel: *const c_char,17 found_here: *mut *const c_char,18 success: &mut c_int,19 ) -> *const c_char;2021 #[allow(improper_ctypes)]22 pub fn _jrsonnet_static_native_callback(23 ctx: *const c_void,24 argv: *const *const Val,25 success: *mut c_int,26 ) -> *mut Val;27}282930#[no_mangle]31pub unsafe extern "C" fn jrsonnet_apply_static_import_callback(vm: &VM, ctx: *mut c_void) {32 jsonnet_import_callback(vm, _jrsonnet_static_import_callback, ctx)33}343536#[no_mangle]37pub unsafe extern "C" fn jrsonnet_apply_static_native_callback(38 vm: &VM,39 name: *const c_char,40 ctx: *mut c_void,41 raw_params: *const *const c_char,42) {43 jsonnet_native_callback(vm, name, _jrsonnet_static_native_callback, ctx, raw_params)44}4546#[no_mangle]47pub extern "C" fn jrsonnet_set_trace_format(vm: &VM, format: u8) {48 use jrsonnet_evaluator::trace::JsFormat;49 match format {50 1 => vm.set_trace_format(Box::new(JsFormat)),51 _ => panic!("unknown trace format"),52 }53}