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