mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-24 12:59:58 -06:00
This reverts commit 6ddd4f019f since it
breaks AppImage builds. The newer version of QScintilla depends on Qt
5.11 which is not available in the Ubuntu 18.04 the AppImages use. We
also cannot just use the version of QScintilla available in the OS
instead of the bundled one for the AppImages as that is too old for our
purposes. It is probably best to just update to Ubuntu 20.04 for the
AppImage builds in April 2023 when 18.04 reaches its end of life.
88 lines
2.4 KiB
C++
88 lines
2.4 KiB
C++
// Scintilla source code edit control
|
|
/** @file LexerModule.h
|
|
** Colourise for particular languages.
|
|
**/
|
|
// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
|
|
// The License.txt file describes the conditions under which this software may be distributed.
|
|
|
|
#ifndef LEXERMODULE_H
|
|
#define LEXERMODULE_H
|
|
|
|
namespace Scintilla {
|
|
|
|
class Accessor;
|
|
class WordList;
|
|
struct LexicalClass;
|
|
|
|
typedef void (*LexerFunction)(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,
|
|
WordList *keywordlists[], Accessor &styler);
|
|
typedef ILexer *(*LexerFactoryFunction)();
|
|
|
|
/**
|
|
* A LexerModule is responsible for lexing and folding a particular language.
|
|
* The Catalogue class maintains a list of LexerModules which can be searched to find a
|
|
* module appropriate to a particular language.
|
|
* The ExternalLexerModule subclass holds lexers loaded from DLLs or shared libraries.
|
|
*/
|
|
class LexerModule {
|
|
protected:
|
|
int language;
|
|
LexerFunction fnLexer;
|
|
LexerFunction fnFolder;
|
|
LexerFactoryFunction fnFactory;
|
|
const char * const * wordListDescriptions;
|
|
const LexicalClass *lexClasses;
|
|
size_t nClasses;
|
|
|
|
public:
|
|
const char *languageName;
|
|
LexerModule(
|
|
int language_,
|
|
LexerFunction fnLexer_,
|
|
const char *languageName_=nullptr,
|
|
LexerFunction fnFolder_= nullptr,
|
|
const char * const wordListDescriptions_[]=nullptr,
|
|
const LexicalClass *lexClasses_=nullptr,
|
|
size_t nClasses_=0);
|
|
LexerModule(
|
|
int language_,
|
|
LexerFactoryFunction fnFactory_,
|
|
const char *languageName_,
|
|
const char * const wordListDescriptions_[]=nullptr);
|
|
virtual ~LexerModule();
|
|
int GetLanguage() const;
|
|
|
|
// -1 is returned if no WordList information is available
|
|
int GetNumWordLists() const;
|
|
const char *GetWordListDescription(int index) const;
|
|
const LexicalClass *LexClasses() const;
|
|
size_t NamedStyles() const;
|
|
|
|
ILexer *Create() const;
|
|
|
|
virtual void Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,
|
|
WordList *keywordlists[], Accessor &styler) const;
|
|
virtual void Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,
|
|
WordList *keywordlists[], Accessor &styler) const;
|
|
|
|
friend class Catalogue;
|
|
};
|
|
|
|
inline int Maximum(int a, int b) {
|
|
return (a > b) ? a : b;
|
|
}
|
|
|
|
// Shut up annoying Visual C++ warnings:
|
|
#ifdef _MSC_VER
|
|
#pragma warning(disable: 4244 4456 4457)
|
|
#endif
|
|
|
|
// Turn off shadow warnings for lexers as may be maintained by others
|
|
#if defined(__GNUC__)
|
|
#pragma GCC diagnostic ignored "-Wshadow"
|
|
#endif
|
|
|
|
}
|
|
|
|
#endif
|