summaryrefslogtreecommitdiff
path: root/core/src/Model
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-11-12 13:34:50 -0800
committerrtk0c <[email protected]>2021-11-12 13:34:50 -0800
commit4932f36da4fab3fc8965822bba473cbd20f7f405 (patch)
tree7317eaacb0d64de183a2bdce8e07d7120c29e5de /core/src/Model
parent816bbe7993adf4a41ace7bae06bfe6a5921308b8 (diff)
Fix compile errors under MSVC, remove PLATFORM_* macros in favor of compiler builtin macros, and add win32 support to FileStream
Diffstat (limited to 'core/src/Model')
-rw-r--r--core/src/Model/Template/TableTemplate.cpp2
-rw-r--r--core/src/Model/Workflow/Workflow.hpp16
-rw-r--r--core/src/Model/Workflow/Workflow_Main.cpp86
3 files changed, 20 insertions, 84 deletions
diff --git a/core/src/Model/Template/TableTemplate.cpp b/core/src/Model/Template/TableTemplate.cpp
index 16cd333..57caac4 100644
--- a/core/src/Model/Template/TableTemplate.cpp
+++ b/core/src/Model/Template/TableTemplate.cpp
@@ -68,6 +68,8 @@ int TableArrayGroup::GetCount() const
Vec2i TableArrayGroup::FindCell(std::string_view name)
{
+ // TODO
+ return Vec2i{};
}
template <class TMap>
diff --git a/core/src/Model/Workflow/Workflow.hpp b/core/src/Model/Workflow/Workflow.hpp
index c156582..3c4d320 100644
--- a/core/src/Model/Workflow/Workflow.hpp
+++ b/core/src/Model/Workflow/Workflow.hpp
@@ -193,14 +193,15 @@ protected:
class Workflow : public Asset
{
+ friend class WorkflowNode;
+ friend class WorkflowEvaluationContext;
+ class Private;
+
public:
using CategoryType = WorkflowAssetList;
static constinit const WorkflowAssetList Category;
private:
- friend class WorkflowNode;
- friend class WorkflowEvaluationContext;
-
std::vector<WorkflowConnection> mConnections;
std::vector<std::unique_ptr<WorkflowNode>> mNodes;
std::vector<std::unique_ptr<BaseValue>> mConstants;
@@ -279,13 +280,8 @@ public:
/* Serialization */
- enum ReadResult
- {
- RR_Success,
- RR_InvalidVersion,
- };
- ReadResult ReadFrom(std::istream& stream);
- void WriteTo(std::ostream& stream) const;
+ void ReadFromDataStream(InputDataStream& stream);
+ void WriteToDataStream(OutputDataStream& stream) const;
private:
std::pair<WorkflowConnection&, uint32_t> AllocWorkflowConnection();
diff --git a/core/src/Model/Workflow/Workflow_Main.cpp b/core/src/Model/Workflow/Workflow_Main.cpp
index 1f00b19..7c76611 100644
--- a/core/src/Model/Workflow/Workflow_Main.cpp
+++ b/core/src/Model/Workflow/Workflow_Main.cpp
@@ -635,85 +635,23 @@ Workflow::GraphUpdateResult Workflow::UpdateGraph(GraphUpdateDetails* details)
return GUR_Success;
}
-Workflow::ReadResult Workflow::ReadFrom(std::istream& stream)
+class Workflow::Private
{
- auto DeserializeV0 = [&]() {
- uint32_t connectionCount, nodeCount, constantCount;
- stream >> connectionCount >> nodeCount >> constantCount;
-
- mConnections.reserve(connectionCount);
- for (uint32_t i = 0; i < connectionCount; ++i) {
- mConnections.emplace_back().ReadFrom(stream);
- }
-
- mNodes.reserve(connectionCount);
- for (uint32_t i = 0; i < nodeCount; ++i) {
- uint32_t nKind;
- stream >> nKind;
- auto kind = (WorkflowNode::Kind)nKind;
-
- mNodes.push_back(WorkflowNode::CreateByKind(kind));
- mNodes.back()->ReadFrom(stream);
- }
-
- mConstants.reserve(connectionCount);
- for (uint32_t i = 0; i < constantCount; ++i) {
- uint32_t nKind;
- stream >> nKind;
- auto kind = (BaseValue::Kind)nKind;
-
- mConstants.push_back(BaseValue::CreateByKind(kind));
- mConstants.back()->ReadFrom(stream);
- }
- };
-
- uint64_t version;
- stream >> version;
-
- switch (version) {
- case 0: DeserializeV0(); break;
- default: return RR_InvalidVersion;
+ template <class TSelf, class TProxy>
+ static void OperateStream(TSelf& self, TProxy& proxy)
+ {
+ // TODO
}
- return RR_Success;
-}
+};
-void Workflow::WriteTo(std::ostream& stream) const
+void Workflow::ReadFromDataStream(InputDataStream& stream)
{
- // Version
- stream << (uint64_t)0;
-
- // TODO id compacting
-
- stream << (size_t)mConnections.size();
- stream << (size_t)mNodes.size();
- stream << (size_t)mConstants.size();
- stream << (uint32_t)mConnectionCount;
- stream << (uint32_t)mNodeCount;
- stream << (uint32_t)mConstantCount;
-
- for (size_t i = 0; i < mConnections.size(); ++i) {
- auto& conn = mConnections[i];
- if (conn.IsValid()) {
- stream << i;
- conn.WriteTo(stream);
- }
- }
-
- for (size_t i = 0; i < mNodes.size(); ++i) {
- auto& node = mNodes[i];
- if (node) {
- stream << i << (uint32_t)node->GetKind();
- node->WriteTo(stream);
- }
- }
+ Private::OperateStream(*this, stream);
+}
- for (size_t i = 0; i < mConstants.size(); ++i) {
- auto& constant = mConstants[i];
- if (constant) {
- stream << i;
- constant->WriteTo(stream);
- }
- }
+void Workflow::WriteToDataStream(OutputDataStream& stream) const
+{
+ Private::OperateStream(*this, stream);
}
std::pair<WorkflowConnection&, uint32_t> Workflow::AllocWorkflowConnection()