/* Josh Pieper, (C) 2000 */

/* This file is distruted under the GPL, see file COPYING for details. */

#ifndef GNUT_LIST_H
#define GNUT_LIST_H

typedef struct _Gnut_List Gnut_List;

struct _Gnut_List {
  void * data;
  Gnut_List * next;
};

#ifdef __cplusplus
extern "C" {
#endif

  void free_gl(Gnut_List **x, int bugnum);
  Gnut_List * gnut_list_unlink(Gnut_List *list, void *data, Gnut_List **unlinked);
  Gnut_List * gnut_list_prepend(Gnut_List *list,void *data);
  Gnut_List * gnut_list_append(Gnut_List *list,void *data);
  Gnut_List * gnut_list_next(Gnut_List *list);
  Gnut_List * gnut_list_remove(Gnut_List *list, void *data);
  int gnut_list_foreach(Gnut_List *, int (*a)(void *, void *), void *);
  Gnut_List * gnut_list_fre(Gnut_List *);
  int gnut_list_size(Gnut_List *);
  int gnut_list_seek(Gnut_List *list, void *dat);

#ifdef __cplusplus
}
#endif

#endif
