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;
|
||||
}
|
||||
|
||||
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>> result;
|
||||
|
|
|
@ -252,6 +252,8 @@ public:
|
|||
map<string, shared_ptr<Driver> > drivers();
|
||||
/** Available input formats, indexed by name. */
|
||||
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. */
|
||||
map<string, shared_ptr<OutputFormat> > output_formats();
|
||||
/** Current log level. */
|
||||
|
|
Loading…
Reference in New Issue