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