1 // Scintilla source code edit control
2 /** @file StyleContext.cxx
3  ** Lexer infrastructure.
4  **/
5 // Copyright 1998-2004 by Neil Hodgson <neilh@scintilla.org>
6 // This file is in the public domain.
7 
8 #include <stdlib.h>
9 #include <string.h>
10 #include <ctype.h>
11 #include <stdio.h>
12 #include <assert.h>
13 
14 #include "ILexer.h"
15 
16 #include "LexAccessor.h"
17 #include "Accessor.h"
18 #include "StyleContext.h"
19 
20 #ifdef SCI_NAMESPACE
21 using namespace Scintilla;
22 #endif
23 
getRange(unsigned int start,unsigned int end,LexAccessor & styler,char * s,unsigned int len)24 static void getRange(unsigned int start,
25 		unsigned int end,
26 		LexAccessor &styler,
27 		char *s,
28 		unsigned int len) {
29 	unsigned int i = 0;
30 	while ((i < end - start + 1) && (i < len-1)) {
31 		s[i] = styler[start + i];
32 		i++;
33 	}
34 	s[i] = '\0';
35 }
36 
GetCurrent(char * s,unsigned int len)37 void StyleContext::GetCurrent(char *s, unsigned int len) {
38 	getRange(styler.GetStartSegment(), currentPos - 1, styler, s, len);
39 }
40 
getRangeLowered(unsigned int start,unsigned int end,LexAccessor & styler,char * s,unsigned int len)41 static void getRangeLowered(unsigned int start,
42 		unsigned int end,
43 		LexAccessor &styler,
44 		char *s,
45 		unsigned int len) {
46 	unsigned int i = 0;
47 	while ((i < end - start + 1) && (i < len-1)) {
48 		s[i] = static_cast<char>(tolower(styler[start + i]));
49 		i++;
50 	}
51 	s[i] = '\0';
52 }
53 
GetCurrentLowered(char * s,unsigned int len)54 void StyleContext::GetCurrentLowered(char *s, unsigned int len) {
55 	getRangeLowered(styler.GetStartSegment(), currentPos - 1, styler, s, len);
56 }
57