#include <token_tree.hpp>
256 叉树最大匹配查找算法,该算法具有通用性及非常高的性能(比哈希性能还高), 通过将字符串映射到 256 叉树上进行匹配查找
在文件 token_tree.hpp 第 69 行定义.
◆ 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 | ) |
|
根据键值精确查找匹配的节点
- 参数
-
- 返回
- {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 创建的截止符数组
- 参数
-
◆ get_tree()
ACL_TOKEN* acl::token_tree::get_tree |
( |
void |
| ) |
const |
|
inline |
◆ 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 项
- 参数
-
- 返回
- {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 是否非空,如果非空则使用其做为截止符
该类的文档由以下文件生成: