From: Daniel Elstner Date: Sun, 11 Oct 2015 11:57:42 +0000 (+0200) Subject: C++: Make value get accessors const X-Git-Tag: libsigrok-0.4.0~174 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=15bebf575da5fe1f587a052c3dc254eea1bf7659;p=libsigrok.git C++: Make value get accessors const Declare accessor methods that return value members const. For now, skip all cases where constness would have to be applied transitively to shared objects. --- diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index f1651287..960ac39b 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -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 Context::open_stream(string header) new Input(shared_from_this(), input), Input::Deleter()); } -map Context::serials(shared_ptr driver) +map Context::serials(shared_ptr driver) const { GSList *serial_list = sr_serial_list(driver ? driver->_structure : nullptr); map 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(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> 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 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 = 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 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 Meta::get_shared_pointer(Packet *_parent) ParentOwned::get_shared_pointer(_parent)); } -map Meta::config() +map Meta::config() const { map 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> 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 Analog::mq_flags() +vector 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 InputFormat::extensions() +vector InputFormat::extensions() const { vector 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 Option::values() +vector Option::values() const { vector 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 OutputFormat::extensions() +vector OutputFormat::extensions() const { vector exts; for (const char *const *e = sr_output_extensions_get(_structure); @@ -1451,7 +1451,7 @@ shared_ptr 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()); } diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index 6fdb153f..f10ae955 100644 --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp @@ -271,7 +271,7 @@ public: /** Available output formats, indexed by name. */ map > 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 open_stream(string header); - map serials(shared_ptr driver); + map serials(shared_ptr driver) const; protected: map _drivers; map _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 > 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 > 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 > 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 > channels(); protected: @@ -529,7 +529,7 @@ class SR_API Trigger : public UserOwned { public: /** Name of this trigger configuration. */ - string name(); + string name() const; /** List of the stages in this trigger. */ vector > 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 > matches(); /** Add a new match condition to this stage. @@ -577,9 +577,9 @@ public: /** Channel this condition matches on. */ shared_ptr 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); ~TriggerMatch(); @@ -661,7 +661,7 @@ public: * @param trigger Trigger object to use. */ void set_trigger(shared_ptr trigger); /** Get filename this session was loaded from. */ - string filename(); + string filename() const; protected: explicit Session(shared_ptr context); Session(shared_ptr context, string filename); @@ -685,7 +685,7 @@ class SR_API Packet : public UserOwned { public: /** Type of this packet. */ - const PacketType *type(); + const PacketType *type() const; /** Payload of this packet. */ shared_ptr 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 config(); + map 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 > 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 mq_flags(); + vector 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 extensions(); + vector extensions() const; /** Options supported by this input format. */ map > options(); /** Create an input using this input format. @@ -864,15 +864,15 @@ class SR_API Option : public UserOwned { 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 values(); + vector values() const; protected: Option(const struct sr_option *structure, shared_ptr 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 extensions(); + vector extensions() const; /** Options supported by this output format. */ map > 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(id); - if (_values.find(key) == _values.end()) + const auto pos = _values.find(static_cast(id)); + if (pos == _values.end()) throw Error(SR_ERR_ARG); - return _values.at(key); + return pos->second; } /** Get possible values. */ static std::vector values()