diff options
| -rw-r--r-- | libcnary/Makefile.am | 4 | ||||
| -rw-r--r-- | libcnary/include/iterator.h | 49 | ||||
| -rw-r--r-- | libcnary/include/node_iterator.h | 55 | ||||
| -rw-r--r-- | libcnary/iterator.c | 61 | ||||
| -rw-r--r-- | libcnary/node.c | 6 | ||||
| -rw-r--r-- | libcnary/node_iterator.c | 80 | ||||
| -rw-r--r-- | src/bplist.c | 5 | ||||
| -rw-r--r-- | src/plist.c | 11 | ||||
| -rw-r--r-- | src/xplist.c | 5 | 
9 files changed, 7 insertions, 269 deletions
| diff --git a/libcnary/Makefile.am b/libcnary/Makefile.am index bba9ada..5a26fb5 100644 --- a/libcnary/Makefile.am +++ b/libcnary/Makefile.am @@ -8,11 +8,7 @@ libcnary_la_SOURCES = \  		       node.c \  		       list.c \  		       node_list.c \ -		       iterator.c \ -		       node_iterator.c \  		       include/node.h \  		       include/list.h \  		       include/node_list.h \ -		       include/iterator.h \ -		       include/node_iterator.h \  		       include/object.h diff --git a/libcnary/include/iterator.h b/libcnary/include/iterator.h deleted file mode 100644 index a33c4ff..0000000 --- a/libcnary/include/iterator.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * iterator.h - * - *  Created on: Mar 8, 2011 - *      Author: posixninja - * - * Copyright (c) 2011 Joshua Hill. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - */ - -#ifndef ITERATOR_H_ -#define ITERATOR_H_ - -struct list_t; -struct object_t; - -typedef struct iterator_t { -	struct object_t*(*next)(struct iterator_t* iterator); -	int(*bind)(struct iterator_t* iterator, struct list_t* list); - -	unsigned int count; -	unsigned int position; - -	struct list_t* list; -	struct object_t* end; -	struct object_t* begin; -	struct object_t* value; -} iterator_t; - -void iterator_destroy(struct iterator_t* iterator); -struct iterator_t* iterator_create(struct list_t* list); - -struct object_t* iterator_next(struct iterator_t* iterator); -int iterator_bind(struct iterator_t* iterator, struct list_t* list); - -#endif /* ITERATOR_H_ */ diff --git a/libcnary/include/node_iterator.h b/libcnary/include/node_iterator.h deleted file mode 100644 index d3bce3a..0000000 --- a/libcnary/include/node_iterator.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * node_iterator.h - * - *  Created on: Mar 8, 2011 - *      Author: posixninja - * - * Copyright (c) 2011 Joshua Hill. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - */ - -#ifndef NODE_ITERATOR_H_ -#define NODE_ITERATOR_H_ - -#include "iterator.h" -#include "node_list.h" - -// This class implements the abstract iterator class -typedef struct node_iterator_t { -	// Super class -	struct iterator_t super; - -	// Local members -	struct node_t*(*next)(struct node_iterator_t* iterator); -	int(*bind)(struct node_iterator_t* iterator, struct node_list_t* list); - -	unsigned int count; -	unsigned int position; - -	struct node_list_t* list; -	struct node_t* end; -	struct node_t* begin; -	struct node_t* value; - -} node_iterator_t; - -void node_iterator_destroy(node_iterator_t* iterator); -node_iterator_t* node_iterator_create(node_list_t* list); - -struct node_t* node_iterator_next(struct node_iterator_t* iterator); -int node_iterator_bind(struct node_iterator_t* iterator, struct node_list_t* list); - -#endif /* NODE_ITERATOR_H_ */ diff --git a/libcnary/iterator.c b/libcnary/iterator.c deleted file mode 100644 index 492a8ae..0000000 --- a/libcnary/iterator.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * iterator.c - * - *  Created on: Mar 8, 2011 - *      Author: posixninja - * - * Copyright (c) 2011 Joshua Hill. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "list.h" -#include "object.h" -#include "iterator.h" - -void iterator_destroy(iterator_t* iterator) { -	if(iterator) { -		free(iterator); -	} -} - -iterator_t* iterator_create(list_t* list) { -	iterator_t* iterator = (iterator_t*) malloc(sizeof(iterator_t)); -	if(iterator == NULL) { -		return NULL; -	} -	memset(iterator, '\0', sizeof(iterator_t)); - -	if(list != NULL) { -		// Create and bind to list - -	} else { -		// Empty Iterator -	} - -	return iterator; -} - -object_t* iterator_next(iterator_t* iterator) { -	return NULL; -} - -int iterator_bind(iterator_t* iterator, list_t* list) { -	return -1; -} diff --git a/libcnary/node.c b/libcnary/node.c index 4b550dd..c24ca7a 100644 --- a/libcnary/node.c +++ b/libcnary/node.c @@ -26,7 +26,6 @@  #include "node.h"  #include "node_list.h" -#include "node_iterator.h"  void node_destroy(node_t* node) {  	if(!node) return; @@ -114,7 +113,6 @@ int node_insert(node_t* parent, unsigned int node_index, node_t* child)  static void _node_debug(node_t* node, unsigned int depth) {  	unsigned int i = 0;  	node_t* current = NULL; -	node_iterator_t* iter = NULL;  	for(i = 0; i < depth; i++) {  		printf("\t");  	} @@ -128,11 +126,9 @@ static void _node_debug(node_t* node, unsigned int depth) {  		if(node->parent) {  			printf("NODE\n");  		} -		iter = node_iterator_create(node->children); -		while ((current = iter->next(iter))) { +		for (current = node_first_child(node); current; current = node_next_sibling(current)) {  			_node_debug(current, depth+1);  		} -		node_iterator_destroy(iter);  	}  } diff --git a/libcnary/node_iterator.c b/libcnary/node_iterator.c deleted file mode 100644 index e629b73..0000000 --- a/libcnary/node_iterator.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * node_iterator.c - * - *  Created on: Mar 8, 2011 - *      Author: posixninja - * - * Copyright (c) 2011 Joshua Hill. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "node.h" -#include "node_list.h" -#include "node_iterator.h" - -void node_iterator_destroy(node_iterator_t* iterator) { -	if(iterator) { -		free(iterator); -	} -} - -node_iterator_t* node_iterator_create(node_list_t* list) { -	node_iterator_t* iterator = (node_iterator_t*) malloc(sizeof(node_iterator_t)); -	if(iterator == NULL) { -		return NULL; -	} -	memset(iterator, '\0', sizeof(node_iterator_t)); - -	iterator->count = 0; -	iterator->position = 0; - -	iterator->end = NULL; -	iterator->begin = NULL; -	iterator->value = NULL; - -	iterator->list = NULL; -	iterator->next = node_iterator_next; -	iterator->bind = node_iterator_bind; - - -	if(list != NULL) { -		iterator->bind(iterator, list); -	} - -	return iterator; -} - -node_t* node_iterator_next(node_iterator_t* iterator) { -	node_t* node = iterator->value; -	if (node) { -		iterator->value = node->next; -	} -	iterator->position++; -	return node; -} - -int node_iterator_bind(node_iterator_t* iterator, node_list_t* list) { -	iterator->position = 0; -	iterator->end = list->end; -	iterator->count = list->count; -	iterator->begin = list->begin; -	iterator->value = list->begin; -	return 0; -} diff --git a/src/bplist.c b/src/bplist.c index 69f3dca..679a5e5 100644 --- a/src/bplist.c +++ b/src/bplist.c @@ -39,7 +39,6 @@  #include "ptrarray.h"  #include <node.h> -#include <node_iterator.h>  /* Magic marker and size. */  #define BPLIST_MAGIC            ((uint8_t*)"bplist") @@ -938,12 +937,10 @@ static void serialize_plist(node_t* node, void* data)      ptr_array_add(ser->objects, node);      //now recurse on children -    node_iterator_t *ni = node_iterator_create(node->children);      node_t *ch; -    while ((ch = node_iterator_next(ni))) { +    for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) {          serialize_plist(ch, data);      } -    node_iterator_destroy(ni);      return;  } diff --git a/src/plist.c b/src/plist.c index f62e6be..cd22ca6 100644 --- a/src/plist.c +++ b/src/plist.c @@ -36,7 +36,6 @@  #endif  #include <node.h> -#include <node_iterator.h>  #include <hashtable.h>  extern void plist_xml_init(void); @@ -209,12 +208,12 @@ static int plist_free_node(node_t* node)      plist_free_data(data);      node->data = NULL; -    node_iterator_t *ni = node_iterator_create(node->children);      node_t *ch; -    while ((ch = node_iterator_next(ni))) { +    for (ch = node_first_child(node); ch; ) { +        node_t *next = node_next_sibling(ch);          plist_free_node(ch); +        ch = next;      } -    node_iterator_destroy(ni);      node_destroy(node); @@ -366,12 +365,10 @@ static void plist_copy_node(node_t *node, void *parent_node_ptr)          *(plist_t*)parent_node_ptr = newnode;      } -    node_iterator_t *ni = node_iterator_create(node->children);      node_t *ch; -    while ((ch = node_iterator_next(ni))) { +    for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) {          plist_copy_node(ch, &newnode);      } -    node_iterator_destroy(ni);  }  PLIST_API plist_t plist_copy(plist_t node) diff --git a/src/xplist.c b/src/xplist.c index 6e64427..29b1284 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -40,7 +40,6 @@  #include <node.h>  #include <node_list.h> -#include <node_iterator.h>  #include "plist.h"  #include "base64.h" @@ -356,12 +355,10 @@ static void node_to_xml(node_t* node, bytearray_t **outbuf, uint32_t depth)          if (node_data->type == PLIST_DICT) {              assert((node->children->count % 2) == 0);          } -        node_iterator_t *ni = node_iterator_create(node->children);          node_t *ch; -        while ((ch = node_iterator_next(ni))) { +        for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) {              node_to_xml(ch, outbuf, depth+1);          } -        node_iterator_destroy(ni);      }      /* fix indent for structured types */ | 
