diff options
author | rtk0c <[email protected]> | 2021-11-12 13:34:50 -0800 |
---|---|---|
committer | rtk0c <[email protected]> | 2021-11-12 13:34:50 -0800 |
commit | 4932f36da4fab3fc8965822bba473cbd20f7f405 (patch) | |
tree | 7317eaacb0d64de183a2bdce8e07d7120c29e5de /core/src/Model | |
parent | 816bbe7993adf4a41ace7bae06bfe6a5921308b8 (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.cpp | 2 | ||||
-rw-r--r-- | core/src/Model/Workflow/Workflow.hpp | 16 | ||||
-rw-r--r-- | core/src/Model/Workflow/Workflow_Main.cpp | 86 |
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() |