Author: miguel
Date: 2007-06-19 13:31:23 -0400 (Tue, 19 Jun 2007)
New Revision: 80207

Modified:
   trunk/moon/src/ChangeLog
   trunk/moon/src/runtime.cpp
   trunk/moon/src/runtime.h
Log:
i2007-06-19  Miguel de Icaza  <[EMAIL PROTECTED]>

        * runtime.cpp: Implement collection iterators.




Modified: trunk/moon/src/ChangeLog
===================================================================
--- trunk/moon/src/ChangeLog    2007-06-19 17:28:49 UTC (rev 80206)
+++ trunk/moon/src/ChangeLog    2007-06-19 17:31:23 UTC (rev 80207)
@@ -1,3 +1,7 @@
+2007-06-19  Miguel de Icaza  <[EMAIL PROTECTED]>
+
+       * runtime.cpp: Implement collection iterators.
+
 2007-06-19  Chris Toshok  <[EMAIL PROTECTED]>
 
        * xaml.cpp (timespan_from_str): don't walk off the end of the

Modified: trunk/moon/src/runtime.cpp
===================================================================
--- trunk/moon/src/runtime.cpp  2007-06-19 17:28:49 UTC (rev 80206)
+++ trunk/moon/src/runtime.cpp  2007-06-19 17:31:23 UTC (rev 80207)
@@ -163,6 +163,48 @@
        collection->Remove (data);
 }
 
+Type::Kind
+collection_get_element_type (Collection *collection)
+{
+       return collection->GetElementType ();
+}
+
+CollectionIterator *
+collection_get_iterator (Collection *collection)
+{
+       return new CollectionIterator (collection);
+}
+
+bool
+collection_iterator_move_next (CollectionIterator *iterator)
+{
+       if (!iterator->current)
+               return FALSE;
+       iterator->current = iterator->current->next;
+       return TRUE;
+}
+
+void 
+collection_iterator_reset (CollectionIterator *iterator)
+{
+       iterator->current = iterator->collection->list;
+}
+
+DependencyObject *
+collection_iterator_get_current (CollectionIterator *iterator)
+{
+       if (iterator->current == NULL)
+               return NULL;
+
+       return (DependencyObject *) iterator->current->data;
+}
+
+void
+collection_iterator_destroy (CollectionIterator *iterator)
+{
+       delete iterator;
+}
+
 static char**
 split_str (const char* s, int *count)
 {

Modified: trunk/moon/src/runtime.h
===================================================================
--- trunk/moon/src/runtime.h    2007-06-19 17:28:49 UTC (rev 80206)
+++ trunk/moon/src/runtime.h    2007-06-19 17:31:23 UTC (rev 80207)
@@ -417,9 +417,28 @@
        virtual void Remove (DependencyObject *data);
 };
 
+class CollectionIterator {
+ public:
+       CollectionIterator (Collection *c){
+               collection = c;
+               current = c->list;
+       }
+       
+       Collection *collection;
+       GList *current;
+
+};
+
 void collection_add    (Collection *collection, DependencyObject *data);
 void collection_remove (Collection *collection, DependencyObject *data);
+Type::Kind collection_get_element_type (Collection *collection);
+CollectionIterator *collection_get_iterator (Collection *collection);
 
+bool   collection_iterator_move_next   (CollectionIterator *iterator);
+void   collection_iterator_reset       (CollectionIterator *iterator);
+void   collection_iterator_destroy     (CollectionIterator *iterator);
+DependencyObject *collection_iterator_get_current (CollectionIterator 
*iterator);
+
 class VisualCollection : public Collection {
  public:
        VisualCollection () {}

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to