Index: mojo/public/cpp/bindings/lib/array_serialization.h |
diff --git a/mojo/public/cpp/bindings/lib/array_serialization.h b/mojo/public/cpp/bindings/lib/array_serialization.h |
index 9d0e7bb438d0c6137f712c0c984cf733f78fa587..6b9e54f0ed2f0b598b575f96043d6cebdfa54487 100644 |
--- a/mojo/public/cpp/bindings/lib/array_serialization.h |
+++ b/mojo/public/cpp/bindings/lib/array_serialization.h |
@@ -29,7 +29,9 @@ inline void SerializeArray_( |
const internal::ArrayValidateParams* validate_params); |
template <typename E, typename F> |
-inline void Deserialize_(internal::Array_Data<F>* data, Array<E>* output); |
+inline void Deserialize_(internal::Array_Data<F>* data, |
+ Array<E>* output, |
+ internal::SerializationContext* context); |
namespace internal { |
@@ -59,7 +61,9 @@ struct ArraySerializer<E, F, false> { |
if (input.size()) |
memcpy(output->storage(), &input.storage()[0], input.size() * sizeof(E)); |
} |
- static void DeserializeElements(Array_Data<F>* input, Array<E>* output) { |
+ static void DeserializeElements(Array_Data<F>* input, |
+ Array<E>* output, |
+ SerializationContext* context) { |
std::vector<E> result(input->size()); |
if (input->size()) |
memcpy(&result[0], input->storage(), input->size() * sizeof(E)); |
@@ -88,7 +92,8 @@ struct ArraySerializer<bool, bool, false> { |
output->at(i) = input[i]; |
} |
static void DeserializeElements(Array_Data<bool>* input, |
- Array<bool>* output) { |
+ Array<bool>* output, |
+ SerializationContext* context) { |
Array<bool> result(input->size()); |
// TODO(darin): Can this be a memcpy somehow instead of a bit-by-bit copy? |
for (size_t i = 0; i < input->size(); ++i) |
@@ -122,7 +127,8 @@ struct ArraySerializer<ScopedHandleBase<H>, H, false> { |
} |
} |
static void DeserializeElements(Array_Data<H>* input, |
- Array<ScopedHandleBase<H>>* output) { |
+ Array<ScopedHandleBase<H>>* output, |
+ SerializationContext* context) { |
Array<ScopedHandleBase<H>> result(input->size()); |
for (size_t i = 0; i < input->size(); ++i) |
result.at(i) = MakeScopedHandle(FetchAndReset(&input->at(i))); |
@@ -165,10 +171,11 @@ struct ArraySerializer< |
} |
} |
static void DeserializeElements(Array_Data<S_Data*>* input, |
- Array<S>* output) { |
+ Array<S>* output, |
+ SerializationContext* context) { |
Array<S> result(input->size()); |
for (size_t i = 0; i < input->size(); ++i) { |
- Deserialize_(input->at(i), &result[i]); |
+ Deserialize_(input->at(i), &result[i], context); |
} |
output->Swap(&result); |
} |
@@ -236,10 +243,12 @@ struct ArraySerializer<U, U_Data, true> { |
} |
} |
- static void DeserializeElements(Array_Data<U_Data>* input, Array<U>* output) { |
+ static void DeserializeElements(Array_Data<U_Data>* input, |
+ Array<U>* output, |
+ SerializationContext* context) { |
Array<U> result(input->size()); |
for (size_t i = 0; i < input->size(); ++i) { |
- Deserialize_(&input->at(i), &result[i]); |
+ Deserialize_(&input->at(i), &result[i], context); |
} |
output->Swap(&result); |
} |
@@ -279,10 +288,11 @@ struct ArraySerializer<String, String_Data*> { |
} |
} |
static void DeserializeElements(Array_Data<String_Data*>* input, |
- Array<String>* output) { |
+ Array<String>* output, |
+ SerializationContext* context) { |
Array<String> result(input->size()); |
for (size_t i = 0; i < input->size(); ++i) |
- Deserialize_(input->at(i), &result[i]); |
+ Deserialize_(input->at(i), &result[i], context); |
output->Swap(&result); |
} |
}; |
@@ -325,9 +335,12 @@ inline void SerializeArray_( |
} |
template <typename E, typename F> |
-inline void Deserialize_(internal::Array_Data<F>* input, Array<E>* output) { |
+inline void Deserialize_(internal::Array_Data<F>* input, |
+ Array<E>* output, |
+ internal::SerializationContext* context) { |
if (input) { |
- internal::ArraySerializer<E, F>::DeserializeElements(input, output); |
+ internal::ArraySerializer<E, F>::DeserializeElements(input, output, |
+ context); |
} else { |
output->reset(); |
} |