use serde::Deserialize;
use std::fmt::{Display, Error, Formatter};
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Rewrite {
AsIs,
Instantiated,
HeadNormal,
Simplified,
Normalised,
}
impl Default for Rewrite {
fn default() -> Self {
Rewrite::Simplified
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum ComputeMode {
DefaultCompute,
IgnoreAbstract,
UseShowInstance,
}
impl Default for ComputeMode {
fn default() -> Self {
ComputeMode::DefaultCompute
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Comparison {
CmpEq,
CmpLeq,
}
impl Display for Comparison {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
f.write_str(match self {
Comparison::CmpEq => "==",
Comparison::CmpLeq => "<=",
})
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum CompareDirection {
DirEq,
DirLeq,
DirGeq,
}
impl From<Comparison> for CompareDirection {
fn from(from: Comparison) -> Self {
match from {
Comparison::CmpEq => CompareDirection::DirEq,
Comparison::CmpLeq => CompareDirection::DirLeq,
}
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Polarity {
Covariant,
Contravariant,
Invariant,
Nonvariant,
}
impl Display for Polarity {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
f.write_str(match self {
Polarity::Covariant => "+",
Polarity::Contravariant => "-",
Polarity::Invariant => "*",
Polarity::Nonvariant => "_",
})
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum UseForce {
WithForce,
WithoutForce,
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Remove {
Remove,
Keep,
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum TokenBased {
TokenBased,
NotOnlyTokenBased,
}
impl Default for TokenBased {
fn default() -> Self {
TokenBased::NotOnlyTokenBased
}
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Hiding {
YesOverlap,
NoOverlap,
Hidden,
NotHidden,
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Relevance {
Relevant,
NonStrict,
Irrelevant,
}
#[derive(Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub enum Cohesion {
Flat,
Continuous,
Sharp,
Squash,
}