¿Existe alguna forma conveniente de documentar un concepto de C++ en doxygen? Me gustaría tener algún tipo de documentación como this in the boost documentation.¿Documentando un concepto de C++ usando doxygen?
Respuesta
Lo que puede hacer es definir una etiqueta personalizada llamada Concepto, que luego puede usar como describe. Un example esto es utilizar el mecanismo de alias en Doxygen, algo así como:
ALIASES + = "con = \ xrefitem con \" Concepto \ "\ "Conceptos \""
Puede usar \tparam
para comentar/documentar en template parameters.
Podría usar '\ tparam' para decir que la clase instanciando este parámetro de plantilla debería implementarse en términos del concepto xyz. Pero, ¿cómo documentar el concepto en sí? – proto
No estoy seguro de entender lo que estás buscando. Puede hacer una '\ note' que diga que el concepto xyz es fulano, pero que probablemente no sea el mejor lugar para escribir la documentación del concepto en sí. Si tiene una clase/estructura real para el concepto, puede escribir la documentación como lo haría con cualquier otra clase – Attila
Dado que no hay forma de especificar un concepto usando C++ (hasta el momento) no hay clase (o archivo)) describiendo el concepto. Solo hay clases que lo implementan. Me preguntaba si existe una forma establecida de eludir esto e incluir documentación para conceptos en mi producción de doxígeno. – proto
que actualmente utilizan las páginas de manual separadas para documentar conceptos y agrupar el con \section
y \subsection
. Luego puedo vincularlos con \ref
. Esto funciona siempre que describa conceptos con tablas como en el enlace que proporcionó, pero desafortunadamente no habilitará enlaces a secciones individuales.
También tengo un alias para crear una lista de conceptos que un tipo modela.
+1 porque tu respuesta me ayudó a hacer referencia a mis secciones. –
Después de algunos problemas con Doxygen, finalmente llegué a la siguiente solución.
definir un grupo para su concepto: el uso de páginas no es adecuada, ya que una página debe indicar sus subpáginas (de arriba a abajo del árbol), mientras que los grupos potencialmente indican muchos grupos de padres. Esto permite:
- Adición de un concepto a una (o más) concepto (s) de los padres, sin cambiar el concepto de matriz misma (refinamiento/generalización de conceptos)
- La vinculación de una entidad a varios conceptos, sin cambiar la concepto en sí (por ejemplo., cuando la adición de una clase a la biblioteca de la aplicación de un concepto específico)
ejemplo
/*[email protected] measurement_functor_concepts Measurement function objects * @ingroup generalconcepts * @{ * @par Description * blablabla * * @par Notations * Let @c F be the type of the function object, @c f an instance. * * @par Valid Expressions * - @c f function object is ... * - <b>f.result()</b> returns ... * @} */
Definir una comando personalizado
concept
con un argumento:ALIASES += concept{1}="@ingroup \1\[email protected] Implemented concepts:\[email protected] \1"
El comando:
- incluye la entidad en el grupo que define el concepto: la entidad aparecerá en la documentación del concepto (la entidad descrita en diversos grupos)
- agrega un párrafo con
Implemented concepts
que proporciona un enlace al concepto implementado.
indicar que una clase/estructura particular, implementa el concepto:
//[email protected] Does things... //[email protected]{measurement_functor_concepts} template <class T> struct my_struct: public std::unary_function<T, void> {};
no he encontrado una manera de generar una buena documentación como en Boost (mesas buenas para la expresión válida, etc.), pero al menos esta organización de la documentación separa las cosas correctamente.
que sugiere considerar los siguientes:
a) Mira la documentación para el Documento de Boost Comprobación de la biblioteca. Esta documentación muestra cómo crear una clase que se pueda usar en el código para verificar que, en realidad, cumple con los requisitos del concepto que desea definir. Se utiliza de esta manera:
template<typename T>
my_class{
MyConcept(T); // provokes compile error if T does not match concept
T m_t;
};
FYI hay una correspondencia uno a uno entre los elementos utilizados en la creación de la clase concepto de cheques y los conceptos y propuestas Lite. Entonces, cuando los conceptos lite realmente funcionan, la transición debería ser fácil.
b) Ahora use DOxygen para documentar la clase de control MyConcept !!!
c) Uso Doxygen/tparam en my_class documentación para referirse a MyConcept
c) Así que ahora tiene exactamente lo que estás pidiendo !!! - una página separada para su concepto, y la capacidad de referencia de todas las clases que requieren ese concepto.
- 1. Documentando funciones en C++ con Doxygen
- 2. Usando Doxygen Correctamente
- 3. PHPdoc: ¿Documentando métodos encadenables?
- 4. Concepto de horquilla en C#
- 5. documentando el conjunto de datos con roxygen2
- 6. C++ verificación de concepto vs herencia
- 7. Concepto de clase privada en C#
- 8. Categorías de Doxygen y Objective-C
- 9. Documentando setAs() y setOldClass() con Roxygen
- 10. variables de Documentación con Doxygen en C
- 11. ¿Es el hilo un concepto de Windows?
- 12. Doxygen no encontrará los encabezados en subdir
- 13. Documentando funciones del setter con roxygen
- 14. Dificultad en concepto NULL en C?
- 15. Concepto de 'Ignorar posibles coincidencias'
- 16. Doxygen para un proyecto administrado con git?
- 17. ¿Funciona Lazy C++ (lzz) bien con Doxygen?
- 18. Doxygen documentación C++ plantilla en línea
- 19. ¿Se puede integrar Doxygen con Netbeans C++?
- 20. concepto de concepto de página maestra en python
- 21. Software de viaje. ¿Es eso un concepto?
- 22. ¿Drools Fusion tiene un concepto de "ahora"?
- 23. Cómo documentar el código de Ruby usando Doxygen?
- 24. Doxygen con el modificador de acceso interno C#
- 25. Groovy Concepto de cierre
- 26. Doxygen: varios bloques MainPage \ en un proyecto
- 27. Emacs + C/C++ + Doxygen: ¿alternativa a doxymacs? Con yasnippet?
- 28. ¿Cómo debo clasificar un typedef con Doxygen?
- 29. entendimiento concepto de libre
- 30. documentando los parámetros de los scripts de shell
Lo siento, pero no es obvio cómo la definición de un alias ayuda en la documentación de conceptos. ¿Puedes ampliar esta respuesta, quizás con un ejemplo? –