aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/buildgraph/transformer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/buildgraph/transformer.cpp')
-rw-r--r--src/lib/buildgraph/transformer.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/buildgraph/transformer.cpp b/src/lib/buildgraph/transformer.cpp
index cabc40d9c..eff5c1f60 100644
--- a/src/lib/buildgraph/transformer.cpp
+++ b/src/lib/buildgraph/transformer.cpp
@@ -33,6 +33,7 @@
#include <language/language.h>
#include <language/scriptengine.h>
#include <tools/error.h>
+#include <tools/persistence.h>
namespace qbs {
namespace Internal {
@@ -155,5 +156,33 @@ void Transformer::createCommands(const PrepareScriptConstPtr &script, ScriptEngi
}
}
+void Transformer::load(PersistentPool &pool)
+{
+ rule = pool.idLoadS<Rule>();
+ pool.loadContainer(inputs);
+ pool.loadContainer(outputs);
+ int count, cmdType;
+ pool.stream() >> count;
+ commands.reserve(count);
+ while (--count >= 0) {
+ pool.stream() >> cmdType;
+ AbstractCommand *cmd = AbstractCommand::createByType(static_cast<AbstractCommand::CommandType>(cmdType));
+ cmd->load(pool.stream());
+ commands += cmd;
+ }
+}
+
+void Transformer::store(PersistentPool &pool) const
+{
+ pool.store(rule);
+ pool.storeContainer(inputs);
+ pool.storeContainer(outputs);
+ pool.stream() << commands.count();
+ foreach (AbstractCommand *cmd, commands) {
+ pool.stream() << int(cmd->type());
+ cmd->store(pool.stream());
+ }
+}
+
} // namespace Internal
} // namespace qbs