#![allow(missing_docs)]
use std::borrow::Cow;
use wick_interface_types::Field;
use crate::config::components::OperationConfig;
#[derive(Debug, derive_builder::Builder, Clone, property::Property, serde::Serialize)]
#[property(get(disable), set(private), mut(disable))]
#[builder(setter(into))]
pub struct OperationDefinition {
pub(crate) name: String,
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) config: Vec<Field>,
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) inputs: Vec<Field>,
#[builder(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub(crate) outputs: Vec<Field>,
}
impl OperationConfig for OperationDefinition {
fn name(&self) -> &str {
&self.name
}
fn inputs(&self) -> Cow<Vec<Field>> {
Cow::Borrowed(&self.inputs)
}
fn outputs(&self) -> Cow<Vec<Field>> {
Cow::Borrowed(&self.outputs)
}
}