26 explicit Fuzz(
const uint8_t* data,
size_t size) : fData(data), fSize(
size), fNextByte(0) {}
40 return fSize == fNextByte;
48 return fSize - fNextByte;
52 return fData + fNextByte;
64 void next(
T* t) { this->nextBytes(t,
sizeof(
T)); }
67 template <
typename Arg,
typename... Args>
68 void next(Arg* first, Args... rest);
71 template <
typename T,
typename Min,
typename Max>
101 template <
typename T>
104 const uint8_t *fData;
109 void nextBytes(
void* ptr,
size_t size);
112template <
typename Arg,
typename... Args>
118template <
typename T,
typename Min,
typename Max>
125 if (raw < (Raw)
min) { raw = (Raw)
min; }
126 if (raw > (Raw)
max) { raw = (Raw)
max; }
135 using U =
typename std::underlying_type<T>::type;
138 if (v < (U)0) { *
value = (
T)0;
return;}
145 for (
int i = 0; i < n; i++) {
156#define DEF_FUZZ(name, f) \
157 void fuzz_##name(Fuzz*); \
158 sk_tools::Registry<Fuzzable> register_##name({#name, fuzz_##name}); \
159 void fuzz_##name(Fuzz* f)
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
Fuzz & operator=(Fuzz &)=delete
size_t remainingSize() const
const uint8_t * remainingData() const
void nextRange(T *, Min, Max)
friend void fuzz__MakeEncoderCorpus(Fuzz *)
void nextEnum(T *ptr, T max)
Fuzz(const uint8_t *data, size_t size)
void nextN(T *ptr, int n)
static float max(float r, float g, float b)
static float min(float r, float g, float b)