summaryrefslogtreecommitdiff
path: root/src/core/wee-config-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/wee-config-file.c')
-rw-r--r--src/core/wee-config-file.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/core/wee-config-file.c b/src/core/wee-config-file.c
index 99fcb85ad..f9a5b4d88 100644
--- a/src/core/wee-config-file.c
+++ b/src/core/wee-config-file.c
@@ -27,6 +27,7 @@
#endif
#include <stdlib.h>
+#include <stddef.h>
#include <unistd.h>
#include <stdarg.h>
#include <string.h>
@@ -34,6 +35,7 @@
#include "weechat.h"
#include "wee-config-file.h"
+#include "wee-hdata.h"
#include "wee-hook.h"
#include "wee-infolist.h"
#include "wee-log.h"
@@ -51,6 +53,10 @@ char *config_option_type_string[CONFIG_NUM_OPTION_TYPES] =
char *config_boolean_true[] = { "on", "yes", "y", "true", "t", "1", NULL };
char *config_boolean_false[] = { "off", "no", "n", "false", "f", "0", NULL };
+struct t_hdata *config_file_hdata_config_file = NULL;
+struct t_hdata *config_file_hdata_config_section = NULL;
+struct t_hdata *config_file_hdata_config_option = NULL;
+
void config_file_option_free_data (struct t_config_option *option);
@@ -2544,6 +2550,125 @@ config_file_free_all_plugin (struct t_weechat_plugin *plugin)
}
/*
+ * config_file_hdata_config_file_cb: return hdata for config_file
+ */
+
+struct t_hdata *
+config_file_hdata_config_file_cb (void *data, const char *hdata_name)
+{
+ struct t_hdata *hdata;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (config_file_hdata_config_file)
+ return config_file_hdata_config_file;
+
+ hdata = hdata_new (hdata_name, "prev_config", "next_config");
+ if (hdata)
+ {
+ config_file_hdata_config_file = hdata;
+ HDATA_VAR(struct t_config_file, plugin, POINTER);
+ HDATA_VAR(struct t_config_file, name, STRING);
+ HDATA_VAR(struct t_config_file, filename, STRING);
+ HDATA_VAR(struct t_config_file, file, POINTER);
+ HDATA_VAR(struct t_config_file, callback_reload, POINTER);
+ HDATA_VAR(struct t_config_file, callback_reload_data, POINTER);
+ HDATA_VAR(struct t_config_file, sections, POINTER);
+ HDATA_VAR(struct t_config_file, last_section, POINTER);
+ HDATA_VAR(struct t_config_file, prev_config, POINTER);
+ HDATA_VAR(struct t_config_file, next_config, POINTER);
+ HDATA_LIST(config_files);
+ HDATA_LIST(last_config_file);
+ }
+ return config_file_hdata_config_file;
+}
+
+/*
+ * config_file_hdata_config_section_cb: return hdata for config_section
+ */
+
+struct t_hdata *
+config_file_hdata_config_section_cb (void *data, const char *hdata_name)
+{
+ struct t_hdata *hdata;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (config_file_hdata_config_section)
+ return config_file_hdata_config_section;
+
+ hdata = hdata_new (hdata_name, "prev_section", "next_section");
+ if (hdata)
+ {
+ config_file_hdata_config_section = hdata;
+ HDATA_VAR(struct t_config_section, config_file, POINTER);
+ HDATA_VAR(struct t_config_section, name, STRING);
+ HDATA_VAR(struct t_config_section, user_can_add_options, INTEGER);
+ HDATA_VAR(struct t_config_section, user_can_delete_options, INTEGER);
+ HDATA_VAR(struct t_config_section, callback_read, POINTER);
+ HDATA_VAR(struct t_config_section, callback_read_data, POINTER);
+ HDATA_VAR(struct t_config_section, callback_write, POINTER);
+ HDATA_VAR(struct t_config_section, callback_write_data, POINTER);
+ HDATA_VAR(struct t_config_section, callback_write_default, POINTER);
+ HDATA_VAR(struct t_config_section, callback_write_default_data, POINTER);
+ HDATA_VAR(struct t_config_section, callback_create_option, POINTER);
+ HDATA_VAR(struct t_config_section, callback_create_option_data, POINTER);
+ HDATA_VAR(struct t_config_section, callback_delete_option, POINTER);
+ HDATA_VAR(struct t_config_section, callback_delete_option_data, POINTER);
+ HDATA_VAR(struct t_config_section, options, POINTER);
+ HDATA_VAR(struct t_config_section, last_option, POINTER);
+ HDATA_VAR(struct t_config_section, prev_section, POINTER);
+ HDATA_VAR(struct t_config_section, next_section, POINTER);
+ }
+ return config_file_hdata_config_section;
+}
+
+/*
+ * config_file_hdata_config_option_cb: return hdata for config_option
+ */
+
+struct t_hdata *
+config_file_hdata_config_option_cb (void *data, const char *hdata_name)
+{
+ struct t_hdata *hdata;
+
+ /* make C compiler happy */
+ (void) data;
+
+ if (config_file_hdata_config_option)
+ return config_file_hdata_config_option;
+
+ hdata = hdata_new (hdata_name, "prev_option", "next_option");
+ if (hdata)
+ {
+ config_file_hdata_config_option = hdata;
+ HDATA_VAR(struct t_config_option, config_file, POINTER);
+ HDATA_VAR(struct t_config_option, section, POINTER);
+ HDATA_VAR(struct t_config_option, name, STRING);
+ HDATA_VAR(struct t_config_option, type, INTEGER);
+ HDATA_VAR(struct t_config_option, description, STRING);
+ HDATA_VAR(struct t_config_option, string_values, POINTER);
+ HDATA_VAR(struct t_config_option, min, INTEGER);
+ HDATA_VAR(struct t_config_option, max, INTEGER);
+ HDATA_VAR(struct t_config_option, default_value, POINTER);
+ HDATA_VAR(struct t_config_option, value, POINTER);
+ HDATA_VAR(struct t_config_option, null_value_allowed, INTEGER);
+ HDATA_VAR(struct t_config_option, callback_check_value, POINTER);
+ HDATA_VAR(struct t_config_option, callback_check_value_data, POINTER);
+ HDATA_VAR(struct t_config_option, callback_change, POINTER);
+ HDATA_VAR(struct t_config_option, callback_change_data, POINTER);
+ HDATA_VAR(struct t_config_option, callback_delete, POINTER);
+ HDATA_VAR(struct t_config_option, callback_delete_data, POINTER);
+ HDATA_VAR(struct t_config_option, loaded, INTEGER);
+ HDATA_VAR(struct t_config_option, prev_option, POINTER);
+ HDATA_VAR(struct t_config_option, next_option, POINTER);
+ }
+ return config_file_hdata_config_option;
+}
+
+/*
* config_file_add_to_infolist: add configuration options in an infolist
* return 1 if ok, 0 if error
*/