xref: /haiku/src/add-ons/media/media-add-ons/dvb/StringList.h (revision 83b1a68c52ba3e0e8796282759f694b7fdddf06d)
1 /*
2  * Copyright (c) 2004-2007 Marcus Overhagen <marcus@overhagen.de>
3  *
4  * Permission is hereby granted, free of charge, to any person
5  * obtaining a copy of this software and associated documentation
6  * files (the "Software"), to deal in the Software without restriction,
7  * including without limitation the rights to use, copy, modify,
8  * merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is
10  * furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be
13  * included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22  * OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
25 #ifndef __STRING_LIST_H
26 #define __STRING_LIST_H
27 
28 #include <List.h>
29 #include <stdio.h>
30 #include <stdlib.h>
31 #include <string.h>
32 
33 class StringList
34 {
35 public:
36 			StringList();
37 			~StringList();
38 
39 			// AddItem makes a copy of the data
40 			void AddItem(const char *string);
41 
42 			// either the String or NULL
43 			const char *ItemAt(int index) const;
44 
45 			void MakeEmpty();
46 
47 private:
48 	BList	list;
49 };
50 
51 
52 inline
53 StringList::StringList()
54  :	list()
55 {
56 }
57 
58 
59 inline
60 StringList::~StringList()
61 {
62 	MakeEmpty();
63 }
64 
65 
66 inline void
67 StringList::AddItem(const char *string)
68 {
69 	list.AddItem(strdup(string));
70 }
71 
72 
73 inline const char *
74 StringList::ItemAt(int index) const
75 {
76 	return (const char *)list.ItemAt(index);
77 }
78 
79 
80 inline void
81 StringList::MakeEmpty()
82 {
83 	int i = list.CountItems();
84 	while (--i > -1)
85 		free(list.RemoveItem(i));
86 }
87 
88 
89 #endif
90