X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=516e1acd5ad6ff1e6b52a277f97c042e28e37872;hp=c18f809446a037475f4106e10576f3a89d5c1688;hb=6e2a5b1d677a26a637465cd4d304e2bc52e14f36;hpb=dc4ada2bfd5d9f4386661ffbf7ff3ad000b6bfb5 diff --git a/pv/session.cpp b/pv/session.cpp index c18f8094..516e1acd 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -43,11 +43,11 @@ #include "toolbars/mainbar.hpp" -#include "view/analogsignal.hpp" -#include "view/decodetrace.hpp" -#include "view/logicsignal.hpp" -#include "view/signal.hpp" -#include "view/view.hpp" +#include "views/trace/analogsignal.hpp" +#include "views/trace/decodetrace.hpp" +#include "views/trace/logicsignal.hpp" +#include "views/trace/signal.hpp" +#include "views/trace/view.hpp" #include @@ -434,26 +434,76 @@ void Session::set_default_device() set_device((iter == devices.end()) ? devices.front() : *iter); } +/** + * Convert generic options to data types that are specific to InputFormat. + * + * @param[in] user_spec vector of tokenized words, string format + * @param[in] fmt_opts input format's options, result of InputFormat::options() + * + * @return map of options suitable for InputFormat::create_input() + */ +map +Session::input_format_options(vector user_spec, + map> fmt_opts) +{ + map result; + + for (auto entry : user_spec) { + /* + * Split key=value specs. Accept entries without separator + * (for simplified boolean specifications). + */ + string key, val; + size_t pos = entry.find("="); + if (pos == std::string::npos) { + key = entry; + val = ""; + } else { + key = entry.substr(0, pos); + val = entry.substr(pos + 1); + } + + /* + * Skip user specifications that are not a member of the + * format's set of supported options. Have the text input + * spec converted to the required input format specific + * data type. + */ + auto found = fmt_opts.find(key); + if (found == fmt_opts.end()) + continue; + shared_ptr