Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
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/.
8 : */
9 :
10 : #ifndef INCLUDED_SC_INC_SPELLCHECKCONTEXT_HXX
11 : #define INCLUDED_SC_INC_SPELLCHECKCONTEXT_HXX
12 :
13 : #include "address.hxx"
14 : #include <editeng/misspellrange.hxx>
15 :
16 : #include <unordered_map>
17 :
18 : namespace sc {
19 :
20 0 : struct SpellCheckContext
21 : {
22 : struct CellPos
23 : {
24 : struct Hash
25 : {
26 : size_t operator() (const CellPos& rPos) const;
27 : };
28 :
29 : SCCOL mnCol;
30 : SCROW mnRow;
31 :
32 : CellPos();
33 : CellPos(SCCOL nCol, SCROW nRow);
34 :
35 : void setInvalid();
36 : bool isValid() const;
37 : void reset();
38 :
39 : bool operator< (const CellPos& r) const;
40 : bool operator== (const CellPos& r) const;
41 : };
42 :
43 : typedef std::unordered_map<CellPos, std::vector<editeng::MisspellRanges>, CellPos::Hash> CellMapType;
44 :
45 : CellPos maPos;
46 : CellMapType maMisspellCells;
47 :
48 : SpellCheckContext();
49 :
50 : bool isMisspelled( SCCOL nCol, SCROW nRow ) const;
51 : const std::vector<editeng::MisspellRanges>* getMisspellRanges( SCCOL nCol, SCROW nRow ) const;
52 : void setMisspellRanges( SCCOL nCol, SCROW nRow, const std::vector<editeng::MisspellRanges>* pRanges );
53 :
54 : void reset();
55 : };
56 :
57 : }
58 :
59 : #endif
60 :
61 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|