| OLD | NEW |
| 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 <stddef.h> | 8 #include <stddef.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 // Resizes the array to |size| and makes it non-null. Otherwise, works just | 126 // Resizes the array to |size| and makes it non-null. Otherwise, works just |
| 127 // like the resize method of |std::vector|. | 127 // like the resize method of |std::vector|. |
| 128 void resize(size_t size) { | 128 void resize(size_t size) { |
| 129 is_null_ = false; | 129 is_null_ = false; |
| 130 vec_.resize(size); | 130 vec_.resize(size); |
| 131 } | 131 } |
| 132 | 132 |
| 133 // Sets the array to empty (even if previously it was null.) | 133 // Sets the array to empty (even if previously it was null.) |
| 134 void SetToEmpty() { resize(0); } | 134 void SetToEmpty() { resize(0); } |
| 135 | 135 |
| 136 // Ensures the underlying storage can store up to |size| elements without |
| 137 // performing reallocations. This works like the reserve method of |
| 138 // |std::vector|. |
| 139 void reserve(size_t size) { vec_.reserve(size); } |
| 140 |
| 136 // Returns a const reference to the |std::vector| managed by this class. If | 141 // Returns a const reference to the |std::vector| managed by this class. If |
| 137 // the array is null, this will be an empty vector. | 142 // the array is null, this will be an empty vector. |
| 138 const std::vector<T>& storage() const { return vec_; } | 143 const std::vector<T>& storage() const { return vec_; } |
| 139 | 144 |
| 140 // Passes the underlying storage and resets this array to null. | 145 // Passes the underlying storage and resets this array to null. |
| 141 std::vector<T> PassStorage() { | 146 std::vector<T> PassStorage() { |
| 142 is_null_ = true; | 147 is_null_ = true; |
| 143 return std::move(vec_); | 148 return std::move(vec_); |
| 144 } | 149 } |
| 145 | 150 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 if (a.is_null()) | 275 if (a.is_null()) |
| 271 return !b.is_null(); | 276 return !b.is_null(); |
| 272 if (b.is_null()) | 277 if (b.is_null()) |
| 273 return false; | 278 return false; |
| 274 return a.storage() < b.storage(); | 279 return a.storage() < b.storage(); |
| 275 } | 280 } |
| 276 | 281 |
| 277 } // namespace mojo | 282 } // namespace mojo |
| 278 | 283 |
| 279 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_ | 284 #endif // MOJO_PUBLIC_CPP_BINDINGS_ARRAY_H_ |
| OLD | NEW |