⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myhashmap.h

📁 提供了rbtree ttree avltree list hashtable等常用容器的算法,代码经过uclinux + arm44b0平台验证
💻 H
字号:
/*
*
* myhashmap.h hash映射 
*
* author:lin shao chuan (email:lsccsl@tom.com, msn:lsccsl@163.net)
*
*/

#ifndef __MYHASHMAP_H__
#define __MYHASHMAP_H__


#include "myhashtable.h"
#include "myobj.h"


/*
*哈希映射句柄
*/
typedef struct __myhashmap_handle_
{int unused;}*HMYHASHMAP;

/*
*迭代器句柄
*/
typedef struct __myhashamp_iter__
{int unused;}*HMYHASHMAP_ITER;


/*查找一条记录*/
#define MyHashMapSearch(hhm, key) (HMYHASHMAP_ITER)MyHashTableSearch((HMYHASHTABLE)hhm, key)

/*获取键*/
#define MyHashMapGetIterKey(it) MyHashTableGetIterKey((HMYHASHTABLE_ITER)it)

/*获取迭代器的值域*/
#define MyHashMapGetIterData(it) MyHashTableGetIterData((HMYHASHTABLE_ITER)it)

/*获取元素个数*/
#define MyHashMapGetElementCount(hhm) MyHashTableGetElementCount((HMYHASHTABLE)hhm)

/*打印哈希表*/
#define MyHashMapPrint(hhm) MyHashTablePrint((HMYHASHTABLE)hhm)

/*获取第一个节点*/
#define MyHashMapBegin(hhm) (HMYHASHMAP_ITER)MyHashTableBegin((HMYHASHTABLE)hhm)

/*取下一个节点*/
#define MyHashMapGetNext(hhm, it) (HMYHASHMAP_ITER)MyHashTableGetNext((HMYHASHTABLE)hhm, (HMYHASHTABLE_ITER)it)


/*
*
*构造映射
*
*/
extern HMYHASHMAP MyHashMapConstruct(HMYMEMPOOL hm, MYHASH_FUN hash_fun, MYHASH_KEYEQUAL_FUN keyequal_fun, size_t hash_size,
								myobj_ops * key_ops,
								myobj_ops * data_ops);

/*
*
*析构映射
*
*/
extern void MyHashMapDestruct(HMYHASHMAP hhashmap);

/*
*
*插入元素
*
*/
extern HMYHASHMAP_ITER MyHashMapInsertUnique(HMYHASHMAP hhm, const void * key, size_t key_size, const void * data, size_t data_size);

/*
*
*删除一条记录,根据key,
*成功删除返回0, 否则返回-1
*
*/
extern int MyHashMapDelKey(HMYHASHMAP hhm, const void * key);

/*
*
*删除一条记录,根据迭代器
*成功删除返回0, 否则返回-1
*
*/
extern int MyHashMapDelIter(HMYHASHMAP hhm, HMYHASHTABLE_ITER iter);


#endif


















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -