天嵌二次封装库使用手册  V2.1.2
dictionary.h 文件参考

Implements a dictionary for string variables. 更多...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  _dictionary_
 dictionary对象结构体 更多...
 

类型定义

typedef struct _dictionary_ dictionary
 dictionary对象结构体 更多...
 

函数

unsigned dictionary_hash (const char *key)
 计算键的hash值 更多...
 
dictionarydictionary_new (size_t size)
 创建一个dictionary对象 更多...
 
void dictionary_del (dictionary *vd)
 删除一个dictionary对象 更多...
 
const char * dictionary_get (const dictionary *d, const char *key, const char *def)
 获取dictionary对象的key值 更多...
 
int dictionary_set (dictionary *vd, const char *key, const char *val)
 设置dictionary对象的key值 更多...
 
void dictionary_unset (dictionary *d, const char *key)
 删除dictionary对象的一个key值 更多...
 
void dictionary_dump (const dictionary *d, FILE *out)
 将dictionary对象转储到已打开的文件指针中 更多...
 

详细描述

Implements a dictionary for string variables.

作者
zhengchuangyong (zheng.nosp@m.chua.nosp@m.ngyon.nosp@m.g@em.nosp@m.bedsk.nosp@m.y.ne.nosp@m.t)
版本
1.0
日期
2021-09-22
修改日志:
Date Version Author Description
2021-09-22 1.0 zhengchuangyong 第一次发布,对字典一些基本操作的函数封装.
作者
N. Devillard This module implements a simple dictionary object, i.e. a list of string/string associations. This object is useful to store e.g. informations retrieved from a configuration file (ini files).

在文件 dictionary.h 中定义.

类型定义说明

typedef struct _dictionary_ dictionary

dictionary对象结构体

此对象包含一个字符串/字符串关联的列表。每个关联都由一个唯一的字符串键来标识。通过使用哈希函数可以加快 dictionary 中值的查找速度。

函数说明

void dictionary_del ( dictionary vd)

删除一个dictionary对象

参数
vd要删除的字典对象

删除dictionary对象并释放对应存放dictionary的内存

void dictionary_dump ( const dictionary d,
FILE *  out 
)

将dictionary对象转储到已打开的文件指针中

参数
d要转储的dictionary对象
out已打开的文件指针

将dictionary对象转储到已打开的文件指针上,键值对的存储格式为 [Key]=[Value], 一行一个键值对,也可作为标准输出或标准错误输出指针.

const char* dictionary_get ( const dictionary d,
const char *  key,
const char *  def 
)

获取dictionary对象的key值

参数
d要获取key值的dictionary对象
key要从dictionary对象获取的值对应的key
def如果找不到key,返回的默认值
返回
const char* 返回一个指向获取到key的指针,找不到key,返回的默认值

该函数在dictionary对象中找到一个key,并返回一个指向其值的指针,或者如果在dictionary中没有找到该key,则返回传递的默认指针。返回的字符指针指向dictionary对象内部的数据,不应该尝试释放或修改它。

unsigned dictionary_hash ( const char *  key)

计算键的hash值

参数
key要计算hash的键
返回
unsigned 成功返回一个至少32位的无符号int,失败返回0

这个哈希函数取自Dr Dobbs Journal上的一篇文章。这通常是一个无碰撞的函数,均匀地分布键。密钥都存储在结构中,以便通过最后比较密钥本身来避免碰撞。

dictionary* dictionary_new ( size_t  size)

创建一个dictionary对象

参数
sizedictionary大小
返回
dictionary* 返回一个指向新创建dictionary对象的指针

此函数分配一个给定大小的新dictionary对象并返回它。如果事先不知道dictionary对象的条目数,请指定大小为0。

int dictionary_set ( dictionary vd,
const char *  key,
const char *  val 
)

设置dictionary对象的key值

参数
vd要设置值的dictionary对象
key要修改或添加的key
val要添加的值
返回
int 成功返回0,失败返回非0

如果在dictionary对象中找到了给定的key,则关联的值将被提供的值替换。如果在dictionary中找不到该key,则将其添加到其中。

为val提供一个NULL值也可以了,但是NULL值在dictionary或key中被认为是错误的:在这种情况下,函数将立即返回。

注意,如果将一个变量dictionary_set为NULL,则调用dictionary_get将返回一个NULL值:将找到该变量, 并返回其值(NULL)。换句话说,将变量内容设置为NULL相当于从dictionary对象中删除该变量。(在此实现中)不可能在字典中拥有一个没有值的密钥。

void dictionary_unset ( dictionary d,
const char *  key 
)

删除dictionary对象的一个key值

参数
d要修改的dictionary对象
key要删除的key

此函数将删除dictionary中的一个key。如果找不到key,则什么也不做。