NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
Catalogue.cxx
Go to the documentation of this file.
1// Scintilla source code edit control
5// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
6// The License.txt file describes the conditions under which this software may be distributed.
7
8#include <stdlib.h>
9#include <string.h>
10#include <ctype.h>
11#include <stdio.h>
12#include <stdarg.h>
13#include <assert.h>
14
15#include <vector>
16
17#include "ILexer.h"
18#include "Scintilla.h"
19#include "SciLexer.h"
20
21#include "LexerModule.h"
22#include "Catalogue.h"
23
24#ifdef SCI_NAMESPACE
25using namespace Scintilla;
26#endif
27
28static std::vector<LexerModule *> lexerCatalogue;
30
31const LexerModule *Catalogue::Find(int language) {
33 for (std::vector<LexerModule *>::iterator it=lexerCatalogue.begin();
34 it != lexerCatalogue.end(); ++it) {
35 if ((*it)->GetLanguage() == language) {
36 return *it;
37 }
38 }
39 return 0;
40}
41
42const LexerModule *Catalogue::Find(const char *languageName) {
44 if (languageName) {
45 for (std::vector<LexerModule *>::iterator it=lexerCatalogue.begin();
46 it != lexerCatalogue.end(); ++it) {
47 if ((*it)->languageName && (0 == strcmp((*it)->languageName, languageName))) {
48 return *it;
49 }
50 }
51 }
52 return 0;
53}
54
55void Catalogue::AddLexerModule(LexerModule *plm) {
56 if (plm->GetLanguage() == SCLEX_AUTOMATIC) {
57 plm->language = nextLanguage;
59 }
60 lexerCatalogue.push_back(plm);
61}
62
63// Alternative historical name for Scintilla_LinkLexers
65 return Scintilla_LinkLexers();
66}
67
68// To add or remove a lexer, add or remove its file and run LexGen.py.
69
70// Force a reference to all of the Scintilla lexers so that the linker will
71// not remove the code of the lexers.
73
74 static int initialised = 0;
75 if (initialised)
76 return 0;
77 initialised = 1;
78
79// Shorten the code that declares a lexer and ensures it is linked in by calling a method.
80#define LINK_LEXER(lexer) extern LexerModule lexer; Catalogue::AddLexerModule(&lexer);
81
82//++Autogenerated -- run src/LexGen.py to regenerate
83//**\‍(\tLINK_LEXER(\*);\n\‍)
84 LINK_LEXER(lmA68k);
85 LINK_LEXER(lmAbaqus);
86 LINK_LEXER(lmAda);
87 LINK_LEXER(lmAns1);
88 LINK_LEXER(lmAPDL);
89 LINK_LEXER(lmAsm);
90 LINK_LEXER(lmASY);
91 LINK_LEXER(lmAU3);
92 LINK_LEXER(lmAVE);
93 LINK_LEXER(lmAVS);
94 LINK_LEXER(lmBaan);
95 LINK_LEXER(lmBash);
97 LINK_LEXER(lmBlitzBasic);
98 LINK_LEXER(lmBullant);
99 LINK_LEXER(lmCaml);
100 LINK_LEXER(lmClw);
101 LINK_LEXER(lmClwNoCase);
102 LINK_LEXER(lmCmake);
103 LINK_LEXER(lmCOBOL);
104 LINK_LEXER(lmCoffeeScript);
105 LINK_LEXER(lmConf);
106 LINK_LEXER(lmCPP);
107 LINK_LEXER(lmCPPNoCase);
108 LINK_LEXER(lmCsound);
109 LINK_LEXER(lmCss);
110 LINK_LEXER(lmD);
112 LINK_LEXER(lmECL);
113 LINK_LEXER(lmEiffel);
114 LINK_LEXER(lmEiffelkw);
115 LINK_LEXER(lmErlang);
117 LINK_LEXER(lmESCRIPT);
118 LINK_LEXER(lmF77);
119 LINK_LEXER(lmFlagShip);
120 LINK_LEXER(lmForth);
121 LINK_LEXER(lmFortran);
122 LINK_LEXER(lmFreeBasic);
123 LINK_LEXER(lmGAP);
124 LINK_LEXER(lmGui4Cli);
125 LINK_LEXER(lmHaskell);
126 LINK_LEXER(lmHTML);
127 LINK_LEXER(lmInno);
128 LINK_LEXER(lmKix);
130 LINK_LEXER(lmLISP);
131 LINK_LEXER(lmLot);
132 LINK_LEXER(lmLout);
133 LINK_LEXER(lmLua);
134 LINK_LEXER(lmMagikSF);
136 LINK_LEXER(lmMarkdown);
138 LINK_LEXER(lmMETAPOST);
139 LINK_LEXER(lmMMIXAL);
140 LINK_LEXER(lmModula);
141 LINK_LEXER(lmMSSQL);
142 LINK_LEXER(lmMySQL);
143 LINK_LEXER(lmNimrod);
144 LINK_LEXER(lmNncrontab);
145 LINK_LEXER(lmNsis);
148 LINK_LEXER(lmOpal);
149 LINK_LEXER(lmOScript);
150 LINK_LEXER(lmPascal);
151 LINK_LEXER(lmPB);
152 LINK_LEXER(lmPerl);
153 LINK_LEXER(lmPHPSCRIPT);
154 LINK_LEXER(lmPLM);
156 LINK_LEXER(lmPOV);
157 LINK_LEXER(lmPowerPro);
158 LINK_LEXER(lmPowerShell);
159 LINK_LEXER(lmProgress);
161 LINK_LEXER(lmPS);
162 LINK_LEXER(lmPureBasic);
163 LINK_LEXER(lmPython);
164 LINK_LEXER(lmR);
165 LINK_LEXER(lmREBOL);
166 LINK_LEXER(lmRuby);
167 LINK_LEXER(lmScriptol);
168 LINK_LEXER(lmSmalltalk);
169 LINK_LEXER(lmSML);
170 LINK_LEXER(lmSorc);
171 LINK_LEXER(lmSpecman);
172 LINK_LEXER(lmSpice);
173 LINK_LEXER(lmSQL);
174 LINK_LEXER(lmTACL);
175 LINK_LEXER(lmTADS3);
176 LINK_LEXER(lmTAL);
177 LINK_LEXER(lmTCL);
178 LINK_LEXER(lmTCMD);
179 LINK_LEXER(lmTeX);
180 LINK_LEXER(lmTxt2tags);
181 LINK_LEXER(lmVB);
182 LINK_LEXER(lmVBScript);
183 LINK_LEXER(lmVerilog);
184 LINK_LEXER(lmVHDL);
185 LINK_LEXER(lmVisualProlog);
186 LINK_LEXER(lmXML);
187 LINK_LEXER(lmYAML);
191
192//--Autogenerated -- end of automatically generated section
193
194 return 1;
195}
#define LINK_LEXER(lexer)
int wxForceScintillaLexers(void)
Definition: Catalogue.cxx:64
static int nextLanguage
Definition: Catalogue.cxx:29
int Scintilla_LinkLexers()
Definition: Catalogue.cxx:72
static std::vector< LexerModule * > lexerCatalogue
Definition: Catalogue.cxx:28
LexerModule lmMatlab(SCLEX_MATLAB, ColouriseMatlabDoc, "matlab", FoldMatlabDoc, matlabWordListDesc)
LexerModule lmOctave(SCLEX_OCTAVE, ColouriseOctaveDoc, "octave", FoldOctaveDoc, octaveWordListDesc)
LexerModule lmLatex(SCLEX_LATEX, ColouriseLatexDoc, "latex", 0, emptyWordListDesc)
LexerModule lmMake(SCLEX_MAKEFILE, ColouriseMakeDoc, "makefile", 0, emptyWordListDesc)
LexerModule lmNSCR(SCLEX_NSCR, LexerNSCR::LexerFactoryNSCR, "NSCR", NSCRWordLists)
LexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc, "diff", FoldDiffDoc, emptyWordListDesc)
LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc, "errorlist", 0, emptyWordListDesc)
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", 0, batchWordListDesc)
LexerModule lmPo(SCLEX_PO, ColourisePoDoc, "po", 0, emptyWordListDesc)
LexerModule lmNPRC(SCLEX_NPRC, LexerNPRC::LexerFactoryNPRC, "NPRC", NPRCWordLists)
LexerModule lmProps(SCLEX_PROPERTIES, ColourisePropsDoc, "props", FoldPropsDoc, emptyWordListDesc)
LexerModule lmTXTADV(SCLEX_TXTADV, LexerTXTADV::LexerFactoryTXTADV, "TXTADV", emptyWordListDesc)
LexerModule lmNull(SCLEX_NULL, ColouriseNullDoc, "null")
#define SCLEX_AUTOMATIC
Definition: SciLexer.h:126