summaryrefslogtreecommitdiff
path: root/riscos/wimputils.h
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-03-28 19:10:29 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-03-28 19:10:29 +0000
commit76755556e0d3ac715222061bd6d64a87ce2c2905 (patch)
tree984c1688e8acb04331241a5bef20227f5b29a570 /riscos/wimputils.h
parentb180dd1a1198375765b30d0ddc3b773d432c5f99 (diff)
downloadnetsurf-76755556e0d3ac715222061bd6d64a87ce2c2905.tar.gz
netsurf-76755556e0d3ac715222061bd6d64a87ce2c2905.tar.bz2
Aliasing fun. This is ugly.
svn path=/trunk/netsurf/; revision=6971
Diffstat (limited to 'riscos/wimputils.h')
-rw-r--r--riscos/wimputils.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/riscos/wimputils.h b/riscos/wimputils.h
index 5a6349b9f..5225a720e 100644
--- a/riscos/wimputils.h
+++ b/riscos/wimputils.h
@@ -25,7 +25,7 @@
#include <oslib/wimp.h>
-/* Magical union for working around strict aliasing
+/* Magical union to permit aliasing of wimp_window_state and wimp_open
* Do not use this directly. Use the macros, instead. */
typedef union window_open_state {
wimp_window_state state;
@@ -35,4 +35,31 @@ typedef union window_open_state {
/* Convert a pointer to a wimp_window_state into a pointer to a wimp_open */
#define PTR_WIMP_OPEN(pstate) ((wimp_open *) (window_open_state *) (pstate))
+/* Similarly for wimp_message_list */
+typedef struct ns_wimp_message_list {
+ /* Nasty hack to ensure that we have at least one field in the struct */
+ int first;
+ int rest[];
+} ns_wimp_message_list;
+
+typedef union message_list {
+ wimp_message_list wimp;
+ ns_wimp_message_list ns;
+} message_list;
+
+#define PTR_WIMP_MESSAGE_LIST(l) ((wimp_message_list *) (message_list *) (l))
+
+/* Also for VDU variable lists */
+typedef struct ns_os_vdu_var_list {
+ os_vdu_var first;
+ os_vdu_var rest[];
+} ns_os_vdu_var_list;
+
+typedef union vdu_var_list {
+ os_vdu_var_list os;
+ ns_os_vdu_var_list ns;
+} vdu_var_list;
+
+#define PTR_OS_VDU_VAR_LIST(l) ((os_vdu_var_list *) (vdu_var_list *) (l))
+
#endif