]> sigrok.org Git - libsigrok.git/commitdiff
C++: Make value get accessors const
authorDaniel Elstner <redacted>
Sun, 11 Oct 2015 11:57:42 +0000 (13:57 +0200)
committerDaniel Elstner <redacted>
Mon, 26 Oct 2015 05:45:56 +0000 (06:45 +0100)
Declare accessor methods that return value members const. For now,
skip all cases where constness would have to be applied transitively
to shared objects.

bindings/cxx/classes.cpp
bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp

index f165128754ec0357b2ce1788caf58238bd0cd142..960ac39bc0524a5f0ae7f59604f1fa24eeefcee6 100644 (file)
@@ -199,7 +199,7 @@ Context::~Context()
        check(sr_exit(_structure));
 }
 
-const LogLevel *Context::log_level()
+const LogLevel *Context::log_level() const
 {
        return LogLevel::get(sr_log_loglevel_get());
 }
@@ -368,7 +368,7 @@ shared_ptr<Input> Context::open_stream(string header)
                new Input(shared_from_this(), input), Input::Deleter());
 }
 
-map<string, string> Context::serials(shared_ptr<Driver> driver)
+map<string, string> Context::serials(shared_ptr<Driver> driver) const
 {
        GSList *serial_list = sr_serial_list(driver ? driver->_structure : nullptr);
        map<string, string> serials;
@@ -394,12 +394,12 @@ Driver::~Driver()
 {
 }
 
-string Driver::name()
+string Driver::name() const
 {
        return valid_string(_structure->name);
 }
 
-string Driver::long_name()
+string Driver::long_name() const
 {
        return valid_string(_structure->longname);
 }
@@ -463,7 +463,7 @@ Configurable::~Configurable()
 {
 }
 
-Glib::VariantBase Configurable::config_get(const ConfigKey *key)
+Glib::VariantBase Configurable::config_get(const ConfigKey *key) const
 {
        GVariant *data;
        check(sr_config_get(
@@ -479,7 +479,7 @@ void Configurable::config_set(const ConfigKey *key, const Glib::VariantBase &val
                key->id(), const_cast<GVariant*>(value.gobj())));
 }
 
-Glib::VariantContainerBase Configurable::config_list(const ConfigKey *key)
+Glib::VariantContainerBase Configurable::config_list(const ConfigKey *key) const
 {
        GVariant *data;
        check(sr_config_list(
@@ -521,7 +521,7 @@ map<const ConfigKey *, set<Capability>> Configurable::config_keys(const ConfigKe
 }
 
 bool Configurable::config_check(const ConfigKey *key,
-       const ConfigKey *index_key)
+       const ConfigKey *index_key) const
 {
        GVariant *gvar_opts;
        gsize num_opts;
@@ -573,27 +573,27 @@ Device::~Device()
                delete entry.second;
 }
 
-string Device::vendor()
+string Device::vendor() const
 {
        return valid_string(sr_dev_inst_vendor_get(_structure));
 }
 
-string Device::model()
+string Device::model() const
 {
        return valid_string(sr_dev_inst_model_get(_structure));
 }
 
-string Device::version()
+string Device::version() const
 {
        return valid_string(sr_dev_inst_version_get(_structure));
 }
 
-string Device::serial_number()
+string Device::serial_number() const
 {
        return valid_string(sr_dev_inst_sernum_get(_structure));
 }
 
-string Device::connection_id()
+string Device::connection_id() const
 {
        return valid_string(sr_dev_inst_connid_get(_structure));
 }
@@ -695,7 +695,7 @@ Channel::~Channel()
 {
 }
 
-string Channel::name()
+string Channel::name() const
 {
        return valid_string(_structure->name);
 }
@@ -705,12 +705,12 @@ void Channel::set_name(string name)
        check(sr_dev_channel_name_set(_structure, name.c_str()));
 }
 
-const ChannelType *Channel::type()
+const ChannelType *Channel::type() const
 {
        return ChannelType::get(_structure->type);
 }
 
-bool Channel::enabled()
+bool Channel::enabled() const
 {
        return _structure->enabled;
 }
@@ -720,7 +720,7 @@ void Channel::set_enabled(bool value)
        check(sr_dev_channel_enable(_structure, value));
 }
 
-unsigned int Channel::index()
+unsigned int Channel::index() const
 {
        return _structure->index;
 }
@@ -740,7 +740,7 @@ ChannelGroup::~ChannelGroup()
 {
 }
 
-string ChannelGroup::name()
+string ChannelGroup::name() const
 {
        return valid_string(_structure->name);
 }
@@ -770,7 +770,7 @@ Trigger::~Trigger()
        sr_trigger_free(_structure);
 }
 
-string Trigger::name()
+string Trigger::name() const
 {
        return _structure->name;
 }
@@ -801,7 +801,7 @@ TriggerStage::~TriggerStage()
                delete match;
 }
        
