]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Start cleaning up dive accessors
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Aug 2011 23:33:20 +0000 (16:33 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Aug 2011 23:33:20 +0000 (16:33 -0700)
I'm going to add a menu to import (and eventually export) dives, and so
we'd like to be able to start out with no dives at all.  Right now we
croak if that happens - it's not like the code has been written with
actual end users in mind.

So start cleaning things up.  First make the 'current_dive' macro work
right even for invalid dives.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
display.h
dive.h

index b9de932cb942608e291e9e150c7a0fe4b2edc50f..8f972e358bae559918735020fdfdad0b099062c1 100644 (file)
--- a/display.h
+++ b/display.h
@@ -6,12 +6,12 @@
 #include <cairo.h>
 
 extern int selected_dive;
+#define current_dive (get_dive(selected_dive))
+
 extern GtkWidget *dive_profile_frame(void);
 extern GtkWidget *dive_info_frame(void);
 extern GtkWidget *create_dive_list(void);
 extern void update_dive_info(struct dive *dive);
 extern void repaint_dive(void);
 
-#define current_dive (dive_table.dives[selected_dive])
-
 #endif
diff --git a/dive.h b/dive.h
index a8e3c319afd58cbc9011d910f17a409997d9f707..23e2f544c0a959158e161e53953fa6893c029d8a 100644 (file)
--- a/dive.h
+++ b/dive.h
@@ -121,6 +121,13 @@ struct dive_table {
 
 extern struct dive_table dive_table;
 
+static inline struct dive *get_dive(unsigned int nr)
+{
+       if (nr >= dive_table.nr)
+               return NULL;
+       return dive_table.dives[nr];
+}
+
 extern void parse_xml_init(void);
 extern void parse_xml_file(const char *filename);