VTK
Classes | Macros | Typedefs | Enumerations | Functions | Variables
vtkParseString.h File Reference
#include <stddef.h>
Include dependency graph for vtkParseString.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _StringTokenizer
 A struct for going through a string one token at a time. More...
 
struct  _StringCache
 StringCache provides a simple way of allocating strings centrally. More...
 

Macros

#define vtkParse_CharType(c, bits)   ((parse_charbits[(unsigned char)(c)] & (bits)) != 0)
 Macro to check if a char is of a certain type. More...
 

Typedefs

typedef enum _parse_char_type parse_char_type
 This file provides string handling routines. More...
 
typedef enum _parse_space_t parse_space_t
 Whitespace types that can be used with the tokenizer. More...
 
typedef enum _preproc_token_t preproc_token_t
 Preprocessor tokens for C++. More...
 
typedef struct _StringTokenizer StringTokenizer
 A struct for going through a string one token at a time. More...
 
typedef struct _StringCache StringCache
 StringCache provides a simple way of allocating strings centrally. More...
 

Enumerations

enum  _parse_char_type {
  CPRE_ID = 0x01, CPRE_DIGIT = 0x02, CPRE_IDGIT = 0x03, CPRE_HEX = 0x04,
  CPRE_EXP = 0x08, CPRE_SIGN = 0x10, CPRE_QUOTE = 0x20, CPRE_HSPACE = 0x40,
  CPRE_VSPACE = 0x80, CPRE_WHITE = 0xC0
}
 This file provides string handling routines. More...
 
enum  _parse_space_t { WS_DEFAULT = CPRE_WHITE, WS_PREPROC = CPRE_HSPACE, WS_COMMENT = (CPRE_WHITE | 0x100) }
 Whitespace types that can be used with the tokenizer. More...
 
enum  _preproc_token_t {
  TOK_OTHER = 257, TOK_ID, TOK_CHAR, TOK_STRING,
  TOK_NUMBER, TOK_COMMENT, TOK_DBLHASH, TOK_SCOPE,
  TOK_INCR, TOK_DECR, TOK_RSHIFT, TOK_LSHIFT,
  TOK_AND, TOK_OR, TOK_EQ, TOK_NE,
  TOK_GE, TOK_LE, TOK_ADD_EQ, TOK_SUB_EQ,
  TOK_MUL_EQ, TOK_DIV_EQ, TOK_MOD_EQ, TOK_AND_EQ,
  TOK_OR_EQ, TOK_XOR_EQ, TOK_ARROW, TOK_DOT_STAR,
  TOK_ARROW_STAR, TOK_RSHIFT_EQ, TOK_LSHIFT_EQ, TOK_ELLIPSIS
}
 Preprocessor tokens for C++. More...
 

Functions

void vtkParse_InitTokenizer (StringTokenizer *tokens, const char *text, parse_space_t wstype)
 Initialize the tokenizer and get the first token. More...
 
int vtkParse_NextToken (StringTokenizer *tokens)
 Return the next preprocessor token, or '0' if none left. More...
 
size_t vtkParse_SkipWhitespace (const char *cp, parse_space_t spacetype)
 Skip over whitespace. More...
 
size_t vtkParse_SkipComment (const char *cp)
 Skip over a comment, C style or C++ style. More...
 
size_t vtkParse_SkipQuotes (const char *cp)
 Skip over a string in double or single quotes. More...
 
size_t vtkParse_SkipNumber (const char *cp)
 Skip over a number. More...
 
size_t vtkParse_SkipId (const char *cp)
 Skip over an identifier. More...
 
unsigned int vtkParse_HashId (const char *cp)
 Compute the hash for a id, for use in hash table lookups. More...
 
void vtkParse_InitStringCache (StringCache *cache)
 Initialize the string cache. More...
 
char * vtkParse_NewString (StringCache *cache, size_t n)
 Alocate a new string from the cache. More...
 
const char * vtkParse_CacheString (StringCache *cache, const char *cp, size_t n)
 Cache a string so that it can then be used in the vtkParse data structures. More...
 
void vtkParse_FreeStringCache (StringCache *cache)
 Free all strings that were created with vtkParse_NewString() or with vtkParse_CacheString(). More...
 

Variables

unsigned char parse_charbits [256]
 Character type lookup table. More...
 

Macro Definition Documentation

#define vtkParse_CharType (   c,
  bits 
)    ((parse_charbits[(unsigned char)(c)] & (bits)) != 0)

Macro to check if a char is of a certain type.

Definition at line 77 of file vtkParseString.h.

Typedef Documentation

This file provides string handling routines.

The two important jobs done by these routines are string tokenization and string cacheing.

Tokenization is done as per the rules of a C++ preprocessor, and breaks the strings into ids, literals, and operators. Any string is a valid input for the tokenizer, and it is up to the parser to decide if the resulting tokens are valid within the grammar. The two primary tokenization functions are vtkParse_InitTokenizer() and vtkParse_NextToken().

Cacheing refers to how string memory management is done. The parser uses "const char *" for all strings, and expects all strings to be persistent and constant. These conditions are automatically met by static strings, but dynamically-generated strings must be cached until the parse is complete. The primary cacheing functions are vtkParse_CacheString() and vtkParse_FreeStringCache(). Various important char types for tokenization

