libdatrie
0.2.12
|
AlphaMap data type and functions. More...
Typedefs | |
typedef struct _AlphaMap | AlphaMap |
AlphaMap data type. | |
Functions | |
AlphaMap * | alpha_map_new (void) |
Create new alphabet map. More... | |
AlphaMap * | alpha_map_clone (const AlphaMap *a_map) |
Create a clone of alphabet map. More... | |
void | alpha_map_free (AlphaMap *alpha_map) |
Free an alphabet map object. More... | |
int | alpha_map_add_range (AlphaMap *alpha_map, AlphaChar begin, AlphaChar end) |
Add a range to alphabet map. More... | |
int | alpha_char_strlen (const AlphaChar *str) |
Alphabet string length. More... | |
int | alpha_char_strcmp (const AlphaChar *str1, const AlphaChar *str2) |
Compare alphabet strings. More... | |
AlphaMap data type and functions.
AlphaMap is a mapping between AlphaChar and TrieChar. AlphaChar is the alphabet character used in words of a target language, while TrieChar is a small integer with packed range of values and is actually used in trie state transition calculations.
Since double-array trie relies on sparse state transition table, a small set of input characters can make the table small, i.e. with small number of columns. But in real life, alphabet characters can be of non-continuous range of values. The unused slots between them can waste the space in the table, and can increase the chance of unused array cells.
AlphaMap is thus defined for mapping between non-continuous ranges of values of AlphaChar and packed and continuous range of Triechar.
In this implementation, TrieChar is defined as a single-byte integer, which means the largest AlphaChar set that is supported is of 255 values, as the special value of 0 is reserved for null-termination code.
Compare alphabet strings.
str1,str2 | : the arrays of null-terminated AlphaChar strings to compare |
Available since: 0.2.7
int alpha_char_strlen | ( | const AlphaChar * | str | ) |
Alphabet string length.
str | : the array of null-terminated AlphaChar string to measure |
Add a range to alphabet map.
alpha_map | : the alphabet map object |
begin | : the first character of the range |
end | : the last character of the range |
Add a range of character codes from begin to end to the alphabet set.
Create a clone of alphabet map.
a_map | : the source alphabet map to clone |
The created object must be freed with alpha_map_free().
void alpha_map_free | ( | AlphaMap * | alpha_map | ) |
Free an alphabet map object.
alpha_map | : the alphabet map object to free |
Destruct the alpha_map and free its allocated memory.
AlphaMap* alpha_map_new | ( | void | ) |
Create new alphabet map.
Create a new empty alphabet map. The map contents can then be added with alpha_map_add_range().
The created object must be freed with alpha_map_free().