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
00159 axis2_char_t* (AXIS2_CALL *get_localname)(struct axis2_om_element *om_element,
00160 axis2_env_t **env);
00169 axis2_status_t (AXIS2_CALL *set_localname)(struct axis2_om_element *om_element,
00170 axis2_env_t **env,
00171 const axis2_char_t *localname);
00180 axis2_om_namespace_t *(AXIS2_CALL *get_namespace)
00181 (struct axis2_om_element *om_element,
00182 axis2_env_t **env);
00191 axis2_status_t (AXIS2_CALL *set_namespace)(struct axis2_om_element *om_element,
00192 axis2_env_t **env,
00193 axis2_om_namespace_t *ns,
00194 axis2_om_node_t *node);
00195 } axis2_om_element_ops_t;
00196
00197
00202 typedef struct axis2_om_element
00203 {
00205 axis2_om_element_ops_t *ops;
00206
00207 } axis2_om_element_t;
00208
00220 AXIS2_DECLARE(axis2_om_element_t *)
00221 axis2_om_element_create (axis2_env_t **env,
00222 axis2_om_node_t *parent,
00223 const axis2_char_t *localname,
00224 axis2_om_namespace_t *ns,
00225 axis2_om_node_t **node);
00226
00237 AXIS2_DECLARE(axis2_om_element_t *)
00238 axis2_om_element_create_with_qname (axis2_env_t **env,
00239 axis2_om_node_t *parent,
00240 axis2_qname_t *qname,
00241 axis2_om_node_t ** node);
00242
00244 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE(om_element,env,om_node, uri, prefix) \
00245 ((om_element)->ops->find_namespace (om_element, env,om_node, uri, prefix))
00246
00248 #define AXIS2_OM_ELEMENT_DECLARE_NAMESPACE(om_element, env , om_node, ns) \
00249 ((om_element)->ops->declare_namespace (om_element, env, om_node, ns))
00250
00252 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE_WITH_QNAME (om_element, env, om_node, qname) \
00253 ((om_element)->ops->find_namespace_with_qname (om_element, environment, node, qname))
00254
00256 #define AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(om_element, env, attribute) \
00257 ((om_element)->ops->add_attribute(om_element , env, attribute))
00258
00260 #define AXIS2_OM_ELEMENT_GET_ATTRIBUTE(om_element, env, qname) \
00261 ((om_element)->ops->get_attribute(om_element, env, qname))
00262
00264 #define AXIS2_OM_ELEMENT_FREE(om_element, env) \
00265 ((om_element)->ops->free(om_element, env))
00266
00268 #define AXIS2_OM_ELEMENT_SERIALIZE_START_PART(om_element, env, om_output) \
00269 ((om_element)->ops->serialize_start_part(om_element, env, om_output))
00270
00272 #define AXIS2_OM_ELEMENT_SERIALIZE_END_PART(om_element, env, om_output) \
00273 ((om_element)->ops->serialize_end_part(om_element, env, om_output))
00275 #define AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env)\
00276 ((om_element)->ops->get_localname(om_element,env))
00278 #define AXIS2_OM_ELEMENT_GET_NAMESPACE(om_element, env) \
00279 ((om_element)->ops->get_namespace(om_element, env))
00281 #define AXIS2_OM_ELEMENT_SET_LOCALNAME(om_element, env, localname) \
00282 ((om_element)->ops->set_localname(om_element, env))
00284 #define AXIS2_OM_ELEMENT_SET_NAMESPACE(om_element, env, ns , node) \
00285 ((om_element)->ops->set_namespace(om_element, env, ns, node))
00286
00290 #ifdef __cplusplus
00291 }
00292 #endif
00293
00294 #endif