Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
e16-ecore_list.c
Log Message:
Speed up list iterators.
===================================================================
RCS file: /cvs/e/e16/e/src/e16-ecore_list.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e16-ecore_list.c 25 Jul 2007 20:02:57 -0000 1.10
+++ e16-ecore_list.c 22 Mar 2008 16:45:06 -0000 1.11
@@ -720,7 +720,7 @@
static void *
_ecore_list_first_goto(Ecore_List * list)
{
- if (!list || !list->first)
+ if (!list->first)
return NULL;
list->current = list->first;
@@ -871,14 +871,16 @@
_ecore_list_for_each(Ecore_List * list, Ecore_For_Each function,
void *user_data)
{
- void *value;
+ Ecore_List_Node *node, *next;
- if (!list || !function)
+ if (!function)
return FALSE;
- _ecore_list_first_goto(list);
- while ((value = _ecore_list_next(list)) != NULL)
- function(value, user_data);
+ for (node = list->first; node; node = next)
+ {
+ next = node->next;
+ function(node->data, user_data);
+ }
return TRUE;
}
@@ -904,15 +906,17 @@
_ecore_list_find(Ecore_List * list, Ecore_Compare_Cb function,
const void *user_data)
{
- void *value;
+ Ecore_List_Node *node, *next;
- if (!list || !function)
+ if (!function)
return NULL;
- _ecore_list_first_goto(list);
- while ((value = _ecore_list_next(list)) != NULL)
- if (!function(value, user_data))
- return value;
+ for (node = list->first; node; node = next)
+ {
+ next = node->next;
+ if (!function(node->data, user_data))
+ return node->data;
+ }
return NULL;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs