You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2005/11/29 04:53:58 UTC
svn commit: r349607 [1/3] - in /webservices/axis2/trunk/c: include/
modules/test/om/src/ modules/util/src/ modules/xml/om/src/
modules/xml/parser/ modules/xml/parser/guththila/src/
modules/xml/parser/libxml2/src/
Author: samisa
Date: Mon Nov 28 19:53:29 2005
New Revision: 349607
URL: http://svn.apache.org/viewcvs?rev=349607&view=rev
Log:
memory leaks fixed , axis2_pull_parser was renamed to axis2_xml_reader
Added:
webservices/axis2/trunk/c/modules/xml/parser/axis2_xml_reader.h
webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_reader_wrapper.c
webservices/axis2/trunk/c/modules/xml/parser/libxml2/src/axis2_libxml2_reader_wrapper.c
Removed:
webservices/axis2/trunk/c/modules/xml/parser/axis2_pull_parser.h
webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c
webservices/axis2/trunk/c/modules/xml/parser/libxml2/src/axis2_libxml2_wrapper.c
Modified:
webservices/axis2/trunk/c/include/axis2_error.h
webservices/axis2/trunk/c/include/axis2_om_stax_builder.h
webservices/axis2/trunk/c/modules/test/om/src/test_om.c
webservices/axis2/trunk/c/modules/util/src/qname.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_attribute.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_comment.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_node.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_processing_instruction.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c
webservices/axis2/trunk/c/modules/xml/parser/libxml2/src/axis2_libxml2_writer_wrapper.c
Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Mon Nov 28 19:53:29 2005
@@ -129,10 +129,10 @@
AXIS2_ERROR_INVALID_ITERATOR_STATE,
/** Node type is different from what is expected */
AXIS2_ERROR_INVALID_NODE_TYPE,
- /** Pull parser returned NULL element */
- AXIS2_ERROR_PULL_PARSER_ELEMENT_NULL,
- /** Pull parser returned NULL value */
- AXIS2_ERROR_PULL_PARSER_VALUE_NULL,
+ /** axis2_xml_reader returned NULL element */
+ AXIS2_ERROR_XML_READER_ELEMENT_NULL,
+ /** axis2_xml_reader returned NULL value */
+ AXIS2_ERROR_XML_READER_VALUE_NULL,
/** Builder done with pulling. Cannot pull any more */
AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL,
/** Bulder's last node is NULL when it is not supposed to be NULL */
Modified: webservices/axis2/trunk/c/include/axis2_om_stax_builder.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_om_stax_builder.h?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_om_stax_builder.h (original)
+++ webservices/axis2/trunk/c/include/axis2_om_stax_builder.h Mon Nov 28 19:53:29 2005
@@ -23,7 +23,7 @@
*/
#include <axis2_om_node.h>
-#include <axis2_pull_parser.h>
+#include <axis2_xml_reader.h>
#include <axis2_om_document.h>
#include <axis2_env.h>
@@ -122,7 +122,7 @@
*/
AXIS2_DECLARE(axis2_om_stax_builder_t *)
axis2_om_stax_builder_create(axis2_env_t **env,
- axis2_pull_parser_t *parser);
+ axis2_xml_reader_t *parser);
/** builds next node */
Modified: webservices/axis2/trunk/c/modules/test/om/src/test_om.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/test/om/src/test_om.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/test/om/src/test_om.c (original)
+++ webservices/axis2/trunk/c/modules/test/om/src/test_om.c Mon Nov 28 19:53:29 2005
@@ -39,7 +39,7 @@
axis2_om_node_t *node1 = NULL, *node2 = NULL;
axis2_om_output_t *om_output = NULL;
axis2_om_namespace_t* ns = NULL;
- axis2_pull_parser_t *pull_parser = NULL;
+ axis2_xml_reader_t *reader = NULL;
axis2_xml_writer_t *writer = NULL;
axis2_char_t *buf = NULL;
@@ -49,16 +49,16 @@
return -1;
/** create pull parser */
- pull_parser = axis2_pull_parser_create_for_memory(&environment, read_input, NULL);
+ reader = axis2_xml_reader_create_for_memory(&environment, read_input, NULL);
- if(!pull_parser)
+ if(!reader)
{
printf("ERROR CREATING PULLPARSER");
return -1;
}
/** create axis2_om_stax_builder by parsing pull_parser struct */
- builder = axis2_om_stax_builder_create (&environment,pull_parser);
+ builder = axis2_om_stax_builder_create (&environment,reader);
if(!builder)
{
@@ -237,7 +237,7 @@
printf ("\naxis2_om_node_serialize success\n");
/* end serializing stuff */
- AXIS2_OM_NODE_FREE_TREE(node1,&environment);
+ // AXIS2_OM_NODE_FREE_TREE(node1,&environment);
axis2_om_output_free(om_output, &environment);
printf ("\nDONE\n");
@@ -258,7 +258,7 @@
environment = axis2_env_create_with_error_stream_log(allocator, error, stream, axis_log);
test_om_build (file_name);
-
+ test_om_serialize();
axis2_env_free(environment);
getchar();
return 0;
Modified: webservices/axis2/trunk/c/modules/util/src/qname.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/qname.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/qname.c (original)
+++ webservices/axis2/trunk/c/modules/util/src/qname.c Mon Nov 28 19:53:29 2005
@@ -79,6 +79,7 @@
/** prefix mandatory */
axis2_char_t *prefix;
+
}axis2_qname_impl_t;
@@ -194,25 +195,30 @@
axis2_qname_free ( axis2_qname_t * qname,
axis2_env_t **env)
{
+ axis2_qname_impl_t *qname_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(qname, env, AXIS2_FAILURE);
+ qname_impl = AXIS2_INTF_TO_IMPL(qname);
- if (AXIS2_INTF_TO_IMPL(qname)->localpart)
+ if (qname_impl->localpart)
{
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(qname)->localpart);
+ AXIS2_FREE ((*env)->allocator, qname_impl->localpart);
+ qname_impl->localpart = NULL;
}
if (AXIS2_INTF_TO_IMPL(qname)->namespace_uri)
{
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(qname)->namespace_uri);
+ AXIS2_FREE ((*env)->allocator, qname_impl->namespace_uri);
+ qname_impl->namespace_uri = NULL;
}
if (AXIS2_INTF_TO_IMPL(qname)->prefix)
{
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(qname)->prefix);
+ AXIS2_FREE ((*env)->allocator, qname_impl->prefix);
+ qname_impl->prefix = NULL;
}
if (qname->ops)
{
AXIS2_FREE ((*env)->allocator, qname->ops);
}
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(qname));
+ AXIS2_FREE ((*env)->allocator, qname_impl);
return AXIS2_SUCCESS;
}
@@ -309,18 +315,23 @@
axis2_env_t **env,
const axis2_char_t *uri)
{
+ axis2_qname_impl_t *qname_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(qname, env,AXIS2_FAILURE);
+ qname_impl = AXIS2_INTF_TO_IMPL(qname);
+ if(AXIS2_INTF_TO_IMPL(qname)->namespace_uri)
+ AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(qname)->namespace_uri);
+
if(!uri)
{
- AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, AXIS2_ERROR_INVALID_NULL_PARAM);
- AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_FAILURE);
- return AXIS2_FAILURE;
+ qname_impl->namespace_uri = (axis2_char_t*)AXIS2_STRDUP(uri, env);
+ if(!qname_impl->namespace_uri)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FAILURE;
+ }
}
- if(AXIS2_INTF_TO_IMPL(qname)->namespace_uri)
- AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(qname)->namespace_uri);
- AXIS2_INTF_TO_IMPL(qname)->namespace_uri = (axis2_char_t*)AXIS2_STRDUP(uri, env);
- if(!AXIS2_INTF_TO_IMPL(qname)->namespace_uri)
- AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ /* uri should be set to null */
+ qname_impl->namespace_uri = NULL;
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_attribute.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_attribute.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_attribute.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_attribute.c Mon Nov 28 19:53:29 2005
@@ -69,6 +69,8 @@
axis2_char_t *value;
/** attribute namespace */
axis2_om_namespace_t *ns;
+ /** store qname here */
+ axis2_qname_t *qname;
}axis2_om_attribute_impl_t;
@@ -125,7 +127,7 @@
attribute->ns = ns;
/** operations */
-
+ attribute->qname = NULL;
attribute->om_attribute.ops = (axis2_om_attribute_ops_t*)AXIS2_MALLOC ((*env)->allocator,
sizeof (axis2_om_attribute_ops_t));
if (!(attribute->om_attribute.ops))
@@ -157,47 +159,56 @@
axis2_om_attribute_free (axis2_om_attribute_t *om_attribute,
axis2_env_t **env)
{
+ axis2_om_attribute_impl_t *attribute_impl = NULL;
+
AXIS2_FUNC_PARAM_CHECK(om_attribute, env, AXIS2_FAILURE);
- if (AXIS2_INTF_TO_IMPL(om_attribute))
+ attribute_impl = AXIS2_INTF_TO_IMPL(om_attribute);
+
+ if (attribute_impl->localname)
{
- if (AXIS2_INTF_TO_IMPL(om_attribute)->localname)
- {
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_attribute)->localname);
- }
- if (AXIS2_INTF_TO_IMPL(om_attribute)->value)
- {
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_attribute)->value);
- }
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_attribute));
- return AXIS2_SUCCESS;
+ AXIS2_FREE ((*env)->allocator, attribute_impl->localname);
+ attribute_impl->localname = NULL;
+ }
+ if (attribute_impl->value)
+ {
+ AXIS2_FREE ((*env)->allocator, attribute_impl->value);
+ attribute_impl->value = NULL;
}
- return AXIS2_FAILURE;
+ if(attribute_impl->qname)
+ {
+ AXIS2_QNAME_FREE(attribute_impl->qname, env);
+ attribute_impl->qname = NULL;
+ }
+ AXIS2_FREE((*env)->allocator, om_attribute->ops);
+ AXIS2_FREE ((*env)->allocator,attribute_impl);
+ return AXIS2_SUCCESS;
}
-
-
axis2_qname_t * AXIS2_CALL
axis2_om_attribute_get_qname (axis2_om_attribute_t *om_attribute,
axis2_env_t **env)
{
axis2_qname_t *qname = NULL;
+ axis2_om_attribute_impl_t *attribute_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(om_attribute, env, NULL);
-
- if (AXIS2_INTF_TO_IMPL(om_attribute)->ns)
+ attribute_impl = AXIS2_INTF_TO_IMPL(om_attribute);
+ if(!(attribute_impl->qname))
{
- axis2_om_namespace_t *ns = NULL;
- ns = AXIS2_INTF_TO_IMPL(om_attribute)->ns;
-
- qname = axis2_qname_create (env,
- AXIS2_INTF_TO_IMPL(om_attribute)->localname,
- AXIS2_OM_NAMESPACE_GET_URI(ns, env),
- AXIS2_OM_NAMESPACE_GET_PREFIX(ns, env));
- }
- else
- qname = axis2_qname_create (env,AXIS2_INTF_TO_IMPL(om_attribute)->localname,
+ if (attribute_impl->ns)
+ {
+ qname = axis2_qname_create (env,
+ attribute_impl->localname,
+ AXIS2_OM_NAMESPACE_GET_URI(attribute_impl->ns, env),
+ AXIS2_OM_NAMESPACE_GET_PREFIX(attribute_impl->ns, env));
+ }
+ else
+ { qname = axis2_qname_create (env,attribute_impl->localname,
NULL, NULL);
-
- return qname;
+ }
+ attribute_impl->qname = qname;
+ return qname;
+ }
+ return attribute_impl->qname;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_comment.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_comment.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_comment.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_comment.c Mon Nov 28 19:53:29 2005
@@ -122,18 +122,19 @@
axis2_om_comment_free (axis2_om_comment_t *om_comment,
axis2_env_t **env)
{
+ axis2_om_comment_impl_t *comment_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(om_comment, env, AXIS2_FAILURE);
- if (om_comment)
+ comment_impl = AXIS2_INTF_TO_IMPL(om_comment);
+
+ if (comment_impl->value)
{
- if (AXIS2_INTF_TO_IMPL(om_comment)->value)
- {
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_comment)->value);
- }
- AXIS2_FREE((*env)->allocator,AXIS2_INTF_TO_IMPL(om_comment));
- return AXIS2_SUCCESS;
+ AXIS2_FREE ((*env)->allocator, comment_impl->value);
}
- return AXIS2_FAILURE;
+ AXIS2_FREE((*env)->allocator, om_comment->ops);
+ AXIS2_FREE((*env)->allocator,AXIS2_INTF_TO_IMPL(om_comment));
+ return AXIS2_SUCCESS;
}
+
axis2_char_t* AXIS2_CALL
axis2_om_comment_get_value(axis2_om_comment_t *om_comment,
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c Mon Nov 28 19:53:29 2005
@@ -528,69 +528,66 @@
axis2_env_t **env)
{
axis2_status_t status = AXIS2_SUCCESS;
+ axis2_om_element_impl_t *element_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(om_element, env, AXIS2_FAILURE);
+ element_impl = AXIS2_INTF_TO_IMPL(om_element);
- if (om_element)
+ if (element_impl->localname)
+ {
+ AXIS2_FREE ((*env)->allocator,element_impl->localname);
+ }
+ if (element_impl->ns)
{
- if (AXIS2_INTF_TO_IMPL(om_element)->localname)
- {
- AXIS2_FREE ((*env)->allocator,AXIS2_INTF_TO_IMPL(om_element)->localname);
- }
- if (AXIS2_INTF_TO_IMPL(om_element)->ns)
- {
/* it is the responsibility of the element where the namespace is declared to free it */
- }
- if (AXIS2_INTF_TO_IMPL(om_element)->attributes)
- {
- /*
- axis2_hash_index_t *hi;
- void *val = NULL;
+ }
+ if (element_impl->attributes)
+ {
+ axis2_hash_index_t *hi;
+ void *val = NULL;
- for (hi = axis2_hash_first (AXIS2_INTF_TO_IMPL(om_element)->attributes, env); hi;
+ for (hi = axis2_hash_first (element_impl->attributes, env); hi;
hi = axis2_hash_next ( env, hi))
- {
+ {
axis2_hash_this (hi, NULL, NULL, &val);
- if (val)
+ if (val)
status = AXIS2_OM_ATTRIBUTE_FREE ((axis2_om_attribute_t *)val, env);
- else
- {
+ else
+ {
status = AXIS2_FAILURE;
- }
- val = NULL;
+ }
+ val = NULL;
}
- */
axis2_hash_free (AXIS2_INTF_TO_IMPL(om_element)->attributes, env);
}
- if (AXIS2_INTF_TO_IMPL(om_element)->namespaces)
+ if (element_impl->namespaces)
{
- /*
axis2_hash_index_t *hi;
void *val = NULL;
- for (hi = axis2_hash_first (AXIS2_INTF_TO_IMPL(om_element)->namespaces, env); hi;
+ for (hi = axis2_hash_first (element_impl->namespaces, env); hi;
hi = axis2_hash_next ( env, hi))
{
axis2_hash_this (hi, NULL, NULL, &val);
- if (val)
- status = AXIS2_OM_NAMESPACE_FREE ((axis2_om_namespace_t *)val, env);
- else
- {
- status = AXIS2_FAILURE;
- }
- val = NULL;
+ if (val)
+ status = AXIS2_OM_NAMESPACE_FREE ((axis2_om_namespace_t *)val, env);
+ else
+ {
+ status = AXIS2_FAILURE;
+ }
+ val = NULL;
}
- */
- axis2_hash_free (AXIS2_INTF_TO_IMPL(om_element)->namespaces, env);
+
+ axis2_hash_free (element_impl->namespaces, env);
/*TODO: free namespaces */
/* need to iterate and free individual namespaces */
}
AXIS2_FREE ((*env)->allocator, om_element->ops);
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_element));
- }
+ AXIS2_FREE ((*env)->allocator, element_impl);
+
return status;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_node.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_node.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_node.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_node.c Mon Nov 28 19:53:29 2005
@@ -245,42 +245,39 @@
axis2_status_t AXIS2_CALL axis2_om_node_free_tree(axis2_om_node_t *om_node,
axis2_env_t **env)
{
-
+ axis2_om_node_impl_t *node_impl = NULL;
axis2_om_node_t *child_node = NULL;
-
AXIS2_FUNC_PARAM_CHECK(om_node,env,AXIS2_FAILURE);
- if (AXIS2_INTF_TO_IMPL(om_node)->first_child)
- {
+ node_impl = AXIS2_INTF_TO_IMPL(om_node);
- while (AXIS2_INTF_TO_IMPL(om_node)->first_child)
+ if (node_impl->first_child)
+ {
+ while (node_impl->first_child)
{
-
- child_node = AXIS2_OM_NODE_DETACH (AXIS2_INTF_TO_IMPL(om_node)->first_child, env);
-
+ child_node = AXIS2_OM_NODE_DETACH (node_impl->first_child, env);
AXIS2_OM_NODE_FREE_TREE ( child_node , env);
-
}
}
- switch (AXIS2_INTF_TO_IMPL(om_node)->node_type)
+ switch (node_impl->node_type)
{
case AXIS2_OM_ELEMENT:
- AXIS2_OM_ELEMENT_FREE((axis2_om_element_t*)(AXIS2_INTF_TO_IMPL(om_node)->data_element), env);
+ AXIS2_OM_ELEMENT_FREE((axis2_om_element_t*)(node_impl->data_element), env);
break;
case AXIS2_OM_COMMENT:
- /* axis2_om_comment_free(env,(axis2_om_comment_t*)node->data_element) */
+ AXIS2_OM_COMMENT_FREE((axis2_om_comment_t*)(node_impl->data_element), env);
break;
case AXIS2_OM_DOCTYPE:
- /* axis2_om_doctype_free(env,(axis2_om_doctype_t*)node->data_element) */
+ /*AXIS2_OM_DOCTYPE_FREE((axis2_om_doctype_t*)(node_impl->data_element), env);*/
break;
case AXIS2_OM_PROCESSING_INSTRUCTION:
- /* axis2_om_prcessing_instruction_free(env,(axis2_om_processing_instruction)node->data_element)*/
+ AXIS2_OM_PROCESSING_INSTRUCTION_FREE((axis2_om_processing_instruction_t*)(node_impl->data_element), env);
break;
case AXIS2_OM_TEXT:
- AXIS2_OM_TEXT_FREE((axis2_om_text_t*)(AXIS2_INTF_TO_IMPL(om_node)->data_element),env);
+ AXIS2_OM_TEXT_FREE((axis2_om_text_t*)(node_impl->data_element),env);
break;
default:
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_processing_instruction.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_processing_instruction.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_processing_instruction.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_processing_instruction.c Mon Nov 28 19:53:29 2005
@@ -155,18 +155,25 @@
axis2_om_processing_instruction_free (axis2_om_processing_instruction_t *om_pi,
axis2_env_t **env)
{
+ axis2_om_processing_instruction_impl_t *pi_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(om_pi, env, AXIS2_FAILURE);
- if (AXIS2_INTF_TO_IMPL(om_pi)->value)
+
+ pi_impl = AXIS2_INTF_TO_IMPL(om_pi);
+
+ if (pi_impl->value)
{
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_pi)->value);
+ AXIS2_FREE ((*env)->allocator,pi_impl->value);
+ pi_impl->value = NULL;
}
- if (AXIS2_INTF_TO_IMPL(om_pi)->target)
+ if (pi_impl->target)
{
- AXIS2_FREE ((*env)->allocator, AXIS2_INTF_TO_IMPL(om_pi)->target);
+ AXIS2_FREE ((*env)->allocator, pi_impl->target);
+ pi_impl->target = NULL;
}
-
- AXIS2_FREE ((*env)->allocator,om_pi);
+
+ AXIS2_FREE((*env)->allocator, om_pi->ops);
+ AXIS2_FREE ((*env)->allocator, pi_impl);
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c?rev=349607&r1=349606&r2=349607&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c Mon Nov 28 19:53:29 2005
@@ -20,13 +20,11 @@
#include <axis2_om_processing_instruction.h>
#include <axis2_om_comment.h>
#include <axis2_string.h>
-#include <axis2_pull_parser.h>
+#include <axis2_xml_writer.h>
#include <axis2_om_doctype.h>
-const axis2_char_t XMLNS_URI[] = "http://www.w3.org/XML/1998/namespace";
-const axis2_char_t XMLNS_PREFIX[] = "xmlns";
/**************************** function prototypes *****************************/
@@ -59,7 +57,7 @@
{
axis2_om_stax_builder_t om_stax_builder;
/** pull parser instance used by the builder */
- axis2_pull_parser_t *parser;
+ axis2_xml_reader_t *parser;
/** last node the builder found */
axis2_om_node_t *lastnode;
/** document associated with the builder */
@@ -85,7 +83,7 @@
AXIS2_DECLARE(axis2_om_stax_builder_t *)
axis2_om_stax_builder_create (axis2_env_t **env,
- axis2_pull_parser_t *parser)
+ axis2_xml_reader_t *parser)
{
axis2_om_stax_builder_impl_t *builder = NULL;
AXIS2_ENV_CHECK(env, NULL);
@@ -116,7 +114,7 @@
if (!builder->om_stax_builder.ops)
{
- AXIS2_PULL_PARSER_FREE (builder->parser, env);
+ AXIS2_XML_READER_FREE (builder->parser, env);
AXIS2_FREE ((*env)->allocator, builder);
AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
}
@@ -154,69 +152,45 @@
builder_impl = AXIS2_INTF_TO_IMPL(om_builder);
- attribute_count = AXIS2_PULL_PARSER_GET_ATTRIBUTE_COUNT(
+ attribute_count = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(
builder_impl->parser,env);
for (i=1; i <= attribute_count ; i++)
{
- uri = AXIS2_PULL_PARSER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(
+ uri = AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(
builder_impl->parser, env, i);
- prefix = AXIS2_PULL_PARSER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(
+ prefix = AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(
builder_impl->parser, env, i);
if (uri)
{
- if (axis2_strcmp (uri, " ") != 0);
+ if (axis2_strcmp (uri, "") != 0);
{
ns = AXIS2_OM_ELEMENT_FIND_NAMESPACE (
(axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(element_node,env),
env , element_node, uri, prefix);
}
}
- /*
- if (ns == NULL && prefix && uri
- && (axis2_strcmp (prefix, XMLNS_PREFIX) == 0)
- && (axis2_strcmp (uri, XMLNS_URI) == 0))
- {
- ns = axis2_om_namespace_create (env, XMLNS_URI,
- XMLNS_PREFIX);
- if (ns)
- {
- status = AXIS2_OM_ELEMENT_DECLARE_NAMESPACE (
- (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(element_node,env),
- env, element_node, ns);
- }
- else
- {
- status = AXIS2_FAILURE;
- }
-
- ns = AXIS2_OM_ELEMENT_FIND_NAMESPACE (
- (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(element_node,env),
- env, element_node, uri, prefix);
- }
- */
- attr_name = AXIS2_PULL_PARSER_GET_ATTRIBUTE_NAME_BY_NUMBER(
+
+ attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(
builder_impl->parser, env, i);
- attr_value = AXIS2_PULL_PARSER_GET_ATTRIBUTE_VALUE_BY_NUMBER(
+ attr_value = AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(
builder_impl->parser, env, i);
attribute = axis2_om_attribute_create (env, attr_name, attr_value, ns);
status = AXIS2_OM_ELEMENT_ADD_ATTRIBUTE (
(axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(element_node,env),
env, attribute);
-
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser, env, uri);
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser, env, prefix);
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser, env, attr_name);
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser, env, attr_value);
-
+ if(uri)
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser, env, uri);
+ if(prefix)
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser, env, prefix);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser, env, attr_name);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser, env, attr_value);
}
-
return status;
-
}
@@ -227,7 +201,6 @@
axis2_char_t *temp_value = NULL;
axis2_om_node_t *node = NULL;
axis2_om_stax_builder_impl_t *builder = NULL;
-
AXIS2_FUNC_PARAM_CHECK(om_stax_builder, env, NULL);
builder = AXIS2_INTF_TO_IMPL(om_stax_builder);
@@ -235,11 +208,11 @@
if (!builder->lastnode)
AXIS2_ERROR_SET((*env)->error,
AXIS2_ERROR_INVALID_BUILDER_STATE_LAST_NODE_NULL,NULL);
- temp_value = AXIS2_PULL_PARSER_GET_VALUE (builder->parser, env);
+ temp_value = AXIS2_XML_READER_GET_VALUE (builder->parser, env);
if (!temp_value)
{
- AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_PULL_PARSER_VALUE_NULL, NULL);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_XML_READER_VALUE_NULL, NULL);
}
if (AXIS2_OM_NODE_GET_BUILD_STATUS(builder->lastnode, env))
@@ -257,7 +230,7 @@
AXIS2_OM_NODE_SET_BUILD_STATUS(node , env, AXIS2_TRUE);
builder->lastnode = node;
- AXIS2_PULL_PARSER_XML_FREE(builder->parser , env, temp_value);
+ AXIS2_XML_READER_XML_FREE(builder->parser , env, temp_value);
return node;
}
@@ -286,8 +259,8 @@
builder->cache = AXIS2_FALSE;
do
{
- while (AXIS2_PULL_PARSER_NEXT (builder->parser, env)
- != AXIS2_PULL_PARSER_END_ELEMENT);
+ while (AXIS2_XML_READER_NEXT (builder->parser, env)
+ != AXIS2_XML_READER_END_ELEMENT);
}
while (!(AXIS2_OM_NODE_GET_BUILD_STATUS(element, env)));
@@ -333,13 +306,13 @@
builder = AXIS2_INTF_TO_IMPL(om_stax_builder);
- namespace_count = AXIS2_PULL_PARSER_GET_NAMESPACE_COUNT (builder->parser, env);
+ namespace_count = AXIS2_XML_READER_GET_NAMESPACE_COUNT (builder->parser, env);
for (i = 1; i <= namespace_count; i++)
{
- temp_ns_prefix = AXIS2_PULL_PARSER_GET_NAMESPACE_PREFIX_BY_NUMBER(
+ temp_ns_prefix = AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(
builder->parser, env, i);
- temp_ns_uri = AXIS2_PULL_PARSER_GET_NAMESPACE_URI_BY_NUMBER(
+ temp_ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(
builder->parser, env , i);
if(AXIS2_STRCMP(temp_ns_prefix,"xmlns") == 0 || !temp_ns_prefix)
@@ -364,8 +337,8 @@
env, node, om_ns);
}
- AXIS2_PULL_PARSER_XML_FREE(builder->parser, env, temp_ns_prefix);
- AXIS2_PULL_PARSER_XML_FREE(builder->parser, env, temp_ns_uri);
+ AXIS2_XML_READER_XML_FREE(builder->parser, env, temp_ns_prefix);
+ AXIS2_XML_READER_XML_FREE(builder->parser, env, temp_ns_uri);
if (!om_ns)
{
@@ -374,7 +347,7 @@
}
}
/* set own namespace */
- temp_prefix = AXIS2_PULL_PARSER_GET_PREFIX ( builder->parser, env);
+ temp_prefix = AXIS2_XML_READER_GET_PREFIX ( builder->parser, env);
if (temp_prefix)
{
om_ns = AXIS2_OM_ELEMENT_FIND_NAMESPACE (
@@ -393,7 +366,7 @@
AXIS2_ERROR_INVALID_DOCUMENT_STATE_UNDEFINED_NAMESPACE, AXIS2_FAILURE);
}
}
- AXIS2_PULL_PARSER_XML_FREE(builder->parser, env, temp_prefix);
+ AXIS2_XML_READER_XML_FREE(builder->parser, env, temp_prefix);
return status;
}
@@ -409,11 +382,11 @@
builder_impl = AXIS2_INTF_TO_IMPL(om_stax_builder);
- temp_localname = AXIS2_PULL_PARSER_GET_NAME (builder_impl->parser, env);
+ temp_localname = AXIS2_XML_READER_GET_NAME (builder_impl->parser, env);
if (!temp_localname)
{
- AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_PULL_PARSER_ELEMENT_NULL, NULL);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_XML_READER_ELEMENT_NULL, NULL);
}
if (!(builder_impl->lastnode))
@@ -445,11 +418,12 @@
AXIS2_OM_NODE_SET_PARENT(element_node , env, builder_impl->lastnode);
}
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, temp_localname);
-
- axis2_om_stax_builder_process_attributes ( om_stax_builder, env, element_node);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, temp_localname);
+
+ /** order of processing namespaces first is important */
axis2_om_stax_builder_process_namespaces ( om_stax_builder, env, element_node, 0);
-
+ axis2_om_stax_builder_process_attributes ( om_stax_builder, env, element_node);
+
builder_impl->lastnode = element_node;
return element_node;
@@ -466,16 +440,16 @@
AXIS2_FUNC_PARAM_CHECK(builder, env, NULL);
builder_impl = AXIS2_INTF_TO_IMPL(builder);
- comment_value = AXIS2_PULL_PARSER_GET_VALUE(builder_impl->parser, env);
+ comment_value = AXIS2_XML_READER_GET_VALUE(builder_impl->parser, env);
if (!comment_value)
{
- AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_PULL_PARSER_ELEMENT_NULL, NULL);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_XML_READER_ELEMENT_NULL, NULL);
}
if (!(builder_impl->lastnode))
{
/* do nothing */
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, comment_value);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, comment_value);
return NULL;
}
else if (AXIS2_OM_NODE_GET_BUILD_STATUS(builder_impl->lastnode, env))
@@ -496,7 +470,7 @@
AXIS2_OM_NODE_SET_PARENT(comment_node , env, builder_impl->lastnode);
}
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, comment_value);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, comment_value);
builder_impl->lastnode = comment_node;
@@ -516,7 +490,7 @@
AXIS2_FUNC_PARAM_CHECK(builder, env, NULL);
builder_impl = AXIS2_INTF_TO_IMPL(builder);
- doc_value = AXIS2_PULL_PARSER_GET_DTD(builder_impl->parser, env);
+ doc_value = AXIS2_XML_READER_GET_DTD(builder_impl->parser, env);
if(!doc_value)
return NULL;
if(!(builder_impl->lastnode))
@@ -528,7 +502,7 @@
}
builder_impl->lastnode = doctype_node;
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser, env, doc_value);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser, env, doc_value);
return doctype_node;
}
@@ -545,18 +519,18 @@
AXIS2_FUNC_PARAM_CHECK(builder, env, NULL);
builder_impl = AXIS2_INTF_TO_IMPL(builder);
- target = AXIS2_PULL_PARSER_GET_PI_TARGET (builder_impl->parser, env);
- value = AXIS2_PULL_PARSER_GET_PI_DATA(builder_impl->parser, env);
+ target = AXIS2_XML_READER_GET_PI_TARGET (builder_impl->parser, env);
+ value = AXIS2_XML_READER_GET_PI_DATA(builder_impl->parser, env);
if (!target)
{
- AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_PULL_PARSER_ELEMENT_NULL, NULL);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_XML_READER_ELEMENT_NULL, NULL);
}
if (!(builder_impl->lastnode))
{
/* do nothing */
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, target);
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, value);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, target);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, value);
return NULL;
}
else if (AXIS2_OM_NODE_GET_BUILD_STATUS(builder_impl->lastnode, env) ||
@@ -578,8 +552,8 @@
AXIS2_OM_NODE_SET_PARENT(pi_node , env, builder_impl->lastnode);
}
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, target);
- AXIS2_PULL_PARSER_XML_FREE(builder_impl->parser , env, value);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, target);
+ AXIS2_XML_READER_XML_FREE(builder_impl->parser , env, value);
builder_impl->lastnode = pi_node;
return pi_node;
}
@@ -636,7 +610,7 @@
if (builder->done)
AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL, NULL);
- token = AXIS2_PULL_PARSER_NEXT (builder->parser, env);
+ token = AXIS2_XML_READER_NEXT (builder->parser, env);
if(token == -1)
return NULL;
@@ -648,43 +622,43 @@
switch (token)
{
- case AXIS2_PULL_PARSER_START_DOCUMENT:
+ case AXIS2_XML_READER_START_DOCUMENT:
/*Do nothing */
break;
- case AXIS2_PULL_PARSER_START_ELEMENT:
+ case AXIS2_XML_READER_START_ELEMENT:
node = axis2_om_stax_builder_create_om_element (
om_stax_builder, env);
break;
- case AXIS2_PULL_PARSER_EMPTY_ELEMENT:
+ case AXIS2_XML_READER_EMPTY_ELEMENT:
node = axis2_om_stax_builder_create_om_element (
om_stax_builder, env);
- case AXIS2_PULL_PARSER_END_ELEMENT:
+ case AXIS2_XML_READER_END_ELEMENT:
axis2_om_stax_builder_end_element (om_stax_builder, env);
break;
- case AXIS2_PULL_PARSER_SPACE:
+ case AXIS2_XML_READER_SPACE:
/* Do nothing */
break;
- case AXIS2_PULL_PARSER_CHARACTER:
+ case AXIS2_XML_READER_CHARACTER:
node = axis2_om_stax_builder_create_om_text(om_stax_builder, env);
break;
- case AXIS2_PULL_PARSER_ENTITY_REFERANCE:
+ case AXIS2_XML_READER_ENTITY_REFERANCE:
break;
- case AXIS2_PULL_PARSER_COMMENT:
+ case AXIS2_XML_READER_COMMENT:
node = axis2_om_stax_builder_create_om_comment(om_stax_builder, env);
axis2_om_stax_builder_end_element (om_stax_builder, env);
break;
- case AXIS2_PULL_PARSER_PROCESSING_INSTRUCTION:
+ case AXIS2_XML_READER_PROCESSING_INSTRUCTION:
node = axis2_om_stax_builder_create_om_processing_instruction(
om_stax_builder , env );
@@ -692,10 +666,10 @@
break;
- case AXIS2_PULL_PARSER_CDATA:
+ case AXIS2_XML_READER_CDATA:
break;
- case AXIS2_PULL_PARSER_DOCUMENT_TYPE:
+ case AXIS2_XML_READER_DOCUMENT_TYPE:
/* node = axis2_om_stax_builder_create_om_doctype(om_stax_builder, env);
*/
break;
@@ -721,7 +695,7 @@
if(builder_impl->parser)
{
- AXIS2_PULL_PARSER_FREE(builder_impl->parser, env);
+ AXIS2_XML_READER_FREE(builder_impl->parser, env);
}
if(builder->ops)
Added: webservices/axis2/trunk/c/modules/xml/parser/axis2_xml_reader.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/parser/axis2_xml_reader.h?rev=349607&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/parser/axis2_xml_reader.h (added)
+++ webservices/axis2/trunk/c/modules/xml/parser/axis2_xml_reader.h Mon Nov 28 19:53:29 2005
@@ -0,0 +1,369 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef AXIS2_XML_READER_H
+#define AXIS2_XML_READER_H
+
+/**
+ *@file axis2_xml_reader.h
+ *@brief this is the parser abstraction layer for axis2
+ */
+
+#include <axis2_env.h>
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct axis2_xml_reader_ops axis2_xml_reader_ops_t;
+typedef struct axis2_xml_reader axis2_xml_reader_t;
+
+/**
+ * @defgroup axis2_xml_reader
+ * @ingroup axis2_om_parser
+ * @{
+ */
+
+enum axis2_xml_reader_event_types
+{
+ AXIS2_XML_READER_START_DOCUMENT = 0,
+ AXIS2_XML_READER_START_ELEMENT,
+ AXIS2_XML_READER_END_ELEMENT,
+ AXIS2_XML_READER_SPACE,
+ AXIS2_XML_READER_EMPTY_ELEMENT,
+ AXIS2_XML_READER_CHARACTER,
+ AXIS2_XML_READER_ENTITY_REFERANCE,
+ AXIS2_XML_READER_COMMENT,
+ AXIS2_XML_READER_PROCESSING_INSTRUCTION,
+ AXIS2_XML_READER_CDATA,
+ AXIS2_XML_READER_DOCUMENT_TYPE
+};
+
+ /**
+ * \brief AXIS2_XML_READER operations
+ * Encapsulator struct for operations of axis2_xml_reader
+ */
+
+AXIS2_DECLARE_DATA struct axis2_xml_reader_ops
+ {
+ /**
+ * causes the reader to read the next parse event.
+ * returns the event just read
+ * @param parser axis2_xml_reader struct
+ * @param env axis2_environment, MUST NOT be NULL
+ * @returns one of the events defined in
+ * axis2_xml_reader_event_types
+ */
+
+ int (AXIS2_CALL *next)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * free pull_parser
+ * @param parser axis2_xml_reader struct
+ * @param env axis2_environment MUST NOT be NULL
+ * @returns axis2_status_code
+ */
+
+ axis2_status_t (AXIS2_CALL *free)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * Get the Number of attributes in the current element
+ * @param parser axis2_xml_reader
+ * @param env axis2_environment, MUST NOT be NULL.
+ * @returns Number of attributes , AXIS2_FAILURE on error
+ */
+
+ int (AXIS2_CALL *get_attribute_count)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+ /** This is used to get an attribute's localname using an index relative to
+ * current element.The iterations are not zero based.
+ * To access the first attribute use 1 for parameter i
+ * @param parser parser struct
+ * @param env environment struct
+ * @param i attribute index
+ * @returns the attribute localname
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+ axis2_char_t* (AXIS2_CALL *get_attribute_name_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+ /** This is used to get an attribute's prefix using an index relative to
+ * current element. The iterations are not zero based.
+ * To access the first attribute use 1 for parameter i
+ * @param parser parser struct
+ * @param env environment, MUST NOT be NULL
+ * @param i attribute index.
+ * @returns the attribute prefix, returns NULL on error,
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+ axis2_char_t* (AXIS2_CALL *get_attribute_prefix_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+ /** get an attribute's value using an index relative to
+ * current element. The iterations are not zero based.
+ * To access the first attribute use 1 for parameter i
+ * @param parser parser struct
+ * @param env environment, MUST NOT be NULL.
+ * @param i attribute index
+ * @returns the attribute value, returns NULL on error,
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+ axis2_char_t* (AXIS2_CALL *get_attribute_value_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+ /** get an attribute's namespace uri using an index relative to
+ * current element. The iterations are not zero based.
+ * To access the first attribute use 1 for parameter i
+ * @param parser parser struct
+ * @param env environment struct
+ * @param i attribute index
+ * @returns the attribute value, returns NULL on error
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+ axis2_char_t* (AXIS2_CALL *get_attribute_namespace_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+ /** returns the text value of current element
+ * @param parser pointer to parser
+ * @param env environment, MUST not be NULL
+ * @returns Text Value, NULL on error
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+ axis2_char_t* (AXIS2_CALL *get_value)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+ /**
+ * Returns the namespace count of current element
+ * @param parser parser struct
+ * @param env environment
+ * @returns namespace count of current element,
+ */
+ int (AXIS2_CALL *get_namespace_count)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * access the namespace uri of the namespaces declared in current element
+ * using an index
+ * @param parser parser struct
+ * @param env environment
+ * @param i index
+ * @returns namespace uri of corresponding namespace
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+ axis2_char_t* (AXIS2_CALL *get_namespace_uri_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+ /**
+ * access the namespace prefix of the namespaces declared in current element
+ * using an index
+ * @param parser parser struct
+ * @param env environment
+ * @param i index
+ * @returns namespace prefix of corresponding namespace
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+ axis2_char_t* (AXIS2_CALL *get_namespace_prefix_by_number)
+ (axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+ /**
+ * Used to obtain the current element prefix
+ * @param parser parser struct
+ * @param env environment struct
+ * @returns prefix , NULL on error
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+ axis2_char_t* (AXIS2_CALL *get_prefix)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * Used to obtain the current element localname
+ * @param parser parser struct
+ * @param env environment struct
+ * @returns localname , NULL on error
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+ axis2_char_t* (AXIS2_CALL *get_name)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * Used to get the processingInstruction target
+ * @param parser parser struct
+ * @param env environment, MUST NOT be NULL.
+ * @returns target value of processingInstruction
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+ axis2_char_t* (AXIS2_CALL *get_pi_target)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * gets the processingInstruction data
+ *@param parser parser struct
+ *@param env environment, MUST NOT be NULL.
+ *@returns data of processingInstruction
+ * caller must free the value using AXIS2_XML_READER_XML_FREE macro
+ */
+
+
+ axis2_char_t* (AXIS2_CALL *get_pi_data)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * used to get the DTD
+ * @param parser pointer to pull parser struct
+ * @param env environment, MUST NOT be NULL.
+ * @return text of doctype declaration. NULL is returns of no data
+ * exists.
+ */
+ axis2_char_t* (AXIS2_CALL *get_dtd)(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+ /**
+ * Free function , this function wraps the underlying parser's
+ * xml free function. For freeing values obatined by calling
+ * pull parser api methods, This function must be used.
+ * @param parser pointer to axis2_xml_reader
+ * @param env environment, MUST NOT be NULL.
+ * @param data data values to be destroyed
+ * @return status of the operation, AXIS2_SUCCESS on success,
+ * AXIS2_FAILURE on error.
+ */
+ axis2_status_t (AXIS2_CALL *xml_free)(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ void *data);
+ };
+
+/**
+ * @brief axis2_xml_reader struct
+ * Axis2 OM pull_parser
+ */
+struct axis2_xml_reader
+{
+ axis2_xml_reader_ops_t *ops;
+};
+
+/**
+ * create an instance of axis2_xml_reader to parse
+ * a file using an xml document in a file system
+ * @param env environment struct, must not be null
+ * @param filename url of an xml document
+ * @returns a pointer to xml_pull_parser_t struct
+ * NULL on error with error code set in the environment's error
+ */
+
+AXIS2_DECLARE(axis2_xml_reader_t *)
+axis2_xml_reader_create_for_file(axis2_env_t **env,
+ char *filename,
+ const axis2_char_t *encoding);
+/**
+ * This create an instance of axis2_xml_reader to
+ * parse a xml document in a buffer. It takes a callback
+ * function that takes a buffer and the size of the buffer
+ * The user must implement a function that takes in buffer
+ * and size and fill the buffer with specified size
+ * with xml stream, parser will call this function to fill the
+ * buffer on the fly while parsing.
+ * @param env environment MUST NOT be NULL.
+ * @param read_input_callback() callback function that fills
+ * a char buffer with size @size
+ * @param buffer a character buffer
+ * @param size size of the buffer to be filled
+ * @param encoding encoding scheme of the xml stream
+ */
+
+AXIS2_DECLARE(axis2_xml_reader_t *)
+axis2_xml_reader_create_for_memory(axis2_env_t **env,
+ int (*read_input_callback)(char *buffer,int size),
+ const axis2_char_t *encoding);
+
+/********************************* Macros *************************************/
+
+/** Macros corresponding to above declared function pointers */
+
+/** causes the reader to read the next parse event.
+ returns an integer which identifies the type of event just read. */
+#define AXIS2_XML_READER_NEXT(parser, env) \
+ ((parser)->ops->next(parser, env))
+/** Free pull parser struct */
+#define AXIS2_XML_READER_FREE(parser, env) \
+ ((parser)->ops->free(parser, env))
+/** Get the Number of attributes in an element */
+#define AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(parser, env) \
+ ((parser)->ops->get_attribute_count(parser, env))
+/** Get the localname of the attribute corresponding to index i */
+#define AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_attribute_name_by_number(parser, env, i))
+/** Get value of attribute corresponding to index i */
+#define AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_attribute_value_by_number(parser,env, i))
+/** Get namespace uri of attribute corresponding to index i */
+#define AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_attribute_namespace_by_number(parser, env, i))
+/** get prefix of attribute corresponding to index i */
+#define AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_attribute_prefix_by_number(parser, env, i))
+/** get the localname of element */
+#define AXIS2_XML_READER_GET_NAME(parser, env) \
+ ((parser)->ops->get_name(parser, env))
+/** get value of element */
+#define AXIS2_XML_READER_GET_VALUE(parser, env) \
+ ((parser)->ops->get_value(parser, env))
+/** get prefix of element */
+#define AXIS2_XML_READER_GET_PREFIX(parser, env) \
+ ((parser)->ops->get_prefix(parser, env))
+/** get the number of namespaces declared in an element */
+#define AXIS2_XML_READER_GET_NAMESPACE_COUNT(parser, env) \
+ ((parser)->ops->get_namespace_count(parser, env))
+/** get the elements namespace uri corresponding to index i */
+#define AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_namespace_uri_by_number(parser, env, i))
+/** get the elements namespace prefix corresponding to index i */
+#define AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(parser, env, i) \
+ ((parser)->ops->get_namespace_prefix_by_number(parser, env, i))
+/** get processing instruction data */
+#define AXIS2_XML_READER_GET_PI_DATA(parser, env) \
+ ((parser)->ops->get_pi_data(parser, env))
+/** get processing instruction target */
+#define AXIS2_XML_READER_GET_PI_TARGET(parser, env) \
+ ((parser)->ops->get_pi_target(parser, env))
+/** get document type declaration text */
+#define AXIS2_XML_READER_GET_DTD(parser, env) \
+ ((parser)->ops->get_dtd(parser, env))
+/** macro to free values returned by pull parser */
+#define AXIS2_XML_READER_XML_FREE(parser, env, data) \
+ ((parser)->ops->xml_free(parser, env, data))
+
+
+/******************************* End Macros ***********************************/
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_XML_READER_H */
Added: webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_reader_wrapper.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_reader_wrapper.c?rev=349607&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_reader_wrapper.c (added)
+++ webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_reader_wrapper.c Mon Nov 28 19:53:29 2005
@@ -0,0 +1,549 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <axis2_xml_reader.h>
+#include <axis2_env.h>
+#include <axis2.h>
+#include <guththila_xml_pull_parser.h>
+
+/**************** function prototypes ******************************************/
+
+
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_next(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+
+axis2_status_t AXIS2_CALL
+guththila_xml_reader_wrapper_free(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_count(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_name_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_prefix_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_value_by_number(
+ axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_namespace_by_number(
+ axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_value(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_count(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_uri_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_prefix_by_number(
+ axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_prefix(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_name(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_pi_target(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_pi_data(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_dtd(axis2_xml_reader_t *parser,
+ axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_reader_wrapper_xml_free(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ void *data);
+
+
+/*********** guththila_xml_reader_wrapper_impl_t wrapper struct *******************/
+
+typedef struct guththila_xml_reader_wrapper_impl
+{
+ axis2_xml_reader_t parser;
+ guththila_xml_pull_parser_t *guththila_parser;
+ guththila_environment_t *guththila_env;
+ guththila_reader_t *reader;
+ int event_map[10];
+
+}guththila_xml_reader_wrapper_impl_t;
+
+/********************************* Macro ***************************************/
+
+#define AXIS2_INTF_TO_IMPL(p) ((guththila_xml_reader_wrapper_impl_t*)p)
+
+#define AXIS2_IMPL_TO_INTF(p) &(p->parser)
+
+/**********End macros -- event_map initializing function *********************/
+
+static axis2_status_t guththila_xml_reader_wrapper_init_map(
+ guththila_xml_reader_wrapper_impl_t *parser)
+{
+ if(parser)
+ {
+ parser->event_map[GUTHTHILA_START_DOCUMENT] = AXIS2_XML_READER_START_DOCUMENT;
+ parser->event_map[GUTHTHILA_START_ELEMENT] = AXIS2_XML_READER_START_ELEMENT;
+ parser->event_map[GUTHTHILA_END_ELEMENT] = AXIS2_XML_READER_END_ELEMENT;
+ parser->event_map[GUTHTHILA_SPACE] = AXIS2_XML_READER_SPACE;
+ parser->event_map[GUTHTHILA_EMPTY_ELEMENT] = AXIS2_XML_READER_EMPTY_ELEMENT;
+ parser->event_map[GUTHTHILA_CHARACTER] = AXIS2_XML_READER_CHARACTER;
+ parser->event_map[GUTHTHILA_ENTITY_REFERANCE] = AXIS2_XML_READER_ENTITY_REFERANCE;
+ parser->event_map[GUTHTHILA_COMMENT] = AXIS2_XML_READER_COMMENT;
+ return AXIS2_SUCCESS;
+ }
+ return AXIS2_FAILURE;
+}
+
+/********************************************************************************/
+
+AXIS2_DECLARE(axis2_xml_reader_t *)
+axis2_xml_reader_create_for_file(axis2_env_t **env,
+ char* filename,
+ const char *encoding)
+{
+ guththila_xml_reader_wrapper_impl_t *guththila_impl = NULL;
+ guththila_allocator_t *allocator = NULL;
+ guththila_environment_t *guththila_env = NULL;
+ guththila_xml_pull_parser_t *guththila = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ guththila_impl = AXIS2_MALLOC((*env)->allocator,
+ sizeof(guththila_xml_reader_wrapper_impl_t));
+
+ if(!guththila_impl)
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+
+ allocator = guththila_allocator_init(NULL);
+ guththila_env = guththila_environment_create(allocator,NULL, NULL);
+
+ guththila_impl->reader =
+ guththila_reader_create_for_file(guththila_env, filename);
+
+ if(!(guththila_impl->reader))
+ {
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+ guththila = guththila_xml_pull_parser_create(guththila_env,
+ guththila_impl->reader);
+ if(!guththila)
+ {
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error,AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+
+ guththila_impl->guththila_parser = guththila;
+ guththila_impl->guththila_env = guththila_env;
+ guththila_impl->parser.ops = NULL;
+ guththila_impl->parser.ops = (axis2_xml_reader_ops_t*)AXIS2_MALLOC(
+ (*env)->allocator,
+ sizeof(axis2_xml_reader_ops_t));
+ if(!(guththila_impl->parser.ops))
+ { guththila_xml_pull_parser_free( guththila_env, guththila);
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error,AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+
+ guththila_xml_reader_wrapper_init_map(guththila_impl);
+
+
+/************** operations *****/
+ guththila_impl->parser.ops->next = guththila_xml_reader_wrapper_next;
+
+ guththila_impl->parser.ops->free = guththila_xml_reader_wrapper_free;
+
+ guththila_impl->parser.ops->get_attribute_count =
+ guththila_xml_reader_wrapper_get_attribute_count;
+ guththila_impl->parser.ops->get_attribute_name_by_number =
+ guththila_xml_reader_wrapper_get_attribute_name_by_number;
+ guththila_impl->parser.ops->get_attribute_value_by_number =
+ guththila_xml_reader_wrapper_get_attribute_value_by_number;
+ guththila_impl->parser.ops->get_attribute_prefix_by_number =
+ guththila_xml_reader_wrapper_get_attribute_prefix_by_number;
+ guththila_impl->parser.ops->get_attribute_namespace_by_number =
+ guththila_xml_reader_wrapper_get_attribute_namespace_by_number;
+
+ guththila_impl->parser.ops->get_value = guththila_xml_reader_wrapper_get_value;
+ guththila_impl->parser.ops->get_name = guththila_xml_reader_wrapper_get_name;
+ guththila_impl->parser.ops->get_prefix = guththila_xml_reader_wrapper_get_prefix;
+
+ guththila_impl->parser.ops->get_namespace_count =
+ guththila_xml_reader_wrapper_get_namespace_count;
+ guththila_impl->parser.ops->get_namespace_uri_by_number =
+ guththila_xml_reader_wrapper_get_namespace_uri_by_number;
+ guththila_impl->parser.ops->get_namespace_prefix_by_number =
+ guththila_xml_reader_wrapper_get_namespace_prefix_by_number;
+
+ guththila_impl->parser.ops->get_dtd=
+ guththila_xml_reader_wrapper_get_dtd;
+
+ guththila_impl->parser.ops->xml_free = guththila_xml_reader_wrapper_xml_free;
+
+ return &(guththila_impl->parser);
+}
+
+/****** pull parser for memory create function ***************************/
+
+
+AXIS2_DECLARE(axis2_xml_reader_t *)
+axis2_xml_reader_create_for_memory(axis2_env_t **env,
+ int (*read_input_callback)(char *buffer,int size),
+ const char *encoding)
+{
+ guththila_xml_reader_wrapper_impl_t *guththila_impl = NULL;
+ guththila_allocator_t *allocator = NULL;
+ guththila_environment_t *guththila_env = NULL;
+ guththila_xml_pull_parser_t *guththila = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ guththila_impl = AXIS2_MALLOC((*env)->allocator,
+ sizeof(guththila_xml_reader_wrapper_impl_t));
+
+ if(!guththila_impl)
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+
+ allocator = guththila_allocator_init(NULL);
+ guththila_env = guththila_environment_create(allocator,NULL, NULL);
+
+ /*-------difference of two create function is here--------*/
+ guththila_impl->reader =
+ guththila_reader_create_for_memory(guththila_env,read_input_callback);
+
+ if(!(guththila_impl->reader))
+ {
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+ guththila = guththila_xml_pull_parser_create(guththila_env,
+ guththila_impl->reader);
+ if(!guththila)
+ {
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error,AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+
+ guththila_impl->guththila_parser = guththila;
+ guththila_impl->guththila_env = guththila_env;
+ guththila_impl->parser.ops = NULL;
+ guththila_impl->parser.ops = (axis2_xml_reader_ops_t*)AXIS2_MALLOC(
+ (*env)->allocator,
+ sizeof(axis2_xml_reader_ops_t));
+ if(!(guththila_impl->parser.ops))
+ { guththila_xml_pull_parser_free( guththila_env, guththila);
+ AXIS2_FREE((*env)->allocator,guththila_impl);
+ AXIS2_ERROR_SET((*env)->error,AXIS2_ERROR_NO_MEMORY, NULL);
+ }
+
+
+ guththila_xml_reader_wrapper_init_map(guththila_impl);
+
+
+/************** operations *****/
+ guththila_impl->parser.ops->next = guththila_xml_reader_wrapper_next;
+
+ guththila_impl->parser.ops->free = guththila_xml_reader_wrapper_free;
+
+ guththila_impl->parser.ops->get_attribute_count =
+ guththila_xml_reader_wrapper_get_attribute_count;
+ guththila_impl->parser.ops->get_attribute_name_by_number =
+ guththila_xml_reader_wrapper_get_attribute_name_by_number;
+ guththila_impl->parser.ops->get_attribute_value_by_number =
+ guththila_xml_reader_wrapper_get_attribute_value_by_number;
+ guththila_impl->parser.ops->get_attribute_prefix_by_number =
+ guththila_xml_reader_wrapper_get_attribute_prefix_by_number;
+ guththila_impl->parser.ops->get_attribute_namespace_by_number =
+ guththila_xml_reader_wrapper_get_attribute_namespace_by_number;
+
+ guththila_impl->parser.ops->get_value = guththila_xml_reader_wrapper_get_value;
+ guththila_impl->parser.ops->get_name = guththila_xml_reader_wrapper_get_name;
+ guththila_impl->parser.ops->get_prefix = guththila_xml_reader_wrapper_get_prefix;
+
+ guththila_impl->parser.ops->get_namespace_count =
+ guththila_xml_reader_wrapper_get_namespace_count;
+ guththila_impl->parser.ops->get_namespace_uri_by_number =
+ guththila_xml_reader_wrapper_get_namespace_uri_by_number;
+ guththila_impl->parser.ops->get_namespace_prefix_by_number =
+ guththila_xml_reader_wrapper_get_namespace_prefix_by_number;
+ guththila_impl->parser.ops->get_dtd=
+ guththila_xml_reader_wrapper_get_dtd;
+
+ guththila_impl->parser.ops->xml_free = guththila_xml_reader_wrapper_xml_free;
+ return &(guththila_impl->parser);
+}
+
+
+
+
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_next(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ int i =-1;
+ AXIS2_FUNC_PARAM_CHECK(parser,env, -1);
+ i = guththila_xml_pull_parser_next(AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+ return i == -1 ? -1 : AXIS2_INTF_TO_IMPL(parser)->event_map[i];
+
+}
+
+
+axis2_status_t AXIS2_CALL
+guththila_xml_reader_wrapper_free(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ guththila_xml_reader_wrapper_impl_t *parser_impl = NULL;
+ AXIS2_FUNC_PARAM_CHECK(parser,env,AXIS2_FAILURE);
+ parser_impl = AXIS2_INTF_TO_IMPL(parser);
+ if(parser_impl->reader)
+ guththila_reader_free(parser_impl->guththila_env,
+ parser_impl->reader);
+
+ if(parser_impl->guththila_parser)
+ guththila_xml_pull_parser_free(
+ parser_impl->guththila_env,
+ parser_impl->guththila_parser);
+
+ guththila_environment_free(parser_impl->guththila_env);
+
+ if(parser->ops)
+ AXIS2_FREE((*env)->allocator, parser->ops);
+ AXIS2_FREE((*env)->allocator, parser_impl);
+ return AXIS2_SUCCESS;
+}
+
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_count(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser, env, AXIS2_FAILURE);
+ return guththila_xml_pull_parser_get_attribute_count(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_name_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_attribute_name_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_prefix_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_attribute_prefix_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_value_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_attribute_value_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_attribute_namespace_by_number(
+ axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_attribute_namespace_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_value(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_value(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+
+
+}
+
+int AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_count(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, AXIS2_FAILURE);
+ return guththila_xml_pull_parser_get_namespace_count(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_uri_by_number(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_namespace_uri_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_namespace_prefix_by_number(
+ axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ int i)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_namespace_prefix_by_number(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser, i);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_prefix(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_prefix(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_name(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser,env, NULL);
+ return guththila_xml_pull_parser_get_name(
+ AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+ AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+
+
+}
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_pi_target(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ /* guththila_does not support pi's yet*/
+ return NULL;
+ }
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_pi_data(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+ {
+ /* guththila_dose not support yet */
+ return NULL;
+ }
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_reader_wrapper_get_dtd(axis2_xml_reader_t *parser,
+ axis2_env_t **env)
+{
+ printf("not implemented in guththila");
+ return NULL;
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_reader_wrapper_xml_free(axis2_xml_reader_t *parser,
+ axis2_env_t **env,
+ void *data)
+{
+ AXIS2_FUNC_PARAM_CHECK(parser, env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, data, AXIS2_FAILURE);
+ GUTHTHILA_FREE(AXIS2_INTF_TO_IMPL(parser)->guththila_env->allocator,
+ data);
+ return AXIS2_SUCCESS;
+}