Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: ppapi/cpp/array_output.h

Issue 14784002: Move DirectoryReader::ReadEntries to FileRef::ReadDirectoryEntries (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: address comments by dmichael and raymes Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_CPP_ARRAY_OUTPUT_H_ 5 #ifndef PPAPI_CPP_ARRAY_OUTPUT_H_
6 #define PPAPI_CPP_ARRAY_OUTPUT_H_ 6 #define PPAPI_CPP_ARRAY_OUTPUT_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "ppapi/c/dev/ppb_directory_reader_dev.h"
11 #include "ppapi/c/pp_array_output.h" 10 #include "ppapi/c/pp_array_output.h"
12 #include "ppapi/c/pp_resource.h" 11 #include "ppapi/c/pp_resource.h"
13 #include "ppapi/cpp/dev/directory_entry_dev.h" 12 #include "ppapi/cpp/directory_entry.h"
14 #include "ppapi/cpp/logging.h" 13 #include "ppapi/cpp/logging.h"
15 #include "ppapi/cpp/pass_ref.h" 14 #include "ppapi/cpp/pass_ref.h"
16 #include "ppapi/cpp/var.h" 15 #include "ppapi/cpp/var.h"
17 16
18 namespace pp { 17 namespace pp {
19 18
20 // Converts the given array of PP_Resources into an array of the requested 19 // Converts the given array of PP_Resources into an array of the requested
21 // C++ resource types, passing ownership of a reference in the process. 20 // C++ resource types, passing ownership of a reference in the process.
22 // 21 //
23 // This is used to convert output arrays of resources that the browser has 22 // This is used to convert output arrays of resources that the browser has
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 private: 262 private:
264 // The browser will write the PP_Resources into this array. 263 // The browser will write the PP_Resources into this array.
265 std::vector<PP_Resource> temp_storage_; 264 std::vector<PP_Resource> temp_storage_;
266 265
267 // When asked for the output, the resources above will be converted to the 266 // When asked for the output, the resources above will be converted to the
268 // C++ resource objects in this array for passing to the calling code. 267 // C++ resource objects in this array for passing to the calling code.
269 std::vector<T> output_storage_; 268 std::vector<T> output_storage_;
270 }; 269 };
271 270
272 class DirectoryEntryArrayOutputAdapterWithStorage 271 class DirectoryEntryArrayOutputAdapterWithStorage
273 : public ArrayOutputAdapter<PP_DirectoryEntry_Dev> { 272 : public ArrayOutputAdapter<PP_DirectoryEntry> {
274 public: 273 public:
275 DirectoryEntryArrayOutputAdapterWithStorage() { 274 DirectoryEntryArrayOutputAdapterWithStorage() {
276 set_output(&temp_storage_); 275 set_output(&temp_storage_);
277 }; 276 };
278 277
279 virtual ~DirectoryEntryArrayOutputAdapterWithStorage() { 278 virtual ~DirectoryEntryArrayOutputAdapterWithStorage() {
280 if (!temp_storage_.empty()) { 279 if (!temp_storage_.empty()) {
281 // An easy way to release the resource references held by |temp_storage_|. 280 // An easy way to release the resource references held by |temp_storage_|.
282 // A destructor for PP_DirectoryEntry_Dev will release them. 281 // A destructor for PP_DirectoryEntry will release them.
283 output(); 282 output();
284 } 283 }
285 }; 284 };
286 285
287 // Returns the final array of resource objects, converting the 286 // Returns the final array of resource objects, converting the
288 // PP_DirectoryEntry_Dev written by the browser to pp::DirectoryEntry_Dev 287 // PP_DirectoryEntry written by the browser to pp::DirectoryEntry
289 // objects. 288 // objects.
290 // 289 //
291 // This function should only be called once or we would end up converting 290 // This function should only be called once or we would end up converting
292 // the array more than once, which would mess up the refcounting. 291 // the array more than once, which would mess up the refcounting.
293 std::vector<pp::DirectoryEntry_Dev>& output() { 292 std::vector<pp::DirectoryEntry>& output() {
294 PP_DCHECK(output_storage_.empty()); 293 PP_DCHECK(output_storage_.empty());
295 typedef std::vector<PP_DirectoryEntry_Dev> Entries; 294 typedef std::vector<PP_DirectoryEntry> Entries;
296 for (Entries::iterator it = temp_storage_.begin(); 295 for (Entries::iterator it = temp_storage_.begin();
297 it != temp_storage_.end(); ++it) 296 it != temp_storage_.end(); ++it)
298 output_storage_.push_back(DirectoryEntry_Dev(PASS_REF, *it)); 297 output_storage_.push_back(DirectoryEntry(PASS_REF, *it));
299 temp_storage_.clear(); 298 temp_storage_.clear();
300 return output_storage_; 299 return output_storage_;
301 } 300 }
302 301
303 private: 302 private:
304 // The browser will write the PP_DirectoryEntry_Devs into this array. 303 // The browser will write the PP_DirectoryEntrys into this array.
305 std::vector<PP_DirectoryEntry_Dev> temp_storage_; 304 std::vector<PP_DirectoryEntry> temp_storage_;
306 305
307 // When asked for the output, the PP_DirectoryEntry_Devs above will be 306 // When asked for the output, the PP_DirectoryEntrys above will be
308 // converted to the pp::DirectoryEntry_Devs in this array for passing to the 307 // converted to the pp::DirectoryEntrys in this array for passing to the
309 // calling code. 308 // calling code.
310 std::vector<pp::DirectoryEntry_Dev> output_storage_; 309 std::vector<pp::DirectoryEntry> output_storage_;
311 }; 310 };
312 311
313 } // namespace pp 312 } // namespace pp
314 313
315 #endif // PPAPI_CPP_ARRAY_OUTPUT_H_ 314 #endif // PPAPI_CPP_ARRAY_OUTPUT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698