Copyright (c) 2000, 2011 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.internal.ui.text; import java.text.CharacterIterator; import org.eclipse.core.runtime.Assert;
A CharSequence based implementation of CharacterIterator.
Since:3.0
/** * A <code>CharSequence</code> based implementation of <code>CharacterIterator</code>. * * @since 3.0 */
public class SequenceCharacterIterator implements CharacterIterator { private int fIndex= -1; private final CharSequence fSequence; private final int fFirst; private final int fLast; private void invariant() { Assert.isTrue(fIndex >= fFirst); Assert.isTrue(fIndex <= fLast); }
Creates an iterator for the entire sequence.
Params:
  • sequence – the sequence backing this iterator
/** * Creates an iterator for the entire sequence. * * @param sequence the sequence backing this iterator */
public SequenceCharacterIterator(CharSequence sequence) { this(sequence, 0); }
Creates an iterator.
Params:
  • sequence – the sequence backing this iterator
  • first – the first character to consider
Throws:
/** * Creates an iterator. * * @param sequence the sequence backing this iterator * @param first the first character to consider * @throws IllegalArgumentException if the indices are out of bounds */
public SequenceCharacterIterator(CharSequence sequence, int first) throws IllegalArgumentException { this(sequence, first, sequence.length()); }
Creates an iterator.
Params:
  • sequence – the sequence backing this iterator
  • first – the first character to consider
  • last – the last character index to consider
Throws:
/** * Creates an iterator. * * @param sequence the sequence backing this iterator * @param first the first character to consider * @param last the last character index to consider * @throws IllegalArgumentException if the indices are out of bounds */
public SequenceCharacterIterator(CharSequence sequence, int first, int last) throws IllegalArgumentException { if (sequence == null) throw new NullPointerException(); if (first < 0 || first > last) throw new IllegalArgumentException(); if (last > sequence.length()) throw new IllegalArgumentException(); fSequence= sequence; fFirst= first; fLast= last; fIndex= first; invariant(); } /* * @see java.text.CharacterIterator#first() */ @Override public char first() { return setIndex(getBeginIndex()); } /* * @see java.text.CharacterIterator#last() */ @Override public char last() { if (fFirst == fLast) return setIndex(getEndIndex()); else return setIndex(getEndIndex() - 1); } /* * @see java.text.CharacterIterator#current() */ @Override public char current() { if (fIndex >= fFirst && fIndex < fLast) return fSequence.charAt(fIndex); else return DONE; } /* * @see java.text.CharacterIterator#next() */ @Override public char next() { return setIndex(Math.min(fIndex + 1, getEndIndex())); } /* * @see java.text.CharacterIterator#previous() */ @Override public char previous() { if (fIndex > getBeginIndex()) { return setIndex(fIndex - 1); } else { return DONE; } } /* * @see java.text.CharacterIterator#setIndex(int) */ @Override public char setIndex(int position) { if (position >= getBeginIndex() && position <= getEndIndex()) fIndex= position; else throw new IllegalArgumentException(); invariant(); return current(); } /* * @see java.text.CharacterIterator#getBeginIndex() */ @Override public int getBeginIndex() { return fFirst; } /* * @see java.text.CharacterIterator#getEndIndex() */ @Override public int getEndIndex() { return fLast; } /* * @see java.text.CharacterIterator#getIndex() */ @Override public int getIndex() { return fIndex; } /* * @see java.text.CharacterIterator#clone() */ @Override public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { throw new InternalError(); } } }