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

Unified Diff: mojo/public/cpp/bindings/array.h

Issue 1417843002: Simplify mojo::internal::ArrayTraits. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | mojo/public/cpp/bindings/lib/array_internal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/array.h
diff --git a/mojo/public/cpp/bindings/array.h b/mojo/public/cpp/bindings/array.h
index a5d04f3397d8ddf68be877ab498593c33a8c97fa..98ad8e45f4947b619fa625141a98c3a7998db935 100644
--- a/mojo/public/cpp/bindings/array.h
+++ b/mojo/public/cpp/bindings/array.h
@@ -25,11 +25,11 @@ namespace mojo {
template <typename T>
class Array {
public:
- typedef internal::ArrayTraits<T, internal::IsMoveOnlyType<T>::value> Traits;
- typedef typename Traits::ConstRefType ConstRefType;
- typedef typename Traits::RefType RefType;
- typedef typename Traits::StorageType StorageType;
- typedef typename Traits::ForwardType ForwardType;
+ using ConstRefType = typename std::vector<T>::const_reference;
+ using RefType = typename std::vector<T>::reference;
+
+ using Traits = internal::ArrayTraits<T, internal::IsMoveOnlyType<T>::value>;
+ using ForwardType = typename Traits::ForwardType;
typedef internal::Array_Data<typename internal::WrapperTraits<T>::DataType>
Data_;
@@ -37,7 +37,7 @@ class Array {
// Constructs a new array that is null.
Array() : is_null_(true) {}
- ~Array() { Traits::Finalize(&vec_); }
+ ~Array() {}
// Moves the contents of |other| into this array.
Array(Array&& other) : is_null_(true) { Take(&other); }
@@ -69,10 +69,8 @@ class Array {
// Resets the contents of this array back to null.
void reset() {
- if (!vec_.empty()) {
- Traits::Finalize(&vec_);
+ if (!vec_.empty())
vec_.clear();
- }
is_null_ = true;
}
@@ -89,9 +87,9 @@ class Array {
// Returns a reference to the element at zero-based |offset|. Calling this on
// an array with size less than |offset|+1 causes undefined behavior.
- ConstRefType at(size_t offset) const { return Traits::at(&vec_, offset); }
+ ConstRefType at(size_t offset) const { return vec_.at(offset); }
ConstRefType operator[](size_t offset) const { return at(offset); }
- RefType at(size_t offset) { return Traits::at(&vec_, offset); }
+ RefType at(size_t offset) { return vec_.at(offset); }
RefType operator[](size_t offset) { return at(offset); }
// Pushes |value| onto the back of the array. If this array was null, it will
@@ -105,13 +103,13 @@ class Array {
// like the resize method of |std::vector|.
void resize(size_t size) {
is_null_ = false;
- Traits::Resize(&vec_, size);
+ vec_.resize(size);
}
// Returns a const reference to the |std::vector| managed by this class. If
// the array is null, this will be an empty vector.
- const std::vector<StorageType>& storage() const { return vec_; }
- operator const std::vector<StorageType>&() const { return vec_; }
+ const std::vector<T>& storage() const { return vec_; }
+ operator const std::vector<T>&() const { return vec_; }
// Swaps the contents of this array with the |other| array, including
// nullness.
@@ -123,7 +121,7 @@ class Array {
// Swaps the contents of this array with the specified vector, making this
// array non-null. Since the vector cannot represent null, it will just be
// made empty if this array is null.
- void Swap(std::vector<StorageType>* other) {
+ void Swap(std::vector<T>* other) {
is_null_ = false;
vec_.swap(*other);
}
@@ -232,7 +230,7 @@ class Array {
Iterator end() { return Iterator(this, size()); }
private:
- typedef std::vector<StorageType> Array::*Testable;
+ typedef std::vector<T> Array::*Testable;
public:
operator Testable() const { return is_null_ ? 0 : &Array::vec_; }
@@ -243,7 +241,7 @@ class Array {
Swap(other);
}
- std::vector<StorageType> vec_;
+ std::vector<T> vec_;
bool is_null_;
MOJO_MOVE_ONLY_TYPE(Array);
« no previous file with comments | « no previous file | mojo/public/cpp/bindings/lib/array_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698