#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Item {
pub t: Type,
pub w: f32,
pub y: f32,
pub z: f32,
pub p: f32,
pub f: bool,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Type {
Box,
Glue,
Penalty,
}
impl Item {
#[inline]
pub fn new(t: Type, w: f32, y: f32, z: f32, p: f32, f: bool) -> Item {
Item { t: t, w: w, y: y, z: z, p: p, f: f }
}
#[inline]
pub fn new_box(w: f32) -> Item {
Item::new(Type::Box, w, 0.0, 0.0, 0.0, false)
}
#[inline]
pub fn new_glue(w: f32, y: f32, z: f32) -> Item {
Item::new(Type::Glue, w, y, z, 0.0, false)
}
#[inline]
pub fn new_penalty(w: f32, p: f32, f: bool) -> Item {
Item::new(Type::Penalty, w, 0.0, 0.0, p, f)
}
#[inline]
pub fn is_box(&self) -> bool {
self.t == Type::Box
}
#[inline]
pub fn is_glue(&self) -> bool {
self.t == Type::Glue
}
#[inline]
pub fn is_penalty(&self) -> bool {
self.t == Type::Penalty
}
}