diff options
| author | nyamatongwe <unknown> | 2010-07-13 21:16:48 +1000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2010-07-13 21:16:48 +1000 | 
| commit | fd7c21165bbc5200aa24ef89560a8bb40fd37255 (patch) | |
| tree | b5cdec307f1b412f0527eb826a14b806b58cf006 /src/LexMPT.cxx | |
| parent | d47313970ebf3736afffec781f2f9030fa3c8e1a (diff) | |
| download | scintilla-mirror-fd7c21165bbc5200aa24ef89560a8bb40fd37255.tar.gz | |
Moved lexers into lexers directory.
Diffstat (limited to 'src/LexMPT.cxx')
| -rw-r--r-- | src/LexMPT.cxx | 188 | 
1 files changed, 0 insertions, 188 deletions
| diff --git a/src/LexMPT.cxx b/src/LexMPT.cxx deleted file mode 100644 index a69fe5464..000000000 --- a/src/LexMPT.cxx +++ /dev/null @@ -1,188 +0,0 @@ -// Scintilla source code edit control -/** @file LexMPT.cxx - ** Lexer for MPT specific files. Based on LexOthers.cxx - ** LOT = the text log file created by the MPT application while running a test program - ** Other MPT specific files to be added later. - **/ -// Copyright 2003 by Marius Gheorghe <mgheorghe@cabletest.com> -// The License.txt file describes the conditions under which this software may be distributed. - -#include <string.h> -#include <stdio.h> -#include <ctype.h> -#include <stdlib.h> - -#include <string> - -#include "Platform.h" - -#include "PropSet.h" -#include "Accessor.h" -#include "KeyWords.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#ifdef SCI_NAMESPACE -using namespace Scintilla; -#endif - -static int GetLotLineState(std::string &line) { -	if (line.length()) { -		// Most of the time the first non-blank character in line determines that line's type -		// Now finds the first non-blank character -		unsigned i; // Declares counter here to make it persistent after the for loop -		for (i = 0; i < line.length(); ++i) { -			if (!(isascii(line[i]) && isspace(line[i]))) -				break; -		} - -		// Checks if it was a blank line -		if (i == line.length()) -			return SCE_LOT_DEFAULT; - -		switch (line[i]) { -		case '*': // Fail measurement -			return SCE_LOT_FAIL; - -		case '+': // Header -		case '|': // Header -			return SCE_LOT_HEADER; - -		case ':': // Set test limits -			return SCE_LOT_SET; - -		case '-': // Section break -			return SCE_LOT_BREAK; - -		default:  // Any other line -			// Checks for message at the end of lot file -			if (line.find("PASSED") != std::string::npos) { -				return SCE_LOT_PASS; -			} -			else if (line.find("FAILED") != std::string::npos) { -				return SCE_LOT_FAIL; -			} -			else if (line.find("ABORTED") != std::string::npos) { -				return SCE_LOT_ABORT; -			} -			else { -				return i ? SCE_LOT_PASS : SCE_LOT_DEFAULT;			 -			} -		} -	} -	else { -		return SCE_LOT_DEFAULT; -	} -} - -static void ColourizeLotDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) { -	styler.StartAt(startPos); -	styler.StartSegment(startPos); -	bool atLineStart = true;// Arms the 'at line start' flag -	char chNext = styler.SafeGetCharAt(startPos); -	std::string line(""); -	line.reserve(256);	// Lot lines are less than 256 chars long most of the time. This should avoid reallocations - -	// Styles LOT document -	unsigned int i;			// Declared here because it's used after the for loop -	for (i = startPos; i < startPos + length; ++i) { -		char ch = chNext; -		chNext = styler.SafeGetCharAt(i + 1); -		line += ch; -		atLineStart = false; - -		// LOT files are only used on the Win32 platform, thus EOL == CR+LF -		// Searches for the end of line -		if (ch == '\r' && chNext == '\n') { -			line += chNext; // Gets the '\n' -			++i; // Advances past the '\n' -			chNext = styler.SafeGetCharAt(i + 1); // Gets character of next line -			styler.ColourTo(i, GetLotLineState(line)); -			line = ""; -			atLineStart = true; // Arms flag for next line -		} -	} - -	// Last line may not have a line ending -	if (!atLineStart) { -		styler.ColourTo(i - 1, GetLotLineState(line)); -	} -} - -// Folds an MPT LOT file: the blocks that can be folded are: -// sections (headed by a set line) -// passes (contiguous pass results within a section) -// fails (contiguous fail results within a section) -static void FoldLotDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) { -	bool foldCompact = styler.GetPropertyInt("fold.compact", 0) != 0; -	unsigned int endPos = startPos + length; -	int visibleChars = 0; -	int lineCurrent = styler.GetLine(startPos); - -	char chNext = styler.SafeGetCharAt(startPos); -	int style = SCE_LOT_DEFAULT; -	int styleNext = styler.StyleAt(startPos); -	int lev = SC_FOLDLEVELBASE; - -	// Gets style of previous line if not at the beginning of the document -	if (startPos > 1) -		style = styler.StyleAt(startPos - 2); - -	for (unsigned int i = startPos; i < endPos; i++) { -		char ch = chNext; -		chNext = styler.SafeGetCharAt(i + 1); - -		if (ch == '\r' && chNext == '\n') { -			// TO DO: -			// Should really get the state of the previous line from the styler -			int stylePrev = style;	 -			style = styleNext; -			styleNext = styler.StyleAt(i + 2); -		 -			switch (style) { -/* -			case SCE_LOT_SET: -				lev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; -				break; -*/ -			case SCE_LOT_FAIL: -/* -				if (stylePrev != SCE_LOT_FAIL)  -					lev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; -				else -					lev = SC_FOLDLEVELBASE + 1; -*/ -				lev = SC_FOLDLEVELBASE; -				break; - -			default: -				if (lineCurrent == 0 || stylePrev == SCE_LOT_FAIL)  -					lev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG; -				else -					lev = SC_FOLDLEVELBASE + 1; - -				if (visibleChars == 0 && foldCompact) -					lev |= SC_FOLDLEVELWHITEFLAG; -				break; -			} - -			if (lev != styler.LevelAt(lineCurrent))  -				styler.SetLevel(lineCurrent, lev); - -			lineCurrent++; -			visibleChars = 0; -		} - -		if (!isspacechar(ch)) -			visibleChars++; -	} - -	int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK; -	styler.SetLevel(lineCurrent, lev | flagsNext); -} - -static const char * const emptyWordListDesc[] = { -	0 -}; - -LexerModule lmLot(SCLEX_LOT, ColourizeLotDoc, "lot", FoldLotDoc, emptyWordListDesc); | 
