1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_WTF_VECTOR_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_WTF_VECTOR_H_ 7 8 #include "mojo/public/cpp/bindings/array_traits.h" 9 #include "third_party/WebKit/Source/wtf/Vector.h" 10 11 namespace mojo { 12 13 template <typename U> 14 struct ArrayTraits<WTF::Vector<U>> { 15 using Element = U; 16 17 static bool IsNull(const WTF::Vector<U>& input) { 18 // WTF::Vector<> is always converted to non-null mojom array. 19 return false; 20 } 21 22 static void SetToNull(WTF::Vector<U>* output) { 23 // WTF::Vector<> doesn't support null state. Set it to empty instead. 24 output->clear(); 25 } 26 27 static size_t GetSize(const WTF::Vector<U>& input) { return input.size(); } 28 29 static U* GetData(WTF::Vector<U>& input) { return input.data(); } 30 31 static const U* GetData(const WTF::Vector<U>& input) { return input.data(); } 32 33 static U& GetAt(WTF::Vector<U>& input, size_t index) { return input[index]; } 34 35 static const U& GetAt(const WTF::Vector<U>& input, size_t index) { 36 return input[index]; 37 } 38 39 static bool Resize(WTF::Vector<U>& input, size_t size) { 40 input.resize(size); 41 return true; 42 } 43 }; 44 45 } // namespace mojo 46 47 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_WTF_VECTOR_H_ 48