Index: mojo/public/cpp/bindings/lib/array_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/array_internal.h b/mojo/public/cpp/bindings/lib/array_internal.h |
index c49409a3216e253646902887734194dba2025154..3681d8e6a4da50244f27c56f6a2d5ed5e284da65 100644 |
--- a/mojo/public/cpp/bindings/lib/array_internal.h |
+++ b/mojo/public/cpp/bindings/lib/array_internal.h |
@@ -451,6 +451,10 @@ template <typename T> struct ArrayTraits<T, false> { |
static inline void PushBack(std::vector<T>* vec, ForwardType value) { |
vec->push_back(value); |
} |
+ static inline void Clone(const std::vector<T>& src_vec, |
+ std::vector<T>* dest_vec) { |
+ dest_vec->assign(src_vec.begin(), src_vec.end()); |
+ } |
}; |
template <typename T> struct ArrayTraits<T, true> { |
@@ -499,6 +503,12 @@ template <typename T> struct ArrayTraits<T, true> { |
vec->swap(new_storage); |
Finalize(&new_storage); |
} |
+ static inline void Clone(const std::vector<StorageType>& src_vec, |
+ std::vector<StorageType>* dest_vec) { |
+ Resize(dest_vec, src_vec.size()); |
+ for (size_t i = 0; i < src_vec.size(); ++i) |
+ at(dest_vec, i) = at(&src_vec, i).Clone(); |
+ } |
}; |
template <> struct WrapperTraits<String, false> { |