use openjd_expr::function_library::FunctionLibrary;
use openjd_expr::FormatStringOptions;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub struct SessionLimits {
pub max_resolved_arg_len: Option<usize>,
pub max_resolved_data_len: Option<usize>,
pub max_eval_memory_bytes: Option<usize>,
pub max_eval_operations: Option<usize>,
}
impl From<&openjd_model::CallerLimits> for SessionLimits {
fn from(limits: &openjd_model::CallerLimits) -> Self {
Self {
max_resolved_arg_len: limits.max_resolved_arg_len,
max_resolved_data_len: limits.max_resolved_data_len,
max_eval_memory_bytes: limits.max_eval_memory_bytes,
max_eval_operations: limits.max_eval_operations,
}
}
}
pub(crate) fn fs_options<'a>(
library: Option<&'a FunctionLibrary>,
limits: &SessionLimits,
) -> FormatStringOptions<'a> {
let mut opts = FormatStringOptions::new().with_library(library);
if let Some(m) = limits.max_eval_memory_bytes {
opts = opts.with_memory_limit(m);
}
if let Some(o) = limits.max_eval_operations {
opts = opts.with_operation_limit(o);
}
opts
}