xref: /MusicPlayer2/scintilla/lexlib/CharacterSet.cxx (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
1*8af74909SZhong Yang // Scintilla source code edit control
2*8af74909SZhong Yang /** @file CharacterSet.cxx
3*8af74909SZhong Yang  ** Simple case functions for ASCII.
4*8af74909SZhong Yang  ** Lexer infrastructure.
5*8af74909SZhong Yang  **/
6*8af74909SZhong Yang // Copyright 1998-2010 by Neil Hodgson <[email protected]>
7*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
8*8af74909SZhong Yang 
9*8af74909SZhong Yang #include <cstdlib>
10*8af74909SZhong Yang #include <cassert>
11*8af74909SZhong Yang 
12*8af74909SZhong Yang #include "CharacterSet.h"
13*8af74909SZhong Yang 
14*8af74909SZhong Yang using namespace Scintilla;
15*8af74909SZhong Yang 
16*8af74909SZhong Yang namespace Scintilla {
17*8af74909SZhong Yang 
CompareCaseInsensitive(const char * a,const char * b)18*8af74909SZhong Yang int CompareCaseInsensitive(const char *a, const char *b) noexcept {
19*8af74909SZhong Yang 	while (*a && *b) {
20*8af74909SZhong Yang 		if (*a != *b) {
21*8af74909SZhong Yang 			const char upperA = MakeUpperCase(*a);
22*8af74909SZhong Yang 			const char upperB = MakeUpperCase(*b);
23*8af74909SZhong Yang 			if (upperA != upperB)
24*8af74909SZhong Yang 				return upperA - upperB;
25*8af74909SZhong Yang 		}
26*8af74909SZhong Yang 		a++;
27*8af74909SZhong Yang 		b++;
28*8af74909SZhong Yang 	}
29*8af74909SZhong Yang 	// Either *a or *b is nul
30*8af74909SZhong Yang 	return *a - *b;
31*8af74909SZhong Yang }
32*8af74909SZhong Yang 
CompareNCaseInsensitive(const char * a,const char * b,size_t len)33*8af74909SZhong Yang int CompareNCaseInsensitive(const char *a, const char *b, size_t len) noexcept {
34*8af74909SZhong Yang 	while (*a && *b && len) {
35*8af74909SZhong Yang 		if (*a != *b) {
36*8af74909SZhong Yang 			const char upperA = MakeUpperCase(*a);
37*8af74909SZhong Yang 			const char upperB = MakeUpperCase(*b);
38*8af74909SZhong Yang 			if (upperA != upperB)
39*8af74909SZhong Yang 				return upperA - upperB;
40*8af74909SZhong Yang 		}
41*8af74909SZhong Yang 		a++;
42*8af74909SZhong Yang 		b++;
43*8af74909SZhong Yang 		len--;
44*8af74909SZhong Yang 	}
45*8af74909SZhong Yang 	if (len == 0)
46*8af74909SZhong Yang 		return 0;
47*8af74909SZhong Yang 	else
48*8af74909SZhong Yang 		// Either *a or *b is nul
49*8af74909SZhong Yang 		return *a - *b;
50*8af74909SZhong Yang }
51*8af74909SZhong Yang 
52*8af74909SZhong Yang }
53