You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/08/17 10:00:37 UTC

svn commit: r432178 - in /webservices/axis2/trunk/c/axiom: include/axiom_children_iterator.h src/om/om_children_iterator.c

Author: nandika
Date: Thu Aug 17 01:00:32 2006
New Revision: 432178

URL: http://svn.apache.org/viewvc?rev=432178&view=rev
Log:
patch applied, thanks to dimuthu

Modified:
    webservices/axis2/trunk/c/axiom/include/axiom_children_iterator.h
    webservices/axis2/trunk/c/axiom/src/om/om_children_iterator.c

Modified: webservices/axis2/trunk/c/axiom/include/axiom_children_iterator.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/include/axiom_children_iterator.h?rev=432178&r1=432177&r2=432178&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/include/axiom_children_iterator.h (original)
+++ webservices/axis2/trunk/c/axiom/include/axiom_children_iterator.h Thu Aug 17 01:00:32 2006
@@ -81,6 +81,16 @@
         axiom_node_t* (AXIS2_CALL *
       next)(axiom_children_iterator_t *iterator,
               const axis2_env_t *env);
+
+        /**
+         * Resets the Iterator. This moves the cursor back to the initial.
+         * iterator chidren_iterator to be reset.
+         * @param env Environment. MUST NOT be NULL.
+         * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE.
+         */
+        axis2_status_t (AXIS2_CALL *
+        reset)(axiom_children_iterator_t *iterator,
+                          const axis2_env_t *env);
     };
     
     
@@ -113,6 +123,8 @@
 #define AXIOM_CHILDREN_ITERATOR_NEXT(iterator, env) \
         ((iterator)->ops->next(iterator, env))        
               
+#define AXIOM_CHILDREN_ITERATOR_RESET(iterator, env) \
+        ((iterator)->ops->reset(iterator, env))        
  /** @} */
 
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/axiom/src/om/om_children_iterator.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/om/om_children_iterator.c?rev=432178&r1=432177&r2=432178&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_children_iterator.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_children_iterator.c Thu Aug 17 01:00:32 2006
@@ -34,11 +34,16 @@
 axiom_children_iterator_next(axiom_children_iterator_t *iterator,
                                 const axis2_env_t *env);  
                                 
+axis2_status_t AXIS2_CALL
+axiom_chidren_iterator_reset(axiom_children_iterator_t *iterator,
+                                        const axis2_env_t *env);
+
 /*************** end function prototypes **********************************/                                
 
 typedef struct axiom_children_iterator_impl_t
 {
     axiom_children_iterator_t iterator;
+    axiom_node_t *first_child;
     axiom_node_t *current_child;
     axiom_node_t *last_child;
     axis2_bool_t next_called;
@@ -73,6 +78,7 @@
     
     iterator_impl->current_child = NULL;
     iterator_impl->last_child    = NULL;
+    iterator_impl->first_child    = NULL;
     
     iterator_impl->next_called = AXIS2_FALSE;
     iterator_impl->remove_called = AXIS2_FALSE;
@@ -89,11 +95,13 @@
         return NULL;
     }
 
+    iterator_impl->first_child = current_child;
     iterator_impl->current_child = current_child;
     iterator_impl->iterator.ops->free_fn = axiom_children_iterator_free;
     iterator_impl->iterator.ops->remove = axiom_children_iterator_remove;
     iterator_impl->iterator.ops->has_next = axiom_children_iterator_has_next;
     iterator_impl->iterator.ops->next = axiom_children_iterator_next;
+    iterator_impl->iterator.ops->reset = axiom_chidren_iterator_reset;
     return &(iterator_impl->iterator);
 }  
 
@@ -172,4 +180,16 @@
         return iterator_impl->last_child;                                            
     }
     return NULL;
+}
+
+axis2_status_t AXIS2_CALL
+axiom_chidren_iterator_reset(axiom_children_iterator_t *iterator,
+                                        const axis2_env_t *env)
+{
+    axiom_children_iterator_impl_t *iterator_impl = NULL;
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    iterator_impl = AXIS2_INTF_TO_IMPL(iterator);
+
+    iterator_impl->current_child = iterator_impl->first_child;
+    return AXIS2_SUCCESS;
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org