diff options
Diffstat (limited to 'src/lib/buildgraph/transformer.cpp')
-rw-r--r-- | src/lib/buildgraph/transformer.cpp | 29 |
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 |