From 22f9ba3f3c0483db9e8cca21f6db2466f96d17d9 Mon Sep 17 00:00:00 2001 From: Zixuan Chen Date: Mon, 24 Oct 2022 17:22:29 +0800 Subject: [PATCH] refactor: rename len method in old rlevec --- .../src/container/text/tracker/content_map.rs | 2 +- .../src/container/text/tracker/cursor_map.rs | 13 ++++--- .../container/text/tracker/effects_iter.rs | 6 ++- crates/loro-core/src/log_store.rs | 4 +- crates/loro-core/src/op/op_content.rs | 4 +- crates/loro-core/src/span.rs | 6 +-- crates/loro-framework/src/raw_store.rs | 4 +- crates/rle/src/rle_vec_old.rs | 37 ++++++++++--------- 8 files changed, 42 insertions(+), 34 deletions(-) diff --git a/crates/loro-core/src/container/text/tracker/content_map.rs b/crates/loro-core/src/container/text/tracker/content_map.rs index 3aa1b9d8..37c396bb 100644 --- a/crates/loro-core/src/container/text/tracker/content_map.rs +++ b/crates/loro-core/src/container/text/tracker/content_map.rs @@ -134,7 +134,7 @@ impl ContentMap { } } - assert_eq!(len, ans.len()); + assert_eq!(len, ans.atom_len()); ans } diff --git a/crates/loro-core/src/container/text/tracker/cursor_map.rs b/crates/loro-core/src/container/text/tracker/cursor_map.rs index 50627135..5d5f441b 100644 --- a/crates/loro-core/src/container/text/tracker/cursor_map.rs +++ b/crates/loro-core/src/container/text/tracker/cursor_map.rs @@ -156,7 +156,7 @@ impl HasLength for Marker { fn content_len(&self) -> usize { match self { Marker::Insert { ptr: _, len } => *len, - Marker::Delete(span) => span.len(), + Marker::Delete(span) => span.atom_len(), } } } @@ -258,9 +258,9 @@ impl CursorMap { } } Marker::Delete(del) => { - if span.intersect(&id.to_span(del.len())) { + if span.intersect(&id.to_span(del.atom_len())) { let from = (span.counter.min() - id.counter).max(0); - let to = (span.counter.end() - id.counter).min(del.len() as Counter); + let to = (span.counter.end() - id.counter).min(del.atom_len() as Counter); if to - from > 0 { deletes.push((id.inc(from), del.slice(from as usize, to as usize))); } @@ -271,7 +271,7 @@ impl CursorMap { if cfg!(test) { let insert_len: usize = inserts.iter().map(|x| x.1.len).sum(); - let del_len: usize = deletes.iter().map(|x| x.1.len()).sum(); + let del_len: usize = deletes.iter().map(|x| x.1.atom_len()).sum(); assert_eq!(insert_len + del_len, span.content_len()); } @@ -291,7 +291,10 @@ impl CursorMap { Marker::Delete(del) => { return Some(FirstCursorResult::Del( span.id_start(), - del.slice((span.id_start().counter - id.counter) as usize, del.len()), + del.slice( + (span.id_start().counter - id.counter) as usize, + del.atom_len(), + ), )) } } diff --git a/crates/loro-core/src/container/text/tracker/effects_iter.rs b/crates/loro-core/src/container/text/tracker/effects_iter.rs index d00ad3e1..83122896 100644 --- a/crates/loro-core/src/container/text/tracker/effects_iter.rs +++ b/crates/loro-core/src/container/text/tracker/effects_iter.rs @@ -117,8 +117,10 @@ impl<'a> Iterator for EffectIter<'a> { } FirstCursorResult::Del(id, del) => { assert!(current.contains_id(id)); - assert!(current.contains_id(id.inc(del.len() as Counter - 1))); - current.counter.set_start(id.counter + del.len() as Counter); + assert!(current.contains_id(id.inc(del.atom_len() as Counter - 1))); + current + .counter + .set_start(id.counter + del.atom_len() as Counter); self.current_delete_targets = Some(del.iter().cloned().collect()); } } diff --git a/crates/loro-core/src/log_store.rs b/crates/loro-core/src/log_store.rs index 74820447..fd53f824 100644 --- a/crates/loro-core/src/log_store.rs +++ b/crates/loro-core/src/log_store.rs @@ -301,7 +301,7 @@ impl LogStore { pub fn contains(&self, id: ID) -> bool { self.changes .get(&id.client_id) - .map_or(0, |changes| changes.len()) + .map_or(0, |changes| changes.atom_len()) > id.counter as usize } @@ -309,7 +309,7 @@ impl LogStore { fn get_next_counter(&self, client_id: ClientID) -> Counter { self.changes .get(&client_id) - .map(|changes| changes.len()) + .map(|changes| changes.atom_len()) .unwrap_or(0) as Counter } diff --git a/crates/loro-core/src/op/op_content.rs b/crates/loro-core/src/op/op_content.rs index bb640d7d..9f2dc96e 100644 --- a/crates/loro-core/src/op/op_content.rs +++ b/crates/loro-core/src/op/op_content.rs @@ -27,8 +27,8 @@ impl HasLength for OpContent { fn content_len(&self) -> usize { match self { OpContent::Normal { content, .. } => content.content_len(), - OpContent::Undo { target, .. } => target.len(), - OpContent::Redo { target, .. } => target.len(), + OpContent::Undo { target, .. } => target.atom_len(), + OpContent::Redo { target, .. } => target.atom_len(), } } } diff --git a/crates/loro-core/src/span.rs b/crates/loro-core/src/span.rs index ade85467..90b6c723 100644 --- a/crates/loro-core/src/span.rs +++ b/crates/loro-core/src/span.rs @@ -313,19 +313,19 @@ mod test_id_span { counter: CounterSpan::new(0, 2), }); assert_eq!(id_span_vec.merged_len(), 1); - assert_eq!(id_span_vec.len(), 2); + assert_eq!(id_span_vec.atom_len(), 2); id_span_vec.push(IdSpan { client_id: 0, counter: CounterSpan::new(2, 4), }); assert_eq!(id_span_vec.merged_len(), 1); - assert_eq!(id_span_vec.len(), 4); + assert_eq!(id_span_vec.atom_len(), 4); id_span_vec.push(IdSpan { client_id: 2, counter: CounterSpan::new(2, 4), }); assert_eq!(id_span_vec.merged_len(), 2); - assert_eq!(id_span_vec.len(), 6); + assert_eq!(id_span_vec.atom_len(), 6); } #[test] diff --git a/crates/loro-framework/src/raw_store.rs b/crates/loro-framework/src/raw_store.rs index dad02351..fa57a4e2 100644 --- a/crates/loro-framework/src/raw_store.rs +++ b/crates/loro-framework/src/raw_store.rs @@ -3,7 +3,7 @@ use loro_core::{ id::{ClientID, Counter}, version::VersionVector, }; -use rle::RleVecWithIndex; +use rle::{HasLength, RleVecWithIndex}; use crate::raw_change::{ChangeData, ChangeHash}; @@ -77,7 +77,7 @@ impl RawStore { pub fn version_vector(&self) -> VersionVector { let mut version_vector = VersionVector::new(); for (client_id, changes) in &self.changes { - version_vector.insert(*client_id, changes.len() as Counter); + version_vector.insert(*client_id, changes.atom_len() as Counter); } version_vector diff --git a/crates/rle/src/rle_vec_old.rs b/crates/rle/src/rle_vec_old.rs index ee595856..afe9fbd1 100644 --- a/crates/rle/src/rle_vec_old.rs +++ b/crates/rle/src/rle_vec_old.rs @@ -21,7 +21,7 @@ use crate::{HasLength, Mergable, Slice, Sliceable}; #[derive(Debug, Clone)] pub struct RleVecWithIndex { vec: Vec, - _len: usize, + atom_len: usize, index: Vec, cfg: Cfg, } @@ -44,37 +44,32 @@ impl Eq for RleVecWithIndex {} impl + HasLength, Cfg> RleVecWithIndex { /// push a new element to the end of the array. It may be merged with last element. pub fn push(&mut self, value: T) { - self._len += value.content_len(); + self.atom_len += value.content_len(); if self.vec.is_empty() { self.vec.push(value); self.index.push(0); - self.index.push(self._len); + self.index.push(self.atom_len); return; } let last = self.vec.last_mut().unwrap(); if last.is_mergable(&value, &self.cfg) { last.merge(&value, &self.cfg); - *self.index.last_mut().unwrap() = self._len; + *self.index.last_mut().unwrap() = self.atom_len; return; } self.vec.push(value); - self.index.push(self._len); + self.index.push(self.atom_len); } pub fn is_empty(&self) -> bool { self.vec.is_empty() } - /// number of atom elements in the array. - pub fn len(&self) -> usize { - self._len - } - /// get the element at the given atom index. /// return: (element, merged_index, offset) pub fn get(&self, index: usize) -> Option> { - if index > self.len() { + if index > self.atom_len { return None; } @@ -133,7 +128,11 @@ impl + HasLength, Cfg> RleVecWithIndex { } let from_result = from_result.unwrap(); - let to_result = if to == self.len() { None } else { self.get(to) }; + let to_result = if to == self.atom_len { + None + } else { + self.get(to) + }; if let Some(to_result) = to_result { SliceIterator { vec: &self.vec, @@ -162,7 +161,7 @@ impl RleVecWithIndex { pub fn new() -> Self { RleVecWithIndex { vec: Vec::new(), - _len: 0, + atom_len: 0, index: Vec::new(), cfg: Default::default(), } @@ -193,7 +192,7 @@ impl RleVecWithIndex { pub fn new_cfg(cfg: Conf) -> Self { RleVecWithIndex { vec: Vec::new(), - _len: 0, + atom_len: 0, index: Vec::new(), cfg, } @@ -321,13 +320,17 @@ impl Sliceable for RleVecWithIndex< } } -impl HasLength for RleVecWithIndex { +impl HasLength for RleVecWithIndex { fn content_len(&self) -> usize { - self._len + self.atom_len + } + + fn atom_len(&self) -> usize { + self.atom_len } } -impl Deref for RleVecWithIndex { +impl Deref for RleVecWithIndex { type Target = [T]; fn deref(&self) -> &Self::Target {