Chromium Code Reviews| Index: mojo/public/cpp/bindings/array_traits_carray.h |
| diff --git a/mojo/public/cpp/bindings/array_traits_carray.h b/mojo/public/cpp/bindings/array_traits_carray.h |
| index ffcf9d585568c7808bb5fb12c01c1f4865106b81..3ff694b88217532cf21e25cc36523148059589ac 100644 |
| --- a/mojo/public/cpp/bindings/array_traits_carray.h |
| +++ b/mojo/public/cpp/bindings/array_traits_carray.h |
| @@ -20,6 +20,14 @@ struct CArray { |
| }; |
| template <typename T> |
| +struct ConstCArray { |
| + ConstCArray() : size(0), data(nullptr) {} |
| + ConstCArray(size_t size, const T* data) : size(size), data(data) {} |
| + size_t size; |
|
Ken Rockot(use gerrit already)
2016/10/05 17:47:55
nit: These fields could be const size_t and const
|
| + const T* data; |
| +}; |
| + |
| +template <typename T> |
| struct ArrayTraits<CArray<T>> { |
| using Element = T; |
| @@ -48,6 +56,21 @@ struct ArrayTraits<CArray<T>> { |
| } |
| }; |
| +template <typename T> |
| +struct ArrayTraits<ConstCArray<T>> { |
| + using Element = T; |
| + |
| + static bool IsNull(const ConstCArray<T>& input) { return !input.data; } |
| + |
| + static size_t GetSize(const ConstCArray<T>& input) { return input.size; } |
| + |
| + static const T* GetData(const ConstCArray<T>& input) { return input.data; } |
| + |
| + static const T& GetAt(const ConstCArray<T>& input, size_t index) { |
| + return input.data[index]; |
| + } |
| +}; |
| + |
| } // namespace mojo |
| #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_CARRAY_H_ |