123use std::{4 ffi::c_void,5 os::raw::{c_char, c_int},6};78use jrsonnet_evaluator::{EvaluationState, 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(32 vm: &EvaluationState,33 ctx: *mut c_void,34) {35 jsonnet_import_callback(vm, _jrsonnet_static_import_callback, ctx)36}373839#[no_mangle]40pub unsafe extern "C" fn jrsonnet_apply_static_native_callback(41 vm: &EvaluationState,42 name: *const c_char,43 ctx: *mut c_void,44 raw_params: *const *const c_char,45) {46 jsonnet_native_callback(vm, name, _jrsonnet_static_native_callback, ctx, raw_params)47}4849#[no_mangle]50pub extern "C" fn jrsonnet_set_trace_format(vm: &EvaluationState, format: u8) {51 use jrsonnet_evaluator::trace::JsFormat;52 match format {53 1 => vm.set_trace_format(Box::new(JsFormat)),54 _ => panic!("unknown trace format"),55 }56}