summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/poptions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/poptions.cpp')
-rw-r--r--src/lib/netlist/plib/poptions.cpp29
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)
{