mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
Cleanup: unify get_gas_at_time() and get_gasmix()
There were two functions for getting gas-mixes at a certain timestamp: - get_gasmix() for repeated queries. - get_gas_at_time() for a single query. Since the latter is a special case of the former, simply call the former in the latter. Moreover, rename to get_gasmix_at_time() for consistency. Replace on get_gasmix() call, which was outside of a loop by the corresponding get_gasmix_at_time() call. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
f5b11daffd
commit
5c4569247a
6 changed files with 15 additions and 23 deletions
|
@ -4308,3 +4308,11 @@ struct gasmix get_gasmix(struct dive *dive, struct divecomputer *dc, int time, s
|
||||||
*evp = ev;
|
*evp = ev;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* get the gas at a certain time during the dive */
|
||||||
|
struct gasmix get_gasmix_at_time(struct dive *d, struct divecomputer *dc, duration_t time)
|
||||||
|
{
|
||||||
|
struct event *ev = NULL;
|
||||||
|
struct gasmix gasmix = { 0 };
|
||||||
|
return get_gasmix(d, dc, time.seconds, &ev, &gasmix);
|
||||||
|
}
|
||||||
|
|
|
@ -718,12 +718,15 @@ extern void printdecotable(struct decostop *table);
|
||||||
|
|
||||||
extern struct event *get_next_event(struct event *event, const char *name);
|
extern struct event *get_next_event(struct event *event, const char *name);
|
||||||
|
|
||||||
/* Get gasmix at increasing timestamps.
|
/* Get gasmixes at increasing timestamps.
|
||||||
* In "evp", pass a pointer to a "struct event *" which is NULL-initialized on first invocation.
|
* In "evp", pass a pointer to a "struct event *" which is NULL-initialized on first invocation.
|
||||||
* On subsequent calls, pass the same "evp" and the "gasmix" from previous calls.
|
* On subsequent calls, pass the same "evp" and the "gasmix" from previous calls.
|
||||||
*/
|
*/
|
||||||
extern struct gasmix get_gasmix(struct dive *dive, struct divecomputer *dc, int time, struct event **evp, struct gasmix *gasmix);
|
extern struct gasmix get_gasmix(struct dive *dive, struct divecomputer *dc, int time, struct event **evp, struct gasmix *gasmix);
|
||||||
|
|
||||||
|
/* Get gasmix at a given time */
|
||||||
|
extern struct gasmix get_gasmix_at_time(struct dive *dive, struct divecomputer *dc, duration_t time);
|
||||||
|
|
||||||
/* these structs holds the information that
|
/* these structs holds the information that
|
||||||
* describes the cylinders / weight systems.
|
* describes the cylinders / weight systems.
|
||||||
* they are global variables initialized in equipment.c
|
* they are global variables initialized in equipment.c
|
||||||
|
|
|
@ -134,8 +134,7 @@ int total_weight(struct dive *dive)
|
||||||
|
|
||||||
static int active_o2(struct dive *dive, struct divecomputer *dc, duration_t time)
|
static int active_o2(struct dive *dive, struct divecomputer *dc, duration_t time)
|
||||||
{
|
{
|
||||||
struct gasmix gas;
|
struct gasmix gas = get_gasmix_at_time(dive, dc, time);
|
||||||
get_gas_at_time(dive, dc, time, &gas);
|
|
||||||
return get_o2(&gas);
|
return get_o2(&gas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,22 +81,6 @@ bool diveplan_empty(struct diveplan *diveplan)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the gas at a certain time during the dive */
|
|
||||||
void get_gas_at_time(struct dive *dive, struct divecomputer *dc, duration_t time, struct gasmix *gas)
|
|
||||||
{
|
|
||||||
// we always start with the first gas, so that's our gas
|
|
||||||
// unless an event tells us otherwise
|
|
||||||
struct event *event = dc->events;
|
|
||||||
*gas = dive->cylinder[0].gasmix;
|
|
||||||
while (event && event->time.seconds <= time.seconds) {
|
|
||||||
if (!strcmp(event->name, "gaschange")) {
|
|
||||||
int cylinder_idx = get_cylinder_index(dive, event);
|
|
||||||
*gas = dive->cylinder[cylinder_idx].gasmix;
|
|
||||||
}
|
|
||||||
event = event->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get the cylinder index at a certain time during the dive */
|
/* get the cylinder index at a certain time during the dive */
|
||||||
int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time)
|
int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time)
|
||||||
{
|
{
|
||||||
|
@ -164,7 +148,7 @@ int tissue_at_end(struct deco_state *ds, struct dive *dive, struct deco_state **
|
||||||
setpoint = sample[0].setpoint;
|
setpoint = sample[0].setpoint;
|
||||||
|
|
||||||
t1 = sample->time;
|
t1 = sample->time;
|
||||||
get_gas_at_time(dive, dc, t0, &gas);
|
gas = get_gasmix_at_time(dive, dc, t0);
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
lastdepth = psample->depth;
|
lastdepth = psample->depth;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ extern void set_verbatim(bool verbatim);
|
||||||
extern void set_display_runtime(bool display);
|
extern void set_display_runtime(bool display);
|
||||||
extern void set_display_duration(bool display);
|
extern void set_display_duration(bool display);
|
||||||
extern void set_display_transitions(bool display);
|
extern void set_display_transitions(bool display);
|
||||||
extern void get_gas_at_time(struct dive *dive, struct divecomputer *dc, duration_t time, struct gasmix *gas);
|
|
||||||
extern int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time);
|
extern int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time);
|
||||||
extern int get_gasidx(struct dive *dive, struct gasmix *mix);
|
extern int get_gasidx(struct dive *dive, struct gasmix *mix);
|
||||||
extern bool diveplan_empty(struct diveplan *diveplan);
|
extern bool diveplan_empty(struct diveplan *diveplan);
|
||||||
|
|
|
@ -758,8 +758,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force, bool doClearPictures)
|
||||||
qDeleteAll(eventItems);
|
qDeleteAll(eventItems);
|
||||||
eventItems.clear();
|
eventItems.clear();
|
||||||
struct event *event = currentdc->events;
|
struct event *event = currentdc->events;
|
||||||
struct event *ev;
|
struct gasmix lastgasmix = get_gasmix_at_time(&displayed_dive, current_dc, duration_t{1});
|
||||||
struct gasmix lastgasmix = get_gasmix(&displayed_dive, current_dc, 1, &ev, NULL);
|
|
||||||
|
|
||||||
while (event) {
|
while (event) {
|
||||||
#ifndef SUBSURFACE_MOBILE
|
#ifndef SUBSURFACE_MOBILE
|
||||||
|
|
Loading…
Reference in a new issue