diff options
author | rtk0c <[email protected]> | 2021-09-06 00:15:35 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2021-09-06 00:15:35 -0700 |
commit | 04653742243e4bb6452108cfd0fef2f4afd8f23b (patch) | |
tree | a4a5e0cc8d16ffe78859fab9ee5e487a7d22d81e /core/src/Model/Template/TableTemplate.cpp | |
parent | 70e00f817e9596a746800ba4afec2b7c4ca25142 (diff) |
Fix all compile errors, remove OperateIOProxy requirement from DataStream api
Diffstat (limited to 'core/src/Model/Template/TableTemplate.cpp')
-rw-r--r-- | core/src/Model/Template/TableTemplate.cpp | 84 |
1 files changed, 51 insertions, 33 deletions
diff --git a/core/src/Model/Template/TableTemplate.cpp b/core/src/Model/Template/TableTemplate.cpp index a5745c7..16cd333 100644 --- a/core/src/Model/Template/TableTemplate.cpp +++ b/core/src/Model/Template/TableTemplate.cpp @@ -27,22 +27,29 @@ bool TableCell::IsMergedCell() const return PrimaryCellLocation.x == -1 || PrimaryCellLocation.y == -1; } -template <class TProxy> -void TableCell::OperateIOProxy(TProxy& proxy) +template <class TTableCell, class TStream> +void OperateStreamForTableCell(TTableCell& cell, TStream& proxy) { - proxy.template ObjectAdapted<DataStreamAdapters::String>(Content); - proxy.Object(Location); - proxy.Object(PrimaryCellLocation); - proxy.Value(SpanX); - proxy.Value(SpanY); - proxy.Value(HorizontalAlignment); - proxy.Value(VerticalAlignment); - proxy.Value(Type); - proxy.Value(DataId); + proxy.template ObjectAdapted<DataStreamAdapters::String>(cell.Content); + proxy.Object(cell.Location); + proxy.Object(cell.PrimaryCellLocation); + proxy.Value(cell.SpanX); + proxy.Value(cell.SpanY); + proxy.Enum(cell.HorizontalAlignment); + proxy.Enum(cell.VerticalAlignment); + proxy.Enum(cell.Type); + proxy.Value(cell.DataId); } -template void TableCell::OperateIOProxy(InputDataStream& adapter); -template void TableCell::OperateIOProxy(OutputDataStream& adapter); +void TableCell::ReadFromDataStream(InputDataStream& stream) +{ + ::OperateStreamForTableCell(*this, stream); +} + +void TableCell::WriteToDataStream(OutputDataStream& stream) const +{ + ::OperateStreamForTableCell(*this, stream); +} Vec2i TableArrayGroup::GetLeftCell() const { @@ -86,16 +93,23 @@ bool TableArrayGroup::UpdateCellName(std::string_view oldName, std::string_view return ::UpdateElementName(mName2Cell, oldName, newName); } -template <class TProxy> -void TableArrayGroup::OperateIOProxy(TProxy& proxy) +template <class TTableArrayGroup, class TStream> +void OperateStreamForTableArrayGroup(TTableArrayGroup& group, TStream& stream) +{ + stream.Value(group.Row); + stream.Value(group.LeftCell); + stream.Value(group.RightCell); +} + +void TableArrayGroup::ReadFromDataStream(InputDataStream& stream) { - proxy.Value(Row); - proxy.Value(LeftCell); - proxy.Value(RightCell); + ::OperateStreamForTableArrayGroup(*this, stream); } -template void TableArrayGroup::OperateIOProxy(InputDataStream& adapter); -template void TableArrayGroup::OperateIOProxy(OutputDataStream& adapter); +void TableArrayGroup::WriteToDataStream(OutputDataStream& stream) const +{ + ::OperateStreamForTableArrayGroup(*this, stream); +} TableInstantiationParameters::TableInstantiationParameters(const TableTemplate& table) : mTable{ &table } @@ -549,23 +563,27 @@ lxw_worksheet* TableTemplate::InstantiateToExcelWorksheet(lxw_workbook* workbook return worksheet; } -void TableTemplate::ReadFromDataStream(InputDataStream& stream) +class TableTemplate::Private { - OperateIOProxy(stream); -} +public: + template <class TTableTemplate, class TProxy> + static void OperateStream(TTableTemplate& table, TProxy& proxy) + { + proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(table.mColumnWidths); + proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(table.mRowHeights); + proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(table.mCells); + proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(table.mArrayGroups); + proxy.template ObjectAdapted<DataStreamAdapters::TslArrayMap<>>(table.mName2Parameters); + proxy.template ObjectAdapted<DataStreamAdapters::TslArrayMap<>>(table.mName2ArrayGroups); + } +}; -void TableTemplate::WriteToDataStream(OutputDataStream& stream) +void TableTemplate::ReadFromDataStream(InputDataStream& stream) { - OperateIOProxy(stream); + Private::OperateStream(*this, stream); } -template <class TProxy> -void TableTemplate::OperateIOProxy(TProxy& proxy) +void TableTemplate::WriteToDataStream(OutputDataStream& stream) const { - proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(mColumnWidths); - proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(mRowHeights); - proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(mCells); - proxy.template ObjectAdapted<DataStreamAdapters::Vector<>>(mArrayGroups); - proxy.template ObjectAdapted<DataStreamAdapters::TslArrayMap<>>(mName2Parameters); - proxy.template ObjectAdapted<DataStreamAdapters::TslArrayMap<>>(mName2ArrayGroups); + Private::OperateStream(*this, stream); } |