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 Yangint 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 Yangint 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