diff options
Diffstat (limited to 'src/type.h')
-rw-r--r-- | src/type.h | 30 |
1 files changed, 24 insertions, 6 deletions
@@ -2,6 +2,9 @@ * Uzbl Types */ +#ifndef __UZBL_TYPE__ +#define __UZBL_TYPE__ + enum ptr_type { TYPE_INT = 1, TYPE_STR, @@ -12,15 +15,30 @@ enum ptr_type { 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 |