mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Cleanup: return cylinder from cylinder_start() in parser
Most callers of this function accessed the newly generated cylinder immediately after calling this function. Thus, for convenience, return the added cylinder. This avoids a number of verbose expressions. On the flip side, cylinder_start() now has to be cast to function returning void in a the "nesting" function table. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7c9f46acd2
commit
8df3705152
7 changed files with 15 additions and 20 deletions
|
@ -39,8 +39,7 @@ static int cobalt_cylinders(void *param, int columns, char **data, char **column
|
||||||
struct parser_state *state = (struct parser_state *)param;
|
struct parser_state *state = (struct parser_state *)param;
|
||||||
cylinder_t *cyl;
|
cylinder_t *cyl;
|
||||||
|
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
if (data[0])
|
if (data[0])
|
||||||
cyl->gasmix.o2.permille = atoi(data[0]) * 10;
|
cyl->gasmix.o2.permille = atoi(data[0]) * 10;
|
||||||
if (data[1])
|
if (data[1])
|
||||||
|
|
|
@ -26,8 +26,7 @@ static int divinglog_cylinder(void *param, int columns, char **data, char **colu
|
||||||
if (data[7] && atoi(data[7]) > 0)
|
if (data[7] && atoi(data[7]) > 0)
|
||||||
dbl = 2;
|
dbl = 2;
|
||||||
|
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assuming that we have to double the cylinder size, if double
|
* Assuming that we have to double the cylinder size, if double
|
||||||
|
|
|
@ -28,8 +28,7 @@ static int shearwater_cylinders(void *param, int columns, char **data, char **co
|
||||||
if (o2 == 990 && he == 0)
|
if (o2 == 990 && he == 0)
|
||||||
o2 = 1000;
|
o2 = 1000;
|
||||||
|
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
cyl->gasmix.o2.permille = o2;
|
cyl->gasmix.o2.permille = o2;
|
||||||
cyl->gasmix.he.permille = he;
|
cyl->gasmix.he.permille = he;
|
||||||
cylinder_end(state);
|
cylinder_end(state);
|
||||||
|
@ -70,8 +69,7 @@ static int shearwater_changes(void *param, int columns, char **data, char **colu
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
// Cylinder not found, creating a new one
|
// Cylinder not found, creating a new one
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
cyl->gasmix.o2.permille = o2;
|
cyl->gasmix.o2.permille = o2;
|
||||||
cyl->gasmix.he.permille = he;
|
cyl->gasmix.he.permille = he;
|
||||||
cylinder_end(state);
|
cylinder_end(state);
|
||||||
|
|
|
@ -218,8 +218,7 @@ static int dm4_dive(void *param, int columns, char **data, char **column)
|
||||||
/*
|
/*
|
||||||
* TODO: handle multiple cylinders
|
* TODO: handle multiple cylinders
|
||||||
*/
|
*/
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
if (data[22] && atoi(data[22]) > 0)
|
if (data[22] && atoi(data[22]) > 0)
|
||||||
cyl->start.mbar = atoi(data[22]);
|
cyl->start.mbar = atoi(data[22]);
|
||||||
else if (data[10] && atoi(data[10]) > 0)
|
else if (data[10] && atoi(data[10]) > 0)
|
||||||
|
@ -328,8 +327,7 @@ static int dm5_cylinders(void *param, int columns, char **data, char **column)
|
||||||
struct parser_state *state = (struct parser_state *)param;
|
struct parser_state *state = (struct parser_state *)param;
|
||||||
cylinder_t *cyl;
|
cylinder_t *cyl;
|
||||||
|
|
||||||
cylinder_start(state);
|
cyl = cylinder_start(state);
|
||||||
cyl = &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
|
||||||
if (data[7] && atoi(data[7]) > 0 && atoi(data[7]) < 350000)
|
if (data[7] && atoi(data[7]) > 0 && atoi(data[7]) < 350000)
|
||||||
cyl->start.mbar = atoi(data[7]);
|
cyl->start.mbar = atoi(data[7]);
|
||||||
if (data[8] && atoi(data[8]) > 0 && atoi(data[8]) < 350000)
|
if (data[8] && atoi(data[8]) > 0 && atoi(data[8]) < 350000)
|
||||||
|
|
|
@ -1560,13 +1560,14 @@ static void uddf_importer(struct parser_state *state)
|
||||||
state->xml_parsing_units.temperature = KELVIN;
|
state->xml_parsing_units.temperature = KELVIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef void (*parser_func)(struct parser_state *);
|
||||||
/*
|
/*
|
||||||
* I'm sure this could be done as some fancy DTD rules.
|
* I'm sure this could be done as some fancy DTD rules.
|
||||||
* It's just not worth the headache.
|
* It's just not worth the headache.
|
||||||
*/
|
*/
|
||||||
static struct nesting {
|
static struct nesting {
|
||||||
const char *name;
|
const char *name;
|
||||||
void (*start)(struct parser_state *), (*end)(struct parser_state *);
|
parser_func start, end;
|
||||||
} nesting[] = {
|
} nesting[] = {
|
||||||
{ "divecomputerid", dc_settings_start, dc_settings_end },
|
{ "divecomputerid", dc_settings_start, dc_settings_end },
|
||||||
{ "settings", settings_start, settings_end },
|
{ "settings", settings_start, settings_end },
|
||||||
|
@ -1579,9 +1580,9 @@ static struct nesting {
|
||||||
{ "SAMPLE", sample_start, sample_end },
|
{ "SAMPLE", sample_start, sample_end },
|
||||||
{ "reading", sample_start, sample_end },
|
{ "reading", sample_start, sample_end },
|
||||||
{ "event", event_start, event_end },
|
{ "event", event_start, event_end },
|
||||||
{ "mix", cylinder_start, cylinder_end },
|
{ "mix", (parser_func)cylinder_start, (parser_func)cylinder_end },
|
||||||
{ "gasmix", cylinder_start, cylinder_end },
|
{ "gasmix", (parser_func)cylinder_start, (parser_func)cylinder_end },
|
||||||
{ "cylinder", cylinder_start, cylinder_end },
|
{ "cylinder", (parser_func)cylinder_start, (parser_func)cylinder_end },
|
||||||
{ "weightsystem", ws_start, ws_end },
|
{ "weightsystem", ws_start, ws_end },
|
||||||
{ "divecomputer", divecomputer_start, divecomputer_end },
|
{ "divecomputer", divecomputer_start, divecomputer_end },
|
||||||
{ "P", sample_start, sample_end },
|
{ "P", sample_start, sample_end },
|
||||||
|
@ -1910,8 +1911,7 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size, struct dive_table *tabl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
cylinder_start(&state);
|
cyl = cylinder_start(&state);
|
||||||
cylinder_t *cyl = &state.cur_dive->cylinders.cylinders[state.cur_dive->cylinders.nr - 1];
|
|
||||||
cyl->gasmix.o2.permille = ptr[6] * 10;
|
cyl->gasmix.o2.permille = ptr[6] * 10;
|
||||||
cyl->gasmix.he.permille = ptr[7] * 10;
|
cyl->gasmix.he.permille = ptr[7] * 10;
|
||||||
cylinder_end(&state);
|
cylinder_end(&state);
|
||||||
|
|
|
@ -287,9 +287,10 @@ void picture_end(struct parser_state *state)
|
||||||
state->cur_picture = NULL;
|
state->cur_picture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cylinder_start(struct parser_state *state)
|
cylinder_t *cylinder_start(struct parser_state *state)
|
||||||
{
|
{
|
||||||
add_empty_cylinder(&state->cur_dive->cylinders);
|
add_empty_cylinder(&state->cur_dive->cylinders);
|
||||||
|
return &state->cur_dive->cylinders.cylinders[state->cur_dive->cylinders.nr - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
void cylinder_end(struct parser_state *state)
|
void cylinder_end(struct parser_state *state)
|
||||||
|
|
|
@ -101,7 +101,7 @@ void trip_start(struct parser_state *state);
|
||||||
void trip_end(struct parser_state *state);
|
void trip_end(struct parser_state *state);
|
||||||
void picture_start(struct parser_state *state);
|
void picture_start(struct parser_state *state);
|
||||||
void picture_end(struct parser_state *state);
|
void picture_end(struct parser_state *state);
|
||||||
void cylinder_start(struct parser_state *state);
|
cylinder_t *cylinder_start(struct parser_state *state);
|
||||||
void cylinder_end(struct parser_state *state);
|
void cylinder_end(struct parser_state *state);
|
||||||
void ws_start(struct parser_state *state);
|
void ws_start(struct parser_state *state);
|
||||||
void ws_end(struct parser_state *state);
|
void ws_end(struct parser_state *state);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue