| # ArrayBuffer | |
| Class `Napi::ArrayBuffer` inherits from class [`Napi::Object`][]. | |
| The `Napi::ArrayBuffer` class corresponds to the | |
| [JavaScript `ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) | |
| class. | |
| ## Methods | |
| ### New | |
| Allocates a new `Napi::ArrayBuffer` instance with a given length. | |
| ```cpp | |
| static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, size_t byteLength); | |
| ``` | |
| - `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance. | |
| - `[in] byteLength`: The length to be allocated, in bytes. | |
| Returns a new `Napi::ArrayBuffer` instance. | |
| ### New | |
| > When `NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED` is defined, this method is not available. | |
| > See [External Buffer][] for more information. | |
| Wraps the provided external data into a new `Napi::ArrayBuffer` instance. | |
| The `Napi::ArrayBuffer` instance does not assume ownership for the data and | |
| expects it to be valid for the lifetime of the instance. Since the | |
| `Napi::ArrayBuffer` is subject to garbage collection this overload is only | |
| suitable for data which is static and never needs to be freed. This factory | |
| method will not provide the caller with an opportunity to free the data when the | |
| `Napi::ArrayBuffer` gets garbage-collected. If you need to free the data | |
| retained by the `Napi::ArrayBuffer` object please use other variants of the | |
| `Napi::ArrayBuffer::New` factory method that accept `Napi::Finalizer`, which is | |
| a function that will be invoked when the `Napi::ArrayBuffer` object has been | |
| destroyed. See [Finalization][] for more details. | |
| ```cpp | |
| static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, void* externalData, size_t byteLength); | |
| ``` | |
| - `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance. | |
| - `[in] externalData`: The pointer to the external data to wrap. | |
| - `[in] byteLength`: The length of the `externalData`, in bytes. | |
| Returns a new `Napi::ArrayBuffer` instance. | |
| ### New | |
| > When `NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED` is defined, this method is not available. | |
| > See [External Buffer][] for more information. | |
| Wraps the provided external data into a new `Napi::ArrayBuffer` instance. | |
| The `Napi::ArrayBuffer` instance does not assume ownership for the data and | |
| expects it to be valid for the lifetime of the instance. The data can only be | |
| freed once the `finalizeCallback` is invoked to indicate that the | |
| `Napi::ArrayBuffer` has been released. | |
| ```cpp | |
| template <typename Finalizer> | |
| static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, | |
| void* externalData, | |
| size_t byteLength, | |
| Finalizer finalizeCallback); | |
| ``` | |
| - `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance. | |
| - `[in] externalData`: The pointer to the external data to wrap. | |
| - `[in] byteLength`: The length of the `externalData`, in bytes. | |
| - `[in] finalizeCallback`: A function called when the engine destroys the | |
| `Napi::ArrayBuffer` object, implementing `operator()(Napi::BasicEnv, void*)`. | |
| See [Finalization][] for more details. | |
| Returns a new `Napi::ArrayBuffer` instance. | |
| ### New | |
| > When `NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED` is defined, this method is not available. | |
| > See [External Buffer][] for more information. | |
| Wraps the provided external data into a new `Napi::ArrayBuffer` instance. | |
| The `Napi::ArrayBuffer` instance does not assume ownership for the data and expects it | |
| to be valid for the lifetime of the instance. The data can only be freed once | |
| the `finalizeCallback` is invoked to indicate that the `Napi::ArrayBuffer` has been | |
| released. | |
| ```cpp | |
| template <typename Finalizer, typename Hint> | |
| static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, | |
| void* externalData, | |
| size_t byteLength, | |
| Finalizer finalizeCallback, | |
| Hint* finalizeHint); | |
| ``` | |
| - `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance. | |
| - `[in] externalData`: The pointer to the external data to wrap. | |
| - `[in] byteLength`: The length of the `externalData`, in bytes. | |
| - `[in] finalizeCallback`: A function called when the engine destroys the | |
| `Napi::ArrayBuffer` object, implementing `operator()(Napi::BasicEnv, void*, | |
| Hint*)`. See [Finalization][] for more details. | |
| - `[in] finalizeHint`: The hint value passed to the `finalizeCallback` function. | |
| Returns a new `Napi::ArrayBuffer` instance. | |
| ### Constructor | |
| Initializes an empty instance of the `Napi::ArrayBuffer` class. | |
| ```cpp | |
| Napi::ArrayBuffer::ArrayBuffer(); | |
| ``` | |
| ### Constructor | |
| Initializes a wrapper instance of an existing `Napi::ArrayBuffer` object. | |
| ```cpp | |
| Napi::ArrayBuffer::ArrayBuffer(napi_env env, napi_value value); | |
| ``` | |
| - `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance. | |
| - `[in] value`: The `Napi::ArrayBuffer` reference to wrap. | |
| ### ByteLength | |
| ```cpp | |
| size_t Napi::ArrayBuffer::ByteLength() const; | |
| ``` | |
| Returns the length of the wrapped data, in bytes. | |
| ### Data | |
| ```cpp | |
| void* Napi::ArrayBuffer::Data() const; | |
| ``` | |
| Returns a pointer the wrapped data. | |
| ### Detach | |
| ```cpp | |
| void Napi::ArrayBuffer::Detach(); | |
| ``` | |
| Invokes the `ArrayBuffer` detach operation on a detachable `ArrayBuffer`. | |
| ### IsDetached | |
| ```cpp | |
| bool Napi::ArrayBuffer::IsDetached() const; | |
| ``` | |
| Returns `true` if this `ArrayBuffer` has been detached. | |
| [`Napi::Object`]: ./object.md | |
| [External Buffer]: ./external_buffer.md | |
| [Finalization]: ./finalization.md |