fuzzing.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // -*- C++ -*-
  2. //===-------------------------- fuzzing.h --------------------------------===//
  3. //
  4. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  5. // See https://llvm.org/LICENSE.txt for license information.
  6. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #ifndef _LIBCPP_FUZZING
  10. #define _LIBCPP_FUZZING
  11. #include <cstddef> // for size_t
  12. #include <cstdint> // for uint8_t
  13. namespace fuzzing {
  14. // These all return 0 on success; != 0 on failure
  15. int sort (const uint8_t *data, size_t size);
  16. int stable_sort (const uint8_t *data, size_t size);
  17. int partition (const uint8_t *data, size_t size);
  18. int partition_copy (const uint8_t *data, size_t size);
  19. int stable_partition (const uint8_t *data, size_t size);
  20. int unique (const uint8_t *data, size_t size);
  21. int unique_copy (const uint8_t *data, size_t size);
  22. // partition and stable_partition take Bi-Di iterators.
  23. // Should test those, too
  24. int nth_element (const uint8_t *data, size_t size);
  25. int partial_sort (const uint8_t *data, size_t size);
  26. int partial_sort_copy (const uint8_t *data, size_t size);
  27. // Heap operations
  28. int make_heap (const uint8_t *data, size_t size);
  29. int push_heap (const uint8_t *data, size_t size);
  30. int pop_heap (const uint8_t *data, size_t size);
  31. // Various flavors of regex
  32. int regex_ECMAScript (const uint8_t *data, size_t size);
  33. int regex_POSIX (const uint8_t *data, size_t size);
  34. int regex_extended (const uint8_t *data, size_t size);
  35. int regex_awk (const uint8_t *data, size_t size);
  36. int regex_grep (const uint8_t *data, size_t size);
  37. int regex_egrep (const uint8_t *data, size_t size);
  38. // Searching
  39. int search (const uint8_t *data, size_t size);
  40. // int search_boyer_moore (const uint8_t *data, size_t size);
  41. // int search_boyer_moore_horspool (const uint8_t *data, size_t size);
  42. // Set operations
  43. // int includes (const uint8_t *data, size_t size);
  44. // int set_union (const uint8_t *data, size_t size);
  45. // int set_intersection (const uint8_t *data, size_t size);
  46. // int set_difference (const uint8_t *data, size_t size);
  47. // int set_symmetric_difference (const uint8_t *data, size_t size);
  48. // int merge (const uint8_t *data, size_t size);
  49. } // namespace fuzzing
  50. #endif // _LIBCPP_FUZZING