@@ -117,30 +117,35 @@ pub struct SimplificationOptions(RawFlags);
117117
118118impl 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
279284impl 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
352357impl 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
401406impl 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
429435impl 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
469475impl 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
546554impl 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
627636impl 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
742759impl 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