36 g_return_if_fail(setting && (value || setting->type ==
STRING));
38 switch(setting->type) {
40 setting->value.b = *((
bool *) value);
43 setting->value.f = *((
float *) value);
46 setting->value.i = *((
int *) value);
49 if (setting->value.s != NULL) {
50 g_free(setting->value.s);
52 setting->value.s = value ? g_strdup(value) : NULL;
58 if (session && setting->callback != NULL) {
59 setting->callback(session, setting->name, setting->type, value, setting->data);
66 g_return_val_if_fail(session != NULL,
false);
67 g_return_val_if_fail(name != NULL,
false);
68 g_return_val_if_fail(type !=
UNKNOWN,
false);
69 if (type !=
STRING && value == NULL) {
79 girara_setting_t* setting = g_slice_new0(girara_setting_t);
81 setting->name = g_strdup(name);
83 setting->init_only = init_only;
84 setting->description = description ? g_strdup(description) : NULL;
85 setting->callback = callback;
97 g_return_val_if_fail(session != NULL,
false);
98 g_return_val_if_fail(name != NULL,
false);
101 if (setting == NULL) {
112 g_return_val_if_fail(setting != NULL && dest != NULL,
false);
114 bool *bvalue = (
bool*) dest;
115 float *fvalue = (
float*) dest;
116 int *ivalue = (
int*) dest;
117 char **svalue = (
char**) dest;
119 switch(setting->type) {
121 *bvalue = setting->value.b;
124 *fvalue = setting->value.f;
127 *ivalue = setting->value.i;
130 *svalue = setting->value.s ? g_strdup(setting->value.s) : NULL;
142 g_return_val_if_fail(session != NULL && name != NULL && dest != NULL,
false);
145 if (setting == NULL) {
159 g_free(setting->name);
160 g_free(setting->description);
161 if (setting->type ==
STRING) {
162 g_free(setting->value.s);
164 g_slice_free(girara_setting_t, setting);
170 g_return_val_if_fail(session != NULL, NULL);
171 g_return_val_if_fail(name != NULL, NULL);
173 girara_setting_t* result = NULL;
175 if (g_strcmp0(setting->name, name) == 0) {
186 g_return_val_if_fail(setting, NULL);
187 return setting->name;
192 g_return_val_if_fail(setting,
UNKNOWN);
193 return setting->type;
204 if (completion == NULL) {
214 unsigned int input_length = strlen(input);
217 if ((setting->init_only ==
false) && (input_length <= strlen(setting->name)) &&
218 !strncmp(input, setting->name, input_length)) {