Avoid potential negative array index access to cached text.
[LibreOffice.git] / include / comphelper / syntaxhighlight.hxx
blobb6b01c4f36a83fb85517b0b2690548f4eb9f1828
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_COMPHELPER_SYNTAXHIGHLIGHT_HXX
20 #define INCLUDED_COMPHELPER_SYNTAXHIGHLIGHT_HXX
22 #include <comphelper/comphelperdllapi.h>
24 #include <string_view>
25 #include <vector>
26 #include <memory>
28 enum class TokenType
30 Unknown,
31 Identifier,
32 Whitespace,
33 Number,
34 String,
35 EOL,
36 Comment,
37 Error,
38 Operator,
39 Keywords,
40 Parameter,
41 LAST = Parameter
44 struct HighlightPortion {
45 sal_Int32 nBegin;
46 sal_Int32 nEnd;
47 TokenType tokenType;
49 HighlightPortion(
50 sal_Int32 theBegin, sal_Int32 theEnd, TokenType theTokenType):
51 nBegin(theBegin), nEnd(theEnd), tokenType(theTokenType)
55 // Language mode of the Highlighter (possibly to be refined later with keyword
56 // lists, C comment flags)
57 enum class HighlighterLanguage
59 Basic,
60 SQL
63 class COMPHELPER_DLLPUBLIC SyntaxHighlighter
65 class Tokenizer;
67 std::unique_ptr<Tokenizer> m_tokenizer;
69 SyntaxHighlighter(const SyntaxHighlighter&) = delete;
70 SyntaxHighlighter& operator=(const SyntaxHighlighter&) = delete;
71 public:
72 SyntaxHighlighter(HighlighterLanguage language);
73 ~SyntaxHighlighter();
75 void getHighlightPortions( std::u16string_view rLine,
76 std::vector<HighlightPortion>& pPortions ) const;
78 HighlighterLanguage GetLanguage() const;
81 #endif
83 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */