aboutsummaryrefslogtreecommitdiffstats
path: root/common/command.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-06-07 21:02:43 +0100
committergatecat <gatecat@ds0.me>2021-06-07 21:07:17 +0100
commit875004d300eb4b85e13c026378e39b31b6922f93 (patch)
treedcaa0f2265d32916578191b5c1ad9f5df104d59c /common/command.cc
parentd946cfd265fd137f71ffe40e540ec1d8e5451bd8 (diff)
downloadnextpnr-875004d300eb4b85e13c026378e39b31b6922f93.tar.gz
nextpnr-875004d300eb4b85e13c026378e39b31b6922f93.tar.bz2
nextpnr-875004d300eb4b85e13c026378e39b31b6922f93.zip
gui: Don't destroy context when loading JSON
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'common/command.cc')
-rw-r--r--common/command.cc21
1 files changed, 13 insertions, 8 deletions
diff --git a/common/command.cc b/common/command.cc
index 27e59260..3341b521 100644
--- a/common/command.cc
+++ b/common/command.cc
@@ -473,19 +473,24 @@ int CommandHandler::exec()
}
}
-std::unique_ptr<Context> CommandHandler::load_json(std::string filename)
+void CommandHandler::load_json(Context *ctx, std::string filename)
{
- dict<std::string, Property> values;
- std::unique_ptr<Context> ctx = createContext(values);
- setupContext(ctx.get());
- setupArchContext(ctx.get());
+ ctx->cells.clear();
+ ctx->nets.clear();
+ ctx->net_aliases.clear();
+ ctx->ports.clear();
+ ctx->hierarchy.clear();
+ ctx->settings.erase(ctx->id("pack"));
+ ctx->settings.erase(ctx->id("place"));
+ ctx->settings.erase(ctx->id("route"));
+
+ setupContext(ctx);
+ setupArchContext(ctx);
{
std::ifstream f(filename);
- if (!parse_json(f, filename, ctx.get()))
+ if (!parse_json(f, filename, ctx))
log_error("Loading design failed.\n");
}
- customAfterLoad(ctx.get());
- return ctx;
}
void CommandHandler::clear() { vm.clear(); }