]> sigrok.org Git - libsigrok.git/commitdiff
output: Added preferred file extension field
authorJoel Holdsworth <redacted>
Wed, 21 Jan 2015 06:02:14 +0000 (01:02 -0500)
committerUwe Hermann <redacted>
Tue, 27 Jan 2015 17:05:29 +0000 (18:05 +0100)
This fixes parts of bug #541.

17 files changed:
bindings/cxx/classes.cpp
bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
include/libsigrok/proto.h
src/libsigrok-internal.h
src/output/analog.c
src/output/ascii.c
src/output/binary.c
src/output/bits.c
src/output/chronovu_la8.c
src/output/csv.c
src/output/gnuplot.c
src/output/hex.c
src/output/ols.c
src/output/output.c
src/output/srzip.c
src/output/vcd.c
src/output/wav.c

index c915c8a7479920a23069a8c45dfe02983a766456..a5c9e4cdfa689a011c8ef1e445391d4b1b9b11b6 100644 (file)
@@ -1534,6 +1534,15 @@ string OutputFormat::description()
        return valid_string(sr_output_description_get(_structure));
 }
 
+vector<string> OutputFormat::extensions()
+{
+       vector<string> exts;
+       for (const char *const *e = sr_output_extensions_get(_structure);
+               e && *e; e++)
+               exts.push_back(*e);
+       return exts;
+}
+
 map<string, shared_ptr<Option>> OutputFormat::options()
 {
        const struct sr_option **options = sr_output_options_get(_structure);
index 0542a1be8e15132733e45a0bf77c040a93434efd..324cd01e33896b0c91ed6883f0f1d2609cf42f94 100644 (file)
@@ -948,6 +948,9 @@ public:
        string name();
        /** Description of this output format. */
        string description();
+       /** A list of preferred file name extensions for this file format.
+         * @note This list is a recommendation only. */
+       vector<string> extensions();
        /** Options supported by this output format. */
        map<string, shared_ptr<Option> > options();
        /** Create an output using this format.
index 9b540c1ff32158653879ce83351df64ab727e82f..70bb5978d7237f4a6b62103fdbe871c4d70b403c 100644 (file)
@@ -170,6 +170,8 @@ SR_API const struct sr_output_module **sr_output_list(void);
 SR_API const char *sr_output_id_get(const struct sr_output_module *o);
 SR_API const char *sr_output_name_get(const struct sr_output_module *o);
 SR_API const char *sr_output_description_get(const struct sr_output_module *o);
+SR_API const char *const *sr_output_extensions_get(
+               const struct sr_output_module *o);
 SR_API const struct sr_output_module *sr_output_find(char *id);
 SR_API const struct sr_option **sr_output_options_get(const struct sr_output_module *o);
 SR_API void sr_output_options_free(const struct sr_option **opts);
index debd27719a69a45da99b198a43639d9c64b7c25e..71f65616de52baf7b4705016d0a2aa7d990dea89 100644 (file)
@@ -371,6 +371,13 @@ struct sr_output_module {
         */
        char *desc;
 
+       /**
+        * A NULL terminated array of strings containing a list of file name
+        * extensions typical for the input file format, or NULL if there is
+        * no typical extension for this file format.
+        */
+       const char *const *exts;
+
        /**
         * Returns a NULL-terminated list of options this module can take.
         * Can be NULL, if the module has no options.
index e99c3c00c22794633d34c006abb477b86b5cf20f..3b9a581202213414d5413932c4fee8a6a940255f 100644 (file)
@@ -344,6 +344,7 @@ SR_PRIV struct sr_output_module output_analog = {
        .id = "analog",
        .name = "Analog",
        .desc = "Analog data and types",
+       .exts = NULL,
        .options = get_options,
        .init = init,
        .receive = receive,
index b6baab1b611308df45f2b80f009d25ba1222a430..c6b4290fa6b12c68f60e7ee2f7be087d3919c531 100644 (file)
@@ -252,6 +252,7 @@ SR_PRIV struct sr_output_module output_ascii = {
        .id = "ascii",
        .name = "ASCII",
        .desc = "ASCII art",
+       .exts = (const char*[]){"txt", NULL},
        .options = get_options,
        .init = init,
        .receive = receive,
index 10f0409feeb807bc9d3a50e93b6f48c2691935b5..04627f32287c13e46adc09fcf88d96ef6344d64c 100644 (file)
@@ -46,6 +46,7 @@ SR_PRIV struct sr_output_module output_binary = {
        .id = "binary",
        .name = "Binary",
        .desc = "Raw binary",
+       .exts = NULL,
        .options = NULL,
        .receive = receive,
 };
index 0a9ccc1a41d6f241fa003f9ea6ed5d07b198ac0a..180ea563d59137b1b5aedaebf0ff6ae1efc70b97 100644 (file)
@@ -238,6 +238,7 @@ SR_PRIV struct sr_output_module output_bits = {
        .id = "bits",
        .name = "Bits",
        .desc = "0/1 digits",
+       .exts = (const char*[]){"txt", NULL},
        .options = get_options,
        .init = init,
        .receive = receive,
index c501238471695a6e61c16f3357210a4c8a693fe1..1c0953f71745f98463648e4da7774db2fbd82d93 100644 (file)
@@ -187,6 +187,7 @@ SR_PRIV struct sr_output_module output_chronovu_la8 = {
        .id = "chronovu-la8",
        .name = "ChronoVu LA8",
        .desc = "ChronoVu LA8 native file format",
+       .exts = (const char*[]){"kdt", NULL},
        .options = NULL,
        .init = init,
        .receive = receive,
index 86df2613565af110e9391aa7dc2526b50d8850da..77b62285b2ff31c2d4b884ec43c4435c504c0ea8 100644 (file)
@@ -217,6 +217,7 @@ SR_PRIV struct sr_output_module output_csv = {
        .id = "csv",
        .name = "CSV",
        .desc = "Comma-separated values",
+       .exts = (const char*[]){"csv", NULL},
        .options = NULL,
        .init = init,
        .receive = receive,
index 8cd67b3e83b82c2d2d3356f49a61be66150487d9..134fd9042df970c41220a7d28cc8d4061637fc0e 100644 (file)
@@ -221,6 +221,7 @@ SR_PRIV struct sr_output_module output_gnuplot = {
        .id = "gnuplot",
        .name = "Gnuplot",
        .desc = "Gnuplot file format",
+       .exts = (const char*[]){"pl", NULL},
        .options = NULL,
        .init = init,
        .receive = receive,
index 67a349e5f801ba083730791cb2e648baa362e709..6b24fdf578aceb10083db93204e32d89929684a5 100644 (file)
@@ -252,6 +252,7 @@ SR_PRIV struct sr_output_module output_hex = {
        .id = "hex",
        .name = "Hexadecimal",
        .desc = "Hexadecimal digits",
+       .exts = (const char*[]){"txt", NULL},
        .options = get_options,
        .init = init,
        .receive = receive,
index 7feb4db96cad4c6f5ffcb8c2ef78a8a9575013b4..bf1aacbd2771f76876e1e894f4374f636b3788b1 100644 (file)
@@ -150,6 +150,7 @@ SR_PRIV struct sr_output_module output_ols = {
        .id = "ols",
        .name = "OLS",
        .desc = "OpenBench Logic Sniffer",
+       .exts = (const char*[]){"ols", NULL},
        .options = NULL,
        .init = init,
        .receive = receive,
index 1ddbd61ef683fb6d21f111d3393d78f6f1802324..7eaa489ee8561142f97fabc3aa964526ab47cf8c 100644 (file)
@@ -135,6 +135,25 @@ SR_API const char *sr_output_description_get(const struct sr_output_module *o)
        return o->desc;
 }
 
+/**
+ * Returns the specified output module's file extensions typical for the file
+ * format, as a NULL terminated array, or returns a NULL pointer if there is
+ * no preferred extension.
+ * @note these are a suggestions only.
+ *
+ * @since 0.4.0
+ */
+SR_API const char *const *sr_output_extensions_get(
+               const struct sr_output_module *o)
+{
+       if (!o) {
+               sr_err("Invalid output module NULL!");
+               return NULL;
+       }
+
+       return o->exts;
+}
+
 /**
  * Return the output module with the specified ID, or NULL if no module
  * with that id is found.
index 18a79d5b50b15403319af4c916340c819113ee84..356a8ab4047269ea73b128b62287deb2cce0cd1b 100644 (file)
@@ -312,6 +312,7 @@ SR_PRIV struct sr_output_module output_srzip = {
        .id = "srzip",
        .name = "srzip",
        .desc = "srzip session file",
+       .exts = (const char*[]){"sr", NULL},
        .options = get_options,
        .init = init,
        .receive = receive,
index f1b45f1adf4901f73e62f49e3457875a3912830f..9d3516b74b30d8d22e9274f7251c1f9525a61af4 100644 (file)
@@ -263,6 +263,7 @@ struct sr_output_module output_vcd = {
        .id = "vcd",
        .name = "VCD",
        .desc = "Value Change Dump",
+       .exts = (const char*[]){"vcd", NULL},
        .options = NULL,
        .init = init,
        .receive = receive,
index e01f3afdea53bb9fc4dfdc7d3d71a934eea76268..6ffe905a979e5e3e9204342c2db2dfe1cfbd4cb1 100644 (file)
@@ -351,6 +351,7 @@ SR_PRIV struct sr_output_module output_wav = {
        .id = "wav",
        .name = "WAV",
        .desc = "WAVE file format",
+       .exts = (const char*[]){"wav", NULL},
        .options = get_options,
        .init = init,
        .receive = receive,