diff options
Diffstat (limited to 'lexilla/src/Lexilla.cxx')
-rw-r--r-- | lexilla/src/Lexilla.cxx | 336 |
1 files changed, 336 insertions, 0 deletions
diff --git a/lexilla/src/Lexilla.cxx b/lexilla/src/Lexilla.cxx new file mode 100644 index 000000000..e12d65640 --- /dev/null +++ b/lexilla/src/Lexilla.cxx @@ -0,0 +1,336 @@ +// Scintilla source code edit control +/** @file Lexilla.cxx + ** Lexer infrastructure. + ** Provides entry points to shared library. + **/ +// Copyright 2019 by Neil Hodgson <neilh@scintilla.org> +// The License.txt file describes the conditions under which this software may be distributed. + +#include <cstring> + +#include <vector> + +#if _WIN32 +#define EXPORT_FUNCTION __declspec(dllexport) +#else +#define EXPORT_FUNCTION __attribute__((visibility("default"))) +#endif + +#include "ILexer.h" + +#include "LexerModule.h" +#include "CatalogueModules.h" + +using namespace Scintilla; + +//++Autogenerated -- run lexilla/LexillaGen.py to regenerate +//**\(extern LexerModule \*;\n\) +extern LexerModule lmA68k; +extern LexerModule lmAbaqus; +extern LexerModule lmAda; +extern LexerModule lmAPDL; +extern LexerModule lmAs; +extern LexerModule lmAsm; +extern LexerModule lmAsn1; +extern LexerModule lmASY; +extern LexerModule lmAU3; +extern LexerModule lmAVE; +extern LexerModule lmAVS; +extern LexerModule lmBaan; +extern LexerModule lmBash; +extern LexerModule lmBatch; +extern LexerModule lmBibTeX; +extern LexerModule lmBlitzBasic; +extern LexerModule lmBullant; +extern LexerModule lmCaml; +extern LexerModule lmCIL; +extern LexerModule lmClw; +extern LexerModule lmClwNoCase; +extern LexerModule lmCmake; +extern LexerModule lmCOBOL; +extern LexerModule lmCoffeeScript; +extern LexerModule lmConf; +extern LexerModule lmCPP; +extern LexerModule lmCPPNoCase; +extern LexerModule lmCsound; +extern LexerModule lmCss; +extern LexerModule lmD; +extern LexerModule lmDataflex; +extern LexerModule lmDiff; +extern LexerModule lmDMAP; +extern LexerModule lmDMIS; +extern LexerModule lmECL; +extern LexerModule lmEDIFACT; +extern LexerModule lmEiffel; +extern LexerModule lmEiffelkw; +extern LexerModule lmErlang; +extern LexerModule lmErrorList; +extern LexerModule lmESCRIPT; +extern LexerModule lmF77; +extern LexerModule lmFlagShip; +extern LexerModule lmForth; +extern LexerModule lmFortran; +extern LexerModule lmFreeBasic; +extern LexerModule lmGAP; +extern LexerModule lmGui4Cli; +extern LexerModule lmHaskell; +extern LexerModule lmHollywood; +extern LexerModule lmHTML; +extern LexerModule lmIHex; +extern LexerModule lmIndent; +extern LexerModule lmInno; +extern LexerModule lmJSON; +extern LexerModule lmKix; +extern LexerModule lmKVIrc; +extern LexerModule lmLatex; +extern LexerModule lmLISP; +extern LexerModule lmLiterateHaskell; +extern LexerModule lmLot; +extern LexerModule lmLout; +extern LexerModule lmLua; +extern LexerModule lmMagikSF; +extern LexerModule lmMake; +extern LexerModule lmMarkdown; +extern LexerModule lmMatlab; +extern LexerModule lmMaxima; +extern LexerModule lmMETAPOST; +extern LexerModule lmMMIXAL; +extern LexerModule lmModula; +extern LexerModule lmMSSQL; +extern LexerModule lmMySQL; +extern LexerModule lmNim; +extern LexerModule lmNimrod; +extern LexerModule lmNncrontab; +extern LexerModule lmNsis; +extern LexerModule lmNull; +extern LexerModule lmOctave; +extern LexerModule lmOpal; +extern LexerModule lmOScript; +extern LexerModule lmPascal; +extern LexerModule lmPB; +extern LexerModule lmPerl; +extern LexerModule lmPHPSCRIPT; +extern LexerModule lmPLM; +extern LexerModule lmPO; +extern LexerModule lmPOV; +extern LexerModule lmPowerPro; +extern LexerModule lmPowerShell; +extern LexerModule lmProgress; +extern LexerModule lmProps; +extern LexerModule lmPS; +extern LexerModule lmPureBasic; +extern LexerModule lmPython; +extern LexerModule lmR; +extern LexerModule lmREBOL; +extern LexerModule lmRegistry; +extern LexerModule lmRuby; +extern LexerModule lmRust; +extern LexerModule lmSAS; +extern LexerModule lmScriptol; +extern LexerModule lmSmalltalk; +extern LexerModule lmSML; +extern LexerModule lmSorc; +extern LexerModule lmSpecman; +extern LexerModule lmSpice; +extern LexerModule lmSQL; +extern LexerModule lmSrec; +extern LexerModule lmStata; +extern LexerModule lmSTTXT; +extern LexerModule lmTACL; +extern LexerModule lmTADS3; +extern LexerModule lmTAL; +extern LexerModule lmTCL; +extern LexerModule lmTCMD; +extern LexerModule lmTEHex; +extern LexerModule lmTeX; +extern LexerModule lmTxt2tags; +extern LexerModule lmVB; +extern LexerModule lmVBScript; +extern LexerModule lmVerilog; +extern LexerModule lmVHDL; +extern LexerModule lmVisualProlog; +extern LexerModule lmX12; +extern LexerModule lmXML; +extern LexerModule lmYAML; + +//--Autogenerated -- end of automatically generated section + +namespace { + +CatalogueModules catalogueLexilla; + +void AddEachLexer() { + + if (catalogueLexilla.Count() > 0) { + return; + } + +//++Autogenerated -- run scripts/LexGen.py to regenerate +//**\(\tcatalogueLexilla.AddLexerModule(&\*);\n\) + catalogueLexilla.AddLexerModule(&lmA68k); + catalogueLexilla.AddLexerModule(&lmAbaqus); + catalogueLexilla.AddLexerModule(&lmAda); + catalogueLexilla.AddLexerModule(&lmAPDL); + catalogueLexilla.AddLexerModule(&lmAs); + catalogueLexilla.AddLexerModule(&lmAsm); + catalogueLexilla.AddLexerModule(&lmAsn1); + catalogueLexilla.AddLexerModule(&lmASY); + catalogueLexilla.AddLexerModule(&lmAU3); + catalogueLexilla.AddLexerModule(&lmAVE); + catalogueLexilla.AddLexerModule(&lmAVS); + catalogueLexilla.AddLexerModule(&lmBaan); + catalogueLexilla.AddLexerModule(&lmBash); + catalogueLexilla.AddLexerModule(&lmBatch); + catalogueLexilla.AddLexerModule(&lmBibTeX); + catalogueLexilla.AddLexerModule(&lmBlitzBasic); + catalogueLexilla.AddLexerModule(&lmBullant); + catalogueLexilla.AddLexerModule(&lmCaml); + catalogueLexilla.AddLexerModule(&lmCIL); + catalogueLexilla.AddLexerModule(&lmClw); + catalogueLexilla.AddLexerModule(&lmClwNoCase); + catalogueLexilla.AddLexerModule(&lmCmake); + catalogueLexilla.AddLexerModule(&lmCOBOL); + catalogueLexilla.AddLexerModule(&lmCoffeeScript); + catalogueLexilla.AddLexerModule(&lmConf); + catalogueLexilla.AddLexerModule(&lmCPP); + catalogueLexilla.AddLexerModule(&lmCPPNoCase); + catalogueLexilla.AddLexerModule(&lmCsound); + catalogueLexilla.AddLexerModule(&lmCss); + catalogueLexilla.AddLexerModule(&lmD); + catalogueLexilla.AddLexerModule(&lmDataflex); + catalogueLexilla.AddLexerModule(&lmDiff); + catalogueLexilla.AddLexerModule(&lmDMAP); + catalogueLexilla.AddLexerModule(&lmDMIS); + catalogueLexilla.AddLexerModule(&lmECL); + catalogueLexilla.AddLexerModule(&lmEDIFACT); + catalogueLexilla.AddLexerModule(&lmEiffel); + catalogueLexilla.AddLexerModule(&lmEiffelkw); + catalogueLexilla.AddLexerModule(&lmErlang); + catalogueLexilla.AddLexerModule(&lmErrorList); + catalogueLexilla.AddLexerModule(&lmESCRIPT); + catalogueLexilla.AddLexerModule(&lmF77); + catalogueLexilla.AddLexerModule(&lmFlagShip); + catalogueLexilla.AddLexerModule(&lmForth); + catalogueLexilla.AddLexerModule(&lmFortran); + catalogueLexilla.AddLexerModule(&lmFreeBasic); + catalogueLexilla.AddLexerModule(&lmGAP); + catalogueLexilla.AddLexerModule(&lmGui4Cli); + catalogueLexilla.AddLexerModule(&lmHaskell); + catalogueLexilla.AddLexerModule(&lmHollywood); + catalogueLexilla.AddLexerModule(&lmHTML); + catalogueLexilla.AddLexerModule(&lmIHex); + catalogueLexilla.AddLexerModule(&lmIndent); + catalogueLexilla.AddLexerModule(&lmInno); + catalogueLexilla.AddLexerModule(&lmJSON); + catalogueLexilla.AddLexerModule(&lmKix); + catalogueLexilla.AddLexerModule(&lmKVIrc); + catalogueLexilla.AddLexerModule(&lmLatex); + catalogueLexilla.AddLexerModule(&lmLISP); + catalogueLexilla.AddLexerModule(&lmLiterateHaskell); + catalogueLexilla.AddLexerModule(&lmLot); + catalogueLexilla.AddLexerModule(&lmLout); + catalogueLexilla.AddLexerModule(&lmLua); + catalogueLexilla.AddLexerModule(&lmMagikSF); + catalogueLexilla.AddLexerModule(&lmMake); + catalogueLexilla.AddLexerModule(&lmMarkdown); + catalogueLexilla.AddLexerModule(&lmMatlab); + catalogueLexilla.AddLexerModule(&lmMaxima); + catalogueLexilla.AddLexerModule(&lmMETAPOST); + catalogueLexilla.AddLexerModule(&lmMMIXAL); + catalogueLexilla.AddLexerModule(&lmModula); + catalogueLexilla.AddLexerModule(&lmMSSQL); + catalogueLexilla.AddLexerModule(&lmMySQL); + catalogueLexilla.AddLexerModule(&lmNim); + catalogueLexilla.AddLexerModule(&lmNimrod); + catalogueLexilla.AddLexerModule(&lmNncrontab); + catalogueLexilla.AddLexerModule(&lmNsis); + catalogueLexilla.AddLexerModule(&lmNull); + catalogueLexilla.AddLexerModule(&lmOctave); + catalogueLexilla.AddLexerModule(&lmOpal); + catalogueLexilla.AddLexerModule(&lmOScript); + catalogueLexilla.AddLexerModule(&lmPascal); + catalogueLexilla.AddLexerModule(&lmPB); + catalogueLexilla.AddLexerModule(&lmPerl); + catalogueLexilla.AddLexerModule(&lmPHPSCRIPT); + catalogueLexilla.AddLexerModule(&lmPLM); + catalogueLexilla.AddLexerModule(&lmPO); + catalogueLexilla.AddLexerModule(&lmPOV); + catalogueLexilla.AddLexerModule(&lmPowerPro); + catalogueLexilla.AddLexerModule(&lmPowerShell); + catalogueLexilla.AddLexerModule(&lmProgress); + catalogueLexilla.AddLexerModule(&lmProps); + catalogueLexilla.AddLexerModule(&lmPS); + catalogueLexilla.AddLexerModule(&lmPureBasic); + catalogueLexilla.AddLexerModule(&lmPython); + catalogueLexilla.AddLexerModule(&lmR); + catalogueLexilla.AddLexerModule(&lmREBOL); + catalogueLexilla.AddLexerModule(&lmRegistry); + catalogueLexilla.AddLexerModule(&lmRuby); + catalogueLexilla.AddLexerModule(&lmRust); + catalogueLexilla.AddLexerModule(&lmSAS); + catalogueLexilla.AddLexerModule(&lmScriptol); + catalogueLexilla.AddLexerModule(&lmSmalltalk); + catalogueLexilla.AddLexerModule(&lmSML); + catalogueLexilla.AddLexerModule(&lmSorc); + catalogueLexilla.AddLexerModule(&lmSpecman); + catalogueLexilla.AddLexerModule(&lmSpice); + catalogueLexilla.AddLexerModule(&lmSQL); + catalogueLexilla.AddLexerModule(&lmSrec); + catalogueLexilla.AddLexerModule(&lmStata); + catalogueLexilla.AddLexerModule(&lmSTTXT); + catalogueLexilla.AddLexerModule(&lmTACL); + catalogueLexilla.AddLexerModule(&lmTADS3); + catalogueLexilla.AddLexerModule(&lmTAL); + catalogueLexilla.AddLexerModule(&lmTCL); + catalogueLexilla.AddLexerModule(&lmTCMD); + catalogueLexilla.AddLexerModule(&lmTEHex); + catalogueLexilla.AddLexerModule(&lmTeX); + catalogueLexilla.AddLexerModule(&lmTxt2tags); + catalogueLexilla.AddLexerModule(&lmVB); + catalogueLexilla.AddLexerModule(&lmVBScript); + catalogueLexilla.AddLexerModule(&lmVerilog); + catalogueLexilla.AddLexerModule(&lmVHDL); + catalogueLexilla.AddLexerModule(&lmVisualProlog); + catalogueLexilla.AddLexerModule(&lmX12); + catalogueLexilla.AddLexerModule(&lmXML); + catalogueLexilla.AddLexerModule(&lmYAML); + +//--Autogenerated -- end of automatically generated section + +} + +} + +extern "C" { + +int EXPORT_FUNCTION GetLexerCount() { + AddEachLexer(); + return catalogueLexilla.Count(); +} + +void EXPORT_FUNCTION GetLexerName(unsigned int index, char *name, int buflength) { + AddEachLexer(); + *name = 0; + const char *lexerName = catalogueLexilla.Name(index); + if (static_cast<size_t>(buflength) > strlen(lexerName)) { + strcpy(name, lexerName); + } +} + +LexerFactoryFunction EXPORT_FUNCTION GetLexerFactory(unsigned int index) { + AddEachLexer(); + return catalogueLexilla.Factory(index); +} + +ILexer4 EXPORT_FUNCTION *CreateLexer(const char *name) { + AddEachLexer(); + for (unsigned int i = 0; i < catalogueLexilla.Count(); i++) { + const char *lexerName = catalogueLexilla.Name(i); + if (0 == strcmp(lexerName, name)) { + return catalogueLexilla.Create(i); + } + } + return nullptr; +} + +} |