00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _QLANGUAGE_DEFINITION_H_
00017 #define _QLANGUAGE_DEFINITION_H_
00018
00019 #include "qce-config.h"
00020
00028 #include "qformat.h"
00029
00030 #include <QStringList>
00031
00032 class QKeyEvent;
00033 class QDocument;
00034 class QDocumentCursor;
00035
00036 #define QCE_FOLD_FLAGS(flags, open, close) ((flags) | (open & QLanguageDefinition::OpenMask) | ((close << 12) & QLanguageDefinition::CloseMask))
00037 #define QCE_FOLD_OPEN_COUNT(flags) ((flags) & QLanguageDefinition::OpenMask)
00038 #define QCE_FOLD_CLOSE_COUNT(flags) (((flags) & QLanguageDefinition::CloseMask) >> 12)
00039
00040 class QCE_EXPORT QLanguageDefinition
00041 {
00042 public:
00044 enum CollapseFlag
00045 {
00046 None = 0x00000000,
00047 Collapsible = 0x10000000,
00048 Collapsed = 0x20000000,
00049 Closure = 0x40000000,
00050
00051 CloseMask = 0x00fff000,
00052 OpenMask = 0x00000fff
00053 };
00054
00055 Q_DECLARE_FLAGS(CollapseState, CollapseFlag);
00056
00057 QLanguageDefinition();
00058 virtual ~QLanguageDefinition();
00059
00060 virtual QString language() const = 0;
00061 virtual QStringList extensions() const = 0;
00062
00063 virtual int tokenize(QDocument *d, int line, int count);
00064
00065 virtual QString singleLineComment() const;
00066
00067 virtual QString defaultLineMark() const;
00068
00069 virtual void match(QDocumentCursor& c);
00070 virtual void clearMatches(QDocument *d);
00071
00072 virtual QString indent(const QDocumentCursor& c);
00073 virtual bool unindent (const QDocumentCursor& c, const QString& ktxt);
00074
00075 virtual void expand(QDocument *d, int line);
00076 virtual void collapse(QDocument *d, int line);
00077 virtual int blockFlags(QDocument *d, int line, int depth = 0) const;
00078 };
00079
00080 #endif // _QLANGUAGE_DEFINITION_H_