xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/StringList.h (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1 /*	$NetBSD: StringList.h,v 1.3 2021/08/14 16:14:49 christos Exp $	*/
2 
3 // $OpenLDAP$
4 /*
5  * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
6  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
7  */
8 
9 #ifndef STRING_LIST_H
10 #define STRING_LIST_H
11 
12 #include <string>
13 #include <list>
14 /**
15  * Container class to store multiple string-objects
16  */
17 class StringList{
18     typedef std::list<std::string> ListType;
19 
20     private:
21         ListType m_data;
22 
23     public:
24 	typedef ListType::const_iterator const_iterator;
25 
26         /**
27          * Constructs an empty list.
28          */
29         StringList();
30 
31         /**
32          * Copy-constructor
33          */
34         StringList(const StringList& sl);
35 
36         /**
37          * For internal use only
38          *
39          * This constructor is used by the library internally to create a
40          * list of string from a array for c-Strings (char*)thar was
41          * returned by the C-API
42          */
43         StringList(char** values);
44 
45         /**
46          * Destructor
47          */
48         ~StringList();
49 
50         /**
51          * The methods converts the list to a 0-terminated array of
52          * c-Strings.
53          */
54         char** toCharArray() const;
55 
56         /**
57          * Adds one element to the end of the list.
58          * @param attr The attribute to add to the list.
59          */
60         void add(const std::string& value);
61 
62         /**
63          * @return The number of strings that are currently
64          * stored in this list.
65          */
66         size_t size() const;
67 
68         /**
69          * @return true if there are zero strings currently
70          * stored in this list.
71          */
72         bool empty() const;
73 
74         /**
75          * @return A iterator that points to the first element of the list.
76          */
77         const_iterator begin() const;
78 
79         /**
80          * @return A iterator that points to the element after the last
81          * element of the list.
82          */
83         const_iterator end() const;
84 
85         /**
86          * removes all elements from the list
87          */
88         void clear();
89 };
90 #endif //STRING_LIST_H
91