Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

wvtclstring.h File Reference


Detailed Description

Functions to handle "tcl-style" strings and lists.

Using wvtcl_encode(), you can encode _any_ list of strings into a single string, then reliably split the single string back into the list using wvtcl_decode().

You can create recursive lists of lists by simply running wvtcl_encode() on a list of strings returned from wvtcl_encode().

Example list encodings (all of the following lists have exactly 3 elements): foo blah weasels e1 elem2 {element 3} x1 {} "element 3" w x y\ z

Example list of lists: foo\ blah\ weasels {e1 elem2 {element 3}} {w x y\ z}

#include "wvbuf.h"

Include dependency graph for wvtclstring.h:

Go to the source code of this file.

Defines

#define WVTCL_NASTIES   " \t\n\r"
#define WVTCL_ALWAYS_NASTY   "{}\\\""
#define WVTCL_SPLITCHARS   " \t\n\r"

Functions

WvString wvtcl_escape (WvStringParm s, const char *nasties=WVTCL_NASTIES)
 tcl-escape a string.
WvString wvtcl_unescape (WvStringParm s)
 tcl-unescape a string.
WvString wvtcl_encode (WvList< WvString > &l, const char *nasties=WVTCL_NASTIES, const char *splitchars=WVTCL_SPLITCHARS)
 encode a tcl-style list.
WvString wvtcl_getword (WvBuf &buf, const char *splitchars=WVTCL_SPLITCHARS, bool do_unescape=true)
 Get a single tcl word from an input buffer, and return the rest of the buffer untouched.
void wvtcl_decode (WvList< WvString > &l, WvStringParm _s, const char *splitchars=WVTCL_SPLITCHARS, bool do_unescape=true)
 split a tcl-style list.


Function Documentation

WvString wvtcl_escape WvStringParm  s,
const char *  nasties = WVTCL_NASTIES
 

tcl-escape a string.

There are three ways to do this: 1) Strings that need no escaping are unchanged. 2) Strings containing characters in 'nasties' are usually encoded just by enclosing the unmodified string in braces. (For example, "foo blah" becomes "{foo blah}") 3) Strings containing nasties _and_ unmatched braces are encoded using backslash notation. (For example, " foo} " becomes "\ foo\ "

WvString wvtcl_unescape WvStringParm  s  ) 
 

tcl-unescape a string.

This is generally the reverse of wvtcl_escape, except we can reverse any backslashified or embraced string, even if it doesn't follow the "simplest encoding" rules used by wvtcl_escape. We can also handle strings in double-quotes, ie. '"foo"' becomes 'foo'.

WvString wvtcl_encode WvList< WvString > &  l,
const char *  nasties = WVTCL_NASTIES,
const char *  splitchars = WVTCL_SPLITCHARS
 

encode a tcl-style list.

This is easily done by tcl-escaping each string in 'l', then appending the escaped strings together, separated by the first char in splitchars.

WvString wvtcl_getword WvBuf buf,
const char *  splitchars = WVTCL_SPLITCHARS,
bool  do_unescape = true
 

Get a single tcl word from an input buffer, and return the rest of the buffer untouched.

If no word can be created from the buffer, return a null string and leave the buffer unmodified.

void wvtcl_decode WvList< WvString > &  l,
WvStringParm  _s,
const char *  splitchars = WVTCL_SPLITCHARS,
bool  do_unescape = true
 

split a tcl-style list.

There are some special "convenience" features here, which allow users to create lists more flexibly than wvtcl_encode would do.

Elements of the list are separated by any number of any characters from the 'splitchars' list.

Quotes are allowed around elements: '"foo"' becomes 'foo'. These work mostly like braces, except the string is assumed to be backslashified. That is, '"\ "' becomes ' ', whereas '{\ }' becomes '\ ' (ie. the backslash wouldn't be removed).

Zero-length elements must be represented by {}


Generated on Sun Jul 10 17:31:04 2005 for WvStreams by  doxygen 1.4.0