use super::{iteration_space::IterationSpace, wgsl_code::WgslCode};
use crate::task::task_components::configuration::input_spec::InputSpec;
use crate::task::task_components::configuration::output_spec::OutputSpec;
#[derive(Default)]
pub struct TaskConfiguration {
shader: WgslCode,
iteration_space: IterationSpace,
inputs: InputSpec,
outputs: OutputSpec,
version: u64,
}
impl TaskConfiguration {
pub fn new(
shader: WgslCode,
iteration_space: IterationSpace,
inputs: InputSpec,
outputs: OutputSpec,
) -> Self {
TaskConfiguration {
shader,
iteration_space,
inputs,
outputs,
version: 0,
}
}
pub fn shader(&self) -> &WgslCode {
&self.shader
}
pub fn iteration_space(&self) -> &IterationSpace {
&self.iteration_space
}
pub fn inputs(&self) -> &InputSpec {
&self.inputs
}
pub fn outputs(&self) -> &OutputSpec {
&self.outputs
}
pub fn version(&self) -> u64 {
self.version
}
pub fn outputs_mut(&mut self) -> &mut OutputSpec {
self.version += 1;
&mut self.outputs
}
pub fn _internal_set_iteration_space(&mut self, new_iteration_space: IterationSpace) {
self.version += 1;
self.iteration_space = new_iteration_space;
}
}