V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
regexp-utils.h
1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_REGEXP_REGEXP_UTILS_H_
6 #define V8_REGEXP_REGEXP_UTILS_H_
7 
8 #include "src/objects.h"
9 
10 namespace v8 {
11 namespace internal {
12 
13 class RegExpMatchInfo;
14 
15 // Helper methods for C++ regexp builtins.
16 class RegExpUtils : public AllStatic {
17  public:
18  // Last match info accessors.
19  static Handle<String> GenericCaptureGetter(Isolate* isolate,
20  Handle<RegExpMatchInfo> match_info,
21  int capture, bool* ok = nullptr);
22 
23  // Last index (RegExp.lastIndex) accessors.
24  static V8_WARN_UNUSED_RESULT MaybeHandle<Object> SetLastIndex(
25  Isolate* isolate, Handle<JSReceiver> regexp, uint64_t value);
26  static V8_WARN_UNUSED_RESULT MaybeHandle<Object> GetLastIndex(
27  Isolate* isolate, Handle<JSReceiver> recv);
28 
29  // ES#sec-regexpexec Runtime Semantics: RegExpExec ( R, S )
30  static V8_WARN_UNUSED_RESULT MaybeHandle<Object> RegExpExec(
31  Isolate* isolate, Handle<JSReceiver> regexp, Handle<String> string,
32  Handle<Object> exec);
33 
34  // ES#sec-isregexp IsRegExp ( argument )
35  // Includes checking of the match property.
36  static Maybe<bool> IsRegExp(Isolate* isolate, Handle<Object> object);
37 
38  // Checks whether the given object is an unmodified JSRegExp instance.
39  // Neither the object's map, nor its prototype's map, nor any relevant
40  // method on the prototype may be modified.
41  static bool IsUnmodifiedRegExp(Isolate* isolate, Handle<Object> obj);
42 
43  // ES#sec-advancestringindex
44  // AdvanceStringIndex ( S, index, unicode )
45  static uint64_t AdvanceStringIndex(Handle<String> string, uint64_t index,
46  bool unicode);
47  static V8_WARN_UNUSED_RESULT MaybeHandle<Object> SetAdvancedStringIndex(
48  Isolate* isolate, Handle<JSReceiver> regexp, Handle<String> string,
49  bool unicode);
50 };
51 
52 } // namespace internal
53 } // namespace v8
54 
55 #endif // V8_REGEXP_REGEXP_UTILS_H_
Definition: v8.h:56
Definition: libplatform.h:13