2 #ifndef __SFI_VALUES_H__
3 #define __SFI_VALUES_H__
11 #define SFI_TYPE_BOOL G_TYPE_BOOLEAN
12 #define SFI_TYPE_INT G_TYPE_INT
13 #define SFI_TYPE_NUM G_TYPE_INT64
14 #define SFI_TYPE_REAL G_TYPE_DOUBLE
15 #define SFI_TYPE_STRING G_TYPE_STRING
16 #define SFI_TYPE_PSPEC G_TYPE_PARAM
20 #define SFI_TYPE_CHOICE (sfi__value_types[0])
21 #define SFI_TYPE_BBLOCK (sfi__value_types[1])
22 #define SFI_TYPE_FBLOCK (sfi__value_types[2])
23 #define SFI_TYPE_SEQ (sfi__value_types[3])
24 #define SFI_TYPE_REC (sfi__value_types[4])
25 #define SFI_TYPE_PROXY (sfi__value_types[5])
29 #define SFI_IS_VALUE(value) (sfi_check_value (value))
30 #define SFI_VALUE_HOLDS_BOOL(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_BOOL))
31 #define SFI_VALUE_HOLDS_INT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_INT))
32 #define SFI_VALUE_HOLDS_NUM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_NUM))
33 #define SFI_VALUE_HOLDS_REAL(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_REAL))
34 #define SFI_VALUE_HOLDS_STRING(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_STRING))
35 #define SFI_VALUE_HOLDS_CHOICE(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_CHOICE))
36 #define SFI_VALUE_HOLDS_BBLOCK(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_BBLOCK))
37 #define SFI_VALUE_HOLDS_FBLOCK(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_FBLOCK))
38 #define SFI_VALUE_HOLDS_PSPEC(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_PSPEC))
39 #define SFI_VALUE_HOLDS_SEQ(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_SEQ))
40 #define SFI_VALUE_HOLDS_REC(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_REC))
41 #define SFI_VALUE_HOLDS_PROXY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), SFI_TYPE_PROXY))
45 #define sfi_value_get_bool g_value_get_boolean
46 #define sfi_value_set_bool g_value_set_boolean
47 #define sfi_value_get_int g_value_get_int
48 #define sfi_value_set_int g_value_set_int
49 #define sfi_value_get_num g_value_get_int64
50 #define sfi_value_set_num g_value_set_int64
51 #define sfi_value_get_real g_value_get_double
52 #define sfi_value_set_real g_value_set_double
53 #define sfi_value_get_string g_value_get_string
54 #define sfi_value_set_string g_value_set_string
55 #define sfi_value_dup_string g_value_dup_string
56 #define sfi_value_set_static_string g_value_set_static_string
57 #define sfi_value_take_string g_value_take_string
61 const char* sfi_value_get_choice (
const GValue *value);
62 void sfi_value_set_choice (GValue *value,
63 const gchar *choice_value);
64 SfiBBlock* sfi_value_get_bblock (
const GValue *value);
65 SfiBBlock* sfi_value_dup_bblock (
const GValue *value);
66 void sfi_value_set_bblock (GValue *value,
68 void sfi_value_take_bblock (GValue *value,
70 SfiFBlock* sfi_value_get_fblock (
const GValue *value);
71 SfiFBlock* sfi_value_dup_fblock (
const GValue *value);
72 void sfi_value_set_fblock (GValue *value,
74 void sfi_value_take_fblock (GValue *value,
76 GParamSpec* sfi_value_get_pspec (
const GValue *value);
77 GParamSpec* sfi_value_dup_pspec (
const GValue *value);
78 void sfi_value_set_pspec (GValue *value,
80 void sfi_value_take_pspec (GValue *value,
82 SfiSeq* sfi_value_get_seq (
const GValue *value);
83 void sfi_value_set_seq (GValue *value,
85 void sfi_value_take_seq (GValue *value,
87 SfiRec* sfi_value_get_rec (
const GValue *value);
88 SfiRec* sfi_value_dup_rec (
const GValue *value);
89 void sfi_value_set_rec (GValue *value,
91 void sfi_value_take_rec (GValue *value,
93 SfiProxy sfi_value_get_proxy (
const GValue *value);
94 void sfi_value_set_proxy (GValue *value,
96 void sfi_value_copy_deep (
const GValue *src_value,
98 #define sfi_value_copy_shallow g_value_copy
102 GValue* sfi_value_empty (
void);
103 GValue* sfi_value_clone_deep (
const GValue *value);
104 GValue* sfi_value_clone_shallow (
const GValue *value);
105 GValue* sfi_value_bool (SfiBool vbool);
106 GValue* sfi_value_int (SfiInt vint);
107 GValue* sfi_value_num (SfiNum vnum);
108 GValue* sfi_value_real (SfiReal vreal);
109 GValue* sfi_value_string (
const gchar *vstring);
110 GValue* sfi_value_lstring (
const gchar *vstring,
112 GValue* sfi_value_choice (
const gchar *vchoice);
113 GValue* sfi_value_lchoice (
const gchar *vchoice,
115 GValue* sfi_value_choice_enum (
const GValue *enum_value);
116 GValue* sfi_value_choice_genum (gint enum_value,
118 GValue* sfi_value_bblock (SfiBBlock *vfblock);
119 GValue* sfi_value_fblock (SfiFBlock *vfblock);
120 GValue* sfi_value_pspec (GParamSpec *pspec);
121 GValue* sfi_value_seq (SfiSeq *vseq);
122 GValue* sfi_value_new_take_seq (SfiSeq *vseq);
123 GValue* sfi_value_rec (SfiRec *vrec);
124 GValue* sfi_value_new_take_rec (SfiRec *vrec);
125 GValue* sfi_value_proxy (SfiProxy vproxy);
126 void sfi_value_free (GValue *value);
130 #define SFI_VALUE_HOLDS_NOTE(value) SFI_VALUE_HOLDS_INT(value)
131 #define sfi_value_get_note sfi_value_get_int
132 #define sfi_value_set_note sfi_value_set_int
133 #define sfi_value_note sfi_value_int
134 #define SFI_VALUE_HOLDS_TIME(value) SFI_VALUE_HOLDS_NUM(value)
135 #define sfi_value_get_time sfi_value_get_num
136 #define sfi_value_set_time sfi_value_set_num
137 #define sfi_value_time sfi_value_num
141 #define SFI_CHOICE_ERROR_QUARK (g_quark_from_string ("sfi-choice-error"))
142 void sfi_value_choice2enum (
const GValue *choice_value,
144 GParamSpec *fallback_param);
145 void sfi_value_choice2enum_simple (
const GValue *choice_value,
147 void sfi_value_enum2choice (
const GValue *enum_value,
148 GValue *choice_value);
149 gint sfi_choice2enum_checked (
const gchar *choice_value,
152 gint sfi_choice2enum (
const gchar *choice_value,
154 const gchar* sfi_enum2choice (gint enum_value,
156 gint sfi_value_get_enum_auto (GType enum_type,
157 const GValue *value);
158 void sfi_value_set_enum_auto (GType enum_type,
162 gboolean sfi_value_transform (
const GValue *src_value,
164 gboolean sfi_value_type_compatible (GType src_type,
166 gboolean sfi_value_type_transformable (GType src_type,
171 void _sfi_init_values (
void);
172 extern GType *sfi__value_types;
173 gboolean sfi_check_value (
const GValue *value);