acl  3.5.3.0
acl::token_tree类 参考

#include <token_tree.hpp>

+ 类 acl::token_tree 继承关系图:
+ acl::token_tree 的协作图:

Public 成员函数

 token_tree (void)
 
 ~token_tree (void)
 
bool insert (const char *key, void *ctx=NULL)
 
void * remove (const char *key)
 
const token_nodefind (const char *key)
 
const token_nodesearch (const char **text, const char *delimiters=NULL, const char *delimiters_tab=NULL)
 
const token_nodefirst_node (void)
 
const token_nodenext_node (void)
 
ACL_TOKENget_tree (void) const
 

静态 Public 成员函数

static char * create_delimiters_tab (const char *delimiters)
 
static void free_delimiters_tab (char *delimiters_tab)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

256 叉树最大匹配查找算法,该算法具有通用性及非常高的性能(比哈希性能还高), 通过将字符串映射到 256 叉树上进行匹配查找

在文件 token_tree.hpp69 行定义.

构造及析构函数说明

◆ token_tree()

acl::token_tree::token_tree ( void  )

◆ ~token_tree()

acl::token_tree::~token_tree ( void  )

成员函数说明

◆ create_delimiters_tab()

static char* acl::token_tree::create_delimiters_tab ( const char *  delimiters)
static

创建截止符数组

参数
delimiters{const char*} 截止符字符串
返回
{char*} 根据截止符字符串创建的截止符数组

◆ find()

const token_node* acl::token_tree::find ( const char *  key)

根据键值精确查找匹配的节点

参数
key{const char*} 键值
返回
{const token_node*} 返回 NULL 表示未找到匹配项

◆ first_node()

const token_node* acl::token_tree::first_node ( void  )

遍历 256 匹配树时需先调用本方法获得第一个节点对象

返回
{token_node*}

◆ free_delimiters_tab()

static void acl::token_tree::free_delimiters_tab ( char *  delimiters_tab)
static

释放由 create_delimiters_tab 创建的截止符数组

参数
delimiters_tab{char*}

◆ get_tree()

ACL_TOKEN* acl::token_tree::get_tree ( void  ) const
inline

获得 C 版本的 256 叉树对象

返回
{ACL_TOKEN*}

在文件 token_tree.hpp144 行定义.

145  {
146  return tree_;
147  }

◆ insert()

bool acl::token_tree::insert ( const char *  key,
void *  ctx = NULL 
)

添加一个新的项

参数
key{const char*} 键值
ctx{void*} 该 key 所绑定的对象,可以为空
返回
{bool} 添加是否成功,返回 false 表明相同 key 已存在

◆ next_node()

const token_node* acl::token_tree::next_node ( void  )

遍历 256 匹配树时需先调用本方法获得下一个节点对象

返回
{token_node*}

◆ remove()

void* acl::token_tree::remove ( const char *  key)

从匹配树中删除指定的 key 项

参数
key{const char*} 键值
返回
{void*} 返回添加时绑定的对象地址

◆ search()

const token_node* acl::token_tree::search ( const char **  text,
const char *  delimiters = NULL,
const char *  delimiters_tab = NULL 
)

按字符串最大匹配模式从匹配中查找与所给文本字符串相匹配的节点,同时 移动文本字符串的指针位置

参数
text{const char**} 要匹配查找的文本字符串,在匹配过程中,该 地址指针会被移动至下一位置
delimiters{const char*} 非 NULL 时指定的截止符字符串,即查 找过程中只要遇到的字符在该截止字符串中,则返回本次查找的结果
delimiters_tab{const char*} 非 NULL 时指定的截止符字符数组, 即查找过程中只要遇到的字符在该截止字符数组中,则返回本次查找的结果,该数组 必须由 create_delimiters_tab 创建,由 free_delimiters_tab 释放
返回
{token_node*} 返回 NULL 表示本次查找未找到匹配项,通过检查 *text 是否为 '\0' 表示是否匹配完毕目标文本字符串 注:当 delimiters 非空时优先使用 delimiters 做为截止符,否则再检查 delimiters_tab 是否非空,如果非空则使用其做为截止符

该类的文档由以下文件生成: