use std::fmt;
use il::*;
#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub struct Array {
name: String,
size: u64
}
impl Array {
pub fn new<S>(name: S, size: u64) -> Array where S: Into<String> {
Array {
name: name.into(),
size: size,
}
}
pub fn size(&self) -> u64 {
self.size
}
pub fn name(&self) -> &str {
&self.name
}
}
impl Variable for Array {
fn name(&self) -> &str {
&self.name
}
fn identifier(&self) -> String {
format!("{}[]", self.name)
}
fn multi_var_clone(&self) -> MultiVar {
MultiVar::Array(self.clone())
}
}
impl fmt::Display for Array {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.identifier())
}
}