extern crate alloc;
mod cases;
mod properties;
mod stress;
use alloc::vec::Vec;
use crate::metis::{Anchor, Dot, DotSet, Locus, Metatheses, Metathesis, Retired, Rhapsody};
use super::{Moves, Text, clock, d, locus_at, move_to, type_after};
use crate::metis::dot::RawDot;
fn typed_chain(
text: &mut Rhapsody,
clk: &crate::kairos::Clock<crate::kairos::TickCounter>,
station: u32,
first_index: u64,
len: u64,
) -> Vec<Dot> {
let mut dots = Vec::new();
let mut caret: Option<RawDot> = None;
for index in first_index..first_index + len {
let anchor = text.anchor_for_visual_insert(caret);
let dot = d(station, index);
assert!(text.weave(
dot,
Locus {
anchor,
rank: clk.now(0u16)
}
));
caret = Some(dot.into());
dots.push(dot);
}
dots
}