summaryrefslogtreecommitdiffstats
path: root/core/trip.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-05-31 16:09:14 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-06-19 13:11:10 -0700
commit7f4d9db962e73aa5d5089c43c99b78b3690ffb87 (patch)
tree87e143b80ed394fc321765885a75cac229bf9f18 /core/trip.h
parentf1c2cd375e295730d92e23093e44777baf838f1d (diff)
downloadsubsurface-7f4d9db962e73aa5d5089c43c99b78b3690ffb87.tar.gz
Cleanup: move trip-related functions into own translation unit
These functions were spread out over dive.c and divelist.c. Move them into their own file to make all this a bit less monolithic. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/trip.h')
-rw-r--r--core/trip.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/core/trip.h b/core/trip.h
new file mode 100644
index 000000000..3b7fec44d
--- /dev/null
+++ b/core/trip.h
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef TRIP_H
+#define TRIP_H
+
+#include "divelist.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct dive_trip
+{
+ char *location;
+ char *notes;
+ struct dive_table dives;
+ /* Used by the io-routines to mark trips that have already been written. */
+ bool saved;
+ bool autogen;
+} dive_trip_t;
+
+typedef struct trip_table {
+ int nr, allocated;
+ struct dive_trip **trips;
+} trip_table_t;
+
+extern void add_dive_to_trip(struct dive *, dive_trip_t *);
+extern struct dive_trip *unregister_dive_from_trip(struct dive *dive);
+extern void remove_dive_from_trip(struct dive *dive, struct trip_table *trip_table_arg);
+
+extern void insert_trip(dive_trip_t *trip, struct trip_table *trip_table_arg);
+extern int remove_trip(const dive_trip_t *trip, struct trip_table *trip_table_arg);
+extern void free_trip(dive_trip_t *trip);
+extern timestamp_t trip_date(const struct dive_trip *trip);
+extern timestamp_t trip_enddate(const struct dive_trip *trip);
+
+extern bool trip_less_than(const struct dive_trip *a, const struct dive_trip *b);
+extern int comp_trips(const struct dive_trip *a, const struct dive_trip *b);
+extern void sort_trip_table(struct trip_table *table);
+
+extern dive_trip_t *alloc_trip(void);
+extern dive_trip_t *create_trip_from_dive(struct dive *dive);
+extern dive_trip_t *create_and_hookup_trip_from_dive(struct dive *dive, struct trip_table *trip_table_arg);
+extern dive_trip_t *get_dives_to_autogroup(struct dive_table *table, int start, int *from, int *to, bool *allocated);
+extern dive_trip_t *get_trip_for_new_dive(struct dive *new_dive, bool *allocated);
+
+extern void select_dives_in_trip(struct dive_trip *trip);
+extern void deselect_dives_in_trip(struct dive_trip *trip);
+
+extern dive_trip_t *combine_trips(struct dive_trip *trip_a, struct dive_trip *trip_b);
+extern bool is_trip_before_after(const struct dive *dive, bool before);
+extern bool trip_is_single_day(const struct dive_trip *trip);
+extern int trip_shown_dives(const struct dive_trip *trip);
+
+void clear_trip_table(struct trip_table *table);
+
+#ifdef DEBUG_TRIP
+extern void dump_trip_list(void);
+#endif
+
+extern struct trip_table trip_table;
+#ifdef __cplusplus
+}
+
+/* Make pointers to dive_trip and trip_table "Qt metatypes" so that they can be
+ * passed through QVariants and through QML. See comment in dive.h. */
+#include <QObject>
+Q_DECLARE_METATYPE(struct dive_trip *);
+Q_DECLARE_METATYPE(trip_table_t *);
+
+#endif
+
+#endif