44#ifndef COMMONCPP_TOKENIZER_H_
45#define COMMONCPP_TOKENIZER_H_
47#ifndef COMMONCPP_CONFIG_H_
48#include <commoncpp/config.h>
51#ifndef COMMONCPP_THREAD_H_
55#ifndef COMMMONCPP_EXCEPTION_H_
104class __EXPORT StringTokenizer {
111 static const char *
const SPACE;
123 class NoSuchElementException { };
129 class __EXPORT iterator {
130 friend class StringTokenizer;
132 const StringTokenizer *myTok;
139 iterator(
const StringTokenizer &tok,
const char *end)
140 : myTok(&tok),tokEnd(0),endp(end),token(0) {}
142 iterator(
const StringTokenizer &tok)
143 : myTok(&tok),tokEnd(0),endp(myTok->str-1),token(0) {
148 iterator() : myTok(0),start(0),tokEnd(0),endp(0),token(0) {}
152 {
if (token) *token=
'\0';
delete [] token; }
158 iterator(
const iterator& i) :
159 myTok(i.myTok),start(i.start),tokEnd(i.tokEnd),
160 endp(i.endp),token(0) {}
166 iterator &operator=(
const iterator &i) {
168 start = i.start; endp = i.endp; tokEnd = i.tokEnd;
178 iterator &operator++() THROWS (NoSuchElementException);
188 const
char* operator*() THROWS (NoSuchElementException);
196 inline
char nextDelimiter()
const
197 {
return (tokEnd) ? *tokEnd :
'\0';}
204 inline bool operator == (
const iterator &other)
const
205 {
return (endp == other.endp);}
212 inline bool operator != (
const iterator &other)
const
213 {
return (endp != other.endp);}
216 friend class StringTokenizer::iterator;
261 StringTokenizer (
const char *str,
263 bool skipAllDelim =
false,
275 StringTokenizer (
const char *s);
280 iterator begin()
const
281 {
return iterator(*
this);}
287 void setDelimiters (
const char *d)
294 iterator begin(
const char *d) {
296 return iterator(*
this);
302 const iterator& end()
const
GNU Common C++ exception model base classes.
Common C++ thread class and sychronization objects.