int target_design(ivl_design_t des) { ivl_scope_t*root_scopes; unsigned nroot = 0; unsigned idx; const char*path = ivl_design_flag(des, "-o"); if (path == 0) { return -1; } out = fopen(path, "w"); if (out == 0) { perror(path); return -2; } for (idx = 0 ; idx < ivl_design_disciplines(des) ; idx += 1) { ivl_discipline_t dis = ivl_design_discipline(des,idx); fprintf(out, "discipline %s\n", ivl_discipline_name(dis)); } ivl_design_roots(des, &root_scopes, &nroot); for (idx = 0 ; idx < nroot ; idx += 1) { fprintf(out, "root module = %s;\n", ivl_scope_name(root_scopes[idx])); show_scope(root_scopes[idx], 0); } while (udp_define_list) { struct udp_define_cell*cur = udp_define_list; udp_define_list = cur->next; show_primitive(cur->udp, cur->ref); free(cur); } ivl_design_process(des, show_process, 0); fclose(out); return stub_errors; }
/// Show mode. Show information about the named variable(s). static int builtin_set_show(const wchar_t *cmd, set_cmd_opts_t &opts, int argc, wchar_t **argv, parser_t &parser, io_streams_t &streams) { UNUSED(opts); auto &vars = parser.vars(); if (argc == 0) { // show all vars wcstring_list_t names = parser.vars().get_names(ENV_USER); sort(names.begin(), names.end()); for (auto it : names) { show_scope(it.c_str(), ENV_LOCAL, streams, vars); show_scope(it.c_str(), ENV_GLOBAL, streams, vars); show_scope(it.c_str(), ENV_UNIVERSAL, streams, vars); streams.out.push_back(L'\n'); } } else { for (int i = 0; i < argc; i++) { wchar_t *arg = argv[i]; if (!valid_var_name(arg)) { streams.err.append_format(_(L"$%ls: invalid var name\n"), arg); continue; } if (std::wcschr(arg, L'[')) { streams.err.append_format( _(L"%ls: `set --show` does not allow slices with the var names\n"), cmd); builtin_print_error_trailer(parser, streams.err, cmd); return STATUS_CMD_ERROR; } show_scope(arg, ENV_LOCAL, streams, vars); show_scope(arg, ENV_GLOBAL, streams, vars); show_scope(arg, ENV_UNIVERSAL, streams, vars); streams.out.push_back(L'\n'); } } return STATUS_CMD_OK; }