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 mi...@apache.org on 2007/06/25 15:08:30 UTC

svn commit: r550488 [3/3] - in /webservices/axis2/trunk/c/guththila: include/ src/

Modified: webservices/axis2/trunk/c/guththila/src/guththila_xml_writer.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/guththila/src/guththila_xml_writer.c?view=diff&rev=550488&r1=550487&r2=550488
==============================================================================
--- webservices/axis2/trunk/c/guththila/src/guththila_xml_writer.c (original)
+++ webservices/axis2/trunk/c/guththila/src/guththila_xml_writer.c Mon Jun 25 06:08:28 2007
@@ -24,50 +24,50 @@
 
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 #ifndef GUTHTHILA_WRITER_ELEM_FREE
-#define GUTHTHILA_WRITER_ELEM_FREE(wr, elem)		\
-	if ((elem)->prefix) free((elem)->prefix);	\
-	if ((elem)->name) free((elem)->name);		\
-	free(elem);
+#define GUTHTHILA_WRITER_ELEM_FREE(wr, elem, _env)		\
+	if ((elem)->prefix) AXIS2_FREE(env->allocator, (elem)->prefix);	\
+	if ((elem)->name) AXIS2_FREE(env->allocator, (elem)->name);		\
+	AXIS2_FREE(env->allocator, elem);
 #endif
 #else
 #ifndef GUTHTHILA_WRITER_ELEM_FREE
-#define GUTHTHILA_WRITER_ELEM_FREE(wr, elem)		\
-	if ((elem)->prefix) guththila_tok_list_release_token(&wr->tok_list, (elem)->prefix);	\
-	if ((elem)->name) guththila_tok_list_release_token(&wr->tok_list, (elem)->name);		\
-	free(elem);
+#define GUTHTHILA_WRITER_ELEM_FREE(wr, elem, _env)		\
+	if ((elem)->prefix) guththila_tok_list_release_token(&wr->tok_list, (elem)->prefix, _env);	\
+	if ((elem)->name) guththila_tok_list_release_token(&wr->tok_list, (elem)->name, _env);		\
+	AXIS2_FREE(env->allocator, elem);
 #endif
 #endif
 
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 #ifndef GUTHTHILA_WRITER_CLEAR_NAMESP 
-#define GUTHTHILA_WRITER_CLEAR_NAMESP(wr, stack_namesp, _no, counter, _namesp, j)		\
+#define GUTHTHILA_WRITER_CLEAR_NAMESP(wr, stack_namesp, _no, counter, _namesp, j, _env)		\
 	for (counter = GUTHTHILA_STACK_TOP_INDEX(*stack_namesp); counter >= _no; counter--) {			\
-		_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_pop(stack_namesp);	\
+		_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_pop(stack_namesp, _env);	\
 		if (_namesp) {										\
 			for (j = 0; j < _namesp->no - 1; j++) {				\
-				if (_namesp->name[j]) free(_namesp->name[j]);					\
-				if (_namesp->uri[j]) free(_namesp->uri[j]);						\
+				if (_namesp->name[j]) AXIS2_FREE(env->allocator, _namesp->name[j]);					\
+				if (_namesp->uri[j]) AXIS2_FREE(env->allocator, _namesp->uri[j]);						\
 			}												\
-			free(_namesp->name);							\
-			free(_namesp->uri);								\
-			free(_namesp);									\
+			AXIS2_FREE(env->allocator, _namesp->name);							\
+			AXIS2_FREE(env->allocator, _namesp->uri);								\
+			AXIS2_FREE(env->allocator, _namesp);									\
 		}													\
 		_namesp = NULL;										\
 	}														
 #endif
 #else
 #ifndef GUTHTHILA_WRITER_CLEAR_NAMESP 
-#define GUTHTHILA_WRITER_CLEAR_NAMESP(wr, stack_namesp, _no, counter, _namesp, j)		\
+#define GUTHTHILA_WRITER_CLEAR_NAMESP(wr, stack_namesp, _no, counter, _namesp, j, _env)		\
 	for (counter = GUTHTHILA_STACK_TOP_INDEX(*stack_namesp); counter >= _no; counter--) {			\
-		_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_pop(stack_namesp);	\
+		_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_pop(stack_namesp, _env);	\
 		if (_namesp) {															\
 			for (j = 0; j < _namesp->no - 1; j++) {									\
-				guththila_tok_list_release_token(&wr->tok_list,_namesp->name[j]);				\
-				guththila_tok_list_release_token(&wr->tok_list,_namesp->uri[j]);					\
+				guththila_tok_list_release_token(&wr->tok_list,_namesp->name[j], _env);				\
+				guththila_tok_list_release_token(&wr->tok_list,_namesp->uri[j], _env);					\
 			}												\
-			free(_namesp->name);							\
-			free(_namesp->uri);								\
-			free(_namesp);									\
+			AXIS2_FREE(env->allocator, _namesp->name);							\
+			AXIS2_FREE(env->allocator, _namesp->uri);								\
+			AXIS2_FREE(env->allocator, _namesp);									\
 		}													\
 		_namesp = NULL;										\
 	}														
@@ -109,25 +109,25 @@
 #endif*/
 
 GUTHTHILA_EXPORT guththila_xml_writer_t * GUTHTHILA_CALL
