xref: /MusicPlayer2/scintilla/lexlib/DefaultLexer.cxx (revision 443d2d2511be730d1b1dd3181942b7fa6539aa1a)
1 // Scintilla source code edit control
2 /** @file DefaultLexer.cxx
3  ** A lexer base class that provides reasonable default behaviour.
4  **/
5 // Copyright 2017 by Neil Hodgson <[email protected]>
6 // The License.txt file describes the conditions under which this software may be distributed.
7 
8 #include <cstdlib>
9 #include <cassert>
10 #include <cstring>
11 
12 #include "ILexer.h"
13 #include "Scintilla.h"
14 #include "SciLexer.h"
15 
16 #include "PropSetSimple.h"
17 #include "WordList.h"
18 #include "LexAccessor.h"
19 #include "Accessor.h"
20 #include "LexerModule.h"
21 #include "DefaultLexer.h"
22 
23 using namespace Scintilla;
24 
25 static const char styleSubable[] = { 0 };
26 
27 DefaultLexer::DefaultLexer(const char *languageName_, int language_,
28 	const LexicalClass *lexClasses_, size_t nClasses_) :
29 	languageName(languageName_),
30 	language(language_),
31 	lexClasses(lexClasses_),
32 	nClasses(nClasses_) {
33 }
34 
35 DefaultLexer::~DefaultLexer() {
36 }
37 
38 void SCI_METHOD DefaultLexer::Release() {
39 	delete this;
40 }
41 
42 int SCI_METHOD DefaultLexer::Version() const {
43 	return lvRelease5;
44 }
45 
46 const char * SCI_METHOD DefaultLexer::PropertyNames() {
47 	return "";
48 }
49 
50 int SCI_METHOD DefaultLexer::PropertyType(const char *) {
51 	return SC_TYPE_BOOLEAN;
52 }
53 
54 const char * SCI_METHOD DefaultLexer::DescribeProperty(const char *) {
55 	return "";
56 }
57 
58 Sci_Position SCI_METHOD DefaultLexer::PropertySet(const char *, const char *) {
59 	return -1;
60 }
61 
62 const char * SCI_METHOD DefaultLexer::DescribeWordListSets() {
63 	return "";
64 }
65 
66 Sci_Position SCI_METHOD DefaultLexer::WordListSet(int, const char *) {
67 	return -1;
68 }
69 
70 void SCI_METHOD DefaultLexer::Fold(Sci_PositionU, Sci_Position, int, IDocument *) {
71 }
72 
73 void * SCI_METHOD DefaultLexer::PrivateCall(int, void *) {
74 	return nullptr;
75 }
76 
77 int SCI_METHOD DefaultLexer::LineEndTypesSupported() {
78 	return SC_LINE_END_TYPE_DEFAULT;
79 }
80 
81 int SCI_METHOD DefaultLexer::AllocateSubStyles(int, int) {
82 	return -1;
83 }
84 
85 int SCI_METHOD DefaultLexer::SubStylesStart(int) {
86 	return -1;
87 }
88 
89 int SCI_METHOD DefaultLexer::SubStylesLength(int) {
90 	return 0;
91 }
92 
93 int SCI_METHOD DefaultLexer::StyleFromSubStyle(int subStyle) {
94 	return subStyle;
95 }
96 
97 int SCI_METHOD DefaultLexer::PrimaryStyleFromStyle(int style) {
98 	return style;
99 }
100 
101 void SCI_METHOD DefaultLexer::FreeSubStyles() {
102 }
103 
104 void SCI_METHOD DefaultLexer::SetIdentifiers(int, const char *) {
105 }
106 
107 int SCI_METHOD DefaultLexer::DistanceToSecondaryStyles() {
108 	return 0;
109 }
110 
111 const char * SCI_METHOD DefaultLexer::GetSubStyleBases() {
112 	return styleSubable;
113 }
114 
115 int SCI_METHOD DefaultLexer::NamedStyles() {
116 	return static_cast<int>(nClasses);
117 }
118 
119 const char * SCI_METHOD DefaultLexer::NameOfStyle(int style) {
120 	return (style < NamedStyles()) ? lexClasses[style].name : "";
121 }
122 
123 const char * SCI_METHOD DefaultLexer::TagsOfStyle(int style) {
124 	return (style < NamedStyles()) ? lexClasses[style].tags : "";
125 }
126 
127 const char * SCI_METHOD DefaultLexer::DescriptionOfStyle(int style) {
128 	return (style < NamedStyles()) ? lexClasses[style].description : "";
129 }
130 
131 // ILexer5 methods
132 const char * SCI_METHOD DefaultLexer::GetName() {
133 	return languageName;
134 }
135 
136 int SCI_METHOD DefaultLexer::GetIdentifier() {
137 	return language;
138 }
139 
140