text: // Scintilla source code edit control
  /** @file CharacterSet.cxx
   ** Simple case functions for ASCII.
   ** Lexer infrastructure.
   **/
  // Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
  // The License.txt file describes the conditions under which this software may be distributed.
  
  #include <stdlib.h>
  #include <string.h>
  #include <stdio.h>
  #include <assert.h>
  #include <ctype.h>
  
  #include "CharacterSet.h"
  
  #ifdef SCI_NAMESPACE
  using namespace Scintilla;
  #endif
  
  #ifdef SCI_NAMESPACE
  namespace Scintilla {
  #endif
  
  int CompareCaseInsensitive(const char *a, const char *b) {
  	while (*a && *b) {
  		if (*a != *b) {
  			char upperA = static_cast<char>(MakeUpperCase(*a));
  			char upperB = static_cast<char>(MakeUpperCase(*b));
  			if (upperA != upperB)
  				return upperA - upperB;
  		}
  		a++;
  		b++;
  	}
  	// Either *a or *b is nul
  	return *a - *b;
  }
  
  int CompareNCaseInsensitive(const char *a, const char *b, size_t len) {
  	while (*a && *b && len) {
  		if (*a != *b) {
  			char upperA = static_cast<char>(MakeUpperCase(*a));
  			char upperB = static_cast<char>(MakeUpperCase(*b));
  			if (upperA != upperB)
  				return upperA - upperB;
  		}
  		a++;
  		b++;
  		len--;
  	}
  	if (len == 0)
  		return 0;
  	else
  		// Either *a or *b is nul
  		return *a - *b;
  }
  
  #ifdef SCI_NAMESPACE
  }
  #endif
  