From 8e700606bb64c4ffda87cec333f7c76eae244911 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Wed, 26 May 2021 23:36:03 +0200 Subject: Add a cache for unchanged layouts Co-Authored-By: Laurenz --- src/cache.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/cache.rs (limited to 'src/cache.rs') diff --git a/src/cache.rs b/src/cache.rs new file mode 100644 index 00000000..4cf97ba6 --- /dev/null +++ b/src/cache.rs @@ -0,0 +1,34 @@ +//! Caching for incremental compilation. + +use std::collections::HashMap; + +use crate::layout::{Frame, Regions}; + +/// A cache for incremental compilation. +#[derive(Default, Debug, Clone)] +pub struct Cache { + /// A map that holds the layouted nodes from past compilations. + pub frames: HashMap, +} + +impl Cache { + /// Create a new, empty cache. + pub fn new() -> Self { + Self::default() + } + + /// Clear the cache. + pub fn clear(&mut self) { + self.frames.clear(); + } +} + +/// Frames from past compilations and checks for their validity in future +/// compilations. +#[derive(Debug, Clone)] +pub struct FramesEntry { + /// The regions in which these frames are valid. + pub regions: Regions, + /// Cached frames for a node. + pub frames: Vec, +} -- cgit v1.2.3