本文介绍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介绍的更多相关文章

  1. 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. ...

  2. 常用ArcGIS for Silverlight 开发API介绍

    1.API介绍 2.Map对象  3.Layer对象 4.Symbol对象 5.Task对象

  3. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  4. python学习笔记(win32print API介绍)

    最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...

  5. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  6. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

  7. Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController

    用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...

  8. FastDFS api介绍

    1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...

  9. ElasticSearch的API介绍

    ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...

随机推荐

  1. 知乎日报 API的图片盗链问题

    由最近 基于vue的知乎日报单页应用 引发的问题 以及问题解决历程 通过 知乎日报API 基于vue做一个知乎日报的单页应用,在获取图片时存在一个图片盗链问题,图片无法加载 提示 403 错误, 最终 ...

  2. C# EF 基础操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Eclipse安装STS(Spring Tool Suite (STS) for Eclipse)插件

    转自:https://blog.csdn.net/zhen_6137/article/details/79383941

  4. 使用seaborn制图(小提琴图)

    import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...

  5. delphi RAD Studio新版本及路线图 及官方网站 官方 版本发布时间

    delphi  RAD Studio Berlin 10.1 主要是FireMonkey 移动开发的改动,VCL确实没有多大变化. http://docwiki.embarcadero.com/RAD ...

  6. word 2013 自动保存太慢,下面读条起码3分钟

    该问题有可能是应用干扰或者安全设置问题导致的. 建议您尝试以下方法: 方法一: 尝试使用干净启动来暂时禁用计算机启动时所加载的第三方程序来进一步做测试: 如何在Windows 中执行干净启动步骤 具体 ...

  7. 代码报错记录-MAVEN

    报错: COMPILATION ERROR : 程序包不存在. 说是找不到程序包,我的JUNIT是父项目中的,子项目是从JAVA项目转为MAVEN项目的,难道在转成MAVEN项目时对POM文件的修改有 ...

  8. Haskell语言学习笔记(33)Exception, Except, ExceptT

    Exception class (Typeable e, Show e) => Exception e where toException :: e -> SomeException fr ...

  9. 使用CXF发布的WebService报错:org.apache.cxf.interceptor.Fault: The given SOAPAction does not match an operation

    场景:JAVA语言使用CXF搭建WebService发布报错 错误信息:org.apache.cxf.interceptor.Fault: The given SOAPAction does not ...

  10. struts2 防止表单重复提交--令牌机制

    jsp: action: 配置文件: