Judy Array API介绍
本文介绍https://code.google.com/p/judyarray/这个JudyArray实现的API。
judy_open:新建一个JudyArray,并返回指向这个JudyArray的指针。
judy_close:释放为JudyArray分配的存储空间。这个函数同时也会释放调用judy_data和judy_clone申请的空间。
judy_clone
judy_data:
void *judy_data (Judy *judy, uint amt)
从judy中分配大小为amt的存储空间,返回指向此空间的指针。这个函数通常用来为key对应的value分配私有空间。
jud_cell:
向已有的JudyArray中插入一个string类型的key,并返回指向该key对应的value的指针。
调用方法是:
uint *judy_cell (Judy *judy, uchar *buff, uint len)
不管这个Key在judy中是否存在,返回的指针的内容都是value的内容。
如果这个key在judy中存在,返回的指针的内容是value的内容。用户可以把这个内容转换为自己的指针类型,来访问value数据。
如果这个key在judy中不存在,返回的指针的内容是0,用户可以创建value数据,并把value数据的地址填到这个0的位置。
judy_cell典型的用法是:
JudySlot *slot;
slot = judy_cell(judy, key1, strlen(key1));
if(*slot){
// already exist
Value *v = (Value*)(*slot);
//use v;
} else {
// do not exist
Value *v = judy_data(judy, sizeof(Value));
//fill v
*slot = (JudySlot)v;
}
judy_slot:
从judy中取出key对应的value,返回值的内容实际上是value的地址地址。如果key不存在,则返回NULL。
uint *judy_slot (Judy *judy, uchar *buff, uint len)
judy_strt:
judy_prv:
judy_nxt:
judy_key:
这几个函数是获取judyarray的迭代器,并访问judyarray元素的。
uint *judy_strt (Judy *judy, uchar *buff, uint len)
uint *judy_prv (Judy *judy)
uint *judy_nxt (Judy *judy)
uint judy_key (Judy *judy, uchar *buff, uint max)
其中judy_key返回迭代器位置的key,key的值存储到buff中,max表示buff的大小,返回值是key的长度。
这几个函数的典型用法是:
char key[MAX_LEN]; cell = judy_strt(judy, NULL, 0);
while(cell){
len = judy_key(judy, key, sizeof(key)); Value *v = (Value*)(*cell);
//visit v
//judy_del(judy);
cell = judy_nxt(judy);
}
judy_del:删除一个key value
uint *judy_del (Judy *judy)
它可以用在两个地方,一是在迭代器中,如上面例子中的注释所示;还有是可以用在judy_cell函数调用后,这个时候judy中内置的栈顶元素指向当前访问的元素,也可以用judy_del删除该元素。它的返回值是该元素的上一个key-value的value的内容。
Judy Array API介绍的更多相关文章
- Commons-lang API介绍
4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...
- 常用ArcGIS for Silverlight 开发API介绍
1.API介绍 2.Map对象 3.Layer对象 4.Symbol对象 5.Task对象
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- python学习笔记(win32print API介绍)
最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...
- APP自动化框架LazyAndroid使用手册(3)--核心API介绍
作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...
- Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController
用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...
- FastDFS api介绍
1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...
- ElasticSearch的API介绍
ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...
随机推荐
- sql server查看表占用索引空间(小技巧)
选择表右键—属性—存储—索引空间
- (4/24) webpack3.x快速搭建本地服务和实现热更新
写在前面: (1)为了防止版本兼容问题,此处的webpack版本与之前的一致为:webpack@3.6.0.同时这里我们安装的webpack-dev-server版本是2.9.7版本. (2)之前已经 ...
- Excel函数使用
Excel函数使用: count&countif today&now count count() 仅可以统计数字类型的单元格个数 countif 根据条件来选择统计 countif(D ...
- Java中3种代理总结(示例代码见之前文章)
1.JDK静态代理 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 ### 2.JDK动态代理 业务接口 实现了业务接口的业务类 实现了InvocationHandler接口的handl ...
- 7 python 类的组合
1.组合与重用性 软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为 1.一个类的属性可以是一个类对象,通常情况下在一个类里面很少定义一个对象就是它 ...
- 从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图
从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图 作者:naaoveGI… 文章来源:naaoveGIS 点击数:2063 更 ...
- python HttpServer共享文件
在目录下运行 python -m SimpleHTTPServer python -m http.server 启动服务器.
- scala -- 层级
层级 层级的顶端是Any 类,定义了如下方法 final def ==(that:Any):Boolean final def !=(that:Any):Boolean def equals(that ...
- 简单AOP
代码如下 //使用说明 //1,新加接口与类 //2,新加类并实现ICallHandler类: ExecuteHandler //3,新建特性并实现HandlerAttribute和重写其中的Crea ...
- tensor flow 的两种padding方式
https://segmentfault.com/a/1190000007846181