summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2015-08-10 21:50:08 +0200
committer couriersud <couriersud@arcor.de>2015-08-10 22:35:19 +0200
commit6cc506594d0bf74047b9f95269720f9fbce5b7dc (patch)
treecf4f34d41a695d972cdde8f4af9383754791ec9d
parent7b15a99c4b9ee44264a4cb9d719dc0ef3736ce85 (diff)
Make netlist more typesafe. Added a pformat class to reduce sprintf
usage. The approach is also suitable for translated strings with arbitrary positioning of parameters. (nw)
-rw-r--r--src/emu/machine/netlist.c8
-rw-r--r--src/emu/machine/netlist.h6
-rw-r--r--src/emu/netlist/devices/nld_log.c6
-rw-r--r--src/emu/netlist/devices/nld_system.c2
-rw-r--r--src/emu/netlist/devices/nld_truthtable.c8
-rw-r--r--src/emu/netlist/nl_base.h6
-rw-r--r--src/emu/netlist/nl_factory.h4
-rw-r--r--src/emu/netlist/nl_parser.c4
-rw-r--r--src/emu/netlist/nl_setup.c25
-rw-r--r--src/emu/netlist/plib/pparser.c4
-rw-r--r--src/emu/netlist/plib/pstring.c38
-rw-r--r--src/emu/netlist/plib/pstring.h45
-rw-r--r--src/emu/netlist/solver/nld_ms_direct.h2
-rw-r--r--src/emu/netlist/solver/nld_solver.c4
-rw-r--r--src/emu/netlist/tools/nl_convert.c34
-rw-r--r--src/tools/nltool.c9
16 files changed, 144 insertions, 61 deletions
diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c
index bccb11bb4f0..79d3b4e6943 100644
--- a/src/emu/machine/netlist.c
+++ b/src/emu/machine/netlist.c
@@ -175,11 +175,11 @@ void netlist_mame_stream_input_t::custom_netlist_additions(netlist::setup_t &set
if (snd_in == NULL)
snd_in = dynamic_cast<NETLIB_NAME(sound_in) *>(setup.register_dev("NETDEV_SOUND_IN", "STREAM_INPUT"));
- pstring sparam = pstring::sprintf("STREAM_INPUT.CHAN%d", m_channel);
+ pstring sparam = pformat("STREAM_INPUT.CHAN%1")(m_channel);
setup.register_param(sparam, m_param_name);
- sparam = pstring::sprintf("STREAM_INPUT.MULT%d", m_channel);
+ sparam = pformat("STREAM_INPUT.MULT%1")(m_channel);
setup.register_param(sparam, m_mult);
- sparam = pstring::sprintf("STREAM_INPUT.OFFSET%d", m_channel);
+ sparam = pformat("STREAM_INPUT.OFFSET%1")(m_channel);
setup.register_param(sparam, m_offset);
}
@@ -210,7 +210,7 @@ void netlist_mame_stream_output_t::device_start()
void netlist_mame_stream_output_t::custom_netlist_additions(netlist::setup_t &setup)
{
//NETLIB_NAME(sound_out) *snd_out;
- pstring sname = pstring::sprintf("STREAM_OUT_%d", m_channel);
+ pstring sname = pformat("STREAM_OUT_%1")(m_channel);
//snd_out = dynamic_cast<NETLIB_NAME(sound_out) *>(setup.register_dev("nld_sound_out", sname));
setup.register_dev("NETDEV_SOUND_OUT", sname);
diff --git a/src/emu/machine/netlist.h b/src/emu/machine/netlist.h
index 423919badec..73ad52b0ddd 100644
--- a/src/emu/machine/netlist.h
+++ b/src/emu/machine/netlist.h
@@ -648,9 +648,9 @@ public:
for (int i = 0; i < MAX_INPUT_CHANNELS; i++)
{
- register_param(pstring::sprintf("CHAN%d", i), m_param_name[i], "");
- register_param(pstring::sprintf("MULT%d", i), m_param_mult[i], 1.0);
- register_param(pstring::sprintf("OFFSET%d", i), m_param_offset[i], 0.0);
+ register_param(pformat("CHAN%1")(i), m_param_name[i], "");
+ register_param(pformat("MULT%1")(i), m_param_mult[i], 1.0);
+ register_param(pformat("OFFSET%1")(i), m_param_offset[i], 0.0);
}
m_num_channel = 0;
}
diff --git a/src/emu/netlist/devices/nld_log.c b/src/emu/netlist/devices/nld_log.c
index c8d734a4d6c..ac8a3fdbbc6 100644
--- a/src/emu/netlist/devices/nld_log.c
+++ b/src/emu/netlist/devices/nld_log.c
@@ -16,7 +16,7 @@ NETLIB_START(log)
{
register_input("I", m_I);
- pstring filename = pstring::sprintf("%s.log", name().cstr());
+ pstring filename = pformat("%1.log")(name());
m_strm = palloc(pofilestream(filename));
}
@@ -26,7 +26,9 @@ NETLIB_RESET(log)
NETLIB_UPDATE(log)
{
- m_strm->writeline(pstring::sprintf("%20.9e %e", netlist().time().as_double(), (nl_double) INPANALOG(m_I)).cstr());
+ /* use pstring::sprintf, it is a LOT faster */
+// m_strm->writeline(pstring::sprintf("%20.9e %e", netlist().time().as_double(), (nl_double) INPANALOG(m_I)).cstr());
+ m_strm->writeline(pformat("%1 %2").e(netlist().time().as_double(),".9").e((nl_double) INPANALOG(m_I)).cstr());
}
NETLIB_NAME(log)::~NETLIB_NAME(log)()
diff --git a/src/emu/netlist/devices/nld_system.c b/src/emu/netlist/devices/nld_system.c
index a0c21ee6a2a..565b1c81dd1 100644
--- a/src/emu/netlist/devices/nld_system.c
+++ b/src/emu/netlist/devices/nld_system.c
@@ -299,7 +299,7 @@ NETLIB_START(function)
register_output("Q", m_Q);
for (int i=0; i < m_N; i++)
- register_input(pstring::sprintf("A%d", i), m_I[i]);
+ register_input(pformat("A%1")(i), m_I[i]);
pstring_list_t cmds(m_func.Value(), " ");
m_precompiled.clear();
diff --git a/src/emu/netlist/devices/nld_truthtable.c b/src/emu/netlist/devices/nld_truthtable.c
index a93435a6af0..1f6a9a19117 100644
--- a/src/emu/netlist/devices/nld_truthtable.c
+++ b/src/emu/netlist/devices/nld_truthtable.c
@@ -135,8 +135,8 @@ void truthtable_desc_t::help(unsigned cur, pstring_list_t list,
{
// cutoff previous inputs and outputs for ignore
if (m_outs[nstate] != ~0U && m_outs[nstate] != val)
- fatalerror_e(pstring::sprintf("Error in truthtable: State %04x already set, %d != %d\n",
- (UINT32) nstate, m_outs[nstate], val));
+ fatalerror_e(pformat("Error in truthtable: State %1 already set, %2 != %3\n")
+ .x(nstate,"04")(m_outs[nstate])(val) );
m_outs[nstate] = val;
for (unsigned j=0; j<m_NO; j++)
m_timing[nstate * m_NO + j] = timing_index[j];
@@ -231,7 +231,7 @@ void truthtable_desc_t::setup(const pstring_list_t &truthtable, UINT32 disabled_
for (UINT32 i=0; i<m_size; i++)
{
if (m_outs[i] == ~0U)
- throw fatalerror_e(pstring::sprintf("truthtable: found element not set %04x\n", i));
+ throw fatalerror_e(pformat("truthtable: found element not set %1\n").x(i) );
m_outs[i] |= ((ign[i] & ~disabled_ignore) << m_NO);
}
*m_initialized = true;
@@ -264,7 +264,7 @@ netlist_base_factory_truthtable_t *nl_tt_factory_create(const unsigned ni, const
ENTRY(9);
ENTRY(10);
default:
- pstring msg = pstring::sprintf("unable to create truthtable<%d,%d,%d>", ni, no, has_state);
+ pstring msg = pformat("unable to create truthtable<%1,%2,%3>")(ni)(no)(has_state);
nl_assert_always(false, msg.cstr());
}
return NULL;
diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h
index 58f14bd03e0..bfaaee9b44f 100644
--- a/src/emu/netlist/nl_base.h
+++ b/src/emu/netlist/nl_base.h
@@ -252,11 +252,11 @@ virtual logic_family_desc_t *default_logic_family()
//============================================================
#if defined(MAME_DEBUG)
-#define nl_assert(x) do { if (!(x)) throw fatalerror_e("assert: %s:%d: %s", __FILE__, __LINE__, #x); } while (0)
+#define nl_assert(x) do { if (1) if (!(x)) throw fatalerror_e(pformat("assert: %1:%2: %3")(__FILE__)(__LINE__)(#x) ); } while (0)
#else
-#define nl_assert(x) do { if (0) if (!(x)) throw fatalerror_e(pstring::sprintf("assert: %s:%d: %s", __FILE__, __LINE__, #x)); } while (0)
+#define nl_assert(x) do { if (0) if (!(x)) throw fatalerror_e(pformat("assert: %1:%2: %3")(__FILE__)(__LINE__)(#x) ); } while (0)
#endif
-#define nl_assert_always(x, msg) do { if (!(x)) throw fatalerror_e(pstring::sprintf("Fatal error: %s\nCaused by assert: %s:%d: %s", msg, __FILE__, __LINE__, #x)); } while (0)
+#define nl_assert_always(x, msg) do { if (!(x)) throw fatalerror_e(pformat("Fatal error: %1\nCaused by assert: %2:%3: %4")(msg)(__FILE__)(__LINE__)(#x)); } while (0)
// -----------------------------------------------------------------------------
diff --git a/src/emu/netlist/nl_factory.h b/src/emu/netlist/nl_factory.h
index 7df0385fbff..b758941dd71 100644
--- a/src/emu/netlist/nl_factory.h
+++ b/src/emu/netlist/nl_factory.h
@@ -73,13 +73,13 @@ namespace netlist
const pstring &def_param)
{
if (!add(name, palloc(factory_t< _C >(name, classname, def_param))))
- error(pstring::sprintf("factory already contains %s", name.cstr()));
+ error("factory already contains " + name);
}
ATTR_COLD void register_device(base_factory_t *factory)
{
if (!add(factory->name(), factory))
- error(pstring::sprintf("factory already contains %s", factory->name().cstr()));
+ error("factory already contains " + factory->name());
}
//ATTR_COLD device_t *new_device_by_classname(const pstring &classname) const;
diff --git a/src/emu/netlist/nl_parser.c b/src/emu/netlist/nl_parser.c
index 2bd7e1d43b5..2872648aa52 100644
--- a/src/emu/netlist/nl_parser.c
+++ b/src/emu/netlist/nl_parser.c
@@ -324,8 +324,8 @@ void parser_t::dippins()
unsigned n = pins.size();
for (unsigned i = 0; i < n / 2; i++)
{
- m_setup.register_alias(pstring::sprintf("%d", i+1), pins[i*2]);
- m_setup.register_alias(pstring::sprintf("%d", n-i), pins[i*2 + 1]);
+ m_setup.register_alias(pformat("%1")(i+1), pins[i*2]);
+ m_setup.register_alias(pformat("%1")(n-i), pins[i*2 + 1]);
}
}
diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c
index 228a54c090f..0c56b27a455 100644
--- a/src/emu/netlist/nl_setup.c
+++ b/src/emu/netlist/nl_setup.c
@@ -170,8 +170,8 @@ void setup_t::register_dippins_arr(const pstring &terms)
unsigned n = list.size();
for (unsigned i = 0; i < n / 2; i++)
{
- register_alias(pstring::sprintf("%d", i+1), list[i * 2]);
- register_alias(pstring::sprintf("%d", n-i), list[i * 2 + 1]);
+ register_alias(pformat("%1")(i+1), list[i * 2]);
+ register_alias(pformat("%1")(n-i), list[i * 2 + 1]);
}
}
@@ -332,7 +332,7 @@ void setup_t::remove_connections(const pstring pin)
void setup_t::register_frontier(const pstring attach, const double r_IN, const double r_OUT)
{
static int frontier_cnt = 0;
- pstring frontier_name = pstring::sprintf("frontier_%d", frontier_cnt);
+ pstring frontier_name = pformat("frontier_%1")(frontier_cnt);
frontier_cnt++;
device_t *front = register_dev("FRONTIER_DEV", frontier_name);
register_param(frontier_name + ".RIN", r_IN);
@@ -362,7 +362,7 @@ void setup_t::register_frontier(const pstring attach, const double r_IN, const d
void setup_t::register_param(const pstring &param, const double value)
{
// FIXME: there should be a better way
- register_param(param, pstring::sprintf("%.9e", value));
+ register_param(param, pformat("%1").e(value,".9"));
}
void setup_t::register_param(const pstring &param, const pstring &value)
@@ -478,7 +478,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
{
// create a new one ...
devices::nld_base_d_to_a_proxy *new_proxy = out_cast.logic_family()->create_d_a_proxy(&out_cast);
- pstring x = pstring::sprintf("proxy_da_%s_%d", out.name().cstr(), m_proxy_cnt);
+ pstring x = pformat("proxy_da_%1_%2")(out.name())(m_proxy_cnt);
m_proxy_cnt++;
register_dev(new_proxy, x);
@@ -510,7 +510,7 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
logic_input_t &incast = dynamic_cast<logic_input_t &>(in);
devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
incast.set_proxy(proxy);
- pstring x = pstring::sprintf("proxy_ad_%s_%d", in.name().cstr(), m_proxy_cnt);
+ pstring x = pformat("proxy_ad_%1_%2")(in.name())( m_proxy_cnt);
m_proxy_cnt++;
register_dev(proxy, x);
@@ -549,7 +549,7 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
NL_VERBOSE_OUT(("connect_terminal_input: connecting proxy\n"));
devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
incast.set_proxy(proxy);
- pstring x = pstring::sprintf("proxy_ad_%s_%d", inp.name().cstr(), m_proxy_cnt);
+ pstring x = pformat("proxy_ad_%1_%2")(inp.name())(m_proxy_cnt);
m_proxy_cnt++;
register_dev(proxy, x);
@@ -799,8 +799,7 @@ void setup_t::resolve_inputs()
{
core_terminal_t *term = m_terminals.value_at(i);
if (!term->has_net())
- errstr += pstring::sprintf("Found terminal %s without a net\n",
- term->name().cstr());
+ errstr += pformat("Found terminal %1 without a net\n")(term->name());
else if (term->net().num_cons() == 0)
netlist().warning("Found terminal %s without connections",
term->name().cstr());
@@ -985,8 +984,8 @@ nl_double setup_t::model_value(model_map_t &map, const pstring &entity)
pstring tmp = model_value_str(map, entity);
nl_double factor = NL_FCONST(1.0);
- char numfac = *(tmp.right(1).cstr());
- switch (numfac)
+ pstring numfac = tmp.right(1);
+ switch (numfac.code_at(0))
{
case 'M': factor = 1e6; break;
case 'k': factor = 1e3; break;
@@ -997,8 +996,8 @@ nl_double setup_t::model_value(model_map_t &map, const pstring &entity)
case 'f': factor = 1e-15; break;
case 'a': factor = 1e-18; break;
default:
- if (numfac < '0' || numfac > '9')
- fatalerror_e(pstring::sprintf("Unknown number factor <%c> in: %s", numfac, entity.cstr()));
+ if (numfac < "0" || numfac > "9")
+ fatalerror_e(pformat("Unknown number factor <%1> in: %2")(numfac)(entity));
}
if (factor != NL_FCONST(1.0))
tmp = tmp.left(tmp.len() - 1);
diff --git a/src/emu/netlist/plib/pparser.c b/src/emu/netlist/plib/pparser.c
index 8473d58fc2a..6355894bd56 100644
--- a/src/emu/netlist/plib/pparser.c
+++ b/src/emu/netlist/plib/pparser.c
@@ -455,12 +455,12 @@ pstring ppreprocessor::process_line(const pstring &line)
if (m_ifflag == 0)
{
if (lti.size() != 3)
- error(pstring::sprintf("PREPRO: only simple defines allowed: %s", line.cstr()));
+ error("PREPRO: only simple defines allowed: %s" + line);
m_defines.add(lti[1], define_t(lti[1], lti[2]));
}
}
else
- error(pstring::sprintf("unknown directive on line %d: %s\n", m_lineno, line.cstr()));
+ error(pformat("unknown directive on line %1: %2\n")(m_lineno)(line));
}
else
{
diff --git a/src/emu/netlist/plib/pstring.c b/src/emu/netlist/plib/pstring.c
index 8ff8ae8c9a7..d335c2766a4 100644
--- a/src/emu/netlist/plib/pstring.c
+++ b/src/emu/netlist/plib/pstring.c
@@ -226,6 +226,7 @@ pstring_t<F> pstring_t<F>::replace(const pstring_t &search, const pstring_t &rep
i++;
}
}
+ ret = ret.cat(cstr() + i);
return ret;
}
@@ -512,6 +513,43 @@ void pstringbuffer::pcat(const pstring &s)
m_ptr[m_len] = 0;
}
+pformat::pformat(const pstring &fmt)
+: m_arg(0)
+{
+ memcpy(m_str, fmt.cstr(), fmt.blen() + 1);
+}
+
+pformat::pformat(const char *fmt)
+: m_arg(0)
+{
+ strncpy(m_str, fmt, sizeof(m_str));
+ m_str[sizeof(m_str)] = 0;
+}
+
+pformat &pformat::update(const char *f, const char *l, ...)
+{
+ va_list ap;
+ va_start(ap, l);
+ char fmt[30] = "%";
+ char search[10] = "";
+ char buf[1024];
+ strcat(fmt, f);
+ strcat(fmt, l);
+ int nl = vsprintf(buf, fmt, ap);
+ m_arg++;
+ int sl = sprintf(search, "%%%d", m_arg);
+ char *p = strstr(m_str, search);
+ if (p != NULL)
+ {
+ // Make room
+ memmove(p+nl, p+sl, strlen(p) + 1 - sl);
+ memcpy(p, buf, nl);
+ }
+ va_end(ap);
+ return *this;
+}
+
+
template struct pstring_t<pu8_traits>;
template struct pstring_t<putf8_traits>;
diff --git a/src/emu/netlist/plib/pstring.h b/src/emu/netlist/plib/pstring.h
index 013593e4f55..f6778a3f974 100644
--- a/src/emu/netlist/plib/pstring.h
+++ b/src/emu/netlist/plib/pstring.h
@@ -381,5 +381,50 @@ private:
};
+class pformat
+{
+public:
+ pformat(const pstring &fmt);
+ pformat(const char *fmt);
+
+ operator pstring() const { return m_str; }
+
+ const char *cstr() { return m_str; }
+
+ pformat &operator ()(const INT64 x, const char *f = "") { return update(f, I64FMT "d", x); }
+ pformat &operator ()(const UINT64 x, const char *f = "") { return update(f, I64FMT "u", x); }
+
+ pformat &x (const INT64 x, const char *f = "") { return update(f, I64FMT "x", x); }
+ pformat &x (const UINT64 x, const char *f = "") { return update(f, I64FMT "x", x); }
+
+ pformat &operator ()(const INT32 x, const char *f = "") { return update(f, "d", x); }
+ pformat &operator ()(const UINT32 x, const char *f = "") { return update(f, "u", x); }
+
+ pformat &x (const INT32 x, const char *f = "") { return update(f, "x", x); }
+ pformat &x (const UINT32 x, const char *f = "") { return update(f, "x", x); }
+
+ pformat &operator ()(const INT16 x, const char *f = "") { return update(f, "hd", x); }
+ pformat &operator ()(const UINT16 x, const char *f = "") { return update(f, "hu", x); }
+
+ pformat &operator ()(const std::size_t x, const char *f = "") { return update(f, SIZETFMT, x); }
+
+ pformat &operator ()(const double x, const char *f = "") { return update(f, "f", x); }
+ pformat & e(const double x, const char *f = "") { return update(f, "e", x); }
+ pformat & g(const double x, const char *f = "") { return update(f, "g", x); }
+
+ pformat &operator ()(const char *x, const char *f = "") { return update(f, "s", x); }
+ pformat &operator ()(const void *x, const char *f = "") { return update(f, "p", x); }
+ pformat &operator ()(const pstring &x, const char *f = "") { return update(f, "s", x.cstr() ); }
+
+private:
+
+ pformat &update(const char *f, const char *l, ...);
+
+ char m_str[2048];
+ unsigned m_arg;
+};
+//const type_t vprintf(va_list args) const;
+//static const type_t sprintf(const char *format, ...) ATTR_PRINTF(1,2);
+
#endif /* _PSTRING_H_ */
diff --git a/src/emu/netlist/solver/nld_ms_direct.h b/src/emu/netlist/solver/nld_ms_direct.h
index 4a304a54dde..5263c3e5f9c 100644
--- a/src/emu/netlist/solver/nld_ms_direct.h
+++ b/src/emu/netlist/solver/nld_ms_direct.h
@@ -277,7 +277,7 @@ ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::vsetup(analog_net_t::lis
for (unsigned k = 0; k < N(); k++)
{
- pstring num = pstring::sprintf("%d", k);
+ pstring num = pformat("%1")(k);
save(m_terms[k]->go(),"GO" + num, m_terms[k]->count());
save(m_terms[k]->gt(),"GT" + num, m_terms[k]->count());
diff --git a/src/emu/netlist/solver/nld_solver.c b/src/emu/netlist/solver/nld_solver.c
index 47413820d19..631ec438458 100644
--- a/src/emu/netlist/solver/nld_solver.c
+++ b/src/emu/netlist/solver/nld_solver.c
@@ -170,7 +170,7 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
if (net_proxy_output == NULL)
{
net_proxy_output = palloc(analog_output_t);
- net_proxy_output->init_object(*this, this->name() + "." + pstring::sprintf("m%" SIZETFMT, SIZET_PRINTF(m_inps.size())));
+ net_proxy_output->init_object(*this, this->name() + "." + pformat("m%1")(m_inps.size()));
m_inps.add(net_proxy_output);
net_proxy_output->m_proxied_net = &p->net().as_analog();
}
@@ -584,7 +584,7 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
break;
}
- register_sub(pstring::sprintf("Solver_%" SIZETFMT,SIZET_PRINTF(m_mat_solvers.size())), *ms);
+ register_sub(pformat("Solver_%1")(m_mat_solvers.size()), *ms);
ms->vsetup(groups[i]);
diff --git a/src/emu/netlist/tools/nl_convert.c b/src/emu/netlist/tools/nl_convert.c
index 265e20c1c93..15a6ab65136 100644
--- a/src/emu/netlist/tools/nl_convert.c
+++ b/src/emu/netlist/tools/nl_convert.c
@@ -149,7 +149,7 @@ const pstring nl_convert_base_t::get_nl_val(const double val)
break;
i++;
}
- return pstring::sprintf(m_units[i].m_func.cstr(), val / m_units[i].m_mult);
+ return pformat(m_units[i].m_func.cstr()).g(val / m_units[i].m_mult);
}
}
double nl_convert_base_t::get_sp_unit(const pstring &unit)
@@ -181,21 +181,21 @@ double nl_convert_base_t::get_sp_val(const pstring &sin)
nl_convert_base_t::unit_t nl_convert_base_t::m_units[] = {
{"T", "", 1.0e12 },
{"G", "", 1.0e9 },
- {"MEG", "RES_M(%g)", 1.0e6 },
- {"k", "RES_K(%g)", 1.0e3 }, /* eagle */
- {"K", "RES_K(%g)", 1.0e3 },
- {"", "%g", 1.0e0 },
- {"M", "CAP_M(%g)", 1.0e-3 },
- {"u", "CAP_U(%g)", 1.0e-6 }, /* eagle */
- {"U", "CAP_U(%g)", 1.0e-6 },
- {"??", "CAP_U(%g)", 1.0e-6 },
- {"N", "CAP_N(%g)", 1.0e-9 },
- {"P", "CAP_P(%g)", 1.0e-12},
- {"F", "%ge-15", 1.0e-15},
-
- {"MIL", "%e", 25.4e-6},
-
- {"-", "%g", 1.0 }
+ {"MEG", "RES_M(%1)", 1.0e6 },
+ {"k", "RES_K(%1)", 1.0e3 }, /* eagle */
+ {"K", "RES_K(%1)", 1.0e3 },
+ {"", "%1", 1.0e0 },
+ {"M", "CAP_M(%1)", 1.0e-3 },
+ {"u", "CAP_U(%1)", 1.0e-6 }, /* eagle */
+ {"U", "CAP_U(%1)", 1.0e-6 },
+ {"??", "CAP_U(%1)", 1.0e-6 },
+ {"N", "CAP_N(%1)", 1.0e-9 },
+ {"P", "CAP_P(%1)", 1.0e-12},
+ {"F", "%1e-15", 1.0e-15},
+
+ {"MIL", "%1", 25.4e-6},
+
+ {"-", "%1", 1.0 }
};
@@ -345,7 +345,7 @@ void nl_convert_spice_t::process_line(const pstring &line)
add_device(tname, xname);
for (std::size_t i=1; i < tt.size() - 1; i++)
{
- pstring term = pstring::sprintf("%s.%" SIZETFMT, xname.cstr(), SIZET_PRINTF(i));
+ pstring term = pformat("%1.%2")(xname)(i);
add_term(tt[i], term);
}
break;
diff --git a/src/tools/nltool.c b/src/tools/nltool.c
index 0d34eb9d1ae..fa93770a66d 100644
--- a/src/tools/nltool.c
+++ b/src/tools/nltool.c
@@ -277,7 +277,7 @@ struct input_t
double t;
int e = line.scanf("%lf,%[^,],%lf", &t, buf, &m_value);
if ( e!= 3)
- throw netlist::fatalerror_e(pstring::sprintf("error %d scanning line %s\n", e, line.cstr()));
+ throw netlist::fatalerror_e(pformat("error %1 scanning line %2\n")(e)(line));
m_time = netlist::netlist_time::from_double(t);
m_param = netlist->setup().find_param(buf, true);
}
@@ -288,7 +288,7 @@ struct input_t
{
case netlist::param_t::MODEL:
case netlist::param_t::STRING:
- throw netlist::fatalerror_e(pstring::sprintf("param %s is not numeric\n", m_param->name().cstr()));
+ throw netlist::fatalerror_e(pformat("param %1 is not numeric\n")(m_param->name()));
case netlist::param_t::DOUBLE:
static_cast<netlist::param_double_t*>(m_param)->setTo(m_value);
break;
@@ -380,12 +380,11 @@ static void listdevices()
for (int i=0; i < list.size(); i++)
{
netlist::base_factory_t *f = list.value_at(i);
- pstring out = pstring::sprintf("%-20s %s(<id>", f->classname().cstr(),
- f->name().cstr() );
+ pstring out = pformat("%1 %2(<id>")(f->classname(),"-20")(f->name());
pstring terms("");
netlist::device_t *d = f->Create();
- d->init(nt, pstring::sprintf("dummy%d", i));
+ d->init(nt, pformat("dummy%1")(i));
d->start_dev();
// get the list of terminals ...