// 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 <ctype.h>
#include <stdio.h>
#include <assert.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 = MakeUpperCase(*a);
            char upperB = 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 = MakeUpperCase(*a);
            char upperB = 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
