1/* 2 * Copyright 2014, Rene Gollent, rene@gollent.com. 3 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 4 * Distributed under the terms of the MIT License. 5 */ 6#ifndef SYNTAX_HIGHLIGHTER_H 7#define SYNTAX_HIGHLIGHTER_H 8 9 10#include <String.h> 11 12#include <Referenceable.h> 13 14 15class LineDataSource; 16class TeamTypeInformation; 17 18 19enum syntax_highlight_type { 20 SYNTAX_HIGHLIGHT_NONE = 0, 21 SYNTAX_HIGHLIGHT_KEYWORD, 22 SYNTAX_HIGHLIGHT_PREPROCESSOR_KEYWORD, 23 SYNTAX_HIGHLIGHT_IDENTIFIER, 24 SYNTAX_HIGHLIGHT_OPERATOR, 25 SYNTAX_HIGHLIGHT_TYPE, 26 SYNTAX_HIGHLIGHT_NUMERIC_LITERAL, 27 SYNTAX_HIGHLIGHT_STRING_LITERAL, 28 SYNTAX_HIGHLIGHT_COMMENT 29}; 30 31 32class SyntaxHighlightInfo { 33public: 34 virtual ~SyntaxHighlightInfo(); 35 36 virtual int32 GetLineHighlightRanges(int32 line, 37 int32* _columns, 38 syntax_highlight_type* _types, 39 int32 maxCount) = 0; 40 // Returns number of filled in 41 // (column, type) pairs. 42 // Default is (0, SYNTAX_HIGHLIGHT_NONE) 43 // and can be omitted. 44}; 45 46 47class SyntaxHighlighter : public BReferenceable { 48public: 49 virtual ~SyntaxHighlighter(); 50 51 virtual status_t ParseText(LineDataSource* source, 52 TeamTypeInformation* typeInfo, 53 SyntaxHighlightInfo*& _info) = 0; 54 // caller owns the returned info 55}; 56 57 58#endif // SYNTAX_HIGHLIGHTER_H 59