00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
# ifndef StringTokenizer_CLASS
00027
# define StringTokenizer_CLASS
00028
00029
#include <InvalidArgumentException.h>
00030
#include <OutOfBoundsException.h>
00031
00032
#include <string>
00033
00034
using std::string;
00035
00036
namespace asdm {
00037
00043 class StringTokenizer {
00044
00045
public:
00046
00047
StringTokenizer(
const string &s,
00048
const string &delim =
" \t\n\r\f",
00049
bool returnDelims =
false)
00050
throw (
InvalidArgumentException);
00051
virtual ~
StringTokenizer();
00052
00053
bool hasMoreTokens();
00054 string nextToken()
throw (
OutOfBoundsException);
00055 string nextToken(
const string delim)
throw (
OutOfBoundsException);
00056
int countTokens();
00057
00058
private:
00059
00060
int currentPosition;
00061
int newPosition;
00062
int maxPosition;
00063
char *str;
00064 string *ostr;
00065 string strDelimiter;
00066
const char *delimiter;
00067
int numDelimiters;
00068
bool retDelims;
00069
bool delimsChanged;
00070
00071
char maxDelimChar;
00072
00073
void setMaxDelimChar()
throw (
InvalidArgumentException);
00074
int skipDelimiters(
int startPos)
throw (
InvalidArgumentException);
00075
int scanToken(
int startPos);
00076
int indexOfDelimiters(
char c);
00077
00078 };
00079
00080 }
00081
00082
#endif