mirror of
https://github.com/servo/servo.git
synced 2025-07-22 14:53:49 +01:00
Make Node and Element rare_data an Option
This commit is contained in:
parent
f6069630d2
commit
6bf1ca20a2
8 changed files with 181 additions and 120 deletions
|
@ -632,3 +632,33 @@ macro_rules! handle_potential_webgl_error {
|
|||
handle_potential_webgl_error!($context, $call, ());
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! impl_rare_data (
|
||||
($type:ty) => (
|
||||
fn init_rare_data(&self) {
|
||||
let mut rare_data = self.rare_data.borrow_mut();
|
||||
if rare_data.is_none() {
|
||||
*rare_data = Some(Default::default());
|
||||
}
|
||||
}
|
||||
|
||||
fn rare_data(&self) -> Ref<Option<Box<$type>>> {
|
||||
self.init_rare_data();
|
||||
self.rare_data.borrow()
|
||||
}
|
||||
|
||||
fn rare_data_mut(&self) -> RefMut<Option<Box<$type>>> {
|
||||
self.init_rare_data();
|
||||
self.rare_data.borrow_mut()
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
fn rare_data_for_layout(&self) -> &Option<Box<$type>> {
|
||||
let mut rare_data = self.rare_data.borrow_mut_for_layout();
|
||||
if rare_data.is_none() {
|
||||
*rare_data = Some(Default::default());
|
||||
}
|
||||
unsafe { self.rare_data.borrow_for_layout() }
|
||||
}
|
||||
);
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue