Quick Links: |
#include <bslim_fuzzutil.h>
Static Public Member Functions | |
static bool | consumeBool (FuzzDataView *fuzzDataView) |
template<class TYPE > | |
static bsl::enable_if < bsl::is_integral< TYPE > ::value, TYPE >::type | consumeNumber (FuzzDataView *fuzzDataView) |
template<class TYPE > | |
static bsl::enable_if < bsl::is_floating_point< TYPE > ::value, TYPE >::type | consumeNumber (FuzzDataView *fuzzDataView) |
template<class TYPE > | |
static bsl::enable_if < bsl::is_integral< TYPE > ::value, TYPE >::type | consumeNumberInRange (FuzzDataView *fuzzDataView, TYPE min, TYPE max) |
template<class TYPE > | |
static bsl::enable_if < bsl::is_floating_point< TYPE > ::value, TYPE >::type | consumeNumberInRange (FuzzDataView *fuzzDataView, TYPE min, TYPE max) |
static void | consumeRandomLengthChars (bsl::vector< char > *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength) |
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 void | consumeRandomLengthString (std::string *output, FuzzDataView *fuzzDataView, bsl::size_t maxLength) |
This utility struct
provides a namespace for a suite of functions operating on objects of type 'FuzzDataView'and providing the consumption of fuzz data bytes into fundamental and standard library types.
static bool bslim::FuzzUtil::consumeBool | ( | FuzzDataView * | fuzzDataView | ) | [static] |
Return a bool
value based upon consuming a single byte from the specified fuzzDataView
. If fuzzDataView->length()
is 0, return false
.
static bsl::enable_if<bsl::is_integral<TYPE>::value, TYPE>::type bslim::FuzzUtil::consumeNumber | ( | FuzzDataView * | fuzzDataView | ) | [static] |
static bsl::enable_if<bsl::is_floating_point<TYPE>::value, TYPE>::type bslim::FuzzUtil::consumeNumber | ( | FuzzDataView * | fuzzDataView | ) | [static] |
Return a value of (template parameter) TYPE
in the range [min .. max] -- where min
and max
are the minimum and maximum values representable by the TYPE
-- based on at most the next sizeof(TYPE) + 1
bytes from the specified fuzzDataView
, and update fuzzDataView
to reflect the bytes consumed. If 0 == fuzzDataView->length()
, return the minimum value of TYPE
. This function does not participate in overload resolution unless either bsl::is_integral<TYPE>value
or bsl::is_floating_point<TYPE>value
is true
. The behavior is undefined if bsl::is_same<TYPE, bool>value
or bsl::is_same<TYPE, long double>
is true
.
static bsl::enable_if<bsl::is_integral<TYPE>::value, TYPE>::type bslim::FuzzUtil::consumeNumberInRange | ( | FuzzDataView * | fuzzDataView, | |
TYPE | min, | |||
TYPE | max | |||
) | [static] |
static bsl::enable_if<bsl::is_floating_point<TYPE>::value, TYPE>::type bslim::FuzzUtil::consumeNumberInRange | ( | FuzzDataView * | fuzzDataView, | |
TYPE | min, | |||
TYPE | max | |||
) | [static] |
Return a value of (template parameter) TYPE
in the specified range [min .. max] based on at most the next sizeof(TYPE) + 1
bytes from the specified fuzzDataView
, and update fuzzDataView
to reflect the bytes consumed. If 0 == fuzzDataView->length()
, return the specified min
. This function does not participate in overload resolution unless either bsl::is_integral<TYPE>value
or bsl::is_floating_point<TYPE>value
is true
. The behavior is undefined if min > max
, min
or max
is not finite, or either bsl::is_same<TYPE, bool>value
or bsl::is_same<TYPE, long double>
is true
.
static void bslim::FuzzUtil::consumeRandomLengthChars | ( | bsl::vector< char > * | output, | |
FuzzDataView * | fuzzDataView, | |||
bsl::size_t | maxLength | |||
) | [static] |
static void bslim::FuzzUtil::consumeRandomLengthChars | ( | std::vector< char > * | output, | |
FuzzDataView * | fuzzDataView, | |||
bsl::size_t | maxLength | |||
) | [static] |
Load into the specified output
a sequence of characters of length from 0 to the specified maxLength
. If the specified fuzzDataView
has fewer bytes than maxLength
, load at most fuzzDataView->length()
bytes into output
. If the buffer in fuzzDataView
contains two successive backslash characters, then in output
they will be converted to a single backslash (\\
) character; if a single backslash character is encountered, the consumption of bytes is terminated. Note that because double backslashes are mapped to single backslashes, more than maxLength
bytes may be consumed from the buffer to produce the output
. Also note that the purpose of this function is to enable the creation of a non-zero-terminated string_view
, which is not possible with the string
counterpart.
static void bslim::FuzzUtil::consumeRandomLengthString | ( | bsl::string * | output, | |
FuzzDataView * | fuzzDataView, | |||
bsl::size_t | maxLength | |||
) | [static] |
static void bslim::FuzzUtil::consumeRandomLengthString | ( | std::string * | output, | |
FuzzDataView * | fuzzDataView, | |||
bsl::size_t | maxLength | |||
) | [static] |
Load into the specified output
a string of length from 0 to the specified maxLength
. If the specified fuzzDataView
has fewer bytes than maxLength
, load at most fuzzDataView->length()
bytes into output
. If the buffer in fuzzDataView
contains two successive backslash characters, then in output
they will be converted to a single backslash (\\
) character; if a single backslash character is encountered, the consumption of bytes is terminated. Note that because double backslashes are mapped to single backslashes, more than maxLength
bytes may be consumed from the buffer to produce the output
.