LibreOffice Module sc (master)  1
cellvalues.hxx
Go to the documentation of this file.
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 #pragma once
11 
12 #include "address.hxx"
13 #include <memory>
14 #include <vector>
15 
16 class ScColumn;
17 class ScFormulaCell;
18 
19 namespace svl
20 {
21 class SharedString;
22 }
23 
24 namespace sc
25 {
26 struct CellValuesImpl;
27 
29 {
32 
33  CellValueSpan(SCROW nRow1, SCROW nRow2);
34 };
35 
41 {
42  std::unique_ptr<CellValuesImpl> mpImpl;
43 
44  CellValues(const CellValues&) = delete;
45  CellValues& operator=(const CellValues&) = delete;
46 
47 public:
48  CellValues();
49  ~CellValues();
50 
59  void transferFrom(ScColumn& rCol, SCROW nRow, size_t nLen);
60 
61  void copyTo(ScColumn& rCol, SCROW nRow) const;
62  void swapNonEmpty(ScColumn& rCol);
63 
64  void assign(const std::vector<double>& rVals);
65  void assign(const std::vector<ScFormulaCell*>& rVals);
66 
67  size_t size() const;
68 
69  void reset(size_t nSize);
70  void setValue(size_t nRow, double fVal);
71  void setValue(size_t nRow, const svl::SharedString& rStr);
72 
73  void swap(CellValues& r);
74 
75  std::vector<CellValueSpan> getNonEmptySpans() const;
76 
77 private:
78  void copyCellsTo(ScColumn& rCol, SCROW nRow) const;
79  void copyCellTextAttrsTo(ScColumn& rCol, SCROW nRow) const;
80 };
81 
86 {
87  struct Impl;
88 
89  std::unique_ptr<Impl> mpImpl;
90 
91  TableValues(const TableValues&) = delete;
92  TableValues& operator=(const TableValues&) = delete;
93 
94 public:
95  TableValues();
96  TableValues(const ScRange& rRange);
97  ~TableValues();
98 
99  const ScRange& getRange() const;
100 
104  void swap(SCTAB nTab, SCCOL nCol, CellValues& rColValue);
105 
109  void swapNonEmpty(SCTAB nTab, SCCOL nCol, ScColumn& rCol);
110 
111  std::vector<CellValueSpan> getNonEmptySpans(SCTAB nTab, SCCOL nCol) const;
112 
113  void swap(TableValues& rOther);
114 };
115 }
116 
117 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void reset(size_t nSize)
Definition: cellvalues.cxx:127
void swap(SCTAB nTab, SCCOL nCol, CellValues &rColValue)
Swap the entire column.
Definition: cellvalues.cxx:322
TableValues & operator=(const TableValues &)=delete
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
Definition: cellvalues.hxx:40
CellValueSpan(SCROW nRow1, SCROW nRow2)
Definition: cellvalues.cxx:29
Stores cell values for multiple tables.
Definition: cellvalues.hxx:85
void transferFrom(ScColumn &rCol, SCROW nRow, size_t nLen)
Transfer values from specified column.
Definition: cellvalues.cxx:52
void copyCellTextAttrsTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:236
void swapNonEmpty(ScColumn &rCol)
Definition: cellvalues.cxx:67
void setValue(size_t nRow, double fVal)
Definition: cellvalues.cxx:138
void assign(const std::vector< double > &rVals)
Definition: cellvalues.cxx:91
void copyCellsTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:171
sal_Int16 SCCOL
Definition: types.hxx:21
size_t size() const
Definition: cellvalues.cxx:121
std::vector< CellValueSpan > getNonEmptySpans() const
Definition: cellvalues.cxx:155
const ScRange & getRange() const
Definition: cellvalues.cxx:317
std::unique_ptr< Impl > mpImpl
Definition: cellvalues.hxx:87
std::unique_ptr< CellValuesImpl > mpImpl
Definition: cellvalues.hxx:42
std::vector< CellValueSpan > getNonEmptySpans(SCTAB nTab, SCCOL nCol) const
Definition: cellvalues.cxx:340
void copyTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:61
sal_Int32 SCROW
Definition: types.hxx:17
CellValues & operator=(const CellValues &)=delete
void swap(CellValues &r)
Definition: cellvalues.cxx:150
These need to be in global namespace just like their respective types are.
sal_Int16 SCTAB
Definition: types.hxx:22
void swapNonEmpty(SCTAB nTab, SCCOL nCol, ScColumn &rCol)
Swap non-empty blocks with the column storage.
Definition: cellvalues.cxx:331