1 // -*- C++ -*- 2 //===-------------------------- fuzzing.h --------------------------------===// 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is dual licensed under the MIT and the University of Illinois Open 7 // Source Licenses. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 11 #ifndef _LIBCPP_FUZZING 12 #define _LIBCPP_FUZZING 13 14 #include <cstddef> // for size_t 15 #include <cstdint> // for uint8_t 16 17 namespace fuzzing { 18 19 // These all return 0 on success; != 0 on failure 20 int sort (const uint8_t *data, size_t size); 21 int stable_sort (const uint8_t *data, size_t size); 22 int partition (const uint8_t *data, size_t size); 23 int partition_copy (const uint8_t *data, size_t size); 24 int stable_partition (const uint8_t *data, size_t size); 25 int unique (const uint8_t *data, size_t size); 26 int unique_copy (const uint8_t *data, size_t size); 27 28 // partition and stable_partition take Bi-Di iterators. 29 // Should test those, too 30 int nth_element (const uint8_t *data, size_t size); 31 int partial_sort (const uint8_t *data, size_t size); 32 int partial_sort_copy (const uint8_t *data, size_t size); 33 34 // Heap operations 35 int make_heap (const uint8_t *data, size_t size); 36 int push_heap (const uint8_t *data, size_t size); 37 int pop_heap (const uint8_t *data, size_t size); 38 39 // Various flavors of regex 40 int regex_ECMAScript (const uint8_t *data, size_t size); 41 int regex_POSIX (const uint8_t *data, size_t size); 42 int regex_extended (const uint8_t *data, size_t size); 43 int regex_awk (const uint8_t *data, size_t size); 44 int regex_grep (const uint8_t *data, size_t size); 45 int regex_egrep (const uint8_t *data, size_t size); 46 47 // Searching 48 int search (const uint8_t *data, size_t size); 49 // int search_boyer_moore (const uint8_t *data, size_t size); 50 // int search_boyer_moore_horspool (const uint8_t *data, size_t size); 51 52 // Set operations 53 // int includes (const uint8_t *data, size_t size); 54 // int set_union (const uint8_t *data, size_t size); 55 // int set_intersection (const uint8_t *data, size_t size); 56 // int set_difference (const uint8_t *data, size_t size); 57 // int set_symmetric_difference (const uint8_t *data, size_t size); 58 // int merge (const uint8_t *data, size_t size); 59 60 } // namespace fuzzing 61 62 #endif // _LIBCPP_FUZZING 63