разрывы строки doxygen для длинных типов шаблонов c ++ - PullRequest
2 голосов
/ 24 октября 2011

У меня есть рекурсивный тип во время компиляции, который выглядит примерно так:

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 Ответ

3 голосов
/ 24 октября 2011

IMO это определенно что-то, что вы должны печатать.Включая весь тип, когда так долго плохая практика.Это решило бы проблему с кислородом, а также сделало бы намного более простой тип (я могу видеть, что опечатки легко приходят из текущего).Если это дерево глубокое, вы также должны пройти по ссылке.

В doxygen вы можете использовать более конкретные теги, такие как:

/**
 * @method name Docs.
 */

для документирования определенного фрагмента кода.Однако они обычно добавляют к автоматически генерируемым документам, и я не уверен, что вы можете полностью их перезаписать. является безобразным и нуждается в рефакторинге.

...