-int TriggerStage::number()
+int TriggerStage::number() const
 {
        return _structure->stage;
 }
@@ -847,12 +847,12 @@ shared_ptr<Channel> TriggerMatch::channel()
        return _channel;
 }
 
-const TriggerMatchType *TriggerMatch::type()
+const TriggerMatchType *TriggerMatch::type() const
 {
        return TriggerMatchType::get(_structure->match);
 }
 
-float TriggerMatch::value()
+float TriggerMatch::value() const
 {
        return _structure->value;
 }
@@ -1035,7 +1035,7 @@ void Session::set_trigger(shared_ptr<Trigger> trigger)
        _trigger = move(trigger);
 }
 
-string Session::filename()
+string Session::filename() const
 {
        return _filename;
 }
@@ -1084,7 +1084,7 @@ Packet::~Packet()
                delete _payload;
 }
 
-const PacketType *Packet::type()
+const PacketType *Packet::type() const
 {
        return PacketType::get(_structure->type);
 }
@@ -1121,12 +1121,12 @@ shared_ptr<PacketPayload> Header::get_shared_pointer(Packet *_parent)
                ParentOwned::get_shared_pointer(_parent));
 }
 
-int Header::feed_version()
+int Header::feed_version() const
 {
        return _structure->feed_version;
 }
 
-Glib::TimeVal Header::start_time()
+Glib::TimeVal Header::start_time() const
 {
        return Glib::TimeVal(
                _structure->starttime.tv_sec,
@@ -1149,7 +1149,7 @@ shared_ptr<PacketPayload> Meta::get_shared_pointer(Packet *_parent)
                ParentOwned::get_shared_pointer(_parent));
 }
 
-map<const ConfigKey *, Glib::VariantBase> Meta::config()
+map<const ConfigKey *, Glib::VariantBase> Meta::config() const
 {
        map<const ConfigKey *, Glib::VariantBase> result;
        for (auto l = _structure->config; l; l = l->next) {
@@ -1180,12 +1180,12 @@ void *Logic::data_pointer()
        return _structure->data;
 }
 
-size_t Logic::data_length()
+size_t Logic::data_length() const
 {
        return _structure->length;
 }
 
-unsigned int Logic::unit_size()
+unsigned int Logic::unit_size() const
 {
        return _structure->unitsize;
 }
@@ -1211,7 +1211,7 @@ void *Analog::data_pointer()
        return _structure->data;
 }
 
-unsigned int Analog::num_samples()
+unsigned int Analog::num_samples() const
 {
        return _structure->num_samples;
 }
@@ -1226,17 +1226,17 @@ vector<shared_ptr<Channel>> Analog::channels()
        return result;
 }
 
-const Quantity *Analog::mq()
+const Quantity *Analog::mq() const
 {
        return Quantity::get(_structure->meaning->mq);
 }
 
-const Unit *Analog::unit()
+const Unit *Analog::unit() const
 {
        return Unit::get(_structure->meaning->unit);
 }
 
-vector<const QuantityFlag *> Analog::mq_flags()
+vector<const QuantityFlag *> Analog::mq_flags() const
 {
        return QuantityFlag::flags_from_mask(_structure->meaning->mqflags);
 }
@@ -1250,17 +1250,17 @@ InputFormat::~InputFormat()
 {
 }
 