Whitespace types that can be used with the tokenizer.

  • WS_DEFAULT treats newlines and formfeeds as regular whitespace.
  • WS_PREPROC treats newline as end-of-line, not as whitespace.
  • WS_COMMENT treats comments as tokens, not as whitespace.

Preprocessor tokens for C++.

A struct for going through a string one token at a time.

If ws is set to WS_PREPROC, then tokenization stops when a newline or null is encountered. If ws is set to WS_DEFAULT, then tokenization only stops when a null is encountered. If ws is set to WS_COMMENT, then tokenization stops only when a null is encountered, and comments are returned as tokens instead of being skipped as whitespace.

typedef struct _StringCache StringCache

StringCache provides a simple way of allocating strings centrally.

It eliminates the need to allocate and free each individual string, which makes the code simpler and more efficient.

Enumeration Type Documentation

This file provides string handling routines.

The two important jobs done by these routines are string tokenization and string cacheing.

Tokenization is done as per the rules of a C++ preprocessor, and breaks the strings into ids, literals, and operators. Any string is a valid input for the tokenizer, and it is up to the parser to decide if the resulting tokens are valid within the grammar. The two primary tokenization functions are vtkParse_InitTokenizer() and vtkParse_NextToken().

Cacheing refers to how string memory management is done. The parser uses "const char *" for all strings, and expects all strings to be persistent and constant. These conditions are automatically met by static strings, but dynamically-generated strings must be cached until the parse is complete. The primary cacheing functions are vtkParse_CacheString() and vtkParse_FreeStringCache(). Various important char types for tokenization

Enumerator
CPRE_ID 
CPRE_DIGIT 
CPRE_IDGIT 
CPRE_HEX 
CPRE_EXP 
CPRE_SIGN 
CPRE_QUOTE 
CPRE_HSPACE 
CPRE_VSPACE 
CPRE_WHITE 

Definition at line 55 of file vtkParseString.h.

Whitespace types that can be used with the tokenizer.

  • WS_DEFAULT treats newlines and formfeeds as regular whitespace.
  • WS_PREPROC treats newline as end-of-line, not as whitespace.
  • WS_COMMENT treats comments as tokens, not as whitespace.
Enumerator
WS_DEFAULT 
WS_PREPROC 
WS_COMMENT 

Definition at line 86 of file vtkParseString.h.

Preprocessor tokens for C++.

Enumerator
TOK_OTHER 
TOK_ID 
TOK_CHAR 
TOK_STRING 
TOK_NUMBER 
TOK_COMMENT 
TOK_DBLHASH 
TOK_SCOPE 
TOK_INCR 
TOK_DECR 
TOK_RSHIFT 
TOK_LSHIFT 
TOK_AND 
TOK_OR 
TOK_EQ 
TOK_NE 
TOK_GE 
TOK_LE 
TOK_ADD_EQ 
TOK_SUB_EQ 
TOK_MUL_EQ 
TOK_DIV_EQ 
TOK_MOD_EQ 
TOK_AND_EQ 
TOK_OR_EQ 
TOK_XOR_EQ 
TOK_ARROW 
TOK_DOT_STAR 
TOK_ARROW_STAR 
TOK_RSHIFT_EQ 
TOK_LSHIFT_EQ 
TOK_ELLIPSIS 

Definition at line 96 of file vtkParseString.h.

Function Documentation

void vtkParse_InitTokenizer ( StringTokenizer tokens,
const char *  text,
parse_space_t  wstype 
)

Initialize the tokenizer and get the first token.

int vtkParse_NextToken ( StringTokenizer tokens)

Return the next preprocessor token, or '0' if none left.

size_t vtkParse_SkipWhitespace ( const char *  cp,
parse_space_t  spacetype 
)

Skip over whitespace.

Return the number of chars until the first non-whitespace token. Set spacetype to WS_DEFAULT, WS_PREPROC, or WS_COMMENT.

size_t vtkParse_SkipComment ( const char *  cp)

Skip over a comment, C style or C++ style.

Return the number of chars until the end of the comment.

size_t vtkParse_SkipQuotes ( const char *  cp)

Skip over a string in double or single quotes.

Return the number of chars until the end of the quotes.

size_t vtkParse_SkipNumber ( const char *  cp)

Skip over a number.

Uses preprocessor semantics. Return the number of chars until the end of the number.

size_t vtkParse_SkipId ( const char *  cp)

Skip over an identifier.

Return the number of chars until the end of the identifier.

unsigned int vtkParse_HashId ( const char *  cp)

Compute the hash for a id, for use in hash table lookups.

This stops at the first non-Id character, so it is safe to use on a string that is not null-terminated as long as there is either whitespace or an operator character before the end of the string. It can be used on null-terminated strings as well, of course.

void vtkParse_InitStringCache ( StringCache cache)

Initialize the string cache.

char* vtkParse_NewString ( StringCache cache,
size_t  n 
)

Alocate a new string from the cache.

A total of n+1 bytes will be allocated, to leave room for null.

const char* vtkParse_CacheString ( StringCache cache,
const char *  cp,
size_t  n 
)

Cache a string so that it can then be used in the vtkParse data structures.

The string will last until the application exits. At most 'n' chars will be copied, and the string will be terminated. If a null pointer is provided, then a null pointer will be returned.

void vtkParse_FreeStringCache ( StringCache cache)

Free all strings that were created with vtkParse_NewString() or with vtkParse_CacheString().

Variable Documentation

unsigned char parse_charbits[256]

Character type lookup table.