[Doxygen-develop] Patches for doxygen
Brought to you by:
dimitri
From: Brendon C. <bc...@av...> - 2007-04-22 23:54:26
|
Hi all, I have been working on a project that interoperates with Doxygen to produce accurate/complete documentation of C++ exception propagation. Anyhow, in order to get my project to work I have had to make a few patches to doxygen. In particular the patches include: ----------------- * Facility to match template types with "explicit" parameters for defaults. For example: void Function(std::vector<int>&); can now be identified using: void Function(std::vector<int,std::allocator<int> >&) This works recursively and matches as best it can. ----------------- * Merging of two sets of documentation for a single node. For example: /** \brief Brief 1. * * Detailed 1. */ void Function(); /** \fn Function1() * \brief Brief 2. * * Detailed 2. */ The patch will attempt to merge the two documentation blocks instead of just ignoring the second. The resulting detailed section will include: Detailed 1. Detailed 2. Where as the brief will only keep the first brief found. This is because I could not think of a good way to merge two brief sections. I may later choose to merge the second brief as a part of the detailed section so it is not lots completely. ----------------- * Updated processing of input source files to be processed in the order they are declared in the doxygen configuration file instead of alphabetical order. This was necessary because of the previous patch. I.e. the order of processing was important to ensure that the "correct" brief description was used for the documentation. ----------------- * Type matches can now ignore a reference parameter to obtain a match. This is generally not a good idea. I can understand if this patch is not accepted. I had to do it because of a limitation in my project. The reasons for this are described below: int BackFunction(std::string); class C { int Function(std::string s) { return BackFunction(s); } }; The above code when compiled with GCC will be MODIFIED internally by the compiler to look like: int BackFunction(std::string); class C { int Function(std::string& s) { return BackFunction(s); } }; Notice the & added after the std::string. My project uses GCC to generate data files that are then processed and as such when it emits the results, the function is emitted like: int C::Function(std::string&) which doxygen does not consider the same as: int C::Function(std::string) For good reason as it is NOT the same. Anyhow i needed to support this (at least for now). I can understand if this would not be accepted into doxygen as a result. I need to speak with the GCC devs more to find out if there is a method of obtaining the actual declared name for the above function that does not include the &. Would the doxygen community be interested in accepting some or all of these patches? If so i will have to clean them up a little first (I used STL strings and lists as I am comfortable with them and have never used the QT ones before, so i will have to update the code to make use of the QT utilities before submission of the patch). For a reference the project is called EDoc++ http://edoc.sourceforge.net/ Thanks, Brendon. |