00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_H
00018 #define AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_H
00019
00025 #include <axiom_node.h>
00026 #include <axiom_text.h>
00027 #include <axis2_qname.h>
00028
00029
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034
00035 typedef struct axiom_children_with_specific_attribute_iterator_ops
00036 axiom_children_with_specific_attribute_iterator_ops_t;
00037
00038 typedef struct axiom_children_with_specific_attribute_iterator
00039 axiom_children_with_specific_attribute_iterator_t;
00040
00051 struct axiom_children_with_specific_attribute_iterator_ops
00052 {
00056 axis2_status_t (AXIS2_CALL *
00057 free_fn)(axiom_children_with_specific_attribute_iterator_t *iterator,
00058 const axis2_env_t *env);
00059
00067 axis2_status_t (AXIS2_CALL *
00068 remove)(axiom_children_with_specific_attribute_iterator_t *iterator,
00069 const axis2_env_t *env);
00070
00077 axis2_bool_t (AXIS2_CALL *
00078 has_next)(axiom_children_with_specific_attribute_iterator_t *iterator,
00079 const axis2_env_t *env);
00080
00085 axiom_node_t* (AXIS2_CALL *
00086 next)(axiom_children_with_specific_attribute_iterator_t *iterator,
00087 const axis2_env_t *env);
00088
00089
00090
00091 };
00092
00093
00094 struct axiom_children_with_specific_attribute_iterator
00095 {
00096 axiom_children_with_specific_attribute_iterator_ops_t *ops;
00097 };
00098
00105 AXIS2_EXTERN axiom_children_with_specific_attribute_iterator_t * AXIS2_CALL
00106 axiom_children_with_specific_attribute_iterator_create(
00107 const axis2_env_t *env,
00108 axiom_node_t *current_child,
00109 axis2_qname_t *attr_qname,
00110 axis2_char_t *attr_value,
00111 axis2_bool_t detach);
00112
00113
00114
00115 #define AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_FREE(iterator, env) \
00116 ((iterator)->ops->free_fn(iterator, env))
00117
00118 #define AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_REMOVE(iterator, env) \
00119 ((iterator)->ops->remove(iterator, env))
00120
00121 #define AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_HAS_NEXT(iterator, env) \
00122 ((iterator)->ops->has_next(iterator, env))
00123
00124 #define AXIOM_CHILDREN_WITH_SPECIFIC_ATTRIBUTE_ITERATOR_NEXT(iterator, env) \
00125 ((iterator)->ops->next(iterator, env))
00126
00127
00130 #ifdef __cplusplus
00131 }
00132 #endif
00133
00134
00135 #endif