// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef RefVector_h #define RefVector_h #include "wtf/RefCounted.h" #include "wtf/RefPtr.h" #include "wtf/Vector.h" namespace WebCore { template class RefVector : public RefCounted > { public: static PassRefPtr create() { return adoptRef(new RefVector); } PassRefPtr copy() { return adoptRef(new RefVector(*this)); } const T& operator[](size_t i) const { return m_vector[i]; } T& operator[](size_t i) { return m_vector[i]; } const T& at(size_t i) const { return m_vector.at(i); } T& at(size_t i) { return m_vector.at(i); } bool operator==(const RefVector& o) const { return m_vector == o.m_vector; } bool operator!=(const RefVector& o) const { return m_vector != o.m_vector; } size_t size() const { return m_vector.size(); } void append(const T& decoration) { m_vector.append(decoration); } const Vector& vector() const { return m_vector; } private: Vector m_vector; RefVector() { } RefVector(const RefVector& o) : m_vector(o.m_vector) { } }; } // namespace WebCore #endif // RefVector_h