v8  10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
v8-external.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_EXTERNAL_H_
6 #define INCLUDE_V8_EXTERNAL_H_
7 
8 #include "v8-value.h" // NOLINT(build/include_directory)
9 #include "v8config.h" // NOLINT(build/include_directory)
10 
11 namespace v8 {
12 
13 class Isolate;
14 
15 /**
16  * A JavaScript value that wraps a C++ void*. This type of value is mainly used
17  * to associate C++ data structures with JavaScript objects.
18  */
19 class V8_EXPORT External : public Value {
20  public:
21  static Local<External> New(Isolate* isolate, void* value);
22  V8_INLINE static External* Cast(Value* value) {
23 #ifdef V8_ENABLE_CHECKS
24  CheckCast(value);
25 #endif
26  return static_cast<External*>(value);
27  }
28 
29  void* Value() const;
30 
31  private:
32  static void CheckCast(v8::Value* obj);
33 };
34 
35 } // namespace v8
36 
37 #endif // INCLUDE_V8_EXTERNAL_H_