@@ -15,7 +15,6 @@ pub struct TreeInterface {
15
15
num_nodes : tsk_size_t ,
16
16
array_len : tsk_size_t ,
17
17
flags : TreeFlags ,
18
- nodes : crate :: NodeTable ,
19
18
}
20
19
21
20
impl TreeInterface {
@@ -25,16 +24,11 @@ impl TreeInterface {
25
24
array_len : tsk_size_t ,
26
25
flags : TreeFlags ,
27
26
) -> Self {
28
- let nodes = crate :: NodeTable :: new_from_table (
29
- & mut unsafe { * ( * non_owned_pointer. as_ref ( ) . tree_sequence ) . tables } . nodes ,
30
- )
31
- . expect ( "null pointer to tsk_node_table_t" ) ;
32
27
Self {
33
28
non_owned_pointer,
34
29
num_nodes,
35
30
array_len,
36
31
flags,
37
- nodes,
38
32
}
39
33
}
40
34
@@ -495,9 +489,9 @@ impl TreeInterface {
495
489
/// (and the tree sequence from which it came).
496
490
///
497
491
/// This is a convenience function for accessing node times, etc..
498
- fn node_table ( & self ) -> & crate :: NodeTable {
499
- & self . nodes
500
- }
492
+ // fn node_table(&self) -> &crate::NodeTable {
493
+ // &self.nodes
494
+ // }
501
495
502
496
/// Calculate the total length of the tree via a preorder traversal.
503
497
///
@@ -509,13 +503,19 @@ impl TreeInterface {
509
503
///
510
504
/// [`TskitError`] may be returned if a node index is out of range.
511
505
pub fn total_branch_length ( & self , by_span : bool ) -> Result < Time , TskitError > {
512
- let nt = self . node_table ( ) ;
506
+ let time: & [ Time ] = sys:: generate_slice (
507
+ unsafe {
508
+ ( * ( * ( * self . non_owned_pointer . as_ptr ( ) ) . tree_sequence ) . tables )
509
+ . nodes
510
+ . time
511
+ } ,
512
+ self . num_nodes ,
513
+ ) ;
513
514
let mut b = Time :: from ( 0. ) ;
514
515
for n in self . traverse_nodes ( NodeTraversalOrder :: Preorder ) {
515
516
let p = self . parent ( n) . ok_or ( TskitError :: IndexError { } ) ?;
516
517
if p != NodeId :: NULL {
517
- b += nt. time ( p) . ok_or ( TskitError :: IndexError { } ) ?
518
- - nt. time ( n) . ok_or ( TskitError :: IndexError { } ) ?;
518
+ b += time[ p. as_usize ( ) ] - time[ n. as_usize ( ) ]
519
519
}
520
520
}
521
521
0 commit comments