Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

About this Documentation

Boost , Chapter 1. Geometry , Chapter 1. Geometry

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

В сообществе Boost существует несколько стилей документирования. Большинство библиотек в настоящее время используют QuickBook, документацию в стиле WikiWiki.

Повышаю. Геометрия началась с Доксигена, и во время обзора было решено перейти на QuickBook. Тем не менее, было удобно держать доксиген и там: он хорошо сочетает описания с функциональными и классовыми декларациями.

Doxygen способен генерировать XML (помимо обычного вывода HTML), содержащий всю документацию.

Поэтому задача состояла в том, чтобы перевести XML, созданный доксигеном, в QuickBook. По крайней мере, переводить его части. В настоящее время Boost содержит два инструмента, использующих XSLT для перехода от Doxygen-XML к BoostBook или QuickBook. Эти инструменты используются в Boost. Случайно и быстро. Азио (и, возможно, больше). Однако этот процесс XSLT был довольно сложным, не дал желаемых результатов, и мы все программисты на C++. Так родился еще один инструмент, на этот раз на C++ с использованием RapidXML, от Doxygen-XML до QuickBook с возможностью смешивания обоих.

The chain

Процесс выглядит следующим образом:

  1. call Doxygen переходит от C++ к XML
  2. вызов doxygen_xml2qbk для перехода из XML в QuickBook
  3. вызов bjam из QuickBook в HTML
    1. bjam переводить Скачать QuickBook для BoostBook
    2. bjam переводится с BoostBook на DocBook
    3. bjam переводится с DocBook на HTML

Эта цепочка в настоящее время называется «make_qbk.py», скрипт Python, который вызывает цепочку выше в правильном порядке. Python гарантирует, что цепочка может обрабатываться как в средах Windows, так и в Linux (возможно также вызывать все части с помощью bjam).

The reference matrix

Ссылочная матрица — единственное, что написано в BoostBook. Это XML-файл с обзором всего Boost. Функциональность геометрии. В QuickBook это невозможно, поэтому здесь используется BoostBook XML. Он включен в код QuickBook. Начало. Документация Asio содержит аналогичную справочную матрицу.

Mixing QuickBook into C++ code

С Доксигеном можно определить псевдонимы. Специально для doxygen_xml2qbk был определен псевдоним \qbk{...}. Этот псевдоним \qbk{...} добавляет некоторые XML-теги вокруг текста внутри псевдонима, так что включаемая часть распознается преобразователем.

Код C++ может выглядеть так:

/*!
\brief Some explanation
\ingroup some_group
\details Some details
\tparam Geometry Description of the template parameter
\param geometry Description of the variable
\qbk{ [include reference/more_documentation.qbk] }
 */

Во-первых, вы видите нормальные комментарии. Последняя строка использует псевдоним \qbk{...} для включения файла QuickBook. Таким образом, большая часть документации может быть написана в файле QuickBook: поведение, сложность, примеры, связанные страницы и т. Д.

В приведенном выше примере используется заявление QuickBook. Но любой код QuickBook может быть использован, код QuickBook не должен храниться в отдельном файле. Еще два образца:

/*!
...
\qbk{
[heading Example]
[area_with_strategy]
[area_with_strategy_output]
[heading Available Strategies]
[link geometry.reference.strategies.strategy_area_surveyor Surveyor (cartesian)]
}
 */

В этот пример включены фрагменты QuickBook, два заголовка, два примера (это способ QuickBook - примеры определены в другом месте) и ссылка.

QuickBook within C++ issues

Есть два вопроса: запятая и звездочка. Если в псевдониме \qbk используется запятая, она распознается Doxygen как другой параметр и, следовательно, не будет доставлять правильные результаты или приводить к ошибкам. Это легко разрешимо, убегая от запятой (поставив обратную реакцию непосредственно перед запятой, \, ). Используется в псевдониме \qbk на первой строке, также интерпретируется Доксигеном. Эту звездочку также можно избежать, и на этот раз это doxygen_qbk2xml, который обрабатывает этот выход и переводит его обратно в звездочку.

Overloads

Повышаю. Геометрия содержит множество перегрузок, две функции с одинаковым названием и, например, разное количество параметров. Или, как другой пример, конст и неконст версия. Они могут быть помечены специфически для инструмента doxygen_xml2qbk с псевдонимом \qbk, добавив специальное описание для перегрузки. Так, например, \qbk{отличить, со стратегией} приведет к тому, что на другой странице будет добавлен текст "со стратегией", и он будет обработан как "_with_strategy" в названии раздела QuickBook.

Overloads and sharing documentation

При перегрузках часть документации должна быть совместной, а другая часть - нет. Описания часто одинаковы. Но примеров, как правило, нет. Таким образом, это баланс между совместной документацией, включая общую документацию, избегая слишком большого количества отдельных файлов QuickBook, содержащих фрагменты документации, и избегая включения слишком большого количества кода QuickBook в код C++.

Doxygen aliases

При документировании большой библиотеки неизбежно, что вы должны документировать одни и те же параметры в разных местах. Например, параметр шаблона Геометрия и переменная геометрия встречаются в нашей библиотеке не менее 100 раз.

Чтобы избежать повторения одного и того же текста снова и снова, используются псевдонимы Доксигена. Таким образом, \tparam_geometry означает, что общее описание для геометрии параметров шаблона вставлено. \param_geometry делает то же самое для параметра. Всем этим занимается сам Доксиген. Также могут быть параметризированы псевдонимы, например: \return_calc{area} расширен до: Расчетная площадь

Это относится только к Доксигену и не связано с doxygen_xml2qbk или QuickBook.

QuickBook macros

QuickBook имеет одинаковую функциональность для одной и той же цели: могут быть определены макросы или шаблоны. Внутри Роста. Геометрия используется в частях документации QuickBook. Таким образом, общее правило: там, где можно использовать псевдоним Доксиген, мы используем псевдоним Доксиген. Если мы находимся за пределами доксигена и хотим определить макрос, мы используем макрос QuickBook.

В противном случае мы не используем созданную документацию Doxygen, но если бы мы это сделали, она выглядела бы правильно и не была бы нечитаемой нерасширенными макросами QuickBook.

Code examples

Мы выступаем за использование примеров кода в создаваемой документации. Примерный код должен быть правильным, поэтому примеры должны компилировать, запускать и производить правильные результаты. QuickBook имеет хорошее решение для включения и представления исходного кода C++, включая подсветку синтаксиса. Поэтому мы обычно представляем пример (полный пример, включающий необходимые заголовки) и вывод. Утверждения здесь не используются, это примеры и никаких тестов.

Вот почему мы включили в псевдоним \qbk выше:

[heading Example]
[area_with_strategy]
[area_with_strategy_output]

Мы определяем заголовок, включаем в него пример (здесь обозначается именем «area_with_strategy») и включаем вывод образца «area_with_strategy_output». Обратите внимание, что мы моделируем, что выходом является код C++, трюк, дающий соответствующее форматирование (могут быть другие способы получить тот же эффект).

Все эти примеры QuickBook включены в папки doc/src/examples/*, где также присутствует Jamfile. Бег бомжа гарантирует, что в примерах ничего не сломано.

Некоторые примеры, если они уместны, сопровождаются изображениями. Изображения генерируются самим примером (хотя и помечены как комментарии для QuickBook), доставляют файл SVG, который может быть вручную преобразован в PNG (я использую InkScape для того, что довольно удобно).


PrevUpHomeNext

Статья About this Documentation раздела Chapter 1. Geometry Chapter 1. Geometry может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 1. Geometry ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:14:39/0.0082488059997559/0