00001
00010
00013 struct OSyncFormatEnv {
00015 GList *objtypes;
00017 GList *objformats;
00019 GList *converters;
00021 GList *filter_functions;
00023 GList *extensions;
00024 };
00025
00028 struct OSyncObjType {
00029 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00030 char *name;
00031 GList *formats;
00032 GList *converters;
00033 OSyncFormatEnv *env;
00034 osync_bool needs_slow_sync;
00035 OSyncObjFormat *common_format;
00036 #endif
00037 };
00038
00041 struct OSyncObjFormat {
00042 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00043 char *name;
00044 OSyncFormatEnv *env;
00045 OSyncObjType *objtype;
00046
00047 OSyncFormatCompareFunc cmp_func;
00048 OSyncFormatMergeFunc merge_func;
00049 OSyncFormatDuplicateFunc duplicate_func;
00050 OSyncFormatCopyFunc copy_func;
00051 OSyncFormatCreateFunc create_func;
00052 OSyncFormatDestroyFunc destroy_func;
00053 OSyncFormatPrintFunc print_func;
00054 OSyncFormatRevisionFunc revision_func;
00055 OSyncFormatMarshallFunc marshall_func;
00056 OSyncFormatDemarshallFunc demarshall_func;
00057 #endif
00058 };
00059
00062 struct OSyncFormatConverter {
00063 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00064 OSyncObjFormat *source_format;
00065 OSyncObjFormat *target_format;
00066 OSyncFormatConvertFunc convert_func;
00067 OSyncFormatDetectDataFunc detect_func;
00068 OSyncFormatConverterInitFunc init_func;
00069 OSyncFormatConverterFinalizeFunc fin_func;
00070 ConverterType type;
00071 #endif
00072 };
00073
00076 typedef struct OSyncDataDetector {
00077 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00078 const char *sourceformat;
00079 const char *targetformat;
00080 OSyncFormatDetectDataFunc detect_func;
00081 #endif
00082 } OSyncDataDetector;
00083
00086 typedef struct OSyncFormatExtension {
00087 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00088 OSyncObjFormat *from_format;
00089 OSyncObjFormat *to_format;
00090 char *name;
00091 OSyncFormatConvertFunc conv_func;
00092 OSyncFormatExtInitFunc init_func;
00093 #endif
00094 } OSyncFormatExtension;
00095
00096 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00097
00098 typedef struct OSyncObjFormatSink {
00099 OSyncObjFormat *format;
00100 OSyncFormatFunctions functions;
00101 char *extension_name;
00102 struct OSyncObjTypeSink *objtype_sink;
00103 GList *commit_changes;
00104 GList *commit_contexts;
00105 } OSyncObjFormatSink;
00106
00107 typedef struct OSyncObjTypeSink {
00108 OSyncMember *member;
00109 OSyncObjType *objtype;
00110 osync_bool write;
00111 osync_bool read;
00112 osync_bool enabled;
00113 GList *formatsinks;
00114 OSyncObjFormatSink *selected_format;
00115 GList *properties;
00116 } OSyncObjTypeSink;
00117
00118 typedef struct OSyncObjTypeTemplate {
00119 const char *name;
00120 GList *formats;
00121 } OSyncObjTypeTemplate;
00122
00123 typedef struct OSyncObjFormatTemplate {
00124 const char *name;
00125 const char *objtype;
00126 char *extension_name;
00127 OSyncFormatCommitFn commit_change;
00128 OSyncFormatAccessFn access;
00129 OSyncFormatReadFn read;
00130 OSyncFormatCommittedAllFn committed_all;
00131 OSyncFormatBatchCommitFn batch_commit;
00132 OSyncFormatCompareFunc cmp_func;
00133 OSyncFormatMergeFunc merge_func;
00134 OSyncFormatDuplicateFunc duplicate_func;
00135 OSyncFormatCopyFunc copy_func;
00136 OSyncFormatCreateFunc create_func;
00137 OSyncFormatDestroyFunc destroy_func;
00138 OSyncFormatPrintFunc print_func;
00139 OSyncFormatRevisionFunc revision_func;
00140 OSyncFormatMarshallFunc marshall_func;
00141 OSyncFormatDemarshallFunc demarshall_func;
00142 } OSyncObjFormatTemplate;
00143
00144 typedef struct OSyncConverterTemplate {
00145 const char *source_format;
00146 const char *target_format;
00147 OSyncFormatConvertFunc convert_func;
00148 ConverterType type;
00149 OSyncFormatConverterInitFunc init_func;
00150 OSyncFormatConverterFinalizeFunc fin_func;
00151 } OSyncConverterTemplate;
00152
00153 typedef struct OSyncFormatExtensionTemplate {
00154 char *from_formatname;
00155 char *to_formatname;
00156 char *name;
00157 OSyncFormatExtInitFunc init_func;
00158 } OSyncFormatExtensionTemplate;
00159
00161 typedef osync_bool (*OSyncPathTargetFn)(const void *data, OSyncObjFormat *fmt);
00162
00163 osync_bool osync_conv_find_path_fmtlist(OSyncFormatEnv *env, OSyncChange *start, GList *targets, GList **retlist);
00164
00165 osync_bool osync_conv_convert_fn(OSyncFormatEnv *env, OSyncChange *change, OSyncPathTargetFn target_fn, const void *fndata, const char *extension_name, OSyncError **error);
00166 osync_bool osync_conv_convert_fmtlist(OSyncFormatEnv *env, OSyncChange *change, GList *targets);
00167 OSyncDataDetector *osync_env_find_detector(OSyncEnv *env, const char *sourcename, const char *targetname);
00168 osync_bool osync_conv_objtype_is_any(const char *objstr);
00169 OSyncFormatExtensionTemplate *osync_env_find_extension_template(OSyncEnv *env, const char *formatname);
00170 OSyncFormatExtension *osync_conv_find_extension(OSyncFormatEnv *env, OSyncObjFormat *from_format, OSyncObjFormat *to_format, const char *extension_name);
00171 OSyncChange *osync_converter_invoke_decap(OSyncFormatConverter *converter, OSyncChange *change, osync_bool *free_output);
00172
00173 #endif
00174