X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Finclude%2Flibsigrokcxx%2Flibsigrokcxx.hpp;h=d8cf3bdc3f62b449e18bf58ad25968ea8f096ffa;hb=014512254abcc74d203376f2e038053b94cf1116;hp=5e101fc8209b1ccef9b02b48960d7d312aa1cc1e;hpb=f17b45465500f1d1aad58479802018949004cce5;p=libsigrok.git diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index 5e101fc8..d8cf3bdc 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 @@ -203,13 +208,6 @@ protected: throw Error(SR_ERR_BUG); return shared; } - - /* Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(Class *object) { delete object; } - }; }; /** Type of log callback */ @@ -276,15 +274,15 @@ public: shared_ptr create_header_packet(Glib::TimeVal start_time); /** Create a meta packet. */ shared_ptr create_meta_packet( - const map &config); + map config); /** Create a logic packet. */ shared_ptr create_logic_packet( void *data_pointer, size_t data_length, unsigned int unit_size); /** Create an analog packet. */ shared_ptr create_analog_packet( - const vector > &channels, + vector > channels, float *data_pointer, unsigned int num_samples, const Quantity *mq, - const Unit *unit, const vector &mqflags); + const Unit *unit, vector mqflags); /** Load a saved session. * @param filename File name string. */ shared_ptr load_session(string filename); @@ -307,9 +305,9 @@ private: LogCallbackFunction _log_callback; Context(); ~Context(); - friend class Deleter; friend class Session; friend class Driver; + friend struct std::default_delete; }; enum Capability { @@ -333,7 +331,7 @@ public: * @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); + 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; protected: @@ -359,8 +357,8 @@ public: string long_name() const; /** Scan for devices and return a list of devices found. * @param options Mapping of (ConfigKey, value) pairs. */ - vector > scan( - const map &options = {}); + vector > scan(map + options = map()); private: struct sr_dev_driver *_structure; bool _initialized; @@ -370,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 */ @@ -405,18 +403,13 @@ protected: map > _channels; private: map > _channel_groups; - /** Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(Device *device) { delete device; } - }; - friend class Deleter; + friend class Session; friend class Channel; friend class ChannelGroup; friend class Output; friend class Analog; + friend struct std::default_delete; }; /** A real hardware device, connected via a driver */ @@ -432,15 +425,10 @@ private: ~HardwareDevice(); shared_ptr get_shared_from_this(); shared_ptr _driver; - /** Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(HardwareDevice *device) { delete device; } - }; - friend class Deleter; + friend class Driver; friend class ChannelGroup; + friend struct std::default_delete; }; /** A virtual device, created by the user */ @@ -455,14 +443,9 @@ private: UserDevice(string vendor, string model, string version); ~UserDevice(); shared_ptr get_shared_from_this(); - /** Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(UserDevice *device) { delete device; } - }; + friend class Context; - friend class Deleter; + friend struct std::default_delete; }; /** A channel on a device */ @@ -495,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 */ @@ -513,7 +496,7 @@ private: ~ChannelGroup(); vector _channels; friend class Device; - friend class std::default_delete; + friend struct std::default_delete; }; /** A trigger configuration */ @@ -532,9 +515,9 @@ private: struct sr_trigger *_structure; shared_ptr _context; vector > _stages; - friend class Deleter; friend class Context; friend class Session; + friend struct std::default_delete; }; /** A stage in a trigger configuration */ @@ -561,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 */ @@ -581,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 */ @@ -614,15 +597,9 @@ private: explicit SessionDevice(struct sr_dev_inst *sdi); ~SessionDevice(); shared_ptr get_shared_from_this(); - /** Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(SessionDevice *device) { delete device; } - }; - friend class Deleter; + friend class Session; - friend class std::default_delete; + friend struct std::default_delete; }; /** A sigrok session */ @@ -673,10 +650,11 @@ private: SessionStoppedCallback _stopped_callback; string _filename; shared_ptr _trigger; - friend class Deleter; + friend class Context; friend class DatafeedCallbackData; friend class SessionDevice; + friend struct std::default_delete; }; /** A packet on the session datafeed */ @@ -694,7 +672,7 @@ private: const struct sr_datafeed_packet *_structure; shared_ptr _device; unique_ptr _payload; - friend class Deleter; + friend class Session; friend class Output; friend class DatafeedCallbackData; @@ -703,6 +681,7 @@ private: friend class Logic; friend class Analog; friend class Context; + friend struct std::default_delete; }; /** Abstract base class for datafeed packet payloads */ @@ -714,16 +693,9 @@ protected: private: virtual shared_ptr share_owned_by(shared_ptr parent) = 0; - /** Deleter needed to allow shared_ptr use with protected destructor. */ - class Deleter - { - public: - void operator()(PacketPayload *payload) { delete payload; } - }; - friend class Deleter; friend class Packet; friend class Output; - friend class std::default_delete; + friend struct std::default_delete; }; /** Payload of a datafeed header packet */ @@ -831,7 +803,8 @@ public: map > options(); /** Create an input using this input format. * @param options Mapping of (option name, value) pairs. */ - shared_ptr create_input(const map &options = {}); + shared_ptr create_input(map + options = map()); private: explicit InputFormat(const struct sr_input_module *structure); ~InputFormat(); @@ -840,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) */ @@ -861,9 +834,10 @@ private: const struct sr_input *_structure; shared_ptr _context; unique_ptr _device; - friend class Deleter; + friend class Context; friend class InputFormat; + friend struct std::default_delete; }; /** A virtual device associated with an input */ @@ -877,7 +851,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 */ @@ -900,9 +874,10 @@ private: ~Option(); const struct sr_option *_structure; shared_ptr _structure_array; - friend class Deleter; + friend class InputFormat; friend class OutputFormat; + friend struct std::default_delete