{{+bindTo:partials.standard_nacl_article}}
| struct PP_Var(* | Create )(uint32_t size_in_bytes) |
| PP_Bool(* | ByteLength )(struct PP_Var array, uint32_t *byte_length) |
| void *(* | Map )(struct PP_Var array) |
| void(* | Unmap )(struct PP_Var array) |
The PPB_VarArrayBuffer interface provides a way to interact with JavaScript ArrayBuffers, which represent a contiguous sequence of bytes.
Use PPB_Var to manage the reference count for a VarArrayBuffer. Note that these Vars are not part of the embedding page's DOM, and can only be shared with JavaScript using the PostMessage and HandleMessage functions of pp::Instance.
| PP_Bool(* PPB_VarArrayBuffer::ByteLength)(struct PP_Var array, uint32_t *byte_length) |
ByteLength() retrieves the length of the VarArrayBuffer in bytes.
On success, byte_length is set to the length of the given ArrayBuffer var. On failure, byte_length is unchanged (this could happen, for instance, if the given PP_Var is not of type PP_VARTYPE_ARRAY_BUFFER). Note that ByteLength() will successfully retrieve the size of an ArrayBuffer even if the ArrayBuffer is not currently mapped.
| [in] | array | The ArrayBuffer whose length should be returned. |
| [out] | byte_length | A variable which is set to the length of the given ArrayBuffer on success. |
PP_TRUE on success, PP_FALSE on failure. struct PP_Var(* PPB_VarArrayBuffer::Create)(uint32_t size_in_bytes) [read] |
| void*(* PPB_VarArrayBuffer::Map)(struct PP_Var array) |
Map() maps the ArrayBuffer in to the module's address space and returns a pointer to the beginning of the buffer for the given ArrayBuffer PP_Var.
ArrayBuffers are copied when transmitted, so changes to the underlying memory are not automatically available to the embedding page.
Note that calling Map() can be a relatively expensive operation. Use care when calling it in performance-critical code. For example, you should call it only once when looping over an ArrayBuffer.
Example:
char* data = (char*)(array_buffer_if.Map(array_buffer_var)); uint32_t byte_length = 0; PP_Bool ok = array_buffer_if.ByteLength(array_buffer_var, &byte_length); if (!ok) return DoSomethingBecauseMyVarIsNotAnArrayBuffer(); for (uint32_t i = 0; i < byte_length; ++i) data[i] = 'A';
| [in] | array | The ArrayBuffer whose internal buffer should be returned. |
ArrayBuffer. Returns NULL if the given PP_Var is not of type PP_VARTYPE_ARRAY_BUFFER. | void(* PPB_VarArrayBuffer::Unmap)(struct PP_Var array) |
Unmap() unmaps the given ArrayBuffer var from the module address space.
Use this if you want to save memory but might want to call Map() to map the buffer again later. The PP_Var remains valid and should still be released using PPB_Var when you are done with the ArrayBuffer.
| [in] | array | The ArrayBuffer to be released. |