mirror of
https://github.com/SuspiciousActivity/ByteEdit.git
synced 2026-08-13 17:56:17 +00:00
Fixes and updates
This commit is contained in:
1 parent
d1710ea6a5
commit
fb4da77359
211 files changed
+45363
-45571
No files matched your search
@@ -10,46 +10,43 @@ import javax.swing.text.Segment;
|
||||
|
||||
/**
|
||||
* This class generates tokens for a {@link TokenMaker}. This class is here
|
||||
* because it reuses tokens when they aren't needed anymore to prevent
|
||||
* This class doesn't actually create new tokens every time
|
||||
* <code>createToken</code> is called. Instead, it internally keeps a stack of
|
||||
* available already-created tokens. When more tokens are needed to properly
|
||||
* display a line, more tokens are added to the available stack. This saves
|
||||
* from needless repetitive memory allocation. However, it makes it IMPERATIVE
|
||||
* that users call <code>resetTokenList</code> when creating a new token list so
|
||||
* that the token maker can keep an accurate list of available tokens.
|
||||
* because it reuses tokens when they aren't needed anymore to prevent This
|
||||
* class doesn't actually create new tokens every time <code>createToken</code>
|
||||
* is called. Instead, it internally keeps a stack of available already-created
|
||||
* tokens. When more tokens are needed to properly display a line, more tokens
|
||||
* are added to the available stack. This saves from needless repetitive memory
|
||||
* allocation. However, it makes it IMPERATIVE that users call
|
||||
* <code>resetTokenList</code> when creating a new token list so that the token
|
||||
* maker can keep an accurate list of available tokens.
|
||||
* <p>
|
||||
*
|
||||
* NOTE: This class should only be used by {@link TokenMaker}; nobody else
|
||||
* needs it!
|
||||
* NOTE: This class should only be used by {@link TokenMaker}; nobody else needs
|
||||
* it!
|
||||
*
|
||||
* @author Robert Futrell
|
||||
* @version 0.1
|
||||
*/
|
||||
class DefaultTokenFactory implements TokenFactory {
|
||||
|
||||
|
||||
private int size;
|
||||
private int increment;
|
||||
private TokenImpl[] tokenList;
|
||||
private int currentFreeToken;
|
||||
protected static final int DEFAULT_START_SIZE = 30;
|
||||
protected static final int DEFAULT_INCREMENT = 10;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
DefaultTokenFactory() {
|
||||
this(DEFAULT_START_SIZE, DEFAULT_INCREMENT);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param size
|
||||
* The initial number of tokens in this factory.
|
||||
* @param increment
|
||||
* How many tokens to increment by when the stack gets
|
||||
* empty.
|
||||
* @param size The initial number of tokens in this factory.
|
||||
* @param increment How many tokens to increment by when the stack gets empty.
|
||||
*/
|
||||
DefaultTokenFactory(int size, int increment) {
|
||||
this.size = size;
|
||||
@@ -61,10 +58,10 @@ class DefaultTokenFactory implements TokenFactory {
|
||||
tokenList[i] = new TokenImpl();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds tokens to the internal token list. This is called whenever a
|
||||
* request is made and no more tokens are available.
|
||||
* Adds tokens to the internal token list. This is called whenever a request is
|
||||
* made and no more tokens are available.
|
||||
*/
|
||||
private void augmentTokenList() {
|
||||
TokenImpl[] temp = new TokenImpl[size + increment];
|
||||
@@ -76,37 +73,35 @@ class DefaultTokenFactory implements TokenFactory {
|
||||
}
|
||||
// System.err.println("... size up to: " + size);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TokenImpl createToken() {
|
||||
TokenImpl token = tokenList[currentFreeToken];
|
||||
token.text = null;
|
||||
token.setType(Token.NULL);
|
||||
token.setOffset(-1);
|
||||
token.setNextToken(null);
|
||||
currentFreeToken++;
|
||||
if (currentFreeToken == size) {
|
||||
token.reset();
|
||||
if (++currentFreeToken == size) {
|
||||
augmentTokenList();
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TokenImpl createToken(final Segment line, final int beg, final int end, final int startOffset, final int type) {
|
||||
public TokenImpl createToken(final Segment line, final int beg, final int end, final int startOffset,
|
||||
final int type) {
|
||||
return createToken(line.array, beg, end, startOffset, type);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TokenImpl createToken(final char[] line, final int beg, final int end, final int startOffset, final int type) {
|
||||
public TokenImpl createToken(final char[] line, final int beg, final int end, final int startOffset,
|
||||
final int type) {
|
||||
TokenImpl token = tokenList[currentFreeToken];
|
||||
token.set(line, beg, end, startOffset, type);
|
||||
currentFreeToken++;
|
||||
@@ -115,11 +110,11 @@ class DefaultTokenFactory implements TokenFactory {
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resets the state of this token maker. This method should be called
|
||||
* by the <code>TokenMaker</code> every time a token list is generated for
|
||||
* a new line so the tokens can be reused.
|
||||
* Resets the state of this token maker. This method should be called by the
|
||||
* <code>TokenMaker</code> every time a token list is generated for a new line
|
||||
* so the tokens can be reused.
|
||||
*/
|
||||
@Override
|
||||
public void resetAllTokens() {
|
||||
|
||||
Reference in new issue
Block a user