git.delta.rocks / jrsonnet / refs/commits / 2c370b494610

difftreelog

source

bindings/jsonnet/src/val_extract.rs820 Bsourcehistory
1//! Extract values from VM23use std::{4	ffi::CString,5	os::raw::{c_char, c_double, c_int},6};78use jrsonnet_evaluator::{State, Val};910#[no_mangle]11pub extern "C" fn jsonnet_json_extract_string(_vm: &State, v: &Val) -> *mut c_char {12	match v {13		Val::Str(s) => CString::new(&*s as &str).unwrap().into_raw(),14		_ => std::ptr::null_mut(),15	}16}17#[no_mangle]18pub extern "C" fn jsonnet_json_extract_number(_vm: &State, v: &Val, out: &mut c_double) -> c_int {19	match v {20		Val::Num(n) => {21			*out = *n;22			123		}24		_ => 0,25	}26}27#[no_mangle]28pub extern "C" fn jsonnet_json_extract_bool(_vm: &State, v: &Val) -> c_int {29	match v {30		Val::Bool(false) => 0,31		Val::Bool(true) => 1,32		_ => 2,33	}34}35#[no_mangle]36pub extern "C" fn jsonnet_json_extract_null(_vm: &State, v: &Val) -> c_int {37	match v {38		Val::Null => 1,39		_ => 0,40	}41}