Dico |
|
GNU Dictionary Server |
Sergey Poznyakoff |
6.2.1 Search Key Structure
The dico_key_t
is defined as a pointer to the structure
dico_key
:
struct dico_key { char *word; void *call_data; dico_strategy_t strat; int flags; };
The structure represents a search key for matching algorithms. Its members are:
- member of struct dico_key:
char *
word The search word or expression.
- member of struct dico_key:
void *
call_data -
A pointer to selector-specific data. If necessary, it can be initialized by the selector when called with the ‘DICO_SELECT_BEGIN’ opcode and deallocated when called with the ‘DICO_SELECT_END’ opcode.
- member of struct dico_key: dico_strategy_t strat
A pointer to the strategy structure.
- member of struct dico_key: int flags
Key-specific flags. These are used by the server.
The following functions are defined to operate on search keys:
- function: int dico_key_init (struct dico_key *key, dico_strategy_t strat, const char *word)
-
Initialize the key structure key with the given strategy strat and search word word. If strat has a selector function, it will be called with the ‘DICO_SELECT_BEGIN’ opcode (see DICO_SELECT_BEGIN) to carry out the necessary initializations.
The key itself may point to any kind of memory storage.
- function: void dico_key_deinit (struct dico_key *key)
-
Deinitialize the
dico_key
structure initialized by a prior call todico_key_init
. If the key strategy has a selector, it will be called with the ‘DICO_SELECT_END’ opcode.Note that this function makes no assumptions about the storage type of key. If it points to a dynamically allocated memory, it is the caller responsibility to free it.
- function: int dico_key_match (struct dico_key *key, const char *word)
-
Match headword and key. Return 1 if they match, 0 if they don’t match and -1 in case of error. This function calls the strategy selector with the ‘DICO_SELECT_RUN’ opcode (see DICO_SELECT_RUN). It is an error if the strategy selector is not defined.
This document was generated on September 4, 2020 using makeinfo.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.