3 * (C) Copyright Apr 20 1997, Edmond J. Breen.
5 * This code may be copied for personal, non-profit use only.
16 /* STRING TABLE ROUTINES
18 char * stab_PopLastString(stab_t *stab)
23 p = stab->strs[stab->n];
25 stab->strs = xrealloc(stab->strs, sizeof(*stab->strs) * (stab->n));
34 int EiC_stab_FindString(stab_t *stab, char *s)
37 char **strs = stab->strs;
39 for(i=0;i<stab->n;++i,++strs)
40 if(strcmp(*strs,s) == 0)
45 int EiC_stab_RemoveString(stab_t *stab, char *s)
47 int i = EiC_stab_FindString(stab,s);
51 memcpy(&stab->strs[i],
53 (stab->n - i - 1) * sizeof(char*));
56 stab->strs = xrealloc(stab->strs,
57 sizeof(char*) * stab->n);
67 char * EiC_stab_SaveString(stab_t *stab, char *s)
69 char *EiC_strsave(char*);
71 if((i=EiC_stab_FindString(stab,s)) < 0) {
73 stab->strs = xmalloc(sizeof(*stab->strs));
75 stab->strs = xrealloc(stab->strs, sizeof(*stab->strs) * (stab->n+1));
77 stab->strs[i] = EiC_strsave(s);
84 size_t EiC_stab_NextEntryNum(stab_t *stab)
89 void EiC_stab_CleanUp(stab_t *stab, size_t bot)
92 xfree(stab_PopLastString(stab));
95 void EiC_stab_Mark(stab_t *stab, char mark)
99 xmark(stab->strs,mark);
100 for(i=0;i<stab->n;++i)
101 xmark(stab->strs[i],mark);
105 void EiC_stab_ShowStrings(stab_t *stab)
108 for(i=0;i<stab->n;++i)
109 printf("%s\n",stab->strs[i]);
111 /*END STRING TABLE ROUTINES*/