use crate::coordinate_systems::IJ;
pub type Quaternary = u8;
pub const YES: i8 = -1;
pub const NO: i8 = 1;
pub type Flip = i8;
#[derive(Debug, Clone, PartialEq)]
pub struct Anchor {
pub q: Quaternary,
pub offset: IJ,
pub flips: [Flip; 2],
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Orientation {
UV,
VU,
UW,
WU,
VW,
WV,
}
impl std::str::FromStr for Orientation {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"uv" => Ok(Self::UV),
"vu" => Ok(Self::VU),
"uw" => Ok(Self::UW),
"wu" => Ok(Self::WU),
"vw" => Ok(Self::VW),
"wv" => Ok(Self::WV),
_ => Err(format!("Unknown orientation: {}", s)),
}
}
}