У меня есть класс, который на самом деле не существует, но определяется через макрос:
#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.