ZE-Standard-Libraries/include/id/id.h
2018-08-24 00:57:38 +08:00

124 lines
2.5 KiB
C

#ifndef id_h
#define id_h
#include <type.h>
#include <id/md5.h>
/*
*SID的初始值管理及操作的结构
*/
struct sid_raw{
unsigned int type;
unsigned int *value;//4
unsigned int *value_deeper;//8
unsigned int *value_deepest;//32
};
/*
*SID的管理及操作的结构
*/
typedef struct s_id{
struct sid_raw *sr;//指向SID初始值
unsigned int deep;//SID初始值的复杂度
MD5_CTX *md5;//指向MD5结构
unsigned char *decrypt_hex;//指向MD5的Hex信息
char *decrypt_str;//指向MD5的Hex信息转化成的字符串
}SID;
/************************************************
初始化: 初始化有关函数
************************************************/
/*
*获得一个新的SID
*参数: deep_level指示原始ID的复杂度,type指示SID所绑定的数据结构的数据类型
*返回: 处理成功则返回指向相关结构体所在内存空间的指针,不成功则返回NULL.
*/
extern SID *getS_id(unsigned int type, unsigned int deep_level);
/*
*通过SID原始数据转换而成的字符串形式的MD5获得一个新的SID
*返回: 处理成功则返回指向相关结构体所在内存空间的指针,不成功则返回NULL.
*/
extern SID *setS_idWithString(char *);
/*
*获得一个新的ID
*/
extern unsigned long long getId(void);
/************************************************
比较: ID的比较函数
************************************************/
/*
*比较两个SID
*返回: 返回strcmp风格的返回值
*/
extern int fitS_id(SID * const fs_id, SID * const ss_id);\
/*
*比较两个SID
*返回: 相同返回1,不相同返回0
*/
extern int simFitS_id(SID * fs_id, SID * ss_id);
/************************************************
比较: ID的转换函数
************************************************/
/*
*将SID中的Hex形式的MD5数据转化成字符串形式的MD5
*/
extern void setSidToASCIIString(SID * const s_id);
char *s_idToASCIIString(SID * const s_id);
/************************************************
复制: 复制ID的函数
************************************************/
/*
*复制一个既有的SID,得到一个相同的崭新的SID
*/
extern SID *copyS_id(SID *f_sid);
/************************************************
释放: 释放ID的函数
************************************************/
/*
*释放SID原始数据所占的内存空间
*/
extern int freeSidRaw(SID *s_id);
/*
*释放SID所有已占用的内存空间
*/
extern int freeS_id(SID *s_id);
#endif /* id_h */