4 // Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23 #include "special/stringlist.h"
25 void string_list_init(string_list_type* pstring_list)
27 pstring_list->num_items = 0;
28 pstring_list->active_item = -1;
29 pstring_list->item = NULL;
32 char* string_list_active(string_list_type* pstring_list)
34 if(pstring_list == NULL)
37 if(pstring_list->active_item != -1)
38 return pstring_list->item[pstring_list->active_item];
43 void string_list_add_item(string_list_type* pstring_list,const char* str)
46 pnew_string = (char*) malloc(sizeof(char)*(strlen(str)+1));
47 strcpy(pnew_string,str);
48 ++pstring_list->num_items;
49 pstring_list->item = (char**) realloc(pstring_list->item,sizeof(char**)*pstring_list->num_items);
50 pstring_list->item[pstring_list->num_items-1] = pnew_string;
51 if(pstring_list->active_item == -1)
52 pstring_list->active_item = 0;
55 void string_list_copy(string_list_type* pstring_list, string_list_type pstring_list_orig)
58 string_list_free(pstring_list);
59 for(i = 0; i < pstring_list_orig.num_items; ++i)
60 string_list_add_item(pstring_list,pstring_list_orig.item[i]);
63 int string_list_find(string_list_type* pstring_list,const char* str)
66 for(i = 0; i < pstring_list->num_items; ++i)
68 if(strcmp(pstring_list->item[i],str) == 0)
76 void string_list_sort(string_list_type* pstring_list)
80 for(j = 0; j < pstring_list->num_items; ++j)
81 for(i = 0; i < pstring_list->num_items-1; ++i)
84 y = strcmp(pstring_list->item[i],pstring_list->item[i+1]);
96 char_pointer = pstring_list->item[i];
97 pstring_list->item[i] = pstring_list->item[i+1];
98 pstring_list->item[i+1] = char_pointer;
106 void string_list_free(string_list_type* pstring_list)
108 if(pstring_list != NULL)
111 for(i=0; i < pstring_list->num_items; ++i)
112 free(pstring_list->item[i]);
113 free(pstring_list->item);
114 pstring_list->item = NULL;
115 pstring_list->num_items = 0;
116 pstring_list->active_item = -1;