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.