use crate::bindings as ll_bindings;
use crate::metadata;
use crate::TskitError;
use crate::{tsk_id_t, tsk_size_t};
pub struct PopulationTable<'a> {
table_: &'a ll_bindings::tsk_population_table_t,
}
impl<'a> PopulationTable<'a> {
pub(crate) fn new_from_table(mutations: &'a ll_bindings::tsk_population_table_t) -> Self {
PopulationTable { table_: mutations }
}
pub fn num_rows(&'a self) -> tsk_size_t {
self.table_.num_rows
}
pub fn metadata<T: metadata::MetadataRoundtrip>(
&'a self,
row: tsk_id_t,
) -> Result<Option<T>, TskitError> {
let buffer = metadata_to_vector!(T, self, row);
decode_metadata_row!(T, buffer)
}
}