1#[derive(Clone, Copy, Debug, PartialEq)]
5pub struct Item {
6 pub t: Type,
8 pub w: f32,
10 pub y: f32,
12 pub z: f32,
14 pub p: f32,
16 pub f: bool,
18}
19
20#[derive(Clone, Copy, Debug, Eq, PartialEq)]
22pub enum Type {
23 Box,
25 Glue,
27 Penalty,
29}
30
31impl Item {
32 #[inline]
34 pub fn new(t: Type, w: f32, y: f32, z: f32, p: f32, f: bool) -> Item {
35 Item { t: t, w: w, y: y, z: z, p: p, f: f }
36 }
37
38 #[inline]
40 pub fn new_box(w: f32) -> Item {
41 Item::new(Type::Box, w, 0.0, 0.0, 0.0, false)
42 }
43
44 #[inline]
46 pub fn new_glue(w: f32, y: f32, z: f32) -> Item {
47 Item::new(Type::Glue, w, y, z, 0.0, false)
48 }
49
50 #[inline]
52 pub fn new_penalty(w: f32, p: f32, f: bool) -> Item {
53 Item::new(Type::Penalty, w, 0.0, 0.0, p, f)
54 }
55
56 #[inline]
58 pub fn is_box(&self) -> bool {
59 self.t == Type::Box
60 }
61
62 #[inline]
64 pub fn is_glue(&self) -> bool {
65 self.t == Type::Glue
66 }
67
68 #[inline]
70 pub fn is_penalty(&self) -> bool {
71 self.t == Type::Penalty
72 }
73}