32 lines
1.1 KiB
C
32 lines
1.1 KiB
C
/* spl_dumptree.h 可配置的树形打印模块(只用基本 ASCII)*/
|
||
|
||
#ifndef __SPL_DUMPTREE_H__
|
||
#define __SPL_DUMPTREE_H__
|
||
|
||
#include <stddef.h>
|
||
#include <stdio.h>
|
||
|
||
/* 可配置的缩进字符串 */
|
||
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__ */
|