autofill_scanner.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 "components/autofill/core/browser/autofill_scanner.h" 6 7#include "base/logging.h" 8#include "components/autofill/core/browser/autofill_field.h" 9 10namespace autofill { 11 12AutofillScanner::AutofillScanner(std::vector<AutofillField*>& fields) 13 : cursor_(fields.begin()), 14 saved_cursor_(fields.begin()), 15 begin_(fields.begin()), 16 end_(fields.end()) { 17} 18 19AutofillScanner::~AutofillScanner() { 20} 21 22void AutofillScanner::Advance() { 23 DCHECK(!IsEnd()); 24 ++cursor_; 25} 26 27AutofillField* AutofillScanner::Cursor() const { 28 if (IsEnd()) { 29 NOTREACHED(); 30 return NULL; 31 } 32 33 return *cursor_; 34} 35 36bool AutofillScanner::IsEnd() const { 37 return cursor_ == end_; 38} 39 40void AutofillScanner::Rewind() { 41 DCHECK(saved_cursor_ != end_); 42 cursor_ = saved_cursor_; 43 saved_cursor_ = end_; 44} 45 46void AutofillScanner::RewindTo(size_t index) { 47 DCHECK(index < static_cast<size_t>(end_ - begin_)); 48 cursor_ = begin_ + index; 49 saved_cursor_ = end_; 50} 51 52size_t AutofillScanner::SaveCursor() { 53 saved_cursor_ = cursor_; 54 return static_cast<size_t>(cursor_ - begin_); 55} 56 57} // namespace autofill 58