| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 
| 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 
| 7 | 7 | 
| 8 #include <stddef.h> | 8 #include <stddef.h> | 
| 9 #include <stdint.h> | 9 #include <stdint.h> | 
| 10 |  | 
| 11 #include <new> | 10 #include <new> | 
|  | 11 #include <utility> | 
| 12 #include <vector> | 12 #include <vector> | 
| 13 | 13 | 
| 14 #include "mojo/public/c/system/macros.h" | 14 #include "mojo/public/c/system/macros.h" | 
| 15 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" | 15 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" | 
| 16 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | 16 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | 
| 17 #include "mojo/public/cpp/bindings/lib/bounds_checker.h" | 17 #include "mojo/public/cpp/bindings/lib/bounds_checker.h" | 
| 18 #include "mojo/public/cpp/bindings/lib/buffer.h" | 18 #include "mojo/public/cpp/bindings/lib/buffer.h" | 
| 19 #include "mojo/public/cpp/bindings/lib/map_data_internal.h" | 19 #include "mojo/public/cpp/bindings/lib/map_data_internal.h" | 
| 20 #include "mojo/public/cpp/bindings/lib/template_util.h" | 20 #include "mojo/public/cpp/bindings/lib/template_util.h" | 
| 21 #include "mojo/public/cpp/bindings/lib/validate_params.h" | 21 #include "mojo/public/cpp/bindings/lib/validate_params.h" | 
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 498     size_t old_size = vec->size(); | 498     size_t old_size = vec->size(); | 
| 499     for (size_t i = size; i < old_size; i++) | 499     for (size_t i = size; i < old_size; i++) | 
| 500       reinterpret_cast<T*>(vec->at(i).buf)->~T(); | 500       reinterpret_cast<T*>(vec->at(i).buf)->~T(); | 
| 501     ResizeStorage(vec, size); | 501     ResizeStorage(vec, size); | 
| 502     for (size_t i = old_size; i < vec->size(); i++) | 502     for (size_t i = old_size; i < vec->size(); i++) | 
| 503       new (vec->at(i).buf) T(); | 503       new (vec->at(i).buf) T(); | 
| 504   } | 504   } | 
| 505   static inline void PushBack(std::vector<StorageType>* vec, RefType value) { | 505   static inline void PushBack(std::vector<StorageType>* vec, RefType value) { | 
| 506     size_t old_size = vec->size(); | 506     size_t old_size = vec->size(); | 
| 507     ResizeStorage(vec, old_size + 1); | 507     ResizeStorage(vec, old_size + 1); | 
| 508     new (vec->at(old_size).buf) T(value.Pass()); | 508     new (vec->at(old_size).buf) T(std::move(value)); | 
| 509   } | 509   } | 
| 510   static inline void ResizeStorage(std::vector<StorageType>* vec, size_t size) { | 510   static inline void ResizeStorage(std::vector<StorageType>* vec, size_t size) { | 
| 511     if (size <= vec->capacity()) { | 511     if (size <= vec->capacity()) { | 
| 512       vec->resize(size); | 512       vec->resize(size); | 
| 513       return; | 513       return; | 
| 514     } | 514     } | 
| 515     std::vector<StorageType> new_storage(size); | 515     std::vector<StorageType> new_storage(size); | 
| 516     for (size_t i = 0; i < vec->size(); i++) | 516     for (size_t i = 0; i < vec->size(); i++) | 
| 517       new (new_storage.at(i).buf) T(at(vec, i).Pass()); | 517       new (new_storage.at(i).buf) T(std::move(at(vec, i))); | 
| 518     vec->swap(new_storage); | 518     vec->swap(new_storage); | 
| 519     Finalize(&new_storage); | 519     Finalize(&new_storage); | 
| 520   } | 520   } | 
| 521   static inline void Clone(const std::vector<StorageType>& src_vec, | 521   static inline void Clone(const std::vector<StorageType>& src_vec, | 
| 522                            std::vector<StorageType>* dest_vec) { | 522                            std::vector<StorageType>* dest_vec) { | 
| 523     Resize(dest_vec, src_vec.size()); | 523     Resize(dest_vec, src_vec.size()); | 
| 524     for (size_t i = 0; i < src_vec.size(); ++i) | 524     for (size_t i = 0; i < src_vec.size(); ++i) | 
| 525       at(dest_vec, i) = at(&src_vec, i).Clone(); | 525       at(dest_vec, i) = at(&src_vec, i).Clone(); | 
| 526   } | 526   } | 
| 527 }; | 527 }; | 
| 528 | 528 | 
| 529 template <> | 529 template <> | 
| 530 struct WrapperTraits<String, false> { | 530 struct WrapperTraits<String, false> { | 
| 531   typedef String_Data* DataType; | 531   typedef String_Data* DataType; | 
| 532 }; | 532 }; | 
| 533 | 533 | 
| 534 }  // namespace internal | 534 }  // namespace internal | 
| 535 }  // namespace mojo | 535 }  // namespace mojo | 
| 536 | 536 | 
| 537 #endif  // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 537 #endif  // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 
| OLD | NEW | 
|---|