#include <SString.h>
Collaboration diagram for ACE_Tokenizer:

Public Types | |
| enum | { MAX_DELIMITERS = 16, MAX_PRESERVES = 16 } |
Public Member Functions | |
| ACE_Tokenizer (ACE_TCHAR *buffer) | |
| int | delimiter (ACE_TCHAR d) |
| int | delimiter_replace (ACE_TCHAR d, ACE_TCHAR replacement) |
| int | preserve_designators (ACE_TCHAR start, ACE_TCHAR stop, int strip=1) |
| ACE_TCHAR * | next (void) |
| Returns the next token. | |
Protected Member Functions | |
| int | is_delimiter (ACE_TCHAR d, int &replace, ACE_TCHAR &r) |
| int | is_preserve_designator (ACE_TCHAR start, ACE_TCHAR &stop, int &strip) |
Protected Attributes | |
| ACE_TCHAR * | buffer_ |
| int | index_ |
| Preserve_Entry | preserves_ [MAX_PRESERVES] |
| The application can specify MAX_PRESERVES preserve designators. | |
| int | preserves_index_ |
| Pointer to the next free spot in preserves_. | |
| Delimiter_Entry | delimiters_ [MAX_DELIMITERS] |
| The tokenizer allows MAX_DELIMITERS number of delimiters. | |
| int | delimiter_index_ |
| Pointer to the next free space in delimiters_. | |
Tokenizes a buffer. Allows application to set delimiters and preserve designators. Does not allow special characters, yet (e.g., printf ("\"like a quoted string\"")).
|
|
|
|
|
buffer will be parsed. Notice that ACE_Tokenizer will modify buffer if you use
|
|
|
d is a delimiter.
char buf[30];
ACE_OS::strcpy(buf, "William/Joseph/Hagins");
ACE_Tokenizer tok (buf);
tok.delimiter ('/');
for (char *p = tok.next (); p; p = tok.next ())
cout << p << endl;
This will print out:
William/Joseph/Hagins
Joseph/Hagins
Hagins |
|
||||||||||||
|
d is a delimiter and, when found, will be replaced by replacement.
char buf[30];
ACE_OS::strcpy(buf, "William/Joseph/Hagins");
ACE_Tokenizer tok (buf);
tok.delimiter_replace ('/', 0);
for (char *p = tok.next (); p; p = tok.next ())
cout << p << endl;
This will print out:
William
Joseph
Hagins |
|
||||||||||||||||
|
Returns 1 if <d> is a delimiter, 0 otherwise. If <d> should be replaced with <r>, <replace> is set to 1, otherwise 0. |
|
||||||||||||||||
|
If <start> is a start preserve designator, returns 1 and sets <stop> to the stop designator. Returns 0 if <start> is not a preserve designator. |
|
|
Returns the next token.
|
|
||||||||||||||||
|
Extract string between a pair of designator characters. For instance, quotes, or '(' and ')'. start specifies the begin designator. stop specifies the end designator. strip If strip == 1, then the preserve designators will be stripped from the tokens returned by next.
char buf[30];
ACE_OS::strcpy(buf, "William(Joseph)Hagins");
ACE_Tokenizer tok (buf);
tok.preserve_designators ('(', ')', 0);
for (char *p = tok.next (); p; p = tok.next ())
cout << p << endl;
This will print out:
William(Joseph)Hagins
(Joseph)Hagins
)Hagins Example with strip = 1:
char buf[30];
ACE_OS::strcpy(buf, "William(Joseph)Hagins");
ACE_Tokenizer tok (buf);
tok.preserve_designators ('(', ')', 1);
for (char *p = tok.next (); p; p = tok.next ())
cout << p << endl;
This will print out:
William
Joseph
Hagins |
|
|
|
|
|
Pointer to the next free space in delimiters_.
|
|
|
The tokenizer allows MAX_DELIMITERS number of delimiters.
|
|
|
|
|
|
The application can specify MAX_PRESERVES preserve designators.
|
|
|
Pointer to the next free spot in preserves_.
|
1.3.9.1