From 0425aadc78680e53000fd0108b540d6eca048516 Mon Sep 17 00:00:00 2001 From: gmcdonald Date: Sat, 13 Feb 2010 01:32:03 +0000 Subject: Moving axis svn, part of TLP move INFRA-2441 git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@909681 13f79535-47bb-0310-9956-ffa450edef68 --- guththila/include/guththila.h | 353 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 guththila/include/guththila.h (limited to 'guththila/include/guththila.h') diff --git a/guththila/include/guththila.h b/guththila/include/guththila.h new file mode 100644 index 0000000..663883d --- /dev/null +++ b/guththila/include/guththila.h @@ -0,0 +1,353 @@ + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 GUTHTHILA_H +#define GUTHTHILA_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* +All the functions in this library does not check weather the given arguments are NULL. +It is the responsblity of the user to check weather the arguments contain NULL values. +*/ +EXTERN_C_START() + +enum guththila_status +{ + S_0 = 0, + S_1, + S_2, + S_3 +}; + +enum guththila_UTF16_endianess +{ + None = 1, + LE, + BE +}; + +typedef enum guththila_type +{ + type_file_name = 0, + type_memory_buffer, + type_reader, + type_io +} guththila_type_t; + +enum guththila_event_types +{ + GUTHTHILA_START_DOCUMENT =0, + GUTHTHILA_END_ELEMENT, + GUTHTHILA_CHARACTER, + GUTHTHILA_ENTITY_REFERANCE, + GUTHTHILA_COMMENT, + GUTHTHILA_SPACE, + GUTHTHILA_START_ELEMENT, + GUTHTHILA_EMPTY_ELEMENT +}; + +typedef struct guththila_s +{ + guththila_tok_list_t tokens; /* Token cache */ + + guththila_buffer_t buffer; /* Holding incoming xml string */ + + guththila_reader_t *reader; /* Reading the data */ + + guththila_token_t *prefix; /* Prefix of the xml element */ + + guththila_token_t *name; /* xml element local name */ + + guththila_token_t *value; /* text of a xml element */ + + guththila_stack_t elem; /* elements are put in a stack */ + + guththila_stack_t attrib; /* Attributes are put in a stack */ + + guththila_stack_t namesp; /* namespaces are put in a stack */ + + int status; + + int guththila_event; /* Current event */ + + size_t next; /* Keep track of the position in the xml string */ + + int last_start; /* Keep track of the starting position of the last token */ + + guththila_token_t *temp_prefix; /* Temporery location for prefixes */ + + guththila_token_t *temp_name; /* Temporery location for names */ + + guththila_token_t *temp_tok; /* We don't know this until we close it */ +} guththila_t; + +/* + * An element will contain one of these things if it has namespaces + * */ +typedef struct guththila_elem_namesp_s +{ + guththila_namespace_t *namesp; /* Array of namespaces */ + int no; /*Number of namespace in the element */ + int size; /* Allocated size */ +} guththila_elem_namesp_t; + +/* + * Element. + */ +typedef struct guththila_element_s +{ + guththila_token_t *name; /* local name */ + + guththila_token_t *prefix; /* prefix */ + + int is_namesp; /* Positive if a namespace is present */ +} guththila_element_t; + +/* Initialize the parser */ +GUTHTHILA_EXPORT int GUTHTHILA_CALL +guththila_init(guththila_t * m, void *reader, + const axutil_env_t * env); + +/* Uninitialize the parser */ +GUTHTHILA_EXPORT int GUTHTHILA_CALL +guththila_un_init(guththila_t * m, const axutil_env_t * env); + +/* Still not used */ +typedef void(GUTHTHILA_CALL * guththila_error_func)(void *arg, + const guththila_char_t *msg, + guththila_error_level level, + void *locator); + +/* + * Parse the xml and return an event. If something went wrong it will return -1. + * The events are of the type guththila_event_types. According to the event + * user can get the required information using the appriate functions. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT int GUTHTHILA_CALL +guththila_next(guththila_t * g, const axutil_env_t * env); + +/* + * Return the number of attributes in the current element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT int GUTHTHILA_CALL +guththila_get_attribute_count(guththila_t * g, const axutil_env_t * env); + +/* + * Return the attribute name. + * @param g pointer to a guththila_t structure + * @param att pointer to a attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t * GUTHTHILA_CALL +guththila_get_attribute_name(guththila_t * g, guththila_attr_t * att, + const axutil_env_t * env); + +/* + * Return the attribute value. + * @param g pointer to a guththila_t structure + * @param att pointer to a attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t * GUTHTHILA_CALL +guththila_get_attribute_value(guththila_t * g, + guththila_attr_t * att, + const axutil_env_t * env); + +/* + * Return the attribute prefix. + * @param g pointer to a guththila_t structure + * @param att pointer to a attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_attribute_prefix(guththila_t * g, + guththila_attr_t * att, + const axutil_env_t * env); + +/* + * Return the attribute + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_attr_t *GUTHTHILA_CALL +guththila_get_attribute(guththila_t * g, const axutil_env_t * env); + +/* + * Return the name of the attribute by the attribute bumber. + * First attribute will be 1. + * @param g pointer to a guththila_t structure + * @param index position of the attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_attribute_name_by_number(guththila_t * g, int index, + const axutil_env_t *env); + +/* + * Return the attribute value by number. + * First attribute will be 1. + * @param g pointer to a guththila_t structure + * @param index position of the attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_attribute_value_by_number(guththila_t * g, int index, + const axutil_env_t *env); + +/* + * Return the prefix of the attribute. + * First attribute will be 1. + * @param g pointer to a guththila_t structure + * @param index position of the attribute + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_attribute_prefix_by_number(guththila_t * g, int index, + const axutil_env_t *env); + +/* + * Return the name of the element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_name(guththila_t * g, const axutil_env_t * env); + +/* + * Return the prefix of the element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_prefix(guththila_t * g, const axutil_env_t * env); + +/* + * Return the text of the element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_value(guththila_t * g, const axutil_env_t * env); + +/* + * Return the namespace of the element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_namespace_t *GUTHTHILA_CALL +guththila_get_namespace(guththila_t * g, const axutil_env_t * env); + +/* + * Return the number of namespaces in the element. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT int GUTHTHILA_CALL +guththila_get_namespace_count(guththila_t * g, const axutil_env_t * env); + +/* + * Return the namespace uri of the given namespace. + * @param g pointer to a guththila_t structure + * @param ns pointer to a namespace + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t * GUTHTHILA_CALL +guththila_get_namespace_uri(guththila_t * g, guththila_namespace_t * ns, + const axutil_env_t * env); + +/* + * Return the prefix of the namespace. + * @param g pointer to a guththila_t structure + * @param ns pointer to a namespace + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_namespace_prefix(guththila_t * p, guththila_namespace_t * ns, + const axutil_env_t * env); + +/* + * Return the prefix of the namespace at the given position. + * First namespace will have the value 1. + * @param g pointer to a guththila_t structure + * @param index position of the namespace + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_namespace_prefix_by_number(guththila_t * g, int index, + const axutil_env_t *env); + +/* + * Get the uri of the namespace at the given position. + * First namespace will have the value 1. + * @param g pointer to a guththila_t structure + * @param index position of the namespace + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_namespace_uri_by_number(guththila_t * g, int index, + const axutil_env_t *env); + +/* + * Get the attribute namespace of the attribute at the given position. + * @param g pointer to a guththila_t structure + * @param index position of the namespace + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_attribute_namespace_by_number(guththila_t *g, int index, + const axutil_env_t *env); + +/* + * Get the encoding. at the moment we don't support UNICODE + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_encoding(guththila_t * p, const axutil_env_t * env); + +/* + * To do. Implement a proper error handling mechanism. + * @param g pointer to a guththila_t structure + * @param env the environment + */ +GUTHTHILA_EXPORT void GUTHTHILA_CALL +guththila_set_error_handler(guththila_t * m, guththila_error_func, + const axutil_env_t * env); + +GUTHTHILA_EXPORT guththila_char_t *GUTHTHILA_CALL +guththila_get_current_buffer( + guththila_t * m, + const axutil_env_t * env); + +EXTERN_C_END() +#endif + -- cgit v1.1-32-gdbae