diff options
author | Miika Turkia <miika.turkia@gmail.com> | 2017-11-27 19:41:10 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-11-27 13:42:10 -0800 |
commit | 02c80a60b0cb7e2144ff8ef8564587299c9540b9 (patch) | |
tree | 8b8f9f1aaded96530b04325f953b3d730277d9c5 /core/parse.h | |
parent | 0c564a4579c96704cbc2f2aa290edc538a9d5c6a (diff) | |
download | subsurface-02c80a60b0cb7e2144ff8ef8564587299c9540b9.tar.gz |
Refactore parse-xml.c into parse.c and parse-xml.c
This should help us to move parsing that is not XML related to other
files, hopefully making the code cleaner.
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Diffstat (limited to 'core/parse.h')
-rw-r--r-- | core/parse.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/core/parse.h b/core/parse.h new file mode 100644 index 000000000..003ef9929 --- /dev/null +++ b/core/parse.h @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef PARSE_H +#define PARSE_H + +#define MAX_EVENT_NAME 128 + +typedef union { + struct event event; + char allocation[sizeof(struct event) + MAX_EVENT_NAME]; +} event_allocation_t; + +extern event_allocation_t event_allocation; +#define cur_event event_allocation.event + +/* + * Dive info as it is being built up.. + */ +extern struct divecomputer *cur_dc; +extern struct dive *cur_dive; +extern struct dive_site *cur_dive_site; +extern degrees_t cur_latitude, cur_longitude; +extern dive_trip_t *cur_trip; +extern struct sample *cur_sample; +extern struct picture *cur_picture; + + +struct { + struct { + const char *model; + uint32_t deviceid; + const char *nickname, *serial_nr, *firmware; + } dc; +} cur_settings; + +extern bool in_settings; +extern bool in_userid; +extern struct tm cur_tm; +extern int cur_cylinder_index, cur_ws_index; +extern int lastcylinderindex, next_o2_sensor; +extern int o2pressure_sensor; +extern struct extra_data cur_extra_data; + +enum import_source { + UNKNOWN, + LIBDIVECOMPUTER, + DIVINGLOG, + UDDF, + SSRF_WS, +} import_source; + +/* the dive table holds the overall dive list; target table points at + * the table we are currently filling */ +extern struct dive_table dive_table; +extern struct dive_table *target_table; + +int trimspace(char *buffer); +void clear_table(struct dive_table *table); +void record_dive_to_table(struct dive *dive, struct dive_table *table); +void record_dive(struct dive *dive); +void start_match(const char *type, const char *name, char *buffer); +void nonmatch(const char *type, const char *name, char *buffer); +typedef void (*matchfn_t)(char *buffer, void *); +int match(const char *pattern, int plen, const char *name, matchfn_t fn, char *buf, void *data); +void event_start(void); +void event_end(void); +struct divecomputer *get_dc(void); + +bool is_dive(void); +void reset_dc_info(struct divecomputer *dc); +void reset_dc_settings(void); +void settings_start(void); +void settings_end(void); +void dc_settings_start(void); +void dc_settings_end(void); +void dive_site_start(void); +void dive_site_end(void); +void dive_start(void); +void dive_end(void); +void trip_start(void); +void trip_end(void); +void picture_start(void); +void picture_end(void); +void cylinder_start(void); +void cylinder_end(void); +void ws_start(void); +void ws_end(void); + +void sample_start(void); +void sample_end(void); +void divecomputer_start(void); +void divecomputer_end(void); +void userid_start(void); +void userid_stop(void); +void utf8_string(char *buffer, void *_res); + +#endif |