This module implements the symbol type for a unique representation of strings
and the symbol table in which they are stored. One intention is the reduction
of place- and time-complexity when dealing with many identical strings.
Specification
1) forall String s : strcmp(s,symbolToString(stringToSymbol(s))) == 0.
2) forall Symbol s : equalSymbols(s,stringToSymbol(symbolToString(s)).
3) equalSymbols is an equality.
| symbol | Abstract symbol type |
void initSymbols(void) | initializes the symbol table |
void freeSymbols(void) | releases the symbol table |
symbol stringToSymbol(c_string str) | converts string 'str' into a symbol |
symbol lstringToSymbol(c_string str) | converts ( lower case ) string 'str' into a symbol |
symbol ustringToSymbol(c_string str) | converts ( upper case ) string 'str' into a symbol |
c_string symbolToString(symbol sym) | string corresponding to symbol 'sym' |
symbol bstringToSymbol(c_bstring bstr) | converts binary string 'bstr' into a symbol |
c_bstring symbolToBString(symbol sym) | binary string corresponding to symbol 'sym' |
c_bool equalSymbols(symbol a, symbol b) | whether two symbols 'a' and 'b' are equal |
c_bool binarySymbol(symbol s) | whether symbol 's' represents a binary string |
void printSymbols(int indent) | prints the symbol table to stdout |
long countSymbols(void) | number of symbols in the symbol table |