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 Iterator_h
6#define Iterator_h
7
8#include "bindings/core/v8/ScriptValue.h"
9#include "bindings/core/v8/ScriptWrappable.h"
10#include "platform/heap/Handle.h"
11
12namespace blink {
13
14class ExceptionState;
15
16class Iterator : public GarbageCollectedFinalized<Iterator>, public ScriptWrappable {
17    DEFINE_WRAPPERTYPEINFO();
18public:
19    Iterator() { }
20    virtual ~Iterator() { }
21
22    virtual ScriptValue next(ScriptState*, ExceptionState&) = 0;
23    virtual ScriptValue next(ScriptState*, ScriptValue /* value */, ExceptionState&) = 0;
24    Iterator* iterator(ScriptState*, ExceptionState&) { return this; }
25
26    virtual void trace(Visitor*) { }
27};
28
29} // namespace blink
30
31#endif // Iterator_h
32