1 // Lexilla lexer library
3 ** Lexer infrastructure.
4 ** Provides entry points to shared library.
6 // Copyright 2019 by Neil Hodgson <neilh@scintilla.org>
7 // The License.txt file describes the conditions under which this software may be distributed.
12 #include <initializer_list>
15 #define EXPORT_FUNCTION __declspec(dllexport)
16 #define CALLING_CONVENTION __stdcall
18 #define EXPORT_FUNCTION __attribute__((visibility("default")))
19 #define CALLING_CONVENTION
24 #include "LexerModule.h"
25 #include "CatalogueModules.h"
27 using namespace Lexilla
;
29 //++Autogenerated -- run lexilla/scripts/LexillaGen.py to regenerate
30 //**\(extern LexerModule \*;\n\)
31 extern LexerModule lmA68k
;
32 extern LexerModule lmAbaqus
;
33 extern LexerModule lmAda
;
34 extern LexerModule lmAPDL
;
35 extern LexerModule lmAs
;
36 extern LexerModule lmAsciidoc
;
37 extern LexerModule lmAsm
;
38 extern LexerModule lmAsn1
;
39 extern LexerModule lmASY
;
40 extern LexerModule lmAU3
;
41 extern LexerModule lmAVE
;
42 extern LexerModule lmAVS
;
43 extern LexerModule lmBaan
;
44 extern LexerModule lmBash
;
45 extern LexerModule lmBatch
;
46 extern LexerModule lmBibTeX
;
47 extern LexerModule lmBlitzBasic
;
48 extern LexerModule lmBullant
;
49 extern LexerModule lmCaml
;
50 extern LexerModule lmCIL
;
51 extern LexerModule lmClw
;
52 extern LexerModule lmClwNoCase
;
53 extern LexerModule lmCmake
;
54 extern LexerModule lmCOBOL
;
55 extern LexerModule lmCoffeeScript
;
56 extern LexerModule lmConf
;
57 extern LexerModule lmCPP
;
58 extern LexerModule lmCPPNoCase
;
59 extern LexerModule lmCsound
;
60 extern LexerModule lmCss
;
61 extern LexerModule lmD
;
62 extern LexerModule lmDataflex
;
63 extern LexerModule lmDiff
;
64 extern LexerModule lmDMAP
;
65 extern LexerModule lmDMIS
;
66 extern LexerModule lmECL
;
67 extern LexerModule lmEDIFACT
;
68 extern LexerModule lmEiffel
;
69 extern LexerModule lmEiffelkw
;
70 extern LexerModule lmErlang
;
71 extern LexerModule lmErrorList
;
72 extern LexerModule lmESCRIPT
;
73 extern LexerModule lmF77
;
74 extern LexerModule lmFlagShip
;
75 extern LexerModule lmForth
;
76 extern LexerModule lmFortran
;
77 extern LexerModule lmFreeBasic
;
78 extern LexerModule lmFSharp
;
79 extern LexerModule lmGAP
;
80 extern LexerModule lmGDScript
;
81 extern LexerModule lmGui4Cli
;
82 extern LexerModule lmHaskell
;
83 extern LexerModule lmHollywood
;
84 extern LexerModule lmHTML
;
85 extern LexerModule lmIHex
;
86 extern LexerModule lmIndent
;
87 extern LexerModule lmInno
;
88 extern LexerModule lmJSON
;
89 extern LexerModule lmJulia
;
90 extern LexerModule lmKix
;
91 extern LexerModule lmKVIrc
;
92 extern LexerModule lmLatex
;
93 extern LexerModule lmLISP
;
94 extern LexerModule lmLiterateHaskell
;
95 extern LexerModule lmLot
;
96 extern LexerModule lmLout
;
97 extern LexerModule lmLua
;
98 extern LexerModule lmMagikSF
;
99 extern LexerModule lmMake
;
100 extern LexerModule lmMarkdown
;
101 extern LexerModule lmMatlab
;
102 extern LexerModule lmMaxima
;
103 extern LexerModule lmMETAPOST
;
104 extern LexerModule lmMMIXAL
;
105 extern LexerModule lmModula
;
106 extern LexerModule lmMSSQL
;
107 extern LexerModule lmMySQL
;
108 extern LexerModule lmNim
;
109 extern LexerModule lmNimrod
;
110 extern LexerModule lmNncrontab
;
111 extern LexerModule lmNsis
;
112 extern LexerModule lmNull
;
113 extern LexerModule lmOctave
;
114 extern LexerModule lmOpal
;
115 extern LexerModule lmOScript
;
116 extern LexerModule lmPascal
;
117 extern LexerModule lmPB
;
118 extern LexerModule lmPerl
;
119 extern LexerModule lmPHPSCRIPT
;
120 extern LexerModule lmPLM
;
121 extern LexerModule lmPO
;
122 extern LexerModule lmPOV
;
123 extern LexerModule lmPowerPro
;
124 extern LexerModule lmPowerShell
;
125 extern LexerModule lmProgress
;
126 extern LexerModule lmProps
;
127 extern LexerModule lmPS
;
128 extern LexerModule lmPureBasic
;
129 extern LexerModule lmPython
;
130 extern LexerModule lmR
;
131 extern LexerModule lmRaku
;
132 extern LexerModule lmREBOL
;
133 extern LexerModule lmRegistry
;
134 extern LexerModule lmRuby
;
135 extern LexerModule lmRust
;
136 extern LexerModule lmSAS
;
137 extern LexerModule lmScriptol
;
138 extern LexerModule lmSmalltalk
;
139 extern LexerModule lmSML
;
140 extern LexerModule lmSorc
;
141 extern LexerModule lmSpecman
;
142 extern LexerModule lmSpice
;
143 extern LexerModule lmSQL
;
144 extern LexerModule lmSrec
;
145 extern LexerModule lmStata
;
146 extern LexerModule lmSTTXT
;
147 extern LexerModule lmTACL
;
148 extern LexerModule lmTADS3
;
149 extern LexerModule lmTAL
;
150 extern LexerModule lmTCL
;
151 extern LexerModule lmTCMD
;
152 extern LexerModule lmTEHex
;
153 extern LexerModule lmTeX
;
154 extern LexerModule lmTxt2tags
;
155 extern LexerModule lmVB
;
156 extern LexerModule lmVBScript
;
157 extern LexerModule lmVerilog
;
158 extern LexerModule lmVHDL
;
159 extern LexerModule lmVisualProlog
;
160 extern LexerModule lmX12
;
161 extern LexerModule lmXML
;
162 extern LexerModule lmYAML
;
164 //--Autogenerated -- end of automatically generated section
168 CatalogueModules catalogueLexilla
;
170 static void AddGeanyLexers()
172 catalogueLexilla
.AddLexerModules({
224 void AddEachLexer() {
226 if (catalogueLexilla
.Count() > 0) {
233 catalogueLexilla
.AddLexerModules({
234 //++Autogenerated -- run scripts/LexillaGen.py to regenerate
369 //--Autogenerated -- end of automatically generated section
378 EXPORT_FUNCTION
int CALLING_CONVENTION
GetLexerCount() {
380 return catalogueLexilla
.Count();
383 EXPORT_FUNCTION
void CALLING_CONVENTION
GetLexerName(unsigned int index
, char *name
, int buflength
) {
386 const char *lexerName
= catalogueLexilla
.Name(index
);
387 if (static_cast<size_t>(buflength
) > strlen(lexerName
)) {
388 strcpy(name
, lexerName
);
392 EXPORT_FUNCTION LexerFactoryFunction CALLING_CONVENTION
GetLexerFactory(unsigned int index
) {
394 return catalogueLexilla
.Factory(index
);
397 EXPORT_FUNCTION
Scintilla::ILexer5
* CALLING_CONVENTION
CreateLexer(const char *name
) {
399 for (unsigned int i
= 0; i
< catalogueLexilla
.Count(); i
++) {
400 const char *lexerName
= catalogueLexilla
.Name(i
);
401 if (0 == strcmp(lexerName
, name
)) {
402 return catalogueLexilla
.Create(i
);
408 EXPORT_FUNCTION
const char * CALLING_CONVENTION
LexerNameFromID(int identifier
) {
410 const LexerModule
*pModule
= catalogueLexilla
.Find(identifier
);
412 return pModule
->languageName
;
418 EXPORT_FUNCTION
const char * CALLING_CONVENTION
GetLibraryPropertyNames() {
422 EXPORT_FUNCTION
void CALLING_CONVENTION
SetLibraryProperty(const char *, const char *) {
423 // Null implementation
426 EXPORT_FUNCTION
const char * CALLING_CONVENTION
GetNameSpace() {
430 // Not exported from binary as LexerModule must be built exactly the same as
431 // modules listed above
432 void AddStaticLexerModule(LexerModule
*plm
) {
434 catalogueLexilla
.AddLexerModule(plm
);