-guththila_create_xml_stream_writer(char *file_name)
+guththila_create_xml_stream_writer(char *file_name, axutil_env_t *env)
 {
-	guththila_xml_writer_t *wr = malloc(sizeof(guththila_xml_writer_t));			
+	guththila_xml_writer_t *wr = AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_t));			
 	if (!wr) return NULL;
 
 	wr->out_stream = fopen(file_name, "w");
 	if (!wr->out_stream) {
-		free(wr);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}	
-	if (!guththila_stack_init(&wr->element)){
+	if (!guththila_stack_init(&wr->element, env)){
 		fclose(wr->out_stream);
-		free(wr);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
-	if (!guththila_stack_init(&wr->namesp)) {
-		guththila_stack_free_data(&wr->element);
+	if (!guththila_stack_init(&wr->namesp, env)) {
+		guththila_stack_un_init(&wr->element, env);
 		fclose(wr->out_stream);
-		free(wr);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
 	wr->type = GUTHTHILA_WRITER_FILE;
@@ -137,32 +137,32 @@
 }
 
 GUTHTHILA_EXPORT guththila_xml_writer_t *  GUTHTHILA_CALL
-guththila_create_xml_stream_writer_for_memory()
+guththila_create_xml_stream_writer_for_memory(axutil_env_t *env)
 {
-	guththila_xml_writer_t *wr = malloc(sizeof(guththila_xml_writer_t));			
+	guththila_xml_writer_t *wr = AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_t));			
 	if (!wr) return NULL;
 		
-	if (!guththila_buffer_init(&wr->buffer, GUTHTHILA_BUFFER_DEF_SIZE)) {
-		free(wr);
+	if (!guththila_buffer_init(&wr->buffer, GUTHTHILA_BUFFER_DEF_SIZE, env)) {
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
-	if (!guththila_stack_init(&wr->element)) {
-		guththila_buffer_un_init(&wr->buffer);
-		free(wr);
+	if (!guththila_stack_init(&wr->element, env)) {
+		guththila_buffer_un_init(&wr->buffer, env);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
-	if (!guththila_stack_init(&wr->namesp)) {
-		guththila_buffer_un_init(&wr->buffer);
-		guththila_stack_free_data(&wr->element);
-		free(wr);
+	if (!guththila_stack_init(&wr->namesp, env)) {
+		guththila_buffer_un_init(&wr->buffer, env);
+		guththila_stack_un_init(&wr->element, env);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
 #ifdef GUTHTHILA_XML_WRITER_TOKEN
-	if (!guththila_tok_list_init(&wr->tok_list)) {
-		guththila_buffer_un_init(&wr->buffer);
-		guththila_stack_free_data(&wr->element);
-		guththila_stack_free_data(&wr->namesp);
-		free(wr);
+	if (!guththila_tok_list_init(&wr->tok_list, env)) {
+		guththila_buffer_un_init(&wr->buffer, env);
+		guththila_stack_un_init(&wr->element, env);
+		guththila_stack_un_init(&wr->namesp, env);
+		AXIS2_FREE(env->allocator, wr);
 		return NULL;
 	}
 #endif		
@@ -173,21 +173,21 @@
 }
 
 GUTHTHILA_EXPORT void GUTHTHILA_CALL
-guththila_xml_writer_free (guththila_xml_writer_t *wr)
+guththila_xml_writer_free (guththila_xml_writer_t *wr, axutil_env_t *env)
 {
 	if (wr->type == GUTHTHILA_WRITER_MEMORY) {
-		guththila_buffer_un_init(&wr->buffer);
+		guththila_buffer_un_init(&wr->buffer, env);
 	} else if (wr->type == GUTHTHILA_WRITER_FILE){
 		fclose(wr->out_stream);
 	}	
 #ifdef GUTHTHILA_XML_WRITER_TOKEN
-	guththila_tok_list_free_data(&wr->tok_list);
+	guththila_tok_list_free_data(&wr->tok_list, env);
 #endif
-	guththila_stack_free_data(&wr->element);
-	guththila_stack_free_data(&wr->namesp);
+	guththila_stack_un_init(&wr->element, env);
+	guththila_stack_un_init(&wr->namesp, env);
 }
 
-int GUTHTHILA_CALL guththila_write(guththila_xml_writer_t *wr, char *buff, size_t buff_len)
+int GUTHTHILA_CALL guththila_write(guththila_xml_writer_t *wr, char *buff, size_t buff_len, axutil_env_t *env)
 {
 	size_t remain_len = 0;
 	size_t temp = 0;
@@ -208,17 +208,17 @@
 			}
 			if(wr->buffer.no_buffers -1 == wr->buffer.cur_buff){				
 				wr->buffer.no_buffers = wr->buffer.no_buffers * 2;
-				temp3 = (char **)malloc(sizeof(char *) * wr->buffer.no_buffers * 2);				
-				temp1 = (size_t *)malloc(sizeof(size_t) * wr->buffer.no_buffers);
-				temp2 = (size_t *)malloc(sizeof(size_t) * wr->buffer.no_buffers);
+				temp3 = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * wr->buffer.no_buffers);				
+				temp1 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
+				temp2 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
 				for (i = 0; i <= wr->buffer.cur_buff; i++) {
 					temp3[i] = wr->buffer.buff[i];
 					temp1[i] = wr->buffer.data_size[i];
 					temp2[i] = wr->buffer.buffs_size[i];
 				}
-				free(wr->buffer.data_size);
-				free(wr->buffer.buffs_size);
-				free(wr->buffer.buff);
+				AXIS2_FREE(env->allocator, wr->buffer.data_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buffs_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buff);
 				wr->buffer.buff = temp3;
 				wr->buffer.buffs_size = temp2;
 				wr->buffer.data_size = temp1;
@@ -228,7 +228,7 @@
 			while(temp < (buff_len - remain_len)){
 				temp = temp * 2;
 			}
-			wr->buffer.buff[wr->buffer.cur_buff] = (char *)malloc(sizeof(char)*temp);	
+			wr->buffer.buff[wr->buffer.cur_buff] = (char *)AXIS2_MALLOC(env->allocator, sizeof(char)*temp);	
 			wr->buffer.buffs_size[wr->buffer.cur_buff] = temp;
 			memcpy(wr->buffer.buff[wr->buffer.cur_buff], buff + remain_len, buff_len - remain_len);
 			wr->buffer.data_size[wr->buffer.cur_buff] = buff_len - remain_len;
@@ -243,10 +243,12 @@
 }
 
 
-int GUTHTHILA_CALL guththila_write_token(guththila_xml_writer_t *wr, guththila_token_t *tok)
+int GUTHTHILA_CALL guththila_write_token(guththila_xml_writer_t *wr, guththila_token_t *tok, axutil_env_t *env)
 {
-	size_t remain_len = 0;
+	size_t remain_len = 0, i = 0;
 	size_t temp = 0;
+	size_t *temp1 = NULL, *temp2 = NULL;
+	char **temp3 = NULL;
 	if (wr->type == GUTHTHILA_WRITER_MEMORY){
 		remain_len = wr->buffer.buffs_size[wr->buffer.cur_buff] - wr->buffer.data_size[wr->buffer.cur_buff];
 		if (tok->size < remain_len) {
@@ -260,18 +262,28 @@
 				wr->buffer.data_size[wr->buffer.cur_buff] += remain_len;
 			}
 			if(wr->buffer.no_buffers -1 == wr->buffer.cur_buff){
-				wr->buffer.buff = (char **)realloc(wr->buffer.buff, wr->buffer.no_buffers * 2);
 				wr->buffer.no_buffers = wr->buffer.no_buffers * 2;
-				wr->buffer.cur_buff++;
-				wr->buffer.data_size = (size_t *)realloc(wr->buffer.data_size, wr->buffer.no_buffers);
-				wr->buffer.buffs_size = (size_t *)realloc(wr->buffer.buffs_size, wr->buffer.no_buffers);			
+				temp3 = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * wr->buffer.no_buffers);				
+				temp1 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
+				temp2 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
+				for (i = 0; i <= wr->buffer.cur_buff; i++) {
+					temp3[i] = wr->buffer.buff[i];
+					temp1[i] = wr->buffer.data_size[i];
+					temp2[i] = wr->buffer.buffs_size[i];
+				}
+				AXIS2_FREE(env->allocator, wr->buffer.data_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buffs_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buff);
+				wr->buffer.buff = temp3;
+				wr->buffer.buffs_size = temp2;
+				wr->buffer.data_size = temp1;			
 			}
 			wr->buffer.cur_buff++;
 			temp = wr->buffer.buffs_size[wr->buffer.cur_buff -1]*2;
 			while(temp < (tok->size - remain_len)){
 				temp = temp * 2;
 			}
-			wr->buffer.buff[wr->buffer.cur_buff] = (char *)malloc(sizeof(char)*temp);	
+			wr->buffer.buff[wr->buffer.cur_buff] = (char *)AXIS2_MALLOC(env->allocator, sizeof(char)*temp);	
 			wr->buffer.buffs_size[wr->buffer.cur_buff] = temp;
 			memcpy(wr->buffer.buff[wr->buffer.cur_buff], tok->start + remain_len, tok->size - remain_len);
 			wr->buffer.data_size[wr->buffer.cur_buff] = tok->size - remain_len;
@@ -285,10 +297,12 @@
 	return GUTHTHILA_FAILURE;
 }
 
-int GUTHTHILA_CALL guththila_write_xtoken(guththila_xml_writer_t *wr, char *buff, size_t buff_len)
+int GUTHTHILA_CALL guththila_write_xtoken(guththila_xml_writer_t *wr, char *buff, size_t buff_len, axutil_env_t *env)
 {
-	size_t temp = 0;
+	size_t temp = 0, i = 0;
 	size_t remain_len = 0;
+	size_t *temp1 = NULL, *temp2 = NULL;
+	char **temp3 = NULL;
 	if (wr->type == GUTHTHILA_WRITER_MEMORY){
 		remain_len = wr->buffer.buffs_size[wr->buffer.cur_buff] - wr->buffer.data_size[wr->buffer.cur_buff];
 		if (buff_len < remain_len) {
@@ -298,18 +312,28 @@
 			return (int)buff_len;
 		} else {
 			if(wr->buffer.no_buffers -1 == wr->buffer.cur_buff){
-				wr->buffer.buff = (char **)realloc(wr->buffer.buff, wr->buffer.no_buffers * 2);
 				wr->buffer.no_buffers = wr->buffer.no_buffers * 2;
-				wr->buffer.cur_buff++;
-				wr->buffer.data_size = (size_t *)realloc(wr->buffer.data_size, wr->buffer.no_buffers);
-				wr->buffer.buffs_size = (size_t *)realloc(wr->buffer.buffs_size, wr->buffer.no_buffers);			
+				temp3 = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * wr->buffer.no_buffers);				
+				temp1 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
+				temp2 = (size_t *)AXIS2_MALLOC(env->allocator, sizeof(size_t) * wr->buffer.no_buffers);
+				for (i = 0; i <= wr->buffer.cur_buff; i++) {
+					temp3[i] = wr->buffer.buff[i];
+					temp1[i] = wr->buffer.data_size[i];
+					temp2[i] = wr->buffer.buffs_size[i];
+				}
+				AXIS2_FREE(env->allocator, wr->buffer.data_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buffs_size);
+				AXIS2_FREE(env->allocator, wr->buffer.buff);
+				wr->buffer.buff = temp3;
+				wr->buffer.buffs_size = temp2;
+				wr->buffer.data_size = temp1;		
 			}
 			temp = wr->buffer.buffs_size[wr->buffer.cur_buff]*2;
 			while(temp < (buff_len)){
 				temp = temp * 2;
 			}
 			wr->buffer.cur_buff++;
-			wr->buffer.buff[wr->buffer.cur_buff] = (char *)malloc(sizeof(char)*temp);	
+			wr->buffer.buff[wr->buffer.cur_buff] = (char *)AXIS2_MALLOC(env->allocator, sizeof(char)*temp);	
 			wr->buffer.buffs_size[wr->buffer.cur_buff] = temp;
 			memcpy(wr->buffer.buff[wr->buffer.cur_buff], buff, buff_len);
 			wr->buffer.data_size[wr->buffer.cur_buff] = buff_len;
@@ -325,31 +349,31 @@
 
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_start_document (guththila_xml_writer_t *wr)
+guththila_write_start_document (guththila_xml_writer_t *wr, axutil_env_t *env)
 {
-	guththila_write(wr, GUTHTHILA_WRITER_SD_DECLARATION, strlen(GUTHTHILA_WRITER_SD_DECLARATION));									 
+	guththila_write(wr, GUTHTHILA_WRITER_SD_DECLARATION, strlen(GUTHTHILA_WRITER_SD_DECLARATION), env);									 
 	return GUTHTHILA_SUCCESS;
 }
 
 GUTHTHILA_EXPORT int GUTHTHILA_CALL
-guththila_write_start_element ( guththila_xml_writer_t *wr, char *start_element)
+guththila_write_start_element ( guththila_xml_writer_t *wr, char *start_element, axutil_env_t *env)
 {
 	int cur_pos = 0;
 	size_t len = 0;
-	guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)malloc(sizeof(guththila_xml_writer_element_t));	
+	guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_element_t));	
 	len = strlen(start_element);
 	if (wr->status == START) {		
-		guththila_write(wr, "><", 2u);
+		guththila_write(wr, "><", 2u, env);
 		cur_pos = wr->next;
-		guththila_write_xtoken(wr, start_element, len);		
+		guththila_write_xtoken(wr, start_element, len, env);		
 	} else if (wr->status == START_EMPTY) {
-		guththila_write(wr, "/><", 3u);
+		guththila_write(wr, "/><", 3u, env);
 		cur_pos = wr->next;
-		guththila_write_xtoken(wr, start_element, len);		
+		guththila_write_xtoken(wr, start_element, len, env);		
 	} else if (BEGINING) {
-		guththila_write(wr, "<", 1u);
+		guththila_write(wr, "<", 1u, env);
 		cur_pos = wr->next;	
-		guththila_write_xtoken(wr, start_element, len);		
+		guththila_write_xtoken(wr, start_element, len, env);		
 	} else {
 		return GUTHTHILA_FAILURE;
 	}
@@ -358,76 +382,76 @@
 	element->name = strdup(start_element);
 	element->prefix = NULL;
 #else
-	element->name = guththila_tok_list_get_token(&wr->tok_list);
+	element->name = guththila_tok_list_get_token(&wr->tok_list, env);
 	element->name->start = GUTHTHILA_BUF_POS(wr->buffer, cur_pos);
 	element->name->size = len;
 	element->prefix = NULL;
 #endif
 	element->name_sp_stack_no = -1;
-	return guththila_stack_push(&wr->element, element); 
+	return guththila_stack_push(&wr->element, element, env); 
 }
 
 
 GUTHTHILA_EXPORT int GUTHTHILA_CALL
-guththila_write_end_element ( guththila_xml_writer_t *wr)
+guththila_write_end_element ( guththila_xml_writer_t *wr, axutil_env_t *env)
 {
 	guththila_xml_writer_element_t *elem = NULL;
 	guththila_xml_writer_namesp_t *namesp = NULL;
 	int i = 0, j = 0;
 	if (wr->status == START) {
-		guththila_write(wr, "></", 3u);
-		elem = (guththila_xml_writer_element_t *)guththila_stack_pop(&wr->element);
+		guththila_write(wr, "></", 3u, env);
+		elem = (guththila_xml_writer_element_t *)guththila_stack_pop(&wr->element, env);
 		if (elem) {
 			if (elem->prefix) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-				guththila_write(wr, elem->prefix, strlen(elem->prefix));
+				guththila_write(wr, elem->prefix, strlen(elem->prefix), env);
 #else
-				guththila_write_token(wr, elem->prefix);
+				guththila_write_token(wr, elem->prefix, env);
 #endif
-				guththila_write(wr, ":", 1u);			
+				guththila_write(wr, ":", 1u, env);			
 			}
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-			guththila_write(wr, elem->name, strlen(elem->name));
+			guththila_write(wr, elem->name, strlen(elem->name), env);
 #else
-			guththila_write_token(wr, elem->name);
+			guththila_write_token(wr, elem->name, env);
 #endif
-			guththila_write(wr, ">", 1u);
+			guththila_write(wr, ">", 1u, env);
 			wr->status = BEGINING;
 			if (elem->name_sp_stack_no != -1) {
-				GUTHTHILA_WRITER_CLEAR_NAMESP(wr, &wr->namesp, elem->name_sp_stack_no, i, namesp, j);  
+				GUTHTHILA_WRITER_CLEAR_NAMESP(wr, &wr->namesp, elem->name_sp_stack_no, i, namesp, j, env);  
 			}
-			GUTHTHILA_WRITER_ELEM_FREE(wr, elem);
+			GUTHTHILA_WRITER_ELEM_FREE(wr, elem, env);
 			return GUTHTHILA_SUCCESS;			
 		} else {
 			return GUTHTHILA_FAILURE;
 		}
 	} else if (wr->status == START_EMPTY) {		
-		guththila_write(wr, "/>", 2u);		
+		guththila_write(wr, "/>", 2u, env);		
 		wr->status = BEGINING;		
 		return GUTHTHILA_SUCCESS;			
 	} else if (wr->status == BEGINING) {
-		guththila_write(wr, "</", 2u);
-		elem = (guththila_xml_writer_element_t *)guththila_stack_pop(&wr->element);
+		guththila_write(wr, "</", 2u, env);
+		elem = (guththila_xml_writer_element_t *)guththila_stack_pop(&wr->element, env);
 		if (elem) {
 			if (elem->prefix) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-				guththila_write(wr, elem->prefix, strlen(elem->prefix));
+				guththila_write(wr, elem->prefix, strlen(elem->prefix), env);
 #else
-				guththila_write_token(wr, elem->prefix);
+				guththila_write_token(wr, elem->prefix, env);
 #endif
-				guththila_write(wr, ":", 1u);			
+				guththila_write(wr, ":", 1u, env);			
 			}
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-			guththila_write(wr, elem->name, strlen(elem->name));
+			guththila_write(wr, elem->name, strlen(elem->name), env);
 #else
-			guththila_write_token(wr, elem->name);
+			guththila_write_token(wr, elem->name, env);
 #endif
-			guththila_write(wr, ">", 1u);
+			guththila_write(wr, ">", 1u, env);
 			wr->status = BEGINING;
 			if (elem->name_sp_stack_no != -1) {
-				GUTHTHILA_WRITER_CLEAR_NAMESP(wr, &wr->namesp, elem->name_sp_stack_no, i, namesp, j);  
+				GUTHTHILA_WRITER_CLEAR_NAMESP(wr, &wr->namesp, elem->name_sp_stack_no, i, namesp, j, env);  
 			}
-			GUTHTHILA_WRITER_ELEM_FREE(wr, elem);
+			GUTHTHILA_WRITER_ELEM_FREE(wr, elem, env);
 			return GUTHTHILA_SUCCESS;			
 		} else {
 			return GUTHTHILA_FAILURE;
@@ -438,26 +462,26 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_close ( guththila_xml_writer_t *wr)
+guththila_close ( guththila_xml_writer_t *wr, axutil_env_t *env)
 {
 	return GUTHTHILA_FAILURE;
 }
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_characters (guththila_xml_writer_t *wr, char  *buff)
+guththila_write_characters (guththila_xml_writer_t *wr, char  *buff, axutil_env_t *env)
 {	
 	if (wr->status == START) {		
 		wr->status = BEGINING;
-		guththila_write(wr, ">", 1u); 
-		guththila_write(wr, buff, strlen(buff));
+		guththila_write(wr, ">", 1u, env); 
+		guththila_write(wr, buff, strlen(buff), env);
 		return GUTHTHILA_SUCCESS;
 	} else if (wr->status == START_EMPTY) {		
 		wr->status = BEGINING;
-		guththila_write(wr, "/>", 2u); 
-		guththila_write(wr, buff, strlen(buff));		
+		guththila_write(wr, "/>", 2u, env); 
+		guththila_write(wr, buff, strlen(buff), env);		
 		return GUTHTHILA_SUCCESS;
 	} else if (wr->status == BEGINING) {
-		guththila_write(wr, buff, strlen(buff));				
+		guththila_write(wr, buff, strlen(buff), env);				
 		return GUTHTHILA_SUCCESS;
 	}
 	return GUTHTHILA_FAILURE;
@@ -465,24 +489,24 @@
 
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_comment (guththila_xml_writer_t *wr, char *buff)
+guththila_write_comment (guththila_xml_writer_t *wr, char *buff, axutil_env_t *env)
 {
 	if (wr->status == START) {		
 		wr->status = BEGINING;
-		guththila_write(wr, "><!--", 5u);
-		guththila_write(wr, buff, strlen(buff));
-		guththila_write(wr, "-->", 3u);
+		guththila_write(wr, "><!--", 5u, env);
+		guththila_write(wr, buff, strlen(buff), env);
+		guththila_write(wr, "-->", 3u, env);
 		return GUTHTHILA_SUCCESS;
 	} else if (wr->status == START_EMPTY) {		
 		wr->status = BEGINING;
-		guththila_write(wr, "/><!--", 6u);
-		guththila_write(wr, buff, strlen(buff));
-		guththila_write(wr, "-->", 3u);		
+		guththila_write(wr, "/><!--", 6u, env);
+		guththila_write(wr, buff, strlen(buff), env);
+		guththila_write(wr, "-->", 3u, env);		
 		return GUTHTHILA_SUCCESS;
 	} else if (wr->status == BEGINING) {
-		guththila_write(wr, "<!--", 4u);
-		guththila_write(wr, buff, strlen(buff));
-		guththila_write(wr, "-->", 3u);				
+		guththila_write(wr, "<!--", 4u, env);
+		guththila_write(wr, buff, strlen(buff), env);
+		guththila_write(wr, "-->", 3u, env);				
 		return GUTHTHILA_SUCCESS;
 	}
 	return GUTHTHILA_FAILURE;
@@ -490,32 +514,32 @@
 }
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_escape_character (guththila_xml_writer_t *wr, char *buff)
+guththila_write_escape_character (guththila_xml_writer_t *wr, char *buff, axutil_env_t *env)
 {    
 	/*TODO element closing -- not sure*/
 	if (wr->status == START) {		
 		wr->status = BEGINING;
-		guththila_write(wr, ">", 1u);
+		guththila_write(wr, ">", 1u, env);
 	} else if (wr->status == START_EMPTY) {		
 		wr->status = BEGINING;
-		guththila_write(wr, "/>", 2u);		
+		guththila_write(wr, "/>", 2u, env);		
 	} 
     if (buff){
         switch (buff[0]){
             case '>':
-				guththila_write(wr, "&gt;", 4u);
+				guththila_write(wr, "&gt;", 4u, env);
 				break;
             case '<':
-                guththila_write(wr, "&lt;", 4u);
+                guththila_write(wr, "&lt;", 4u, env);
 				break;
             case '\'':
-                guththila_write(wr, "&apos;", 6u);
+                guththila_write(wr, "&apos;", 6u, env);
 				break;
             case '"':
-                guththila_write(wr, "&quot;", 6u);
+                guththila_write(wr, "&quot;", 6u, env);
 				break;
             case '&':
-                guththila_write(wr, "&amp;", 5u);
+                guththila_write(wr, "&amp;", 5u, env);
 				break;
         };
     }
@@ -524,23 +548,23 @@
 
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_empty_element (guththila_xml_writer_t *wr, char *empty_element)
+guththila_write_empty_element (guththila_xml_writer_t *wr, char *empty_element, axutil_env_t *env)
 {
 	int cur_pos = 0;
 	size_t len = 0;
 	len = strlen(empty_element);
 	if (wr->status == START) {		
-		guththila_write(wr, "><", 2u);
+		guththila_write(wr, "><", 2u, env);
 		cur_pos = wr->next;
-		guththila_write(wr, empty_element, len);
+		guththila_write(wr, empty_element, len, env);
 	} else if (wr->status == START_EMPTY) {
-		guththila_write(wr, "/><", 3u);
+		guththila_write(wr, "/><", 3u, env);
 		cur_pos = wr->next;
-		guththila_write(wr, empty_element, len);
+		guththila_write(wr, empty_element, len, env);
 	} else if (BEGINING) {
-		guththila_write(wr, "<", 1u);
+		guththila_write(wr, "<", 1u, env);
 		cur_pos = wr->next;
-		guththila_write(wr, empty_element, len);		
+		guththila_write(wr, empty_element, len, env);		
 	} else {
 		return GUTHTHILA_FAILURE;
 	}
@@ -550,12 +574,12 @@
 }
 
 GUTHTHILA_EXPORT int GUTHTHILA_CALL
-guththila_write_default_namespace (guththila_xml_writer_t *wr, char *namespace_uri)
+guththila_write_default_namespace (guththila_xml_writer_t *wr, char *namespace_uri, axutil_env_t *env)
 {
 	if (wr->status == START || wr->status == START_EMPTY) {
-		guththila_write(wr, " xmlns = \"", 10u);
-		guththila_write(wr, namespace_uri, strlen(namespace_uri));
-		guththila_write(wr, "\"", 1u);		
+		guththila_write(wr, " xmlns = \"", 10u, env);
+		guththila_write(wr, namespace_uri, strlen(namespace_uri), env);
+		guththila_write(wr, "\"", 1u, env);		
 		return GUTHTHILA_SUCCESS;
 	}
 	return GUTHTHILA_FAILURE;
@@ -563,23 +587,24 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_namespace (guththila_xml_writer_t *wr, char *prefix, char *uri)
+guththila_write_namespace (guththila_xml_writer_t *wr, char *prefix, char *uri, axutil_env_t *env)
 {
 	int i = 0, j = 0, temp = 0, nmsp_found = GUTHTHILA_FALSE, stack_size = 0;
 	guththila_xml_writer_namesp_t *namesp = NULL;
 	guththila_xml_writer_element_t *elem = NULL;
 	int pref_start = 0, uri_start = 0;
-	guththila_xml_writer_namesp_t *writer_namesp = NULL; 
+	guththila_xml_writer_namesp_t *writer_namesp = NULL;
+	guththila_token_t **tok_name = NULL, **tok_uri = NULL;
 	size_t pref_len = strlen(prefix), uri_len = strlen(uri);
 	stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
 	for (i = stack_size - 1; i >= 0; i--) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(prefix, writer_namesp->name[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len)) {
+			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len, env)) {
 #endif
 				nmsp_found = GUTHTHILA_TRUE;
 			}
@@ -587,49 +612,49 @@
 	}
 
 	if (!nmsp_found && (wr->status == START || wr->status == START_EMPTY)) {		
-		guththila_write(wr, " xmlns:", 7u);
+		guththila_write(wr, " xmlns:", 7u, env);
 		pref_start = wr->next;
-		guththila_write_xtoken(wr, prefix, pref_len);
-		guththila_write(wr, " = \"", 4u);
+		guththila_write_xtoken(wr, prefix, pref_len, env);
+		guththila_write(wr, " = \"", 4u, env);
 		uri_start = wr->next;
-		guththila_write_xtoken(wr, uri, uri_len);
-		guththila_write(wr, "\"", 1u);
+		guththila_write_xtoken(wr, uri, uri_len, env);
+		guththila_write(wr, "\"", 1u, env);
 		
-		elem = guththila_stack_peek(&wr->element);
+		elem = guththila_stack_peek(&wr->element, env);
 		if (elem && elem->name_sp_stack_no == -1) {
-			namesp = (guththila_xml_writer_namesp_t *)malloc(sizeof(guththila_xml_writer_namesp_t));
+			namesp = (guththila_xml_writer_namesp_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_namesp_t));
 			if (namesp) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-				namesp->name = (char **)malloc(sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-				namesp->uri = (char **)malloc(sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+				namesp->name = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+				namesp->uri = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
 				namesp->name[0] = strdup(prefix);
 				namesp->uri[0] = strdup(uri);				
 #else
-				namesp->name = (guththila_token_t **)malloc(sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-				namesp->uri = (guththila_token_t **)malloc(sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-				namesp->name[0] = guththila_tok_list_get_token(&wr->tok_list);
+				namesp->name = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+				namesp->uri = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+				namesp->name[0] = guththila_tok_list_get_token(&wr->tok_list, env);
 				namesp->name[0]->start = GUTHTHILA_BUF_POS(wr->buffer, pref_start);
 				namesp->name[0]->size = pref_len;
-				namesp->uri[0] = guththila_tok_list_get_token(&wr->tok_list);
+				namesp->uri[0] = guththila_tok_list_get_token(&wr->tok_list, env);
 				namesp->uri[0]->start = GUTHTHILA_BUF_POS(wr->buffer, uri_start);
 				namesp->uri[0]->size = uri_len;
 #endif
 				namesp->no = 1;
 				namesp->size = GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE;
-				guththila_stack_push(&wr->namesp, namesp);
+				guththila_stack_push(&wr->namesp, namesp, env);
 				elem->name_sp_stack_no = GUTHTHILA_STACK_TOP_INDEX(wr->namesp);
 			} else {
 				return GUTHTHILA_FAILURE;
 			}
 		} else if (elem){
-			namesp = guththila_stack_peek(&wr->namesp);
+			namesp = guththila_stack_peek(&wr->namesp, env);
 			if (namesp->no < namesp->size) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 				namesp->name[++(namesp->no) - 1] = strdup(prefix);
 				namesp->uri[namesp->no - 1] = strdup(uri);
 #else
-				namesp->name[++(namesp->no) - 1] = guththila_tok_list_get_token(&wr->tok_list);
-				namesp->uri[namesp->no - 1] = guththila_tok_list_get_token(&wr->tok_list);
+				namesp->name[++(namesp->no) - 1] = guththila_tok_list_get_token(&wr->tok_list, env);
+				namesp->uri[namesp->no - 1] = guththila_tok_list_get_token(&wr->tok_list, env);
 				namesp->name[namesp->no - 1]->start = GUTHTHILA_BUF_POS(wr->buffer, pref_start);
 				namesp->name[namesp->no - 1]->size = pref_len;
 				namesp->uri[namesp->no - 1]->start = GUTHTHILA_BUF_POS(wr->buffer, uri_start);
@@ -643,8 +668,18 @@
 				namesp->name[++(namesp->no) - 1] = strdup(prefix);
 				namesp->uri[namesp->no - 1] = strdup(uri);
 #else
-				namesp->name = (guththila_token_t **)realloc(namesp->name, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));
-				namesp->uri = (guththila_token_t **)realloc(namesp->name, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));
+				/*namesp->name = (guththila_token_t **)realloc(namesp->name, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));
+				namesp->uri = (guththila_token_t **)realloc(namesp->name, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));*/
+				tok_name = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));
+				tok_uri = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * (GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size));
+				for (i = 0; i <= namesp->no; i++) {
+					tok_name[i] = namesp->name[i];
+					tok_uri[i] = namesp->uri[i];
+				}
+				AXIS2_FREE(env->allocator, namesp->name);
+				AXIS2_FREE(env->allocator, namesp->uri);
+				namesp->name = tok_name;
+				namesp->uri = tok_uri;
 				namesp->size = GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE + namesp->size;
 				namesp->name[++(namesp->no) - 1]->start = GUTHTHILA_BUF_POS(wr->buffer, pref_start);
 				namesp->name[namesp->no - 1]->size = pref_len;
@@ -659,14 +694,14 @@
 }
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
-guththila_write_attribute (guththila_xml_writer_t *wr, char *localname, char *value)
+guththila_write_attribute (guththila_xml_writer_t *wr, char *localname, char *value, axutil_env_t *env)
 {
 	if (wr->status == START || wr->status == START_EMPTY) {		
-		guththila_write(wr, " ", 1u);
-		guththila_write(wr, localname, strlen(localname));
-		guththila_write(wr, " = \"", 4u);
-		guththila_write(wr, value, strlen(value));
-		guththila_write(wr, "\"", 1u);
+		guththila_write(wr, " ", 1u, env);
+		guththila_write(wr, localname, strlen(localname), env);
+		guththila_write(wr, " = \"", 4u, env);
+		guththila_write(wr, value, strlen(value), env);
+		guththila_write(wr, "\"", 1u, env);
 		return GUTHTHILA_SUCCESS;
 	}
 	return GUTHTHILA_FAILURE;
@@ -675,15 +710,15 @@
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
 guththila_write_attribute_with_prefix_and_namespace (guththila_xml_writer_t *wr, char *prefix, 
-								     char *namespace_uri, char *localname, char *value)
+								     char *namespace_uri, char *localname, char *value, axutil_env_t *env)
 {
-	return guththila_write_namespace(wr, prefix, namespace_uri) && guththila_write_attribute_with_prefix(wr, prefix, localname, value);	
+	return guththila_write_namespace(wr, prefix, namespace_uri, env) && guththila_write_attribute_with_prefix(wr, prefix, localname, value, env);	
 }
 
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
 guththila_write_attribute_with_prefix ( guththila_xml_writer_t *wr, char *prefix,
-						       char *localname, char *value)
+						       char *localname, char *value, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -692,21 +727,21 @@
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	if (wr->status == START || wr->status == START_EMPTY) {		
 		for (i = 0; i < stack_size; i++) {
-			writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+			writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 			temp = writer_namesp->no;
 			for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 				if (!strcmp(prefix, writer_namesp->name[j])) {	
 #else
-				if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len)) {
+				if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len, env)) {
 #endif
-					guththila_write(wr, " ", 1u);
-					guththila_write(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
-					guththila_write(wr, localname, strlen(localname));
-					guththila_write(wr, " = \"", 4u);
-					guththila_write(wr, value, strlen(value));			
-					guththila_write(wr, "\"", 1u);
+					guththila_write(wr, " ", 1u, env);
+					guththila_write(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
+					guththila_write(wr, localname, strlen(localname), env);
+					guththila_write(wr, " = \"", 4u, env);
+					guththila_write(wr, value, strlen(value), env);			
+					guththila_write(wr, "\"", 1u, env);
 					return GUTHTHILA_SUCCESS;
 				}
 			}
@@ -718,7 +753,7 @@
 
 GUTHTHILA_EXPORT int   GUTHTHILA_CALL
 guththila_write_attribute_with_namespace (guththila_xml_writer_t *wr, char *namesp,
-							  char *loc_name, char *value)
+							  char *loc_name, char *value, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -726,23 +761,23 @@
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	if (wr->status == START || wr->status == START_EMPTY) {
 		for (i = 0; i < stack_size; i++) {
-			writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+			writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 			temp = writer_namesp->no;
 			for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 				if (!strcmp(namesp, writer_namesp->uri[j])) {
-					guththila_write(wr, " ", 1);
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, " ", 1, env);
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-				if (!guththila_tok_str_cmp(writer_namesp->uri[j], namesp, strlen(namesp))) {
-					guththila_write(wr, " ", 1u);
-					guththila_write_token(wr, writer_namesp->name[j]);
-#endif
-					guththila_write(wr, ":", 1u);
-					guththila_write(wr, loc_name, strlen(loc_name));
-					guththila_write(wr, " = \"", 4u);
-					guththila_write(wr, value, strlen(value));			
-					guththila_write(wr, "\"", 1u);
+				if (!guththila_tok_str_cmp(writer_namesp->uri[j], namesp, strlen(namesp), env)) {
+					guththila_write(wr, " ", 1u, env);
+					guththila_write_token(wr, writer_namesp->name[j], env);
+#endif
+					guththila_write(wr, ":", 1u, env);
+					guththila_write(wr, loc_name, strlen(loc_name), env);
+					guththila_write(wr, " = \"", 4u, env);
+					guththila_write(wr, value, strlen(value), env);			
+					guththila_write(wr, "\"", 1u, env);
 					return GUTHTHILA_SUCCESS;
 				}
 			}
@@ -754,7 +789,7 @@
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
 guththila_write_start_element_with_prefix_and_namespace (guththila_xml_writer_t *wr, char* prefix,
-									 char *namespace_uri, char *local_name)
+									 char *namespace_uri, char *local_name, axutil_env_t *env)
 {
 	int i = 0, j = 0, temp = 0, stack_size = 0, nmsp_found = GUTHTHILA_FALSE;
 	guththila_xml_writer_namesp_t *namesp = NULL;
@@ -764,20 +799,20 @@
 	size_t pref_len = 0;
 	size_t elem_len = 0;
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
-	namesp = (guththila_xml_writer_namesp_t *)malloc(sizeof(guththila_xml_writer_namesp_t));
-	elem = (guththila_xml_writer_element_t  *)malloc(sizeof(guththila_xml_writer_element_t));
+	namesp = (guththila_xml_writer_namesp_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_namesp_t));
+	elem = (guththila_xml_writer_element_t  *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_element_t));
 	uri_len = strlen(namespace_uri);
 	pref_len = strlen(prefix);
 	elem_len = strlen(local_name);	
 	stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
 	for (i = stack_size - 1; i >= 0; i--) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(uri, writer_namesp->uri[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len)) {
+			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len, env)) {
 #endif
 				nmsp_found = GUTHTHILA_TRUE;
 			}
@@ -786,56 +821,56 @@
 
 	if (namesp && elem) {
 		if (wr->status == START) {		
-			guththila_write(wr, "><", 2u);
+			guththila_write(wr, "><", 2u, env);
 			elem_pref_start = wr->next;
-			guththila_write_xtoken(wr, prefix, pref_len);
-			guththila_write(wr, ":", 1u);
+			guththila_write_xtoken(wr, prefix, pref_len, env);
+			guththila_write(wr, ":", 1u, env);
 			elem_start = wr->next;
-			guththila_write_xtoken(wr, local_name, elem_len);
+			guththila_write_xtoken(wr, local_name, elem_len, env);
 			if (!nmsp_found) {
-				guththila_write(wr, " ", 1u);
-				guththila_write(wr, "xmlns:", 6u);
+				guththila_write(wr, " ", 1u, env);
+				guththila_write(wr, "xmlns:", 6u, env);
 				pref_start = wr->next;
-				guththila_write_xtoken(wr, prefix, pref_len);
-				guththila_write(wr, " = \"", 4u);
+				guththila_write_xtoken(wr, prefix, pref_len, env);
+				guththila_write(wr, " = \"", 4u, env);
 				uri_start = wr->next;
-				guththila_write_xtoken(wr, namespace_uri, uri_len);
-				guththila_write(wr, "\"", 1u);
+				guththila_write_xtoken(wr, namespace_uri, uri_len, env);
+				guththila_write(wr, "\"", 1u, env);
 			}			
 		} else if (wr->status == START_EMPTY) {
-			guththila_write(wr, "/><", 2u);
+			guththila_write(wr, "/><", 2u, env);
 			elem_pref_start = wr->next;
-			guththila_write_xtoken(wr, prefix, pref_len);
-			guththila_write(wr, ":", 1u);
+			guththila_write_xtoken(wr, prefix, pref_len, env);
+			guththila_write(wr, ":", 1u, env);
 			elem_start = wr->next;
-			guththila_write_xtoken(wr, local_name, elem_len);
+			guththila_write_xtoken(wr, local_name, elem_len, env);
 			if (!nmsp_found) {
-				guththila_write(wr, " ", 1u);
-				guththila_write(wr, "xmlns:", 6u);
+				guththila_write(wr, " ", 1u, env);
+				guththila_write(wr, "xmlns:", 6u, env);
 				pref_start = wr->next;
-				guththila_write_xtoken(wr, prefix, pref_len);
-				guththila_write(wr, " = \"", 4u);
+				guththila_write_xtoken(wr, prefix, pref_len, env);
+				guththila_write(wr, " = \"", 4u, env);
 				uri_start = wr->next;
-				guththila_write_xtoken(wr, namespace_uri, uri_len);
-				guththila_write(wr, "\"", 1u);
+				guththila_write_xtoken(wr, namespace_uri, uri_len, env);
+				guththila_write(wr, "\"", 1u, env);
 			}
 			wr->status = START;
 		} else if (BEGINING) {
-			guththila_write(wr, "<", 1u);			
+			guththila_write(wr, "<", 1u, env);			
 			elem_pref_start = wr->next;
-			guththila_write_xtoken(wr, prefix, pref_len);
-			guththila_write(wr, ":", 1u);
+			guththila_write_xtoken(wr, prefix, pref_len, env);
+			guththila_write(wr, ":", 1u, env);
 			elem_start = wr->next;
-			guththila_write_xtoken(wr, local_name, elem_len);
+			guththila_write_xtoken(wr, local_name, elem_len, env);
 			if (!nmsp_found) {
-				guththila_write(wr, " ", 1u);
-				guththila_write(wr, "xmlns:", 6u);
+				guththila_write(wr, " ", 1u, env);
+				guththila_write(wr, "xmlns:", 6u, env);
 				pref_start = wr->next;
-				guththila_write_xtoken(wr, prefix, pref_len);
-				guththila_write(wr, " = \"", 4u);
+				guththila_write_xtoken(wr, prefix, pref_len, env);
+				guththila_write(wr, " = \"", 4u, env);
 				uri_start = wr->next;
-				guththila_write_xtoken(wr, namespace_uri, uri_len);
-				guththila_write(wr, "\"", 1u);
+				guththila_write_xtoken(wr, namespace_uri, uri_len, env);
+				guththila_write(wr, "\"", 1u, env);
 			}
 			wr->status = START;
 		} else {
@@ -844,37 +879,37 @@
 		
 		if (!nmsp_found) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-			namesp->name = (char **)malloc(sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-			namesp->uri = (char **)malloc(sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE); 
+			namesp->name = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+			namesp->uri = (char **)AXIS2_MALLOC(env->allocator, sizeof(char *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE); 
 			namesp->name[0] = strdup(prefix);
 			namesp->uri[0] = strdup(namespace_uri);
 #else
-			namesp->name = (guththila_token_t **)malloc(sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-			namesp->uri = (guththila_token_t **)malloc(sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
-			namesp->name[0] = guththila_tok_list_get_token(&wr->tok_list);
+			namesp->name = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+			namesp->uri = (guththila_token_t **)AXIS2_MALLOC(env->allocator, sizeof(guththila_token_t *) * GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE);
+			namesp->name[0] = guththila_tok_list_get_token(&wr->tok_list, env);
 			namesp->name[0]->start = GUTHTHILA_BUF_POS(wr->buffer, pref_start);
 			namesp->name[0]->size = pref_len;
-			namesp->uri[0] = guththila_tok_list_get_token(&wr->tok_list);
+			namesp->uri[0] = guththila_tok_list_get_token(&wr->tok_list, env);
 			namesp->uri[0]->start = GUTHTHILA_BUF_POS(wr->buffer, uri_start);
 			namesp->uri[0]->size = uri_len;
 #endif
 			namesp->no = 1;
 			namesp->size = GUTHTHILA_XML_WRITER_NAMESP_DEF_SIZE;
-			guththila_stack_push(&wr->namesp, namesp);
+			guththila_stack_push(&wr->namesp, namesp, env);
 		}
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 		elem->name = strdup(local_name);
 		elem->prefix = strdup(prefix);
 #else
-		elem->name = guththila_tok_list_get_token(&wr->tok_list);
-		elem->prefix = guththila_tok_list_get_token(&wr->tok_list);
+		elem->name = guththila_tok_list_get_token(&wr->tok_list, env);
+		elem->prefix = guththila_tok_list_get_token(&wr->tok_list, env);
 		elem->name->start = GUTHTHILA_BUF_POS(wr->buffer, elem_start);
 		elem->name->size = elem_len;
 		elem->prefix->start = GUTHTHILA_BUF_POS(wr->buffer, elem_pref_start);
 		elem->prefix->size = pref_len;
 #endif
 		elem->name_sp_stack_no = GUTHTHILA_STACK_TOP_INDEX(wr->namesp); 
-		guththila_stack_push(&wr->element, elem);		
+		guththila_stack_push(&wr->element, elem, env);		
 	} else {
 		return GUTHTHILA_FAILURE;
 	}
@@ -884,7 +919,7 @@
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
 guththila_write_start_element_with_namespace (guththila_xml_writer_t *wr, char *namespace_uri, 
-							      char *local_name)
+							      char *local_name, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -894,45 +929,45 @@
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	elem_len = strlen(local_name); 
 	for (i = 0; i < stack_size; i++) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(namespace_uri, writer_namesp->uri[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->uri[j], namespace_uri, strlen(namespace_uri))) {
+			if (!guththila_tok_str_cmp(writer_namesp->uri[j], namespace_uri, strlen(namespace_uri), env)) {
 #endif
-				guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)malloc(sizeof(guththila_xml_writer_element_t));
+				guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_element_t));
 				if (wr->status == START) {		
-					guththila_write(wr, "><", 2u);
+					guththila_write(wr, "><", 2u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, elem_len);					
+					guththila_write_xtoken(wr, local_name, elem_len, env);					
 				} else if (wr->status == START_EMPTY) {
-					guththila_write(wr, "/><", 2u);
+					guththila_write(wr, "/><", 2u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, elem_len);					
+					guththila_write_xtoken(wr, local_name, elem_len, env);					
 				} else if (BEGINING) {
-					guththila_write(wr, "<", 1u);
+					guththila_write(wr, "<", 1u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, elem_len);					
+					guththila_write_xtoken(wr, local_name, elem_len, env);					
 				} else {
 					return GUTHTHILA_FAILURE;
 				}
@@ -940,16 +975,16 @@
 				element->name = strdup(local_name);
 				element->prefix = strdup(writer_namesp->name[j]);
 #else
-				element->name = guththila_tok_list_get_token(&wr->tok_list);
+				element->name = guththila_tok_list_get_token(&wr->tok_list, env);
 				element->name->size = elem_len;
 				element->name->start = GUTHTHILA_BUF_POS(wr->buffer, elem_start);
-				element->prefix = guththila_tok_list_get_token(&wr->tok_list);
+				element->prefix = guththila_tok_list_get_token(&wr->tok_list, env);
 				element->prefix->size = writer_namesp->name[j]->size;
 				element->prefix->start = writer_namesp->name[j]->start;
 #endif
 				element->name_sp_stack_no = -1;
 				wr->status = START;
-				return guththila_stack_push(&wr->element, element); 
+				return guththila_stack_push(&wr->element, element, env); 
 			}
 		}
 	}	
@@ -958,7 +993,7 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_start_element_with_prefix ( guththila_xml_writer_t *wr, char *prefix, char *local_name)
+guththila_write_start_element_with_prefix ( guththila_xml_writer_t *wr, char *prefix, char *local_name, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -969,33 +1004,33 @@
 	elem_len = strlen(local_name); 
 	pref_len = strlen(prefix);
 	for (i = 0; i < stack_size; i++) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {			
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(prefix, writer_namesp->name[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len)) {
+			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len, env)) {
 #endif
-				guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)malloc(sizeof(guththila_xml_writer_element_t));
+				guththila_xml_writer_element_t *element = (guththila_xml_writer_element_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_element_t));
 				if (wr->status == START) {		
-					guththila_write(wr, "><", 2u);
-					guththila_write_xtoken(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, "><", 2u, env);
+					guththila_write_xtoken(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (wr->status == START_EMPTY) {
-					guththila_write(wr, "/><", 3u);
-					guththila_write_xtoken(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, "/><", 3u, env);
+					guththila_write_xtoken(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (BEGINING) {
-					guththila_write(wr, "<", 1u);
-					guththila_write_xtoken(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
+					guththila_write(wr, "<", 1u, env);
+					guththila_write_xtoken(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
 					elem_start = wr->next;
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else {
 					return GUTHTHILA_FAILURE;
 				}
@@ -1003,16 +1038,16 @@
 				element->name = strdup(local_name);
 				element->prefix = strdup(prefix);
 #else
-				element->name = guththila_tok_list_get_token(&wr->tok_list);
+				element->name = guththila_tok_list_get_token(&wr->tok_list, env);
 				element->name->size = elem_len;
 				element->name->start = GUTHTHILA_BUF_POS(wr->buffer, elem_start);
-				element->prefix = guththila_tok_list_get_token(&wr->tok_list);
+				element->prefix = guththila_tok_list_get_token(&wr->tok_list, env);
 				element->prefix->size = writer_namesp->name[j]->size;
 				element->prefix->start = writer_namesp->name[j]->start;
 #endif
 				wr->status = START;
 				element->name_sp_stack_no = -1;
-				return guththila_stack_push(&wr->element, element); 
+				return guththila_stack_push(&wr->element, element, env); 
 			}
 		}
 	}	
@@ -1022,52 +1057,52 @@
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
 guththila_write_empty_element_with_prefix_and_namespace (guththila_xml_writer_t *wr, char* prefix,
-									 char *namespace_uri, char *local_name)
+									 char *namespace_uri, char *local_name, axutil_env_t *env)
 {
 
 	guththila_xml_writer_namesp_t *namesp = NULL;
 	guththila_xml_writer_element_t *elem = NULL;
-	namesp = (guththila_xml_writer_namesp_t *)malloc(sizeof(guththila_xml_writer_namesp_t));
-	elem = (guththila_xml_writer_element_t  *)malloc(sizeof(guththila_xml_writer_element_t));
+	namesp = (guththila_xml_writer_namesp_t *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_namesp_t));
+	elem = (guththila_xml_writer_element_t  *)AXIS2_MALLOC(env->allocator, sizeof(guththila_xml_writer_element_t));
 	if (namesp && elem) {
 		if (wr->status == START) {		
-			guththila_write(wr, "><", 2u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, ":", 1u);
-			guththila_write_xtoken(wr, local_name, strlen(local_name));
-			guththila_write(wr, " ", 1u);
-			guththila_write(wr, "xmlns:", 6u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, " = \"", 4u);
-			guththila_write_xtoken(wr, prefix, strlen(namespace_uri));
-			guththila_write(wr, "\"", 1u);
+			guththila_write(wr, "><", 2u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, ":", 1u, env);
+			guththila_write_xtoken(wr, local_name, strlen(local_name), env);
+			guththila_write(wr, " ", 1u, env);
+			guththila_write(wr, "xmlns:", 6u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, " = \"", 4u, env);
+			guththila_write_xtoken(wr, prefix, strlen(namespace_uri), env);
+			guththila_write(wr, "\"", 1u, env);
 
 			wr->status = START_EMPTY;
 			return GUTHTHILA_SUCCESS;
 		} else if (wr->status == START_EMPTY) {
-			guththila_write(wr, "/><", 2u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, ":", 1u);
-			guththila_write_xtoken(wr, local_name, strlen(local_name));
-			guththila_write(wr, " ", 1u);
-			guththila_write(wr, "xmlns:", 6u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, " = \"", 4u);
-			guththila_write_xtoken(wr, prefix, strlen(namespace_uri));
-			guththila_write(wr, "\"", 1u);
+			guththila_write(wr, "/><", 2u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, ":", 1u, env);
+			guththila_write_xtoken(wr, local_name, strlen(local_name), env);
+			guththila_write(wr, " ", 1u, env);
+			guththila_write(wr, "xmlns:", 6u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, " = \"", 4u, env);
+			guththila_write_xtoken(wr, prefix, strlen(namespace_uri), env);
+			guththila_write(wr, "\"", 1u, env);
 
 			return GUTHTHILA_SUCCESS;
 		} else if (BEGINING) {
-			guththila_write(wr, "<", 1u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, ":", 1u);
-			guththila_write_xtoken(wr, local_name, strlen(local_name));
-			guththila_write(wr, " ", 1u);
-			guththila_write(wr, "xmlns:", 6u);
-			guththila_write_xtoken(wr, prefix, strlen(prefix));
-			guththila_write(wr, " = \"", 4u);
-			guththila_write_xtoken(wr, prefix, strlen(namespace_uri));
-			guththila_write(wr, "\"", 1u);			
+			guththila_write(wr, "<", 1u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, ":", 1u, env);
+			guththila_write_xtoken(wr, local_name, strlen(local_name), env);
+			guththila_write(wr, " ", 1u, env);
+			guththila_write(wr, "xmlns:", 6u, env);
+			guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+			guththila_write(wr, " = \"", 4u, env);
+			guththila_write_xtoken(wr, prefix, strlen(namespace_uri), env);
+			guththila_write(wr, "\"", 1u, env);			
 
 			wr->status = START_EMPTY;
 			return GUTHTHILA_SUCCESS;
@@ -1083,48 +1118,48 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_empty_element_with_namespace ( guththila_xml_writer_t *wr, char *namespace_uri, char *local_name)
+guththila_write_empty_element_with_namespace ( guththila_xml_writer_t *wr, char *namespace_uri, char *local_name, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
 	int temp = 0;
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	for (i = 0; i < stack_size; i++) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(namespace_uri, writer_namesp->uri[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->uri[j], namespace_uri, strlen(namespace_uri))) {
+			if (!guththila_tok_str_cmp(writer_namesp->uri[j], namespace_uri, strlen(namespace_uri), env)) {
 #endif
 				if (wr->status == START) {		
-					guththila_write(wr, "><", 2u);
+					guththila_write(wr, "><", 2u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (wr->status == START_EMPTY) {
-					guththila_write(wr, "/><", 2u);
+					guththila_write(wr, "/><", 2u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (BEGINING) {
-					guththila_write(wr, "<", 1u);
+					guththila_write(wr, "<", 1u, env);
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
-					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]));
+					guththila_write(wr, writer_namesp->name[j], strlen(writer_namesp->name[j]), env);
 #else
-					guththila_write_token(wr, writer_namesp->name[j]);
+					guththila_write_token(wr, writer_namesp->name[j], env);
 #endif
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else {
 					return GUTHTHILA_FAILURE;
 				}
@@ -1138,7 +1173,7 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_empty_element_with_prefix ( guththila_xml_writer_t *wr, char *prefix, char *local_name)
+guththila_write_empty_element_with_prefix ( guththila_xml_writer_t *wr, char *prefix, char *local_name, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -1146,29 +1181,29 @@
 	size_t pref_len = strlen(prefix);
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	for (i = 0; i < stack_size; i++) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
 #ifndef GUTHTHILA_XML_WRITER_TOKEN
 			if (!strcmp(prefix, writer_namesp->name[j])) {
 #else
-			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len)) {
+			if (!guththila_tok_str_cmp(writer_namesp->name[j], prefix, pref_len, env)) {
 #endif
 				if (wr->status == START) {		
-					guththila_write(wr, "><", 2u);
-					guththila_write_xtoken(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, "><", 2u, env);
+					guththila_write_xtoken(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (wr->status == START_EMPTY) {
-					guththila_write(wr, "/><", 2u);
-					guththila_write_xtoken(wr, prefix, strlen(prefix));
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, "/><", 2u, env);
+					guththila_write_xtoken(wr, prefix, strlen(prefix), env);
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else if (BEGINING) {
-					guththila_write(wr, "<", 1u);
-					guththila_write_xtoken(wr, prefix, pref_len);
-					guththila_write(wr, ":", 1u);
-					guththila_write_xtoken(wr, local_name, strlen(local_name));					
+					guththila_write(wr, "<", 1u, env);
+					guththila_write_xtoken(wr, prefix, pref_len, env);
+					guththila_write(wr, ":", 1u, env);
+					guththila_write_xtoken(wr, local_name, strlen(local_name), env);					
 				} else {
 					return GUTHTHILA_FAILURE;
 				}
@@ -1182,14 +1217,14 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_end_document ( guththila_xml_writer_t *wr)
+guththila_write_end_document ( guththila_xml_writer_t *wr, axutil_env_t *env)
 {
 	int i = 0;
 	int size = GUTHTHILA_STACK_SIZE(wr->element);
 	if (wr->status == START_EMPTY)
-		guththila_write_end_element(wr);
+		guththila_write_end_element(wr, env);
 	for (i = 0; i < size; i++) {
-		if (!guththila_write_end_element(wr)) {
+		if (!guththila_write_end_element(wr, env)) {
 			return GUTHTHILA_FAILURE;
 		}
 	}
@@ -1198,26 +1233,26 @@
 
 
 GUTHTHILA_EXPORT int  GUTHTHILA_CALL
-guththila_write_line ( guththila_xml_writer_t *wr, char *element_name, char *characters)
+guththila_write_line ( guththila_xml_writer_t *wr, char *element_name, char *characters, axutil_env_t *env)
 {
-    guththila_write_start_element(wr, element_name);
-    guththila_write_characters(wr, characters);
-    guththila_write_end_element(wr);
-    guththila_write_characters(wr, "\n");
+    guththila_write_start_element(wr, element_name, env);
+    guththila_write_characters(wr, characters, env);
+    guththila_write_end_element(wr, env);
+    guththila_write_characters(wr, "\n", env);
 	return GUTHTHILA_FAILURE;
 }
 
 GUTHTHILA_EXPORT char * GUTHTHILA_CALL
-guththila_get_memory_buffer (guththila_xml_writer_t *wr)
+guththila_get_memory_buffer (guththila_xml_writer_t *wr, axutil_env_t *env)
 {	
 	if (wr->type == GUTHTHILA_WRITER_MEMORY) {
-		return (char *)guththila_buffer_get(&wr->buffer);			
+		return (char *)guththila_buffer_get(&wr->buffer, env);			
 	}
 	return NULL;
 }
 
 GUTHTHILA_EXPORT unsigned int GUTHTHILA_CALL
-guththila_get_memory_buffer_size(guththila_xml_writer_t *wr)
+guththila_get_memory_buffer_size(guththila_xml_writer_t *wr, axutil_env_t *env)
 {
 	if (wr->type == GUTHTHILA_WRITER_MEMORY) {
 		return wr->buffer.pre_tot_data + wr->buffer.data_size[wr->buffer.cur_buff];
@@ -1227,7 +1262,7 @@
 
 GUTHTHILA_EXPORT char * GUTHTHILA_CALL
 guththila_get_prefix_for_namespace (guththila_xml_writer_t *wr, 
-						    char *nmsp)
+						    char *nmsp, axutil_env_t *env)
 {
 	int i = 0, j = 0;
 	int stack_size = GUTHTHILA_STACK_SIZE(wr->namesp);
@@ -1235,11 +1270,11 @@
 	char *str = NULL;
 	guththila_xml_writer_namesp_t *writer_namesp = NULL;
 	for (i = 0; i < stack_size; i++) {
-		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i);
+		writer_namesp = (guththila_xml_writer_namesp_t *)guththila_stack_get_by_index(&wr->namesp, i, env);
 		temp = writer_namesp->no;
 		for (j = 0; j < temp; j++) {
-			if (!guththila_tok_str_cmp(writer_namesp->uri[j], nmsp, strlen(nmsp))) {
-				GUTHTHILA_TOKEN_TO_STRING(writer_namesp->uri[j], str);
+			if (!guththila_tok_str_cmp(writer_namesp->uri[j], nmsp, strlen(nmsp), env)) {
+				GUTHTHILA_TOKEN_TO_STRING(writer_namesp->uri[j], str, env);
 				return str;
 			}
 		}
@@ -1248,9 +1283,9 @@
 }
 
 GUTHTHILA_EXPORT int GUTHTHILA_CALL
-guththila_write_to_buffer (guththila_xml_writer_t *wr, char *buff, int size)
+guththila_write_to_buffer (guththila_xml_writer_t *wr, char *buff, int size, axutil_env_t *env)
 {
-	guththila_write(wr, buff, size);
+	guththila_write(wr, buff, size, env);
 	return GUTHTHILA_SUCCESS;
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org