用于lenghty c ++模板类型的doxygen换行符

时间:2011-10-24 14:19:31

标签: c++ templates doxygen

我有一个编译时递归类型,看起来有点像这样:

template <typename DataType, typename LeftNode, typename RightNode>
struct fixed_tree{
    fixed_tree(const DataType& data, const LeftNode& left, const RightNode& right) :     data_(data),left_(left),right_(right){}
    DataType data_;
    LeftNode left_;
    RightNode right_;
};

该类对于左/右节点为空的各种叶节点有一些特殊性,但这并不重要。

然后将此递归类作为参数传递给创建有点冗长类型名的函数。

namespace some_namespace{
void some_function(int some_param0, int some_param1, fixed_tree<std::string,
                                                        fixed_tree<int, 
                                                            fixed_tree<float, void, void >,
                                                            fixed_tree<double, void, void > 
                                                            >,
                                                        fixed_tree<int,
                                                            fixed_tree<double,void,
                                                                fixed_tree<char, 
                                                                    fixed_tree<int, void,void>,
                                                                    fixed_tree<int, void,void>
                                                                > >,
                                                            void 
                                                            >   
                                                        > somewhat_lengthy_type
                );

当我通过Doxygen运行时,函数文档非常糟糕地溢出了这条线。

Overflowing line 1 Overflowing line 2

我的问题是:有没有办法在doxygen注释块之外提示/强制换行符,以便文档中的外观类似于源代码中的内容。

我对以下解决方案不是很感兴趣:

使用typedef。尽管该示例不共享此特征,但实际类型形成了一种不言自明的语法,实际上有助于理解界面的作用。

自定义CSS。很高兴避免弄乱那些不是doxygen标签的东西。

1 个答案:

答案 0 :(得分:3)

IMO 肯定是你应该输入的东西。包括整个类型这么长时间是不好的做法。这样做可以解决doxygen问题,以及制作更简单的类型(我可以很容易地看到来自当前错字的错字)。如果那棵树很深,你也应该通过参考传递。

在doxygen中,您可以使用更具体的标签,例如:

/**
 * @method name Docs.
 */

记录特定的代码。这些通常会添加到自动生成的文档中,但我不确定您是否可以完全覆盖这些文档。

很简单,它在您的代码/文档中看起来很丑陋的事实应该是一个巨大的提示,它 丑陋且应该重构。