aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/type.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/type.h')
-rw-r--r--src/type.h34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/type.h b/src/type.h
index 24fc97f..eda02c1 100644
--- a/src/type.h
+++ b/src/type.h
@@ -2,23 +2,43 @@
* Uzbl Types
*/
+#ifndef __UZBL_TYPE__
+#define __UZBL_TYPE__
+
enum ptr_type {
TYPE_INT = 1,
TYPE_STR,
TYPE_FLOAT,
TYPE_NAME,
- TYPE_FORMATTEDSTR // used by send_event
+ // used by send_event
+ TYPE_FORMATTEDSTR,
+ TYPE_STR_ARRAY
};
+// I'm doing this instead of just using "uzbl_value *" because this way our
+// list of variables can be:
+// { .ptr = { .s = &some_char_star }, ... }
+// instead of
+// { .ptr = (uzbl_value *)&some_char_star, ... }
+// which works here, but I suspect has portability issues.
+typedef union uzbl_value_ptr_t {
+ int *i;
+ float *f;
+ gchar **s;
+} uzbl_value_ptr;
+
+/* a really generic function pointer. */
+typedef void (*uzbl_fp)(void);
+
typedef struct {
enum ptr_type type;
- union {
- int *i;
- float *f;
- gchar **s;
- } ptr;
+ uzbl_value_ptr ptr;
int dump;
int writeable;
- /*@null@*/ void (*func)(void);
+
+ /* the various get_/set_ functions cast these back into something useful. */
+ uzbl_fp getter;
+ uzbl_fp setter;
} uzbl_cmdprop;
+#endif