diff options
author | couriersud <couriersud@gmx.org> | 2019-03-17 03:17:00 +0100 |
---|---|---|
committer | couriersud <couriersud@gmx.org> | 2019-03-17 03:17:15 +0100 |
commit | 0882868e1154a085a1f8f411ddc5b7a02f3c3c6a (patch) | |
tree | 4e955ab4d745f7850d79eb4c8bd2cd9c6ea9f2e1 | |
parent | ac247a915d3fe62c489692c634436e1900db69e9 (diff) |
netlist: Fix formatting bug. (nw)
-rw-r--r-- | src/lib/netlist/nl_base.h | 2 | ||||
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 5 | ||||
-rw-r--r-- | src/lib/netlist/plib/pfmtlog.cpp | 108 |
3 files changed, 59 insertions, 56 deletions
diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index bf121015f94..323f2fa7a0b 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -702,7 +702,7 @@ namespace netlist template <typename T> void process(const T mask, netlist_sig_t sig); }; - } // detail + } // namespace detail // ----------------------------------------------------------------------------- // analog_t diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 5cb304102a8..a2f9dece076 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -288,11 +288,6 @@ void setup_t::register_term(detail::core_terminal_t &term) log().debug("{1} {2}\n", termtype_as_str(term), term.name()); } - - - - - void setup_t::remove_connections(const pstring &pin) { pstring pinfn = build_fqn(pin); diff --git a/src/lib/netlist/plib/pfmtlog.cpp b/src/lib/netlist/plib/pfmtlog.cpp index 0d911800247..af87251fbdf 100644 --- a/src/lib/netlist/plib/pfmtlog.cpp +++ b/src/lib/netlist/plib/pfmtlog.cpp @@ -23,72 +23,80 @@ pfmt &pfmt::format_element(const char *l, const unsigned cfmt_spec, ...) { va_list ap; // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg) - va_start(ap, cfmt_spec); - pstring fmt("%"); std::array<char, 2048> buf; std::size_t sl; - - buf[0] = 0; + bool found_abs = false; m_arg++; - pstring search("{"); - search += plib::to_string(m_arg); - sl = search.size(); + do { + pstring fmt("%"); + va_start(ap, cfmt_spec); + found_abs = false; + buf[0] = 0; + pstring search("{"); + search += plib::to_string(m_arg); + sl = search.size(); - auto p = m_str.find(search + ":"); - sl++; // ":" - if (p == pstring::npos) // no further specifiers - { - p = m_str.find(search + "}"); - if (p == pstring::npos) // not found try default - { - sl = 2; - p = m_str.find("{}"); - } - if (p == pstring::npos) + auto p = m_str.find(search + ":"); + sl++; // ":" + if (p == pstring::npos) // no further specifiers { - sl=1; - p = m_str.find("{"); - if (p != pstring:: npos) + p = m_str.find(search + "}"); + if (p == pstring::npos) // not found try default { - auto p1 = m_str.find("}", p); - if (p1 != pstring::npos) + sl = 2; + p = m_str.find("{}"); + } + else + // found absolute positional place holder + found_abs = true; + if (p == pstring::npos) + { + sl=2; + p = m_str.find("{:"); + if (p != pstring:: npos) { - sl = p1 - p + 1; - fmt += m_str.substr(p+1, p1 - p - 1); + auto p1 = m_str.find("}", p); + if (p1 != pstring::npos) + { + sl = p1 - p + 1; + fmt += m_str.substr(p+1, p1 - p - 1); + } } } } - } - else - { - auto p1 = m_str.find("}", p); - if (p1 != pstring::npos) + else + { + // found absolute positional place holder + auto p1 = m_str.find("}", p); + if (p1 != pstring::npos) + { + sl = p1 - p + 1; + fmt += ((m_arg>=10) ? m_str.substr(p+4, p1 - p - 4) : m_str.substr(p+3, p1 - p - 3)); + found_abs = true; + } + } + pstring::value_type pend = fmt.at(fmt.size() - 1); + if (pstring("duxo").find(cfmt_spec) != pstring::npos) + { + if (pstring("duxo").find(pend) == pstring::npos) + fmt += (pstring(l) + static_cast<pstring::value_type>(cfmt_spec)); + else + fmt = plib::left(fmt, fmt.size() - 1) + pstring(l) + plib::right(fmt, 1); + } + else if (pstring("fge").find(cfmt_spec) != pstring::npos) { - sl = p1 - p + 1; - fmt += ((m_arg>=10) ? m_str.substr(p+4, p1 - p - 4) : m_str.substr(p+3, p1 - p - 3)); + if (pstring("fge").find(pend) == pstring::npos) + fmt += cfmt_spec; } - } - pstring::value_type pend = fmt.at(fmt.size() - 1); - if (pstring("duxo").find(cfmt_spec) != pstring::npos) - { - if (pstring("duxo").find(pend) == pstring::npos) - fmt += (pstring(l) + static_cast<pstring::value_type>(cfmt_spec)); else - fmt = plib::left(fmt, fmt.size() - 1) + pstring(l) + plib::right(fmt, 1); - } - else if (pstring("fge").find(cfmt_spec) != pstring::npos) - { - if (pstring("fge").find(pend) == pstring::npos) fmt += cfmt_spec; - } - else - fmt += cfmt_spec; - std::vsnprintf(buf.data(), buf.size(), fmt.c_str(), ap); - if (p != pstring::npos) - m_str = m_str.substr(0, p) + pstring(buf.data()) + m_str.substr(p + sl); - va_end(ap); + std::vsnprintf(buf.data(), buf.size(), fmt.c_str(), ap); + if (p != pstring::npos) + m_str = m_str.substr(0, p) + pstring(buf.data()) + m_str.substr(p + sl); + va_end(ap); + } while (found_abs); return *this; } |