text: 
  /*
   *   Copyright 2004,2005 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   *
   */
  
  #ifndef AXIOM_XML_WRITER_H
  #define AXIOM_XML_WRITER_H
  
  /**
   *@file axiom_xml_writer.h
   *@brief this is the parser abstraction layer for axis2
   */
  
  #include <axutil_env.h>
  #include <axiom_defines.h>
  
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  
      typedef struct axiom_xml_writer_ops axiom_xml_writer_ops_t;
      typedef struct axiom_xml_writer axiom_xml_writer_t;
  
      /**
       * @defgroup axiom_xml_writer XML writer
       * @ingroup axiom_parser
       * @{
       */
  
      /**
        * \brief axiom_xml_writer ops
        * Encapsulator struct for ops of axiom_xml_writer
        */
  
      struct axiom_xml_writer_ops
      {
  
          /**
           * Free xml writer
           * @param writer pointer to xml_writer struct to be freed
           * @param env environment, MUST NOT be NULL.
           * @returns status of the op. 
           *       AXIS2_SUCCESS on success and AXIS2_FAILURE on error
           */
  
          void(
              AXIS2_CALL
              * free)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          /**
           *  Write a start tag to output stream with localname.
           *  Internally the writer keeps track of the opened tags 
           *  @param writer pointer to xml writer struct
           *  @param env environment. MUST NOT be NULL.
           *  @param localname localname of the tag, May not be NULL.
           *  @return the status of the op, AXIS2_SUCCESS on success
                       AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_element)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname);
  
          /**
           *  write an end tag to the output relying on the internal
           *  state of writer to determine the prefix and localname of
           *  the element
           *  @param writer xml_writer struct
           *  @param env environment, MUST NOT be NULL.
           *  @return status of the op. AXIS2_SUCCESS on success.
           *           AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * end_start_element)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          /**
           * Write an element tag with localname and namespace uri 
           * @param writer pointer to xml writer struct
           * @param env environment struct
           * @param localname localname of the tag, May not be null.
           * @param namespace_uri the namespace URI of the the pefix
           *        to use.may not be null.
           * @returns status of the op, AXIS2_SUCCESS on success.
           *          AXIS2_FAILURE on error
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_element_with_namespace)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * namespace_uri);
  
          /**
           * write a start tag to output
           * @param writer pointer to xml_writer struct
           * @param environment, MUST NOT be NULL.
           * @param localname localname of the tag, May not be null.
           * @param namespace_uri namespace to bind the prefix to
           * @param prefix the prefix to the tag.May not be NULL.
           * @return status of the op 
                     AXIS2_SUCCESS on success. AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_element_with_namespace_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * namespace_uri,
                  axis2_char_t * prefix);
  
          /**
           * write an element tag with localname 
           * @param writer xml_writer
           * @param env environment
           * @param localname localname 
           * @return status of the op AXIS2_SUCCESS on success,
           *                AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_empty_element)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname);
  
          /**
           * write empty_element with localname and namespace uri.
           * @param writer xml writer
           * @param env environment
           * @param localname localname 
           * @param namespace uri
           * @return status of the op, AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_empty_element_with_namespace)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * namespace_uri);
  
          /**
           * write empty element with namespace uri and prefix 
           * @param writer xml_writer
           * @param env environment
           * @param localname localname
           * @param namespace_uri namespace uri 
           * @param prefix prefix
           * @return status of the op, AXIS2_SUCCESS on success,
           *                    AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_empty_element_with_namespace_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * namespace_uri,
                  axis2_char_t * prefix);
  
          /**
           * write end tag with correct localname prefix resolved internally 
           * @param writer xml writer
           * @param env environment
           * @return status of the op, AXIS2_SUCCESS on success,
           *            AXIS2_FAILURE on failure 
           */
          axis2_status_t(
              AXIS2_CALL
              * write_end_element)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          /**
           * write end document
           * @param writer xml writer
           * @param env environment
           * @return status of the op AXIS2_SUCCESS on success,
           *              AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_end_document)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          /**
           * write attribute with localname and value
           * @param writer writer
           * @param env environment
           * @param localname localname 
           * @param value text value of attribute
           * @return status of the op AXIS2_SUCCESS on success,
           *                 AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_attribute)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * value);
  
          /**
           *  @param writer
           *  @param env environment
           *  @param localname
           *  @param value text value of attribute
           *  @param namespace uri namespace uri
           *  @return status code of the op AXIS2_SUCCESS on success,
           *                    AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_attribute_with_namespace)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * value,
                  axis2_char_t * namespace_uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param localname localname
           * @param value text value of attribute
           * @param namespace uri namespaceuri
           * @param prefix prefix 
           */
          axis2_status_t(
              AXIS2_CALL
              * write_attribute_with_namespace_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * localname,
                  axis2_char_t * value,
                  axis2_char_t * namespace_uri,
                  axis2_char_t * prefix);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param prefix prefix 
           * @param namespace uri namespaceuri
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_namespace)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * prefix,
                  axis2_char_t * namespace_uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param namespace uri namespaceuri
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_default_namespace)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * namespace_uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param value value
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_comment)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * value);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param target pi target 
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_processing_instruction)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * target);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param target pi target
           * @param data  pi data
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
  
          axis2_status_t(
              AXIS2_CALL
              * write_processing_instruction_data)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * target,
                  axis2_char_t * data);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param data  cdata
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_cdata)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * data);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param dtd  dtd
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_dtd)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * dtd);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param name name
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_entity_ref)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * name);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_document)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param version version 
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_document_with_version)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * version);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param version version
           * @param encoding encoding
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_start_document_with_version_encoding)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * version,
                  axis2_char_t * encoding);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param text text 
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_characters)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * text);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param uri uri
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_char_t *(
              AXIS2_CALL
              * get_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param prefix prefix
           * @param uri uri
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * set_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * prefix,
                  axis2_char_t * uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param uri uri
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * set_default_prefix)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * uri);
  
          /**
           * @param writer xml_writer
           * @param env environment
           * @param text text
           * @param in_attr 
           * @return status of op AXIS2_SUCCESS on success,
           *               AXIS2_FAILURE on error.
           */
          axis2_status_t(
              AXIS2_CALL
              * write_encoded)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * text,
                  int in_attr);
  
          void *(
              AXIS2_CALL
              * get_xml)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          unsigned int(
              AXIS2_CALL
              * get_xml_size)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          int(
              AXIS2_CALL
              * get_type)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
          axis2_status_t(
              AXIS2_CALL
              * write_raw)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env,
                  axis2_char_t * content);
          axis2_status_t(
              AXIS2_CALL
              * flush)(
                  axiom_xml_writer_t * writer,
                  const axutil_env_t * env);
  
      };
  
      /**
       * @brief axis2_pull_parser struct
        *   Axis2 OM pull_parser
       */
  
      struct axiom_xml_writer
      {
          const axiom_xml_writer_ops_t *ops;
      };
  
      /**
       * create function for axiom_xml_writer
       * @param env environment
       * @param filename filename 
       * @param encoding encoding
       * @param is_prefix_default 
       * @param compression
       * return xml writer wrapper structure 
       */
      AXIS2_EXTERN axiom_xml_writer_t *AXIS2_CALL
      axiom_xml_writer_create(
          const axutil_env_t * env,
          axis2_char_t * filename,
          axis2_char_t * encoding,
          int is_prefix_default,
          int compression);
  
      /**
       * create fuction for xml writer for memory buffer
       * @param env environment struct, must not be null
       * @param env environment
       * @param encoding encoding
       * @param is_prefix_default
       * @param compression 
       * @return xml writer wrapper structure.
       */
      AXIS2_EXTERN axiom_xml_writer_t *AXIS2_CALL
      axiom_xml_writer_create_for_memory(
          const axutil_env_t * env,
          axis2_char_t * encoding,
          int is_prefix_default,
          int compression,
          int type);
  
      /**
       * free method for axiom xml writer
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * 
       * @return 
       */
      AXIS2_EXTERN void AXIS2_CALL
      axiom_xml_writer_free(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the start element
       * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_element(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname);
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
  
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_end_start_element(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_element_with_namespace(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * namespace_uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname localname of the start element
       * @param namespace_uri namespace uri of that element
       * @param prefix prefix of that namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_element_with_namespace_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * namespace_uri,
          axis2_char_t * prefix);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_empty_element(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @param namespace_uri uri of the namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_empty_element_with_namespace(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * namespace_uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @param namespace_uri uri of the namespace
       * @param prefix prefix of the namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_empty_element_with_namespace_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * namespace_uri,
          axis2_char_t * prefix);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * 
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_end_element(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_end_document(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @param value value of the element 
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_attribute(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * value);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @param value value of the element
       * @param uri of the namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_attribute_with_namespace(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * value,
          axis2_char_t * namespace_uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param localname local name of the element
       * @param value value of the element
       * @param uri of the namespace
       * @param prefix of the namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_attribute_with_namespace_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * localname,
          axis2_char_t * value,
          axis2_char_t * namespace_uri,
          axis2_char_t * prefix);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * @param prefix prefix of the namespace
       * @param uri of the namespace
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_namespace(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * prefix,
          axis2_char_t * namespace_uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       * 
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_default_namespace(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * namespace_uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_comment(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * value);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_processing_instruction(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * target);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_processing_instruction_data(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * target,
          axis2_char_t * data);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_cdata(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * data);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_dtd(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * dtd);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_entity_ref(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * name);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_document(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_document_with_version(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * version);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_start_document_with_version_encoding(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * version,
          axis2_char_t * encoding);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_characters(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * text);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return 
       */
      AXIS2_EXTERN axis2_char_t *AXIS2_CALL
      axiom_xml_writer_get_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return prefix 
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_set_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * prefix,
          axis2_char_t * uri);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_set_default_prefix(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * uri);
  
      /**
       * sets the default prefix
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_encoded(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * text,
          int in_attr);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return 
       */
      AXIS2_EXTERN void *AXIS2_CALL
      axiom_xml_writer_get_xml(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return 
       */
      AXIS2_EXTERN unsigned int AXIS2_CALL
      axiom_xml_writer_get_xml_size(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return size of the xml
       */
      AXIS2_EXTERN int AXIS2_CALL
      axiom_xml_writer_get_type(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return type 
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_write_raw(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env,
          axis2_char_t * content);
  
      /**
       * @param writer pointer to the OM XML Writer struct
       * @param env environment struct, must not be null
       *
       * @return status of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
       */
      AXIS2_EXTERN axis2_status_t AXIS2_CALL
      axiom_xml_writer_flush(
          axiom_xml_writer_t * writer,
          const axutil_env_t * env);
  
      /** @} */
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif                          /* AXIOM_XML_WRITER_H */
  