use crate::core::variable::ManifoldVariable;
pub(crate) fn expect_block_sizes(
variables: &[&dyn ManifoldVariable],
expected: &[usize],
message: &str,
) -> Result<(), String> {
if variables.len() != expected.len() {
return Err(format!(
"{message} — got {} blocks, expected {}",
variables.len(),
expected.len()
));
}
for (index, (variable, &want)) in variables.iter().zip(expected).enumerate() {
let got = variable.as_param_slice().len();
if got != want {
return Err(format!(
"{message} — block {index} has {got} parameters, expected {want}"
));
}
}
Ok(())
}
pub(crate) fn expect_uniform_blocks(
variables: &[&dyn ManifoldVariable],
count: usize,
size: usize,
message: &str,
) -> Result<(), String> {
expect_block_sizes(variables, &vec![size; count], message)
}