如何使doxygen只记录从包中导出的tcl函数

如何使doxygen只记录从包中导出的tcl函数,tcl,doxygen,Tcl,Doxygen,有没有一种简单的方法可以让doxygen只记录从包中导出的tcl函数。配置文件中的命令可能?在Tcl成为受支持的语言之前,我以前使用doxygen生成Tcl文档。有一个用于处理输入文件的配置选项 FILTER_PATTERNS = *.tcl=bin\tcl_converter.bat 其中bin\tcl\u converter.bat只是启动自定义处理器的批处理脚本。我们使用它将tcl语法更改为doxygen在添加tcl支持之前能够理解的内容。但是,您可以在这里使用它来删除所有未导出的方法。

有没有一种简单的方法可以让doxygen只记录从包中导出的tcl函数。配置文件中的命令可能?

在Tcl成为受支持的语言之前,我以前使用doxygen生成Tcl文档。有一个用于处理输入文件的配置选项

FILTER_PATTERNS = *.tcl=bin\tcl_converter.bat
其中bin\tcl\u converter.bat只是启动自定义处理器的批处理脚本。我们使用它将tcl语法更改为doxygen在添加tcl支持之前能够理解的内容。但是,您可以在这里使用它来删除所有未导出的方法。编写一个处理器来删除所有未导出的进程是非常简单的。比如:

  • 将输入文件(它将作为[lindex$argv 0]传递)读取到 行数组
  • 在所有行中循环查找导出命令
  • 在所有行中循环查找过程,并与上面列出的导出命令匹配
  • 以字符串形式保存所有当前过程及其前导,并写入输出 如果与导出的命令匹配,则在结尾处添加文件
  • 一个合适的解析器可以使这变得简单,但可能有些过分。您可以只查找名称空间的开头和进程的开头,然后设置一个状态机。启动名称空间后,只需将每一行追加到字符串,然后使用info complete$cumulated\ns\u string进行测试。类似地,一旦看到proc命令,开始将行累加到不同的字符串中,并在每行之后使用info complete$contracted\u proc\u string进行检查。一旦该值为true,就可以打印或不打印并重置字符串

    使用info complete将大大简化生活-所有的技巧都是跟踪名称空间,并根据完全限定的导出名称评估完全限定的进程名称,以确定是否将其打印到输出文件中。有一些病态的代码发生在命名空间或动态生成的导出之外的情况,但在我以前的工作中,这种方法对我们抛出的所有东西都非常有效