]> sigrok.org Git - libsigrok.git/commitdiff
C++: Avoid const ref args to appease Java bindings
authorDaniel Elstner <redacted>
Mon, 26 Oct 2015 06:04:10 +0000 (07:04 +0100)
committerDaniel Elstner <redacted>
Mon, 26 Oct 2015 06:04:10 +0000 (07:04 +0100)
The Java bindings currently have some weird problem with function
arguments passed by const reference. Not all types are affected,
but the collection types that involve custom typemaps are.

For now, revert back to pass-by-value for the problematic types.

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

index c5ce63864359eeb08fe6a956debbc001dd2f3a21..5cab6ac9919c4ff9249161f4decec004c21dea30 100644 (file)
@@ -278,7 +278,7 @@ shared_ptr<Packet> Context::create_header_packet(Glib::TimeVal start_time)
 }
 
 shared_ptr<Packet> Context::create_meta_packet(
-       const map<const ConfigKey *, Glib::VariantBase> &config)
+       map<const ConfigKey *, Glib::VariantBase> config)
 {
        auto meta = g_new0(struct sr_datafeed_meta, 1);
        for (const auto &input : config)
@@ -311,9 +311,9 @@ shared_ptr<Packet> Context::create_logic_packet(
 }
 
 shared_ptr<Packet> Context::create_analog_packet(
-       const vector<shared_ptr<Channel> > &channels,
+       vector<shared_ptr<Channel> > channels,
        float *data_pointer, unsigned int num_samples, const Quantity *mq,
-       const Unit *unit, const vector<const QuantityFlag *> &mqflags)
+       const Unit *unit, vector<const QuantityFlag *> mqflags)
 {
        auto analog = g_new0(struct sr_datafeed_analog, 1);
        auto meaning = g_new0(struct sr_analog_meaning, 1);
@@ -325,7 +325,7 @@ shared_ptr<Packet> Context::create_analog_packet(
        analog->num_samples = num_samples;
        meaning->mq = static_cast<sr_mq>(mq->id());
        meaning->unit = static_cast<sr_unit>(unit->id());
-       meaning->mqflags = static_cast<sr_mqflag>(QuantityFlag::mask_from_flags(mqflags));
+       meaning->mqflags = static_cast<sr_mqflag>(QuantityFlag::mask_from_flags(move(mqflags)));
        analog->data = data_pointer;
        auto packet = g_new(struct sr_datafeed_packet, 1);
        packet->type = SR_DF_ANALOG;
@@ -407,7 +407,7 @@ string Driver::long_name() const
 }
 
 vector<shared_ptr<HardwareDevice>> Driver::scan(
-       const map<const ConfigKey *, Glib::VariantBase> &options)
+       map<const ConfigKey *, Glib::VariantBase> options)
 {
        /* Initialise the driver if not yet done. */
        if (!_initialized)
@@ -1274,7 +1274,7 @@ map<string, shared_ptr<Option>> InputFormat::options()
 }
 
 shared_ptr<Input> InputFormat::create_input(
-       const map<string, Glib::VariantBase> &options)
+       map<string, Glib::VariantBase> options)
 {
        auto input = sr_input_new(_structure, map_to_hash_variant(options));
        if (!input)
@@ -1423,18 +1423,18 @@ map<string, shared_ptr<Option>> OutputFormat::options()
 }
 
 shared_ptr<Output> OutputFormat::create_output(
-       shared_ptr<Device> device, const map<string, Glib::VariantBase> &options)
+       shared_ptr<Device> device, map<string, Glib::VariantBase> options)
 {
        return shared_ptr<Output>{
-               new Output{shared_from_this(), move(device), options},
+               new Output{shared_from_this(), move(device), move(options)},
                default_delete<Output>{}};
 }
 
 shared_ptr<Output> OutputFormat::create_output(string filename,
-       shared_ptr<Device> device, const map<string, Glib::VariantBase> &options)
+       shared_ptr<Device> device, map<string, Glib::VariantBase> options)
 {
        return shared_ptr<Output>{
-               new Output{move(filename), shared_from_this(), move(device), options},
+               new Output{move(filename), shared_from_this(), move(device), move(options)},
                default_delete<Output>{}};
 }
 
@@ -1444,22 +1444,22 @@ bool OutputFormat::test_flag(const OutputFlag *flag) const
 }
 
 Output::Output(shared_ptr<OutputFormat> format,
-               shared_ptr<Device> device, const map<string, Glib::VariantBase> &options) :
+               shared_ptr<Device> device, map<string, Glib::VariantBase> options) :
        _structure(sr_output_new(format->_structure,
                map_to_hash_variant(options), device->_structure, nullptr)),
        _format(move(format)),
        _device(move(device)),
