mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
core: use std::vector<> to store divecomputer samples
This is a hairy one, because the sample code is rather tricky. There was a pattern of looping through pairs of adjacent samples, for interpolation purposes. Add an range adapter to generalize such loops. Removes the finish_sample() function: The code would call prepare_sample() to start parsing of samples and then finish_sample() to actuall add it. I.e. a kind of commit(). Since, with one exception, all users of prepare_sample() called finish_sample() in all code paths, we might just add the sample in the first place. The exception was sample_end() in parse.cpp. This brings a small change: samples are now added, even if they could only be parsed partially. I doubt that this makes any difference, since it will only happen for broken divelogs anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
bc761344d4
commit
f120fecccb
28 changed files with 588 additions and 715 deletions
|
@ -178,19 +178,16 @@ static void put_cylinder_HTML(struct membuffer *b, struct dive *dive)
|
|||
|
||||
static void put_HTML_samples(struct membuffer *b, struct dive *dive)
|
||||
{
|
||||
int i;
|
||||
put_format(b, "\"maxdepth\":%d,", dive->dc.maxdepth.mm);
|
||||
put_format(b, "\"duration\":%d,", dive->dc.duration.seconds);
|
||||
struct sample *s = dive->dc.sample;
|
||||
|
||||
if (!dive->dc.samples)
|
||||
if (dive->dc.samples.empty())
|
||||
return;
|
||||
|
||||
const char *separator = "\"samples\":[";
|
||||
for (i = 0; i < dive->dc.samples; i++) {
|
||||
put_format(b, "%s[%d,%d,%d,%d]", separator, s->time.seconds, s->depth.mm, s->pressure[0].mbar, s->temperature.mkelvin);
|
||||
for (auto &s: dive->dc.samples) {
|
||||
put_format(b, "%s[%d,%d,%d,%d]", separator, s.time.seconds, s.depth.mm, s.pressure[0].mbar, s.temperature.mkelvin);
|
||||
separator = ", ";
|
||||
s++;
|
||||
}
|
||||
put_string(b, "],");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue