]> Dogcows Code - chaz/homebank/blob - src/ext-value.h
add plugin engine (supports C and Perl plugins)
[chaz/homebank] / src / ext-value.h
1
2 #ifndef __EXT_VALUE_H__
3 #define __EXT_VALUE_H__
4
5 #include "homebank.h"
6
7
8 #define DA_TYPE_ACC (da_acc_get_type())
9 #define DA_TYPE_TRANSACTION (da_transaction_get_type())
10
11 #define obj(_1, _2, _3, _4, PREFIX) GType PREFIX##get_type(void);
12 #include "ext-value.h"
13 #undef obj
14
15
16 #define val(CTYPE, NAME, PART, GTYPE) \
17 static inline GValue* EXT_##NAME(GValue* v, CTYPE c) { \
18 g_value_init(v, GTYPE); \
19 g_value_set_##PART(v, c); \
20 return v; \
21 }
22 #define obj(CTYPE, NAME, PART, GTYPE, _5) val(CTYPE*, NAME, PART, GTYPE)
23 #include "ext-value.h"
24 #undef val
25 #undef obj
26
27
28 const GValue* ext_value_undef(void);
29 const GValue* ext_value_true(void);
30 const GValue* ext_value_false(void);
31
32 #define EXT_UNDEF (ext_value_undef())
33 #define EXT_TRUE (ext_value_true())
34 #define EXT_FALSE (ext_value_false())
35
36 GValue* EXT_LIST(GValue* v, ...);
37 GValue* EXT_HASH(GValue* v, ...);
38 GValue* EXT_JULIAN(GValue* v, guint32 d);
39
40
41 #else
42
43 #ifdef val
44 // C type, name, fundamental, GType
45 val(gboolean, BOOLEAN, boolean, G_TYPE_BOOLEAN)
46 val(gint, INT, int, G_TYPE_INT)
47 val(guint, UINT, uint, G_TYPE_UINT)
48 val(gdouble, DOUBLE, double, G_TYPE_DOUBLE)
49 val(gchar, CHAR, schar, G_TYPE_CHAR)
50 val(gchar*, STRING, string, G_TYPE_STRING)
51 val(GPtrArray*, ARRAY, boxed, G_TYPE_PTR_ARRAY)
52 val(GHashTable*, HASH_TABLE, boxed, G_TYPE_HASH_TABLE)
53 val(GDate*, DATE, boxed, G_TYPE_DATE)
54 val(void*, OBJECT, object, G_TYPE_OBJECT)
55 #endif
56
57 #ifdef obj
58 // C type, name, fundamental, GType, prefix
59 obj(Account, ACCOUNT, pointer, DA_TYPE_ACC, da_acc_)
60 obj(Transaction, TRANSACTION, pointer, DA_TYPE_TRANSACTION, da_transaction_)
61 #endif
62
63 #endif
64
This page took 0.040267 seconds and 4 git commands to generate.