Mercurial > foo_out_sdl
diff foosdk/sdk/libPPUI/commandline_parser.cpp @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/foosdk/sdk/libPPUI/commandline_parser.cpp Mon Jan 05 02:15:46 2026 -0500 @@ -0,0 +1,65 @@ +#include "stdafx.h" +#include "commandline_parser.h" + +commandline_parser::commandline_parser() { + init(pfc::stringcvt::string_utf8_from_os(GetCommandLine())); +} + +void commandline_parser::init(const char * cmd) +{ + pfc::string8_fastalloc temp; + pfc::chain_list_v2_t<pfc::string8> out; + while(*cmd) + { + temp.reset(); + while(*cmd && *cmd!=' ') + { + if (*cmd=='\"') + { + cmd++; + while(*cmd && *cmd!='\"') temp.add_byte(*(cmd++)); + if (*cmd == '\"') cmd++; + } + else temp.add_byte(*(cmd++)); + } + out.insert_last(temp); + while(*cmd==' ') cmd++; + } + pfc::list_to_array(m_data,out); +} + +size_t commandline_parser::find_param(const char * ptr) const { + for(size_t n=1;n<m_data.get_size();n++) + { + const char * cmd = m_data[n]; + if (cmd[0]=='/') { + if (!strcmp(cmd+1,ptr)) return n; + } + } + return SIZE_MAX; +} +bool commandline_parser::check_param(const char * ptr) const +{ + return find_param(ptr) != SIZE_MAX; +} + +void commandline_parser::build_string(pfc::string_base & out) +{ + out.reset(); + unsigned n; + for(n=0;n<m_data.get_size();n++) + { + const char * cmd = m_data[n]; + if (!out.is_empty()) out += " "; + if (strchr(cmd,' ')) + { + out += "\""; + out += cmd; + out += "\""; + } + else + { + out += cmd; + } + } +}
