From 57b6967ddd1c674674b75fd96b7e354caa7cb733 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Tue, 20 Sep 2016 09:48:00 -0700 Subject: [PATCH] Add clear, is_empty, and resize methods to EntityMap. These are simply forwards from the underlying Vec. --- src/libcretonne/entity_map.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/libcretonne/entity_map.rs b/src/libcretonne/entity_map.rs index 2a76e3cce9..74c3cf5c46 100644 --- a/src/libcretonne/entity_map.rs +++ b/src/libcretonne/entity_map.rs @@ -70,6 +70,16 @@ impl EntityMap k.index() < self.elems.len() } + /// Is this map completely empty? + pub fn is_empty(&self) -> bool { + self.elems.is_empty() + } + + /// Remove all entries from this map. + pub fn clear(&mut self) { + self.elems.clear() + } + /// Iterate over all the keys in this map. pub fn keys(&self) -> Keys { Keys { @@ -137,12 +147,17 @@ impl EntityMap map } + /// Resize the map to have `n` entries by adding default entries as needed. + pub fn resize(&mut self, n: usize) { + self.elems.resize(n, V::default()); + } + /// Ensure that `k` is a valid key but adding default entries if necesssary. /// /// Return a mutable reference to the corresponding entry. pub fn ensure(&mut self, k: K) -> &mut V { if !self.is_valid(k) { - self.elems.resize(k.index() + 1, V::default()) + self.resize(k.index() + 1) } &mut self.elems[k.index()] }