From 2cef85f8a114d6a3d946e170ce70315727922464 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sun, 1 Jan 2023 12:54:49 -0800 Subject: [PATCH] Add helper function for printing expression list There are a few places where some sort of expression list is printed. Add helper functions to consolidate this in a single place and reduce the amount of code. Signed-off-by: Lars-Peter Clausen --- design_dump.cc | 57 ++++++++--------------------- pform_dump.cc | 99 ++++++++++++++++++-------------------------------- 2 files changed, 52 insertions(+), 104 deletions(-) diff --git a/design_dump.cc b/design_dump.cc index 31f9915c3..7e8f50f7a 100644 --- a/design_dump.cc +++ b/design_dump.cc @@ -206,6 +206,18 @@ ostream& operator << (ostream&fd, NetCaseCmp::kind_t that) return fd; } +static std::ostream& operator << (std::ostream &out, const std::vector &exprs) +{ + for (size_t idx = 0; idx < exprs.size(); idx++) { + if (idx != 0) + out << ", "; + if (exprs[idx]) + out << *exprs[idx]; + } + + return out; +} + ostream& ivl_type_s::debug_dump(ostream&o) const { o << typeid(*this).name(); @@ -1650,17 +1662,7 @@ void NetSTask::dump(ostream&o, unsigned ind) const o << setw(ind) << "" << name_; if (! parms_.empty()) { - o << "("; - if (parms_[0]) - parms_[0]->dump(o); - - for (unsigned idx = 1 ; idx < parms_.size() ; idx += 1) { - o << ", "; - if (parms_[idx]) - parms_[idx]->dump(o); - } - - o << ")"; + o << "(" << parms_ << ")"; } o << ";" << endl; } @@ -1702,15 +1704,7 @@ void NetEAccess::dump(ostream&o) const void NetEArrayPattern::dump(ostream&fd) const { - fd << "'{"; - if (items_.size() >= 1) { - if (items_[0]) fd << *items_[0]; - } - for (size_t idx = 1 ; idx < items_.size() ; idx += 1) { - fd << ", "; - if (items_[idx]) fd << *items_[idx]; - } - fd << "}"; + fd << "'{" << items_ << "}"; } void NetEBinary::dump(ostream&o) const @@ -1814,18 +1808,7 @@ void NetEConcat::dump(ostream&o) const if (repeat_ != 1) o << repeat_; - if (parms_[0]) - o << "{" << *parms_[0]; - else - o << "{"; - - for (unsigned idx = 1 ; idx < parms_.size() ; idx += 1) { - if (parms_[idx]) - o << ", " << *parms_[idx]; - else - o << ", "; - } - o << "}"; + o << "{" << parms_ << "}"; } void NetEConst::dump(ostream&o) const @@ -1965,15 +1948,7 @@ void NetETernary::dump(ostream&o) const void NetEUFunc::dump(ostream&o) const { - o << scope_path(func_) << "("; - if (! parms_.empty()) { - parms_[0]->dump(o); - for (unsigned idx = 1 ; idx < parms_.size() ; idx += 1) { - o << ", "; - parms_[idx]->dump(o); - } - } - o << ")"; + o << scope_path(func_) << "(" << parms_ << ")"; } void NetEUnary::dump(ostream&o) const diff --git a/pform_dump.cc b/pform_dump.cc index 4f5ba286e..735d0f923 100644 --- a/pform_dump.cc +++ b/pform_dump.cc @@ -177,6 +177,35 @@ std::ostream& operator << (std::ostream&out, ivl_dis_domain_t dom) return out; } +static std::ostream& operator << (std::ostream &out, const std::vector &exprs) +{ + for (size_t idx = 0; idx < exprs.size(); idx++) { + if (idx != 0) + out << ", "; + if (exprs[idx]) + exprs[idx]->dump(out); + } + + return out; +} + +static std::ostream& operator << (std::ostream &out, + const std::vector &exprs) +{ + for (size_t idx = 0; idx < exprs.size(); idx++) { + if (idx != 0) + out << ", "; + if (!exprs[idx].name.nil()) + out << "." << exprs[idx].name << "("; + if (exprs[idx].parm) + exprs[idx].parm->dump(out); + if (!exprs[idx].name.nil()) + out << ")"; + } + + return out; +} + void data_type_t::pform_dump(ostream&out, unsigned indent) const { out << setw(indent) << "" << typeid(*this).name() << endl; @@ -380,15 +409,7 @@ void PExpr::dump(ostream&out) const void PEAssignPattern::dump(ostream&out) const { - out << "'{"; - if (parms_.size() > 0) { - parms_[0]->dump(out); - for (size_t idx = 1 ; idx < parms_.size() ; idx += 1) { - out << ", "; - parms_[idx]->dump(out); - } - } - out << "}"; + out << "'{" << parms_ << "}"; } void PEConcat::dump(ostream&out) const @@ -401,30 +422,14 @@ void PEConcat::dump(ostream&out) const return; } - out << "{"; - if (parms_[0]) out << *parms_[0]; - for (unsigned idx = 1 ; idx < parms_.size() ; idx += 1) { - out << ", "; - if (parms_[idx]) out << *parms_[idx]; - } - - out << "}"; + out << "{" << parms_ << "}"; if (repeat_) out << "}"; } void PECallFunction::dump(ostream &out) const { - out << path_ << "("; - - if (! parms_.empty()) { - if (parms_[0]) parms_[0]->dump(out); - for (unsigned idx = 1; idx < parms_.size(); ++idx) { - out << ", "; - if (parms_[idx]) parms_[idx]->dump(out); - } - } - out << ")"; + out << path_ << "(" << parms_ << ")"; } void PECastSize::dump(ostream &out) const @@ -487,15 +492,7 @@ void PENewArray::dump(ostream&out) const void PENewClass::dump(ostream&out) const { - out << "class_new("; - if (parms_.size() > 0) { - parms_[0]->dump(out); - for (size_t idx = 1 ; idx < parms_.size() ; idx += 1) { - out << ", "; - if (parms_[idx]) parms_[idx]->dump(out); - } - } - out << ")"; + out << "class_new(" << parms_ << ")"; } void PENewCopy::dump(ostream&out) const @@ -830,14 +827,7 @@ void PGModule::dump(ostream&out, unsigned ind) const // If parameters are overridden by name, dump them. if (parms_) { assert(overrides_ == 0); - out << "#("; - for (unsigned idx = 0 ; idx < nparms_ ; idx += 1) { - if (idx > 0) out << ", "; - out << "." << parms_[idx].name << "("; - if (parms_[idx].parm) out << *parms_[idx].parm; - out << ")"; - } - out << ") "; + out << "#(" << parms_ << ") "; } out << get_name(); @@ -940,16 +930,7 @@ void PCallTask::dump(ostream&out, unsigned ind) const out << setw(ind) << "" << path_; if (! parms_.empty()) { - out << "("; - if (parms_[0]) - out << *parms_[0]; - - for (unsigned idx = 1 ; idx < parms_.size() ; idx += 1) { - out << ", "; - if (parms_[idx]) - out << *parms_[idx]; - } - out << ")"; + out << "(" << parms_ << ")"; } out << "; /* " << get_fileline() << " */" << endl; @@ -1017,15 +998,7 @@ void PCase::dump(ostream&out, unsigned ind) const void PChainConstructor::dump(ostream&out, unsigned ind) const { - out << setw(ind) << "" << "super.new("; - if (parms_.size() > 0) { - if (parms_[0]) out << *parms_[0]; - } - for (size_t idx = 1 ; idx < parms_.size() ; idx += 1) { - out << ", "; - if (parms_[idx]) out << *parms_[idx]; - } - out << ");" << endl; + out << setw(ind) << "" << "super.new(" << parms_ << ")" <