diff options
Diffstat (limited to 'src/lib/netlist/tools/nl_convert.cpp')
-rw-r--r-- | src/lib/netlist/tools/nl_convert.cpp | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/src/lib/netlist/tools/nl_convert.cpp b/src/lib/netlist/tools/nl_convert.cpp index 9523febf06a..5b0bfd267c3 100644 --- a/src/lib/netlist/tools/nl_convert.cpp +++ b/src/lib/netlist/tools/nl_convert.cpp @@ -6,7 +6,6 @@ */ #include <algorithm> -#include <cstdio> #include <cmath> #include <unordered_map> #include "nl_convert.h" @@ -18,7 +17,7 @@ * define a model param on core device */ /* Format: external name,netlist device,model */ -static const char *s_lib_map = +static const pstring s_lib_map = "SN74LS00D, TTL_7400_DIP, 74LSXX\n" "SN74LS04D, TTL_7404_DIP, 74LSXX\n" "SN74ALS08D, TTL_7408_DIP, 74ALSXX\n" @@ -44,11 +43,12 @@ using lib_map_t = std::unordered_map<pstring, lib_map_entry>; static lib_map_t read_lib_map(const pstring lm) { plib::pistringstream istrm(lm); + plib::putf8_reader reader(istrm); lib_map_t m; pstring line; - while (istrm.readline(line)) + while (reader.readline(line)) { - plib::pstring_vector_t split(line, ","); + std::vector<pstring> split(plib::psplit(line, ",")); m[split[0].trim()] = { split[1].trim(), split[2].trim() }; } return m; @@ -185,21 +185,21 @@ const pstring nl_convert_base_t::get_nl_val(const double val) { { int i = 0; - while (m_units[i].m_unit != "-" ) + while (pstring(m_units[i].m_unit, pstring::UTF8) != "-" ) { if (m_units[i].m_mult <= std::abs(val)) break; i++; } - return plib::pfmt(m_units[i].m_func.c_str())(val / m_units[i].m_mult); + return plib::pfmt(pstring(m_units[i].m_func, pstring::UTF8))(val / m_units[i].m_mult); } } double nl_convert_base_t::get_sp_unit(const pstring &unit) { int i = 0; - while (m_units[i].m_unit != "-") + while (pstring(m_units[i].m_unit, pstring::UTF8) != "-") { - if (m_units[i].m_unit == unit) + if (pstring(m_units[i].m_unit, pstring::UTF8) == unit) return m_units[i].m_mult; i++; } @@ -242,7 +242,7 @@ nl_convert_base_t::unit_t nl_convert_base_t::m_units[] = { void nl_convert_spice_t::convert(const pstring &contents) { - plib::pstring_vector_t spnl(contents, "\n"); + std::vector<pstring> spnl(plib::psplit(contents, "\n")); // Add gnd net @@ -274,7 +274,7 @@ void nl_convert_spice_t::process_line(const pstring &line) { if (line != "") { - plib::pstring_vector_t tt(line, " ", true); + std::vector<pstring> tt(plib::psplit(line, " ", true)); double val = 0.0; switch (tt[0].code_at(0)) { @@ -313,7 +313,7 @@ void nl_convert_spice_t::process_line(const pstring &line) model = tt[5]; else model = tt[4]; - plib::pstring_vector_t m(model,"{"); + std::vector<pstring> m(plib::psplit(model,"{")); if (m.size() == 2) { if (m[1].len() != 4) @@ -401,19 +401,13 @@ void nl_convert_spice_t::process_line(const pstring &line) Eagle converter -------------------------------------------------*/ -nl_convert_eagle_t::tokenizer::tokenizer(nl_convert_eagle_t &convert, plib::pistream &strm) +nl_convert_eagle_t::tokenizer::tokenizer(nl_convert_eagle_t &convert, plib::putf8_reader &strm) : plib::ptokenizer(strm) , m_convert(convert) { set_identifier_chars("abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_.-"); set_number_chars(".0123456789", "0123456789eE-."); //FIXME: processing of numbers - char ws[5]; - ws[0] = ' '; - ws[1] = 9; - ws[2] = 10; - ws[3] = 13; - ws[4] = 0; - set_whitespace(ws); + set_whitespace(pstring("").cat(' ').cat(9).cat(10).cat(13)); /* FIXME: gnetlist doesn't print comments */ set_comment("/*", "*/", "//"); set_string_char('\''); @@ -435,7 +429,8 @@ void nl_convert_eagle_t::tokenizer::verror(const pstring &msg, int line_num, con void nl_convert_eagle_t::convert(const pstring &contents) { plib::pistringstream istrm(contents); - tokenizer tok(*this, istrm); + plib::putf8_reader reader(istrm); + tokenizer tok(*this, reader); out("NETLIST_START(dummy)\n"); add_term("GND", "GND"); @@ -543,19 +538,13 @@ void nl_convert_eagle_t::convert(const pstring &contents) RINF converter -------------------------------------------------*/ -nl_convert_rinf_t::tokenizer::tokenizer(nl_convert_rinf_t &convert, plib::pistream &strm) +nl_convert_rinf_t::tokenizer::tokenizer(nl_convert_rinf_t &convert, plib::putf8_reader &strm) : plib::ptokenizer(strm) , m_convert(convert) { set_identifier_chars(".abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_-"); set_number_chars("0123456789", "0123456789eE-."); //FIXME: processing of numbers - char ws[5]; - ws[0] = ' '; - ws[1] = 9; - ws[2] = 10; - ws[3] = 13; - ws[4] = 0; - set_whitespace(ws); + set_whitespace(pstring("").cat(' ').cat(9).cat(10).cat(13)); /* FIXME: gnetlist doesn't print comments */ set_comment("","","//"); // FIXME:needs to be confirmed set_string_char('"'); @@ -589,7 +578,8 @@ void nl_convert_rinf_t::tokenizer::verror(const pstring &msg, int line_num, cons void nl_convert_rinf_t::convert(const pstring &contents) { plib::pistringstream istrm(contents); - tokenizer tok(*this, istrm); + plib::putf8_reader reader(istrm); + tokenizer tok(*this, reader); auto lm = read_lib_map(s_lib_map); out("NETLIST_START(dummy)\n"); |