/* lines.h - Don Yang (uguu.org) 12/27/05 */ #ifndef LINES_H__ #define LINES_H__ #include typedef struct { size_t size, capacity; /*@only@*/char **list; } StringList; /* Return list element */ #define StringList_get(s, index) ((s)->list[(index)]) /* Return list size */ #define StringList_size(s) ((s)->size) /* Create a string list at least as large as specified capacity */ /*@only@*/StringList *StringList_create(size_t capacity); /* Read from file and create a list of strings */ /*@only@*/StringList *StringList_from_file(FILE *infile); /* Free string list */ void StringList_destroy(/*@only@*//*@notnull@*/StringList *s) /*@releases s@*/; /* Make copy of string and append to list. Returns pointer to newly added string. */ /*@dependent@*/char *StringList_append(StringList *s, /*@observer@*/char *str); /* Append allocated string to list, string becomes owned by list. Returns str. */ /*@dependent@*/char *StringList_append_alloc(StringList *s, /*@only@*/char *str); /* Sort list */ void StringList_sort(StringList *s); /* Remove duplicates in sorted list */ void StringList_uniq(StringList *s); #endif