Документирование значений класса enum с помощью doxygen

в моем проекте я много использую класс enum, и я использую doxygen в качестве системы документации. Мне очень сложно создать документацию классов перечислений, когда несколько классов перечислений объявлены в одном файле и имеют одни и те же члены. Например, следующий код не генерирует правильную документацию для перечисления класса IMAGE_REPORTING в окончательном выводе HTML:

namespace mapper
{
  /* CONNECTION RELATED */
  /** @enum mapper::SECURE_WEBSOCKET
   *  author Michele Adduci
   *  ingroup Core
   *  @brief is a strongly typed enum class representing the status of websocket connection
   *  @var mapper::SECURE_WEBSOCKET::DISABLED
   *  is coded as std::int8_t of value 0
   *  @var mapper::SECURE_WEBSOCKET::ENABLED
   *  is coded as std::int8_t of value 1
   */
  enum class SECURE_WEBSOCKET : std::int8_t {DISABLED = 0, ENABLED = 1};

  /* IMAGE RELATED */
  /** @enum mapper::IMAGE_REPORTING
   *  author Michele Adduci
   *  ingroup Core
   *  @brief is a strongly typed enum class representing the status of image reporting
   *  @var mapper::IMAGE_REPORTING::DISABLED
   *  is coded as std::int8_t of value 0
   *  @var mapper::IMAGE_REPORTING::ENABLED
   *  is coded as std::int8_t of value 1
 */
  enum class IMAGE_REPORTING : std::int8_t {DISABLED = 0, ENABLED = 1};
}

выход: Doxygen output

есть идеи, в чем проблема?

2 ответов


вы можете использовать встроенную документацию, которая работает для меня:

/** @enum mapper::IMAGE_REPORTING
 *  \author Michele Adduci
 *  \ingroup Core
 *  @brief is a strongly typed enum class representing the status of image reporting
 */
enum class IMAGE_REPORTING : std::int8_t {
  DISABLED = 0, /**< is coded as std::int8_t of value 0 */
  ENABLED = 1   /**< is coded as std::int8_t of value 1 */
}

и аналогично для других.


У меня была аналогичная проблема с глобальной перечислений. Некоторые файлы заголовков создали ссылку для перечислений, а другие файлы заголовков-нет. Вы должны явно указать файл.

вот выдержка из этой страницы в документации. http://www.stack.nl / ~Дмитрий / doxygen / руководство / docblocks.html#memberdoc

для документирования глобальной функции C, typedef, перечисления или препроцессора определение сначала необходимо задокументировать файл, который его содержит (обычно это будет файл header, потому что этот файл содержит информацию экспортируется в другие исходные файлы).

внимание Повторим это, потому что это часто упускается из виду: чтобы документировать глобальные объекты (функции, typedefs, перечисление, макросы и т. д.), Вы должны документ-файл, в котором они определены. Другими словами, там должно быть, по крайней мере

/*! \file */ 

or a

/** @file */ 

line in this file.