blob: 4785a55f606651833219066c4b975be8cf766e2b [file] [log] [blame]
/*
* 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>
#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
*
*/
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);
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);
AXIS2_EXTERN void AXIS2_CALL
axiom_xml_writer_free(axiom_xml_writer_t *writer,
const axutil_env_t *env);
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);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_xml_writer_end_start_element(axiom_xml_writer_t *writer,
const axutil_env_t *env);
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);
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);
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);
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);
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);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_xml_writer_write_end_element(axiom_xml_writer_t *writer,
const axutil_env_t *env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_xml_writer_write_end_document(axiom_xml_writer_t *writer,
const axutil_env_t *env);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_xml_writer_write_start_document(axiom_xml_writer_t *writer,
const axutil_env_t *env);
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);
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);
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);
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);
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);
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);
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);
AXIS2_EXTERN void* AXIS2_CALL
axiom_xml_writer_get_xml(axiom_xml_writer_t *writer,
const axutil_env_t *env);
AXIS2_EXTERN unsigned int AXIS2_CALL
axiom_xml_writer_get_xml_size(axiom_xml_writer_t *writer,
const axutil_env_t *env);
AXIS2_EXTERN int AXIS2_CALL
axiom_xml_writer_get_type(axiom_xml_writer_t *writer,
const axutil_env_t *env);
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);
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 */