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
16class ScColumn;
17class ScFormulaCell;
18
19namespace svl
20{
21class SharedString;
22}
23
24namespace sc
25{
26struct 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
47public:
48 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
77private:
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;
93
94public:
96 TableValues(const ScRange& rRange);
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: */
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
Definition: cellvalues.hxx:41
CellValues & operator=(const CellValues &)=delete
void assign(const std::vector< double > &rVals)
Definition: cellvalues.cxx:91
void copyCellTextAttrsTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:236
void transferFrom(ScColumn &rCol, SCROW nRow, size_t nLen)
Transfer values from specified column.
Definition: cellvalues.cxx:52
void reset(size_t nSize)
Definition: cellvalues.cxx:127
void copyCellsTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:171
std::unique_ptr< CellValuesImpl > mpImpl
Definition: cellvalues.hxx:42
CellValues(const CellValues &)=delete
std::vector< CellValueSpan > getNonEmptySpans() const
Definition: cellvalues.cxx:155
void swap(CellValues &r)
Definition: cellvalues.cxx:150
size_t size() const
Definition: cellvalues.cxx:121
void copyTo(ScColumn &rCol, SCROW nRow) const
Definition: cellvalues.cxx:61
void swapNonEmpty(ScColumn &rCol)
Definition: cellvalues.cxx:67
void setValue(size_t nRow, double fVal)
Definition: cellvalues.cxx:138
Stores cell values for multiple tables.
Definition: cellvalues.hxx:86
void swap(SCTAB nTab, SCCOL nCol, CellValues &rColValue)
Swap the entire column.
Definition: cellvalues.cxx:322
TableValues & operator=(const TableValues &)=delete
std::vector< CellValueSpan > getNonEmptySpans(SCTAB nTab, SCCOL nCol) const
Definition: cellvalues.cxx:340
const ScRange & getRange() const
Definition: cellvalues.cxx:317
TableValues(const TableValues &)=delete
void swapNonEmpty(SCTAB nTab, SCCOL nCol, ScColumn &rCol)
Swap non-empty blocks with the column storage.
Definition: cellvalues.cxx:331
std::unique_ptr< Impl > mpImpl
Definition: cellvalues.hxx:87
CAUTION! The following defines must be in the same namespace as the respective type.
These need to be in global namespace just like their respective types are.
CellValueSpan(SCROW nRow1, SCROW nRow2)
Definition: cellvalues.cxx:29
sal_Int16 SCTAB
Definition: types.hxx:22
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17