--- a/bindings/jsonnet/src/native.rs +++ b/bindings/jsonnet/src/native.rs @@ -21,35 +21,5 @@ ctx: *const c_void, mut raw_params: *const *const c_char, ) { - let name = CStr::from_ptr(name).to_str().expect("utf8 name").into(); - let mut params = Vec::new(); - loop { - if (*raw_params).is_null() { - break; - } - let param = CStr::from_ptr(*raw_params).to_str().expect("not utf8"); - params.push(Param(param.into(), None)); - raw_params = raw_params.offset(1); - } - let params = ParamsDesc(Rc::new(params)); - - vm.add_native( - name, - Rc::new(NativeCallback::new(params, move |_caller, args| { - let mut n_args = Vec::new(); - for a in args { - n_args.push(Some(Box::new(a.clone()))); - } - n_args.push(None); - let mut success = 1; - let v = cb(ctx, &n_args as *const _ as *const *const Val, &mut success); - let v = *Box::from_raw(v); - if success == 1 { - Ok(v) - } else { - let e = v.try_cast_str("native error").expect("error msg"); - Err(Error::RuntimeError(e).into()) - } - })), - ) + todo!() } --- a/bindings/jsonnet/src/val_make.rs +++ b/bindings/jsonnet/src/val_make.rs @@ -38,7 +38,7 @@ #[no_mangle] pub extern "C" fn jsonnet_json_make_array(_vm: &EvaluationState) -> *mut Val { - Box::into_raw(Box::new(Val::Arr(ArrValue::Eager(Rc::new(Vec::new()))))) + todo!() } #[no_mangle] --- a/bindings/jsonnet/src/val_modify.rs +++ b/bindings/jsonnet/src/val_modify.rs @@ -2,9 +2,9 @@ //! Only tested with variables, which haven't altered by code before appearing here //! In jrsonnet every value is immutable, and this code is probally broken -use jrsonnet_evaluator::{ArrValue, EvaluationState, LazyBinding, LazyVal, ObjMember, Val}; +use jrsonnet_evaluator::{EvaluationState, LazyBinding, LazyVal, ObjMember, Val}; use jrsonnet_parser::Visibility; -use std::{ffi::CStr, os::raw::c_char, rc::Rc}; +use std::{ffi::CStr, os::raw::c_char}; /// # Safety /// @@ -22,7 +22,8 @@ new.push(item); } new.push(LazyVal::new_resolved(val.clone())); - *arr = Val::Arr(ArrValue::Lazy(Rc::new(new))); + // *arr = Val::Arr(ArrValue::Lazy(Gc::new(new))); + todo!() } _ => panic!("should receive array"), }