diff options
author | gatecat <gatecat@ds0.me> | 2021-06-08 13:08:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-08 13:08:49 +0100 |
commit | 5e18bb173575557eac49e77b9010c90f1a8ca62c (patch) | |
tree | 7bdd54bdd72a3bab18dc9a8c668763badb70f99d /common/command.cc | |
parent | 8fa3088057633a431c342fb03d650ca06a92fb35 (diff) | |
parent | 875004d300eb4b85e13c026378e39b31b6922f93 (diff) | |
download | nextpnr-5e18bb173575557eac49e77b9010c90f1a8ca62c.tar.gz nextpnr-5e18bb173575557eac49e77b9010c90f1a8ca62c.tar.bz2 nextpnr-5e18bb173575557eac49e77b9010c90f1a8ca62c.zip |
Merge pull request #723 from YosysHQ/gatecat/fix-722
gui: Don't destroy context when loading JSON
Diffstat (limited to 'common/command.cc')
-rw-r--r-- | common/command.cc | 21 |
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(); } |