use super::{Origin, Symbol};
#[derive(Debug, Clone, Copy)]
pub(crate) struct Kinship {
origin: Origin,
length: usize,
}
impl Kinship {
pub(crate) fn over(origin: Origin, length: usize) -> Self {
Self { origin, length }
}
pub(crate) fn family(&self, symbol: Symbol) {
assert!(
symbol.origin == self.origin,
"symbol belongs to a different network"
);
}
pub(crate) fn locate(&self, symbol: Symbol, coverage: &str) -> usize {
self.family(symbol);
assert!(symbol.id.index() < self.length, "{coverage}");
symbol.id.index()
}
}