5 #ifndef PPAPI_CPP_ARRAY_OUTPUT_H_
6 #define PPAPI_CPP_ARRAY_OUTPUT_H_
10 #include "ppapi/c/pp_array_output.h"
11 #include "ppapi/c/pp_resource.h"
26 template<
typename ResourceObjectType>
29 const std::vector<PP_Resource>& input,
30 std::vector<ResourceObjectType>* output) {
32 output->reserve(input.size());
33 for (
size_t i = 0; i < input.size(); i++)
34 output->push_back(ResourceObjectType(
PASS_REF, input[i]));
44 pp_array_output_.GetDataBuffer =
45 &ArrayOutputAdapterBase::GetDataBufferThunk;
46 pp_array_output_.user_data =
this;
54 uint32_t element_size) = 0;
57 static void* GetDataBufferThunk(
void* user_data,
58 uint32_t element_count,
59 uint32_t element_size);
61 PP_ArrayOutput pp_array_output_;
91 void set_output(std::vector<T>* output) { output_ = output; }
94 virtual void*
GetDataBuffer(uint32_t element_count, uint32_t element_size) {
95 if (element_count == 0)
98 if (element_size !=
sizeof(
T))
100 output_->resize(element_count);
101 return &(*output_)[0];
105 std::vector<T>* output_;
144 uint32_t element_size) {
145 if (element_count == 0)
150 intermediate_output_.resize(element_count);
151 return &intermediate_output_[0];
155 std::vector<PP_Resource> intermediate_output_;
156 std::vector<T>* output_;
182 std::vector<T>&
output() {
return output_storage_; }
185 std::vector<T> output_storage_;
211 std::vector<Var>&
output();
215 std::vector<PP_Var> temp_storage_;
219 std::vector<Var> output_storage_;
242 if (!temp_storage_.empty()) {
257 temp_storage_.clear();
258 return output_storage_;
263 std::vector<PP_Resource> temp_storage_;
267 std::vector<T> output_storage_;
272 #endif // PPAPI_CPP_ARRAY_OUTPUT_H_
virtual ~ArrayOutputAdapterBase()
const PP_ArrayOutput & pp_array_output()
ArrayOutputAdapterWithStorage()
ResourceArrayOutputAdapter(std::vector< T > *output)
virtual void * GetDataBuffer(uint32_t element_count, uint32_t element_size)
virtual ~ResourceArrayOutputAdapter()
std::vector< T > & output()
virtual ~VarArrayOutputAdapterWithStorage()
virtual void * GetDataBuffer(uint32_t element_count, uint32_t element_size)
void set_output(std::vector< T > *output)
ResourceArrayOutputAdapter()
ResourceArrayOutputAdapterWithStorage()
VarArrayOutputAdapterWithStorage()
std::vector< T > & output()
void set_output(T *output)
virtual ~ResourceArrayOutputAdapterWithStorage()
virtual void * GetDataBuffer(uint32_t element_count, uint32_t element_size)=0
void ConvertPPResourceArrayToObjects(PassRef, const std::vector< PP_Resource > &input, std::vector< ResourceObjectType > *output)
ArrayOutputAdapter(std::vector< T > *output)
std::vector< Var > & output()