00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_OM_ELEMENT_H
00018 #define AXIS2_OM_ELEMENT_H
00019
00020 #include <axis2_om_namespace.h>
00021 #include <axis2_om_attribute.h>
00022 #include <axis2_om_output.h>
00023 #include <axis2_om_node.h>
00024 #include <axis2_hash.h>
00025 #include <axis2.h>
00026
00027 #ifdef __cplusplus
00028 extern "C"
00029 {
00030 #endif
00031
00032 struct axis2_om_element;
00033 struct axis2_om_element_ops;
00034
00046 AXIS2_DECLARE_DATA typedef struct axis2_om_element_ops
00047 {
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 axis2_om_namespace_t* (AXIS2_CALL *find_namespace)
00061 (struct axis2_om_element *om_element,
00062 axis2_env_t **env,
00063 axis2_om_node_t *node,
00064 const axis2_char_t *uri,
00065 const axis2_char_t *prefix);
00075 axis2_status_t (AXIS2_CALL *declare_namespace)
00076 (struct axis2_om_element *om_element,
00077 axis2_env_t **env,
00078 axis2_om_node_t *node,
00079 axis2_om_namespace_t * ns);
00090 axis2_om_namespace_t *(AXIS2_CALL *find_namespace_with_qname)
00091 (struct axis2_om_element *om_element,
00092 axis2_env_t **env,
00093 axis2_om_node_t *node,
00094 axis2_qname_t *qname);
00095
00103 axis2_status_t (AXIS2_CALL *add_attribute)(struct axis2_om_element *om_element,
00104 axis2_env_t **env,
00105 axis2_om_attribute_t *attribute);
00106
00115 axis2_om_attribute_t *(AXIS2_CALL *get_attribute) (struct axis2_om_element *om_element,
00116 axis2_env_t **env,
00117 axis2_qname_t * qname);
00118
00125 axis2_status_t (AXIS2_CALL *free) (struct axis2_om_element *element,
00126 axis2_env_t **env);
00127
00135 axis2_status_t (AXIS2_CALL *serialize_start_part)
00136 (struct axis2_om_element *om_element,
00137 axis2_env_t **env,
00138 axis2_om_output_t * om_output);
00139
00148 axis2_status_t (AXIS2_CALL *serialize_end_part)
00149 (struct axis2_om_element *om_element,
00150 axis2_env_t **env,
00151 axis2_om_output_t * om_output);
00152
00153 axis2_om_namespace_t* (AXIS2_CALL *find_declared_namespace)
00154 (struct axis2_om_element *om_element,
00155 axis2_env_t **env,
00156 const axis2_char_t *uri,
00157 const axis2_char_t *prefix);
00158
00159
00166 axis2_char_t* (AXIS2_CALL *get_localname)(struct axis2_om_element *om_element,
00167 axis2_env_t **env);
00176 axis2_status_t (AXIS2_CALL *set_localname)(struct axis2_om_element *om_element,
00177 axis2_env_t **env,
00178 const axis2_char_t *localname);
00187 axis2_om_namespace_t *(AXIS2_CALL *get_namespace)
00188 (struct axis2_om_element *om_element,
00189 axis2_env_t **env);
00198 axis2_status_t (AXIS2_CALL *set_namespace)(struct axis2_om_element *om_element,
00199 axis2_env_t **env,
00200 axis2_om_namespace_t *ns,
00201 axis2_om_node_t *node);
00202 } axis2_om_element_ops_t;
00203
00204
00209 typedef struct axis2_om_element
00210 {
00212 axis2_om_element_ops_t *ops;
00213
00214 } axis2_om_element_t;
00215
00227 AXIS2_DECLARE(axis2_om_element_t *)
00228 axis2_om_element_create (axis2_env_t **env,
00229 axis2_om_node_t *parent,
00230 const axis2_char_t *localname,
00231 axis2_om_namespace_t *ns,
00232 axis2_om_node_t **node);
00233
00244 AXIS2_DECLARE(axis2_om_element_t *)
00245 axis2_om_element_create_with_qname (axis2_env_t **env,
00246 axis2_om_node_t *parent,
00247 axis2_qname_t *qname,
00248 axis2_om_node_t ** node);
00249
00251 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE(om_element,env,om_node, uri, prefix) \
00252 ((om_element)->ops->find_namespace (om_element, env,om_node, uri, prefix))
00253
00255 #define AXIS2_OM_ELEMENT_DECLARE_NAMESPACE(om_element, env , om_node, ns) \
00256 ((om_element)->ops->declare_namespace (om_element, env, om_node, ns))
00257
00259 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE_WITH_QNAME (om_element, env, om_node, qname) \
00260 ((om_element)->ops->find_namespace_with_qname (om_element, environment, node, qname))
00261
00263 #define AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(om_element, env, attribute) \
00264 ((om_element)->ops->add_attribute(om_element , env, attribute))
00265
00267 #define AXIS2_OM_ELEMENT_GET_ATTRIBUTE(om_element, env, qname) \
00268 ((om_element)->ops->get_attribute(om_element, env, qname))
00269
00271 #define AXIS2_OM_ELEMENT_FREE(om_element, env) \
00272 ((om_element)->ops->free(om_element, env))
00273
00275 #define AXIS2_OM_ELEMENT_SERIALIZE_START_PART(om_element, env, om_output) \
00276 ((om_element)->ops->serialize_start_part(om_element, env, om_output))
00277
00279 #define AXIS2_OM_ELEMENT_SERIALIZE_END_PART(om_element, env, om_output) \
00280 ((om_element)->ops->serialize_end_part(om_element, env, om_output))
00282 #define AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env)\
00283 ((om_element)->ops->get_localname(om_element,env))
00285 #define AXIS2_OM_ELEMENT_GET_NAMESPACE(om_element, env) \
00286 ((om_element)->ops->get_namespace(om_element, env))
00288 #define AXIS2_OM_ELEMENT_SET_LOCALNAME(om_element, env, localname) \
00289 ((om_element)->ops->set_localname(om_element, env, localname))
00291 #define AXIS2_OM_ELEMENT_SET_NAMESPACE(om_element, env, ns , node) \
00292 ((om_element)->ops->set_namespace(om_element, env, ns, node))
00293
00294 #define AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE(om_element, env, uri, prefix) \
00295 ((om_element)->ops->find_declared_namespace(om_element, env, uri, prefix))
00296
00300 #ifdef __cplusplus
00301 }
00302 #endif
00303
00304 #endif