use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ExpressionFunction {
#[serde(rename = "ADDITION")]
Addition,
#[serde(rename = "SUBTRACTION")]
Subtraction,
#[serde(rename = "MULTIPLICATION")]
Multiplication,
#[serde(rename = "DIVISION")]
Division,
#[serde(rename = "EQUALS")]
Equals,
#[serde(rename = "NOT_EQUAL")]
NotEqual,
#[serde(rename = "LESS_THAN")]
LessThan,
#[serde(rename = "LESS_THAN_OR_EQUAL")]
LessThanOrEqual,
#[serde(rename = "GREATER_THAN")]
GreaterThan,
#[serde(rename = "GREATER_THAN_OR_EQUAL")]
GreaterThanOrEqual,
#[serde(rename = "AND")]
And,
#[serde(rename = "OR")]
Or,
#[serde(rename = "VAR_MODE_LOOKUP")]
VarModeLookup,
#[serde(rename = "NEGATE")]
Negate,
#[serde(rename = "NOT")]
Not,
}
impl std::fmt::Display for ExpressionFunction {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Addition => write!(f, "ADDITION"),
Self::Subtraction => write!(f, "SUBTRACTION"),
Self::Multiplication => write!(f, "MULTIPLICATION"),
Self::Division => write!(f, "DIVISION"),
Self::Equals => write!(f, "EQUALS"),
Self::NotEqual => write!(f, "NOT_EQUAL"),
Self::LessThan => write!(f, "LESS_THAN"),
Self::LessThanOrEqual => write!(f, "LESS_THAN_OR_EQUAL"),
Self::GreaterThan => write!(f, "GREATER_THAN"),
Self::GreaterThanOrEqual => write!(f, "GREATER_THAN_OR_EQUAL"),
Self::And => write!(f, "AND"),
Self::Or => write!(f, "OR"),
Self::VarModeLookup => write!(f, "VAR_MODE_LOOKUP"),
Self::Negate => write!(f, "NEGATE"),
Self::Not => write!(f, "NOT"),
}
}
}
impl Default for ExpressionFunction {
fn default() -> ExpressionFunction {
Self::Addition
}
}