aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexlib/DefaultLexer.cxx
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2017-06-22 15:53:47 +1000
committerNeil <nyamatongwe@gmail.com>2017-06-22 15:53:47 +1000
commitba5302631cb01f364563fb513d37740a82efbaf9 (patch)
tree4302ec9af8060a31b6aa5aff10aefac52d6a5afb /lexlib/DefaultLexer.cxx
parentf06c3555d0f7885f933b1cf4aaf7eff9ae80cc77 (diff)
downloadscintilla-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.cxx')
-rw-r--r--lexlib/DefaultLexer.cxx110
1 files changed, 110 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;
+}