/* spl_dumptree.h 可配置的树形打印模块(只用基本 ASCII)*/ #ifndef __SPL_DUMPTREE_H__ #define __SPL_DUMPTREE_H__ #include #include /* 可配置的缩进字符串 */ typedef struct { const char *vertical; /* "| " */ const char *branch; /* "|-" */ const char *last_branch; /* "`-" */ const char *space; /* " " */ } spl_dumptree_style_t; /* 默认 ASCII 风格 */ extern const spl_dumptree_style_t spl_dumptree_ascii_style; /* 打印一行节点标签:prefix + 分支符 + label * prefix 已累积的缩进骨架(不含分支符) * is_last 本节点是否为同级最后一个子节点 * fmt printf 风格 label */ void spl_dumptree_print(const spl_dumptree_style_t *st, const char *prefix, int is_last, const char *fmt, ...); /* 生成子节点的缩进骨架:parent_prefix + (parent_is_last ? space : vertical) */ void spl_dumptree_child_prefix(const spl_dumptree_style_t *st, const char *prefix, int is_last, char *out, size_t cap); #endif /* __SPL_DUMPTREE_H__ */