Skip to content

Commit a0d9fce

Browse files
authored
refactor: macro metadata_to_vector intputs changed. (#263)
Rather than pass along references to rust-defined tables, we now pass along refs to the underlying C types.
1 parent 3a4f14b commit a0d9fce

File tree

8 files changed

+33
-19
lines changed

8 files changed

+33
-19
lines changed

src/_macros.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,13 @@ macro_rules! build_tskit_type {
172172
}
173173

174174
macro_rules! metadata_to_vector {
175-
($self: expr, $row: expr) => {
175+
($table: expr, $row: expr) => {
176176
$crate::metadata::char_column_to_vector(
177-
$self.table_.metadata,
178-
$self.table_.metadata_offset,
177+
$table.metadata,
178+
$table.metadata_offset,
179179
$row,
180-
$self.table_.num_rows,
181-
$self.table_.metadata_length,
180+
$table.num_rows,
181+
$table.metadata_length,
182182
)
183183
};
184184
}

src/edge_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ fn make_edge_table_row(table: &EdgeTable, pos: tsk_id_t) -> Option<EdgeTableRow>
3131
// set up the iterator
3232
let p = crate::SizeType::try_from(pos).unwrap();
3333
if p < table.num_rows() {
34+
let table_ref = table.table_;
3435
let rv = EdgeTableRow {
3536
id: pos.into(),
3637
left: table.left(pos).unwrap(),
3738
right: table.right(pos).unwrap(),
3839
parent: table.parent(pos).unwrap(),
3940
child: table.child(pos).unwrap(),
40-
metadata: table_row_decode_metadata!(table, pos),
41+
metadata: table_row_decode_metadata!(table_ref, pos),
4142
};
4243
Some(rv)
4344
} else {
@@ -137,7 +138,8 @@ impl<'a> EdgeTable<'a> {
137138
&'a self,
138139
row: EdgeId,
139140
) -> Result<Option<T>, TskitError> {
140-
let buffer = metadata_to_vector!(self, row.0)?;
141+
let table_ref = self.table_;
142+
let buffer = metadata_to_vector!(table_ref, row.0)?;
141143
decode_metadata_row!(T, buffer)
142144
}
143145

src/individual_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@ fn make_individual_table_row(table: &IndividualTable, pos: tsk_id_t) -> Option<I
5656
// set up the iterator
5757
let p = crate::SizeType::try_from(pos).unwrap();
5858
if p < table.num_rows() {
59+
let table_ref = table.table_;
5960
let rv = IndividualTableRow {
6061
id: pos.into(),
6162
flags: table.flags(pos).unwrap(),
6263
location: table.location(pos).unwrap(),
6364
parents: table.parents(pos).unwrap(),
64-
metadata: table_row_decode_metadata!(table, pos),
65+
metadata: table_row_decode_metadata!(table_ref, pos),
6566
};
6667
Some(rv)
6768
} else {
@@ -245,7 +246,8 @@ impl<'a> IndividualTable<'a> {
245246
&'a self,
246247
row: IndividualId,
247248
) -> Result<Option<T>, TskitError> {
248-
let buffer = metadata_to_vector!(self, row.0)?;
249+
let table_ref = self.table_;
250+
let buffer = metadata_to_vector!(table_ref, row.0)?;
249251
decode_metadata_row!(T, buffer)
250252
}
251253

src/migration_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ fn make_migration_table_row(table: &MigrationTable, pos: tsk_id_t) -> Option<Mig
3737
// set up the iterator
3838
let p = crate::SizeType::try_from(pos).unwrap();
3939
if p < table.num_rows() {
40+
let table_ref = table.table_;
4041
Some(MigrationTableRow {
4142
id: pos.into(),
4243
left: table.left(pos).unwrap(),
@@ -45,7 +46,7 @@ fn make_migration_table_row(table: &MigrationTable, pos: tsk_id_t) -> Option<Mig
4546
source: table.source(pos).unwrap(),
4647
dest: table.dest(pos).unwrap(),
4748
time: table.time(pos).unwrap(),
48-
metadata: table_row_decode_metadata!(table, pos),
49+
metadata: table_row_decode_metadata!(table_ref, pos),
4950
})
5051
} else {
5152
None
@@ -183,7 +184,8 @@ impl<'a> MigrationTable<'a> {
183184
&'a self,
184185
row: MigrationId,
185186
) -> Result<Option<T>, TskitError> {
186-
let buffer = metadata_to_vector!(self, row.0)?;
187+
let table_ref = self.table_;
188+
let buffer = metadata_to_vector!(table_ref, row.0)?;
187189
decode_metadata_row!(T, buffer)
188190
}
189191

src/mutation_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ fn make_mutation_table_row(table: &MutationTable, pos: tsk_id_t) -> Option<Mutat
3434
// set up the iterator
3535
let p = crate::SizeType::try_from(pos).unwrap();
3636
if p < table.num_rows() {
37+
let table_ref = table.table_;
3738
let rv = MutationTableRow {
3839
id: pos.into(),
3940
site: table.site(pos).unwrap(),
4041
node: table.node(pos).unwrap(),
4142
parent: table.parent(pos).unwrap(),
4243
time: table.time(pos).unwrap(),
4344
derived_state: table.derived_state(pos).unwrap(),
44-
metadata: table_row_decode_metadata!(table, pos),
45+
metadata: table_row_decode_metadata!(table_ref, pos),
4546
};
4647
Some(rv)
4748
} else {
@@ -167,7 +168,8 @@ impl<'a> MutationTable<'a> {
167168
&'a self,
168169
row: MutationId,
169170
) -> Result<Option<T>, TskitError> {
170-
let buffer = metadata_to_vector!(self, row.0)?;
171+
let table_ref = self.table_;
172+
let buffer = metadata_to_vector!(table_ref, row.0)?;
171173
decode_metadata_row!(T, buffer)
172174
}
173175

src/node_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@ fn make_node_table_row(table: &NodeTable, pos: tsk_id_t) -> Option<NodeTableRow>
3333
// set up the iterator
3434
let p = crate::SizeType::try_from(pos).unwrap();
3535
if p < table.num_rows() {
36+
let table_ref = table.table_;
3637
Some(NodeTableRow {
3738
id: pos.into(),
3839
time: table.time(pos).unwrap(),
3940
flags: table.flags(pos).unwrap(),
4041
population: table.population(pos).unwrap(),
4142
individual: table.individual(pos).unwrap(),
42-
metadata: table_row_decode_metadata!(table, pos),
43+
metadata: table_row_decode_metadata!(table_ref, pos),
4344
})
4445
} else {
4546
None
@@ -186,7 +187,8 @@ impl<'a> NodeTable<'a> {
186187
&'a self,
187188
row: NodeId,
188189
) -> Result<Option<T>, TskitError> {
189-
let buffer = metadata_to_vector!(self, row.0)?;
190+
let table_ref = self.table_;
191+
let buffer = metadata_to_vector!(table_ref, row.0)?;
190192
decode_metadata_row!(T, buffer)
191193
}
192194

src/population_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ fn make_population_table_row(table: &PopulationTable, pos: tsk_id_t) -> Option<P
2424
// set up the iterator
2525
let p = crate::SizeType::try_from(pos).unwrap();
2626
if p < table.num_rows() {
27+
let table_ref = table.table_;
2728
let rv = PopulationTableRow {
2829
id: pos.into(),
29-
metadata: table_row_decode_metadata!(table, pos),
30+
metadata: table_row_decode_metadata!(table_ref, pos),
3031
};
3132
Some(rv)
3233
} else {
@@ -82,7 +83,8 @@ impl<'a> PopulationTable<'a> {
8283
&'a self,
8384
row: PopulationId,
8485
) -> Result<Option<T>, TskitError> {
85-
let buffer = metadata_to_vector!(self, row.0)?;
86+
let table_ref = self.table_;
87+
let buffer = metadata_to_vector!(table_ref, row.0)?;
8688
decode_metadata_row!(T, buffer)
8789
}
8890

src/site_table.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ fn make_site_table_row(table: &SiteTable, pos: tsk_id_t) -> Option<SiteTableRow>
2929
// set up the iterator
3030
let p = crate::SizeType::try_from(pos).unwrap();
3131
if p < table.num_rows() {
32+
let table_ref = table.table_;
3233
let rv = SiteTableRow {
3334
id: pos.into(),
3435
position: table.position(pos).unwrap(),
3536
ancestral_state: table.ancestral_state(pos).unwrap(),
36-
metadata: table_row_decode_metadata!(table, pos),
37+
metadata: table_row_decode_metadata!(table_ref, pos),
3738
};
3839
Some(rv)
3940
} else {
@@ -123,7 +124,8 @@ impl<'a> SiteTable<'a> {
123124
&'a self,
124125
row: SiteId,
125126
) -> Result<Option<T>, TskitError> {
126-
let buffer = metadata_to_vector!(self, row.0)?;
127+
let table_ref = self.table_;
128+
let buffer = metadata_to_vector!(table_ref, row.0)?;
127129
decode_metadata_row!(T, buffer)
128130
}
129131

0 commit comments

Comments
 (0)