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