v8  10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
v8-extension.h
Go to the documentation of this file.
1 // Copyright 2021 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 INCLUDE_V8_EXTENSION_H_
6 #define INCLUDE_V8_EXTENSION_H_
7 
8 #include <memory>
9 
10 #include "v8-local-handle.h" // NOLINT(build/include_directory)
11 #include "v8-primitive.h" // NOLINT(build/include_directory)
12 #include "v8config.h" // NOLINT(build/include_directory)
13 
14 namespace v8 {
15 
16 class FunctionTemplate;
17 
18 // --- Extensions ---
19 
20 /**
21  * Ignore
22  */
24  public:
25  // Note that the strings passed into this constructor must live as long
26  // as the Extension itself.
27  Extension(const char* name, const char* source = nullptr, int dep_count = 0,
28  const char** deps = nullptr, int source_length = -1);
29  virtual ~Extension() { delete source_; }
31  Isolate* isolate, Local<String> name) {
33  }
34 
35  const char* name() const { return name_; }
36  size_t source_length() const { return source_length_; }
38  return source_;
39  }
40  int dependency_count() const { return dep_count_; }
41  const char** dependencies() const { return deps_; }
42  void set_auto_enable(bool value) { auto_enable_ = value; }
43  bool auto_enable() { return auto_enable_; }
44 
45  // Disallow copying and assigning.
46  Extension(const Extension&) = delete;
47  void operator=(const Extension&) = delete;
48 
49  private:
50  const char* name_;
51  size_t source_length_; // expected to initialize before source_
53  int dep_count_;
54  const char** deps_;
55  bool auto_enable_;
56 };
57 
58 void V8_EXPORT RegisterExtension(std::unique_ptr<Extension>);
59 
60 } // namespace v8
61 
62 #endif // INCLUDE_V8_EXTENSION_H_