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/16 06:13:29 UTC

svn commit: r344891 - in /webservices/axis2/trunk/c/modules/xml/parser/guththila/src: axis2_guththila_wrapper.c guththila_xml_writer_wrapper.c

Author: samisa
Date: Tue Nov 15 21:13:20 2005
New Revision: 344891

URL: http://svn.apache.org/viewcvs?rev=344891&view=rev
Log:
wrappers for guththila parser xml writer and reader 

Added:
    webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c
    webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_writer_wrapper.c

Added: webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c?rev=344891&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c (added)
+++ webservices/axis2/trunk/c/modules/xml/parser/guththila/src/axis2_guththila_wrapper.c Tue Nov 15 21:13:20 2005
@@ -0,0 +1,408 @@
+/*
+ *   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_pull_parser.h>
+#include <axis2_env.h>
+#include <axis2.h>
+#include <guththila_xml_pull_parser.h>
+
+/**************** function prototypes ******************************************/
+
+
+
+int AXIS2_CALL 
+axis2_guththila_wrapper_next(axis2_pull_parser_t *parser,
+                             axis2_env_t **env);
+
+        
+axis2_status_t AXIS2_CALL 
+axis2_guththila_wrapper_free(axis2_pull_parser_t *parser,
+                             axis2_env_t **env);
+           
+        
+int AXIS2_CALL 
+axis2_guththila_wrapper_get_attribute_count(axis2_pull_parser_t *parser,
+                                            axis2_env_t **env);
+        
+axis2_char_t* AXIS2_CALL 
+axis2_guththila_wrapper_get_attribute_name_by_number(axis2_pull_parser_t *parser,
+                                                     axis2_env_t **env,
+                                                     int i);
+        
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_attribute_prefix_by_number(axis2_pull_parser_t *parser,
+                                                       axis2_env_t **env,
+                                                       int i);
+                                                     
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_attribute_value_by_number(
+                                                axis2_pull_parser_t *parser,
+                                                axis2_env_t **env,
+                                                int i);
+        
+        
+axis2_char_t* AXIS2_CALL 
+axis2_guththila_wrapper_get_attribute_namespace_by_number(
+                                                 axis2_pull_parser_t *parser,
+                                                 axis2_env_t **env,
+                                                 int i);
+
+                                
+axis2_char_t* AXIS2_CALL 
+axis2_guththila_wrapper_get_value(axis2_pull_parser_t *parser,
+                                  axis2_env_t **env);
+                                                      
+int AXIS2_CALL 
+axis2_guththila_wrapper_get_namespace_count(axis2_pull_parser_t *parser,
+                                            axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_namespace_uri_by_number(axis2_pull_parser_t *parser,
+                                                    axis2_env_t **env,
+                                                    int i);
+                                               
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_namespace_prefix_by_number(
+                                                axis2_pull_parser_t *parser,
+                                                axis2_env_t **env,
+                                                int i); 
+                                                
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_prefix(axis2_pull_parser_t *parser,
+                                   axis2_env_t **env);   
+        
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_name(axis2_pull_parser_t *parser,
+                                 axis2_env_t **env); 
+
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_pi_target(axis2_pull_parser_t *parser,
+                                      axis2_env_t **env);
+
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_pi_data(axis2_pull_parser_t *parser,
+                                     axis2_env_t **env);
+
+
+
+/*********** axis2_guththila_wrapper_impl_t wrapper struct   *******************/
+
+typedef struct axis2_guththila_wrapper_impl
+{
+    axis2_pull_parser_t parser;    
+    guththila_xml_pull_parser_t *guththila_parser;
+    guththila_environment_t *guththila_env;
+    int event_map[10];
+    
+}axis2_guththila_wrapper_impl_t;
+
+/********************************* Macro ***************************************/
+
+#define AXIS2_INTF_TO_IMPL(p) ((axis2_guththila_wrapper_impl_t*)p)
+
+#define AXIS2_IMPL_TO_INTF(p) &(p->parser)
+
+/**********End macros  --  event_map initializing function *********************/
+
+static axis2_status_t axis2_guththila_wrapper_init_map(
+                            axis2_guththila_wrapper_impl_t *parser)
+{
+    if(parser)
+    {
+        parser->event_map[GUTHTHILA_START_DOCUMENT] = AXIS2_PULL_PARSER_START_DOCUMENT;
+        parser->event_map[GUTHTHILA_START_ELEMENT]  = AXIS2_PULL_PARSER_START_ELEMENT;
+        parser->event_map[GUTHTHILA_END_ELEMENT]    = AXIS2_PULL_PARSER_END_ELEMENT;
+        parser->event_map[GUTHTHILA_SPACE]          = AXIS2_PULL_PARSER_SPACE;
+        parser->event_map[GUTHTHILA_EMPTY_ELEMENT]  = AXIS2_PULL_PARSER_EMPTY_ELEMENT;
+        parser->event_map[GUTHTHILA_CHARACTER]      = AXIS2_PULL_PARSER_CHARACTER;
+        parser->event_map[GUTHTHILA_ENTITY_REFERANCE] = AXIS2_PULL_PARSER_ENTITY_REFERANCE;
+        parser->event_map[GUTHTHILA_COMMENT]          = AXIS2_PULL_PARSER_COMMENT;
+        return AXIS2_SUCCESS;
+    }
+    return AXIS2_FAILURE;
+}
+
+/********************************************************************************/
+
+AXIS2_DECLARE(axis2_pull_parser_t *)
+axis2_pull_parser_create(axis2_env_t **env,void* stream)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    axis2_guththila_wrapper_impl_t *guththila_impl = 
+        AXIS2_MALLOC((*env)->allocator, sizeof(axis2_guththila_wrapper_impl_t));
+    
+    if(!guththila_impl)
+          AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    
+    guththila_allocator_t *allocator  = guththila_allocator_init(NULL);
+    guththila_environment_t *guththila_env = guththila_environment_create(
+                                              allocator,NULL, NULL, NULL, NULL);
+    
+    guththila_reader_t *reader = guththila_reader_create(guththila_env,stream);
+    
+    if(!reader)
+    {
+        AXIS2_FREE((*env)->allocator,guththila_impl);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }    
+    
+    guththila_xml_pull_parser_t *guththila = guththila_xml_pull_parser_create(
+                                                guththila_env,reader);
+    if(!guththila)
+    {
+        AXIS2_FREE((*env)->allocator,guththila_impl);
+        AXIS2_FREE((*env)->allocator,reader);
+        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_pull_parser_ops_t*)AXIS2_MALLOC(
+                                      (*env)->allocator,
+                                       sizeof(axis2_pull_parser_ops_t));
+    if(!(guththila_impl->parser.ops))
+    {   guththila_xml_pull_parser_free( guththila_env, guththila);
+        AXIS2_FREE((*env)->allocator,guththila_impl);
+        AXIS2_FREE((*env)->allocator,reader);
+        AXIS2_ERROR_SET((*env)->error,AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    
+    axis2_guththila_wrapper_init_map(guththila_impl);
+    
+    
+/************** operations *****/    
+    guththila_impl->parser.ops->next = axis2_guththila_wrapper_next;
+    
+    guththila_impl->parser.ops->free = axis2_guththila_wrapper_free;
+    
+    guththila_impl->parser.ops->get_attribute_count =
+        axis2_guththila_wrapper_get_attribute_count;
+    guththila_impl->parser.ops->get_attribute_name_by_number =
+        axis2_guththila_wrapper_get_attribute_name_by_number;
+    guththila_impl->parser.ops->get_attribute_value_by_number =
+        axis2_guththila_wrapper_get_attribute_value_by_number;
+    guththila_impl->parser.ops->get_attribute_prefix_by_number =
+        axis2_guththila_wrapper_get_attribute_prefix_by_number;
+    guththila_impl->parser.ops->get_attribute_namespace_by_number =
+        axis2_guththila_wrapper_get_attribute_namespace_by_number;
+    
+    guththila_impl->parser.ops->get_value = axis2_guththila_wrapper_get_value;
+    guththila_impl->parser.ops->get_name  = axis2_guththila_wrapper_get_name;
+    guththila_impl->parser.ops->get_prefix = axis2_guththila_wrapper_get_prefix;
+    
+    guththila_impl->parser.ops->get_namespace_count =
+        axis2_guththila_wrapper_get_namespace_count;
+    guththila_impl->parser.ops->get_namespace_uri_by_number =
+        axis2_guththila_wrapper_get_namespace_uri_by_number;
+    guththila_impl->parser.ops->get_namespace_prefix_by_number =
+        axis2_guththila_wrapper_get_namespace_prefix_by_number;
+
+    return &(guththila_impl->parser);
+}
+
+
+int AXIS2_CALL 
+axis2_guththila_wrapper_next(axis2_pull_parser_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 
+axis2_guththila_wrapper_free(axis2_pull_parser_t *parser,
+                             axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(parser,env,AXIS2_FAILURE);
+    if(AXIS2_INTF_TO_IMPL(parser)->guththila_parser)
+        guththila_xml_pull_parser_free(
+                    AXIS2_INTF_TO_IMPL(parser)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(parser)->guththila_parser);
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(parser)->guththila_env);
+    
+    if(parser->ops)
+        AXIS2_FREE((*env)->allocator, parser->ops);
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(parser));
+    return AXIS2_SUCCESS;   
+}
+           
+        
+int AXIS2_CALL 
+axis2_guththila_wrapper_get_attribute_count(axis2_pull_parser_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 
+axis2_guththila_wrapper_get_attribute_name_by_number(axis2_pull_parser_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
+axis2_guththila_wrapper_get_attribute_prefix_by_number(axis2_pull_parser_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
+axis2_guththila_wrapper_get_attribute_value_by_number(axis2_pull_parser_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 
+axis2_guththila_wrapper_get_attribute_namespace_by_number(
+                                                 axis2_pull_parser_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 
+axis2_guththila_wrapper_get_value(axis2_pull_parser_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 
+axis2_guththila_wrapper_get_namespace_count(axis2_pull_parser_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
+axis2_guththila_wrapper_get_namespace_uri_by_number(axis2_pull_parser_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
+axis2_guththila_wrapper_get_namespace_prefix_by_number(
+                                                axis2_pull_parser_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
+axis2_guththila_wrapper_get_prefix(axis2_pull_parser_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
+axis2_guththila_wrapper_get_name(axis2_pull_parser_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
+axis2_guththila_wrapper_get_pi_target(axis2_pull_parser_t *parser,
+                                      axis2_env_t **env)
+{   
+    /* guththila_does not support pi's yet*/
+    return NULL;   
+ }
+
+axis2_char_t* AXIS2_CALL
+axis2_guththila_wrapper_get_pi_data(axis2_pull_parser_t *parser,
+                                     axis2_env_t **env)
+ {
+    /* guththila_dose not support yet */
+    return NULL;
+ }

Added: webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_writer_wrapper.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_writer_wrapper.c?rev=344891&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_writer_wrapper.c (added)
+++ webservices/axis2/trunk/c/modules/xml/parser/guththila/src/guththila_xml_writer_wrapper.c Tue Nov 15 21:13:20 2005
@@ -0,0 +1,763 @@
+/*
+ *   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 <guththila_xml_stream_writer.h>
+#include <axis2.h>
+#include <axis2_env.h>
+#include <axis2_xml_writer.h>
+/*********************** function prototypes ***********************************/
+axis2_status_t AXIS2_CALL 
+guththila_xml_writer_wrapper_free(axis2_xml_writer_t *writer,
+                                  axis2_env_t **env);
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element(
+                                    axis2_xml_writer_t *writer,
+                                    axis2_env_t **env,
+                                    axis2_char_t *localname);
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_end_start_element(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env);
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element_with_namespace(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri);
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element_with_namespace_prefix(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri,
+                                        axis2_char_t *prefix);       
+                                    
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname);
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element_with_namespace(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element_with_namespace_prefix(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri,
+                                        axis2_char_t *prefix);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_end_element(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_end_document(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute(axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *localname,
+                                           axis2_char_t *value);
+                                               
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute_with_namespace(
+                                          axis2_xml_writer_t *writer,
+                                          axis2_env_t **env,
+                                          axis2_char_t *localname,
+                                          axis2_char_t *value,
+                                          axis2_char_t *namespace_uri);
+                                          
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute_with_namespace_prefix(
+                                          axis2_xml_writer_t *writer,
+                                          axis2_env_t **env,
+                                          axis2_char_t *localname,
+                                          axis2_char_t *value,
+                                          axis2_char_t *namespace_uri,
+                                          axis2_char_t *prefix);
+                                          
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_namespace(axis2_xml_writer_t *writer,
+                                             axis2_env_t **env,
+                                             axis2_char_t *prefix,
+                                             axis2_char_t *namespace_uri);   
+
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_default_namespace
+                                            (axis2_xml_writer_t *writer,
+                                             axis2_env_t **env,
+                                             axis2_char_t *namespace_uri);  
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_comment(axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *value);
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_processing_instruction(
+                                           axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *target);
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_processing_instruction_data(
+                                           axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *target,
+                                           axis2_char_t *data);
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_cdata(axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *data);
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_dtd(axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *dtd); 
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_entity_ref(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *name); 
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env);  
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document_with_version(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *version);   
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document_with_version_encoding(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *encoding,
+                                         axis2_char_t *version);
+                                         
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_characters(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *text);   
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_writer_wrapper_get_prefix(  axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *uri);
+
+axis2_status_t AXIS2_CALL 
+guththila_xml_writer_wrapper_set_prefix(  axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *prefix,
+                                         axis2_char_t *uri);
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_set_default_prefix(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *uri);                                                 
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_encoded(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *text,
+                                         int in_attr);
+
+
+
+/**************************** end function pointers ****************************/
+
+typedef struct guththila_xml_writer_wrapper_impl
+{
+    axis2_xml_writer_t writer;
+    guththila_xml_stream_writer_t *guththila_writer;
+    guththila_environment_t *guththila_env;
+}guththila_xml_writer_wrapper_impl_t;
+
+
+/***************************** Macros ******************************************/
+
+#define AXIS2_INTF_TO_IMPL(p) ((guththila_xml_writer_wrapper_impl_t*)p)
+
+/****************************** End macro **************************************/
+
+AXIS2_DECLARE(axis2_xml_writer_t *)
+axis2_xml_writer_create(axis2_env_t **env,
+                        void *stream,
+                        axis2_char_t *encoding, int is_prefix_default)
+{
+    guththila_xml_writer_wrapper_impl_t *writer_impl;
+    guththila_allocator_t *allocator;
+  
+    
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    writer_impl = (guththila_xml_writer_wrapper_impl_t *)AXIS2_MALLOC((*env)->allocator,
+                   sizeof(guththila_xml_writer_wrapper_impl_t));
+    if(!writer_impl)
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    
+    
+    allocator = guththila_allocator_init(NULL);
+    writer_impl->guththila_env = guththila_environment_create(allocator, NULL,  NULL, NULL, NULL);
+    writer_impl->guththila_writer = guththila_create_xml_stream_writer(
+                                                    writer_impl->guththila_env,
+                                                    stream, encoding , 
+                                                    is_prefix_default);
+                
+    if(!(writer_impl->guththila_writer))
+    {
+        AXIS2_FREE((*env)->allocator,writer_impl);
+        AXIS2_FREE((*env)->allocator,allocator);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    writer_impl->writer.ops = NULL;
+    writer_impl->writer.ops = (axis2_xml_writer_ops_t*)AXIS2_MALLOC((*env)->allocator,
+                                    sizeof(axis2_xml_writer_ops_t));
+    if(!(writer_impl->writer.ops))
+    {
+        AXIS2_FREE((*env)->allocator,writer_impl);
+        AXIS2_FREE((*env)->allocator,allocator);
+        
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    /* operations */
+    writer_impl->writer.ops->free = guththila_xml_writer_wrapper_free;
+    writer_impl->writer.ops->write_start_element = guththila_xml_writer_wrapper_write_start_element;
+    writer_impl->writer.ops->write_start_element_with_namespace =
+            guththila_xml_writer_wrapper_write_start_element_with_namespace;
+    writer_impl->writer.ops->write_start_element_with_namespace_prefix = 
+            guththila_xml_writer_wrapper_write_start_element_with_namespace_prefix;
+    
+    writer_impl->writer.ops->write_empty_element = guththila_xml_writer_wrapper_write_empty_element;
+    writer_impl->writer.ops->write_empty_element_with_namespace  =
+            guththila_xml_writer_wrapper_write_empty_element_with_namespace;
+    writer_impl->writer.ops->write_empty_element_with_namespace_prefix =
+            guththila_xml_writer_wrapper_write_empty_element_with_namespace_prefix;
+    
+    writer_impl->writer.ops->write_end_element = 
+            guththila_xml_writer_wrapper_write_end_element;
+    writer_impl->writer.ops->write_end_document = 
+            guththila_xml_writer_wrapper_write_end_document;
+    
+    writer_impl->writer.ops->write_attribute = 
+            guththila_xml_writer_wrapper_write_attribute;
+    writer_impl->writer.ops->write_attribute_with_namespace =
+            guththila_xml_writer_wrapper_write_attribute_with_namespace;
+    writer_impl->writer.ops->write_attribute_with_namespace_prefix =
+            guththila_xml_writer_wrapper_write_attribute_with_namespace_prefix;
+    writer_impl->writer.ops->write_namespace = 
+            guththila_xml_writer_wrapper_write_namespace;
+    writer_impl->writer.ops->write_default_namespace =
+            guththila_xml_writer_wrapper_write_default_namespace;
+    writer_impl->writer.ops->write_comment = 
+            guththila_xml_writer_wrapper_write_comment;
+    writer_impl->writer.ops->write_processing_instruction = 
+            guththila_xml_writer_wrapper_write_processing_instruction;
+    writer_impl->writer.ops->write_processing_instruction_data = 
+            guththila_xml_writer_wrapper_write_processing_instruction_data;
+    writer_impl->writer.ops->write_cdata = 
+            guththila_xml_writer_wrapper_write_cdata;
+    writer_impl->writer.ops->write_dtd = 
+            guththila_xml_writer_wrapper_write_dtd;
+    writer_impl->writer.ops->write_entity_ref = 
+            guththila_xml_writer_wrapper_write_entity_ref;
+    writer_impl->writer.ops->write_start_document = 
+            guththila_xml_writer_wrapper_write_start_document;
+    writer_impl->writer.ops->write_start_document_with_version = 
+            guththila_xml_writer_wrapper_write_start_document_with_version;
+    writer_impl->writer.ops->write_start_document_with_version_encoding = 
+            guththila_xml_writer_wrapper_write_start_document_with_version_encoding;
+    writer_impl->writer.ops->write_characters = 
+            guththila_xml_writer_wrapper_write_characters;
+    writer_impl->writer.ops->get_prefix =
+            guththila_xml_writer_wrapper_get_prefix;
+    writer_impl->writer.ops->set_prefix = guththila_xml_writer_wrapper_set_prefix;
+    writer_impl->writer.ops->set_default_prefix = 
+            guththila_xml_writer_wrapper_set_default_prefix;
+    writer_impl->writer.ops->write_encoded = 
+            guththila_xml_writer_wrapper_write_encoded;    
+    
+    
+    
+    
+    
+    return &(writer_impl->writer);
+}
+
+axis2_status_t AXIS2_CALL 
+guththila_xml_writer_wrapper_free(axis2_xml_writer_t *writer,
+                                  axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    if(AXIS2_INTF_TO_IMPL(writer)->guththila_writer)
+    {     /* should be implemented */}
+    if(AXIS2_INTF_TO_IMPL(writer)->guththila_env)
+    {    /* should be implemented */ }
+    if(writer->ops)
+        AXIS2_FREE((*env)->allocator, writer->ops);
+    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(writer));
+    return AXIS2_SUCCESS;
+}
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element(
+                                    axis2_xml_writer_t *writer,
+                                    axis2_env_t **env,
+                                    axis2_char_t *localname)
+{
+    int status = AXIS2_SUCCESS;
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    status = guththila_xml_stream_writer_write_start_element(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname);
+    return status;
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_end_start_element(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_end_start_element(    
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer);
+}
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element_with_namespace(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error,namespace_uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_start_element_with_namespace(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname,
+                    namespace_uri);
+}
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_element_with_namespace_prefix(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri,
+                                        axis2_char_t *prefix)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname,  AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, prefix, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_start_element_with_namespace_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, namespace_uri, prefix);
+    
+}
+                                    
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_empty_element(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer, localname);
+    
+    
+}
+        
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element_with_namespace(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_empty_element_with_namespace(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, namespace_uri);
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_empty_element_with_namespace_prefix(
+                                        axis2_xml_writer_t *writer,
+                                        axis2_env_t **env,
+                                        axis2_char_t *localname,
+                                        axis2_char_t *namespace_uri,
+                                        axis2_char_t *prefix)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, prefix, AXIS2_FAILURE);
+    
+    return guththila_xml_stream_writer_write_empty_element_with_namespace_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, namespace_uri, prefix);
+    
+    
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_end_element(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_end_element(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer);
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_end_document(axis2_xml_writer_t *writer,
+                                               axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_end_document(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer);
+    
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute(axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *localname,
+                                           axis2_char_t *value)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, value, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_attribute(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, value);
+                        
+    
+    
+}
+                                               
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute_with_namespace(
+                                          axis2_xml_writer_t *writer,
+                                          axis2_env_t **env,
+                                          axis2_char_t *localname,
+                                          axis2_char_t *value,
+                                          axis2_char_t *namespace_uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname,  AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, value, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    
+    return guththila_xml_stream_writer_write_attribute_with_namespace(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, value, namespace_uri);
+}
+                                          
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_attribute_with_namespace_prefix(
+                                          axis2_xml_writer_t *writer,
+                                          axis2_env_t **env,
+                                          axis2_char_t *localname,
+                                          axis2_char_t *value,
+                                          axis2_char_t *namespace_uri,
+                                          axis2_char_t *prefix)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, localname, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, value, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, prefix , AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_attribute_with_namespace_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    localname, value, namespace_uri, prefix);
+    
+    
+    
+}
+                                          
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_namespace(axis2_xml_writer_t *writer,
+                                             axis2_env_t **env,
+                                             axis2_char_t *prefix,
+                                             axis2_char_t *namespace_uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, prefix , AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_namespace(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    prefix, namespace_uri);
+
+}
+
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_default_namespace
+                                            (axis2_xml_writer_t *writer,
+                                             axis2_env_t **env,
+                                             axis2_char_t *namespace_uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, namespace_uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_default_namespace(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    namespace_uri);
+    
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_comment(axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *value)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, value, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_comment(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    value);
+    
+}
+
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_processing_instruction(
+                                           axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *target)
+{   
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, target, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_processing_instruction(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    target);
+    
+    
+}    
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_processing_instruction_data(
+                                           axis2_xml_writer_t *writer,
+                                           axis2_env_t **env,
+                                           axis2_char_t *target,
+                                           axis2_char_t *data)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, target, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, data, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_processing_instruction_data(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    target, data);
+    
+}
+                                           
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_cdata(axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *data)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, data, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_cdata(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    data);
+                        
+}    
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_dtd(axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *dtd)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, dtd, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_dtd(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    dtd);
+}
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_entity_ref(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *name)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, name, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_entity_ref(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    name);
+    
+}    
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env)
+{
+     AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+     return guththila_xml_stream_writer_write_start_document(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer);
+}    
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document_with_version(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *version)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, version, AXIS2_FAILURE); 
+    return guththila_xml_stream_writer_write_start_document_with_version(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    version);
+}    
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_start_document_with_version_encoding(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *encoding,
+                                         axis2_char_t *version)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, encoding, AXIS2_FAILURE); 
+    AXIS2_PARAM_CHECK((*env)->error, version, AXIS2_FAILURE); 
+    
+    return guththila_xml_stream_writer_write_start_document_with_version_encoding(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    encoding, version);
+}
+
+                                         
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_characters(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *text)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, text, AXIS2_FAILURE); 
+    return guththila_xml_stream_writer_write_characters(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer,
+                    text);
+}    
+
+axis2_char_t* AXIS2_CALL
+guththila_xml_writer_wrapper_get_prefix(  axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_get_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer, uri);
+                    
+    
+    
+}
+
+axis2_status_t AXIS2_CALL 
+guththila_xml_writer_wrapper_set_prefix( axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *prefix,
+                                         axis2_char_t *uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, prefix, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_set_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer, prefix, uri);
+    
+}
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_set_default_prefix(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *uri)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, uri, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_set_default_prefix(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer, uri);
+}    
+
+axis2_status_t AXIS2_CALL
+guththila_xml_writer_wrapper_write_encoded(
+                                         axis2_xml_writer_t *writer,
+                                         axis2_env_t **env,
+                                         axis2_char_t *text,
+                                         int in_attr)
+{
+    AXIS2_FUNC_PARAM_CHECK(writer, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, text, AXIS2_FAILURE);
+    return guththila_xml_stream_writer_write_encoded(
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_env,
+                    AXIS2_INTF_TO_IMPL(writer)->guththila_writer, text, in_attr);
+}