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