Author: jbevain
Date: 2007-09-04 14:59:31 -0400 (Tue, 04 Sep 2007)
New Revision: 85315
Modified:
trunk/moon/src/ChangeLog
trunk/moon/src/list.cpp
trunk/moon/src/list.h
Log:
2007-09-04 Jb Evain <[EMAIL PROTECTED]>
* list.h, list.cpp: add a List::ForEach method.
Modified: trunk/moon/src/ChangeLog
===================================================================
--- trunk/moon/src/ChangeLog 2007-09-04 18:48:11 UTC (rev 85314)
+++ trunk/moon/src/ChangeLog 2007-09-04 18:59:31 UTC (rev 85315)
@@ -1,3 +1,7 @@
+2007-09-04 Jb Evain <[EMAIL PROTECTED]>
+
+ * list.h, list.cpp: add a List::ForEach method.
+
2007-09-04 Jeffrey Stedfast <[EMAIL PROTECTED]>
* brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
Modified: trunk/moon/src/list.cpp
===================================================================
--- trunk/moon/src/list.cpp 2007-09-04 18:48:11 UTC (rev 85314)
+++ trunk/moon/src/list.cpp 2007-09-04 18:59:31 UTC (rev 85315)
@@ -189,7 +189,7 @@
}
List::Node *
-List::Find (NodeFinder find, void *data)
+List::Find (NodeAction find, void *data)
{
List::Node *n = head;
@@ -208,7 +208,7 @@
void
-List::Remove (NodeFinder find, void *data)
+List::Remove (NodeAction find, void *data)
{
List::Node *n;
@@ -273,7 +273,7 @@
int
-List::IndexOf (NodeFinder find, void *data)
+List::IndexOf (NodeAction find, void *data)
{
List::Node *n = head;
int i = 0;
@@ -292,8 +292,23 @@
return -1;
}
+void
+List::ForEach (NodeAction action, void *data)
+{
+ List::Node *node = head;
+ bool move = true;
+ if (!action)
+ return;
+ while (node && move) {
+ if (!action (node, data))
+ move = false;
+ else
+ node = node->next;
+ }
+}
+
//#define TEST_PROGRAM
#ifdef TEST_PROGRAM
Modified: trunk/moon/src/list.h
===================================================================
--- trunk/moon/src/list.h 2007-09-04 18:48:11 UTC (rev 85314)
+++ trunk/moon/src/list.h 2007-09-04 18:59:31 UTC (rev 85315)
@@ -25,7 +25,7 @@
virtual ~Node () { }
};
- typedef bool (* NodeFinder) (Node *node, void *data);
+ typedef bool (* NodeAction) (Node *node, void *data);
protected:
Node *head;
@@ -50,14 +50,16 @@
Node *Replace (Node *node, int index);
- Node *Find (NodeFinder find, void *data);
- void Remove (NodeFinder find, void *data);
+ Node *Find (NodeAction find, void *data);
+ void Remove (NodeAction find, void *data);
void Unlink (Node *node);
Node *Index (int index);
int IndexOf (Node *node);
- int IndexOf (NodeFinder find, void *data);
+ int IndexOf (NodeAction find, void *data);
+
+ void ForEach (NodeAction action, void *data);
};
#endif /* __LIST_H__ */
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches