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 3 // found in the LICENSE file. 4 5 #ifndef RefVector_h 6 #define RefVector_h 7 8 #include "wtf/RefCounted.h" 9 #include "wtf/RefPtr.h" 10 #include "wtf/Vector.h" 11 12 namespace blink { 13 14 template <typename T> 15 class RefVector : public RefCounted<RefVector<T> > { 16 public: create()17 static PassRefPtr<RefVector> create() { return adoptRef(new RefVector<T>); } copy()18 PassRefPtr<RefVector> copy() { return adoptRef(new RefVector<T>(*this)); } 19 20 const T& operator[](size_t i) const { return m_vector[i]; } 21 T& operator[](size_t i) { return m_vector[i]; } at(size_t i)22 const T& at(size_t i) const { return m_vector.at(i); } at(size_t i)23 T& at(size_t i) { return m_vector.at(i); } 24 25 bool operator==(const RefVector& o) const { return m_vector == o.m_vector; } 26 bool operator!=(const RefVector& o) const { return m_vector != o.m_vector; } 27 size()28 size_t size() const { return m_vector.size(); } append(const T & decoration)29 void append(const T& decoration) { m_vector.append(decoration); } vector()30 const Vector<T>& vector() const { return m_vector; } 31 32 private: 33 Vector<T> m_vector; RefVector()34 RefVector() { } RefVector(const RefVector & o)35 RefVector(const RefVector& o) : m_vector(o.m_vector) { } 36 }; 37 38 } // namespace blink 39 40 #endif // RefVector_h 41