File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -590,7 +590,7 @@ impl NodeTable {
590
590
///
591
591
/// * `Some(Ok(T))` if `row` is valid and decoding succeeded.
592
592
/// * `Some(Err(_))` if `row` is not valid and decoding failed.
593
- /// * `None` if `row` is not valid.
593
+ /// * `None` if `row` is not valid or the row has no metadata .
594
594
///
595
595
/// # Errors
596
596
///
@@ -604,7 +604,7 @@ impl NodeTable {
604
604
& self ,
605
605
row : NodeId ,
606
606
) -> Option < Result < T , TskitError > > {
607
- let buffer = self . raw_metadata ( row) ?;
607
+ let buffer = self . table_ . raw_metadata ( row) . ok ( ) ? ?;
608
608
Some ( decode_metadata_row ! ( T , buffer) . map_err ( |e| e. into ( ) ) )
609
609
}
610
610
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ use super::bindings::tsk_node_table_add_row;
4
4
use super :: bindings:: tsk_node_table_clear;
5
5
use super :: bindings:: tsk_node_table_init;
6
6
use super :: bindings:: tsk_node_table_t;
7
+ use super :: newtypes:: NodeId ;
7
8
use super :: tskbox:: TskBox ;
8
9
use super :: TskitError ;
9
10
@@ -82,6 +83,20 @@ impl NodeTable {
82
83
code => Err ( TskitError :: ErrorCode { code } ) ,
83
84
}
84
85
}
86
+
87
+ pub fn raw_metadata ( & self , row : NodeId ) -> Result < Option < & [ u8 ] > , TskitError > {
88
+ if row. is_null ( ) || row. as_usize ( ) >= self . as_ref ( ) . num_rows . try_into ( ) . unwrap ( ) {
89
+ Err ( TskitError :: IndexError )
90
+ } else {
91
+ Ok ( super :: tsk_ragged_column_access (
92
+ row,
93
+ self . as_ref ( ) . metadata ,
94
+ self . as_ref ( ) . metadata_length ,
95
+ self . as_ref ( ) . metadata_offset ,
96
+ self . as_ref ( ) . num_rows ,
97
+ ) )
98
+ }
99
+ }
85
100
}
86
101
87
102
impl Default for NodeTable {
You can’t perform that action at this time.
0 commit comments