summaryrefslogtreecommitdiffstats
path: root/debian/opensync/opensync-0.22/opensync/opensync_format_internals.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/opensync/opensync-0.22/opensync/opensync_format_internals.h')
-rw-r--r--debian/opensync/opensync-0.22/opensync/opensync_format_internals.h175
1 files changed, 175 insertions, 0 deletions
diff --git a/debian/opensync/opensync-0.22/opensync/opensync_format_internals.h b/debian/opensync/opensync-0.22/opensync/opensync_format_internals.h
new file mode 100644
index 00000000..0049abcd
--- /dev/null
+++ b/debian/opensync/opensync-0.22/opensync/opensync_format_internals.h
@@ -0,0 +1,175 @@
+/**
+ * @defgroup OSyncConvPrivate OpenSync Conversion Internals
+ * @ingroup OSyncPrivate
+ * @brief The private API of opensync
+ *
+ * This gives you an insight in the private API of opensync.
+ *
+ */
+/*@{*/
+
+/*! @brief The environment used for conversions
+ */
+struct OSyncFormatEnv {
+ /** A list of object types */
+ GList *objtypes;
+ /** A List of formats */
+ GList *objformats;
+ /** A list of available converters */
+ GList *converters;
+ /** A list of filter functions */
+ GList *filter_functions;
+ /** A list of extensions */
+ GList *extensions;
+};
+
+/*! @brief Represent a abstract object type (like "contact")
+ */
+struct OSyncObjType {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ char *name;
+ GList *formats;
+ GList *converters;
+ OSyncFormatEnv *env;
+ osync_bool needs_slow_sync;
+ OSyncObjFormat *common_format;
+#endif
+};
+
+/*! @brief Represent a format for a object type
+ */
+struct OSyncObjFormat {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ char *name;
+ OSyncFormatEnv *env;
+ OSyncObjType *objtype;
+ //GList *extensions;
+ OSyncFormatCompareFunc cmp_func;
+ OSyncFormatMergeFunc merge_func;
+ OSyncFormatDuplicateFunc duplicate_func;
+ OSyncFormatCopyFunc copy_func;
+ OSyncFormatCreateFunc create_func;
+ OSyncFormatDestroyFunc destroy_func;
+ OSyncFormatPrintFunc print_func;
+ OSyncFormatRevisionFunc revision_func;
+ OSyncFormatMarshallFunc marshall_func;
+ OSyncFormatDemarshallFunc demarshall_func;
+#endif
+};
+
+/*! @brief Represent a converter from one format to another
+ */
+struct OSyncFormatConverter {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ OSyncObjFormat *source_format;
+ OSyncObjFormat *target_format;
+ OSyncFormatConvertFunc convert_func;
+ OSyncFormatDetectDataFunc detect_func;
+ OSyncFormatConverterInitFunc init_func;
+ OSyncFormatConverterFinalizeFunc fin_func;
+ ConverterType type;
+#endif
+};
+
+/*! @brief Represent a detector for a given format
+ */
+typedef struct OSyncDataDetector {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ const char *sourceformat;
+ const char *targetformat;
+ OSyncFormatDetectDataFunc detect_func;
+#endif
+} OSyncDataDetector;
+
+/*! @brief An extension to a format
+ */
+typedef struct OSyncFormatExtension {
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ OSyncObjFormat *from_format;
+ OSyncObjFormat *to_format;
+ char *name;
+ OSyncFormatConvertFunc conv_func;
+ OSyncFormatExtInitFunc init_func;
+#endif
+} OSyncFormatExtension;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+typedef struct OSyncObjFormatSink {
+ OSyncObjFormat *format;
+ OSyncFormatFunctions functions;
+ char *extension_name;
+ struct OSyncObjTypeSink *objtype_sink;
+ GList *commit_changes;
+ GList *commit_contexts;
+} OSyncObjFormatSink;
+
+typedef struct OSyncObjTypeSink {
+ OSyncMember *member;
+ OSyncObjType *objtype;
+ osync_bool write;
+ osync_bool read;
+ osync_bool enabled;
+ GList *formatsinks;
+ OSyncObjFormatSink *selected_format;
+ GList *properties;
+} OSyncObjTypeSink;
+
+typedef struct OSyncObjTypeTemplate {
+ const char *name;
+ GList *formats;
+} OSyncObjTypeTemplate;
+
+typedef struct OSyncObjFormatTemplate {
+ const char *name;
+ const char *objtype;
+ char *extension_name;
+ OSyncFormatCommitFn commit_change;
+ OSyncFormatAccessFn access;
+ OSyncFormatReadFn read;
+ OSyncFormatCommittedAllFn committed_all;
+ OSyncFormatBatchCommitFn batch_commit;
+ OSyncFormatCompareFunc cmp_func;
+ OSyncFormatMergeFunc merge_func;
+ OSyncFormatDuplicateFunc duplicate_func;
+ OSyncFormatCopyFunc copy_func;
+ OSyncFormatCreateFunc create_func;
+ OSyncFormatDestroyFunc destroy_func;
+ OSyncFormatPrintFunc print_func;
+ OSyncFormatRevisionFunc revision_func;
+ OSyncFormatMarshallFunc marshall_func;
+ OSyncFormatDemarshallFunc demarshall_func;
+} OSyncObjFormatTemplate;
+
+typedef struct OSyncConverterTemplate {
+ const char *source_format;
+ const char *target_format;
+ OSyncFormatConvertFunc convert_func;
+ ConverterType type;
+ OSyncFormatConverterInitFunc init_func;
+ OSyncFormatConverterFinalizeFunc fin_func;
+} OSyncConverterTemplate;
+
+typedef struct OSyncFormatExtensionTemplate {
+ char *from_formatname;
+ char *to_formatname;
+ char *name;
+ OSyncFormatExtInitFunc init_func;
+} OSyncFormatExtensionTemplate;
+
+/** A target function for osync_conv_find_path_fn() */
+typedef osync_bool (*OSyncPathTargetFn)(const void *data, OSyncObjFormat *fmt);
+
+osync_bool osync_conv_find_path_fmtlist(OSyncFormatEnv *env, OSyncChange *start, GList/*OSyncObjFormat * */ *targets, GList **retlist);
+
+osync_bool osync_conv_convert_fn(OSyncFormatEnv *env, OSyncChange *change, OSyncPathTargetFn target_fn, const void *fndata, const char *extension_name, OSyncError **error);
+osync_bool osync_conv_convert_fmtlist(OSyncFormatEnv *env, OSyncChange *change, GList/*OSyncObjFormat * */ *targets);
+OSyncDataDetector *osync_env_find_detector(OSyncEnv *env, const char *sourcename, const char *targetname);
+osync_bool osync_conv_objtype_is_any(const char *objstr);
+OSyncFormatExtensionTemplate *osync_env_find_extension_template(OSyncEnv *env, const char *formatname);
+OSyncFormatExtension *osync_conv_find_extension(OSyncFormatEnv *env, OSyncObjFormat *from_format, OSyncObjFormat *to_format, const char *extension_name);
+OSyncChange *osync_converter_invoke_decap(OSyncFormatConverter *converter, OSyncChange *change, osync_bool *free_output);
+
+#endif
+
+/*@}*/