X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Finclude%2Flibsigrokcxx%2Flibsigrokcxx.hpp;h=ad59f5b9787a3e986b283e73544045faa47ecbbf;hb=f05903ebe387fde85a9d623225268346cc25fd60;hp=cf86bfc3170fd3daf05593e0eb558b520f3efd11;hpb=f2831ab35b4988930535dfd135884873b1b5b00d;p=libsigrok.git diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index cf86bfc3..ad59f5b9 100644 --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp @@ -71,7 +71,12 @@ raised, which provides access to the error code and description. #define LIBSIGROKCXX_HPP #include + +/* Suppress warnings due to glibmm's use of std::auto_ptr<> in a public + * header file. To be removed once glibmm is fixed. */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS #include +G_GNUC_END_IGNORE_DEPRECATIONS #include #include @@ -93,6 +98,7 @@ class SR_API HardwareDevice; class SR_API Channel; class SR_API Session; class SR_API ConfigKey; +class SR_API Capability; class SR_API InputFormat; class SR_API OutputFormat; class SR_API OutputFlag; @@ -226,7 +232,7 @@ private: const char *name, void *cb_data) noexcept; static SR_PRIV int close_callback(struct sr_resource *res, void *cb_data) noexcept; - static SR_PRIV ssize_t read_callback(const struct sr_resource *res, + static SR_PRIV gssize read_callback(const struct sr_resource *res, void *buf, size_t count, void *cb_data) noexcept; friend class Context; }; @@ -302,19 +308,15 @@ private: ~Context(); friend class Session; friend class Driver; - friend class std::default_delete; -}; - -enum Capability { - GET = SR_CONF_GET, - SET = SR_CONF_SET, - LIST = SR_CONF_LIST + friend struct std::default_delete; }; /** An object that can be configured. */ class SR_API Configurable { public: + /** Supported configuration keys. */ + set config_keys() const; /** Read configuration for the given key. * @param key ConfigKey to read. */ Glib::VariantBase config_get(const ConfigKey *key) const; @@ -325,10 +327,13 @@ public: /** Enumerate available values for the given configuration key. * @param key ConfigKey to enumerate values for. */ Glib::VariantContainerBase config_list(const ConfigKey *key) const; - /** Enumerate available keys, according to a given index key. */ - map > config_keys(const ConfigKey *key); - /** Check for a key in the list from a given index key. */ - bool config_check(const ConfigKey *key, const ConfigKey *index_key) const; + /** Enumerate configuration capabilities for the given configuration key. + * @param key ConfigKey to enumerate capabilities for. */ + set config_capabilities(const ConfigKey *key) const; + /** Check whether a configuration capability is supported for a given key. + * @param key ConfigKey to check. + * @param capability Capability to check for. */ + bool config_check(const ConfigKey *key, const Capability *capability) const; protected: Configurable( struct sr_dev_driver *driver, @@ -341,15 +346,15 @@ protected: }; /** A hardware driver provided by the library */ -class SR_API Driver : - public ParentOwned, - public Configurable +class SR_API Driver : public ParentOwned, public Configurable { public: /** Name of this driver. */ string name() const; /** Long name for this driver. */ string long_name() const; + /** Scan options supported by this driver. */ + set scan_options() const; /** Scan for devices and return a list of devices found. * @param options Mapping of (ConfigKey, value) pairs. */ vector > scan(map @@ -363,7 +368,7 @@ private: friend class Context; friend class HardwareDevice; friend class ChannelGroup; - friend class std::default_delete; + friend struct std::default_delete; }; /** A generic device, either hardware or virtual */ @@ -404,7 +409,7 @@ private: friend class ChannelGroup; friend class Output; friend class Analog; - friend class std::default_delete; + friend struct std::default_delete; }; /** A real hardware device, connected via a driver */ @@ -423,7 +428,7 @@ private: friend class Driver; friend class ChannelGroup; - friend class std::default_delete; + friend struct std::default_delete; }; /** A virtual device, created by the user */ @@ -440,7 +445,7 @@ private: shared_ptr get_shared_from_this(); friend class Context; - friend class std::default_delete; + friend struct std::default_delete; }; /** A channel on a device */ @@ -473,7 +478,7 @@ private: friend class Session; friend class TriggerStage; friend class Context; - friend class std::default_delete; + friend struct std::default_delete; }; /** A group of channels on a device, which share some configuration */ @@ -491,7 +496,7 @@ private: ~ChannelGroup(); vector _channels; friend class Device; - friend class std::default_delete; + friend struct std::default_delete; }; /** A trigger configuration */ @@ -512,7 +517,7 @@ private: vector > _stages; friend class Context; friend class Session; - friend class std::default_delete; + friend struct std::default_delete; }; /** A stage in a trigger configuration */ @@ -539,7 +544,7 @@ private: explicit TriggerStage(struct sr_trigger_stage *structure); ~TriggerStage(); friend class Trigger; - friend class std::default_delete; + friend struct std::default_delete; }; /** A match condition in a trigger configuration */ @@ -559,7 +564,7 @@ private: struct sr_trigger_match *_structure; shared_ptr _channel; friend class TriggerStage; - friend class std::default_delete; + friend struct std::default_delete; }; /** Type of session stopped callback */ @@ -594,7 +599,7 @@ private: shared_ptr get_shared_from_this(); friend class Session; - friend class std::default_delete; + friend struct std::default_delete; }; /** A sigrok session */ @@ -649,7 +654,7 @@ private: friend class Context; friend class DatafeedCallbackData; friend class SessionDevice; - friend class std::default_delete; + friend struct std::default_delete; }; /** A packet on the session datafeed */ @@ -676,7 +681,7 @@ private: friend class Logic; friend class Analog; friend class Context; - friend class std::default_delete; + friend struct std::default_delete; }; /** Abstract base class for datafeed packet payloads */ @@ -690,7 +695,7 @@ private: friend class Packet; friend class Output; - friend class std::default_delete; + friend struct std::default_delete; }; /** Payload of a datafeed header packet */ @@ -808,7 +813,7 @@ private: friend class Context; friend class InputDevice; - friend class std::default_delete; + friend struct std::default_delete; }; /** An input instance (an input format applied to a file or stream) */ @@ -823,6 +828,7 @@ public: void send(void *data, size_t length); /** Signal end of input data. */ void end(); + void reset(); private: Input(shared_ptr context, const struct sr_input *structure); ~Input(); @@ -832,7 +838,7 @@ private: friend class Context; friend class InputFormat; - friend class std::default_delete; + friend struct std::default_delete; }; /** A virtual device associated with an input */ @@ -846,7 +852,7 @@ private: shared_ptr get_shared_from_this(); shared_ptr _input; friend class Input; - friend class std::default_delete; + friend struct std::default_delete; }; /** An option used by an output format */ @@ -872,7 +878,7 @@ private: friend class InputFormat; friend class OutputFormat; - friend class std::default_delete