-string InputFormat::name()
+string InputFormat::name() const
 {
        return valid_string(sr_input_id_get(_structure));
 }
 
-string InputFormat::description()
+string InputFormat::description() const
 {
        return valid_string(sr_input_description_get(_structure));
 }
 
-vector<string> InputFormat::extensions()
+vector<string> InputFormat::extensions() const
 {
        vector<string> exts;
        for (const char *const *e = sr_input_extensions_get(_structure);
@@ -1362,27 +1362,27 @@ Option::~Option()
 {
 }
 
-string Option::id()
+string Option::id() const
 {
        return valid_string(_structure->id);
 }
 
-string Option::name()
+string Option::name() const
 {
        return valid_string(_structure->name);
 }
 
-string Option::description()
+string Option::description() const
 {
        return valid_string(_structure->desc);
 }
 
-Glib::VariantBase Option::default_value()
+Glib::VariantBase Option::default_value() const
 {
        return Glib::VariantBase(_structure->def, true);
 }
 
-vector<Glib::VariantBase> Option::values()
+vector<Glib::VariantBase> Option::values() const
 {
        vector<Glib::VariantBase> result;
        for (auto l = _structure->values; l; l = l->next) {
@@ -1401,17 +1401,17 @@ OutputFormat::~OutputFormat()
 {
 }
 
-string OutputFormat::name()
+string OutputFormat::name() const
 {
        return valid_string(sr_output_id_get(_structure));
 }
 
-string OutputFormat::description()
+string OutputFormat::description() const
 {
        return valid_string(sr_output_description_get(_structure));
 }
 
-vector<string> OutputFormat::extensions()
+vector<string> OutputFormat::extensions() const
 {
        vector<string> exts;
        for (const char *const *e = sr_output_extensions_get(_structure);
@@ -1451,7 +1451,7 @@ shared_ptr<Output> OutputFormat::create_output(string filename,
                Output::Deleter());
 }
 
-bool OutputFormat::test_flag(const OutputFlag *flag)
+bool OutputFormat::test_flag(const OutputFlag *flag) const
 {
        return sr_output_test_flag(_structure, flag->id());
 }
index 6fdb153fe14a6af86310f2ada0783cd24e8ba1bf..f10ae9559d70296d78d1931b65a16285faed2e3a 100644 (file)
@@ -271,7 +271,7 @@ public:
        /** Available output formats, indexed by name. */
        map<string, shared_ptr<OutputFormat> > output_formats();
        /** Current log level. */
-       const LogLevel *log_level();
+       const LogLevel *log_level() const;
        /** Set the log level.
         * @param level LogLevel to use. */
        void set_log_level(const LogLevel *level);
@@ -313,7 +313,7 @@ public:
        /** Open an input stream based on header data.
         * @param header Initial data from stream. */
        shared_ptr<Input> open_stream(string header);
-       map<string, string> serials(shared_ptr<Driver> driver);
+       map<string, string> serials(shared_ptr<Driver> driver) const;
 protected:
        map<string, Driver *> _drivers;
        map<string, InputFormat *> _input_formats;
@@ -339,18 +339,18 @@ class SR_API Configurable
 public:
        /** Read configuration for the given key.
         * @param key ConfigKey to read. */
-       Glib::VariantBase config_get(const ConfigKey *key);
+       Glib::VariantBase config_get(const ConfigKey *key) const;
        /** Set configuration for the given key to a specified value.
         * @param key ConfigKey to set.
         * @param value Value to set. */
        void config_set(const ConfigKey *key, const Glib::VariantBase &value);
        /** Enumerate available values for the given configuration key.
         * @param key ConfigKey to enumerate values for. */
-       Glib::VariantContainerBase config_list(const ConfigKey *key);
+       Glib::VariantContainerBase config_list(const ConfigKey *key) const;
        /** Enumerate available keys, according to a given index key. */
        map<const ConfigKey *, set<Capability> > 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);
+       bool config_check(const ConfigKey *key, const ConfigKey *index_key) const;
 protected:
        Configurable(
                struct sr_dev_driver *driver,
@@ -369,9 +369,9 @@ class SR_API Driver :
 {
 public:
        /** Name of this driver. */
-       string name();
+       string name() const;
        /** Long name for this driver. */
-       string long_name();
+       string long_name() const;
        /** Scan for devices and return a list of devices found.
         * @param options Mapping of (ConfigKey, value) pairs. */
        vector<shared_ptr<HardwareDevice> > scan(
@@ -391,15 +391,15 @@ class SR_API Device : public Configurable
 {
 public:
        /** Vendor name for this device. */
-       string vendor();
+       string vendor() const;
        /** Model name for this device. */
-       string model();
+       string model() const;
        /** Version string for this device. */
-       string version();
+       string version() const;
        /** Serial number for this device. */
-       string serial_number();
+       string serial_number() const;
        /** Connection ID for this device. */
-       string connection_id();
+       string connection_id() const;
        /** List of the channels available on this device. */
        vector<shared_ptr<Channel> > channels();
        /** Channel groups available on this device, indexed by name. */
@@ -482,19 +482,19 @@ class SR_API Channel :
 {
 public:
        /** Current name of this channel. */
-       string name();
+       string name() const;
        /** Set the name of this channel. *
         * @param name Name string to set. */
        void set_name(string name);
        /** Type of this channel. */
-       const ChannelType *type();
+       const ChannelType *type() const;
        /** Enabled status of this channel. */
-       bool enabled();
+       bool enabled() const;
        /** Set the enabled status of this channel.
         * @param value Boolean value to set. */
        void set_enabled(bool value);
        /** Get the index number of this channel. */
-       unsigned int index();
+       unsigned int index() const;
 protected:
        explicit Channel(struct sr_channel *structure);
        ~Channel();
@@ -514,7 +514,7 @@ class SR_API ChannelGroup :
 {
 public:
        /** Name of this channel group. */
-       string name();
+       string name() const;
        /** List of the channels in this group. */
        vector<shared_ptr<Channel> > channels();
 protected:
@@ -529,7 +529,7 @@ class SR_API Trigger : public UserOwned<Trigger, struct sr_trigger>
 {
 public:
        /** Name of this trigger configuration. */
-       string name();
+       string name() const;
        /** List of the stages in this trigger. */
        vector<shared_ptr<TriggerStage> > stages();
        /** Add a new stage to this trigger. */
@@ -550,7 +550,7 @@ class SR_API TriggerStage :
 {
 public:
        /** Index number of this stage. */
-       int number();
+       int number() const;
        /** List of match conditions on this stage. */
        vector<shared_ptr<TriggerMatch> > matches();
        /** Add a new match condition to this stage.
@@ -577,9 +577,9 @@ public:
        /** Channel this condition matches on. */
        shared_ptr<Channel> channel();
        /** Type of match. */
-       const TriggerMatchType *type();
+       const TriggerMatchType *type() const;
        /** Threshold value. */
-       float value();
+       float value() const;
 protected:
        TriggerMatch(struct sr_trigger_match *structure, shared_ptr<Channel> channel);
        ~TriggerMatch();
@@ -661,7 +661,7 @@ public:
         * @param trigger Trigger object to use. */
        void set_trigger(shared_ptr<Trigger> trigger);
        /** Get filename this session was loaded from. */
-       string filename();
+       string filename() const;
 protected:
        explicit Session(shared_ptr<Context> context);
        Session(shared_ptr<Context> context, string filename);
@@ -685,7 +685,7 @@ class SR_API Packet : public UserOwned<Packet, const struct sr_datafeed_packet>
 {
 public:
        /** Type of this packet. */
-       const PacketType *type();
+       const PacketType *type() const;
        /** Payload of this packet. */
        shared_ptr<PacketPayload> payload();
 protected:
@@ -730,9 +730,9 @@ class SR_API Header :
 {
 public:
        /* Feed version number. */
-       int feed_version();
+       int feed_version() const;
        /* Start time of this session. */
-       Glib::TimeVal start_time();
+       Glib::TimeVal start_time() const;
 protected:
        explicit Header(const struct sr_datafeed_header *structure);
        ~Header();
@@ -747,7 +747,7 @@ class SR_API Meta :
 {
 public:
        /* Mapping of (ConfigKey, value) pairs. */
-       map<const ConfigKey *, Glib::VariantBase> config();
+       map<const ConfigKey *, Glib::VariantBase> config() const;
 protected:
        explicit Meta(const struct sr_datafeed_meta *structure);
        ~Meta();
@@ -765,9 +765,9 @@ public:
        /* Pointer to data. */
        void *data_pointer();
        /* Data length in bytes. */
-       size_t data_length();
+       size_t data_length() const;
        /* Size of each sample in bytes. */
-       unsigned int unit_size();
+       unsigned int unit_size() const;
 protected:
        explicit Logic(const struct sr_datafeed_logic *structure);
        ~Logic();
@@ -784,15 +784,15 @@ public:
        /** Pointer to data. */
        void *data_pointer();
        /** Number of samples in this packet. */
-       uint32_t num_samples();
+       unsigned int num_samples() const;
        /** Channels for which this packet contains data. */
        vector<shared_ptr<Channel> > channels();
        /** Measured quantity of the samples in this packet. */
-       const Quantity *mq();
+       const Quantity *mq() const;
        /** Unit of the samples in this packet. */
-       const Unit *unit();
+       const Unit *unit() const;
        /** Measurement flags associated with the samples in this packet. */
-       vector<const QuantityFlag *> mq_flags();
+       vector<const QuantityFlag *> mq_flags() const;
 protected:
        explicit Analog(const struct sr_datafeed_analog *structure);
        ~Analog();
@@ -806,12 +806,12 @@ class SR_API InputFormat :
 {
 public:
        /** Name of this input format. */
-       string name();
+       string name() const;
        /** Description of this input format. */
-       string description();
+       string description() const;
        /** A list of preferred file name extensions for this file format.
          * @note This list is a recommendation only. */
-       vector<string> extensions();
+       vector<string> extensions() const;
        /** Options supported by this input format. */
        map<string, shared_ptr<Option> > options();
        /** Create an input using this input format.
@@ -864,15 +864,15 @@ class SR_API Option : public UserOwned<Option, const struct sr_option>
 {
 public:
        /** Short name of this option suitable for command line usage. */
-       string id();
+       string id() const;
        /** Short name of this option suitable for GUI usage. */
-       string name();
+       string name() const;
        /** Description of this option in a sentence. */
-       string description();
+       string description() const;
        /** Default value for this option. */
-       Glib::VariantBase default_value();
+       Glib::VariantBase default_value() const;
        /** Possible values for this option, if a limited set. */
-       vector<Glib::VariantBase> values();
+       vector<Glib::VariantBase> values() const;
 protected:
        Option(const struct sr_option *structure,
                shared_ptr<const struct sr_option *> structure_array);
@@ -889,12 +889,12 @@ class SR_API OutputFormat :
 {
 public:
        /** Name of this output format. */
-       string name();
+       string name() const;
        /** Description of this output format. */
-       string description();
+       string description() const;
        /** A list of preferred file name extensions for this file format.
          * @note This list is a recommendation only. */
-       vector<string> extensions();
+       vector<string> extensions() const;
        /** Options supported by this output format. */
        map<string, shared_ptr<Option> > options();
        /** Create an output using this format.
@@ -916,7 +916,7 @@ public:
         * @return true if flag is set for this module
         * @see sr_output_flags
         */
-       bool test_flag(const OutputFlag *flag);
+       bool test_flag(const OutputFlag *flag) const;
 protected:
        explicit OutputFormat(const struct sr_output_module *structure);
        ~OutputFormat();
@@ -962,10 +962,10 @@ public:
        /** Get value associated with a given integer constant. */
        static const Class *get(int id)
        {
-               auto key = static_cast<Enum>(id);
-               if (_values.find(key) == _values.end())
+               const auto pos = _values.find(static_cast<Enum>(id));
+               if (pos == _values.end())
                        throw Error(SR_ERR_ARG);
-               return _values.at(key);
+               return pos->second;
        }
        /** Get possible values. */
        static std::vector<const Class *> values()