summaryrefslogtreecommitdiffstats
path: root/pref.h
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2013-01-10 17:26:10 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-01-10 20:30:32 -0800
commit868a2cc0905b719cb5f3eaf15f0550d6ce82dbeb (patch)
treef7cca241ff73a2ae6c38c975911b3beae5cc1406 /pref.h
parent4c13f1f6b4ad7deb2071fb4848ddf43be0af4db7 (diff)
downloadsubsurface-868a2cc0905b719cb5f3eaf15f0550d6ce82dbeb.tar.gz
Split up preference data structure definition into 'pref.h'
.. and rename the badly named 'output_units/input_units' variables. We used to have this confusing thing where we had two different units (input vs output) that *look* like they are mirror images, but in fact "output_units" was the user units, and "input_units" are the XML parsing units. So this renames them to be clearer. "output_units" is now just "units" (it's the units a user would ever see), and "input_units" is now "xml_parsing_units" and set by the XML file parsers to reflect the units of the parsed file. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'pref.h')
-rw-r--r--pref.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/pref.h b/pref.h
new file mode 100644
index 000000000..ddc2eaff0
--- /dev/null
+++ b/pref.h
@@ -0,0 +1,54 @@
+#ifndef PREF_H
+#define PREF_H
+
+typedef struct {
+ gboolean cylinder;
+ gboolean temperature;
+ gboolean totalweight;
+ gboolean suit;
+ gboolean nitrox;
+ gboolean sac;
+ gboolean otu;
+ gboolean maxcns;
+} visible_cols_t;
+
+typedef struct {
+ gboolean po2;
+ gboolean pn2;
+ gboolean phe;
+ double po2_threshold;
+ double pn2_threshold;
+ double phe_threshold;
+} partial_pressure_graphs_t;
+
+struct preferences {
+ struct units units;
+ visible_cols_t visible_cols;
+ partial_pressure_graphs_t pp_graphs;
+ gboolean profile_red_ceiling;
+ gboolean profile_calc_ceiling;
+ gboolean calc_ceiling_3m_incr;
+ double gflow;
+ double gfhigh;
+};
+
+extern struct preferences prefs, default_prefs;
+
+#define PP_GRAPHS_ENABLED (prefs.pp_graphs.po2 || prefs.pp_graphs.pn2 || prefs.pp_graphs.phe)
+
+typedef enum {
+ PREF_BOOL,
+ PREF_STRING
+} pref_type_t;
+
+#define BOOL_TO_PTR(_cond) ((_cond) ? (void *)1 : NULL)
+#define PTR_TO_BOOL(_ptr) ((_ptr) != NULL)
+
+extern void subsurface_open_conf(void);
+extern void subsurface_set_conf(char *name, pref_type_t type, const void *value);
+extern void subsurface_unset_conf(char *name);
+extern const void *subsurface_get_conf(char *name, pref_type_t type);
+extern void subsurface_flush_conf(void);
+extern void subsurface_close_conf(void);
+
+#endif /* PREF_H */