1#![allow(missing_copy_implementations)]
2
3use std::collections::HashMap;
4
5pub struct Content {
7 pub attributes: HashMap<String, usize>,
9 pub graphs: Vec<Graph>,
11 pub tables: Vec<Table>,
13}
14
15pub struct Graph {
17 pub name: String,
19 pub id: usize,
21 pub attributes: HashMap<String, usize>,
23 pub tasks: Vec<Task>,
25 pub arcs: Vec<Arc>,
27 pub deadlines: Vec<Deadline>,
29}
30
31pub struct Task {
33 pub id: usize,
35 pub kind: usize,
37}
38
39pub struct Arc {
41 pub id: usize,
43 pub from: usize,
45 pub to: usize,
47 pub kind: usize,
49}
50
51pub struct Deadline {
53 pub id: usize,
55 pub on: usize,
57 pub at: usize,
59}
60
61pub struct Table {
63 pub name: String,
65 pub id: usize,
67 pub attributes: HashMap<String, f64>,
69 pub columns: Vec<Column>,
71}
72
73pub struct Column {
75 pub name: String,
77 pub data: Vec<f64>,
79}
80
81#[inline]
82pub fn new() -> Content {
83 Content {
84 attributes: HashMap::new(),
85 graphs: Vec::new(),
86 tables: Vec::new(),
87 }
88}
89
90#[inline]
91pub fn new_graph(name: String, id: usize) -> Graph {
92 Graph {
93 name: name,
94 id: id,
95 attributes: HashMap::new(),
96 tasks: Vec::new(),
97 arcs: Vec::new(),
98 deadlines: Vec::new(),
99 }
100}
101
102#[inline]
103pub fn new_task(id: usize, kind: usize) -> Task {
104 Task { id: id, kind: kind }
105}
106
107#[inline]
108pub fn new_arc(id: usize, from: usize, to: usize, kind: usize) -> Arc {
109 Arc { id: id, from: from, to: to, kind: kind }
110}
111
112#[inline]
113pub fn new_deadline(id: usize, on: usize, at: usize) -> Deadline {
114 Deadline { id: id, on: on, at: at }
115}
116
117#[inline]
118pub fn new_table(name: String, id: usize) -> Table {
119 Table {
120 name: name,
121 id: id,
122 attributes: HashMap::new(),
123 columns: Vec::new(),
124 }
125}
126
127#[inline]
128pub fn new_column(name: String) -> Column {
129 Column { name: name, data: vec![] }
130}