---
source: varnish-macros/src/tests.rs
---
mod tuple {
#[allow(non_snake_case, unused_imports, unused_qualifications, unused_variables)]
#[allow(clippy::needless_question_mark, clippy::new_without_default)]
#[automatically_derived]
mod varnish_generated {
use std::ffi::{c_char, c_int, c_uint, c_void, CStr};
use std::ptr::null;
use varnish::ffi::{
VCL_BACKEND, VCL_BLOB, VCL_BOOL, VCL_DURATION, VCL_INT, VCL_IP, VCL_PROBE,
VCL_REAL, VCL_STRING, VCL_TIME, VCL_VOID, VMOD_ABI_Version, VclEvent,
vmod_data, vmod_priv, vrt_ctx, VMOD_PRIV_METHODS_MAGIC, vmod_priv_methods,
};
use varnish::vcl::{Ctx, IntoVCL, PerVclState, Workspace};
use super::*;
static PRIV_TASK_METHODS: vmod_priv_methods = vmod_priv_methods {
magic: VMOD_PRIV_METHODS_MAGIC,
type_: c"PerTask < '_ >".as_ptr(),
fini: Some(vmod_priv::on_fini::<PerTask<'_>>),
};
unsafe extern "C" fn vmod_c_ref_to_slice_lifetime(
__ctx: *mut vrt_ctx,
tsk_vals: *mut vmod_priv,
) -> VCL_STRING {
let mut __ctx = Ctx::from_ptr(__ctx);
let mut __obj_per_task = (*tsk_vals).take();
let mut __call_user_func = || -> Result<_, ::varnish::vcl::VclError> {
Ok(
super::ref_to_slice_lifetime(&mut __obj_per_task)
.into_vcl(&mut __ctx.ws)?,
)
};
let __result = __call_user_func();
if let Some(obj) = __obj_per_task {
(*tsk_vals).put(obj, &PRIV_TASK_METHODS);
}
__result
.unwrap_or_else(|err| {
__ctx.fail(err);
Default::default()
})
}
#[repr(C)]
pub struct VmodExports {
vmod_c_ref_to_slice_lifetime: Option<
unsafe extern "C" fn(
__ctx: *mut vrt_ctx,
tsk_vals: *mut vmod_priv,
) -> VCL_STRING,
>,
}
pub static VMOD_EXPORTS: VmodExports = VmodExports {
vmod_c_ref_to_slice_lifetime: Some(vmod_c_ref_to_slice_lifetime),
};
#[allow(non_upper_case_globals)]
#[no_mangle]
pub static Vmod_tuple_Data: vmod_data = vmod_data {
vrt_major: 0,
vrt_minor: 0,
file_id: c"fd153c857e1a4787114cd9261faa83d258aa10401348fb167822ff1c1467c4f1"
.as_ptr(),
name: c"tuple".as_ptr(),
func_name: c"Vmod_vmod_tuple_Func".as_ptr(),
func_len: ::std::mem::size_of::<VmodExports>() as c_int,
func: &VMOD_EXPORTS as *const _ as *const c_void,
abi: VMOD_ABI_Version.as_ptr(),
json: JSON.as_ptr(),
proto: null(),
vcs: c"".as_ptr(),
version: c"".as_ptr(),
};
const JSON: &CStr = c"(moved to @json.snap files)";
}
use super::PerTask;
pub fn ref_to_slice_lifetime<'a>(
tsk_vals: &mut Option<Box<PerTask<'a>>>,
) -> Option<&'a [u8]> {
tsk_vals.as_ref().as_deref().map(|v| v.data)
}
}