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_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_WTF_H_ 7 8 #include "mojo/public/cpp/bindings/array_traits.h" 9 #include "mojo/public/cpp/bindings/wtf_array.h" 10 11 namespace mojo { 12 13 template <typename U> 14 struct ArrayTraits<WTFArray<U>> { 15 using Element = U; 16 17 static bool IsNull(const WTFArray<U>& input) { return input.is_null(); } 18 static void SetToNull(WTFArray<U>* output) { *output = nullptr; } 19 20 static size_t GetSize(const WTFArray<U>& input) { return input.size(); } 21 22 static U* GetData(WTFArray<U>& input) { return &input.front(); } 23 24 static const U* GetData(const WTFArray<U>& input) { return &input.front(); } 25 26 static U& GetAt(WTFArray<U>& input, size_t index) { return input[index]; } 27 28 static const U& GetAt(const WTFArray<U>& input, size_t index) { 29 return input[index]; 30 } 31 32 static bool Resize(WTFArray<U>& input, size_t size) { 33 input.resize(size); 34 return true; 35 } 36 }; 37 38 } // namespace mojo 39 40 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_TRAITS_WTF_H_ 41