difftreelog
refactor(libjsonnet) move to split stdlib
in: master
5 files changed
bindings/jsonnet/Cargo.tomldiffbeforeafterboth10[dependencies]10[dependencies]11jrsonnet-evaluator = { path = "../../crates/jrsonnet-evaluator", version = "0.4.2" }11jrsonnet-evaluator = { path = "../../crates/jrsonnet-evaluator", version = "0.4.2" }12jrsonnet-parser = { path = "../../crates/jrsonnet-parser", version = "0.4.2" }12jrsonnet-parser = { path = "../../crates/jrsonnet-parser", version = "0.4.2" }13jrsonnet-stdlib = { path = "../../crates/jrsonnet-stdlib", version = "0.4.2" }13jrsonnet-gcmodule = { version = "0.3.4" }14jrsonnet-gcmodule = { version = "0.3.4" }141515[lib]16[lib]bindings/jsonnet/src/lib.rsdiffbeforeafterboth31#[no_mangle]31#[no_mangle]32pub extern "C" fn jsonnet_make() -> *mut State {32pub extern "C" fn jsonnet_make() -> *mut State {33 let state = State::default();33 let state = State::default();34 state.with_stdlib();35 state.settings_mut().import_resolver = Box::new(NativeImportResolver::default());34 state.settings_mut().import_resolver = Box::new(NativeImportResolver::default());35 state.settings_mut().context_initializer =36 Box::new(jrsonnet_stdlib::ContextInitializer::new(state.clone()));36 Box::into_raw(Box::new(state))37 Box::into_raw(Box::new(state))37}38}383939/// # Safety40/// # Safety40#[no_mangle]41#[no_mangle]41#[allow(clippy::boxed_local)]42#[allow(clippy::boxed_local)]42pub unsafe extern "C" fn jsonnet_destroy(vm: *mut State) {43pub unsafe extern "C" fn jsonnet_destroy(vm: *mut State) {43 Box::from_raw(vm);44 drop(Box::from_raw(vm));44}45}454646#[no_mangle]47#[no_mangle]92#[no_mangle]93#[no_mangle]93#[allow(clippy::boxed_local)]94#[allow(clippy::boxed_local)]94pub unsafe extern "C" fn jsonnet_json_destroy(_vm: &State, v: *mut Val) {95pub unsafe extern "C" fn jsonnet_json_destroy(_vm: &State, v: *mut Val) {95 Box::from_raw(v);96 drop(Box::from_raw(v));96}97}979898#[no_mangle]99#[no_mangle]bindings/jsonnet/src/native.rsdiffbeforeafterboth73 raw_params = raw_params.offset(1);73 raw_params = raw_params.offset(1);74 }74 }757576 let any_resolver = vm.context_initializer();77 any_resolver78 .as_any()79 .downcast_ref::<jrsonnet_stdlib::ContextInitializer>()80 .expect("only stdlib context initializer supported")76 vm.add_native(81 .add_native(77 name,82 name,78 #[allow(deprecated)]83 #[allow(deprecated)]79 Cc::new(tb!(NativeCallback::new(84 Cc::new(tb!(NativeCallback::new(bindings/jsonnet/src/val_extract.rsdiffbeforeafterboth10#[no_mangle]10#[no_mangle]11pub extern "C" fn jsonnet_json_extract_string(_vm: &State, v: &Val) -> *mut c_char {11pub extern "C" fn jsonnet_json_extract_string(_vm: &State, v: &Val) -> *mut c_char {12 match v {12 match v {13 Val::Str(s) => CString::new(&*s as &str).unwrap().into_raw(),13 Val::Str(s) => CString::new(s as &str).unwrap().into_raw(),14 _ => std::ptr::null_mut(),14 _ => std::ptr::null_mut(),15 }15 }16}16}bindings/jsonnet/src/vars_tlas.rsdiffbeforeafterboth10 let name = CStr::from_ptr(name);10 let name = CStr::from_ptr(name);11 let value = CStr::from_ptr(value);11 let value = CStr::from_ptr(value);1213 let any_resolver = vm.context_initializer();14 any_resolver15 .as_any()16 .downcast_ref::<jrsonnet_stdlib::ContextInitializer>()17 .expect("only stdlib context initializer supported")12 vm.add_ext_str(18 .add_ext_str(13 name.to_str().unwrap().into(),19 name.to_str().unwrap().into(),14 value.to_str().unwrap().into(),20 value.to_str().unwrap().into(),15 )21 )21 let name = CStr::from_ptr(name);27 let name = CStr::from_ptr(name);22 let value = CStr::from_ptr(value);28 let value = CStr::from_ptr(value);2930 let any_resolver = vm.context_initializer();31 any_resolver32 .as_any()33 .downcast_ref::<jrsonnet_stdlib::ContextInitializer>()34 .expect("only stdlib context initializer supported")23 vm.add_ext_code(name.to_str().unwrap(), value.to_str().unwrap().into())35 .add_ext_code(name.to_str().unwrap(), value.to_str().unwrap().into())24 .unwrap()36 .unwrap()25}37}26/// # Safety38/// # Safety