Skip to content

Commit 5ecf922

Browse files
authored
Add ::clear(&self) to all owned tables. (#290)
1 parent 5fac7ad commit 5ecf922

File tree

9 files changed

+34
-11
lines changed

9 files changed

+34
-11
lines changed

src/_macros.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ macro_rules! handle_metadata_return {
534534
}
535535

536536
macro_rules! build_owned_tables {
537-
($name: ty, $deref: ident, $llname: ty, $init: ident, $free: ident) => {
537+
($name: ty, $deref: ident, $llname: ty, $init: ident, $free: ident, $clear: expr) => {
538538
impl $name {
539539
fn new() -> Self {
540540
let temp = unsafe { libc::malloc(std::mem::size_of::<$llname>()) as *mut $llname };
@@ -547,6 +547,12 @@ macro_rules! build_owned_tables {
547547
assert_eq!(rv, 0);
548548
Self { table }
549549
}
550+
551+
/// Clear the table.
552+
pub fn clear(&mut self) -> $crate::TskReturnValue {
553+
let rv = unsafe { $clear(self.as_mut_ptr()) };
554+
handle_tsk_return_value!(rv)
555+
}
550556
}
551557

552558
impl Default for $name {
@@ -1019,7 +1025,12 @@ macro_rules! provenance_table_add_row {
10191025
}
10201026

10211027
macro_rules! build_owned_table_type {
1022-
($(#[$attr:meta])* => $name: ident, $deref_type: ident, $tskname: ident, $tskinit: ident, $tskfree: ident) => {
1028+
($(#[$attr:meta])* => $name: ident,
1029+
$deref_type: ident,
1030+
$tskname: ident,
1031+
$tskinit: ident,
1032+
$tskfree: ident,
1033+
$tskclear: expr) => {
10231034
$(#[$attr])*
10241035
pub struct $name {
10251036
table: mbox::MBox<$crate::bindings::$tskname>,
@@ -1030,7 +1041,8 @@ macro_rules! build_owned_table_type {
10301041
$deref_type,
10311042
$crate::bindings::$tskname,
10321043
$tskinit,
1033-
$tskfree
1044+
$tskfree,
1045+
$tskclear
10341046
);
10351047
};
10361048
}

src/edge_table.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ build_owned_table_type!(
182182
/// let rowid = edges.add_row(1., 2., 0, 1).unwrap();
183183
/// assert_eq!(rowid, 0);
184184
/// assert_eq!(edges.num_rows(), 1);
185+
///
186+
/// edges.clear().unwrap();
187+
/// assert_eq!(edges.num_rows(), 0);
185188
/// ```
186189
///
187190
/// An example with metadata.
@@ -218,7 +221,8 @@ build_owned_table_type!(
218221
EdgeTable,
219222
tsk_edge_table_t,
220223
tsk_edge_table_init,
221-
tsk_edge_table_free
224+
tsk_edge_table_free,
225+
crate::bindings::tsk_edge_table_clear
222226
);
223227

224228
impl OwnedEdgeTable {

src/individual_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,8 @@ build_owned_table_type!(
328328
IndividualTable,
329329
tsk_individual_table_t,
330330
tsk_individual_table_init,
331-
tsk_individual_table_free
331+
tsk_individual_table_free,
332+
crate::bindings::tsk_individual_table_clear
332333
);
333334

334335
impl OwnedIndividualTable {

src/migration_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,8 @@ build_owned_table_type!(
262262
MigrationTable,
263263
tsk_migration_table_t,
264264
tsk_migration_table_init,
265-
tsk_migration_table_free
265+
tsk_migration_table_free,
266+
ll_bindings::tsk_migration_table_clear
266267
);
267268

268269
impl OwnedMigrationTable {

src/mutation_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ build_owned_table_type!(
246246
MutationTable,
247247
tsk_mutation_table_t,
248248
tsk_mutation_table_init,
249-
tsk_mutation_table_free
249+
tsk_mutation_table_free,
250+
ll_bindings::tsk_mutation_table_clear
250251
);
251252

252253
impl OwnedMutationTable {

src/node_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ build_owned_table_type!(
293293
NodeTable,
294294
tsk_node_table_t,
295295
tsk_node_table_init,
296-
tsk_node_table_free
296+
tsk_node_table_free,
297+
ll_bindings::tsk_node_table_clear
297298
);
298299

299300
impl OwnedNodeTable {

src/population_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ build_owned_table_type!(
165165
PopulationTable,
166166
tsk_population_table_t,
167167
tsk_population_table_init,
168-
tsk_population_table_free
168+
tsk_population_table_free,
169+
ll_bindings::tsk_population_table_clear
169170
);
170171

171172
impl OwnedPopulationTable {

src/provenance.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ build_owned_table_type!(
196196
ProvenanceTable,
197197
tsk_provenance_table_t,
198198
tsk_provenance_table_init,
199-
tsk_provenance_table_free
199+
tsk_provenance_table_free,
200+
ll_bindings::tsk_provenance_table_clear
200201
);
201202

202203
impl OwnedProvenanceTable {

src/site_table.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,8 @@ build_owned_table_type!(
202202
SiteTable,
203203
tsk_site_table_t,
204204
tsk_site_table_init,
205-
tsk_site_table_free
205+
tsk_site_table_free,
206+
ll_bindings::tsk_site_table_clear
206207
);
207208

208209
impl OwnedSiteTable {

0 commit comments

Comments
 (0)