File indexing completed on 2024-04-28 15:24:52
0001 /* 0002 * Copyright (C) 2004 Apple Computer, Inc. All rights reserved. 0003 * 0004 * Redistribution and use in source and binary forms, with or without 0005 * modification, are permitted provided that the following conditions 0006 * are met: 0007 * 1. Redistributions of source code must retain the above copyright 0008 * notice, this list of conditions and the following disclaimer. 0009 * 2. Redistributions in binary form must reproduce the above copyright 0010 * notice, this list of conditions and the following disclaimer in the 0011 * documentation and/or other materials provided with the distribution. 0012 * 0013 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 0014 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0015 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 0016 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 0017 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 0018 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 0019 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 0020 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 0021 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 0022 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 0023 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0024 */ 0025 0026 #ifndef _PositionIterator_h_ 0027 #define _PositionIterator_h_ 0028 0029 #include "dom_position.h" 0030 0031 namespace DOM 0032 { 0033 0034 class NodeImpl; 0035 class Position; 0036 0037 class PositionIterator 0038 { 0039 public: 0040 PositionIterator() : m_current() {} 0041 PositionIterator(NodeImpl *node, long offset) : m_current(node, offset) {} 0042 PositionIterator(const Position &o) : m_current(o) {} 0043 0044 Position current() const 0045 { 0046 return m_current; 0047 } 0048 Position previous() 0049 { 0050 return m_current = peekPrevious(); 0051 } 0052 Position next() 0053 { 0054 return m_current = peekNext(); 0055 } 0056 Position peekPrevious() const; 0057 Position peekNext() const; 0058 0059 void setPosition(const Position &pos) 0060 { 0061 m_current = pos; 0062 } 0063 0064 bool atStart() const; 0065 bool atEnd() const; 0066 bool isEmpty() const 0067 { 0068 return m_current.isEmpty(); 0069 } 0070 0071 private: 0072 Position m_current; 0073 }; 0074 0075 } // namespace DOM 0076 0077 #endif // _PositionIterator_h_