git.delta.rocks / jrsonnet / refs/commits / 41db4d558ad2

difftreelog

refactor(libjsonnet) move to split stdlib

Yaroslav Bolyukin2022-07-23parent: #dde7eda.patch.diff
in: master

5 files changed

modifiedbindings/jsonnet/Cargo.tomldiffbeforeafterboth
10[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" }
1415
15[lib]16[lib]
modifiedbindings/jsonnet/src/lib.rsdiffbeforeafterboth
31#[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}
3839
39/// # Safety40/// # Safety
40#[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}
4546
46#[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}
9798
98#[no_mangle]99#[no_mangle]
modifiedbindings/jsonnet/src/native.rsdiffbeforeafterboth
73 raw_params = raw_params.offset(1);73 raw_params = raw_params.offset(1);
74 }74 }
7575
76 let any_resolver = vm.context_initializer();
77 any_resolver
78 .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(
modifiedbindings/jsonnet/src/val_extract.rsdiffbeforeafterboth
10#[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}
modifiedbindings/jsonnet/src/vars_tlas.rsdiffbeforeafterboth
10 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);
12
13 let any_resolver = vm.context_initializer();
14 any_resolver
15 .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);
29
30 let any_resolver = vm.context_initializer();
31 any_resolver
32 .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