#ifndef __UNIC_DICO_H__ #define __UNIC_DICO_H__ #include "DEFINES.H" #define UNIC_Dico_HValue 4 typedef struct tdst_Dico_Node_ { u16 NextMatch; u16 NextNotMatch[UNIC_Dico_HValue]; char Value; char IsDeleted; u32 AssociatedValue; } tdst_Dico_Node; class UNIC_Dico { public: tdst_Dico_Node *mpst_Dico; u32 IsCaseSensitive; u32 NoSpace; u32 IsInit; UNIC_Dico():mpst_Dico(NULL) { } void Init(void); void Destroy(void); u32 AddWord(char *); u32 DelWord(char *); u32 IsExist(char *,u32 DeletedOnly = 0); /* Return value (-1 if fail) */ u32 GetWord(char *, u32 ValueToFind); u32 GetUnic(/* OUT */ UnicID *ID,/* IN */ char *Name); u32 GetName(/* IN */ UnicID *ID,/* OUT */ char *Name); void EnumWords(void (*CLBK)(char *String,void *UserParam),void *UserParam,u32 EnumDeleted = 0); void EnumWordsBaseString(void (*CLBK)(char *String,void *UserParam),void *UserParam,char *BaseString,u32 EnumDeleted = 0); private: void (*CLBK)(char *String,void *UserParam); void *UserParam; void REnumWords(u32 CurrentIndex, char *pBaseString, char *pCurrentString, u32 EnumDeleted); u32 FindKey(u32 CurrentIndex,char *string, u32 ValueToFind); u32 u32_GetANode(); u32 mu32_DicoSize; u32 mu32_DicoInc; }; #endif /* !__UNIC_DICO_H__ */