mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-03 15:43:09 +00:00
fbe17e620e
This makes it much easier to manipulate dc nickname entries. In order for that to work we can't simply remove entries with empty nickname (but that isn't needed, anyway, as the code that saves XML or git already handles that case correctly). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
69 lines
2.4 KiB
C++
69 lines
2.4 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DEVICE_H
|
|
#define DEVICE_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct divecomputer;
|
|
struct device;
|
|
struct device_table;
|
|
struct dive_table;
|
|
|
|
// global device table
|
|
extern struct device_table device_table;
|
|
|
|
extern int create_device_node(struct device_table *table, const char *model, const char *serial, const char *nickname);
|
|
extern int nr_devices(const struct device_table *table);
|
|
extern const struct device *get_device(const struct device_table *table, int i);
|
|
extern struct device *get_device_mutable(struct device_table *table, int i);
|
|
extern void clear_device_table(struct device_table *table);
|
|
const char *get_dc_nickname(const struct divecomputer *dc);
|
|
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 int get_or_add_device_for_dc(struct device_table *table, const struct divecomputer *dc);
|
|
extern bool device_exists(const 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
|
|
extern void remove_from_device_table(struct device_table *table, int idx);
|
|
|
|
// struct device accessors for C-code. The returned strings are not stable!
|
|
const char *device_get_model(const struct device *dev);
|
|
const char *device_get_serial(const struct device *dev);
|
|
const char *device_get_nickname(const struct device *dev);
|
|
|
|
// for C code that needs to alloc/free a device table. (Let's try to get rid of those)
|
|
extern struct device_table *alloc_device_table();
|
|
extern void free_device_table(struct device_table *devices);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
// Functions and global variables that are only available to C++ code
|
|
#ifdef __cplusplus
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
struct device {
|
|
bool operator==(const device &a) const; // TODO: remove, once devices are integrated in the undo system
|
|
bool operator<(const device &a) const;
|
|
void showchanges(const std::string &n) const;
|
|
std::string model;
|
|
std::string serialNumber;
|
|
std::string nickName;
|
|
uint32_t deviceId; // Always the string hash of the serialNumber
|
|
};
|
|
|
|
struct device_table {
|
|
// Keep the dive computers in a vector sorted by (model, serial)
|
|
std::vector<device> devices;
|
|
};
|
|
|
|
#endif
|
|
|
|
#endif // DEVICE_H
|