|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
文件路径树 更多...
#include <path_tree.hpp>
类 | |
| class | node |
| 路径树节点 更多... | |
| struct | scan_options |
| 文件系统扫描选项 更多... | |
Public 类型 | |
| enum class | node_type : uint8_t { unknown = 0 , directory = 1 , file = 2 , symlink = 3 } |
| 节点类型枚举 更多... | |
| enum class | visit_result : uint8_t { proceed = 0 , skip = 1 , stop = 2 } |
| 遍历控制指令 更多... | |
| using | visitor = function<visit_result(const node&)> |
| 节点访问回调类型 | |
| using | filter = function<bool(const node&)> |
| 节点过滤器类型 | |
Public 成员函数 | |
| path_tree (path root_path) | |
| 从路径构造树 | |
| NEFORCE_NODISCARD node::ptr | root () const noexcept |
| 获取根节点 | |
| NEFORCE_NODISCARD bool | empty () const noexcept |
| 树是否为空 | |
| NEFORCE_NODISCARD size_t | size () const |
| 获取树中节点总数 | |
| NEFORCE_NODISCARD size_t | max_depth () const |
| 获取树的最大深度 | |
| NEFORCE_NODISCARD node::ptr | find (const path &p) const |
| 通过绝对路径查找节点 | |
| NEFORCE_NODISCARD vector< node::ptr > | find_all (string_view name) const |
| 通过文件名查找所有匹配节点 | |
| NEFORCE_NODISCARD vector< node::ptr > | find_if (const filter &f) const |
| 通过过滤器查找所有匹配节点 | |
| NEFORCE_NODISCARD vector< node::ptr > | find_by_extension (string_view ext) const |
| 通过扩展名查找所有文件节点 | |
| void | traverse_dfs (const visitor &visitor) const |
| 深度优先遍历(前序) | |
| void | traverse_bfs (const visitor &visitor) const |
| 广度优先遍历 | |
| void | traverse_files (const visitor &visitor) const |
| 仅遍历文件节点(深度优先) | |
| void | traverse_dirs (const visitor &visitor) const |
| 仅遍历目录节点(深度优先) | |
| node::ptr | insert (const path &p, node_type type=node_type::file) |
| 手动插入路径节点 | |
| bool | remove (const path &p) |
| 移除指定路径的节点及其子树 | |
| void | merge (const path_tree &other) |
| 将另一棵树合并到当前树 | |
| NEFORCE_NODISCARD path_tree | subtree (const path &p) const |
| 获取以指定路径为根的子树 | |
| NEFORCE_NODISCARD path_tree | prune (const filter &f) const |
| 按过滤器裁剪树,返回只含满足条件节点的新树 | |
| NEFORCE_NODISCARD vector< path > | all_paths () const |
| 收集树中所有路径 | |
| NEFORCE_NODISCARD vector< path > | all_file_paths () const |
| 收集树中所有文件路径 | |
| NEFORCE_NODISCARD vector< path > | all_dir_paths () const |
| 收集树中所有目录路径 | |
| NEFORCE_NODISCARD string | to_string () const |
| 将树格式化为可读字符串 | |
| NEFORCE_NODISCARD string | to_string (string_view indent) const |
| 将树格式化为可读字符串 | |
| Public 成员函数 继承自 istringify< path_tree > | |
| NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 string | to_string () const |
| 转换为字符串 | |
静态 Public 成员函数 | |
| static NEFORCE_NODISCARD path_tree | scan (const path &root, const scan_options &options) |
| 从文件系统扫描构建路径树 | |
文件路径树
以树形结构表示文件系统中的目录层次。每个节点对应一个路径, 可包含子节点(子目录或文件)。支持:
在文件 path_tree.hpp 第 36 行定义.
| using path_tree::filter = function<bool(const node&)> |
| using path_tree::visitor = function<visit_result(const node&)> |
|
strong |
|
strong |
|
inlineexplicit |
通过绝对路径查找节点
| p | 要查找的路径 |
| NEFORCE_NODISCARD vector< node::ptr > path_tree::find_all | ( | string_view | name | ) | const |
| NEFORCE_NODISCARD vector< node::ptr > path_tree::find_by_extension | ( | string_view | ext | ) | const |
通过扩展名查找所有文件节点
| ext | 扩展名 |
通过过滤器查找所有匹配节点
| f | 过滤器 |
| node::ptr path_tree::insert | ( | const path & | p, |
| node_type | type = node_type::file ) |
| NEFORCE_NODISCARD size_t path_tree::max_depth | ( | ) | const |
获取树的最大深度
| void path_tree::merge | ( | const path_tree & | other | ) |
将另一棵树合并到当前树
| other | 要合并的树(根路径需与当前树兼容) |
将other中的所有节点合并入当前树,重复节点不覆盖。
按过滤器裁剪树,返回只含满足条件节点的新树
| f | 过滤器 |
若某目录下所有子节点均被过滤,该目录节点也被移除。
| bool path_tree::remove | ( | const path & | p | ) |
移除指定路径的节点及其子树
| p | 要移除的路径 |
|
static |
| NEFORCE_NODISCARD size_t path_tree::size | ( | ) | const |
获取树中节点总数
获取以指定路径为根的子树
| p | 子树根路径 |
返回以p为根的独立路径树副本。
| NEFORCE_NODISCARD string path_tree::to_string | ( | ) | const |
将树格式化为可读字符串
| NEFORCE_NODISCARD string path_tree::to_string | ( | string_view | indent | ) | const |
将树格式化为可读字符串
| indent | 每层缩进字符串,默认为两个空格 |
| void path_tree::traverse_bfs | ( | const visitor & | visitor | ) | const |
广度优先遍历
| visitor | 访问回调 |
| void path_tree::traverse_dfs | ( | const visitor & | visitor | ) | const |
深度优先遍历(前序)
| visitor | 访问回调 |
对树中每个节点调用visitor, 根据返回值控制遍历行为(proceed/skip/stop)。
| void path_tree::traverse_dirs | ( | const visitor & | visitor | ) | const |
仅遍历目录节点(深度优先)
| visitor | 访问回调 |
| void path_tree::traverse_files | ( | const visitor & | visitor | ) | const |
仅遍历文件节点(深度优先)
| visitor | 访问回调 |