1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file CaseFolder.h 3*8af74909SZhong Yang ** Classes for case folding. 4*8af74909SZhong Yang **/ 5*8af74909SZhong Yang // Copyright 1998-2013 by Neil Hodgson <[email protected]> 6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 7*8af74909SZhong Yang 8*8af74909SZhong Yang #ifndef CASEFOLDER_H 9*8af74909SZhong Yang #define CASEFOLDER_H 10*8af74909SZhong Yang 11*8af74909SZhong Yang namespace Scintilla { 12*8af74909SZhong Yang 13*8af74909SZhong Yang class CaseFolder { 14*8af74909SZhong Yang public: 15*8af74909SZhong Yang virtual ~CaseFolder(); 16*8af74909SZhong Yang virtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) = 0; 17*8af74909SZhong Yang }; 18*8af74909SZhong Yang 19*8af74909SZhong Yang class CaseFolderTable : public CaseFolder { 20*8af74909SZhong Yang protected: 21*8af74909SZhong Yang char mapping[256]; 22*8af74909SZhong Yang public: 23*8af74909SZhong Yang CaseFolderTable() noexcept; 24*8af74909SZhong Yang ~CaseFolderTable() override; 25*8af74909SZhong Yang size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) override; 26*8af74909SZhong Yang void SetTranslation(char ch, char chTranslation) noexcept; 27*8af74909SZhong Yang void StandardASCII() noexcept; 28*8af74909SZhong Yang }; 29*8af74909SZhong Yang 30*8af74909SZhong Yang class ICaseConverter; 31*8af74909SZhong Yang 32*8af74909SZhong Yang class CaseFolderUnicode : public CaseFolderTable { 33*8af74909SZhong Yang ICaseConverter *converter; 34*8af74909SZhong Yang public: 35*8af74909SZhong Yang CaseFolderUnicode(); 36*8af74909SZhong Yang size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) override; 37*8af74909SZhong Yang }; 38*8af74909SZhong Yang 39*8af74909SZhong Yang } 40*8af74909SZhong Yang 41*8af74909SZhong Yang #endif 42