123use crate::{import::jsonnet_import_callback, native::jsonnet_native_callback};4use jrsonnet_evaluator::{EvaluationState, Val};5use std::{6 ffi::c_void,7 os::raw::{c_char, c_int},8};910extern "C" {11 pub fn _jrsonnet_static_import_callback(12 ctx: *mut c_void,13 base: *const c_char,14 rel: *const c_char,15 found_here: *mut *const c_char,16 success: &mut c_int,17 ) -> *const c_char;1819 #[allow(improper_ctypes)]20 pub fn _jrsonnet_static_native_callback(21 ctx: *const c_void,22 argv: *const *const Val,23 success: *mut c_int,24 ) -> *mut Val;25}262728#[no_mangle]29pub unsafe extern "C" fn jrsonnet_apply_static_import_callback(30 vm: &EvaluationState,31 ctx: *mut c_void,32) {33 jsonnet_import_callback(vm, _jrsonnet_static_import_callback, ctx)34}353637#[no_mangle]38pub unsafe extern "C" fn jrsonnet_apply_static_native_callback(39 vm: &EvaluationState,40 name: *const c_char,41 ctx: *mut c_void,42 raw_params: *const *const c_char,43) {44 jsonnet_native_callback(vm, name, _jrsonnet_static_native_callback, ctx, raw_params)45}4647#[no_mangle]48pub extern "C" fn jrsonnet_set_trace_format(vm: &EvaluationState, format: u8) {49 use jrsonnet_evaluator::trace::JsFormat;50 match format {51 1 => vm.set_trace_format(Box::new(JsFormat)),52 _ => panic!("unknown trace format"),53 }54}