blob: a11735070dd771d636c6b87ac55585fda619aeb7 [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 AXIS2_OM_NAMESPACE_H
#define AXIS2_OM_NAMESPACE_H
/**
* @file axis2_om_namespace.h
* @brief defines axis2_om_namespace data structure,
* used for representing XML namespaces in OM
*/
#include <axis2_defines.h>
#include <axis2_env.h>
#include <axis2_om_output.h>
#ifdef __cplusplus
extern "C"
{
#endif
struct axis2_om_namespace;
struct axis2_om_namespace_ops;
/**
* @defgroup axis2_om_namespace OM Namespace
* @ingroup axis2_om
* @{
*/
/**
* \brief OM Namespace operations struct
* Encapsulator struct for operations of axis2_om_namespace
*/
AXIS2_DECLARE_DATA typedef struct axis2_om_namespace_ops
{
/**
* Frees given OM namespcae
* @param om_namespace namespace to be freed.
* @param env Environment. MUST NOT be NULL.
* @return satus of the operation. AXIS2_SUCCESS on success else AXIS2_FAILURE.
*/
axis2_status_t (AXIS2_CALL *free) (struct axis2_om_namespace *om_namespace,
axis2_env_t **env);
/**
* Compares two namepsaces
* @param om_namespace first namespase to be compared
* @param env Environment. MUST NOT be NULL.
* @param om_namespace1 second namespace to be compared
* @return AXIS2_TRUE if the two namespaces are equal,AXIS2_FALSE otherwise
*/
axis2_bool_t (AXIS2_CALL *equals)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env,
struct axis2_om_namespace *om_namespace1);
/**
* Serializes given namespace
* @param om_namespace namespace to be serialized.
* @param env Environment. MUST NOT be NULL.
* @param om_output OM output handler to be used in serializing
* @return satus of the operation. AXIS2_SUCCESS on success else AXIS2_FAILURE.
*/
axis2_status_t (AXIS2_CALL *serialize)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env,
axis2_om_output_t * om_output);
/**
*@param om_namespace pointer to om_namespace struct
*@param env environment , MUST NOT be NULL.
*@returns namespace uri , NULL on error
*/
axis2_char_t* (AXIS2_CALL *get_uri)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env);
/**
*@param om_namespace pointer to om namespace struct
*@param env environment, MUST NOT be NULL
*@return prefix , NULL on error
*/
axis2_char_t* (AXIS2_CALL *get_prefix)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env);
/**
*@param om_namespace pointer to om namespace struct
*@param env environment, MUST NOT be NULL.
*@param uri namespace uri to be set
*@returns status of the operation AXIS2_SUCCESS on success, AXIS2_FAILURE on error.
*/
axis2_status_t (AXIS2_CALL *set_uri)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env,
const axis2_char_t *uri);
/**
*@param om_namespace pointer to om_namespace struct
*@param env environment struct
*@param prefix prefix to be set
*@returns status code of the operation AXIS2_SUCCESS on success,
* AXIS2_FAILURE on error.
*/
axis2_status_t (AXIS2_CALL *set_prefix)(struct axis2_om_namespace *om_namespace,
axis2_env_t **env,
const axis2_char_t *prefix);
} axis2_om_namespace_ops_t;
/**
* \brief OM namespace struct
* Handles the XML namespace in OM
*/
typedef struct axis2_om_namespace
{
/** OM namespace related operations */
axis2_om_namespace_ops_t *ops;
} axis2_om_namespace_t;
/**
* Creates a namespace struct
* @param uri namespace URI
* @param prefix namespace prefix
* @return a pointer to newly created namespace struct
*/
AXIS2_DECLARE(axis2_om_namespace_t *)
axis2_om_namespace_create (axis2_env_t **env,
const axis2_char_t * uri,
const axis2_char_t *prefix);
/** frees given namespace */
#define AXIS2_OM_NAMESPACE_FREE(om_namespace,env) \
((om_namespace)->ops->free(om_namespace, env))
/** compares the given two namespaces for equality */
#define AXIS2_OM_NAMESPACE_EQUALS(om_namespace, env, om_namespace1) \
((om_namespace)->ops->equals(om_namespace, env, om_namespace1))
/** serializes given namespace */
#define AXIS2_OM_NAMESPACE_SERIALIZE(om_namespace,env, om_output) \
((om_namespace)->ops->serialize(om_namespace, env,om_output))
/** get prefix */
#define AXIS2_OM_NAMESPACE_GET_PREFIX(om_namespace, env) \
((om_namespace)->ops->get_prefix(om_namespace, env))
/** get namespace uri */
#define AXIS2_OM_NAMESPACE_GET_URI(om_namespace, env) \
((om_namespace)->ops->get_uri(om_namespace, env))
/** set uri */
#define AXIS2_OM_NAMESPACE_SET_URI(om_namespace, env, uri) \
((om_namespace)->ops->set_uri(om_namespace, env, uri))
/** set prefix */
#define AXIS2_OM_NAMESPACE_SET_PREFIX(om_namespace, env, prefix) \
((om_namespace)->ops->set_prefix(om_namesapce, env, prefix))
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_OM_NAMESPACE */