JD2022-TU1/main/extern/Camcam/Inc/DICO.h

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__ */