Функции документа, определенные с помощью макроса в Doxygen

У меня есть класс, который на самом деле не существует, но определяется через макрос:

#define DEFCLASS(name,datatype) Class name { \
    public: \
        void clear(); \
        datatype obj; \
    };
DEFMETHOD(StringContainer, const char*)

...

StringContainer foo("hi!");

Конечно, его нужно было реализовать с помощью шаблонов, но я его не писал, Я не могу изменить его, и на него опирается большая кодовая база.

Теперь вопрос в том, я хотел бы задокументировать StringContainer в doxygen. Однако это не реально существующий класс, поэтому, если я это сделаю:

/*!
    \class StringContainer
    \brief A string container

    \fn void StringContainer::clear()
    \brief Clears the container
*/

я получить предупреждения doxygen:

warning: documented function `StringContainer::clear' was not declared or defined.

И в документации нет этой функции. Я знаю, что это немного сложно, но есть ли способ заставить doxygen «верить» и создать документацию для StringContainer, даже если он не определен в исходный код?

РЕШЕНИЕ

Можно создать поддельные файлы .h, чтобы заставить doxygen поверить в существование класса, не позволяя системам сборки включать его. Эти файлы могут иметь расширение .dox. Кстати, я собираюсь создать файл .dox, включающий определение класса и документацию:

class StringContainer {
public:
    /*! Removes the contents of the container. */
    void clear();
    const char *obj;
};

Этот файл на самом деле не будет включен в bu ild, и его единственной целью будет документирование StringContainer.

6
задан Jason Williams 12 May 2012 в 08:18
поделиться