chiark / gitweb /
size handling: Introduce OccInertLoaded
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 3 May 2022 19:59:29 +0000 (20:59 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 May 2022 18:34:15 +0000 (19:34 +0100)
This is going to contain size information.

No functional change yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index 63ea0410624518f904039b666887c9dd1a3a0f3a..de39aee08e9ad2ef951034de3316dc74cb1a18af 100644 (file)
@@ -71,7 +71,13 @@ struct OccData_Internal {
   outline: Outline,
   desc: Html,
   xform: FaceTransform,
-  svgd: lazy_init::Lazy<Result<Html,SpecError>>,
+  loaded: lazy_init::Lazy<Result<OccInertLoaded,SpecError>>,
+}
+
+#[allow(non_camel_case_types)]
+#[derive(Debug,Clone)]
+struct OccInertLoaded {
+  svgd: Html,
 }
 
 #[derive(Error,Debug)]
@@ -601,12 +607,15 @@ impl Contents {
       },
       OccData::Internal(occ) => {
         let occ_name = occ.item_name.clone();
-        let svgd = occ.svgd.get_or_create(||{
-          let occ_data = self.load_svg(
+        let OccInertLoaded { svgd } = occ.loaded.get_or_create(||{
+          let svgd = self.load_svg(
             occ.item_name.unnest::<GoodItemName>().unnest(),
             /* original: */ lib_name, name.as_str()
           )?;
-          Ok(occ_data)
+          let loaded = OccInertLoaded {
+            svgd,
+          };
+          Ok(loaded)
         }).clone()?;
         let it = Arc::new(ItemInertForOcculted {
           svgd,
@@ -828,7 +837,7 @@ pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource) -> Contents {
             item_name,
             outline: outline.clone(),
             xform: FaceTransform::from_group(&group.d)?,
-            svgd: default(),
+            loaded: default(),
             desc,
           }))
         },