Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/tools/fuzzing/libfuzzer/FuzzerRandom.h
Line
Count
Source (jump to first uncovered line)
1
//===- FuzzerRandom.h - Internal header for the Fuzzer ----------*- C++ -* ===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
// fuzzer::Random
10
//===----------------------------------------------------------------------===//
11
12
#ifndef LLVM_FUZZER_RANDOM_H
13
#define LLVM_FUZZER_RANDOM_H
14
15
#include <random>
16
17
namespace fuzzer {
18
class Random : public std::mt19937 {
19
 public:
20
3
  Random(unsigned int seed) : std::mt19937(seed) {}
21
23.8k
  result_type operator()() { return this->std::mt19937::operator()(); }
22
0
  size_t Rand() { return this->operator()(); }
23
0
  size_t RandBool() { return Rand() % 2; }
24
0
  size_t operator()(size_t n) { return n ? Rand() % n : 0; }
25
0
  intptr_t operator()(intptr_t From, intptr_t To) {
26
0
    assert(From < To);
27
0
    intptr_t RangeSize = To - From + 1;
28
0
    return operator()(RangeSize) + From;
29
0
  }
30
};
31
32
}  // namespace fuzzer
33
34
#endif  // LLVM_FUZZER_RANDOM_H