C++: Avoid const ref args to appease Java bindings

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.
This commit is contained in:
Daniel Elstner 2015-10-26 07:04:10 +01:00
parent bf03d63565
commit 9e7176bd00
2 changed files with 25 additions and 25 deletions

View File

@ -278,7 +278,7 @@ shared_ptr<Packet> Context::create_header_packet(Glib::TimeVal start_time)
} }
shared_ptr<Packet> Context::create_meta_packet( 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); auto meta = g_new0(struct sr_datafeed_meta, 1);
for (const auto &input : config) for (const auto &input : config)
@ -311,9 +311,9 @@ shared_ptr<Packet> Context::create_logic_packet(
} }
shared_ptr<Packet> Context::create_analog_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, 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 analog = g_new0(struct sr_datafeed_analog, 1);
auto meaning = g_new0(struct sr_analog_meaning, 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; analog->num_samples = num_samples;
meaning->mq = static_cast<sr_mq>(mq->id()); meaning->mq = static_cast<sr_mq>(mq->id());
meaning->unit = static_cast<sr_unit>(unit->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; analog->data = data_pointer;
auto packet = g_new(struct sr_datafeed_packet, 1); auto packet = g_new(struct sr_datafeed_packet, 1);
packet->type = SR_DF_ANALOG; packet->type = SR_DF_ANALOG;
@ -407,7 +407,7 @@ string Driver::long_name() const
} }
vector<shared_ptr<HardwareDevice>> Driver::scan( 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. */ /* Initialise the driver if not yet done. */
if (!_initialized) if (!_initialized)
@ -1274,7 +1274,7 @@ map<string, shared_ptr<Option>> InputFormat::options()
} }
shared_ptr<Input> InputFormat::create_input( 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)); auto input = sr_input_new(_structure, map_to_hash_variant(options));
if (!input) if (!input)
@ -1423,18 +1423,18 @@ map<string, shared_ptr<Option>> OutputFormat::options()
} }
shared_ptr<Output> OutputFormat::create_output( 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>{ return shared_ptr<Output>{
new Output{shared_from_this(), move(device), options}, new Output{shared_from_this(), move(device), move(options)},
default_delete<Output>{}}; default_delete<Output>{}};
} }
shared_ptr<Output> OutputFormat::create_output(string filename, 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>{ 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>{}}; default_delete<Output>{}};
} }
@ -1444,22 +1444,22 @@ bool OutputFormat::test_flag(const OutputFlag *flag) const
} }
Output::Output(shared_ptr<OutputFormat> format, 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, _structure(sr_output_new(format->_structure,
map_to_hash_variant(options), device->_structure, nullptr)), map_to_hash_variant(options), device->_structure, nullptr)),
_format(move(format)), _format(move(format)),
_device(move(device)), _device(move(device)),
_options(options) _options(move(options))
{ {
} }
Output::Output(string filename, shared_ptr<OutputFormat> format, 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, _structure(sr_output_new(format->_structure,
map_to_hash_variant(options), device->_structure, filename.c_str())), map_to_hash_variant(options), device->_structure, filename.c_str())),
_format(move(format)), _format(move(format)),
_device(move(device)), _device(move(device)),
_options(options) _options(move(options))
{ {
} }

View File

@ -269,15 +269,15 @@ public:
shared_ptr<Packet> create_header_packet(Glib::TimeVal start_time); shared_ptr<Packet> create_header_packet(Glib::TimeVal start_time);
/** Create a meta packet. */ /** Create a meta packet. */
shared_ptr<Packet> create_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. */ /** Create a logic packet. */
shared_ptr<Packet> create_logic_packet( shared_ptr<Packet> create_logic_packet(
void *data_pointer, size_t data_length, unsigned int unit_size); void *data_pointer, size_t data_length, unsigned int unit_size);
/** Create an analog packet. */ /** Create an analog packet. */
shared_ptr<Packet> create_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, 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. /** Load a saved session.
* @param filename File name string. */ * @param filename File name string. */
shared_ptr<Session> load_session(string filename); shared_ptr<Session> load_session(string filename);
@ -352,8 +352,8 @@ public:
string long_name() const; string long_name() const;
/** Scan for devices and return a list of devices found. /** Scan for devices and return a list of devices found.
* @param options Mapping of (ConfigKey, value) pairs. */ * @param options Mapping of (ConfigKey, value) pairs. */
vector<shared_ptr<HardwareDevice> > scan(const map<const ConfigKey *, Glib::VariantBase> vector<shared_ptr<HardwareDevice> > scan(map<const ConfigKey *, Glib::VariantBase>
&options = map<const ConfigKey *, Glib::VariantBase>()); options = map<const ConfigKey *, Glib::VariantBase>());
private: private:
struct sr_dev_driver *_structure; struct sr_dev_driver *_structure;
bool _initialized; bool _initialized;
@ -798,8 +798,8 @@ public:
map<string, shared_ptr<Option> > options(); map<string, shared_ptr<Option> > options();
/** Create an input using this input format. /** Create an input using this input format.
* @param options Mapping of (option name, value) pairs. */ * @param options Mapping of (option name, value) pairs. */
shared_ptr<Input> create_input(const map<string, Glib::VariantBase> shared_ptr<Input> create_input(map<string, Glib::VariantBase>
&options = map<string, Glib::VariantBase>()); options = map<string, Glib::VariantBase>());
private: private:
explicit InputFormat(const struct sr_input_module *structure); explicit InputFormat(const struct sr_input_module *structure);
~InputFormat(); ~InputFormat();
@ -893,14 +893,14 @@ public:
* @param device Device to output for. * @param device Device to output for.
* @param options Mapping of (option name, value) pairs. */ * @param options Mapping of (option name, value) pairs. */
shared_ptr<Output> create_output(shared_ptr<Device> device, 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. /** Create an output using this format.
* @param filename Name of destination file. * @param filename Name of destination file.
* @param device Device to output for. * @param device Device to output for.
* @param options Mapping of (option name, value) pairs. */ * @param options Mapping of (option name, value) pairs. */
shared_ptr<Output> create_output(string filename, shared_ptr<Output> create_output(string filename,
shared_ptr<Device> device, 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. * Checks whether a given flag is set.
* @param flag Flag to check * @param flag Flag to check
@ -929,9 +929,9 @@ public:
private: private:
Output(shared_ptr<OutputFormat> format, shared_ptr<Device> device); Output(shared_ptr<OutputFormat> format, shared_ptr<Device> device);
Output(shared_ptr<OutputFormat> format, 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, 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(); ~Output();
const struct sr_output *_structure; const struct sr_output *_structure;