-#ifndef _LIST_H
-#define _LIST_H
-#define LIST_H_VERSION "$Id: list.h,v NOT CHECKED IN YET $"
+#ifndef LIST_H_INCLUDED
+#define LIST_H_INCLUDED
+#define LIST_H_VERSION "$Id: list.h,v 1.5 2001/07/29 18:43:08 jongfoster Exp $"
/*********************************************************************
*
- * File : $Source: /cvsroot/ijbswa/current/list.c,v $
+ * File : $Source: /cvsroot/ijbswa/current/list.h,v $
*
* Purpose : Declares functions to handle lists.
* Functions declared include:
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Revisions :
- * $Log: list.c,v $
+ * $Log: list.h,v $
+ * Revision 1.5 2001/07/29 18:43:08 jongfoster
+ * Changing #ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to
+ * ANSI C rules.
+ *
+ * Revision 1.4 2001/06/29 13:30:37 oes
+ * - Introduced enlist_unique_header()
+ * - Removed logentry from cancelled commit
+ *
+ * Revision 1.3 2001/06/03 11:03:48 oes
+ * introduced functions for new list type "map": map(), lookup(),
+ * free_map(), and extended enlist_unique
+ *
+ * Revision 1.2 2001/06/01 18:49:17 jongfoster
+ * Replaced "list_share" with "list" - the tiny memory gain was not
+ * worth the extra complexity.
+ *
+ * Revision 1.1 2001/05/31 21:11:53 jongfoster
+ * - Moved linked list support to new "list.c" file.
+ * Structure definitions are still in project.h,
+ * function prototypes are now in "list.h".
+ * - Added support for "struct list_share", which is identical
+ * to "struct list" except it saves memory by not duplicating
+ * the strings. Obviously, this only works if there is some
+ * other way of managing the memory used by the strings.
+ * (These list_share lists are used for lists which last
+ * for only 1 request, and where all the list entries are
+ * just coming directly from entries in the actionsfile.)
+ * Note that you still need to destroy list_share lists
+ * properly to free the nodes - it's only the strings
+ * which are shared.
+ *
*
*********************************************************************/
\f
extern void enlist(struct list *h, const char *s);
-extern void destroy_list(struct list *h);
-extern char *list_to_text(struct list *h);
+extern void enlist_unique(struct list *header, const char *str, int n);
+extern void enlist_unique_header(struct list *header, const char *name, const char *value);
+extern void enlist_first(struct list *header, const char *str);
-void enlist_unique(struct list *header, const char *str);
+extern int list_remove_item(struct list *header, const char *str);
-int list_remove_item(struct list *header, const char *str);
-int list_remove_list(struct list *header, const struct list *to_remove);
+extern void list_append_list_unique(struct list *dest, const struct list *src);
+extern void list_append_list_unique(struct list *dest, const struct list *src);
+extern int list_remove_list(struct list *header, const struct list *to_remove);
-void list_duplicate(struct list *dest, const struct list *src);
-void list_append_list_unique(struct list *dest, const struct list *src);
+extern void list_duplicate(struct list *dest, const struct list *src);
+
+extern void destroy_list(struct list *h);
+extern char *list_to_text(struct list *h);
-void destroy_list_share(struct list_share *h);
-void enlist_share(struct list_share *header, const char *str);
-void enlist_unique_share(struct list_share *header, const char *str);
-int list_remove_item_share(struct list_share *header, const char *str);
-int list_remove_list_share(struct list_share *dest, const struct list *src);
-void list_duplicate_share(struct list_share *dest, const struct list *src);
-void list_append_list_unique_share(struct list_share *dest, const struct list *src);
+extern struct map *new_map(void);
+extern void free_map(struct map *list);
+extern void map(struct map* map, const char *name, int nc, const char *value, int vc);
+extern const char *lookup(const struct map *list, const char *name);
/* Revision control strings from this header and associated .c file */
extern const char list_rcs[];
} /* extern "C" */
#endif
-#endif /* ndef _LIST_H */
+#endif /* ndef LIST_H_INCLUDED */
/*
Local Variables: