Include dependency graph for pp_array_output.h:

Data Structures

struct  PP_ArrayOutput
 A structure that defines a way for the browser to return arrays of data to the plugin. More...

Typedefs

typedef void *(* PP_ArrayOutput_GetDataBuffer )(void *user_data, uint32_t element_count, uint32_t element_size)

Detailed Description

PP_ArrayOutput_GetDataBuffer is a callback function to allocate plugin memory for an array.

It returns the allocated memory or null on failure.

This function will be called reentrantly. This means that if you call a function PPB_Foo.GetData(&array_output), GetData will call your GetDataBuffer function before it returns.

This function will be called even when returning 0-length arrays, so be sure your implementation can support that. You can return NULL for 0 length arrays and it will not be treated as a failure.

You should not perform any processing in this callback, including calling other PPAPI functions, outside of allocating memory. You should not throw any exceptions. In C++, this means using "new (nothrow)" or being sure to catch any exceptions before returning.

The C++ wrapper provides a convenient templatized implementation around std::vector which you should generally use instead of coding this specifically.

Parameters:
user_dataThe pointer provided in the PP_ArrayOutput structure. This has no meaning to the browser, it is intended to be used by the implementation to figure out where to put the data.
element_countThe number of elements in the array. This will be 0 if there is no data to return.
element_sizeThe size of each element in bytes.
Returns:
Returns a pointer to the allocated memory. On failure, returns null. You can also return null if the element_count is 0. When a non-null value is returned, the buffer must remain valid until after the callback runs. If used with a blocking callback, the buffer must remain valid until after the function returns. The plugin can then free any memory that it allocated.
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.