#include <ace/SString.h>
class ACE_Tokenizer {
public:ACE_Tokenizer (LPTSTR buffer);int delimiter (TCHAR d);int delimiter_replace (TCHAR d, TCHAR replacement);int preserve_designators (TCHAR start, TCHAR stop, int strip=1);LPTSTR next (void);MAX_PRESERVES=16 }; protected: int is_delimiter ( TCHAR d, int &replace, TCHAR &r );int is_preserve_designator (TCHAR start, TCHAR &stop, int &strip);class Delimiter_Entry {
public:TCHAR delimiter_;TCHAR replacement_;int replace_;};
private:
LPTSTR buffer_;
int index_;
class Preserve_Entry
{
public:
TCHAR start_;
TCHAR stop_;
int strip_;
};
Preserve_Entry preserves_[MAX_PRESERVES];
int preserves_index_;
Delimiter_Entry delimiters_[MAX_DELIMITERS];
int delimiter_index_;
};
ACE_Tokenizer (LPTSTR buffer);
buffer will be parsed.
int delimiter (TCHAR d);
d is a delimiter. Returns 0 on success, -1 if there is no
memory left.
int delimiter_replace (TCHAR d, TCHAR replacement);
d is a delimiter and, when found, will be replaced by
replacement. Returns 0 on success, -1 if there is no memory
left.
int preserve_designators (TCHAR start, TCHAR stop, int strip=1);
strip == 1, then the preserve
designators will be stripped from the tokens returned by next.
LPTSTR next (void);
MAX_PRESERVES=16 }; protected: int is_delimiter (
TCHAR d,
int &replace,
TCHAR &r
);
d is a delimiter, 0 otherwise. If d should be
replaced with r, replace is set to 1, otherwise 0.
int is_preserve_designator (TCHAR start, TCHAR &stop, int &strip);
start is a start preserve designator, returns 1 and sets
stop to the stop designator. Returns 0 if start is not a
preserve designator.
LPTSTR buffer_;
int index_;
Preserve_Entry preserves_[MAX_PRESERVES];
int preserves_index_;
Delimiter_Entry delimiters_[MAX_DELIMITERS];
int delimiter_index_;