Как документировать функциональный объект с помощью doxygen? - PullRequest
9 голосов
/ 05 марта 2011

Как мне документировать функциональный объект (функтор АКА) с помощью doxygen? Это вводит в заблуждение, просто документируя это как обычный класс. Я считаю, что гораздо лучше думать о функциональном объекте как о функции с замыканием, чем о вызываемом классе.

Есть ли способ документировать функциональный объект, который соответствует моим предпочтениям?

class Adder
{
public:
   Adder( size_t x ) :
      m_x(x)
   { }

   size_t operator () ( size_t y ) const
   {
      return m_x + y;
   }

private:
   const size_t m_x;
};

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Вы можете использовать doxygen членские группы , чтобы сгруппировать все ваши функторы вместе. Может быть, что-то вроде этого будет работать:

/// @name Functors
/// @{

class Adder;

/// @}

/// Functor that adds a set value to its argument when called.
class Adder
{
public:
   Adder( size_t x ) :
       m_x(x)
   { }

   size_t operator () ( size_t y ) const
   {
      return m_x + y;
   }

private:
   const size_t m_x;
};
1 голос
/ 25 марта 2011

Документация по классу должна быть достаточной.Просто опишите цели и использование и уточните что-нибудь полезное.Слишком многословной документации очевидного можно избежать.

/*! \brief Adder functor
 *
 *  Returns size_t sum of const member and parameter
 */
class Adder
{
public:
   //! Construct with constant value for subsequent sums
   Adder( size_t x ) :
      m_x(x)
   { }

   //! Call with value to compute with constant
   size_t operator () ( size_t y ) const
   {
      return m_x + y;
   }

private:
   const size_t m_x;
};
1 голос
/ 05 марта 2011

Дайте ему документацию по классу, поместите слово функтор в первом предложении (желательно в качестве первого слова) и пропустите документацию operator(), если смысл очевиден.

Имейте в виду,: значение часто не очевидно, если operator() перегружен.

...