|
ACE
6.3.4
|
Tokenizer. More...
#include <Tokenizer_T.h>

Classes | |
| class | Delimiter_Entry |
| Delimiter Entry. More... | |
| class | Preserve_Entry |
| Preserve Entry. More... | |
Public Types | |
| enum | { MAX_DELIMITERS =16, MAX_PRESERVES =16 } |
Public Member Functions | |
| ACE_Tokenizer_T (ACE_CHAR_T *buffer) | |
| int | delimiter (ACE_CHAR_T d) |
| int | delimiter_replace (ACE_CHAR_T d, ACE_CHAR_T replacement) |
| int | preserve_designators (ACE_CHAR_T start, ACE_CHAR_T stop, int strip=1) |
| ACE_CHAR_T * | next (void) |
| Returns the next token. More... | |
Protected Member Functions | |
| int | is_delimiter (ACE_CHAR_T d, int &replace, ACE_CHAR_T &r) |
| int | is_preserve_designator (ACE_CHAR_T start, ACE_CHAR_T &stop, int &strip) |
Protected Attributes | |
| ACE_CHAR_T * | buffer_ |
| int | index_ |
| Preserve_Entry | preserves_ [MAX_PRESERVES] |
| The application can specify MAX_PRESERVES preserve designators. More... | |
| int | preserves_index_ |
| Pointer to the next free spot in preserves_. More... | |
| Delimiter_Entry | delimiters_ [MAX_DELIMITERS] |
| The tokenizer allows MAX_DELIMITERS number of delimiters. More... | |
| int | delimiter_index_ |
| Pointer to the next free space in delimiters_. More... | |
Tokenizer.
Tokenizes a buffer. Allows application to set delimiters and preserve designators. Does not allow special characters, yet (e.g., printf ("\"like a quoted string"")).
| ACE_Tokenizer_T< ACE_CHAR_T >::ACE_Tokenizer_T | ( | ACE_CHAR_T * | buffer | ) |
buffer will be parsed. Notice that ACE_Tokenizer_T will modify buffer if you use delimiter_replace or preserve_designators to do character substitution.
| int ACE_Tokenizer_T< ACE_CHAR_T >::delimiter | ( | ACE_CHAR_T | d | ) |
d is a delimiter.
Example:
char buf[30];
ACE_OS::strcpy(buf, "William/Joseph/Hagins");
ACE_Tokenizer_T 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
| int ACE_Tokenizer_T< ACE_CHAR_T >::delimiter_replace | ( | ACE_CHAR_T | d, |
| ACE_CHAR_T | replacement | ||
| ) |
d is a delimiter and, when found, will be replaced by replacement.
Example:
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
|
protected |
Returns 1 if d is a delimiter, 0 otherwise. If d should be replaced with r, replace is set to 1, otherwise 0.
|
protected |
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.
| ACE_CHAR_T * ACE_Tokenizer_T< ACE_CHAR_T >::next | ( | void | ) |
Returns the next token.
| int ACE_Tokenizer_T< ACE_CHAR_T >::preserve_designators | ( | ACE_CHAR_T | start, |
| ACE_CHAR_T | stop, | ||
| int | strip = 1 |
||
| ) |
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.
Example with strip = 0:
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
|
protected |
|
protected |
Pointer to the next free space in delimiters_.
|
protected |
The tokenizer allows MAX_DELIMITERS number of delimiters.
|
protected |
|
protected |
The application can specify MAX_PRESERVES preserve designators.
|
protected |
Pointer to the next free spot in preserves_.
1.8.9.1