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
3// found in the LICENSE file.
4
5#include "cc/layers/layer_lists.h"
6
7#include "cc/layers/layer.h"
8
9namespace cc {
10
11RenderSurfaceLayerList::RenderSurfaceLayerList() {}
12
13RenderSurfaceLayerList::~RenderSurfaceLayerList() {
14  for (size_t i = 0; i < size(); ++i)
15    at(size() - 1 - i)->ClearRenderSurface();
16}
17
18Layer* RenderSurfaceLayerList::at(size_t i) const {
19  return list_.at(i).get();
20}
21
22void RenderSurfaceLayerList::pop_back() {
23  list_.pop_back();
24}
25
26void RenderSurfaceLayerList::push_back(const scoped_refptr<Layer>& layer) {
27  list_.push_back(layer);
28}
29
30Layer* RenderSurfaceLayerList::back() {
31  return list_.back().get();
32}
33
34size_t RenderSurfaceLayerList::size() const {
35  return list_.size();
36}
37
38scoped_refptr<Layer>& RenderSurfaceLayerList::operator[](size_t i) {
39  return list_[i];
40}
41const scoped_refptr<Layer>& RenderSurfaceLayerList::operator[](size_t i) const {
42  return list_[i];
43}
44
45LayerList::iterator RenderSurfaceLayerList::begin() {
46  return list_.begin();
47}
48
49LayerList::iterator RenderSurfaceLayerList::end() {
50  return list_.end();
51}
52
53LayerList::const_iterator RenderSurfaceLayerList::begin() const {
54  return list_.begin();
55}
56
57LayerList::const_iterator RenderSurfaceLayerList::end() const {
58  return list_.end();
59}
60
61void RenderSurfaceLayerList::clear() {
62  for (size_t i = 0; i < list_.size(); ++i)
63    DCHECK(!list_[i]->render_surface());
64  list_.clear();
65}
66
67}  // namespace cc
68