From: <svn...@op...> - 2009-08-07 17:35:50
|
Author: bellmich Date: Fri Aug 7 19:35:36 2009 New Revision: 1230 URL: http://libsyncml.opensync.org/changeset/1230 Log: updated SmlChangeItem stuff to replace SmlDataSyncChange It is necessary to rename this object to SmlDataSyncChangeItem before a release. Added: trunk/libsyncml/data_sync_api/glib_mkenums.sh trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c.tmpl trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h.tmpl Modified: trunk/libsyncml/data_sync_api/sml_change_item.c trunk/libsyncml/data_sync_api/sml_change_item.h trunk/libsyncml/data_sync_api/sml_change_item_internals.h Added: trunk/libsyncml/data_sync_api/glib_mkenums.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/glib_mkenums.sh Fri Aug 7 19:35:36 2009 (r1230) @@ -0,0 +1,6 @@ +glib-mkenums \ + --fhead "#ifndef __SML_DEV_INF_ENUM_TYPES_H\n#define __SML_DEV_INF_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ + --fprod "/* enumeration types from \"@filename@\" */\n" \ + --vhead "GType @EnumName@ (void);\n#define @EnumName@ (@EnumName@())\n" \ + --ftail "G_END_DECLS\n\n#endif /* __SML_DEV_INF_ENUM_TYPES_H__ */" \ + sml_dev_inf.h Modified: trunk/libsyncml/data_sync_api/sml_change_item.c ============================================================================== --- trunk/libsyncml/data_sync_api/sml_change_item.c Tue Aug 4 17:27:43 2009 (r1229) +++ trunk/libsyncml/data_sync_api/sml_change_item.c Fri Aug 7 19:35:36 2009 (r1230) @@ -19,6 +19,7 @@ */ #include "sml_change_item_internals.h" +#include "sml_data_sync_enum_types.h" #include "../sml_error_internals.h" #include <string.h> @@ -27,22 +28,26 @@ enum { PROP_0, - PROP_REMOTE, - PROP_LOCAL, + PROP_TYPE, + PROP_LOCATION, PROP_DATA, PROP_PLANNED_SIZE, PROP_CONTENT_TYPE, - PROP_MISSING_DATA + PROP_MISSING_DATA, + PROP_DATA_STORE, + PROP_USERDATA }; struct _SmlChangeItemPrivate { - SmlLocation* remote; - SmlLocation* local; - gchar* data; - guint64 planned_size; - gchar* content_type; - gboolean missing_data; + SmlChangeType type; + SmlLocation* loc; + gchar* data; + guint64 planned_size; + gchar* content_type; + gboolean missing_data; + SmlDataSyncDatastore* data_store; + void* userdata; }; static void @@ -52,11 +57,11 @@ GParamSpec *pspec) { switch (property_id) { - case PROP_REMOTE: - g_value_set_object (value, SML_CHANGE_ITEM (object)->priv->remote); + case PROP_TYPE: + g_value_set_enum (value, SML_CHANGE_ITEM (object)->priv->type); break; - case PROP_LOCAL: - g_value_set_object (value, SML_CHANGE_ITEM (object)->priv->local); + case PROP_LOCATION: + g_value_set_object (value, SML_CHANGE_ITEM (object)->priv->loc); break; case PROP_DATA: g_value_set_string (value, SML_CHANGE_ITEM (object)->priv->data); @@ -70,6 +75,12 @@ case PROP_MISSING_DATA: g_value_set_boolean (value, SML_CHANGE_ITEM (object)->priv->missing_data); break; + case PROP_DATA_STORE: + g_value_set_pointer (value, SML_CHANGE_ITEM (object)->priv->data_store); + break; + case PROP_USERDATA: + g_value_set_pointer (value, SML_CHANGE_ITEM (object)->priv->userdata); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -82,17 +93,14 @@ GParamSpec *pspec) { switch (property_id) { - case PROP_REMOTE: - if (SML_CHANGE_ITEM (object)->priv->remote) - g_object_unref (SML_CHANGE_ITEM (object)->priv->remote); - SML_CHANGE_ITEM (object)->priv->remote = SML_LOCATION (value); - g_object_ref(SML_CHANGE_ITEM (object)->priv->remote); - break; - case PROP_LOCAL: - if (SML_CHANGE_ITEM (object)->priv->local) - g_object_unref (SML_CHANGE_ITEM (object)->priv->local); - SML_CHANGE_ITEM (object)->priv->local = SML_LOCATION (value); - g_object_ref(SML_CHANGE_ITEM (object)->priv->local); + case PROP_TYPE: + SML_CHANGE_ITEM (object)->priv->type = g_value_get_enum (value); + break; + case PROP_LOCATION: + if (SML_CHANGE_ITEM (object)->priv->loc) + g_object_unref (SML_CHANGE_ITEM (object)->priv->loc); + SML_CHANGE_ITEM (object)->priv->loc = SML_LOCATION (value); + g_object_ref(SML_CHANGE_ITEM (object)->priv->loc); break; case PROP_DATA: g_free (SML_CHANGE_ITEM (object)->priv->data); @@ -108,6 +116,12 @@ case PROP_MISSING_DATA: SML_CHANGE_ITEM (object)->priv->missing_data = g_value_get_boolean (value); break; + case PROP_DATA_STORE: + SML_CHANGE_ITEM (object)->priv->data_store = (SmlDataSyncDatastore *) g_value_get_pointer(value); + break; + case PROP_USERDATA: + SML_CHANGE_ITEM (object)->priv->userdata = (void *) g_value_get_pointer(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -117,18 +131,17 @@ sml_change_item_finalize (GObject *object) { SmlChangeItem *self = (SmlChangeItem *) object; - if (self->priv->remote) - g_object_unref(self->priv->remote); - if (self->priv->local) - g_object_unref(self->priv->local); + if (self->priv->loc) + g_object_unref(self->priv->loc); g_free(self->priv->data); g_free(self->priv->content_type); /* all pointers must be NULL */ - self->priv->remote = NULL; - self->priv->local = NULL; + self->priv->loc = NULL; self->priv->data = NULL; self->priv->planned_size = 0; self->priv->content_type = NULL; + self->priv->data_store = NULL; + self->priv->userdata = NULL; G_OBJECT_CLASS (sml_change_item_parent_class)->finalize (object); } @@ -144,27 +157,15 @@ object_class->finalize = sml_change_item_finalize; /** - * SmlChangeItem:remote: + * SmlChangeItem:location: * - * The remote SmlLocation property. + * The location property. */ g_object_class_install_property (object_class, - PROP_REMOTE, - g_param_spec_object ("remote", - "remote SmlLocation", - "remote SmlLocation", - G_TYPE_OBJECT, - G_PARAM_READWRITE)); - /** - * SmlChangeItem:local: - * - * The local SmlLocation property. - */ - g_object_class_install_property (object_class, - PROP_LOCAL, - g_param_spec_object ("local", - "local SmlLocation", - "local SmlLocation", + PROP_LOCATION, + g_param_spec_object ("location", + "location", + "location", G_TYPE_OBJECT, G_PARAM_READWRITE)); /** @@ -217,6 +218,17 @@ "MoreData flag", FALSE, G_PARAM_READWRITE)); + /** + * SmlChangeItem:data_store: + * + * The data store property. + */ + g_object_class_install_property (object_class, + PROP_DATA_STORE, + g_param_spec_pointer ("data_store", + "data store", + "the used data store", + G_PARAM_READWRITE)); } @@ -242,78 +254,40 @@ } /** - * sml_change_item_get_remote: - * @self: A #SmlChangeItem - * - * Gets the remote SmlLocation property. - * - * Return value: - */ -SmlLocation* -sml_change_item_get_remote (SmlChangeItem *self) -{ - g_return_val_if_fail (SML_IS_CHANGE_ITEM (self), NULL); - return self->priv->remote; -} - -/** - * sml_change_item_set_remote: - * @self: A #SmlChangeItem - * @remote: - * - * Sets the remote SmlLocation property. - */ -gboolean -sml_change_item_set_remote (SmlChangeItem *self, - SmlLocation* remote, - GError **error) -{ - sml_return_val_error_if_fail (SML_IS_CHANGE_ITEM (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlChangeItem object."); - sml_return_val_error_if_fail (!remote || sml_location_get_uri(remote), FALSE, error, SML_ERROR_GENERIC, "The location must have an URI."); - - if (self->priv->remote) - g_object_unref (self->priv->remote); - self->priv->remote = remote; - if (remote) - g_object_ref (remote); - return TRUE; -} - -/** - * sml_change_item_get_local: + * sml_change_item_get_location: * @self: A #SmlChangeItem * - * Gets the local SmlLocation property. + * Gets the location property. * * Return value: */ SmlLocation* -sml_change_item_get_local (SmlChangeItem *self) +sml_change_item_get_location (SmlChangeItem *self) { g_return_val_if_fail (SML_IS_CHANGE_ITEM (self), NULL); - return self->priv->local; + return self->priv->loc; } /** - * sml_change_item_set_local: + * sml_change_item_set_location: * @self: A #SmlChangeItem - * @local: + * @loc: * - * Sets the local SmlLocation property. + * Sets the location property. */ gboolean -sml_change_item_set_local (SmlChangeItem *self, - SmlLocation* local, - GError **error) +sml_change_item_set_location (SmlChangeItem *self, + SmlLocation* loc, + GError **error) { sml_return_val_error_if_fail (SML_IS_CHANGE_ITEM (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlChangeItem object."); - sml_return_val_error_if_fail (!local || sml_location_get_uri(local), FALSE, error, SML_ERROR_GENERIC, "The location must have an URI."); + sml_return_val_error_if_fail (!loc || sml_location_get_uri(loc), FALSE, error, SML_ERROR_GENERIC, "The location must have an URI."); - if (self->priv->local) - g_object_unref (self->priv->local); - self->priv->local = local; - if (local) - g_object_ref (local); + if (self->priv->loc) + g_object_unref (self->priv->loc); + self->priv->loc = loc; + if (loc) + g_object_ref (loc); return TRUE; } @@ -364,6 +338,31 @@ } /** + * sml_change_item_set_binary_data: + * @self: A #SmlChangeItem + * @data: + * @size: + * + * Sets the data property. + */ +gboolean +sml_change_item_set_binary_data (SmlChangeItem *self, + const gchar* data, + gsize size, + GError **error) +{ + sml_return_val_error_if_fail (SML_IS_CHANGE_ITEM (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlChangeItem object."); + sml_return_val_error_if_fail (size, FALSE, error, SML_ERROR_GENERIC, "The size must be present."); + + g_free (self->priv->data); + self->priv->data = g_base64_encode((const unsigned char *) data, size); + if (!self->priv->data) + g_error("The base 64 encoding of glib failed."); + + return TRUE; +} + +/** * sml_change_item_get_planned_size: * @self: A #SmlChangeItem * @@ -463,6 +462,96 @@ } /** + * sml_change_item_get_action: + * @self: A #SmlChangeItem + * + * Gets the change type property. + * + * Return value: + */ +SmlChangeType +sml_change_item_get_action (SmlChangeItem *self) +{ + g_return_val_if_fail (SML_IS_CHANGE_ITEM (self), FALSE); + return self->priv->type; +} + +/** + * sml_change_item_set_action: + * @self: A #SmlChangeItem + * @missing_data: + * + * Sets the change type property. + */ +void +sml_change_item_set_action (SmlChangeItem *self, + SmlChangeType type) +{ + g_return_if_fail (SML_IS_CHANGE_ITEM (self)); + self->priv->type = type; +} + +/** + * sml_change_item_get_data_store: + * @self: A #SmlChangeItem + * + * Gets the data store property. + * + * Return value: + */ +SmlDataSyncDatastore* +sml_change_item_get_data_store (SmlChangeItem *self) +{ + g_return_val_if_fail (SML_IS_CHANGE_ITEM (self), FALSE); + return self->priv->data_store; +} + +/** + * sml_change_item_set_data_store: + * @self: A #SmlChangeItem + * @ds: + * + * Sets the change type property. + */ +void +sml_change_item_set_data_store (SmlChangeItem *self, + SmlDataSyncDatastore *ds) +{ + g_return_if_fail (SML_IS_CHANGE_ITEM (self)); + self->priv->data_store = ds; +} + +/** + * sml_change_item_get_userdata: + * @self: A #SmlChangeItem + * + * Gets the userdata property. + * + * Return value: + */ +void* +sml_change_item_get_userdata (SmlChangeItem *self) +{ + g_return_val_if_fail (SML_IS_CHANGE_ITEM (self), FALSE); + return self->priv->userdata; +} + +/** + * sml_change_item_set_userdata: + * @self: A #SmlChangeItem + * @userdata: + * + * Sets the userdata property. + */ +void +sml_change_item_set_userdata (SmlChangeItem *self, + void *userdata) +{ + g_return_if_fail (SML_IS_CHANGE_ITEM (self)); + self->priv->userdata = userdata; +} + +/** * sml_change_item_get_fragment: * @self: A #SmlChangeItem * @@ -492,11 +581,8 @@ else sml_change_item_set_missing_data(frag, FALSE); - if (sml_change_item_get_remote(self) != NULL && - !sml_change_item_set_remote(frag, sml_change_item_get_remote(self), error)) - goto error; - if (sml_change_item_get_local(self) != NULL && - !sml_change_item_set_local(frag, sml_change_item_get_local(self), error)) + if (sml_change_item_get_location(self) != NULL && + !sml_change_item_set_location(frag, sml_change_item_get_location(self), error)) goto error; if (sml_change_item_get_content_type(self) != NULL && @@ -529,7 +615,7 @@ (self->priv->content_type && frag->priv->content_type && strcmp(self->priv->content_type, frag->priv->content_type) == 0), FALSE, error, SML_ERROR_GENERIC, "The content-types do not match."); - sml_return_val_error_if_fail (strlen(self->priv->data) < self->priv->planned_size, FALSE, error, SML_ERROR_GENERIC, "The data is already complete."); + sml_return_val_error_if_fail (strlen(self->priv->data) <= self->priv->planned_size, FALSE, error, SML_ERROR_GENERIC, "The data is already complete."); sml_return_val_error_if_fail (strlen(self->priv->data)+strlen(frag->priv->data) <= self->priv->planned_size, FALSE, error, SML_ERROR_GENERIC, "The fragment is too large."); Modified: trunk/libsyncml/data_sync_api/sml_change_item.h ============================================================================== --- trunk/libsyncml/data_sync_api/sml_change_item.h Tue Aug 4 17:27:43 2009 (r1229) +++ trunk/libsyncml/data_sync_api/sml_change_item.h Fri Aug 7 19:35:36 2009 (r1230) @@ -23,9 +23,17 @@ #include <glib-object.h> #include <libsyncml/data_sync_api/sml_location.h> +#include <libsyncml/data_sync_api/defines.h> G_BEGIN_DECLS +typedef enum { + SML_CHANGE_UNKNOWN = 0, + SML_CHANGE_ADD = 1, + SML_CHANGE_REPLACE = 2, + SML_CHANGE_DELETE = 3 +} SmlChangeType; + #define SML_TYPE_CHANGE_ITEM (sml_change_item_get_type()) #define SML_CHANGE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SML_TYPE_CHANGE_ITEM, SmlChangeItem)) #define SML_CHANGE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SML_TYPE_CHANGE_ITEM, SmlChangeItemClass)) @@ -52,12 +60,15 @@ GType sml_change_item_get_type (void); SmlChangeItem* sml_change_item_new (void); -SmlLocation* sml_change_item_get_remote (SmlChangeItem *self); -gboolean sml_change_item_set_remote (SmlChangeItem *self, SmlLocation* remote, GError **error); -SmlLocation* sml_change_item_get_local (SmlChangeItem *self); -gboolean sml_change_item_set_local (SmlChangeItem *self, SmlLocation* local, GError **error); +SmlLocation* sml_change_item_get_location (SmlChangeItem *self); +gboolean sml_change_item_set_location (SmlChangeItem *self, SmlLocation* remote, GError **error); G_CONST_RETURN gchar* sml_change_item_get_data (SmlChangeItem *self); gboolean sml_change_item_set_data (SmlChangeItem *self, const gchar *data, gsize size, GError **error); +gboolean sml_change_item_set_binary_data (SmlChangeItem *self, const gchar *data, gsize size, GError **error); +G_CONST_RETURN gchar* sml_change_item_get_content_type (SmlChangeItem *self); +gboolean sml_change_item_set_content_type (SmlChangeItem *self, const gchar* content_type, GError **error); +SmlChangeType sml_change_item_get_action (SmlChangeItem *self); +void sml_change_item_set_action (SmlChangeItem *self, SmlChangeType kind); G_END_DECLS Modified: trunk/libsyncml/data_sync_api/sml_change_item_internals.h ============================================================================== --- trunk/libsyncml/data_sync_api/sml_change_item_internals.h Tue Aug 4 17:27:43 2009 (r1229) +++ trunk/libsyncml/data_sync_api/sml_change_item_internals.h Fri Aug 7 19:35:36 2009 (r1230) @@ -23,17 +23,20 @@ #include <glib-object.h> #include <libsyncml/data_sync_api/sml_change_item.h> +#include <libsyncml/data_sync_api/data_sync.h> G_BEGIN_DECLS gsize sml_change_item_get_planned_size (SmlChangeItem *self); void sml_change_item_set_planned_size (SmlChangeItem *self, gsize planned_size); -G_CONST_RETURN gchar* sml_change_item_get_content_type (SmlChangeItem *self); -gboolean sml_change_item_set_content_type (SmlChangeItem *self, const gchar* content_type, GError **error); gboolean sml_change_item_get_missing_data (SmlChangeItem *self); void sml_change_item_set_missing_data (SmlChangeItem *self, gboolean missing_data); gboolean sml_change_item_attach_fragment (SmlChangeItem *self, SmlChangeItem *fragment, GError **error); SmlChangeItem* sml_change_item_get_fragment (SmlChangeItem *self, gsize start, gsize max_size, GError **error); +void* sml_change_item_get_userdata (SmlChangeItem *self); +void sml_change_item_set_userdata (SmlChangeItem *self, void *userdata); +SmlDataSyncDatastore* sml_change_item_get_data_store (SmlChangeItem *self); +void sml_change_item_set_data_store (SmlChangeItem *self, SmlDataSyncDatastore *ds); G_END_DECLS Added: trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c Fri Aug 7 19:35:36 2009 (r1230) @@ -0,0 +1,36 @@ + +/* Generated data (by glib-mkenums) */ + + +/* WARNING: This file was generated by glib-mkenums. + * WARNING: + * WARNING: glib-mkenums --template sml_data_sync_enum_types.c.tmpl *.h > sml_data_sync_enum_types.c + * WARNING: + * WARNING: If you need to update this file then please run the command again. + */ + + +/* enumerations from "sml_change_item.h" */ + +#include <libsyncml/data_sync_api/sml_change_item.h> + +GType +sml_change_type_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY (etype == 0)) { + static const GEnumValue values[] = { + { SML_CHANGE_UNKNOWN, "SML_CHANGE_UNKNOWN", "unknown" }, + { SML_CHANGE_ADD, "SML_CHANGE_ADD", "add" }, + { SML_CHANGE_REPLACE, "SML_CHANGE_REPLACE", "replace" }, + { SML_CHANGE_DELETE, "SML_CHANGE_DELETE", "delete" }, + { 0, NULL, NULL } + }; + etype = g_enum_register_static (g_intern_static_string ("SmlChangeType"), values); + } + return etype; +} + + +/* Generated data ends here */ + Added: trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c.tmpl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.c.tmpl Fri Aug 7 19:35:36 2009 (r1230) @@ -0,0 +1,44 @@ +/*** BEGIN file-header ***/ + +/* WARNING: This file was generated by glib-mkenums. + * WARNING: + * WARNING: glib-mkenums --template sml_data_sync_enum_types.c.tmpl *.h > sml_data_sync_enum_types.c + * WARNING: + * WARNING: If you need to update this file then please run the command again. + */ + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ + +/* enumerations from "@filename@" */ + +#include <libsyncml/data_sync_api/@filename@> + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY (etype == 0)) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + } + return etype; +} + +/*** END value-tail ***/ + +/*** BEGIN file-tail ***/ +/*** END file-tail ***/ Added: trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h Fri Aug 7 19:35:36 2009 (r1230) @@ -0,0 +1,26 @@ + +/* Generated data (by glib-mkenums) */ + +#ifndef __SML_DATA_SYNC_ENUM_TYPES_H__ +#define __SML_DATA_SYNC_ENUM_TYPES_H__ + +/* WARNING: This file was generated by glib-mkenums. + * WARNING: + * WARNING: glib-mkenums --template sml_data_sync_enum_types.h.tmpl *.h > sml_data_sync_enum_types.h + * WARNING: + * WARNING: If you need to update this file then please run the command again. + */ + +#include <glib-object.h> + +G_BEGIN_DECLS + +/* enumerations from "sml_change_item.h" */ +GType sml_change_type_get_type (void) G_GNUC_CONST; +#define SML_DATA_SYNC_TYPE_CHANGE_TYPE (sml_change_type_get_type ()) +G_END_DECLS + +#endif /* __SML_DATA_SYNC_ENUM_TYPES_H__ */ + +/* Generated data ends here */ + Added: trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h.tmpl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_data_sync_enum_types.h.tmpl Fri Aug 7 19:35:36 2009 (r1230) @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#ifndef __SML_DATA_SYNC_ENUM_TYPES_H__ +#define __SML_DATA_SYNC_ENUM_TYPES_H__ + +/* WARNING: This file was generated by glib-mkenums. + * WARNING: + * WARNING: glib-mkenums --template sml_data_sync_enum_types.h.tmpl *.h > sml_data_sync_enum_types.h + * WARNING: + * WARNING: If you need to update this file then please run the command again. + */ + +#include <glib-object.h> + +G_BEGIN_DECLS +/*** END file-header ***/ + +/*** BEGIN file-production ***/ + +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; +#define SML_DATA_SYNC_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __SML_DATA_SYNC_ENUM_TYPES_H__ */ +/*** END file-tail ***/ |