diff options
author | Neil <nyamatongwe@gmail.com> | 2017-06-22 15:53:47 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2017-06-22 15:53:47 +1000 |
commit | ba5302631cb01f364563fb513d37740a82efbaf9 (patch) | |
tree | 4302ec9af8060a31b6aa5aff10aefac52d6a5afb /lexlib/DefaultLexer.h | |
parent | f06c3555d0f7885f933b1cf4aaf7eff9ae80cc77 (diff) | |
download | scintilla-mirror-ba5302631cb01f364563fb513d37740a82efbaf9.tar.gz |
Add a DefaultLexer class which lexers can subclass if they want reasonable
default implementations of the ILexerWithSubStyles interface methods.
Diffstat (limited to 'lexlib/DefaultLexer.h')
-rw-r--r-- | lexlib/DefaultLexer.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lexlib/DefaultLexer.h b/lexlib/DefaultLexer.h new file mode 100644 index 000000000..7b1490138 --- /dev/null +++ b/lexlib/DefaultLexer.h @@ -0,0 +1,49 @@ +// Scintilla source code edit control +/** @file DefaultLexer.h + ** A lexer base class with default empty implementations of methods. + ** For lexers that do not support all features so do not need real implementations. + ** Does have real implementation for style metadata. + **/ +// Copyright 2017 by Neil Hodgson <neilh@scintilla.org> +// The License.txt file describes the conditions under which this software may be distributed. + +#ifndef DEFAULTLEXER_H +#define DEFAULTLEXER_H + +#ifdef SCI_NAMESPACE +namespace Scintilla { +#endif + +// A simple lexer with no state +class DefaultLexer : public ILexerWithSubStyles { +public: + DefaultLexer(); + virtual ~DefaultLexer(); + void SCI_METHOD Release() override; + int SCI_METHOD Version() const override; + const char * SCI_METHOD PropertyNames() override; + int SCI_METHOD PropertyType(const char *name) override; + const char * SCI_METHOD DescribeProperty(const char *name) override; + Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override; + const char * SCI_METHOD DescribeWordListSets() override; + Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override; + void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override = 0; + void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; + void * SCI_METHOD PrivateCall(int operation, void *pointer) override; + int SCI_METHOD LineEndTypesSupported() override; + int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override; + int SCI_METHOD SubStylesStart(int styleBase) override; + int SCI_METHOD SubStylesLength(int styleBase) override; + int SCI_METHOD StyleFromSubStyle(int subStyle) override; + int SCI_METHOD PrimaryStyleFromStyle(int style) override; + void SCI_METHOD FreeSubStyles() override; + void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override; + int SCI_METHOD DistanceToSecondaryStyles() override; + const char * SCI_METHOD GetSubStyleBases() override; +}; + +#ifdef SCI_NAMESPACE +} +#endif + +#endif |