00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIOM_ELEMENT_H
00018 #define AXIOM_ELEMENT_H
00019
00020 #include <axiom_namespace.h>
00021 #include <axiom_attribute.h>
00022 #include <axiom_output.h>
00023 #include <axiom_node.h>
00024 #include <axiom_children_iterator.h>
00025 #include <axiom_children_qname_iterator.h>
00026 #include <axiom_child_element_iterator.h>
00027 #include <axis2_hash.h>
00028 #include <axis2_utils.h>
00029
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034
00035 typedef struct axiom_element axiom_element_t;
00036 typedef struct axiom_element_ops axiom_element_ops_t;
00037
00049 struct axiom_element_ops
00050 {
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 axiom_namespace_t* (AXIS2_CALL *
00064 find_namespace)(axiom_element_t *om_element,
00065 const axis2_env_t *env,
00066 axiom_node_t *node,
00067 const axis2_char_t *uri,
00068 const axis2_char_t *prefix);
00078 axis2_status_t (AXIS2_CALL *
00079 declare_namespace)(axiom_element_t *om_element,
00080 const axis2_env_t *env,
00081 axiom_node_t *node,
00082 axiom_namespace_t * ns);
00093 axiom_namespace_t *(AXIS2_CALL *
00094 find_namespace_with_qname)(axiom_element_t *om_element,
00095 const axis2_env_t *env,
00096 axiom_node_t *node,
00097 axis2_qname_t *qname);
00098
00107 axis2_status_t (AXIS2_CALL *
00108 add_attribute)(axiom_element_t *om_element,
00109 const axis2_env_t *env,
00110 axiom_attribute_t *attribute,
00111 axiom_node_t *node);
00112
00121 axiom_attribute_t *(AXIS2_CALL *
00122 get_attribute) (axiom_element_t *om_element,
00123 const axis2_env_t *env,
00124 axis2_qname_t * qname);
00125
00134 axis2_char_t *(AXIS2_CALL *
00135 get_attribute_value) (axiom_element_t *om_element,
00136 const axis2_env_t *env,
00137 axis2_qname_t * qname);
00138
00145 axis2_status_t (AXIS2_CALL *
00146 free) (axiom_element_t *element,
00147 const axis2_env_t *env);
00148
00156 axis2_status_t (AXIS2_CALL *
00157 serialize_start_part)(axiom_element_t *om_element,
00158 const axis2_env_t *env,
00159 axiom_output_t * om_output,
00160 axiom_node_t *ele_node);
00161
00170 axis2_status_t (AXIS2_CALL *
00171 serialize_end_part)(axiom_element_t *om_element,
00172 const axis2_env_t *env,
00173 axiom_output_t * om_output);
00183 axiom_namespace_t* (AXIS2_CALL *
00184 find_declared_namespace)(axiom_element_t *om_element,
00185 const axis2_env_t *env,
00186 const axis2_char_t *uri,
00187 const axis2_char_t *prefix);
00188
00189
00196 axis2_char_t* (AXIS2_CALL *
00197 get_localname)(axiom_element_t *om_element,
00198 const axis2_env_t *env);
00207 axis2_status_t (AXIS2_CALL *
00208 set_localname)(axiom_element_t *om_element,
00209 const axis2_env_t *env,
00210 const axis2_char_t *localname);
00219 axiom_namespace_t *(AXIS2_CALL *
00220 get_namespace)(axiom_element_t *om_element,
00221 const axis2_env_t *env,
00222 axiom_node_t *ele_node);
00231 axis2_status_t (AXIS2_CALL *
00232 set_namespace)(axiom_element_t *om_element,
00233 const axis2_env_t *env,
00234 axiom_namespace_t *ns,
00235 axiom_node_t *node);
00243 axis2_hash_t* (AXIS2_CALL *
00244 get_all_attributes)(axiom_element_t *om_element,
00245 const axis2_env_t *env);
00253 axis2_hash_t* (AXIS2_CALL *
00254 get_namespaces)(axiom_element_t *om_element,
00255 const axis2_env_t *env);
00263 axis2_qname_t* (AXIS2_CALL *
00264 get_qname)(axiom_element_t *om_element,
00265 const axis2_env_t *env,
00266 axiom_node_t *ele_node);
00267
00272 axiom_children_iterator_t*(AXIS2_CALL *
00273 get_children)(axiom_element_t *om_element,
00274 const axis2_env_t *env,
00275 axiom_node_t *element_node);
00276
00288 axiom_children_qname_iterator_t *(AXIS2_CALL *
00289 get_children_with_qname)(axiom_element_t *om_element,
00290 const axis2_env_t *env,
00291 axis2_qname_t *element_qname,
00292 axiom_node_t* element_node);
00297 axiom_element_t* (AXIS2_CALL *
00298 get_first_child_with_qname)(axiom_element_t *om_element,
00299 const axis2_env_t *env,
00300 axis2_qname_t *element_qname,
00301 axiom_node_t* element_node,
00302 axiom_node_t **child_node);
00313 axis2_status_t (AXIS2_CALL *
00314 remove_attribute)(axiom_element_t *om_element,
00315 const axis2_env_t *env,
00316 axiom_attribute_t *om_attribute);
00322 axis2_status_t (AXIS2_CALL *
00323 set_text)(axiom_element_t *om_element,
00324 const axis2_env_t *env,
00325 const axis2_char_t *text,
00326 axiom_node_t *element_node);
00333 axis2_char_t* (AXIS2_CALL *
00334 get_text)(
00335 axiom_element_t *om_element,
00336 const axis2_env_t *env,
00337 axiom_node_t *element_node);
00338
00344 axiom_element_t* (AXIS2_CALL *
00345 get_first_element)(
00346 axiom_element_t *om_element,
00347 const axis2_env_t *env,
00348 axiom_node_t *element_node,
00349 axiom_node_t **first_element_node);
00355 axis2_char_t* (AXIS2_CALL *
00356 to_string)(
00357 axiom_element_t *om_element,
00358 const axis2_env_t *env,
00359 axiom_node_t *element_node);
00368 axiom_child_element_iterator_t* (AXIS2_CALL *
00369 get_child_elements)(
00370 axiom_element_t *om_element,
00371 const axis2_env_t *env,
00372 axiom_node_t *element_node);
00383 axis2_status_t (AXIS2_CALL *
00384 build)(axiom_element_t *om_element,
00385 const axis2_env_t *env,
00386 axiom_node_t *element_node);
00387
00394 axiom_namespace_t* (AXIS2_CALL *
00395 get_default_namespace)(
00396 axiom_element_t *om_element,
00397 const axis2_env_t *env,
00398 axiom_node_t *element_node);
00399
00407 axiom_namespace_t* (AXIS2_CALL *
00408 declare_default_namespace)(
00409 axiom_element_t *om_element,
00410 const axis2_env_t *env,
00411 axis2_char_t *uri);
00412
00422 axiom_namespace_t* (AXIS2_CALL *
00423 find_namespace_uri)(
00424 axiom_element_t *om_element,
00425 const axis2_env_t *env,
00426 axis2_char_t *prefix,
00427 axiom_node_t *element_node);
00435 axis2_status_t (AXIS2_CALL *
00436 set_namespace_with_no_find_in_current_scope)(
00437 axiom_element_t *om_element,
00438 const axis2_env_t *env,
00439 axiom_namespace_t *om_ns);
00440
00445 axis2_hash_t* (AXIS2_CALL *
00446 extract_attributes)(
00447 axiom_element_t *om_element,
00448 const axis2_env_t *env,
00449 axiom_node_t *ele_node);
00450
00451 axis2_char_t* (AXIS2_CALL*
00452 get_attribute_value_by_name)(
00453 axiom_element_t *om_ele,
00454 const axis2_env_t *env,
00455 axis2_char_t *attr_name);
00456
00457 };
00458
00459
00464 struct axiom_element
00465 {
00467 axiom_element_ops_t *ops;
00468
00469 };
00470
00482 AXIS2_EXTERN axiom_element_t * AXIS2_CALL
00483 axiom_element_create (const axis2_env_t *env,
00484 axiom_node_t *parent,
00485 const axis2_char_t *localname,
00486 axiom_namespace_t *ns,
00487 axiom_node_t **node);
00488
00499 AXIS2_EXTERN axiom_element_t * AXIS2_CALL
00500 axiom_element_create_with_qname (const axis2_env_t *env,
00501 axiom_node_t *parent,
00502 const axis2_qname_t *qname,
00503 axiom_node_t ** node);
00504
00506 #define AXIOM_ELEMENT_FIND_NAMESPACE(om_element,env,om_node, uri, prefix) \
00507 ((om_element)->ops->find_namespace (om_element, env,om_node, uri, prefix))
00508
00510 #define AXIOM_ELEMENT_DECLARE_NAMESPACE(om_element, env , om_node, ns) \
00511 ((om_element)->ops->declare_namespace (om_element, env, om_node, ns))
00512
00514 #define AXIOM_ELEMENT_FIND_NAMESPACE_WITH_QNAME (om_element, env, om_node, qname) \
00515 ((om_element)->ops->find_namespace_with_qname (om_element, environment, om_node, qname))
00516
00518 #define AXIOM_ELEMENT_ADD_ATTRIBUTE(om_element, env, attribute, element_node) \
00519 ((om_element)->ops->add_attribute(om_element , env, attribute, element_node))
00520
00522 #define AXIOM_ELEMENT_GET_ATTRIBUTE(om_element, env, qname) \
00523 ((om_element)->ops->get_attribute(om_element, env, qname))
00524
00526 #define AXIOM_ELEMENT_FREE(om_element, env) \
00527 ((om_element)->ops->free(om_element, env))
00528
00530 #define AXIOM_ELEMENT_SERIALIZE_START_PART(om_element, env, om_output, ele_node) \
00531 ((om_element)->ops->serialize_start_part(om_element, env, om_output, ele_node))
00532
00534 #define AXIOM_ELEMENT_SERIALIZE_END_PART(om_element, env, om_output) \
00535 ((om_element)->ops->serialize_end_part(om_element, env, om_output))
00536
00537 #define AXIOM_ELEMENT_GET_LOCALNAME(om_element, env)\
00538 ((om_element)->ops->get_localname(om_element,env))
00539
00540 #define AXIOM_ELEMENT_GET_NAMESPACE(om_element, env, ele_node) \
00541 ((om_element)->ops->get_namespace(om_element, env, ele_node))
00542
00543 #define AXIOM_ELEMENT_SET_LOCALNAME(om_element, env, localname) \
00544 ((om_element)->ops->set_localname(om_element, env, localname))
00545
00546 #define AXIOM_ELEMENT_SET_NAMESPACE(om_element, env, ns , node) \
00547 ((om_element)->ops->set_namespace(om_element, env, ns, node))
00548
00549 #define AXIOM_ELEMENT_FIND_DECLARED_NAMESPACE(om_element, env, uri, prefix) \
00550 ((om_element)->ops->find_declared_namespace(om_element, env, uri, prefix))
00551
00552 #define AXIOM_ELEMENT_GET_QNAME(om_element, env, ele_node) \
00553 ((om_element)->ops->get_qname(om_element, env, ele_node))
00554
00555 #define AXIOM_ELEMENT_GET_ALL_ATTRIBUTES(om_element, env) \
00556 ((om_element)->ops->get_all_attributes(om_element, env))
00557
00558 #define AXIOM_ELEMENT_GET_NAMESPACES(om_element, env) \
00559 ((om_element)->ops->get_namespaces(om_element, env))
00560
00561 #define AXIOM_ELEMENT_GET_CHILDREN(om_element, env, element_node) \
00562 ((om_element)->ops->get_children(om_element, env, element_node))
00563
00564 #define AXIOM_ELEMENT_GET_CHILDREN_WITH_QNAME(om_element, env, \
00565 element_qname, element_node) \
00566 ((om_element)->ops->get_children_with_qname(om_element,\
00567 env, element_qname, element_node))
00568
00569 #define AXIOM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(om_element, env,\
00570 element_qname, element_node , child_node) \
00571 ((om_element)->ops->get_first_child_with_qname(om_element, env, \
00572 element_qname, element_node, child_node))
00573
00574 #define AXIOM_ELEMENT_REMOVE_ATTRIBUTE(om_element, env, om_attribute) \
00575 ((om_element)->ops->remove_attribute(om_element, env, om_attribute))
00576
00577 #define AXIOM_ELEMENT_GET_FIRST_ELEMENT(om_element, env, element_node, first_node) \
00578 ((om_element)->ops->get_first_element(om_element, env, element_node, first_node))
00579
00580 #define AXIOM_ELEMENT_GET_TEXT(om_element, env, element_node) \
00581 ((om_element)->ops->get_text(om_element, env, element_node))
00582
00583 #define AXIOM_ELEMENT_SET_TEXT(om_element, env, text, element_node) \
00584 ((om_element)->ops->set_text(om_element, env, text, element_node))
00585
00586 #define AXIOM_ELEMENT_TO_STRING(om_element, env, element_node) \
00587 ((om_element)->ops->to_string(om_element, env, element_node))
00588
00589 #define AXIOM_ELEMENT_GET_CHILD_ELEMENTS(om_element, env, element_node) \
00590 ((om_element)->ops->get_child_elements(om_element, env, element_node))
00591
00592 #define AXIOM_ELEMENT_BUILD(om_element, env, element_node) \
00593 ((om_element)->ops->build(om_element, env, element_node))
00594
00595 #define AXIOM_ELEMENT_GET_DEFAULT_NAMESPACE(om_element, env, element_node) \
00596 ((om_element)->ops->get_default_namespace(om_element, env, element_node))
00597
00598 #define AXIOM_ELEMENT_DECLARE_DEFAULT_NAMESPACE(om_element, env, uri) \
00599 ((om_element)->ops->declare_default_namespace(om_element, env, uri))
00600
00601 #define AXIOM_ELEMENT_FIND_NAMESPACE_URI(om_element, env, prefix, element_node) \
00602 ((om_element)->ops->find_namespace_uri(om_element, env, prefix, element_node))
00603
00604 #define AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE(om_element, env, qname) \
00605 ((om_element)->ops->get_attribute_value(om_element, env, qname))
00606
00607 #define AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME(om_element, env, attr_name) \
00608 ((om_element)->ops->get_attribute_value_by_name(om_element, env, attr_name))
00609
00610
00611 #define AXIOM_ELEMENT_SET_NAMESPACE_WITH_NO_FIND_IN_CURRENT_SCOPE(om_element, env, om_ns) \
00612 ((om_element)->ops->set_namespace_with_no_find_in_current_scope(om_element, env, om_ns))
00613
00614 #define AXIOM_ELEMENT_EXTRACT_ATTRIBUTES(om_element, env, ele_node) \
00615 ((om_element)->ops->extract_attributes(om_element, env, ele_node))
00616
00617
00618
00622 #ifdef __cplusplus
00623 }
00624 #endif
00625
00626 #endif