From 00b82af3d7804f0631d1991fac006e6e17f35606 Mon Sep 17 00:00:00 2001 From: "Kevin R. Thornton" Date: Tue, 11 Mar 2025 09:10:03 -0700 Subject: [PATCH] feat: ergonomic access to immutable NodeTable columns --- src/lib.rs | 2 ++ src/node_table.rs | 16 +++++++++++++++ src/table_column.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++ tests/test_tables.rs | 16 +++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 src/table_column.rs diff --git a/src/lib.rs b/src/lib.rs index 3b5fe0e0b..0aad69354 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -97,6 +97,7 @@ pub mod prelude; mod site_table; mod sys; mod table_collection; +mod table_column; mod table_iterator; mod traits; mod trees; @@ -116,6 +117,7 @@ pub use site_table::{SiteTable, SiteTableRow}; pub use sys::flags::*; pub use sys::NodeTraversalOrder; pub use table_collection::TableCollection; +pub use table_column::NodeTableColumn; pub use traits::IndividualLocation; pub use traits::IndividualParents; pub use trees::{Tree, TreeSequence}; diff --git a/src/node_table.rs b/src/node_table.rs index 4ce506690..2462b20d8 100644 --- a/src/node_table.rs +++ b/src/node_table.rs @@ -807,6 +807,22 @@ impl NodeTable { /// Get the population column as a slice => population, population_slice_raw, crate::sys::bindings::tsk_id_t); + pub fn individual_column(&self) -> crate::table_column::NodeTableColumn { + crate::NodeTableColumn::new(self.individual_slice()) + } + + pub fn population_column(&self) -> crate::NodeTableColumn { + crate::NodeTableColumn::new(self.population_slice()) + } + + pub fn time_column(&self) -> crate::NodeTableColumn