Index: lexer/libsrc/org/netbeans/api/lexer/IncrementalAlgorithm.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/api/lexer/IncrementalAlgorithm.java,v retrieving revision 1.3 diff -c -u -r1.3 IncrementalAlgorithm.java --- lexer/libsrc/org/netbeans/api/lexer/IncrementalAlgorithm.java 3 Apr 2002 16:57:11 -0000 1.3 +++ lexer/libsrc/org/netbeans/api/lexer/IncrementalAlgorithm.java 8 Apr 2002 18:36:32 -0000 @@ -41,7 +41,32 @@ * @version 1.00 */ -public class IncrementalAlgorithm { +public abstract class IncrementalAlgorithm extends Object { + // most of the methods should be protected I guess + + /** Create the lexer input positioned to the location + * of the begining of the token that would be returned + * by the call to the next(). + */ + public abstract LexerInput createInput(); + + public abstract int relocate (int x); + + public abstract int readLookahead (); + public abstract int readLookback (); + public abstract Object readState (); + + public abstract void storeLookahead (int lookahead); + public abstract void storeLookback (int lookback); + public abstract void storeState (Object state); + + public abstract boolean hasNext (); + public abstract boolean hasPrevious (); + public abstract Token next (); + public abstract Token previous (); + + public abstract void add (Token t); + public abstract void remove (); /** Use incremental algorithm to update the list of tokens. * @param it token iterator that allows to iterate over the list of tokens @@ -50,8 +75,8 @@ * @param length length (and type) of the modification.
* >0 means insert and <0 means remove. */ - public static void update(TokenIterator it, Lexer lexer, int offset, int length) { - org.netbeans.modules.lexer.inc.Algorithm.INSTANCE.update(it, lexer, offset, length); + protected final void update(Lexer lexer, int offset, int length) { + org.netbeans.modules.lexer.inc.Algorithm.INSTANCE.update(this, lexer, offset, length); } } Index: lexer/libsrc/org/netbeans/modules/lexer/inc/AbstractTokenIterator.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/modules/lexer/inc/AbstractTokenIterator.java,v retrieving revision 1.1 diff -c -u -r1.1 AbstractTokenIterator.java --- lexer/libsrc/org/netbeans/modules/lexer/inc/AbstractTokenIterator.java 3 Apr 2002 15:42:06 -0000 1.1 +++ lexer/libsrc/org/netbeans/modules/lexer/inc/AbstractTokenIterator.java 8 Apr 2002 18:36:34 -0000 @@ -14,7 +14,6 @@ package org.netbeans.modules.lexer.inc; import org.netbeans.api.lexer.Token; -import org.netbeans.api.lexer.TokenIterator; import org.netbeans.api.lexer.LexerInput; import java.util.NoSuchElementException; @@ -25,7 +24,7 @@ * @version 1.00 */ -public abstract class AbstractTokenIterator implements TokenIterator { +public abstract class AbstractTokenIterator extends org.netbeans.api.lexer.IncrementalAlgorithm { /** Empty array of tokens used initially as tokens array. */ private static final Token[] EMPTY_TOKEN_ARRAY = new Token[0]; @@ -65,7 +64,7 @@ return (iterIndex < getTokenCount()); } - public Object next() { + public Token next() { try { Token token = tokenArray[getRawIndex(iterIndex)]; lastRetIterIndex = iterIndex; @@ -81,7 +80,7 @@ return (iterIndex > 0); } - public Object previous() { + public Token previous() { try { int prevIndex = iterIndex - 1; Token token = tokenArray[getRawIndex(prevIndex)]; Index: lexer/libsrc/org/netbeans/modules/lexer/inc/Algorithm.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/modules/lexer/inc/Algorithm.java,v retrieving revision 1.1 diff -c -u -r1.1 Algorithm.java --- lexer/libsrc/org/netbeans/modules/lexer/inc/Algorithm.java 3 Apr 2002 15:42:11 -0000 1.1 +++ lexer/libsrc/org/netbeans/modules/lexer/inc/Algorithm.java 8 Apr 2002 18:36:34 -0000 @@ -15,7 +15,7 @@ import org.netbeans.api.lexer.Token; import org.netbeans.api.lexer.TokenConstants; -import org.netbeans.api.lexer.TokenIterator; +import org.netbeans.api.lexer.IncrementalAlgorithm; import org.netbeans.api.lexer.Lexer; import org.netbeans.api.lexer.LexerInput; import org.netbeans.modules.lexer.util.IntegerCache; @@ -46,32 +46,31 @@ return org.netbeans.modules.lexer.util.Compatibility.getLength(t); } - protected int getLookahead(TokenIterator it) { - return ((Integer)it.getAttribute(TokenConstants.LOOKAHEAD)).intValue(); + protected int getLookahead(IncrementalAlgorithm it) { + return it.readLookahead (); } - protected int getLookback(TokenIterator it) { - Integer lb = (Integer)it.getAttribute(TokenConstants.LOOKBACK); - return (lb == null) ? -1 : lb.intValue(); + protected int getLookback(IncrementalAlgorithm it) { + return it.readLookback (); } - protected Object getState(TokenIterator it) { - return it.getAttribute(TokenConstants.STATE); + protected Object getState(IncrementalAlgorithm it) { + return it.readState (); } - protected void setLookahead(TokenIterator it, int lookahead) { - it.setAttribute(TokenConstants.LOOKAHEAD, getInteger(lookahead)); + protected void setLookahead(IncrementalAlgorithm it, int lookahead) { + it.storeLookahead (lookahead); } - protected void setLookback(TokenIterator it, int lookback) { - it.setAttribute(TokenConstants.LOOKBACK, getInteger(lookback)); + protected void setLookback(IncrementalAlgorithm it, int lookback) { + it.storeLookback (lookback); } - protected void setState(TokenIterator it, Object state) { - it.setAttribute(TokenConstants.STATE, state); + protected void setState(IncrementalAlgorithm it, Object state) { + it.storeState (state); } - public void update(TokenIterator it, Lexer lexer, int offset, int length) { + public void update(IncrementalAlgorithm it, Lexer lexer, int offset, int length) { if (length == 0) { return; } Index: lexer/libsrc/org/netbeans/modules/lexer/inc/OffsetTokenIterator.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/modules/lexer/inc/OffsetTokenIterator.java,v retrieving revision 1.1 diff -c -u -r1.1 OffsetTokenIterator.java --- lexer/libsrc/org/netbeans/modules/lexer/inc/OffsetTokenIterator.java 3 Apr 2002 15:42:19 -0000 1.1 +++ lexer/libsrc/org/netbeans/modules/lexer/inc/OffsetTokenIterator.java 8 Apr 2002 18:36:34 -0000 @@ -14,7 +14,6 @@ package org.netbeans.modules.lexer.inc; import org.netbeans.api.lexer.Token; -import org.netbeans.api.lexer.TokenIterator; import org.netbeans.api.lexer.LexerInput; /** Index: lexer/libsrc/org/netbeans/modules/lexer/inc/TextTokenIterator.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/modules/lexer/inc/TextTokenIterator.java,v retrieving revision 1.1 diff -c -u -r1.1 TextTokenIterator.java --- lexer/libsrc/org/netbeans/modules/lexer/inc/TextTokenIterator.java 3 Apr 2002 15:42:26 -0000 1.1 +++ lexer/libsrc/org/netbeans/modules/lexer/inc/TextTokenIterator.java 8 Apr 2002 18:36:34 -0000 @@ -15,7 +15,6 @@ import org.netbeans.api.lexer.TokenId; import org.netbeans.api.lexer.Token; -import org.netbeans.api.lexer.TokenIterator; import org.netbeans.api.lexer.LexerInput; import org.netbeans.modules.lexer.inc.OffsetTokenIterator; Index: lexer/libsrc/org/netbeans/modules/lexer/swing/TokenDocument.java =================================================================== RCS file: /cvs/lexer/libsrc/org/netbeans/modules/lexer/swing/TokenDocument.java,v retrieving revision 1.1 diff -c -u -r1.1 TokenDocument.java --- lexer/libsrc/org/netbeans/modules/lexer/swing/TokenDocument.java 3 Apr 2002 15:44:21 -0000 1.1 +++ lexer/libsrc/org/netbeans/modules/lexer/swing/TokenDocument.java 8 Apr 2002 18:36:36 -0000 @@ -15,7 +15,6 @@ import javax.swing.text.StyledDocument; import org.netbeans.api.lexer.Language; -import org.netbeans.api.lexer.TokenIterator; /** * Document maintaining the list of tokens over its text.