@@ -27,130 +27,12 @@ macro_rules! panic_on_tskit_error {
2727 } ;
2828}
2929
30- macro_rules! unsafe_tsk_ragged_column_access {
31- ( $i: expr, $lo: expr, $hi: expr, $owner: expr, $array: ident, $offset_array: ident, $offset_array_len: ident, $output_id_type: ty) => { {
32- let i = $crate:: SizeType :: try_from( $i) . ok( ) ?;
33- if $i < $lo || i >= $hi {
34- None
35- } else if $owner. $offset_array_len == 0 {
36- None
37- } else {
38- debug_assert!( !$owner. $array. is_null( ) ) ;
39- if $owner. $array. is_null( ) {
40- return None ;
41- }
42- let offset = i. as_usize( ) as isize ;
43- // SAFETY: we have checked bounds and ensured not null
44- let start = unsafe { * $owner. $offset_array. offset( offset) } ;
45- let stop = if i < $hi {
46- unsafe { * $owner. $offset_array. offset( ( offset + 1 ) as isize ) }
47- } else {
48- $owner. $offset_array_len as tsk_size_t
49- } ;
50- if start == stop {
51- None
52- } else {
53- Some ( unsafe {
54- std:: slice:: from_raw_parts(
55- $owner. $array. offset( start as isize ) as * const $output_id_type,
56- stop as usize - start as usize ,
57- )
58- } )
59- }
60- }
61- } } ;
62- }
63-
64- // Allow this to be unused for default features
65- // to pass clippy checks
66- #[ allow( unused_macros) ]
67- macro_rules! unsafe_tsk_ragged_char_column_access {
68- ( $i: expr, $lo: expr, $hi: expr, $owner: expr, $array: ident, $offset_array: ident, $offset_array_len: ident) => { {
69- let i = $crate:: SizeType :: try_from( $i) . ok( ) ?;
70- if $i < $lo || i >= $hi {
71- None
72- } else if $owner. $offset_array_len == 0 {
73- None
74- } else {
75- assert!( !$owner. $array. is_null( ) ) ;
76- assert!( !$owner. $offset_array. is_null( ) ) ;
77- let start = unsafe { * $owner. $offset_array. offset( $i as isize ) } ;
78- let stop = if i < $hi {
79- unsafe { * $owner. $offset_array. offset( ( $i + 1 ) as isize ) }
80- } else {
81- $owner. $offset_array_len as tsk_size_t
82- } ;
83- if start == stop {
84- None
85- } else {
86- let mut buffer = String :: new( ) ;
87- for i in start..stop {
88- buffer. push( unsafe { * $owner. $array. offset( i as isize ) as u8 as char } ) ;
89- }
90- Some ( buffer)
91- }
92- }
93- } } ;
94- }
95-
96- #[ cfg( feature = "provenance" ) ]
97- macro_rules! unsafe_tsk_ragged_char_column_access_to_slice_u8 {
98- ( $i: expr, $lo: expr, $hi: expr, $owner: expr, $array: ident, $offset_array: ident, $offset_array_len: ident) => { {
99- let i = match $crate:: SizeType :: try_from( $i) . ok( ) {
100- Some ( j) => j,
101- None => $crate:: SizeType :: from( u64 :: MAX ) ,
102- } ;
103- if $i < $lo || i >= $hi {
104- None
105- } else if $owner. $offset_array_len == 0 {
106- None
107- } else {
108- assert!( !$owner. $array. is_null( ) ) ;
109- assert!( !$owner. $offset_array. is_null( ) ) ;
110- let offset = i. as_usize( ) as isize ;
111- let start = unsafe { * $owner. $offset_array. offset( offset) } ;
112- let stop = if i < $hi {
113- unsafe { * $owner. $offset_array. offset( ( offset + 1 ) as isize ) }
114- } else {
115- $owner. $offset_array_len as tsk_size_t
116- } ;
117- if start == stop {
118- None
119- } else {
120- let ptr = unsafe { $owner. $array. offset( start as isize ) as * const u8 } ;
121- let len = ( stop - start) as usize ;
122- let slice = unsafe { std:: slice:: from_raw_parts( ptr, len) } ;
123- Some ( slice)
124- }
125- }
126- } } ;
127- }
128-
129- macro_rules! metadata_to_vector {
130- ( $outer: ident, $table: expr, $row: expr) => {
131- $crate:: metadata:: char_column_to_slice(
132- $outer,
133- $table. metadata,
134- $table. metadata_offset,
135- $row,
136- $table. num_rows,
137- $table. metadata_length,
138- )
139- } ;
140- }
141-
14230macro_rules! decode_metadata_row {
14331 ( $T: ty, $buffer: expr) => {
14432 <$T as $crate:: metadata:: MetadataRoundtrip >:: decode( $buffer)
14533 } ;
14634}
14735
148- macro_rules! table_row_decode_metadata {
149- ( $owner: ident, $table: ident, $pos: ident) => {
150- metadata_to_vector!( $owner, $table, $pos)
151- } ;
152- }
153-
15436macro_rules! process_state_input {
15537 ( $state: expr) => {
15638 match $state {
@@ -1093,14 +975,13 @@ macro_rules! build_owned_table_type {
1093975}
1094976
1095977macro_rules! raw_metadata_getter_for_tables {
1096- ( $idtype: ident ) => {
978+ ( $idtype: ty ) => {
1097979 fn raw_metadata( & self , row: $idtype) -> Option <& [ u8 ] > {
1098- $crate:: metadata :: char_column_to_slice (
1099- self ,
980+ $crate:: sys :: tsk_ragged_column_access :: < ' _ , u8 , $idtype , _ , _> (
981+ row . into ( ) ,
1100982 self . as_ref( ) . metadata,
983+ self . num_rows( ) ,
1101984 self . as_ref( ) . metadata_offset,
1102- row. into( ) ,
1103- self . num_rows( ) . into( ) ,
1104985 self . as_ref( ) . metadata_length,
1105986 )
1106987 }
0 commit comments