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 |