use std::collections::HashMap;
pub struct BasicState {
flags: HashMap<String, bool>,
values: HashMap<String, i32>,
}
pub trait BaseState {
fn new() -> Self where Self: Sized;
fn clear(&mut self);
fn set_flag(&mut self, name: String, value: bool);
fn get_flag(&self, name: String) -> bool;
fn set_value(&mut self, name: String, value: i32);
fn get_value(&self, name: String) -> i32;
}
impl BaseState for BasicState {
fn new() -> BasicState {
BasicState {
flags: HashMap::new(),
values: HashMap::new(),
}
}
fn clear(&mut self) {
self.flags.clear();
self.values.clear();
}
fn set_flag(&mut self, name: String, value: bool) {
self.flags.insert(name, value);
}
fn get_flag(&self, name: String) -> bool {
let val = match self.flags.get(&name) {
Some(s) => { s.clone() },
None => { false }
};
return val;
}
fn set_value(&mut self, name: String, value: i32) {
self.values.insert(name, value);
}
fn get_value(&self, name: String) -> i32 {
let val = match self.values.get(&name) {
Some(s) => { s.clone() },
None => { 0 }
};
return val;
}
}