use crate::{
builtins::registry::{BuiltinDemandArg, BuiltinId},
builtins::BuiltinMethod,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ChainOp {
Builtin {
id: BuiltinId,
demand_arg: BuiltinDemandArg,
},
Match {
role: MatchRole,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MatchRole {
Predicate,
Transform,
#[allow(dead_code)]
Multi,
}
impl ChainOp {
pub fn builtin(method: BuiltinMethod) -> Self {
Self::Builtin {
id: BuiltinId::from_method(method),
demand_arg: BuiltinDemandArg::None,
}
}
pub fn builtin_usize(method: BuiltinMethod, n: usize) -> Self {
Self::Builtin {
id: BuiltinId::from_method(method),
demand_arg: BuiltinDemandArg::Usize(n),
}
}
pub fn match_role(role: MatchRole) -> Self {
Self::Match { role }
}
}