-       _options(options)
+       _options(move(options))
 {
 }
 
 Output::Output(string filename, shared_ptr<OutputFormat> format,
-               shared_ptr<Device> device, const map<string, Glib::VariantBase> &options) :
+               shared_ptr<Device> device, map<string, Glib::VariantBase> options) :
        _structure(sr_output_new(format->_structure,
                map_to_hash_variant(options), device->_structure, filename.c_str())),
        _format(move(format)),
        _device(move(device)),
-       _options(options)
+       _options(move(options))
 {
 }
 
index f7b2c46864b2007694d33f15667a30770f1eda2b..620e45ebbc361bcc5407e27727f7897e9110b38c 100644 (file)
@@ -269,15 +269,15 @@ public:
        shared_ptr<Packet> create_header_packet(Glib::TimeVal start_time);
        /** Create a meta packet. */
        shared_ptr<Packet> create_meta_packet(
-               const map<const ConfigKey *, Glib::VariantBase> &config);
+               map<const ConfigKey *, Glib::VariantBase> config);
        /** Create a logic packet. */
        shared_ptr<Packet> create_logic_packet(
                void *data_pointer, size_t data_length, unsigned int unit_size);
        /** Create an analog packet. */
        shared_ptr<Packet> create_analog_packet(
-               const vector<shared_ptr<Channel> > &channels,
+               vector<shared_ptr<Channel> > channels,
                float *data_pointer, unsigned int num_samples, const Quantity *mq,
-               const Unit *unit, const vector<const QuantityFlag *> &mqflags);
+               const Unit *unit, vector<const QuantityFlag *> mqflags);
        /** Load a saved session.
         * @param filename File name string. */
        shared_ptr<Session> load_session(string filename);
@@ -352,8 +352,8 @@ public:
        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(const map<const ConfigKey *, Glib::VariantBase>
-                       &options = map<const ConfigKey *, Glib::VariantBase>());
+       vector<shared_ptr<HardwareDevice> > scan(map<const ConfigKey *, Glib::VariantBase>
+                       options = map<const ConfigKey *, Glib::VariantBase>());
 private:
        struct sr_dev_driver *_structure;
        bool _initialized;
@@ -798,8 +798,8 @@ public:
        map<string, shared_ptr<Option> > options();
        /** Create an input using this input format.
         * @param options Mapping of (option name, value) pairs. */
-       shared_ptr<Input> create_input(const map<string, Glib::VariantBase>
-                       &options = map<string, Glib::VariantBase>());
+       shared_ptr<Input> create_input(map<string, Glib::VariantBase>
+                       options = map<string, Glib::VariantBase>());
 private:
        explicit InputFormat(const struct sr_input_module *structure);
        ~InputFormat();
@@ -893,14 +893,14 @@ public:
         * @param device Device to output for.
         * @param options Mapping of (option name, value) pairs. */
        shared_ptr<Output> create_output(shared_ptr<Device> device,
-               const map<string, Glib::VariantBase> &options = map<string, Glib::VariantBase>());
+               map<string, Glib::VariantBase> options = map<string, Glib::VariantBase>());
        /** Create an output using this format.
         * @param filename Name of destination file.
         * @param device Device to output for.
         * @param options Mapping of (option name, value) pairs. */
        shared_ptr<Output> create_output(string filename,
                shared_ptr<Device> device,
-               const map<string, Glib::VariantBase> &options = map<string, Glib::VariantBase>());
+               map<string, Glib::VariantBase> options = map<string, Glib::VariantBase>());
        /**
         * Checks whether a given flag is set.
         * @param flag Flag to check
@@ -929,9 +929,9 @@ public:
 private:
        Output(shared_ptr<OutputFormat> format, shared_ptr<Device> device);
        Output(shared_ptr<OutputFormat> format,
-               shared_ptr<Device> device, const map<string, Glib::VariantBase> &options);
+               shared_ptr<Device> device, map<string, Glib::VariantBase> options);
        Output(string filename, shared_ptr<OutputFormat> format,
-               shared_ptr<Device> device, const map<string, Glib::VariantBase> &options);
+               shared_ptr<Device> device, map<string, Glib::VariantBase> options);
        ~Output();
 
        const struct sr_output *_structure;