Skip to content

Commit 54d21b0

Browse files
committed
more
1 parent 091d1c7 commit 54d21b0

File tree

5 files changed

+30
-24
lines changed

5 files changed

+30
-24
lines changed

src/migration_table.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ fn make_migration_table_row(table: &MigrationTable, pos: tsk_id_t) -> Option<Mig
4444
source: table.source(pos)?,
4545
dest: table.dest(pos)?,
4646
time: table.time(pos)?,
47-
metadata: table.raw_metadata(pos).map(|m| m.to_vec()),
47+
metadata: table.table_.raw_metadata(pos).map(|m| m.to_vec()),
4848
})
4949
}
5050

@@ -155,7 +155,7 @@ impl streaming_iterator::StreamingIterator for MigrationTableRowView<'_> {
155155
self.source = self.table.source(self.id).unwrap_or(PopulationId::NULL);
156156
self.dest = self.table.dest(self.id).unwrap_or(PopulationId::NULL);
157157
self.time = self.table.time(self.id).unwrap_or_else(|| f64::NAN.into());
158-
self.metadata = self.table.raw_metadata(self.id);
158+
self.metadata = self.table.table_.raw_metadata(self.id);
159159
}
160160
}
161161

@@ -308,7 +308,7 @@ impl MigrationTable {
308308
&self,
309309
row: impl Into<MigrationId>,
310310
) -> Option<Result<T, TskitError>> {
311-
let buffer = self.raw_metadata(row)?;
311+
let buffer = self.table_.raw_metadata(row)?;
312312
Some(decode_metadata_row!(T, buffer).map_err(|e| e.into()))
313313
}
314314

@@ -357,7 +357,7 @@ impl MigrationTable {
357357
source: self.source(r)?,
358358
dest: self.dest(r)?,
359359
time: self.time(r)?,
360-
metadata: self.raw_metadata(r.into()),
360+
metadata: self.table_.raw_metadata(r.into()),
361361
};
362362
Some(view)
363363
}

src/mutation_table.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -275,22 +275,7 @@ impl MutationTable {
275275
/// Will return [``IndexError``](crate::TskitError::IndexError)
276276
/// if ``row`` is out of range.
277277
pub fn derived_state<M: Into<MutationId>>(&self, row: M) -> Option<&[u8]> {
278-
assert!(
279-
(self.num_rows() == 0 && self.as_ref().derived_state_length == 0)
280-
|| (!self.as_ref().derived_state.is_null()
281-
&& !self.as_ref().derived_state_offset.is_null())
282-
);
283-
// SAFETY: either both columns are empty or both pointers at not NULL,
284-
// in which case the correct lengths are from the low-level objects
285-
unsafe {
286-
sys::tsk_ragged_column_access(
287-
row.into(),
288-
self.as_ref().derived_state,
289-
self.num_rows(),
290-
self.as_ref().derived_state_offset,
291-
self.as_ref().derived_state_length,
292-
)
293-
}
278+
self.table_.derived_state(row.into())
294279
}
295280

296281
/// Retrieve decoded metadata for a `row`.

src/site_table.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn make_site_table_row(table: &SiteTable, pos: tsk_id_t) -> Option<SiteTableRow>
3232
id: pos.into(),
3333
position: table.position(pos)?,
3434
ancestral_state,
35-
metadata: table.raw_metadata(pos).map(|m| m.to_vec()),
35+
metadata: table.table_.raw_metadata(pos).map(|m| m.to_vec()),
3636
})
3737
}
3838

@@ -121,7 +121,7 @@ impl streaming_iterator::StreamingIterator for SiteTableRowView<'_> {
121121
.position(self.id)
122122
.unwrap_or_else(|| f64::NAN.into());
123123
self.ancestral_state = self.table.ancestral_state(self.id);
124-
self.metadata = self.table.raw_metadata(self.id);
124+
self.metadata = self.table.table_.raw_metadata(self.id);
125125
}
126126
}
127127

@@ -246,7 +246,7 @@ impl SiteTable {
246246
&self,
247247
row: impl Into<SiteId>,
248248
) -> Option<Result<T, TskitError>> {
249-
let buffer = self.raw_metadata(row)?;
249+
let buffer = self.table_.raw_metadata(row)?;
250250
Some(decode_metadata_row!(T, buffer).map_err(TskitError::from))
251251
}
252252

@@ -291,7 +291,7 @@ impl SiteTable {
291291
id: r.into(),
292292
position: self.position(r)?,
293293
ancestral_state: self.ancestral_state(r),
294-
metadata: self.raw_metadata(r.into()),
294+
metadata: self.table_.raw_metadata(r.into()),
295295
};
296296
Some(view)
297297
}

src/sys/migration_table.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ impl MigrationTable {
100100
pub fn right(&self, row: MigrationId) -> Option<Position> {
101101
safe_tsk_column_access!(self, row, Position, right)
102102
}
103+
104+
raw_metadata_getter_for_tables!(MigrationId);
103105
}
104106

105107
impl Default for MigrationTable {

src/sys/mutation_table.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,25 @@ impl MutationTable {
9999
}
100100

101101
raw_metadata_getter_for_tables!(MutationId);
102+
103+
pub fn derived_state(&self, row: MutationId) -> Option<&[u8]> {
104+
assert!(
105+
(self.as_ref().num_rows == 0 && self.as_ref().derived_state_length == 0)
106+
|| (!self.as_ref().derived_state.is_null()
107+
&& !self.as_ref().derived_state_offset.is_null())
108+
);
109+
// SAFETY: either both columns are empty or both pointers at not NULL,
110+
// in which case the correct lengths are from the low-level objects
111+
unsafe {
112+
super::tsk_ragged_column_access(
113+
row,
114+
self.as_ref().derived_state,
115+
self.as_ref().num_rows,
116+
self.as_ref().derived_state_offset,
117+
self.as_ref().derived_state_length,
118+
)
119+
}
120+
}
102121
}
103122

104123
impl Default for MutationTable {

0 commit comments

Comments
 (0)