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

Side by Side Diff: mojo/public/cpp/bindings/lib/array_serialization.h

Issue 2174843003: cc mojo: Use ArrayDataViews in RenderPasses (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: A little bit of cleanup Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <string.h> // For |memcpy()|. 9 #include <string.h> // For |memcpy()|.
10 10
(...skipping 16 matching lines...) Expand all
27 template <typename Traits, 27 template <typename Traits,
28 typename MaybeConstUserType, 28 typename MaybeConstUserType,
29 bool HasGetBegin = 29 bool HasGetBegin =
30 HasGetBeginMethod<Traits, MaybeConstUserType>::value> 30 HasGetBeginMethod<Traits, MaybeConstUserType>::value>
31 class ArrayIterator {}; 31 class ArrayIterator {};
32 32
33 // Used as the UserTypeIterator template parameter of ArraySerializer. 33 // Used as the UserTypeIterator template parameter of ArraySerializer.
34 template <typename Traits, typename MaybeConstUserType> 34 template <typename Traits, typename MaybeConstUserType>
35 class ArrayIterator<Traits, MaybeConstUserType, true> { 35 class ArrayIterator<Traits, MaybeConstUserType, true> {
36 public: 36 public:
37 using UserType = typename std::remove_const<MaybeConstUserType>::type;
37 using IteratorType = decltype( 38 using IteratorType = decltype(
38 CallGetBeginIfExists<Traits>(std::declval<MaybeConstUserType&>())); 39 CallGetBeginIfExists<Traits>(std::declval<MaybeConstUserType&>()));
39 40
40 explicit ArrayIterator(MaybeConstUserType& input) 41 explicit ArrayIterator(MaybeConstUserType& input)
41 : input_(input), iter_(CallGetBeginIfExists<Traits>(input)) {} 42 : input_(input), iter_(CallGetBeginIfExists<Traits>(input)) {}
42 ~ArrayIterator() {} 43 ~ArrayIterator() {}
43 44
44 size_t GetSize() const { return Traits::GetSize(input_); } 45 size_t GetSize() const { return Traits::GetSize(input_); }
45 46
46 using GetNextResult = 47 using GetNextResult =
47 decltype(Traits::GetValue(std::declval<IteratorType&>())); 48 decltype(Traits::GetValue(std::declval<MaybeConstUserType&>(),
49 std::declval<IteratorType&>()));
48 GetNextResult GetNext() { 50 GetNextResult GetNext() {
49 auto& value = Traits::GetValue(iter_); 51 auto& value = Traits::GetValue(input_, iter_);
50 Traits::AdvanceIterator(iter_); 52 Traits::AdvanceIterator(input_, iter_);
51 return value; 53 return value;
52 } 54 }
53 55
54 using GetDataIfExistsResult = decltype( 56 using GetDataIfExistsResult = decltype(
55 CallGetDataIfExists<Traits>(std::declval<MaybeConstUserType&>())); 57 CallGetDataIfExists<Traits>(std::declval<MaybeConstUserType&>()));
56 GetDataIfExistsResult GetDataIfExists() { 58 GetDataIfExistsResult GetDataIfExists() {
57 return CallGetDataIfExists<Traits>(input_); 59 return CallGetDataIfExists<Traits>(input_);
58 } 60 }
59 61
60 private: 62 private:
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 if (!input) 541 if (!input)
540 return CallSetToNullIfExists<Traits>(output); 542 return CallSetToNullIfExists<Traits>(output);
541 return Impl::DeserializeElements(input, output, context); 543 return Impl::DeserializeElements(input, output, context);
542 } 544 }
543 }; 545 };
544 546
545 } // namespace internal 547 } // namespace internal
546 } // namespace mojo 548 } // namespace mojo
547 549
548 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_ 550 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698