1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file DefaultLexer.h 3*8af74909SZhong Yang ** A lexer base class with default empty implementations of methods. 4*8af74909SZhong Yang ** For lexers that do not support all features so do not need real implementations. 5*8af74909SZhong Yang ** Does have real implementation for style metadata. 6*8af74909SZhong Yang **/ 7*8af74909SZhong Yang // Copyright 2017 by Neil Hodgson <[email protected]> 8*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 9*8af74909SZhong Yang 10*8af74909SZhong Yang #ifndef DEFAULTLEXER_H 11*8af74909SZhong Yang #define DEFAULTLEXER_H 12*8af74909SZhong Yang 13*8af74909SZhong Yang namespace Scintilla { 14*8af74909SZhong Yang 15*8af74909SZhong Yang // A simple lexer with no state 16*8af74909SZhong Yang class DefaultLexer : public ILexer5 { 17*8af74909SZhong Yang const char *languageName; 18*8af74909SZhong Yang int language; 19*8af74909SZhong Yang const LexicalClass *lexClasses; 20*8af74909SZhong Yang size_t nClasses; 21*8af74909SZhong Yang public: 22*8af74909SZhong Yang DefaultLexer(const char *languageName_, int language_, 23*8af74909SZhong Yang const LexicalClass *lexClasses_ = nullptr, size_t nClasses_ = 0); 24*8af74909SZhong Yang virtual ~DefaultLexer(); 25*8af74909SZhong Yang void SCI_METHOD Release() override; 26*8af74909SZhong Yang int SCI_METHOD Version() const override; 27*8af74909SZhong Yang const char * SCI_METHOD PropertyNames() override; 28*8af74909SZhong Yang int SCI_METHOD PropertyType(const char *name) override; 29*8af74909SZhong Yang const char * SCI_METHOD DescribeProperty(const char *name) override; 30*8af74909SZhong Yang Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; 31*8af74909SZhong Yang const char * SCI_METHOD DescribeWordListSets() override; 32*8af74909SZhong Yang Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; 33*8af74909SZhong Yang void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override = 0; 34*8af74909SZhong Yang void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; 35*8af74909SZhong Yang void * SCI_METHOD PrivateCall(int operation, void *pointer) override; 36*8af74909SZhong Yang int SCI_METHOD LineEndTypesSupported() override; 37*8af74909SZhong Yang int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override; 38*8af74909SZhong Yang int SCI_METHOD SubStylesStart(int styleBase) override; 39*8af74909SZhong Yang int SCI_METHOD SubStylesLength(int styleBase) override; 40*8af74909SZhong Yang int SCI_METHOD StyleFromSubStyle(int subStyle) override; 41*8af74909SZhong Yang int SCI_METHOD PrimaryStyleFromStyle(int style) override; 42*8af74909SZhong Yang void SCI_METHOD FreeSubStyles() override; 43*8af74909SZhong Yang void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override; 44*8af74909SZhong Yang int SCI_METHOD DistanceToSecondaryStyles() override; 45*8af74909SZhong Yang const char * SCI_METHOD GetSubStyleBases() override; 46*8af74909SZhong Yang int SCI_METHOD NamedStyles() override; 47*8af74909SZhong Yang const char * SCI_METHOD NameOfStyle(int style) override; 48*8af74909SZhong Yang const char * SCI_METHOD TagsOfStyle(int style) override; 49*8af74909SZhong Yang const char * SCI_METHOD DescriptionOfStyle(int style) override; 50*8af74909SZhong Yang // ILexer5 methods 51*8af74909SZhong Yang const char * SCI_METHOD GetName() override; 52*8af74909SZhong Yang int SCI_METHOD GetIdentifier() override; 53*8af74909SZhong Yang }; 54*8af74909SZhong Yang 55*8af74909SZhong Yang } 56*8af74909SZhong Yang 57*8af74909SZhong Yang #endif 58