#ifndef __EXT_VALUE_H__ #define __EXT_VALUE_H__ #include "homebank.h" #define DA_TYPE_ACC (da_acc_get_type()) #define DA_TYPE_TRANSACTION (da_transaction_get_type()) #define obj(_1, _2, _3, _4, PREFIX) GType PREFIX##get_type(void); #include "ext-value.h" #undef obj #define val(CTYPE, NAME, PART, GTYPE) \ static inline GValue* EXT_##NAME(GValue* v, CTYPE c) { \ g_value_init(v, GTYPE); \ g_value_set_##PART(v, c); \ return v; \ } #define obj(CTYPE, NAME, PART, GTYPE, _5) val(CTYPE*, NAME, PART, GTYPE) #include "ext-value.h" #undef val #undef obj const GValue* ext_value_undef(void); const GValue* ext_value_true(void); const GValue* ext_value_false(void); #define EXT_UNDEF (ext_value_undef()) #define EXT_TRUE (ext_value_true()) #define EXT_FALSE (ext_value_false()) GValue* EXT_LIST(GValue* v, ...); GValue* EXT_HASH(GValue* v, ...); GValue* EXT_JULIAN(GValue* v, guint32 d); #else #ifdef val // C type, name, fundamental, GType val(gboolean, BOOLEAN, boolean, G_TYPE_BOOLEAN) val(gint, INT, int, G_TYPE_INT) val(guint, UINT, uint, G_TYPE_UINT) val(gdouble, DOUBLE, double, G_TYPE_DOUBLE) val(gchar, CHAR, schar, G_TYPE_CHAR) val(gchar*, STRING, string, G_TYPE_STRING) val(GPtrArray*, ARRAY, boxed, G_TYPE_PTR_ARRAY) val(GHashTable*, HASH_TABLE, boxed, G_TYPE_HASH_TABLE) val(GDate*, DATE, boxed, G_TYPE_DATE) val(void*, OBJECT, object, G_TYPE_OBJECT) #endif #ifdef obj // C type, name, fundamental, GType, prefix obj(Account, ACCOUNT, pointer, DA_TYPE_ACC, da_acc_) obj(Transaction, TRANSACTION, pointer, DA_TYPE_TRANSACTION, da_transaction_) #endif #endif