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

Unified Diff: mojo/public/cpp/bindings/array_traits.h

Issue 2058633002: mojo::ArrayTraits: Add Support for Iterators (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nit Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/public/cpp/bindings/lib/array_serialization.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/array_traits.h
diff --git a/mojo/public/cpp/bindings/array_traits.h b/mojo/public/cpp/bindings/array_traits.h
index da94b975319702f2929d75fcb197e4aa19a51168..366573db280a4311e54bbd3f4ec43c3f666ecb61 100644
--- a/mojo/public/cpp/bindings/array_traits.h
+++ b/mojo/public/cpp/bindings/array_traits.h
@@ -10,31 +10,55 @@ namespace mojo {
// This must be specialized for any type |T| to be serialized/deserialized as
// a mojom array.
//
-// Usually you would like to do a partial specialization for an array/vector
-// template. Imagine you want to specialize it for CustomArray<>, you need to
-// implement:
+// Usually you would like to do a partial specialization for a container (e.g.
+// vector) template. Imagine you want to specialize it for Container<>, you need
+// to implement:
//
// template <typename T>
-// struct ArrayTraits<CustomArray<T>> {
+// struct ArrayTraits<Container<T>> {
// using Element = T;
+// // These two statements are optional. Use them if you'd like to serialize
+// // a container that supports iterators but does not support O(1) random
+// // access and so GetAt(...) would be expensive.
+// // using Iterator = T::iterator;
+// // using ConstIterator = T::const_iterator;
//
// // These two methods are optional. Please see comments in struct_traits.h
-// static bool IsNull(const CustomArray<T>& input);
-// static void SetToNull(CustomArray<T>* output);
+// static bool IsNull(const Container<T>& input);
+// static void SetToNull(Container<T>* output);
//
-// static size_t GetSize(const CustomArray<T>& input);
+// static size_t GetSize(const Container<T>& input);
//
// // These two methods are optional. They are used to access the
// // underlying storage of the array to speed up copy of POD types.
-// static T* GetData(CustomArray<T>& input);
-// static const T* GetData(const CustomArray<T>& input);
+// static T* GetData(Container<T>& input);
+// static const T* GetData(const Container<T>& input);
//
-// static T& GetAt(CustomArray<T>& input, size_t index);
-// static const T& GetAt(const CustomArray<T>& input, size_t index);
+// // The following six methods are optional if the GetAt(...) methods are
+// // implemented. These methods specify how to read the elements of
+// // Container in some sequential order specified by the iterator.
+// //
+// // Acquires an iterator positioned at the first element in the container.
+// static ConstIterator GetBegin(const Container<T>& input);
+// static Iterator GetBegin(Container<T>& input);
+//
+// // Advances |iterator| to the next position within the container.
+// static void AdvanceIterator(ConstIterator& iterator);
+// static void AdvanceIterator(Iterator& iterator);
+//
+// // Returns a reference to the value at the current position of
+// // |iterator|.
+// static const T& GetValue(ConstIterator& iterator);
+// static T& GetValue(Iterator& iterator);
+//
+// // These two methods are optional if the iterator methods are
+// // implemented.
+// static T& GetAt(Container<T>& input, size_t index);
+// static const T& GetAt(const Container<T>& input, size_t index);
//
// // Returning false results in deserialization failure and causes the
// // message pipe receiving it to be disconnected.
-// static bool Resize(CustomArray<T>& input, size_t size);
+// static bool Resize(Container<T>& input, size_t size);
// };
//
template <typename T>
« no previous file with comments | « no previous file | mojo/public/cpp/bindings/lib/array_serialization.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698