1 #pragma once
2 #include <stdint.h>
3 #include <vector>
4 #include "../basic/packed_loc.h"
5 #include "../masking/def.h"
6 
7 enum class SeedEncoding { SPACED_FACTOR, HASHED, CONTIGUOUS };
8 
9 struct NoFilter
10 {
containsNoFilter11 	bool contains(uint64_t seed, uint64_t shape) const
12 	{
13 		return true;
14 	}
15 };
16 
17 extern NoFilter no_filter;
18 
19 #ifdef KEEP_TARGET_ID
20 struct SeedLoc {
ValueSeedLoc21 	Value() {}
ValueSeedLoc22 	Value(PackedLoc pos) :
23 		pos(pos) {}
ValueSeedLoc24 	Value(PackedLoc pos, uint32_t block_id) :
25 		pos(pos),
26 		block_id(block_id)
27 	{}
uint64_tSeedLoc28 	operator uint64_t() const {
29 		return (uint64_t)pos;
30 	}
31 	PackedLoc pos;
32 	uint32_t block_id;
33 };
34 #else
35 using SeedLoc = PackedLoc;
36 #endif
37 
38 struct EnumCfg {
39 	const std::vector<size_t>* partition;
40 	const size_t shape_begin, shape_end;
41 	const SeedEncoding code;
42 	const std::vector<bool>* const skip;
43 	const bool filter_masked_seeds, mask_seeds;
44 	const double seed_cut;
45 	const MaskingAlgo soft_masking;
46 };
47