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