bindings: wrap sr_input_scan_file() in the C++ language binding
Allow C++ applications to have the input format automatically detected, and get a corresponding InputFormat instance. This makes the format match logic available to PulseView.
This commit is contained in:
parent
c83bdde9da
commit
092843eb42
|
@ -177,6 +177,32 @@ map<string, shared_ptr<InputFormat>> Context::input_formats()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shared_ptr<InputFormat> Context::input_format_match(string filename)
|
||||||
|
{
|
||||||
|
const struct sr_input *input;
|
||||||
|
const struct sr_input_module *imod;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Have the input module looked up for the specified file.
|
||||||
|
* Failed lookup (or "successful lookup" with an empty result)
|
||||||
|
* are non-fatal. Free the sr_input that was created by the
|
||||||
|
* lookup routine, but grab the input module kind and return an
|
||||||
|
* InputFormat instance to the application. This works because
|
||||||
|
* the application passes a filename, no input data got buffered
|
||||||
|
* in the sr_input that we release.
|
||||||
|
*/
|
||||||
|
input = NULL;
|
||||||
|
rc = sr_input_scan_file(filename.c_str(), &input);
|
||||||
|
if (rc != SR_OK)
|
||||||
|
return nullptr;
|
||||||
|
if (!input)
|
||||||
|
return nullptr;
|
||||||
|
imod = sr_input_module_get(input);
|
||||||
|
sr_input_free(input);
|
||||||
|
return shared_ptr<InputFormat>{new InputFormat{imod}, default_delete<InputFormat>{}};
|
||||||
|
}
|
||||||
|
|
||||||
map<string, shared_ptr<OutputFormat>> Context::output_formats()
|
map<string, shared_ptr<OutputFormat>> Context::output_formats()
|
||||||
{
|
{
|
||||||
map<string, shared_ptr<OutputFormat>> result;
|
map<string, shared_ptr<OutputFormat>> result;
|
||||||
|
|
|
@ -252,6 +252,8 @@ public:
|
||||||
map<string, shared_ptr<Driver> > drivers();
|
map<string, shared_ptr<Driver> > drivers();
|
||||||
/** Available input formats, indexed by name. */
|
/** Available input formats, indexed by name. */
|
||||||
map<string, shared_ptr<InputFormat> > input_formats();
|
map<string, shared_ptr<InputFormat> > input_formats();
|
||||||
|
/** Lookup the responsible input module for an input file. */
|
||||||
|
shared_ptr<InputFormat> input_format_match(string filename);
|
||||||
/** Available output formats, indexed by name. */
|
/** Available output formats, indexed by name. */
|
||||||
map<string, shared_ptr<OutputFormat> > output_formats();
|
map<string, shared_ptr<OutputFormat> > output_formats();
|
||||||
/** Current log level. */
|
/** Current log level. */
|
||||||
|
|
Loading…
Reference in New Issue