summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2019-03-16 22:22:21 -0400
committer arbee <rb6502@users.noreply.github.com>2019-03-16 22:22:21 -0400
commit57d3501c827cdc4125bb26c115fcf3318c4db871 (patch)
treeaaf6de5b10b6eb668ca3d5265c4e9734bbc402ab
parent43f05b73c458533ff0eeee3ca57b725f0e67141d (diff)
parent0882868e1154a085a1f8f411ddc5b7a02f3c3c6a (diff)
Merge branch 'master' of https://github.com/mamedev/mame
-rw-r--r--src/lib/netlist/nl_base.h2
-rw-r--r--src/lib/netlist/nl_setup.cpp5
-rw-r--r--src/lib/netlist/plib/pfmtlog.cpp108
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;
}