]> sigrok.org Git - libsigrokdecode.git/blobdiff - sigrokdecode.h.in
code cleanup
[libsigrokdecode.git] / sigrokdecode.h.in
index b158e37079778f47ff5d85943a44412f3b43259e..a7221faa7bdb3071ff0f63e779ec39eb94fd91a4 100644 (file)
 extern "C" {
 #endif
 
+/**
+ * @file
+ *
+ * The public libsigrokdecode header file to be used by frontends.
+ *
+ * This is the only file that libsigrokdecode users (frontends) are supposed
+ * to use and include. There are other header files which get installed with
+ * libsigrokdecode, but those are not meant to be used directly by frontends.
+ *
+ * The correct way to get/use the libsigrokdecode API functions is:
+ *
+ * @code{.c}
+ *   #include <sigrokdecode.h>
+ * @endcode
+ */
+
 /*
  * Package version macros (can be used for conditional compilation).
  */
@@ -99,20 +115,31 @@ extern "C" {
  * Use SRD_API to mark public API symbols, and SRD_PRIV for private symbols.
  *
  * Variables and functions marked 'static' are private already and don't
- * need SR_PRIV. However, functions which are not static (because they need
+ * need SRD_PRIV. However, functions which are not static (because they need
  * to be used in other libsigrokdecode-internal files) but are also not
  * meant to be part of the public libsigrokdecode API, must use SRD_PRIV.
  *
  * This uses the 'visibility' feature of gcc (requires gcc >= 4.0).
  *
+ * This feature is not available on MinGW/Windows, as it is a feature of
+ * ELF files and MinGW/Windows uses PE files.
+ *
  * Details: http://gcc.gnu.org/wiki/Visibility
  */
 
 /* Marks public libsigrokdecode API symbols. */
+#ifndef _WIN32
 #define SRD_API __attribute__((visibility("default")))
+#else
+#define SRD_API
+#endif
 
 /* Marks private, non-public libsigrokdecode symbols (not part of the API). */
+#ifndef _WIN32
 #define SRD_PRIV __attribute__((visibility("hidden")))
+#else
+#define SRD_PRIV
+#endif
 
 /*
  * When adding an output type, don't forget to...
@@ -128,7 +155,6 @@ enum {
 
 #define SRD_MAX_NUM_PROBES 64
 
-/* TODO: Documentation. */
 struct srd_decoder {
        /** The decoder ID. Must be non-NULL and unique for all decoders. */
        char *id;
@@ -240,24 +266,23 @@ typedef struct {
 SRD_API int srd_init(const char *path);
 SRD_API int srd_exit(void);
 SRD_API int srd_inst_option_set(struct srd_decoder_inst *di,
-                               GHashTable *options);
+               GHashTable *options);
 SRD_API int srd_inst_probe_set_all(struct srd_decoder_inst *di,
-                                  GHashTable *probes);
+               GHashTable *probes);
 SRD_API struct srd_decoder_inst *srd_inst_new(const char *id,
-                                             GHashTable *options);
+               GHashTable *options);
 SRD_API int srd_inst_stack(struct srd_decoder_inst *di_from,
-                          struct srd_decoder_inst *di_to);
+               struct srd_decoder_inst *di_to);
 SRD_API struct srd_decoder_inst *srd_inst_find_by_id(const char *inst_id);
-SRD_API int srd_session_start(int num_probes, int unitsize,
-                             uint64_t samplerate);
+SRD_API int srd_session_start(int num_probes, int unitsize, uint64_t samplerate);
 SRD_API int srd_session_send(uint64_t start_samplenum, const uint8_t *inbuf,
-                            uint64_t inbuflen);
+               uint64_t inbuflen);
 SRD_API int srd_pd_output_callback_add(int output_type,
-                               srd_pd_output_callback_t cb, void *cb_data);
+               srd_pd_output_callback_t cb, void *cb_data);
 
 /*--- decoder.c -------------------------------------------------------------*/
 
-SRD_API GSList *srd_decoder_list(void);
+SRD_API const GSList *srd_decoder_list(void);
 SRD_API struct srd_decoder *srd_decoder_get_by_id(const char *id);
 SRD_API int srd_decoder_load(const char *name);
 SRD_API int srd_decoder_unload(struct srd_decoder *dec);