11 #include <document.hxx>
29 switch (mdds::mtv::get_block_type(*block))
44 switch (mdds::mtv::get_block_type(*block))
60 TablesType::iterator itTab =
maTables.find(nTab);
63 std::pair<TablesType::iterator,bool> r =
74 ColumnsType::iterator it = rCols.find(nCol);
75 if (it != rCols.end())
79 std::pair<ColumnsType::iterator,bool> r =
102 typedef std::unordered_map<SCCOL, ColumnBlockPosition>
ColumnsType;
111 mpImpl(
std::make_unique<
Impl>())
117 std::ostringstream os;
118 os <<
"Passed table index " << nTab <<
" is invalid.";
119 throw std::invalid_argument(os.str());
124 mpImpl(
std::move(rOther.mpImpl)) {}
132 ColumnsType::iterator it =
mpImpl->maColumns.find(nCol);
134 if (it !=
mpImpl->maColumns.end())
138 std::pair<ColumnsType::iterator,bool> r =
147 if (!
mpImpl->mpTab->InitColumnBlockPosition(it->second, nCol))
155 mpImpl->maColumns.clear();
164 return ScRefCellValue(sc::numeric_block::at(*itPos->data, nOffset));
167 return ScRefCellValue(&sc::string_block::at(*itPos->data, nOffset));
170 return ScRefCellValue(sc::edittext_block::at(*itPos->data, nOffset));
174 return ScRefCellValue(sc::formula_block::at(*itPos->data, nOffset));
ColumnBlockPosition * getBlockPosition(SCCOL nCol)
ScTable * FetchTable(SCTAB nTab)
SC_DLLPUBLIC bool InitColumnBlockPosition(sc::ColumnBlockPosition &rBlockPos, SCTAB nTab, SCCOL nCol)
Store position data for column array storage.
ColumnBlockPositionSet(ScDocument &rDoc)
This is very similar to ScCellValue, except that it references the original value instead of copying ...
void element_block_acquired(const mdds::mtv::base_element_block *block)
const mdds::mtv::element_t element_type_formula
ColumnBlockPosition * getBlockPosition(SCTAB nTab, SCCOL nCol)
Set of column block positions only for one table.
const mdds::mtv::element_t element_type_numeric
Mapped standard element types (for convenience).
TableColumnBlockPositionSet(ScDocument &rDoc, SCTAB nTab)
std::unordered_map< SCCOL, ColumnBlockPosition > ColumnsType
const mdds::mtv::element_t element_type_edittext
~TableColumnBlockPositionSet()
ScRefCellValue toRefCell(const sc::CellStoreType::const_iterator &itPos, size_t nOffset)
std::unordered_map< SCCOL, ColumnBlockPosition > ColumnsType
const mdds::mtv::element_t element_type_string
void element_block_released(const mdds::mtv::base_element_block *block)
std::unique_ptr< Impl > mpImpl