diff options
Diffstat (limited to 'common/utils.h')
| -rw-r--r-- | common/utils.h | 65 | 
1 files changed, 65 insertions, 0 deletions
| diff --git a/common/utils.h b/common/utils.h new file mode 100644 index 0000000..ad4ac9d --- /dev/null +++ b/common/utils.h @@ -0,0 +1,65 @@ +/* +	usbmuxd - iPhone/iPod Touch USB multiplex server daemon + +Copyright (C) 2009	Hector Martin "marcan" <hector@marcansoft.com> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 or version 3. + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + +*/ + +#ifndef __UTILS_H__ +#define __UTILS_H__ + +#include <poll.h> + +enum fdowner { +	FD_LISTEN, +	FD_CLIENT, +	FD_USB +}; + +struct fdlist { +	int count; +	int capacity; +	enum fdowner *owners; +	struct pollfd *fds; +}; + +void fdlist_create(struct fdlist *list); +void fdlist_add(struct fdlist *list, enum fdowner owner, int fd, short events); +void fdlist_free(struct fdlist *list); + +struct collection { +	void **list; +	int capacity; +}; + +void collection_init(struct collection *col); +void collection_add(struct collection *col, void *element); +void collection_remove(struct collection *col, void *element); +int collection_count(struct collection *col); +void collection_free(struct collection *col); + +#define FOREACH(var, col) \ +	do { \ +		int _iter; \ +		for(_iter=0; _iter<(col)->capacity; _iter++) { \ +			if(!(col)->list[_iter]) continue; \ +			var = (col)->list[_iter]; + +#define ENDFOREACH \ +		} \ +	} while(0); + +#endif | 
