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

Side by Side Diff: mojo/public/cpp/bindings/array.h

Issue 507173003: Change TypeConverter<X,Y>::ConvertFrom and ConvertTo into a single symmetric (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compile for real Created 6 years, 3 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
« no previous file with comments | « mojo/examples/pepper_container_app/type_converters.h ('k') | mojo/public/cpp/bindings/string.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_ARRAY_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_
7 7
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 Take(other.object); 43 Take(other.object);
44 return *this; 44 return *this;
45 } 45 }
46 46
47 static Array New(size_t size) { 47 static Array New(size_t size) {
48 return Array(size).Pass(); 48 return Array(size).Pass();
49 } 49 }
50 50
51 template <typename U> 51 template <typename U>
52 static Array From(const U& other) { 52 static Array From(const U& other) {
53 return TypeConverter<Array, U>::ConvertFrom(other); 53 return TypeConverter<Array, U>::Convert(other);
54 } 54 }
55 55
56 template <typename U> 56 template <typename U>
57 U To() const { 57 U To() const {
58 return TypeConverter<Array, U>::ConvertTo(*this); 58 return TypeConverter<U, Array>::Convert(*this);
59 } 59 }
60 60
61 void reset() { 61 void reset() {
62 if (!vec_.empty()) { 62 if (!vec_.empty()) {
63 Traits::Finalize(&vec_); 63 Traits::Finalize(&vec_);
64 vec_.clear(); 64 vec_.clear();
65 } 65 }
66 is_null_ = true; 66 is_null_ = true;
67 } 67 }
68 68
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 void Take(Array* other) { 112 void Take(Array* other) {
113 reset(); 113 reset();
114 Swap(other); 114 Swap(other);
115 } 115 }
116 116
117 std::vector<StorageType> vec_; 117 std::vector<StorageType> vec_;
118 bool is_null_; 118 bool is_null_;
119 }; 119 };
120 120
121 template <typename T, typename E> 121 template <typename T, typename E>
122 class TypeConverter<Array<T>, std::vector<E> > { 122 struct TypeConverter<Array<T>, std::vector<E> > {
123 public: 123 static Array<T> Convert(const std::vector<E>& input) {
124 static Array<T> ConvertFrom(const std::vector<E>& input) {
125 Array<T> result(input.size()); 124 Array<T> result(input.size());
126 for (size_t i = 0; i < input.size(); ++i) 125 for (size_t i = 0; i < input.size(); ++i)
127 result[i] = TypeConverter<T, E>::ConvertFrom(input[i]); 126 result[i] = TypeConverter<T, E>::Convert(input[i]);
128 return result.Pass(); 127 return result.Pass();
129 } 128 }
130 static std::vector<E> ConvertTo(const Array<T>& input) { 129 };
130
131 template <typename E, typename T>
132 struct TypeConverter<std::vector<E>, Array<T> > {
133 static std::vector<E> Convert(const Array<T>& input) {
131 std::vector<E> result; 134 std::vector<E> result;
132 if (!input.is_null()) { 135 if (!input.is_null()) {
133 result.resize(input.size()); 136 result.resize(input.size());
134 for (size_t i = 0; i < input.size(); ++i) 137 for (size_t i = 0; i < input.size(); ++i)
135 result[i] = TypeConverter<T, E>::ConvertTo(input[i]); 138 result[i] = TypeConverter<E, T>::Convert(input[i]);
136 } 139 }
137 return result; 140 return result;
138 } 141 }
139 }; 142 };
140 143
141 } // namespace mojo 144 } // namespace mojo
142 145
143 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_ 146 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_
OLDNEW
« no previous file with comments | « mojo/examples/pepper_container_app/type_converters.h ('k') | mojo/public/cpp/bindings/string.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698