diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-10-21 15:25:18 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-10-24 09:51:37 -0700 |
commit | fadea413cdb4644b821369b27fad6e5f019d32c2 (patch) | |
tree | 4f027306ccb84277cd142d80c3a9e9c684c1521d /core | |
parent | 53118be1f9915584c33aba6e70b31d1720b1a451 (diff) | |
download | subsurface-fadea413cdb4644b821369b27fad6e5f019d32c2.tar.gz |
devices: return index from function adding / removing devices
This will be used to keep the model representing the device-list
up to date.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r-- | core/device.cpp | 13 | ||||
-rw-r--r-- | core/device.h | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/core/device.cpp b/core/device.cpp index 512d17d57..764531414 100644 --- a/core/device.cpp +++ b/core/device.cpp @@ -299,17 +299,24 @@ extern "C" void create_device_node(struct device_table *device_table, const char } /* Does not check for duplicates! */ -extern "C" void add_to_device_table(struct device_table *device_table, const struct device *dev) +extern "C" int add_to_device_table(struct device_table *device_table, const struct device *dev) { auto it = std::lower_bound(device_table->devices.begin(), device_table->devices.end(), *dev); + int idx = it - device_table->devices.begin(); device_table->devices.insert(it, *dev); + return idx; } -extern "C" void remove_device(struct device_table *device_table, const struct device *dev) +extern "C" int remove_device(struct device_table *device_table, const struct device *dev) { auto it = std::lower_bound(device_table->devices.begin(), device_table->devices.end(), *dev); - if (it != device_table->devices.end() && same_device(*it, *dev)) + if (it != device_table->devices.end() && same_device(*it, *dev)) { + int idx = it - device_table->devices.begin(); device_table->devices.erase(it); + return idx; + } else { + return -1; + } } extern "C" void clear_device_table(struct device_table *device_table) diff --git a/core/device.h b/core/device.h index 9c7fff31c..590609c45 100644 --- a/core/device.h +++ b/core/device.h @@ -29,8 +29,8 @@ extern bool device_used_by_selected_dive(const struct device *dev); extern const struct device *get_device_for_dc(const struct device_table *table, const struct divecomputer *dc); extern bool device_exists(const struct device_table *table, const struct device *dev); -extern void add_to_device_table(struct device_table *table, const struct device *dev); -extern void remove_device(struct device_table *table, const struct device *dev); +extern int add_to_device_table(struct device_table *table, const struct device *dev); // returns index +extern int remove_device(struct device_table *table, const struct device *dev); // returns index or -1 if not found // struct device accessors for C-code. The returned strings are not stable! const char *device_get_model(const struct device *dev); |