aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/TableTemplate.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-09-06 00:15:35 -0700
committerrtk0c <[email protected]>2021-09-06 00:15:35 -0700
commit04653742243e4bb6452108cfd0fef2f4afd8f23b (patch)
treea4a5e0cc8d16ffe78859fab9ee5e487a7d22d81e /core/src/Model/Template/TableTemplate.cpp
parent70e00f817e9596a746800ba4afec2b7c4ca25142 (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.cpp84
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);
}