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

72 lines
1.5 KiB
C++

#ifndef __UNIC_DICO_H__
#define __UNIC_DICO_H__
#ifndef __DEFINE_NUMS__
#define __DEFINE_NUMS__
#define f32 float
#define u32 unsigned int
#define s32 int
#define u16 unsigned short
#define s16 signed short
#define u8 unsigned char
#define s8 char
#endif
#define UnicID unsigned int
#define InvalidID 0xffffffff
#define UNIC_Dico_HValue 4
typedef struct tdst_Dico_Node_
{
u32 NextMatch;
u32 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(0)
{
}
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__ */