Files

55 lines
1.7 KiB
C
Raw Permalink Normal View History

2026-08-10 01:21:15 +08:00
#ifndef INCLUDED_C_NLPTRIE_H
#define INCLUDED_C_NLPTRIE_H
#ifndef INCLUDED_C_BASE_H
#include <c_Base.h>
#endif /*INCLUDED_C_BASE_H*/
#ifndef INCLUDED_C_NLPSTRINGLIST_H
#include <c_NlpStringList.h>
#endif /*INCLUDED_C_NLPSTRINGLIST_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
typedef struct c_NlpTrieNode_t c_NlpTrieNode_t;
typedef struct {
c_NlpTrieNode_t* root;
c_size_t size;
}c_NlpTrie_t;
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
c_err_t c_NlpTrie_Init(c_NlpTrie_t* self);
void c_NlpTrie_Destroy(c_NlpTrie_t* self);
c_err_t c_NlpTrie_Insert(c_NlpTrie_t* self, const char* word);
c_bool_t c_NlpTrie_Contains(c_NlpTrie_t* self, const char* word);
c_bool_t c_NlpTrie_HasStartWith(c_NlpTrie_t* self, const char* word);
c_err_t c_NlpTrie_LongestPrefixOf(c_NlpTrie_t* self, const char* text, char* result, size_t res_max_len);
c_size_t c_NlpTrie_LongestPrefixOfLen(c_NlpTrie_t* self, const char* text);
c_err_t c_NlpTrie_KeysWithPrefix(c_NlpTrie_t* self, const char* prefix, c_NlpStringList_t* output);
c_err_t c_NlpTrie_KeysThatMatch(c_NlpTrie_t* self, const char* pattern, c_NlpStringList_t* output);
c_err_t c_NlpTrie_Delete(c_NlpTrie_t* self, const char* word);
/**
* @brief Resets and purges all words and branches inside the Trie while preserving the root instance.
* @param self Pointer to the active Trie instance.
* @return c_err_t C_ERR_OK on successful clearing, or C_ERR_PARAM if the pointer instance is invalid.
*/
c_err_t c_NlpTrie_Clear(c_NlpTrie_t* self);
#endif /*INCLUDED_C_NLPTRIE_H*/