Blame synfig-osx/launcher/x-list.h

Carlos Lopez a09598
/* x-list.h -- simple list type
Carlos Lopez a09598
   $Id: x-list.h,v 1.10 2003/07/18 00:52:19 jharper Exp $
Carlos Lopez a09598
Carlos Lopez a09598
   Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
Carlos Lopez a09598
Carlos Lopez a09598
   Permission is hereby granted, free of charge, to any person
Carlos Lopez a09598
   obtaining a copy of this software and associated documentation files
Carlos Lopez a09598
   (the "Software"), to deal in the Software without restriction,
Carlos Lopez a09598
   including without limitation the rights to use, copy, modify, merge,
Carlos Lopez a09598
   publish, distribute, sublicense, and/or sell copies of the Software,
Carlos Lopez a09598
   and to permit persons to whom the Software is furnished to do so,
Carlos Lopez a09598
   subject to the following conditions:
Carlos Lopez a09598
Carlos Lopez a09598
   The above copyright notice and this permission notice shall be
Carlos Lopez a09598
   included in all copies or substantial portions of the Software.
Carlos Lopez a09598
Carlos Lopez a09598
   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Carlos Lopez a09598
   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Carlos Lopez a09598
   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Carlos Lopez a09598
   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
Carlos Lopez a09598
   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
Carlos Lopez a09598
   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Carlos Lopez a09598
   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
Carlos Lopez a09598
   DEALINGS IN THE SOFTWARE.
Carlos Lopez a09598
Carlos Lopez a09598
   Except as contained in this notice, the name(s) of the above
Carlos Lopez a09598
   copyright holders shall not be used in advertising or otherwise to
Carlos Lopez a09598
   promote the sale, use or other dealings in this Software without
Carlos Lopez a09598
   prior written authorization. */
Carlos Lopez a09598
Carlos Lopez a09598
#ifndef X_LIST_H
Carlos Lopez a09598
#define X_LIST_H 1
Carlos Lopez a09598
Carlos Lopez a09598
/* This is just a cons. */
Carlos Lopez a09598
Carlos Lopez a09598
typedef struct x_list_struct x_list;
Carlos Lopez a09598
Carlos Lopez a09598
struct x_list_struct {
Carlos Lopez a09598
    void *data;
Carlos Lopez a09598
    x_list *next;
Carlos Lopez a09598
};
Carlos Lopez a09598
Carlos Lopez a09598
#ifndef X_PFX
Carlos Lopez a09598
# define X_PFX(x) x_ ## x
Carlos Lopez a09598
#endif
Carlos Lopez a09598
Carlos Lopez a09598
#ifndef X_EXTERN
Carlos Lopez a09598
# define X_EXTERN __private_extern__
Carlos Lopez a09598
#endif
Carlos Lopez a09598
Carlos Lopez a09598
X_EXTERN void X_PFX (list_free_1) (x_list *node);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_prepend) (x_list *lst, void *data);
Carlos Lopez a09598
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_append) (x_list *lst, void *data);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_remove) (x_list *lst, void *data);
Carlos Lopez a09598
X_EXTERN void X_PFX (list_free) (x_list *lst);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_pop) (x_list *lst, void **data_ret);
Carlos Lopez a09598
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_copy) (x_list *lst);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_reverse) (x_list *lst);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_find) (x_list *lst, void *data);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_nth) (x_list *lst, int n);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_filter) (x_list *src,
Carlos Lopez a09598
				      int (*pred) (void *item, void *data),
Carlos Lopez a09598
				      void *data);
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_map) (x_list *src,
Carlos Lopez a09598
				   void *(*fun) (void *item, void *data),
Carlos Lopez a09598
				   void *data);
Carlos Lopez a09598
Carlos Lopez a09598
X_EXTERN unsigned int X_PFX (list_length) (x_list *lst);
Carlos Lopez a09598
X_EXTERN void X_PFX (list_foreach) (x_list *lst, void (*fun)
Carlos Lopez a09598
				    (void *data, void *user_data),
Carlos Lopez a09598
				    void *user_data);
Carlos Lopez a09598
Carlos Lopez a09598
X_EXTERN x_list *X_PFX (list_sort) (x_list *lst, int (*less) (const void *,
Carlos Lopez a09598
							    const void *));
Carlos Lopez a09598
Carlos Lopez a09598
#endif /* X_LIST_H */