mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
planner: turn diveplan into a C++ structure
No more memory management woes. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
6c8f158569
commit
8704a8b6f9
6 changed files with 372 additions and 450 deletions
|
@ -5,6 +5,7 @@
|
|||
#include "units.h"
|
||||
#include "divemode.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/* this should be converted to use our types */
|
||||
struct divedatapoint {
|
||||
|
@ -14,22 +15,24 @@ struct divedatapoint {
|
|||
pressure_t minimum_gas;
|
||||
int setpoint;
|
||||
bool entered;
|
||||
struct divedatapoint *next;
|
||||
enum divemode_t divemode;
|
||||
};
|
||||
|
||||
struct diveplan {
|
||||
timestamp_t when;
|
||||
int surface_pressure; /* mbar */
|
||||
int bottomsac; /* ml/min */
|
||||
int decosac; /* ml/min */
|
||||
int salinity;
|
||||
short gflow;
|
||||
short gfhigh;
|
||||
short vpmb_conservatism;
|
||||
struct divedatapoint *dp;
|
||||
int eff_gflow, eff_gfhigh;
|
||||
int surface_interval;
|
||||
diveplan();
|
||||
~diveplan();
|
||||
|
||||
timestamp_t when = 0;
|
||||
int surface_pressure = 0; /* mbar */
|
||||
int bottomsac = 0; /* ml/min */
|
||||
int decosac = 0; /* ml/min */
|
||||
int salinity = 0;
|
||||
short gflow = 0;
|
||||
short gfhigh = 0;
|
||||
short vpmb_conservatism = 0;
|
||||
std::vector<divedatapoint> dp;
|
||||
int eff_gflow = 0, eff_gfhigh = 0;
|
||||
int surface_interval = 0;
|
||||
};
|
||||
|
||||
struct deco_state_cache;
|
||||
|
@ -41,13 +44,11 @@ typedef enum {
|
|||
} planner_error_t;
|
||||
|
||||
extern int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time);
|
||||
extern bool diveplan_empty(struct diveplan *diveplan);
|
||||
extern void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_disclaimer, planner_error_t error);
|
||||
extern bool diveplan_empty(const struct diveplan &diveplan);
|
||||
extern void add_plan_to_notes(struct diveplan &diveplan, struct dive *dive, bool show_disclaimer, planner_error_t error);
|
||||
extern const char *get_planner_disclaimer();
|
||||
|
||||
extern void free_dps(struct diveplan *diveplan);
|
||||
|
||||
struct divedatapoint *plan_add_segment(struct diveplan *diveplan, int duration, int depth, int cylinderid, int po2, bool entered, enum divemode_t divemode);
|
||||
void plan_add_segment(struct diveplan &diveplan, int duration, int depth, int cylinderid, int po2, bool entered, enum divemode_t divemode);
|
||||
#if DEBUG_PLAN
|
||||
void dump_plan(struct diveplan *diveplan);
|
||||
#endif
|
||||
|
@ -57,5 +58,5 @@ struct decostop {
|
|||
};
|
||||
|
||||
extern std::string get_planner_disclaimer_formatted();
|
||||
extern bool plan(struct deco_state *ds, struct diveplan *diveplan, struct dive *dive, int dcNr, int timestep, struct decostop *decostoptable, deco_state_cache &cache, bool is_planner, bool show_disclaimer);
|
||||
extern bool plan(struct deco_state *ds, struct diveplan &diveplan, struct dive *dive, int dcNr, int timestep, struct decostop *decostoptable, deco_state_cache &cache, bool is_planner, bool show_disclaimer);
|
||||
#endif // PLANNER_H
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue