From 36599ad4fd84210108f41b18043dbb8bc23b21c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Moya Date: Fri, 28 Nov 2003 11:58:04 +0000 Subject: [PATCH] new functions to manage SoupSoapParameter's children. 2003-11-28 Rodrigo Moya * libsoup/soup-soap-response.[ch] (soup_soap_parameter_get_first_child, soup_soap_parameter_get_first_child_by_name, soup_soap_parameter_get_next_child, soup_soap_parameter_get_next_child_by_name): new functions to manage SoupSoapParameter's children. (soup_soap_response_get_first_parameter): dont return a GList, but a SoupSoapParameter contained in the GList. --- ChangeLog | 11 ++++++ libsoup/soup-soap-response.c | 89 +++++++++++++++++++++++++++++++++++++++++++- libsoup/soup-soap-response.h | 6 +++ 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5e35f93..8b7ddda 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2003-11-28 Rodrigo Moya + + * libsoup/soup-soap-response.[ch] + (soup_soap_parameter_get_first_child, + soup_soap_parameter_get_first_child_by_name, + soup_soap_parameter_get_next_child, + soup_soap_parameter_get_next_child_by_name): new functions to + manage SoupSoapParameter's children. + (soup_soap_response_get_first_parameter): dont return a GList, but + a SoupSoapParameter contained in the GList. + 2003-11-26 Rodrigo Moya * libsoup/soup-soap-response.[ch] diff --git a/libsoup/soup-soap-response.c b/libsoup/soup-soap-response.c index 9d838e0..8494a53 100644 --- a/libsoup/soup-soap-response.c +++ b/libsoup/soup-soap-response.c @@ -229,6 +229,9 @@ soup_soap_response_set_method_name (SoupSoapResponse *response, const char *meth xmlNodeSetName (response->priv->xml_method, method_name); } +/** + * soup_soap_parameter_get_name: + */ const char * soup_soap_parameter_get_name (SoupSoapParameter *param) { @@ -237,6 +240,9 @@ soup_soap_parameter_get_name (SoupSoapParameter *param) return (const char *) param->name; } +/** + * soup_soap_parameter_get_string_value: + */ const char * soup_soap_parameter_get_string_value (SoupSoapParameter *param) { @@ -246,6 +252,87 @@ soup_soap_parameter_get_string_value (SoupSoapParameter *param) } /** + * soup_soap_parameter_get_first_child: + * @param: A %SoupSoapParameter. + * + * Gets the first child of the given %SoupSoapParameter. This is used + * for compound data types, which can contain several parameters + * themselves. + * + * Return value: the first child or NULL if there are no children. + */ +SoupSoapParameter * +soup_soap_parameter_get_first_child (SoupSoapParameter *param) +{ + g_return_val_if_fail (param != NULL, NULL); + + return param->xmlChildrenNode ? param->xmlChildrenNode : NULL; +} + +/** + * soup_soap_parameter_get_first_child_by_name: + * @param: A %SoupSoapParameter. + * @name: The name of the child parameter to look for. + * + * Gets the first child of the given %SoupSoapParameter whose name + * is @name. + * + * Return value: the first child with the given name or NULL if there + * are no children. + */ +SoupSoapParameter * +soup_soap_parameter_get_first_child_by_name (SoupSoapParameter *param, const char *name) +{ + SoupSoapParameter *tmp; + + g_return_val_if_fail (param != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + + for (tmp = soup_soap_parameter_get_first_child (param); + tmp != NULL; + tmp = soup_soap_parameter_get_next_child (tmp)) { + if (!strcmp (name, tmp->name)) + return tmp; + } + + return NULL; +} + +/** + * soup_soap_parameter_get_next_child: + * @param: A %SoupSoapParameter. + */ +SoupSoapParameter * +soup_soap_parameter_get_next_child (SoupSoapParameter *param) +{ + g_return_val_if_fail (param != NULL, NULL); + + return param->next; +} + +/** + * soup_soap_parameter_get_next_child_by_name: + */ +SoupSoapParameter * +soup_soap_parameter_get_next_child_by_name (SoupSoapParameter *param, + const char *name) +{ + SoupSoapParameter *tmp; + + g_return_val_if_fail (param != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + + for (tmp = soup_soap_parameter_get_next_child (param); + tmp != NULL; + tmp = soup_soap_parameter_get_next_child (tmp)) { + if (!strcmp (name, tmp->name)) + return tmp; + } + + return NULL; +} + +/** * soup_soap_response_get_parameters: * @response: the %SoupSoapResponse object. * @@ -278,7 +365,7 @@ soup_soap_response_get_first_parameter (SoupSoapResponse *response) { g_return_val_if_fail (SOUP_IS_SOAP_RESPONSE (response), NULL); - return response->priv->parameters ? g_list_first (response->priv->parameters) : NULL; + return response->priv->parameters ? response->priv->parameters->data : NULL; } /** diff --git a/libsoup/soup-soap-response.h b/libsoup/soup-soap-response.h index 4858cf6..01eae17 100644 --- a/libsoup/soup-soap-response.h +++ b/libsoup/soup-soap-response.h @@ -45,6 +45,12 @@ typedef xmlNode SoupSoapParameter; const char *soup_soap_parameter_get_name (SoupSoapParameter *param); const char *soup_soap_parameter_get_string_value (SoupSoapParameter *param); +SoupSoapParameter *soup_soap_parameter_get_first_child (SoupSoapParameter *param); +SoupSoapParameter *soup_soap_parameter_get_first_child_by_name (SoupSoapParameter *param, + const char *name); +SoupSoapParameter *soup_soap_parameter_get_next_child (SoupSoapParameter *param); +SoupSoapParameter *soup_soap_parameter_get_next_child_by_name (SoupSoapParameter *param, + const char *name); const GList *soup_soap_response_get_parameters (SoupSoapResponse *response); SoupSoapParameter *soup_soap_response_get_first_parameter (SoupSoapResponse *response); -- 2.7.4