20 instruction_block.insert(instruction_block.end(), instructions.begin(), instructions.end());
22 return instruction_block;
30 if (instruction_block.empty()) {
32 instruction_block.insert(instruction_block.end(), new_instructions.begin(), new_instructions.end());
41 if (!new_instructions.empty()) {
43 size_t index = dist(rng);
45 new_instructions.begin(),
46 new_instructions.end());
::FuzzInstruction FuzzInstruction
T select(std::mt19937_64 &rng) const
constexpr VecMutationConfig BASIC_VEC_MUTATION_CONFIGURATION
constexpr uint16_t MAX_INSTRUCTION_BLOCK_SIZE_ON_GENERATION
void mutate_instruction(FuzzInstruction &instruction, std::mt19937_64 &rng, const FuzzerContext &context)
void mutate_instruction_block(std::vector< FuzzInstruction > &instruction_block, std::mt19937_64 &rng, const FuzzerContext &context)
std::vector< FuzzInstruction > generate_instruction(std::mt19937_64 &rng, const FuzzerContext &context)
Generate one instruction and optionally backfill.
std::vector< FuzzInstruction > generate_instruction_block(std::mt19937_64 &rng, const FuzzerContext &context)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static void mutate(std::mt19937_64 &rng, std::vector< T > &vec)
static void mutate(std::mt19937_64 &rng, std::vector< T > &vec, MutateFn &&mutate_element_function)
static void mutate(std::mt19937_64 &rng, std::vector< T > &vec)