Skip to content

Commit f389c6f

Browse files
committed
phew
1 parent fe9f7de commit f389c6f

File tree

1 file changed

+53
-36
lines changed

1 file changed

+53
-36
lines changed

src/sys/flags.rs

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -117,30 +117,35 @@ pub struct SimplificationOptions(RawFlags);
117117

118118
impl SimplificationOptions {
119119
/// Default behavior
120-
pub const NONE: RawFlags = 0;
121-
pub const FILTER_SITES: RawFlags = ll_bindings::TSK_SIMPLIFY_FILTER_SITES;
120+
pub const NONE: Self = Self(0);
121+
make_constant_self!(=> FILTER_SITES, TSK_SIMPLIFY_FILTER_SITES);
122+
make_constant_self!(
122123
/// If True, remove any populations that are not referenced by
123124
/// nodes after simplification; new population IDs are allocated
124125
/// sequentially from zero.
125126
/// If False, the population table will not be altered in any way.
126-
pub const FILTER_POPULATIONS: RawFlags = ll_bindings::TSK_SIMPLIFY_FILTER_POPULATIONS;
127+
=> FILTER_POPULATIONS, TSK_SIMPLIFY_FILTER_POPULATIONS);
128+
make_constant_self!(
127129
/// If True, remove any individuals that are not referenced by nodes
128130
/// after simplification; new individual IDs are allocated sequentially
129131
/// from zero. If False, the individual table will not be altered in any way.
130-
pub const FILTER_INDIVIDUALS: RawFlags = ll_bindings::TSK_SIMPLIFY_FILTER_INDIVIDUALS;
132+
=> FILTER_INDIVIDUALS,TSK_SIMPLIFY_FILTER_INDIVIDUALS);
133+
make_constant_self!(
131134
/// Whether to reduce the topology down to the trees that are present at sites.
132-
pub const REDUCE_TO_SITE_TOPOLOGY: RawFlags = ll_bindings::TSK_SIMPLIFY_REDUCE_TO_SITE_TOPOLOGY;
135+
=> REDUCE_TO_SITE_TOPOLOGY,TSK_SIMPLIFY_REDUCE_TO_SITE_TOPOLOGY);
136+
make_constant_self!(
133137
/// If True, preserve unary nodes (i.e. nodes with exactly one child)
134138
/// that exist on the path from samples to root.
135-
pub const KEEP_UNARY: RawFlags = ll_bindings::TSK_SIMPLIFY_KEEP_UNARY;
139+
=> KEEP_UNARY,TSK_SIMPLIFY_KEEP_UNARY);
140+
make_constant_self!(
136141
/// Whether to retain history ancestral to the MRCA of the samples.
137-
pub const KEEP_INPUT_ROOTS: RawFlags = ll_bindings::TSK_SIMPLIFY_KEEP_INPUT_ROOTS;
142+
=> KEEP_INPUT_ROOTS, TSK_SIMPLIFY_KEEP_INPUT_ROOTS);
143+
make_constant_self!(
138144
/// If True, preserve unary nodes that exist on the path from samples
139145
/// to root, but only if they are associated with an individual
140146
/// in the individuals table.
141147
/// Cannot be specified at the same time as `KEEP_UNARY`.
142-
pub const KEEP_UNARY_IN_INDIVIDUALS: RawFlags =
143-
ll_bindings::TSK_SIMPLIFY_KEEP_UNARY_IN_INDIVIDUALS;
148+
=> KEEP_UNARY_IN_INDIVIDUALS,TSK_SIMPLIFY_KEEP_UNARY_IN_INDIVIDUALS);
144149

145150
flag_builder_api!(
146151
/// Update to set [`KEEP_INPUT_ROOTS`](crate::SimplificationOptions::KEEP_INPUT_ROOTS).
@@ -278,10 +283,10 @@ pub struct TableClearOptions(RawFlags);
278283

279284
impl TableClearOptions {
280285
/// Default behavior.
281-
pub const NONE: RawFlags = 0;
282-
pub const CLEAR_METADATA_SCHEMAS: RawFlags = ll_bindings::TSK_CLEAR_METADATA_SCHEMAS;
283-
pub const CLEAR_TS_METADATA_SCHEMA: RawFlags = ll_bindings::TSK_CLEAR_TS_METADATA_AND_SCHEMA;
284-
pub const CLEAR_PROVENANCE: RawFlags = ll_bindings::TSK_CLEAR_PROVENANCE;
286+
pub const NONE: Self = Self(0);
287+
make_constant_self!(=> CLEAR_METADATA_SCHEMAS,TSK_CLEAR_METADATA_SCHEMAS);
288+
make_constant_self!(=> CLEAR_TS_METADATA_SCHEMA, TSK_CLEAR_TS_METADATA_AND_SCHEMA);
289+
make_constant_self!(=> CLEAR_PROVENANCE,TSK_CLEAR_PROVENANCE);
285290
flag_builder_api!(
286291
/// Set [`CLEAR_METADATA_SCHEMAS`](crate::TableClearOptions::CLEAR_METADATA_SCHEMAS)
287292
=> clear_metadata_schema, CLEAR_METADATA_SCHEMAS);
@@ -351,11 +356,11 @@ pub struct TableEqualityOptions(RawFlags);
351356

352357
impl TableEqualityOptions {
353358
/// Default behavior.
354-
pub const NONE: RawFlags = 0;
355-
pub const IGNORE_METADATA: RawFlags = ll_bindings::TSK_CMP_IGNORE_METADATA;
356-
pub const IGNORE_TS_METADATA: RawFlags = ll_bindings::TSK_CMP_IGNORE_TS_METADATA;
357-
pub const IGNORE_PROVENANCE: RawFlags = ll_bindings::TSK_CMP_IGNORE_PROVENANCE;
358-
pub const IGNORE_TIMESTAMPS: RawFlags = ll_bindings::TSK_CMP_IGNORE_TIMESTAMPS;
359+
pub const NONE: Self = Self(0);
360+
make_constant_self!(=> IGNORE_METADATA,TSK_CMP_IGNORE_METADATA);
361+
make_constant_self!(=>IGNORE_TS_METADATA, TSK_CMP_IGNORE_TS_METADATA);
362+
make_constant_self!(=> IGNORE_PROVENANCE,TSK_CMP_IGNORE_PROVENANCE);
363+
make_constant_self!(=> IGNORE_TIMESTAMPS,TSK_CMP_IGNORE_TIMESTAMPS);
359364
flag_builder_api!(
360365
/// Set [`IGNORE_METADATA`](crate::TableEqualityOptions::IGNORE_METADATA)
361366
=> ignore_metadata, IGNORE_METADATA);
@@ -400,9 +405,10 @@ pub struct TableSortOptions(RawFlags);
400405

401406
impl TableSortOptions {
402407
/// Default behavior.
403-
pub const NONE: RawFlags = 0;
408+
pub const NONE: Self = Self(0);
409+
make_constant_self!(
404410
/// Do not validate contents of edge table.
405-
pub const NO_CHECK_INTEGRITY: RawFlags = ll_bindings::TSK_NO_CHECK_INTEGRITY;
411+
=> NO_CHECK_INTEGRITY, TSK_NO_CHECK_INTEGRITY);
406412
flag_builder_api!(
407413
/// Set [`NO_CHECK_INTEGRITY`](crate::TableSortOptions::NO_CHECK_INTEGRITY)
408414
=> no_check_integrity, NO_CHECK_INTEGRITY);
@@ -428,7 +434,7 @@ pub struct IndividualTableSortOptions(RawFlags);
428434

429435
impl IndividualTableSortOptions {
430436
/// Default behavior.
431-
pub const NONE: RawFlags = 0;
437+
pub const NONE: Self = Self(0);
432438
bits!();
433439
all!();
434440
contains!();
@@ -468,13 +474,15 @@ pub struct TreeFlags(RawFlags);
468474

469475
impl TreeFlags {
470476
/// Default behavior.
471-
pub const NONE: RawFlags = 0;
477+
pub const NONE: Self = Self(0);
478+
make_constant_self!(
472479
/// Update sample lists, enabling [`Tree::samples`].
473-
pub const SAMPLE_LISTS: RawFlags = ll_bindings::TSK_SAMPLE_LISTS;
480+
=> SAMPLE_LISTS,TSK_SAMPLE_LISTS);
481+
make_constant_self!(
474482
/// Do *not* update the number of samples descending
475483
/// from each node. The default is to update these
476484
/// counts.
477-
pub const NO_SAMPLE_COUNTS: RawFlags = ll_bindings::TSK_NO_SAMPLE_COUNTS;
485+
=> NO_SAMPLE_COUNTS,TSK_NO_SAMPLE_COUNTS);
478486
flag_builder_api!(
479487
/// Set [`SAMPLE_LISTS`](crate::TreeFlags::SAMPLE_LISTS)
480488
=> sample_lists, SAMPLE_LISTS);
@@ -545,9 +553,10 @@ pub struct TreeSequenceFlags(RawFlags);
545553

546554
impl TreeSequenceFlags {
547555
/// Default behavior
548-
pub const NONE: RawFlags = 0;
556+
pub const NONE: Self = Self(0);
557+
make_constant_self!(
549558
/// If used, then build table indexes if they are not present.
550-
pub const BUILD_INDEXES: RawFlags = ll_bindings::TSK_TS_INIT_BUILD_INDEXES;
559+
=> BUILD_INDEXES, TSK_TS_INIT_BUILD_INDEXES);
551560
flag_builder_api!(
552561
/// Set [`BUILD_INDEXES`](crate::TreeSequenceFlags::BUILD_INDEXES)
553562
=> build_indexes, BUILD_INDEXES);
@@ -626,23 +635,31 @@ pub struct TableIntegrityCheckFlags(RawFlags);
626635

627636
impl TableIntegrityCheckFlags {
628637
/// Default behavior is a set of basic checks
629-
pub const NONE: RawFlags = 0;
638+
pub const NONE: Self = Self(0);
639+
make_constant_self!(
630640
/// Check that edges are ordered
631-
pub const CHECK_EDGE_ORDERING: RawFlags = ll_bindings::TSK_CHECK_EDGE_ORDERING;
641+
=> CHECK_EDGE_ORDERING, TSK_CHECK_EDGE_ORDERING);
642+
make_constant_self!(
632643
/// Check that sites are ordered
633-
pub const CHECK_SITE_ORDERING: RawFlags = ll_bindings::TSK_CHECK_SITE_ORDERING;
644+
=> CHECK_SITE_ORDERING, TSK_CHECK_SITE_ORDERING);
645+
make_constant_self!(
634646
/// Check for duplicated sites
635-
pub const CHECK_SITE_DUPLICATES: RawFlags = ll_bindings::TSK_CHECK_SITE_DUPLICATES;
647+
=> CHECK_SITE_DUPLICATES, TSK_CHECK_SITE_DUPLICATES);
648+
make_constant_self!(
636649
/// Check that mutations are ordered
637-
pub const CHECK_MUTATION_ORDERING: RawFlags = ll_bindings::TSK_CHECK_MUTATION_ORDERING;
650+
=> CHECK_MUTATION_ORDERING, TSK_CHECK_MUTATION_ORDERING);
651+
make_constant_self!(
638652
/// Check that individuals are ordered
639-
pub const CHECK_INDIVIDUAL_ORDERING: RawFlags = ll_bindings::TSK_CHECK_INDIVIDUAL_ORDERING;
653+
=> CHECK_INDIVIDUAL_ORDERING, TSK_CHECK_INDIVIDUAL_ORDERING);
654+
make_constant_self!(
640655
/// Check that migrations are ordered
641-
pub const CHECK_MIGRATION_ORDERING: RawFlags = ll_bindings::TSK_CHECK_MIGRATION_ORDERING;
656+
=> CHECK_MIGRATION_ORDERING, TSK_CHECK_MIGRATION_ORDERING);
657+
make_constant_self!(
642658
/// Check that table indexes are valid
643-
pub const CHECK_INDEXES: RawFlags = ll_bindings::TSK_CHECK_INDEXES;
659+
=> CHECK_INDEXES, TSK_CHECK_INDEXES);
660+
make_constant_self!(
644661
/// Check tree integrity. Enables most or all of the preceding options.
645-
pub const CHECK_TREES: RawFlags = ll_bindings::TSK_CHECK_TREES;
662+
=> CHECK_TREES, TSK_CHECK_TREES);
646663
flag_builder_api!(
647664
/// Set [`CHECK_EDGE_ORDERING`](crate::TableIntegrityCheckFlags::CHECK_EDGE_ORDERING)
648665
=> check_edge_ordering, CHECK_EDGE_ORDERING);
@@ -741,7 +758,7 @@ pub struct IndividualFlags(RawFlags);
741758

742759
impl IndividualFlags {
743760
/// Default (empty)
744-
pub const NONE: RawFlags = 0;
761+
pub const NONE: Self = Self(0);
745762
/// We do not enforce valid flags in the library.
746763
/// This function will return `true` if any bits
747764
/// are set that do not correspond to allowed flags.

0 commit comments

Comments
 (0)