// Copyright 2021 the V8 project authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#ifndef INCLUDE_V8_EXTERNAL_H_#define INCLUDE_V8_EXTERNAL_H_#include "v8-value.h" // NOLINT(build/include_directory)#include "v8config.h" // NOLINT(build/include_directory)namespacev8{classIsolate;/** * A JavaScript value that wraps a C++ void*. This type of value is mainly used * to associate C++ data structures with JavaScript objects. */classV8_EXPORTExternal:publicValue{public:staticLocal<External>New(Isolate*isolate,void*value);V8_INLINEstaticExternal*Cast(Value*value){#ifdef V8_ENABLE_CHECKSCheckCast(value);#endifreturnstatic_cast<External*>(value);}void*Value()const;private:staticvoidCheckCast(v8::Value*obj);};}// namespace v8#endif // INCLUDE_V8_EXTERNAL_H_