Skip to content

Commit 8ad03af

Browse files
authored
refactor: remove TskitTypeAccess trait (#411)
The trait has been replaced with pub fns for all types. The trait was not a great idea as it made no sense to be generic over access to the low-level pointers. BREAKING CHANGE: removed a pub trait.
1 parent b09816b commit 8ad03af

File tree

6 files changed

+30
-43
lines changed

6 files changed

+30
-43
lines changed

src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,6 @@ pub use site_table::{OwningSiteTable, SiteTable, SiteTableRow};
439439
pub use table_collection::TableCollection;
440440
pub use traits::IndividualLocation;
441441
pub use traits::IndividualParents;
442-
pub use traits::TskitTypeAccess;
443442
pub use tree_interface::{NodeTraversalOrder, TreeInterface};
444443
pub use trees::{Tree, TreeSequence};
445444

src/prelude.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! Export commonly-use types and traits
22
33
pub use crate::tsk_flags_t;
4-
pub use crate::TskitTypeAccess;
54
pub use crate::TSK_NODE_IS_SAMPLE;
65
pub use streaming_iterator::DoubleEndedStreamingIterator;
76
pub use streaming_iterator::StreamingIterator;

src/table_collection.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::TableOutputOptions;
1414
use crate::TableSortOptions;
1515
use crate::TreeSequenceFlags;
1616
use crate::TskReturnValue;
17-
use crate::TskitTypeAccess;
1817
use crate::{tsk_id_t, tsk_size_t};
1918
use crate::{EdgeId, NodeId};
2019
use ll_bindings::tsk_table_collection_free;
@@ -59,16 +58,6 @@ pub struct TableCollection {
5958
views: crate::table_views::TableViews,
6059
}
6160

62-
impl TskitTypeAccess<ll_bindings::tsk_table_collection_t> for TableCollection {
63-
fn as_ptr(&self) -> *const ll_bindings::tsk_table_collection_t {
64-
&*self.inner
65-
}
66-
67-
fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_table_collection_t {
68-
&mut *self.inner
69-
}
70-
}
71-
7261
impl Drop for TableCollection {
7362
fn drop(&mut self) {
7463
let rv = unsafe { tsk_table_collection_free(self.as_mut_ptr()) };
@@ -1229,4 +1218,14 @@ impl TableCollection {
12291218
}
12301219

12311220
delegate_table_view_api!();
1221+
1222+
/// Pointer to the low-level C type.
1223+
pub fn as_ptr(&self) -> *const ll_bindings::tsk_table_collection_t {
1224+
&*self.inner
1225+
}
1226+
1227+
/// Mutable pointer to the low-level C type.
1228+
pub fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_table_collection_t {
1229+
&mut *self.inner
1230+
}
12321231
}

src/traits.rs

-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
//! Traits related to user-facing types
22
3-
/// Provide pointer access to underlying C types
4-
pub trait TskitTypeAccess<T> {
5-
/// Return const pointer
6-
fn as_ptr(&self) -> *const T;
7-
/// Return mutable pointer
8-
fn as_mut_ptr(&mut self) -> *mut T;
9-
}
10-
113
/// Abstraction of individual location.
124
///
135
/// This trait exists to streamline the API of

src/tree_interface.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use crate::SizeType;
77
use crate::Time;
88
use crate::TreeFlags;
99
use crate::TskitError;
10-
use crate::TskitTypeAccess;
1110
use std::ptr::NonNull;
1211

1312
pub struct TreeInterface {
@@ -17,16 +16,6 @@ pub struct TreeInterface {
1716
flags: TreeFlags,
1817
}
1918

20-
impl TskitTypeAccess<ll_bindings::tsk_tree_t> for TreeInterface {
21-
fn as_ptr(&self) -> *const ll_bindings::tsk_tree_t {
22-
self.non_owned_pointer.as_ptr()
23-
}
24-
25-
fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_tree_t {
26-
self.non_owned_pointer.as_ptr()
27-
}
28-
}
29-
3019
impl TreeInterface {
3120
pub(crate) fn new(
3221
non_owned_pointer: NonNull<ll_bindings::tsk_tree_t>,
@@ -42,6 +31,16 @@ impl TreeInterface {
4231
}
4332
}
4433

34+
/// Pointer to the low-level C type.
35+
pub fn as_ptr(&self) -> *const ll_bindings::tsk_tree_t {
36+
self.non_owned_pointer.as_ptr()
37+
}
38+
39+
/// Mutable pointer to the low-level C type.
40+
pub fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_tree_t {
41+
self.non_owned_pointer.as_ptr()
42+
}
43+
4544
pub fn flags(&self) -> TreeFlags {
4645
self.flags
4746
}

src/trees.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ use crate::TreeFlags;
1212
use crate::TreeInterface;
1313
use crate::TreeSequenceFlags;
1414
use crate::TskReturnValue;
15-
use crate::TskitTypeAccess;
1615
use crate::{tsk_id_t, tsk_size_t, TableCollection};
1716
use ll_bindings::tsk_tree_free;
1817
use std::ptr::NonNull;
@@ -192,16 +191,6 @@ pub struct TreeSequence {
192191
unsafe impl Send for TreeSequence {}
193192
unsafe impl Sync for TreeSequence {}
194193

195-
impl TskitTypeAccess<ll_bindings::tsk_treeseq_t> for TreeSequence {
196-
fn as_ptr(&self) -> *const ll_bindings::tsk_treeseq_t {
197-
&self.inner
198-
}
199-
200-
fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_treeseq_t {
201-
&mut self.inner
202-
}
203-
}
204-
205194
impl Drop for TreeSequence {
206195
fn drop(&mut self) {
207196
let rv = unsafe { ll_bindings::tsk_treeseq_free(&mut self.inner) };
@@ -270,6 +259,16 @@ impl TreeSequence {
270259
})
271260
}
272261

262+
/// Pointer to the low-level C type.
263+
pub fn as_ptr(&self) -> *const ll_bindings::tsk_treeseq_t {
264+
&self.inner
265+
}
266+
267+
/// Mutable pointer to the low-level C type.
268+
pub fn as_mut_ptr(&mut self) -> *mut ll_bindings::tsk_treeseq_t {
269+
&mut self.inner
270+
}
271+
273272
/// Dump the tree sequence to file.
274273
///
275274
/// # Note

0 commit comments

Comments
 (0)