1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // 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
- #ifdef SCI_NAMESPACE
- namespace Scintilla {
- #endif
- class Accessor;
- class WordList;
- 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 class maintains a list of LexerModules which can be searched to find a
- * module appropriate to a particular language.
- */
- class LexerModule {
- protected:
- int language;
- LexerFunction fnLexer;
- LexerFunction fnFolder;
- LexerFactoryFunction fnFactory;
- const char * const * wordListDescriptions;
- public:
- const char *languageName;
- LexerModule(int language_,
- LexerFunction fnLexer_,
- const char *languageName_=0,
- LexerFunction fnFolder_=0,
- const char * const wordListDescriptions_[] = NULL);
- LexerModule(int language_,
- LexerFactoryFunction fnFactory_,
- const char *languageName_,
- const char * const wordListDescriptions_[] = NULL);
- virtual ~LexerModule() {
- }
- int GetLanguage() const { return language; }
- // -1 is returned if no WordList information is available
- int GetNumWordLists() const;
- const char *GetWordListDescription(int index) const;
- ILexer *Create() const;
- virtual void Lex(Sci_PositionU startPos, Sci_Position length, int initStyle,
- WordList *keywordlists[], Accessor &styler) const;
- virtual void Fold(Sci_PositionU startPos, Sci_Position length, 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
- #ifdef SCI_NAMESPACE
- }
- #endif
- #endif
|