Loading...
Searching...
No Matches
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
14namespace v8 {
15
16class FunctionTemplate;
17
18// --- Extensions ---
19
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
58void V8_EXPORT RegisterExtension(std::unique_ptr<Extension>);
59
60} // namespace v8
61
62#endif // INCLUDE_V8_EXTENSION_H_
Definition: v8-extension.h:23
virtual Local< FunctionTemplate > GetNativeFunctionTemplate(Isolate *isolate, Local< String > name)
Definition: v8-extension.h:30
const String::ExternalOneByteStringResource * source() const
Definition: v8-extension.h:37
size_t source_length() const
Definition: v8-extension.h:36
Extension(const Extension &)=delete
Extension(const char *name, const char *source=nullptr, int dep_count=0, const char **deps=nullptr, int source_length=-1)
void operator=(const Extension &)=delete
virtual ~Extension()
Definition: v8-extension.h:29
const char ** dependencies() const
Definition: v8-extension.h:41
int dependency_count() const
Definition: v8-extension.h:40
bool auto_enable()
Definition: v8-extension.h:43
void set_auto_enable(bool value)
Definition: v8-extension.h:42
const char * name() const
Definition: v8-extension.h:35
Definition: v8-isolate.h:261
Definition: v8-local-handle.h:266
Definition: v8-primitive.h:411
Definition: libplatform.h:15
void RegisterExtension(std::unique_ptr< Extension >)
#define V8_EXPORT
Definition: v8config.h:793