Skip to content

Commit 8f33a45

Browse files
committed
feat: add tskit::OwnedMutationTable
1 parent 02ad5c4 commit 8f33a45

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ pub use error::TskitError;
427427
pub use flags::*;
428428
pub use individual_table::{IndividualTable, IndividualTableRow};
429429
pub use migration_table::{MigrationTable, MigrationTableRow};
430-
pub use mutation_table::{MutationTable, MutationTableRow};
430+
pub use mutation_table::{MutationTable, MutationTableRow, OwnedMutationTable};
431431
pub use node_table::{NodeTable, NodeTableRow, OwnedNodeTable};
432432
pub use population_table::{OwnedPopulationTable, PopulationTable, PopulationTableRow};
433433
pub use site_table::{SiteTable, SiteTableRow};

src/mutation_table.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::SizeType;
44
use crate::Time;
55
use crate::{tsk_id_t, TskitError};
66
use crate::{MutationId, NodeId, SiteId};
7+
use ll_bindings::{tsk_mutation_table_free, tsk_mutation_table_init};
78

89
/// Row of a [`MutationTable`]
910
pub struct MutationTableRow {
@@ -196,3 +197,20 @@ impl<'a> MutationTable<'a> {
196197
table_row_access!(ri.0, self, make_mutation_table_row)
197198
}
198199
}
200+
201+
pub struct OwnedMutationTable {
202+
table: mbox::MBox<ll_bindings::tsk_mutation_table_t>,
203+
}
204+
205+
impl OwnedMutationTable {
206+
mutation_table_add_row!(=> add_row, self, *self.table);
207+
mutation_table_add_row_with_metadata!(=> add_row_with_metadata, self, *self.table);
208+
}
209+
210+
build_owned_tables!(
211+
OwnedMutationTable,
212+
MutationTable,
213+
ll_bindings::tsk_mutation_table_t,
214+
tsk_mutation_table_init,
215+
tsk_mutation_table_free
216+
);

0 commit comments

Comments
 (0)