00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _OPENSYNC_CONVERTER_H_
00022 #define _OPENSYNC_CONVERTER_H_
00023
00031
00033 typedef enum {
00035 OSYNC_CONVERTER_CONV = 1,
00037 OSYNC_CONVERTER_ENCAP = 2,
00039 OSYNC_CONVERTER_DECAP = 3,
00041 OSYNC_CONVERTER_DETECTOR = 4
00042 } OSyncConverterType;
00043
00044 typedef osync_bool (* OSyncFormatDetectFunc) (const char *data, int size, void *userdata);
00045 typedef osync_bool (* OSyncFormatConvertFunc) (char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error);
00046 typedef void * (* OSyncFormatConverterInitializeFunc) (const char *config, OSyncError **error);
00047 typedef void (* OSyncFormatConverterFinalizeFunc) (void *userdata);
00048
00058 OSYNC_EXPORT OSyncFormatConverter *osync_converter_new(OSyncConverterType type, OSyncObjFormat *sourceformat, OSyncObjFormat *targetformat, OSyncFormatConvertFunc convert_func, OSyncError **error);
00059
00069 OSYNC_EXPORT OSyncFormatConverter *osync_converter_new_detector(OSyncObjFormat *sourceformat, OSyncObjFormat *targetformat, OSyncFormatDetectFunc detect_func, OSyncError **error);
00070
00076 OSYNC_EXPORT OSyncFormatConverter *osync_converter_ref(OSyncFormatConverter *converter);
00077
00083 OSYNC_EXPORT void osync_converter_unref(OSyncFormatConverter *converter);
00084
00090 OSYNC_EXPORT OSyncObjFormat *osync_converter_get_sourceformat(OSyncFormatConverter *converter);
00091
00097 OSYNC_EXPORT OSyncObjFormat *osync_converter_get_targetformat(OSyncFormatConverter *converter);
00098
00104 OSYNC_EXPORT OSyncConverterType osync_converter_get_type(OSyncFormatConverter *converter);
00105
00112 OSYNC_EXPORT OSyncObjFormat *osync_converter_detect(OSyncFormatConverter *converter, OSyncData *data);
00113
00123 OSYNC_EXPORT osync_bool osync_converter_invoke(OSyncFormatConverter *converter, OSyncData *data, const char *config, OSyncError **error);
00124
00131 OSYNC_EXPORT osync_bool osync_converter_matches(OSyncFormatConverter *converter, OSyncData *data);
00132
00138 OSYNC_EXPORT OSyncFormatConverterPath *osync_converter_path_new(OSyncError **error);
00139
00146 OSYNC_EXPORT OSyncFormatConverterPath *osync_converter_path_ref(OSyncFormatConverterPath *path);
00147
00153 OSYNC_EXPORT void osync_converter_path_unref(OSyncFormatConverterPath *path);
00154
00159 OSYNC_EXPORT void osync_converter_path_add_edge(OSyncFormatConverterPath *path, OSyncFormatConverter *edge);
00160
00165 OSYNC_EXPORT unsigned int osync_converter_path_num_edges(OSyncFormatConverterPath *path);
00166
00172 OSYNC_EXPORT OSyncFormatConverter *osync_converter_path_nth_edge(OSyncFormatConverterPath *path, unsigned int nth);
00173
00178 OSYNC_EXPORT const char *osync_converter_path_get_config(OSyncFormatConverterPath *path);
00179
00184 OSYNC_EXPORT void osync_converter_path_set_config(OSyncFormatConverterPath *path, const char *config);
00185
00191 OSYNC_EXPORT void osync_converter_set_initialize_func(OSyncFormatConverter *converter, OSyncFormatConverterInitializeFunc initialize_func);
00192
00198 OSYNC_EXPORT void osync_converter_set_finalize_func(OSyncFormatConverter *converter, OSyncFormatConverterFinalizeFunc finalize_func);
00199
00209 OSYNC_EXPORT void osync_converter_initialize(OSyncFormatConverter *converter, const char *config, OSyncError **error);
00210
00216 OSYNC_EXPORT void osync_converter_finalize(OSyncFormatConverter *converter);
00217
00220 #endif //_OPENSYNC_CONVERTER_H_