Parse_String

Functions

HC_BOOLEAN Parse_String (const char *string, const char *delimiter, int offset, char *token)
 A utility routine for extracting delimited strings from longer strings. More...
 

Detailed Description

Function Documentation

◆ Parse_String()

HC_BOOLEAN Parse_String ( const char *  string,
const char *  delimiter,
int  offset,
char *  token 
)

A utility routine for extracting delimited strings from longer strings.

Parameters
string- The input string to parse.
delimiter- A single character that separates the tokens within string. Note that this parameter is passed as a string which happens to be one character long.
offset- The index of the token from the parsing results to store in the "token" output parameter. A positive count is the index from the left of string, 0 being the leftmost token. A negative count is the position from the right, -1 being the rightmost token.
token- The token taken from string in the position specified by offset. Leading and trailing blanks are trimmed. Returned to user. Passed by reference always.
Returns
Returns true if it can extract a token from the input string at the given offset; otherwise, it returns false.

DETAILS

Parse_String() takes a text string that is to be divided into tokens (regions) by delimiter. It extracts the token found in the region indicated by offset.
Parse_String() can be used to break up pathnames, object type lists (returned by Show routines) or any analogous list of items. To parse the return value of Show_Driver_Options() , for example, you might use Parse_String() with a comma (",") delimiter to find each item, then within each item you could use a "=" delimiter to separate the type from the value (if there is a value). Once you know the type and the value, you can use a language dependent routine such as "sscanf" in C to convert the string value to an integer or a float.
Other examples include

        Parse_String ("markers = red", "=", 1, token)

which sets token to "red" and returns true,

        Parse_String ("?picture/bolt/head/notch", "/", -1, token) 

which sets token to "notch" and also returns true, and

        Parse_String ("lines, no windows, no edges", ",", 4, token) 

which returns false.
An empty string counts as a token, for example:

        Parse_String ("", "/", 0, token)

sets token to "" and returns true, and

        Parse_String (",,hello", ",", 2, token) 

sets token to "hello" and returns true.
Parse_String() is intended to facilitate the parsing of HOOPS segment and attribute specifications. This means that a delimiter that occurs inside of parentheses or any type of quote (",', or `) is not counted as a delimiter. For example, each of the following strings consist of one token only:

  • (segment a/segment b/segment c)
  • "input/output"

even when the delimiter is set to "/". If you do want to pursue parsing once you've arrived at such a string, just nibble off the quotes or parentheses, then call Parse_String() again.

NOTES

RESTRICTIONS

See also
Show_Driver_Options, Show_Device_Info, Show_Heuristics, Show_Color, Show_Environment, Show_System_Info.