fixed rgb values of pixmap struct
[my-code/api.git] / list / list.c
index 895cf26..64a104a 100644 (file)
@@ -28,6 +28,8 @@ int list_shutdown(t_list *list) {
 
 int list_next(t_list *list) {
 
+  if(list->current->next==NULL) return L_NO_NEXT_ELEMENT;
+
   list->current=list->current->next;
 
   return L_SUCCESS;
@@ -58,6 +60,11 @@ int list_del_element(t_list *list,t_list_element *element) {
   return L_SUCCESS;
 }
 
+int list_del_current(t_list *list) {
+
+  return(list_del_element(list,list->current));
+}
+
 int list_destroy(t_list *list) {
 
   if(list->start==NULL) {
@@ -76,12 +83,17 @@ int list_search_data(t_list *list,void *data,int first_bytes) {
 
   list_reset(list);
 
-  while(list->current!=NULL) {
-    if(first_bytes<=list->current->data_len)
-      if(!(memcmp(list->current->data,data,first_bytes))) return L_SUCCESS;
-    list_next(list);
+  if(list->start==NULL) {
+    dprintf(list->outfd,"[list] empty list\n");
+    return L_EMPTY_LIST;
   }
 
+  do {
+    if(list->current!=NULL)
+      if(first_bytes<=list->current->data_len)
+        if(!(memcmp(list->current->data,data,first_bytes))) return L_SUCCESS;
+  } while(list_next(list)!=L_NO_NEXT_ELEMENT);
+
   return L_NO_SUCH_ELEMENT;
 }
 
@@ -111,6 +123,8 @@ int list_add_element(t_list *list,void *data,int data_len) {
       memcpy(list->current->next->data,data,data_len);
       list->current->next->data_len=data_len;
 
+      list->current=list->current->next;
+
       dprintf(list->outfd,"[list] element added\n");
 
       return L_SUCCESS;
@@ -133,6 +147,8 @@ int list_add_element(t_list *list,void *data,int data_len) {
   list->start->next=NULL;
   list->start->prev=NULL;
 
+  list->current=list->start;
+
   dprintf(list->outfd,"[list] added initial element\n");
 
   return L_SUCCESS;
@@ -146,10 +162,8 @@ int list_count(t_list *list) {
 
   list_reset(list);
 
-  while(list->current!=NULL) {
-    list_next(list);
-    ++count;
-  }
+  if(list->current!=NULL) count++;
+  if(count) while(list_next(list)!=L_NO_NEXT_ELEMENT) count++;
 
   return count;
 }