mirror of
https://github.com/holub/mame
synced 2025-07-08 19:31:59 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
57d3501c82
@ -702,7 +702,7 @@ namespace netlist
|
||||
template <typename T>
|
||||
void process(const T mask, netlist_sig_t sig);
|
||||
};
|
||||
} // detail
|
||||
} // namespace detail
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// analog_t
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
auto p = m_str.find(search + ":");
|
||||
sl++; // ":"
|
||||
if (p == pstring::npos) // no further specifiers
|
||||
{
|
||||
sl = 2;
|
||||
p = m_str.find("{}");
|
||||
}
|
||||
if (p == pstring::npos)
|
||||
{
|
||||
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)
|
||||
{
|
||||
sl = p1 - p + 1;
|
||||
fmt += ((m_arg>=10) ? m_str.substr(p+4, p1 - p - 4) : m_str.substr(p+3, p1 - p - 3));
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
if (pstring("fge").find(pend) == pstring::npos)
|
||||
fmt += cfmt_spec;
|
||||
}
|
||||
else
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user