58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#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__ */
|