diff options
Diffstat (limited to 'util/include/axutil_qname.h')
-rw-r--r-- | util/include/axutil_qname.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/util/include/axutil_qname.h b/util/include/axutil_qname.h new file mode 100644 index 0000000..da78461 --- /dev/null +++ b/util/include/axutil_qname.h @@ -0,0 +1,142 @@ + +/* +* 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 AXUTIL_QNAME_H +#define AXUTIL_QNAME_H + +/** + * @file axutil_qname.h + * @brief represents a qualified name + */ + +#include <axutil_utils_defines.h> +#include <axutil_env.h> + +#include <axutil_string.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + + /** + * @defgroup axutil_qname qname + * @ingroup axis2_util + * @{ + */ + + typedef struct axutil_qname axutil_qname_t; + + /** + * creates a qname struct + * returns a pointer to a qname struct + * @localpart mandatory + * @prefix mandatory + * @ns_uri optional + * The prefix. Must not be null. Use "" (empty string) to indicate that no + * namespace URI is present or the namespace URI is not relevant + * if null is passed for prefix and uri , "'(empty string ) will be assinged to + * those fields + * @return a pointer to newly created qname struct + */ + + AXIS2_EXTERN axutil_qname_t *AXIS2_CALL + axutil_qname_create( + const axutil_env_t * env, + const axis2_char_t * localpart, + const axis2_char_t * namespace_uri, + const axis2_char_t * prefix); + + /** + * returns a newly created qname using a string genarated from + * axutil_qname_to_string method + * freeing the returned qname is users responsibility + */ + + AXIS2_EXTERN axutil_qname_t *AXIS2_CALL + axutil_qname_create_from_string( + const axutil_env_t * env, + const axis2_char_t * string); + + /** + * Free a qname struct + * @return Status code + */ + AXIS2_EXTERN void AXIS2_CALL + axutil_qname_free( + struct axutil_qname *qname, + const axutil_env_t * env); + + /** + * Compare two qnames + * prefix is ignored when comparing + * If ns_uri and localpart of qname1 and qname2 is equal returns true + * @return true if qname1 equals qname2, false otherwise + */ + + AXIS2_EXTERN axis2_bool_t AXIS2_CALL + axutil_qname_equals( + const struct axutil_qname *qname, + const axutil_env_t * env, + const struct axutil_qname *qname1); + + /** + * clones a given qname + * @param qname , qname struct instance to be cloned + * @env environment , double pointer to environment + * @returns the newly cloned qname struct instance + */ + + AXIS2_EXTERN struct axutil_qname *AXIS2_CALL + axutil_qname_clone( + struct axutil_qname *qname, + const axutil_env_t * env); + + AXIS2_EXTERN axis2_char_t *AXIS2_CALL + axutil_qname_get_uri( + const struct axutil_qname *qname, + const axutil_env_t * env); + + AXIS2_EXTERN axis2_char_t *AXIS2_CALL + axutil_qname_get_prefix( + const struct axutil_qname *qname, + const axutil_env_t * env); + + AXIS2_EXTERN axis2_char_t *AXIS2_CALL + axutil_qname_get_localpart( + const struct axutil_qname *qname, + const axutil_env_t * env); + + /** + * returns a unique string created by concatanting namespace uri + * and localpart . + * The string is of the form localpart|url + * The returned char* is freed when qname free function is called. + */ + AXIS2_EXTERN axis2_char_t *AXIS2_CALL + axutil_qname_to_string( + struct axutil_qname *qname, + const axutil_env_t * env); + + /** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* AXIS2_QNAME_H */ |