| /* |
| * Copyright 2004,2005 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef AXIS2_OM_STAX_BUILDER_H |
| #define AXIS2_OM_STAX_BUILDER_H |
| |
| /** |
| * @file axis2_om_stax_builder.h |
| * @brief om model stax builder |
| */ |
| |
| #include <axis2_om_node.h> |
| #include <axis2_pull_parser.h> |
| #include <axis2_om_document.h> |
| #include <axis2_env.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| |
| struct axis2_om_stax_builder; |
| struct axis2_om_stax_builder_ops; |
| |
| /** |
| * @defgroup axis2_om_stax_builder OM Stax Builder |
| * @ingroup axis2_om |
| * @{ |
| */ |
| |
| /** |
| * @brief OM stax builder operations struct |
| * Encapsulator struct for operations of axis2_om_stax_builder |
| */ |
| AXIS2_DECLARE_DATA typedef struct axis2_om_stax_builder_ops |
| { |
| /** |
| * Builds the next node from stream. Moves pull parser forward and reacts to events. |
| * @param environment Environment. MUST NOT be NULL. |
| * @param builder pointer to stax builder struct to be used |
| * @return a pointer to the next node, or NULL if there are no more nodes. |
| * On erros sets the error and returns NULL. |
| */ |
| axis2_om_node_t*(AXIS2_CALL *next) (struct axis2_om_stax_builder *builder, |
| axis2_env_t **env); |
| |
| /** |
| * Discards the element that is being built currently. |
| * @param environment Environment. MUST NOT be NULL, . |
| * @param builder pointer to stax builder struct to be used |
| * @return satus of the operation. AXIS2_SUCCESS on success else AXIS2_FAILURE. |
| */ |
| axis2_status_t (AXIS2_CALL *discard_current_element) |
| (struct axis2_om_stax_builder *builder, |
| axis2_env_t **env); |
| /** |
| * Free operation |
| * @param builder pointer to builder struct |
| * @param env environment, MUST NOT be NULL |
| * @return status of the operation AXIS2_SUCCESS on success, |
| * AXIS2_FAILURE on error. |
| */ |
| |
| axis2_status_t (AXIS2_CALL *free)(struct axis2_om_stax_builder *builder, |
| axis2_env_t **env); |
| |
| /** get the document associated with the builder |
| * @param builder axis2_om_stax_builder |
| * @param env environment |
| * @return pointer to document struct associated with builder |
| * NULL if there is no document associated with the builder, |
| * NULL if an error occured. |
| */ |
| axis2_om_document_t* (AXIS2_CALL *get_document) |
| (struct axis2_om_stax_builder *builder, |
| axis2_env_t **env); |
| /** |
| * set the document associated with the builder |
| * @param builder pointer to builder struct |
| * @param env environment , MUST NOT be NULL. |
| * @param document pointer to document struct that needs to be associated |
| * with builder |
| * @return status of the operation. AXIS2_SUCCESS on success and AXIS2_FAILURE |
| * on error. |
| */ |
| |
| axis2_status_t (AXIS2_CALL *set_document)(struct axis2_om_stax_builder *builder, |
| axis2_env_t **env, |
| axis2_om_document_t *document); |
| |
| } axis2_om_stax_builder_ops_t; |
| |
| /** |
| * \brief OM stax builder struct |
| * Bulds OM document using a pull parser interface |
| */ |
| typedef struct axis2_om_stax_builder |
| { |
| /** operations struct */ |
| axis2_om_stax_builder_ops_t *ops; |
| |
| }axis2_om_stax_builder_t; |
| |
| /** |
| * creates an stax builder |
| * @param environment Environment. MUST NOT be NULL, . |
| * @return a pointer to the newly created builder struct. |
| */ |
| AXIS2_DECLARE(axis2_om_stax_builder_t *) |
| axis2_om_stax_builder_create(axis2_env_t **env, |
| axis2_pull_parser_t *parser); |
| |
| |
| /** builds next node */ |
| #define AXIS2_OM_STAX_BUILDER_NEXT(builder,env) \ |
| ((builder)->ops->next(builder, env)) |
| /** discards current node */ |
| #define AXIS2_OM_STAX_BUILDER_DISCARD(builder,env) \ |
| ((builder)->ops->discard_current_element(builder, env)) |
| /** free operation of the builder */ |
| #define AXIS2_OM_STAX_BUILDER_FREE(builder,env) \ |
| ((builder)->ops->free(builder,env)) |
| /** associate a document with a builder */ |
| #define AXIS2_OM_STAX_BUILDER_SET_DOCUMENT(builder,env,document) \ |
| ((builder)->ops->set_document(builder,env,document)) |
| /** get the document associated with the builder */ |
| #define AXIS2_OM_STAX_BUILDER_GET_DOCUMENT(builder,env) \ |
| ((builder)->ops->get_document(builder,env)) |
| |
| /** @} */ |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| #endif /* AXIS2_OM_STAX_BUILDER_H */ |