use smallvec::SmallVec;
use super::{cur_index::CurIndex, history::EditorHistory, EditorContent};
use crate::{get_mem_size, CaretRaw, GCString, GetMemSize, InlineString, RingBufferHeap,
ScrOfs, TinyInlineString};
pub type VecEditorContentLines = SmallVec<[GCString; DEFAULT_EDITOR_LINES_SIZE]>;
const DEFAULT_EDITOR_LINES_SIZE: usize = 32;
pub type HistoryBuffer = RingBufferHeap<EditorContent, MAX_UNDO_REDO_SIZE>;
pub const MAX_UNDO_REDO_SIZE: usize = 16;
impl GetMemSize for EditorContent {
fn get_mem_size(&self) -> usize {
get_mem_size::slice_size(&self.lines)
+ std::mem::size_of::<CaretRaw>()
+ std::mem::size_of::<ScrOfs>()
+ std::mem::size_of::<Option<TinyInlineString>>()
+ std::mem::size_of::<Option<InlineString>>()
+ self.sel_list.get_mem_size()
}
}
impl GetMemSize for EditorHistory {
fn get_mem_size(&self) -> usize {
let versions_size = get_mem_size::ring_buffer_size(&self.versions);
let cur_index_field_size = std::mem::size_of::<CurIndex>();
versions_size + cur_index_field_size
}
}