ArrayPrototype.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <andreas@ladybird.org>
  3. * Copyright (c) 2020-2022, Linus Groh <linusg@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <LibJS/Runtime/Array.h>
  9. namespace JS {
  10. class ArrayPrototype final : public Array {
  11. JS_OBJECT(ArrayPrototype, Array);
  12. GC_DECLARE_ALLOCATOR(ArrayPrototype);
  13. public:
  14. virtual void initialize(Realm&) override;
  15. virtual ~ArrayPrototype() override = default;
  16. private:
  17. explicit ArrayPrototype(Realm&);
  18. JS_DECLARE_NATIVE_FUNCTION(at);
  19. JS_DECLARE_NATIVE_FUNCTION(concat);
  20. JS_DECLARE_NATIVE_FUNCTION(copy_within);
  21. JS_DECLARE_NATIVE_FUNCTION(entries);
  22. JS_DECLARE_NATIVE_FUNCTION(every);
  23. JS_DECLARE_NATIVE_FUNCTION(fill);
  24. JS_DECLARE_NATIVE_FUNCTION(filter);
  25. JS_DECLARE_NATIVE_FUNCTION(find);
  26. JS_DECLARE_NATIVE_FUNCTION(find_index);
  27. JS_DECLARE_NATIVE_FUNCTION(find_last);
  28. JS_DECLARE_NATIVE_FUNCTION(find_last_index);
  29. JS_DECLARE_NATIVE_FUNCTION(flat);
  30. JS_DECLARE_NATIVE_FUNCTION(flat_map);
  31. JS_DECLARE_NATIVE_FUNCTION(for_each);
  32. JS_DECLARE_NATIVE_FUNCTION(group);
  33. JS_DECLARE_NATIVE_FUNCTION(group_to_map);
  34. JS_DECLARE_NATIVE_FUNCTION(includes);
  35. JS_DECLARE_NATIVE_FUNCTION(index_of);
  36. JS_DECLARE_NATIVE_FUNCTION(join);
  37. JS_DECLARE_NATIVE_FUNCTION(keys);
  38. JS_DECLARE_NATIVE_FUNCTION(last_index_of);
  39. JS_DECLARE_NATIVE_FUNCTION(map);
  40. JS_DECLARE_NATIVE_FUNCTION(pop);
  41. JS_DECLARE_NATIVE_FUNCTION(push);
  42. JS_DECLARE_NATIVE_FUNCTION(reduce);
  43. JS_DECLARE_NATIVE_FUNCTION(reduce_right);
  44. JS_DECLARE_NATIVE_FUNCTION(reverse);
  45. JS_DECLARE_NATIVE_FUNCTION(shift);
  46. JS_DECLARE_NATIVE_FUNCTION(slice);
  47. JS_DECLARE_NATIVE_FUNCTION(some);
  48. JS_DECLARE_NATIVE_FUNCTION(sort);
  49. JS_DECLARE_NATIVE_FUNCTION(splice);
  50. JS_DECLARE_NATIVE_FUNCTION(to_locale_string);
  51. JS_DECLARE_NATIVE_FUNCTION(to_reversed);
  52. JS_DECLARE_NATIVE_FUNCTION(to_sorted);
  53. JS_DECLARE_NATIVE_FUNCTION(to_spliced);
  54. JS_DECLARE_NATIVE_FUNCTION(to_string);
  55. JS_DECLARE_NATIVE_FUNCTION(unshift);
  56. JS_DECLARE_NATIVE_FUNCTION(values);
  57. JS_DECLARE_NATIVE_FUNCTION(with);
  58. };
  59. ThrowCompletionOr<void> array_merge_sort(VM&, Function<ThrowCompletionOr<double>(Value, Value)> const& compare_func, GC::RootVector<Value>& arr_to_sort);
  60. }