diff options
Diffstat (limited to 'lexlib')
-rw-r--r-- | lexlib/DefaultLexer.cxx | 110 | ||||
-rw-r--r-- | lexlib/DefaultLexer.h | 49 |
2 files changed, 159 insertions, 0 deletions
diff --git a/lexlib/DefaultLexer.cxx b/lexlib/DefaultLexer.cxx new file mode 100644 index 000000000..9babbf7a4 --- /dev/null +++ b/lexlib/DefaultLexer.cxx @@ -0,0 +1,110 @@ +// Scintilla source code edit control +/** @file DefaultLexer.cxx + ** A lexer base class that provides reasonable default behaviour. + **/ +// Copyright 2017 by Neil Hodgson <neilh@scintilla.org> +// The License.txt file describes the conditions under which this software may be distributed. + +#include <cstdlib> +#include <cassert> +#include <cstring> + +#include "ILexer.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#include "PropSetSimple.h" +#include "WordList.h" +#include "LexAccessor.h" +#include "Accessor.h" +#include "LexerModule.h" +#include "DefaultLexer.h" + +#ifdef SCI_NAMESPACE +using namespace Scintilla; +#endif + +static const char styleSubable[] = { 0 }; + +DefaultLexer::DefaultLexer() { +} + +DefaultLexer::~DefaultLexer() { +} + +void SCI_METHOD DefaultLexer::Release() { + delete this; +} + +int SCI_METHOD DefaultLexer::Version() const { + return lvOriginal; +} + +const char * SCI_METHOD DefaultLexer::PropertyNames() { + return ""; +} + +int SCI_METHOD DefaultLexer::PropertyType(const char *) { + return SC_TYPE_BOOLEAN; +} + +const char * SCI_METHOD DefaultLexer::DescribeProperty(const char *) { + return ""; +} + +Sci_Position SCI_METHOD DefaultLexer::PropertySet(const char *, const char *) { + return -1; +} + +const char * SCI_METHOD DefaultLexer::DescribeWordListSets() { + return ""; +} + +Sci_Position SCI_METHOD DefaultLexer::WordListSet(int, const char *) { + return -1; +} + +void SCI_METHOD DefaultLexer::Fold(Sci_PositionU, Sci_Position, int, IDocument *) { +} + +void * SCI_METHOD DefaultLexer::PrivateCall(int, void *) { + return nullptr; +} + +int SCI_METHOD DefaultLexer::LineEndTypesSupported() { + return SC_LINE_END_TYPE_DEFAULT; +} + +int SCI_METHOD DefaultLexer::AllocateSubStyles(int, int) { + return -1; +} + +int SCI_METHOD DefaultLexer::SubStylesStart(int) { + return -1; +} + +int SCI_METHOD DefaultLexer::SubStylesLength(int) { + return 0; +} + +int SCI_METHOD DefaultLexer::StyleFromSubStyle(int subStyle) { + return subStyle; +} + +int SCI_METHOD DefaultLexer::PrimaryStyleFromStyle(int style) { + return style; +} + +void SCI_METHOD DefaultLexer::FreeSubStyles() { +} + +void SCI_METHOD DefaultLexer::SetIdentifiers(int, const char *) { +} + +int SCI_METHOD DefaultLexer::DistanceToSecondaryStyles() { + return 0; +} + +const char * SCI_METHOD DefaultLexer::GetSubStyleBases() { + return styleSubable; +} 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 |