aboutsummaryrefslogtreecommitdiffstats
path: root/src/document_tree
diff options
context:
space:
mode:
authorPhil Schaf2015-11-14 22:18:42 +0100
committerPhil Schaf2015-11-14 22:18:42 +0100
commitd3c3b98b43713a66111994c81bbf5c12776ad39f (patch)
treeeac418164c744726c3b9aa70901626e1e1439ee8 /src/document_tree
parent7638986b092e4276ecf25e49633618c5f5a9c4af (diff)
downloadrust-rst-d3c3b98b43713a66111994c81bbf5c12776ad39f.tar.bz2
added mutable interfaces
Diffstat (limited to 'src/document_tree')
-rw-r--r--src/document_tree/elements.rs35
-rw-r--r--src/document_tree/extra_attributes.rs3
2 files changed, 24 insertions, 14 deletions
diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs
index 2cfd3d4..f1a9b43 100644
--- a/src/document_tree/elements.rs
+++ b/src/document_tree/elements.rs
@@ -9,19 +9,23 @@ use super::element_categories::*;
//-----------------\\
pub trait Element {
- fn ids(&self) -> &Vec<String>;
- fn names(&self) -> &Vec<String>;
- fn source(&self) -> &Option<Url>;
- fn classes(&self) -> &Vec<String>;
+ fn ids (& self) -> & Vec<String>;
+ fn ids_mut(&mut self) -> &mut Vec<String>;
+ fn names (& self) -> & Vec<String>;
+ fn names_mut(&mut self) -> &mut Vec<String>;
+ fn source (& self) -> & Option<Url>;
+ fn source_mut(&mut self) -> &mut Option<Url>;
+ fn classes (& self) -> & Vec<String>;
+ fn classes_mut(&mut self) -> &mut Vec<String>;
}
#[derive(Default,Debug)]
pub struct CommonAttributes {
- ids: Vec<String>,
- names: Vec<String>,
- //left out dupnames
- source: Option<Url>,
+ ids: Vec<String>,
+ names: Vec<String>,
+ source: Option<Url>,
classes: Vec<String>,
+ //left out dupnames
}
//----\\
@@ -30,10 +34,14 @@ pub struct CommonAttributes {
macro_rules! impl_element(($name:ident) => {
impl Element for $name {
- fn ids(&self) -> &Vec<String> { &self.common.ids }
- fn names(&self) -> &Vec<String> { &self.common.names }
- fn source(&self) -> &Option<Url> { &self.common.source }
- fn classes(&self) -> &Vec<String> { &self.common.classes }
+ fn ids (& self) -> & Vec<String> { & self.common.ids }
+ fn ids_mut(&mut self) -> &mut Vec<String> { &mut self.common.ids }
+ fn names (& self) -> & Vec<String> { & self.common.names }
+ fn names_mut(&mut self) -> &mut Vec<String> { &mut self.common.names }
+ fn source (& self) -> & Option<Url> { & self.common.source }
+ fn source_mut(&mut self) -> &mut Option<Url> { &mut self.common.source }
+ fn classes (& self) -> & Vec<String> { & self.common.classes }
+ fn classes_mut(&mut self) -> &mut Vec<String> { &mut self.common.classes }
}
});
@@ -46,7 +54,8 @@ macro_rules! impl_children(($name:ident, $childtype:ident) => {
macro_rules! impl_extra(($name:ident) => {
impl ExtraAttributes<extra_attributes::$name> for $name {
- fn extra(&self) -> &extra_attributes::$name { &self.extra }
+ fn extra (& self) -> & extra_attributes::$name { & self.extra }
+ fn extra_mut(&mut self) -> &mut extra_attributes::$name { &mut self.extra }
}
});
diff --git a/src/document_tree/extra_attributes.rs b/src/document_tree/extra_attributes.rs
index 2141469..16e261f 100644
--- a/src/document_tree/extra_attributes.rs
+++ b/src/document_tree/extra_attributes.rs
@@ -3,7 +3,8 @@ use url::Url;
use super::attribute_types::{FixedSpace,ID,NameToken,AlignHV,AlignH,Measure,EnumeratedListType};
pub trait ExtraAttributes<A> {
- fn extra(&self) -> &A;
+ fn extra (& self) -> & A;
+ fn extra_mut(&mut self) -> &mut A;
}
#[derive(Default,Debug)] pub struct Address { pub space: FixedSpace }