diff options
Diffstat (limited to 'src/lib/netlist/plib/poptions.cpp')
-rw-r--r-- | src/lib/netlist/plib/poptions.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/lib/netlist/plib/poptions.cpp b/src/lib/netlist/plib/poptions.cpp index a14d4ae93e7..775ee6d8810 100644 --- a/src/lib/netlist/plib/poptions.cpp +++ b/src/lib/netlist/plib/poptions.cpp @@ -39,13 +39,13 @@ namespace plib { { } - int option_str::parse(pstring argument) + int option_str::parse(const pstring &argument) { m_val = argument; return 0; } - int option_str_limit::parse(pstring argument) + int option_str_limit::parse(const pstring &argument) { if (plib::container::contains(m_limit, argument)) { @@ -56,20 +56,27 @@ namespace plib { return 1; } - int option_bool::parse(ATTR_UNUSED pstring argument) + int option_bool::parse(const pstring &argument) { m_val = true; return 0; } - int option_double::parse(pstring argument) + int option_double::parse(const pstring &argument) { bool err = false; m_val = argument.as_double(&err); return (err ? 1 : 0); } - int option_vec::parse(pstring argument) + int option_long::parse(const pstring &argument) + { + bool err = false; + m_val = argument.as_long(&err); + return (err ? 1 : 0); + } + + int option_vec::parse(const pstring &argument) { bool err = false; m_val.push_back(argument); @@ -102,18 +109,18 @@ namespace plib { int options::parse(int argc, char *argv[]) { - m_app = argv[0]; + m_app = pstring(argv[0], pstring::UTF8); for (int i=1; i<argc; ) { - pstring arg(argv[i]); + pstring arg(argv[i], pstring::UTF8); option *opt = nullptr; pstring opt_arg; bool has_equal_arg = false; if (arg.startsWith("--")) { - auto v = pstring_vector_t(arg.substr(2),"="); + auto v = psplit(arg.substr(2),"="); opt = getopt_long(v[0]); has_equal_arg = (v.size() > 1); if (has_equal_arg) @@ -148,7 +155,7 @@ namespace plib { else { i++; // FIXME: are there more arguments? - if (opt->parse(argv[i]) != 0) + if (opt->parse(pstring(argv[i], pstring::UTF8)) != 0) return i - 1; } } @@ -166,13 +173,13 @@ namespace plib { pstring options::split_paragraphs(pstring text, unsigned width, unsigned indent, unsigned firstline_indent) { - auto paragraphs = pstring_vector_t(text,"\n"); + auto paragraphs = psplit(text,"\n"); pstring ret(""); for (auto &p : paragraphs) { pstring line = pstring("").rpad(" ", firstline_indent); - for (auto &s : pstring_vector_t(p, " ")) + for (auto &s : psplit(p, " ")) { if (line.len() + s.len() > width) { |