summaryrefslogtreecommitdiffstats
path: root/base/tps/src/include/httpClient/httpc/StringList.h
blob: 80cd61dd6e004178fcc51757fa12c5f80f068e53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 */
/** BEGIN COPYRIGHT BLOCK
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301  USA 
 * 
 * Copyright (C) 2007 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifndef _STRING_LIST_H
#define _STRING_LIST_H

#ifdef HAVE_CONFIG_H
#ifndef AUTOTOOLS_CONFIG_H
#define AUTOTOOLS_CONFIG_H

/* Eliminate warnings when using Autotools */
#undef PACKAGE_BUGREPORT
#undef PACKAGE_NAME
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION

#include <config.h>
#endif /* AUTOTOOLS_CONFIG_H */
#endif /* HAVE_CONFIG_H */

/**
 * Simple String list class using the STL List template
 */

#include <list>
#ifdef HPUX
#include <iostream.h>
#else
#include <iostream>
#endif

#include "httpClient/httpc/Iterator.h"

#ifndef HPUX
using namespace std;
#endif

typedef EXPORT_DECL list<const char *> LISTSTR;

class EXPORT_DECL StringList {
public:
	/**
	 * Constructor
	 */
	StringList();

	/**
	 * Destructor
	 */
	~StringList();

	/**
	 * Appends a string to the end of the list
	 *
	 * @param value The string value to append
	 */
	void Add( const char *value );

    /**
     * Gets the string at a particular index in the list
     *
     * @param index Index of the string to retrieve
     * @return The string at the specified index, or NULL if outside
     * the range of the list
     */
    const char *GetAt( int index );

	/**
	 * Returns the index of a string in the list
	 *
	 * @param matchString The string to match
	 * @param startIndex The index to start searching from
	 * @return The index of the string, or -1 if not found
	 */
	int Find( const char *matchString,
						  int startIndex );

	/**
	 * Returns the number of strings in the list
	 *
	 * @return The number of strings in the list
	 */
	int GetCount();

	/**
	 * Inserts a string before the specified position
	 *
	 * @param index Position to insert the string
	 * @param value The string to insert
	 * @return The index of the string, or -1 if the requested index
	 * is beyond the end of the list
	 */
	int Insert( int index, const char *value );

	/**
	 * Removes a string at the specified position
	 *
	 * @param index Position to remove the string
	 * @return 0 on sucess, or -1 if the requested index
	 * is beyond the end of the list
	 */
	int Remove( int index );

	/**
	 * Removes all strings
	 */
	void RemoveAll();

    /**
     * Returns an iterator over strings in the list
     *
     * @return An iterator over strings in the list
     */
    Iterator *GetIterator();

	EXPORT_DECL friend ostream& operator<< ( ostream& os, StringList& list );

protected:
	/**
	 * Gets the iterator for an indexed element
	 *
	 * @param index Position to get
	 * @return Iterator for the position (could be end())
	 */
	LISTSTR::iterator GetIteratorAt( int index );

private:
	LISTSTR m_list;
};

#endif // _STRING_LIST_H