blob: 06f58904b1fcb6ed62f6aef038086b11391ee989 [file] [log] [blame]
Marshall Clow29ae2ba2017-10-04 22:23:03 +00001// -*- 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
17namespace fuzzing {
18
Marshall Clowf45f32b2017-10-23 23:19:30 +000019// 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);
Marshall Clow772a6d42017-10-30 19:51:58 +000023 int partition_copy (const uint8_t *data, size_t size);
Marshall Clowf45f32b2017-10-23 23:19:30 +000024 int stable_partition (const uint8_t *data, size_t size);
Marshall Clow772a6d42017-10-30 19:51:58 +000025 int unique (const uint8_t *data, size_t size);
26 int unique_copy (const uint8_t *data, size_t size);
Marshall Clow29ae2ba2017-10-04 22:23:03 +000027
Marshall Clowf45f32b2017-10-23 23:19:30 +000028// partition and stable_partition take Bi-Di iterators.
29// Should test those, too
Marshall Clow772a6d42017-10-30 19:51:58 +000030 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);
Marshall Clow29ae2ba2017-10-04 22:23:03 +000033
Marshall Clowf45f32b2017-10-23 23:19:30 +000034// 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);
Marshall Clowc85f85a2017-10-12 14:48:09 +000038
Marshall Clowf45f32b2017-10-23 23:19:30 +000039// 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);
Marshall Clowc85f85a2017-10-12 14:48:09 +000051
Marshall Clow772a6d42017-10-30 19:51:58 +000052// 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
Marshall Clow29ae2ba2017-10-04 22:23:03 +000060} // namespace fuzzing
61
62#endif // _LIBCPP_FUZZING