22 #include "opensync_internals.h"
32 #ifndef DOXYGEN_SHOULD_SKIP_THIS
33 OSyncObjFormatTemplate *osync_env_find_format_template(OSyncEnv *env,
const char *name)
36 for (o = env->format_templates; o; o = o->next) {
37 OSyncObjFormatTemplate *tmpl = o->data;
38 if (!strcmp(tmpl->name, name))
44 OSyncObjTypeTemplate *osync_env_find_objtype_template(OSyncEnv *env,
const char *name)
47 for (o = env->objtype_templates; o; o = o->next) {
48 OSyncObjTypeTemplate *tmpl = o->data;
49 if (!strcmp(tmpl->name, name))
55 OSyncDataDetector *osync_env_find_detector(OSyncEnv *env,
const char *sourcename,
const char *targetname)
58 for (o = env->data_detectors; o; o = o->next) {
60 if (!strcmp(tmpl->sourceformat, sourcename) && !strcmp(tmpl->targetformat, targetname))
66 OSyncConverterTemplate *osync_env_find_converter_template(OSyncEnv *env,
const char *sourcename,
const char *targetname)
69 for (o = env->converter_templates; o; o = o->next) {
70 OSyncConverterTemplate *tmpl = o->data;
71 if (!strcmp(tmpl->source_format, sourcename) && !strcmp(tmpl->target_format, targetname))
80 void osync_env_register_detector(OSyncEnv *env,
const char *sourceformat,
const char *format, OSyncFormatDetectDataFunc detect_func)
82 g_assert(detect_func);
84 detector->sourceformat = strdup(sourceformat);
85 detector->targetformat = strdup(format);
86 detector->detect_func = detect_func;
89 env->data_detectors = g_list_append(env->data_detectors, detector);
91 detector->sourceformat = strdup(format);
92 detector->targetformat = strdup(sourceformat);
93 detector->detect_func = NULL;
95 env->data_detectors = g_list_append(env->data_detectors, detector);
98 void osync_env_register_filter_function(OSyncEnv *env,
const char *name,
const char *objtype,
const char *format, OSyncFilterFunction hook)
101 function->name = g_strdup(name);
102 function->objtype = g_strdup(objtype);
103 function->format = g_strdup(format);
104 function->hook = hook;
106 env->filter_functions = g_list_append(env->filter_functions,
function);
109 void osync_env_register_objformat(OSyncEnv *env,
const char *
typename,
const char *name)
111 OSyncObjFormatTemplate *format = NULL;
112 if (!(format = osync_env_find_format_template(env, name))) {
113 format = g_malloc0(
sizeof(OSyncObjFormatTemplate));
114 format->name = strdup(name);
115 format->objtype = g_strdup(
typename);
119 env->format_templates = g_list_append(env->format_templates, format);
123 void osync_env_register_objtype(OSyncEnv *env,
const char *name)
125 OSyncObjTypeTemplate *type = NULL;
126 if (!(type = osync_env_find_objtype_template(env, name))) {
127 type = g_malloc0(
sizeof(OSyncObjTypeTemplate));
128 type->name = g_strdup(name);
129 env->objtype_templates = g_list_append(env->objtype_templates, type);
133 void osync_env_register_converter(OSyncEnv *env, ConverterType type,
const char *sourcename,
const char *targetname, OSyncFormatConvertFunc convert_func)
135 OSyncConverterTemplate *converter = g_malloc0(
sizeof(OSyncConverterTemplate));
137 converter->source_format = sourcename;
138 converter->target_format = targetname;
139 converter->convert_func = convert_func;
140 converter->type = type;
141 env->converter_templates = g_list_append(env->converter_templates, converter);
144 void osync_env_converter_set_init(OSyncEnv *env,
const char *sourcename,
const char *targetname, OSyncFormatConverterInitFunc init_func, OSyncFormatConverterFinalizeFunc fin_func)
146 OSyncConverterTemplate *converter = osync_env_find_converter_template(env, sourcename, targetname);
147 osync_assert_msg(converter != NULL,
"You need to register the converter first");
149 converter->init_func = init_func;
150 converter->fin_func = fin_func;
153 void osync_env_register_extension(OSyncEnv *env,
const char *from_format,
const char *to_format,
const char *extension_name, OSyncFormatExtInitFunc init_func)
155 OSyncFormatExtensionTemplate *ext = g_malloc0(
sizeof(OSyncFormatExtensionTemplate));
156 ext->from_formatname = g_strdup(from_format);
157 ext->to_formatname = g_strdup(to_format);
158 ext->name = g_strdup(extension_name);
159 ext->init_func = init_func;
161 env->extension_templates = g_list_append(env->extension_templates, ext);
164 void osync_env_format_set_demarshall_func(OSyncEnv *env,
const char *formatname, OSyncFormatDemarshallFunc demarshall_func)
168 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
169 osync_assert_msg(format,
"You need to register the formattype first");
170 format->demarshall_func = demarshall_func;
173 void osync_env_format_set_marshall_func(OSyncEnv *env,
const char *formatname, OSyncFormatMarshallFunc marshall_func)
177 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
178 osync_assert_msg(format,
"You need to register the formattype first");
179 format->marshall_func = marshall_func;
182 void osync_env_format_set_compare_func(OSyncEnv *env,
const char *formatname, OSyncFormatCompareFunc cmp_func)
186 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
187 osync_assert_msg(format,
"You need to register the formattype first");
188 format->cmp_func = cmp_func;
191 void osync_env_format_set_destroy_func(OSyncEnv *env,
const char *formatname, OSyncFormatDestroyFunc destroy_func)
194 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
195 osync_assert_msg(format,
"You need to register the formattype first");
196 format->destroy_func = destroy_func;
199 void osync_env_format_set_copy_func(OSyncEnv *env,
const char *formatname, OSyncFormatCopyFunc copy_func)
202 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
203 osync_assert_msg(format,
"You need to register the formattype first");
204 format->copy_func = copy_func;
233 void osync_env_format_set_duplicate_func(OSyncEnv *env,
const char *formatname, OSyncFormatDuplicateFunc dupe_func)
236 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
237 osync_assert_msg(format,
"You need to register the formattype first");
238 format->duplicate_func = dupe_func;
241 void osync_env_format_set_create_func(OSyncEnv *env,
const char *formatname, OSyncFormatCreateFunc create_func)
244 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
245 osync_assert_msg(format,
"You need to register the formattype first");
246 format->create_func = create_func;
249 void osync_env_format_set_print_func(OSyncEnv *env,
const char *formatname, OSyncFormatPrintFunc print_func)
252 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
253 osync_assert_msg(format,
"You need to register the formattype first");
254 format->print_func = print_func;
257 void osync_env_format_set_revision_func(OSyncEnv *env,
const char *formatname, OSyncFormatRevisionFunc revision_func)
260 OSyncObjFormatTemplate *format = osync_env_find_format_template(env, formatname);
261 osync_assert_msg(format,
"You need to register the formattype first");
262 format->revision_func = revision_func;