doc: add a note on usage scope of AliasedBuffer
Explain usage context and scope of AliasedBuffer API and its function in the C++ style guide. Provide an example code. Fixes: https://github.com/nodejs/node/issues/22977 PR-URL: https://github.com/nodejs/node/pull/24724 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
This commit is contained in:
parent
841caef9db
commit
447b3907c7
@ -21,6 +21,7 @@
|
|||||||
* [Use explicit pointer comparisons](#use-explicit-pointer-comparisons)
|
* [Use explicit pointer comparisons](#use-explicit-pointer-comparisons)
|
||||||
* [Ownership and Smart Pointers](#ownership-and-smart-pointers)
|
* [Ownership and Smart Pointers](#ownership-and-smart-pointers)
|
||||||
* [Avoid non-const references](#avoid-non-const-references)
|
* [Avoid non-const references](#avoid-non-const-references)
|
||||||
|
* [Use AliasedBuffers to manipulate TypedArrays](#use-aliasedbuffers-to-manipulate-typedarrays)
|
||||||
* [Others](#others)
|
* [Others](#others)
|
||||||
* [Type casting](#type-casting)
|
* [Type casting](#type-casting)
|
||||||
* [Using `auto`](#using-auto)
|
* [Using `auto`](#using-auto)
|
||||||
@ -257,6 +258,21 @@ class ExampleClass {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Use AliasedBuffers to manipulate TypedArrays
|
||||||
|
|
||||||
|
When working with typed arrays that involve direct data modification
|
||||||
|
from C++, use an `AliasedBuffer` when possible. The API abstraction and
|
||||||
|
the usage scope of `AliasedBuffer` are documented in [aliased_buffer.h][].
|
||||||
|
|
||||||
|
```c++
|
||||||
|
// Create an AliasedBuffer.
|
||||||
|
AliasedBuffer<uint32_t, v8::Uint32Array> data;
|
||||||
|
...
|
||||||
|
|
||||||
|
// Modify the data through natural operator semantics.
|
||||||
|
data[0] = 12345;
|
||||||
|
```
|
||||||
|
|
||||||
## Others
|
## Others
|
||||||
|
|
||||||
### Type casting
|
### Type casting
|
||||||
@ -382,3 +398,4 @@ even `try` and `catch` **will** break.
|
|||||||
[Run Time Type Information]: https://en.wikipedia.org/wiki/Run-time_type_information
|
[Run Time Type Information]: https://en.wikipedia.org/wiki/Run-time_type_information
|
||||||
[cppref_auto_ptr]: https://en.cppreference.com/w/cpp/memory/auto_ptr
|
[cppref_auto_ptr]: https://en.cppreference.com/w/cpp/memory/auto_ptr
|
||||||
[without C++ exception handling]: https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html#intro.using.exception.no
|
[without C++ exception handling]: https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html#intro.using.exception.no
|
||||||
|
[aliased_buffer.h]: https://github.com/nodejs/node/blob/master/src/aliased_buffer.h#L12
|
||||||
|
Loading…
x
Reference in New Issue
Block a user