8#ifndef INCLUDED_BSLIM_FUZZUTIL
9#define INCLUDED_BSLIM_FUZZUTIL
122#include <bslscm_version.h>
132#include <bsl_cmath.h>
133#include <bsl_cstdint.h>
134#include <bsl_limits.h>
135#include <bsl_string.h>
136#include <bsl_type_traits.h>
137#include <bsl_vector.h>
163 template <
class TYPE>
179 template <
class TYPE>
195 template <
class TYPE>
201 template <
class TYPE>
220 bsl::size_t maxLength);
223 bsl::size_t maxLength);
224#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
227 bsl::size_t maxLength);
245 bsl::size_t maxLength);
248 bsl::size_t maxLength);
249#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR
252 bsl::size_t maxLength);
268 bsl::size_t maxLength);
271 bsl::size_t maxLength);
272#ifdef BSLS_LIBRARYFEATURES_HAS_CPP17_PMR_STRING
275 bsl::size_t maxLength);
291 return 1 & consumeNumber<bsl::uint8_t>(fuzzDataView);
299 bsl::numeric_limits<TYPE>::min(),
300 bsl::numeric_limits<TYPE>::max());
309 -bsl::numeric_limits<TYPE>::max(),
310 bsl::numeric_limits<TYPE>::max());
327 rangeCpy >>= 8, ++numBytes) {
334 for (
const bsl::uint8_t *it = prefix.
begin(); it != prefix.
end(); it++) {
335 addend = (addend << 8) | *it;
338 if (bsl::numeric_limits<bsls::Types::Uint64>::max() != range) {
339 addend %= (range + 1);
342 return static_cast<TYPE
>(min + addend);
355 BSLS_ASSERT(bsl::numeric_limits<TYPE>::infinity() != max &&
356 -bsl::numeric_limits<TYPE>::infinity() != min);
360 const TYPE k_HALF = 0.5;
362 if (max > min + bsl::numeric_limits<TYPE>::max()) {
363 range = max * k_HALF - min * k_HALF;
365 addend = min + range;
377 static_cast<TYPE
>(consumeNumber<IntegralType>(fuzzDataView)) /
379 bsl::numeric_limits<IntegralType>::max());
381 return addend + range * factor;
Definition bslstl_string.h:1252
Definition bslstl_vector.h:1120
Definition bslim_fuzzdataview.h:130
const bsl::uint8_t * end() const
Return a const pointer to the end of the buffer.
Definition bslim_fuzzdataview.h:238
const bsl::uint8_t * begin() const
Return a const pointer to the beginning of the buffer.
Definition bslim_fuzzdataview.h:232
FuzzDataView removePrefix(bsl::size_t numBytes)
Definition bslim_fuzzdataview.h:209
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bslim_formatguard.h:120
Definition bslmf_conditional.h:123
Definition bslmf_enableif.h:530
Definition bslmf_isintegral.h:140
Definition bslmf_issame.h:146
Definition bslim_fuzzutil.h:154
static void consumeRandomLengthChars(bsl::vector< char > *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static void consumeRandomLengthAsciiString(bsl::string *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static void consumeRandomLengthString(std::string *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static void consumeRandomLengthAsciiString(std::string *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static bool consumeBool(FuzzDataView *fuzzDataView)
Definition bslim_fuzzutil.h:289
static bsl::enable_if< bsl::is_integral< TYPE >::value, TYPE >::type consumeNumber(FuzzDataView *fuzzDataView)
Definition bslim_fuzzutil.h:296
static bsl::enable_if< bsl::is_integral< TYPE >::value, TYPE >::type consumeNumberInRange(FuzzDataView *fuzzDataView, TYPE min, TYPE max)
Definition bslim_fuzzutil.h:315
static void consumeRandomLengthChars(std::vector< char > *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static void consumeRandomLengthString(bsl::string *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength)
static bsl::enable_if< bsl::is_floating_point< TYPE >::value, TYPE >::type consumeNumberInRange(FuzzDataView *fuzzDataView, TYPE min, TYPE max)
static bsl::enable_if< bsl::is_floating_point< TYPE >::value, TYPE >::type consumeNumber(FuzzDataView *fuzzDataView)
unsigned long long Uint64
Definition bsls_types.h:139