diff options
Diffstat (limited to 'lexers/LexSQL.cxx')
| -rw-r--r-- | lexers/LexSQL.cxx | 16 | 
1 files changed, 4 insertions, 12 deletions
| diff --git a/lexers/LexSQL.cxx b/lexers/LexSQL.cxx index dc4e164b4..77f96b016 100644 --- a/lexers/LexSQL.cxx +++ b/lexers/LexSQL.cxx @@ -30,6 +30,7 @@  #include "CharacterSet.h"  #include "LexerModule.h"  #include "OptionSet.h" +#include "SparseState.h"  #ifdef SCI_NAMESPACE  using namespace Scintilla; @@ -65,10 +66,7 @@ static inline bool IsANumberChar(int ch) {  class SQLStates {  public :  	void Set(int lineNumber, unsigned short int sqlStatesLine) { -		if (!sqlStatement.size() == 0 || !sqlStatesLine == 0) { -			sqlStatement.resize(lineNumber + 1, 0); -			sqlStatement[lineNumber] = sqlStatesLine; -		} +		sqlStatement.Set(lineNumber, sqlStatesLine);  	}  	unsigned short int IgnoreWhen (unsigned short int sqlStatesLine, bool enable) { @@ -181,17 +179,13 @@ public :  	}  	unsigned short int ForLine(int lineNumber) { -		if ((lineNumber > 0) && (sqlStatement.size() > static_cast<size_t>(lineNumber))) { -			return sqlStatement[lineNumber]; -		} else { -			return 0; -		} +		return sqlStatement.ValueAt(lineNumber);  	}  	SQLStates() {}  private : -	std::vector <unsigned short int> sqlStatement; +	SparseState <unsigned short int> sqlStatement;  	enum {  		MASK_NESTED_CASES = 0x01FF,  		MASK_INTO_SELECT_STATEMENT = 0x0200, @@ -610,7 +604,6 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,  				if (!sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))  					levelNext--;  				sqlStatesCurrentLine = sqlStates.IntoMergeStatement(sqlStatesCurrentLine, false); -				//sqlStatesCurrentLine = sqlStates.WhenThenFound(sqlStatesCurrentLine, false);  				levelNext--;  			}  			if (sqlStates.IsIntoSelectStatement(sqlStatesCurrentLine)) @@ -722,7 +715,6 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,  						sqlStatesCurrentLine = sqlStates.EndCaseBlock(sqlStatesCurrentLine);  						if (!sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))  							levelNext--; //again for the "end case;" and block when -						//sqlStatesCurrentLine = sqlStates.WhenThenFound(sqlStatesCurrentLine, false);  					}  				} else if (!options.foldOnlyBegin) {  					if (strcmp(s, "case") == 0) | 
