From: <svn...@op...> - 2009-06-04 09:28:40
|
Author: dgollub Date: Thu Jun 4 11:28:24 2009 New Revision: 5665 URL: http://www.opensync.org/changeset/5665 Log: Split OSyncCapabilitiesObjType and OSynCapabilites refs #1084 Added: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype.c branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_internals.h branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_private.h Modified: branches/opensync-ticket1084/opensync.sym branches/opensync-ticket1084/opensync/CMakeLists.txt branches/opensync-ticket1084/opensync/capabilities/opensync-capabilities_internals.h branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.h branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_private.h branches/opensync-ticket1084/opensync/opensync-capabilities.h branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Modified: branches/opensync-ticket1084/opensync.sym ============================================================================== --- branches/opensync-ticket1084/opensync.sym Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync.sym Thu Jun 4 11:28:24 2009 (r5665) @@ -3,7 +3,6 @@ osync_capabilities_parse osync_capabilities_ref osync_capabilities_unref -osync_capabilitiesobjtype_new osync_capability_get_displayname osync_capability_get_max osync_capability_get_maxoccurs Modified: branches/opensync-ticket1084/opensync/CMakeLists.txt ============================================================================== --- branches/opensync-ticket1084/opensync/CMakeLists.txt Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/CMakeLists.txt Thu Jun 4 11:28:24 2009 (r5665) @@ -6,6 +6,7 @@ SET( libopensync_LIB_SRCS archive/opensync_archive.c capabilities/opensync_capabilities.c + capabilities/opensync_capabilities_objtype.c capabilities/opensync_capability.c client/opensync_client.c client/opensync_client_proxy.c Modified: branches/opensync-ticket1084/opensync/capabilities/opensync-capabilities_internals.h ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync-capabilities_internals.h Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/capabilities/opensync-capabilities_internals.h Thu Jun 4 11:28:24 2009 (r5665) @@ -24,6 +24,7 @@ #define OPENSYNC_CAPABILITIES_INTERNALS_H_COLLECT #include "opensync_capabilities_internals.h" +#include "opensync_capabilities_objtype_internals.h" #include "opensync_capability_internals.h" #endif /* OPENSYNC_CAPABILITIES_INTERNALS_H_COLLECT */ Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c Thu Jun 4 11:28:24 2009 (r5665) @@ -32,91 +32,6 @@ #include "opensync_capabilities_private.h" -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_new(OSyncCapabilities *capabilities, const char *objtype, OSyncError **error) -{ - OSyncCapabilitiesObjType *capobjtype = NULL; - osync_assert(capabilities); - osync_assert(objtype); - - capobjtype = osync_try_malloc0(sizeof(OSyncCapabilitiesObjType), error); - if (!capobjtype) - goto error; - - capobjtype->name = osync_strdup(objtype); - - return capobjtype; - -error: - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; -} - -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_new_node(OSyncCapabilities *capabilities, xmlNode *node, OSyncError **error) -{ - xmlChar *objtype; - OSyncCapabilitiesObjType *capobjtype = NULL; - osync_assert(capabilities); - osync_assert(node); - - osync_assert(!xmlStrcmp(node->name, (const xmlChar *)"ObjType")); - objtype = xmlGetProp(node, (const xmlChar *)"Name"); - - if (!(capobjtype = osync_capabilitiesobjtype_new(capabilities, BAD_CAST objtype, error))) - goto error; - - osync_xml_free(objtype); - - return capobjtype; - -error: - osync_xml_free(objtype); - - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; -} - -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_get(OSyncCapabilities *capabilities, const char *objtype) -{ - OSyncList *l = NULL; - OSyncCapabilitiesObjType *capobjtype = NULL; - osync_assert(capabilities); - osync_assert(objtype); - - l = capabilities->objtypes; - for(; l != NULL; l = l->next) { - capobjtype = (OSyncCapabilitiesObjType *) l->data; - if(!strcmp(capobjtype->name, objtype)) - break; - } - - return capobjtype; -} - -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_ref(OSyncCapabilitiesObjType *capsobjtype) -{ - osync_assert(capsobjtype); - - g_atomic_int_inc(&(capsobjtype->ref_count)); - - return capsobjtype; -} - -void osync_capabilitiesobjtype_unref(OSyncCapabilitiesObjType *capsobjtype) -{ - osync_assert(capsobjtype); - - if (g_atomic_int_dec_and_test(&(capsobjtype->ref_count))) { - OSyncList *l; - for (l = capsobjtype->capabilities; l; l = l->next) { - OSyncCapability *capability; - capability = (OSyncCapability *) l->data; - osync_capability_unref(capability); - /* TODO unlink from list */ - } - osync_free(capsobjtype); - } -} - OSyncCapabilities *osync_capabilities_new(OSyncError **error) { OSyncCapabilities *capabilities = NULL; @@ -164,7 +79,7 @@ cur = cur->children; for(; cur != NULL; cur = cur->next) { - OSyncCapabilitiesObjType *capabilitiesobjtype = osync_capabilitiesobjtype_new_node(capabilities, cur, error); + OSyncCapabilitiesObjType *capabilitiesobjtype = osync_capabilities_objtype_new_node(capabilities, cur, error); if (!capabilitiesobjtype) { osync_capabilities_unref(capabilities); goto error; @@ -209,7 +124,7 @@ for (l = capabilities->objtypes; l; l = l->next) { OSyncCapabilitiesObjType *objtype; objtype = (OSyncCapabilitiesObjType *) l->data; - osync_capabilitiesobjtype_unref(objtype); + osync_capabilities_objtype_unref(objtype); /* TODO unlink from list */ } osync_xml_free_doc(capabilities->doc); @@ -257,3 +172,21 @@ return capabilities; } + +OSyncCapabilitiesObjType *osync_capabilities_get_objtype(OSyncCapabilities *capabilities, const char *objtype) +{ + OSyncList *l = NULL; + OSyncCapabilitiesObjType *capobjtype = NULL; + osync_assert(capabilities); + osync_assert(objtype); + + l = capabilities->objtypes; + for(; l != NULL; l = l->next) { + capobjtype = (OSyncCapabilitiesObjType *) l->data; + if(!strcmp(osync_capabilities_objtype_get_name(capobjtype), objtype)) + break; + } + + return capobjtype; +} + Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.h ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.h Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.h Thu Jun 4 11:28:24 2009 (r5665) @@ -82,9 +82,6 @@ */ OSYNC_EXPORT osync_bool osync_capabilities_assemble(OSyncCapabilities *capabilities, char **buffer, int *size); - -OSYNC_EXPORT OSyncCapabilitiesObjType *osync_capabilitiesobjtype_new(OSyncCapabilities *capabilities, const char *objtype, OSyncError **error); - /*@}*/ #endif /*OPENSYNC_CAPABILITIES_H_*/ Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h Thu Jun 4 11:28:24 2009 (r5665) @@ -48,6 +48,14 @@ */ OSyncCapabilities *osync_capabilities_load(const char *file, OSyncError **error); +/** + * @brief Get the first capabilitiesobjtype for a given objtype from the capabilities + * @param capabilities The pointer to a capabilities object + * @param objtype The name of the objtype (e.g.: contact) + * @return The capabilitiesobjtype for a given objtype from the capabilities + */ +OSYNC_TEST_EXPORT OSyncCapabilitiesObjType *osync_capabilities_get_objtype(OSyncCapabilities *capabilities, const char *objtype); + /*@}*/ OSYNC_TEST_EXPORT OSyncCapabilityParameter *osync_capability_parameter_new(OSyncError **error); Added: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype.c Thu Jun 4 11:28:24 2009 (r5665) @@ -0,0 +1,105 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2006 NetNix Finland Ltd <ne...@ne...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel Friedrich <dan...@op...> + * + */ + +#include "opensync.h" +#include "opensync_internals.h" + +#include "opensync-capabilities.h" +#include "opensync-capabilities_internals.h" + +#include "opensync_capabilities_objtype.h" +#include "opensync_capabilities_objtype_private.h" + +OSyncCapabilitiesObjType *osync_capabilities_objtype_new(OSyncCapabilities *capabilities, const char *objtype, OSyncError **error) +{ + OSyncCapabilitiesObjType *capobjtype = NULL; + osync_assert(capabilities); + osync_assert(objtype); + + capobjtype = osync_try_malloc0(sizeof(OSyncCapabilitiesObjType), error); + if (!capobjtype) + goto error; + + capobjtype->name = osync_strdup(objtype); + + return capobjtype; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; +} + +OSyncCapabilitiesObjType *osync_capabilities_objtype_new_node(OSyncCapabilities *capabilities, xmlNode *node, OSyncError **error) +{ + xmlChar *objtype; + OSyncCapabilitiesObjType *capobjtype = NULL; + osync_assert(capabilities); + osync_assert(node); + + osync_assert(!xmlStrcmp(node->name, (const xmlChar *)"ObjType")); + objtype = xmlGetProp(node, (const xmlChar *)"Name"); + + if (!(capobjtype = osync_capabilities_objtype_new(capabilities, BAD_CAST objtype, error))) + goto error; + + osync_xml_free(objtype); + + return capobjtype; + +error: + osync_xml_free(objtype); + + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; +} + +OSyncCapabilitiesObjType *osync_capabilities_objtype_ref(OSyncCapabilitiesObjType *capsobjtype) +{ + osync_assert(capsobjtype); + + g_atomic_int_inc(&(capsobjtype->ref_count)); + + return capsobjtype; +} + +void osync_capabilities_objtype_unref(OSyncCapabilitiesObjType *capsobjtype) +{ + osync_assert(capsobjtype); + + if (g_atomic_int_dec_and_test(&(capsobjtype->ref_count))) { + OSyncList *l; + for (l = capsobjtype->capabilities; l; l = l->next) { + OSyncCapability *capability; + capability = (OSyncCapability *) l->data; + osync_capability_unref(capability); + /* TODO unlink from list */ + } + osync_free(capsobjtype); + } +} + +const char *osync_capabilities_objtype_get_name(OSyncCapabilitiesObjType *capsobjtype) +{ + osync_assert(capsobjtype); + return capsobjtype->name; +} + Added: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_internals.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_internals.h Thu Jun 4 11:28:24 2009 (r5665) @@ -0,0 +1,62 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2006 NetNix Finland Ltd <ne...@ne...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel Friedrich <dan...@op...> + * + */ + +#ifndef OPENSYNC_CAPABILITIES_OBJTYPE_INTERNALS_H_ +#define OPENSYNC_CAPABILITIES_OBJTYPE_INTERNALS_H_ + + +/** + * @defgroup OSyncCapabilitiesObjTypeInternalAPI OpenSync Capabilities Objtype Internals + * @ingroup OSyncCapabilitiesObjTypePrivate + * @brief The private part of the OSyncCapabilitiesObjType + * + */ +/*@{*/ + +/** + * @brief Creates a new capabilities object type object + * @param error The error which will hold the info in case of an error + * @return The pointer to the newly allocated capabilities object type object or NULL in case of error + */ + +OSYNC_TEST_EXPORT OSyncCapabilitiesObjType *osync_capabilities_objtype_new(OSyncCapabilities *capabilities, const char *objtype, OSyncError **error); + + +/** + * @brief Creates a new capabilitiesobjtype object + * @param capabilities The pointer to a capabilities object + * @param node The ObjType XML node + * @param error The error which will hold the info in case of an error + * @return The pointer to the newly allocated capabilitiesobjtype object or NULL in case of error + */ +OSYNC_TEST_EXPORT OSyncCapabilitiesObjType *osync_capabilities_objtype_new_node(OSyncCapabilities *capabilities, xmlNode *node, OSyncError **error); + +/** + * @brief Get name of objtype from capabilities object type object + * @param capabilities The pointer to a capabilities object type object + * @return Name as string of the capabilities object type object + */ +OSYNC_TEST_EXPORT const char *osync_capabilities_objtype_get_name(OSyncCapabilitiesObjType *capsobjtype); + +/*@}*/ + +#endif /*OPENSYNC_CAPABILITIES_OBJTYPE_INTERNAL_H_*/ Added: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_private.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_objtype_private.h Thu Jun 4 11:28:24 2009 (r5665) @@ -0,0 +1,51 @@ +/* + * libopensync - A synchronization framework + * Copyright (C) 2006 NetNix Finland Ltd <ne...@ne...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel Friedrich <dan...@op...> + * + */ + +#ifndef OPENSYNC_CAPABILITIES_OBJTYPE_PRIVATE_H_ +#define OPENSYNC_CAPABILITIES_OBJTYPE_PRIVATE_H_ + +/** + * @defgroup OSyncCapabilitiesPrivate OpenSync Capabilities Module Private + * @ingroup OSyncPrivate + * @defgroup OSyncCapabilitiesPrivateAPI OpenSync Capabilities Private + * @ingroup OSyncCapabilitiesPrivate + * @brief Private part of OpenSync Capabilities + */ + +/*@{*/ + +/** + * @brief Represent a CapabilitiesObjType object + */ +struct OSyncCapabilitiesObjType { + /** The reference counter for this object */ + int ref_count; + /** Name of ObjType */ + char *name; + /** Capability List */ + OSyncList *capabilities; /* OSyncCapapbility */ + +}; + +/*@}*/ + +#endif /*OPENSYNC_CAPABILITIES_OBJTYPE_PRIVATE_H_*/ Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_private.h ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_private.h Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_private.h Thu Jun 4 11:28:24 2009 (r5665) @@ -34,19 +34,6 @@ /*@{*/ /** - * @brief Represent a CapabilitiesObjType object - */ -struct OSyncCapabilitiesObjType { - /** The reference counter for this object */ - int ref_count; - /** Name of ObjType */ - char *name; - /** Capability List */ - OSyncList *capabilities; /* OSyncCapapbility */ - -}; - -/** * @brief Represent a Capabilities object */ struct OSyncCapabilities { @@ -58,23 +45,6 @@ xmlDocPtr doc; }; -/** - * @brief Creates a new capabilitiesobjtype object - * @param capabilities The pointer to a capabilities object - * @param node The ObjType XML node - * @param error The error which will hold the info in case of an error - * @return The pointer to the newly allocated capabilitiesobjtype object or NULL in case of error - */ -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_new_node(OSyncCapabilities *capabilities, xmlNode *node, OSyncError **error); - -/** - * @brief Get the first capabilitiesobjtype for a given objtype from the capabilities - * @param capabilities The pointer to a capabilities object - * @param objtype The name of the objtype (e.g.: contact) - * @return The capabilitiesobjtype for a given objtype from the capabilities - */ -OSyncCapabilitiesObjType *osync_capabilitiesobjtype_get(OSyncCapabilities *capabilities, const char *objtype); - /*@}*/ #endif /*OPENSYNC_CAPABILITIES_PRIVATE_H_*/ Modified: branches/opensync-ticket1084/opensync/opensync-capabilities.h ============================================================================== --- branches/opensync-ticket1084/opensync/opensync-capabilities.h Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/opensync/opensync-capabilities.h Thu Jun 4 11:28:24 2009 (r5665) @@ -24,6 +24,7 @@ OPENSYNC_BEGIN_DECLS #include "capabilities/opensync_capabilities.h" +#include "capabilities/opensync_capabilities_objtype.h" #include "capabilities/opensync_capability.h" OPENSYNC_END_DECLS Modified: branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c ============================================================================== --- branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Thu Jun 4 11:05:48 2009 (r5664) +++ branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Thu Jun 4 11:28:24 2009 (r5665) @@ -30,7 +30,7 @@ fail_unless(capabilities != NULL, NULL); fail_unless(error == NULL, NULL); - OSyncCapabilitiesObjType *capsobjtype = osync_capabilitiesobjtype_new(capabilities, "contact", &error); + OSyncCapabilitiesObjType *capsobjtype = osync_capabilities_objtype_new(capabilities, "contact", &error); fail_unless(capsobjtype != NULL, NULL); fail_unless(error == NULL, NULL); |