[librsvg: 13/16] ComputedValues::get_value - New function; do all property accesses through this
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 13/16] ComputedValues::get_value - New function; do all property accesses through this
- Date: Thu, 26 Mar 2020 00:18:23 +0000 (UTC)
commit 6676472c134413171b5f0abc5d032df4bf2a9a89
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Mar 25 14:02:32 2020 -0600
ComputedValues::get_value - New function; do all property accesses through this
rsvg_internals/src/properties.rs | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/rsvg_internals/src/properties.rs b/rsvg_internals/src/properties.rs
index 3474ae44..e4332102 100644
--- a/rsvg_internals/src/properties.rs
+++ b/rsvg_internals/src/properties.rs
@@ -333,7 +333,11 @@ macro_rules! make_properties {
impl ComputedValues {
$(
pub fn $long_field(&self) -> $long_name {
- self.$long_field.clone()
+ if let ComputedValue::$long_name(v) = self.get_value(PropertyId::$long_name) {
+ v
+ } else {
+ unreachable!();
+ }
}
)+
@@ -342,6 +346,18 @@ macro_rules! make_properties {
$(ComputedValue::$long_name(v) => self.$long_field = v,)+
}
}
+
+ fn get_value(&self, id: PropertyId) -> ComputedValue {
+ assert!(!id.is_shorthand());
+
+ match id {
+ $(
+ PropertyId::$long_name =>
+ ComputedValue::$long_name(self.$long_field.clone()),
+ )+
+ _ => unreachable!(),
+ }
+ }
}
};
}
@@ -475,7 +491,9 @@ impl SpecifiedValues {
($name:ident, $field:ident) => {
let prop_val = self.get_property(PropertyId::$name);
if let ParsedProperty::$name(s) = prop_val {
- computed.set_value(ComputedValue::$name(s.compute(&computed.$field(), computed)));
+ computed.set_value(ComputedValue::$name(
+ s.compute(&computed.$field(), computed),
+ ));
} else {
unreachable!();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]