summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Added declfile, declline, and declcolumn attributes to the location element ↵Dimitri van Heesch2019-01-1230-439/+680
| | | | in the XML output
* Merge pull request #6738 from albert-github/feature/issue_6733Dimitri van Heesch2019-01-107-67/+188
|\ | | | | issue #6733 invalid cite anchor id when using crossref
| * issue #6733 invalid cite anchor id when using crossrefalbert-github2019-01-041-20/+45
| | | | | | | | Also test 050 was hit by the change of samlpe.bib
| * issue #6733 invalid cite anchor id when using crossrefalbert-github2019-01-046-47/+143
| | | | | | | | | | | | | | The crossreference possibility was not properly taken into account in bibtex conversion for other formats than LaTeX. - doxygen.bst: use correct labels (i.e. add 'CITEREF_' in case of crossreferences to the giver name) - cite.cpp: add the crossreferences to the citation dictionary (to overcome warning message). - extending test 012
* | Merge pull request #6740 from albert-github/feature/issue_6727Dimitri van Heesch2019-01-101-1/+1
|\ \ | | | | | | issue #6727 SHOW_NAMESPACES = NO breaks latex PDF
| * | issue #6727 SHOW_NAMESPACES = NO breaks latex PDFalbert-github2019-01-051-1/+1
| | | | | | | | | | | | Only write the namespace index file reference (i.e. namespaces.tex , namespaces.rtf) to the overall file (i.e. refman.tex. refman.rtf) in case SHOW_NAMESPACES is set and there are namespaces.
* | | Merge pull request #6757 from albert-github/feature/issue_6754Dimitri van Heesch2019-01-101-1/+1
|\ \ \ | | | | | | | | issue #6754 False positives for "multiple @param sections"
| * | | issue #6754 False positives for "multiple @param sections"albert-github2019-01-081-1/+1
| | | | | | | | | | | | | | | | Don't add the argument to list of parameters in case of a non-parameter call (i.e. retval call)
* | | | Merge pull request #6761 from albert-github/feature/bug_xhtml_briefDimitri van Heesch2019-01-101-0/+4
|\ \ \ \ | | | | | | | | | | Terminating brief command
| * | | | Terminating brief commandalbert-github2019-01-101-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The brief command is intended for a small description of a function / class / namespace etc. and not to have extensive formulas or code snippets. These commands should terminate the brief description and start the detailed section. The commands `\snippet` and `\snippetlineno` are added to the list of commands to terminate the brief description. The commands `\f[` and `\f{` are handled separately but now also start a detailed description. The `\f$` is just for small formulas and thus possible in a brief description.
* | | | | Merge pull request #6762 from albert-github/feature/bug_no_plantumlDimitri van Heesch2019-01-101-0/+1
|\ \ \ \ \ | |/ / / / |/| | | | Don't write the plantuml cache file in case there are no plantuml diagrams.
| * | | | Don't write the plantuml cache file in case there are no plantuml diagrams.albert-github2019-01-101-0/+1
|/ / / /
* | | | Merge branch 'cheoljoo-run_java_once_3rd_trial'Dimitri van Heesch2019-01-0810-83/+417
|\ \ \ \
| * \ \ \ Merge branch 'run_java_once_3rd_trial' of ↵Dimitri van Heesch2019-01-089-183/+162
| |\ \ \ \ | | | | | | | | | | | | | | | | | | https://github.com/cheoljoo/doxygen into cheoljoo-run_java_once_3rd_trial
| | * | | | remove PLANTUML_RUN_FAST because FAST is default.Charles.Lee2019-01-063-128/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - remove PLANTUML_RUN_FAST in config.xml - Do not make plantuml (.pu) file for each plantuml script. (ex. inline_umlgraph_#.pu) But, make type plantuml files (ex. inline_umlgraph_<type>..pu)
| | * | | | Fast PlantumlCharles.Lee2019-01-011-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Test Result The example has 5 plantumls. | Test Type | Original | PLANTUML_RUN_FAST | Modify One Plantuml | |---------------------------|------------|-------------|-----------------| | Elapsed Time | 23.370 sec | 7.349 sec | 4.652 sec | | external tools Time | 23.020 sec | 6.819 sec | 4.301 sec | # Test Environments (How to test) - The example has 5 plantumls. ## Original Configration - I follow the original path to process plantuml. - Configuration of Doxyfile - OUTPUT_DIRECTORY = OUTPUT - SOURCE_BROWSER = YES - GENERATE_HTML = YES only set the html - GENERATE_LATEX = NO - Run - $ doxygen -d time ## PLANTUML_RUN_FAST - Changed Configuration of Doxyfile - PLANTUML_RUN_FAST = YES ## Modify One Plantuml - Modify one plantuml in 5 plantuml of example with the same environment of PLANTUML_RUN_TEST # How to Reduce the performance ## PLANTUML_RUN_FAST - Make Just one pu (plantuml) file to run java once - Just run once when we generate HTML. ### another test with setting YES to all GENERATE_* - When we generate several types , we run java several times according the different java arguments. - set YES to all GENERATE_* - There are 20 plantuml in this example and configuration. But, it runs java just 4 times. ```text Executing external command `java -Djava.awt.headless=true -jar "/Users/cheoljoo/bin/plantuml.jar" -o "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/docbook" -charset UTF-8 -tpng "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/docbook/inline_umlgraph_pngdocbook.pu" ` 10.019 sec: Running PlantUML on png PlantumlFiles in html Executing external command `java -Djava.awt.headless=true -jar "/Users/cheoljoo/bin/plantuml.jar" -o "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/html" -charset UTF-8 -tpng "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/html/inline_umlgraph_pnghtml.pu" ` 17.906 sec: Running PlantUML on png PlantumlFiles in rtf Executing external command `java -Djava.awt.headless=true -jar "/Users/cheoljoo/bin/plantuml.jar" -o "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/rtf" -charset UTF-8 -tpng "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/rtf/inline_umlgraph_pngrtf.pu" ` 25.842 sec: Running PlantUML on eps PlantumlFiles in latex Executing external command `java -Djava.awt.headless=true -jar "/Users/cheoljoo/bin/plantuml.jar" -o "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/latex" -charset UTF-8 -teps "/Users/cheoljoo/Code/github/doxygen/build/bin/B/OUTPUT/latex/inline_umlgraph_epslatex.pu" ` ``` ## Modify One Plantuml - Cached file name : OUTPUT_DIRECTORY/inline_umlgraph_cache_all.pu - inline_umlgraph_cache_all.pu was created when doxygen was finished. - inline_umlgraph_cache_all.pu had all plantuml contents. and it will be used to check what is changed. - If you want to keep pu files , DOT_CLEANUP = NO - inline_umlgraph_<type><dictory>.pu includes changed plantuml. So it can reduce the java processing time. # Explanation of the code ## old - generatePlantUMLOutput() makes each plantuml from each @start~enduml with the name as inline_umlgraph_#.pu. ## new (PLANTUML_RUN_FAST) - It will make a plantuml png at the end of processes of doxygen. So we can reduce the count of java runs. - class PlantumlManager saves all plantuml information for running java at the end of doxygen and for comparing the plantuml contents as a cache. - generatePlantUMLOutput() is not enough to make a database in class PlantumlManager. - So I use writePlantUMLSource() to get more information (pu name and contents). I modified writePlantUMLSource() because I do not want to read the file to get the contents in generatePlantUMLOutput(). - The writePlantUMLSource() compares each plantuml contents and filename with cached information (inline_umlgraph_cache_all.pu). Then it will decide whether will recreate or reuse. - Like dot , we make plantuml pictures at the end of doxygen. ```puml @startuml folder config.xml { artifact PLANTUML_RUN_FAST folder config.xml [ artifact xml ==== and style ] } folder debug.cpp { artifact "Debug::Plantuml" folder debug.h { artifact "Plantuml=0x4000" } } config.xml -down-> debug.cpp debug.cpp -down-> docvisitor.cpp folder docvisitor.cpp { folder writePlantUMLSource { folder writePlantUMLSource.old [ write plantuml file (inline_umlgraph_#.pu) ---- writePlantUMLFile() generatePlantUMLOutput() ] folder writePlantUMLSource.new [ write plantuml file (inline_umlgraph_#) writePlantUMLFile() generatePlantUMLOutput() ---- add PUML_Type as arguments PlantumlManager::instance()->insert(generateType,puName,format,text); ] writePlantUMLSource -down-> writePlantUMLSource.old : Original writePlantUMLSource -down-> writePlantUMLSource.new : PLANTUML_RUN_FAST } artifact docbookvisitor.cpp artifact htmldocvisitor.cpp artifact latexdocvisitor.cpp artifact rtfdocvisitor.cpp artifact vhdldocgen.cpp } database PlantumlManager.DB [ static PlantumlManager *m_theInstance; QDict< QList<QCString> > m_pngPlantumlFiles; QDict< QList<QCString> > m_svgPlantumlFiles; QDict< QList<QCString> > m_epsPlantumlFiles; QDict< QCString > m_pngPlantumlContent; QDict< QCString > m_svgPlantumlContent; QDict< QCString > m_epsPlantumlContent; ] writePlantUMLSource.new -down-> PlantumlManager.DB : PLANTUML_RUN_FAST folder plantuml.cpp { folder generatePlantUMLOutput.old [ run java for each inline_umlgraph_#.pu ] folder generatePlantUMLOutput.new [ No run java for run once at the end of process Just add image into list ] writePlantUMLSource.old -down-> generatePlantUMLOutput.old : original writePlantUMLSource.new -down-> generatePlantUMLOutput.new : PLANTUML_RUN_FAST } folder doxygen.cpp { folder plantuml.h [ class PlantumlManager ] } folder plantuml.cpp { folder PlantumlManager_run [ PlantumlManager::instance()->run(); - run java once at the last time of doxygen process like drawing dot graph - read a inline_umlgraph_cache.pu - if exist , reuse it. - if not exist , add inline_umlgraph_type.pu - save all plantuml into inline_umlgraph_cache_all.pu for caching or reusing next time. - When we make inline_umlgraph_type.pu , we divide into 4 files for multi-processing. - But , prcessing image count is less than 8 , we will use only one file. ] } plantuml.h -down-> writePlantUMLSource : PLANTUML_RUN_FAST PlantumlManager.DB -down-> PlantumlManager_run : PLANTUML_RUN_FAST @enduml ```
| | * | | | # IntroductionCharles.Lee2018-12-282-35/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - this is doxygen documents. - draw the plantuml # Explanation how to process for FAST plantuml ```puml @startuml folder config.xml { artifact PLANTUML_RUN_FAST folder config.xml [ artifact xml ==== and style ] } folder debug.cpp { artifact "Debug::Plantuml" folder debug.h { artifact "Plantuml=0x4000" } } config.xml -down-> debug.cpp debug.cpp -down-> docvisitor.cpp folder docvisitor.cpp { folder writePlantUMLSource { folder writePlantUMLSource.old [ write plantuml file (inline_umlgraph_#.pu) ---- writePlantUMLFile() generatePlantUMLOutput() ] folder writePlantUMLSource.new [ write plantuml file (inline_umlgraph_#) writePlantUMLFile() generatePlantUMLOutput() ---- add PUML_Type as arguments PlantumlManager::instance()->insert(generateType,puName,format,text); ] writePlantUMLSource -down-> writePlantUMLSource.old : Original writePlantUMLSource -down-> writePlantUMLSource.new : PLANTUML_RUN_FAST } artifact docbookvisitor.cpp artifact htmldocvisitor.cpp artifact latexdocvisitor.cpp artifact rtfdocvisitor.cpp artifact vhdldocgen.cpp } database PlantumlManager.DB [ static PlantumlManager *m_theInstance; QDict< QList<QCString> > m_pngPlantumlFiles; QDict< QList<QCString> > m_svgPlantumlFiles; QDict< QList<QCString> > m_epsPlantumlFiles; QDict< QCString > m_pngPlantumlContent; QDict< QCString > m_svgPlantumlContent; QDict< QCString > m_epsPlantumlContent; ] writePlantUMLSource.new -down-> PlantumlManager.DB : PLANTUML_RUN_FAST folder plantuml.cpp { folder generatePlantUMLOutput.old [ run java for each inline_umlgraph_#.pu ] folder generatePlantUMLOutput.new [ No run java for run once at the end of process Just add image into list ] writePlantUMLSource.old -down-> generatePlantUMLOutput.old : original writePlantUMLSource.new -down-> generatePlantUMLOutput.new : PLANTUML_RUN_FAST } folder doxygen.cpp { folder plantuml.h [ class PlantumlManager ] } folder plantuml.cpp { folder PlantumlManager_run [ PlantumlManager::instance()->run(); - run java once at the last time of doxygen process like drawing dot graph - read a inline_umlgraph_cache.pu - if exist , reuse it. - if not exist , add inline_umlgraph_type.pu - save all plantuml into inline_umlgraph_cache.pu for caching or reusing next time. - When we make inline_umlgraph_type.pu , we divide into 4 files for multi-processing. - But , prcessing image count is less than 8 , we will use only one file. ] } plantuml.h -down-> writePlantUMLSource : PLANTUML_RUN_FAST PlantumlManager.DB -down-> PlantumlManager_run : PLANTUML_RUN_FAST @enduml ``` ## cache - QCString m_cachePlantumlAllContent; // = fileToString = readInputFile // findScopePattern // QCString.find contains - instance() -> read cache file - writePlantULMSource() -> compare the text with cache contents - if matched , pass. - if not matched , add it. - add text to current plantuml - run() -> save current plantuml into cache file ## todo list - done - html example - cache - ing - multiple thread : divide into several files before running java. (already know the count) - epstopdf run : change the code like the java run
| * | | | | Improved code structure a bitDimitri van Heesch2018-12-272-57/+65
| | | | | |
| * | | | | Merge branch 'run_java_once_3rd_trial' of ↵Dimitri van Heesch2018-12-2711-21/+368
| |\ \ \ \ \ | | |/ / / / | | | | | | | | | | | | https://github.com/cheoljoo/doxygen into cheoljoo-run_java_once_3rd_trial
| | * | | | JAVA_ONCE -> FASTCharles.Lee2018-12-264-7/+9
| | | | | |
| | * | | | add plantuml.h in doxygen.cppCharles.Lee2018-12-241-0/+1
| | | | | |
| | * | | | mergeCharles.Lee2018-12-24211-5444/+13393
| | |\ \ \ \
| | * | | | | Imporvement of performance : Reduce the Java running count (3rd trial)Charles.Lee2018-08-292-117/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # What is it - #6465 is the first trial. So I followed up the albert advice. - in case of debug you use printf statements, I think that here there better options would be - create an -d flag (e.g. -d plantuml) that gives the information, so no need for using the configuration option - Follow up : create -d plantuml [debug.h, debug.cpp] - usage of printf - printf should not be used,all output is steered over calls to routines as defined in message.cpp, - Follow up : use Debug::Print(Debug::Plantuml, ... and msg() - usage of std::string / std::map - in doxygen the string manipulation is. mostly, done by means of Qt classes (e.g. classes QCString, QString). For consistency these classes should be used. - map manipulation is also done by means of Qt classes (dictionary and list classes) - Follow up : use QDict QList QCString [plantuml.h, plantuml.cpp] - dirent / opendir /readdir - when browsing through directories the routines line readFileOrDirectory should probably be used or the techniques used in this routine - Follow up : I will follow when I try to reduce redundancy of creating plantuml image. - #6467 is the second trial. This is work items to satisfiy comments. - In the debug statements the __PRETTY_FUNCTION__ is a GCC extension. But this project can run in windows. - I got it. I removed __PRETTY_FUNCTION__. - In the PLANTUML_RUN_JAVA_ONCE all the .pu files are given to the plantuml.jar with their full path (see -d extcmd when running). I think this will lead to problems when there are quite a few files ("command line" overflow). Seen this merging the files into one file like done for formulas. A small test with one file revealed that it didn't bring a lot / nothing time wise, but here the problem with the "command line" overflow shouldn't / can't happen. - Yes. The command line has overflow problem. So I change into one file. - I think it still would make sense to implement the 'md5' possibility for, especially, the non PLANTUML_RUN_JAVA_ONCE version, i.e. if the file already exists don't try to recreate the image. - This is a next item. - PlantumlManager::instance()->insert() : this function will be changed to skip image. # Configuration - add configuration value in Doxyfile - PLANTUML_RUN_JAVA_ONCE = YES # Debugging - doxygen -d plantuml - doxygen -d time -d extcmd # Tested with following options - source code of 3 plantuml - PLANTUML_RUN_JAVA_ONCE = YES or NO - DOT_IMAGE_FORMAT = png or svg - DOT_CLEANUP = YES or NO - -d plantuml - -d time - -d extcmd
| | * | | | | PLANTUML_RUN_JAVA_ONCE is working well. But some specific plantuml has ↵Charles.Lee2018-08-291-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | error on ver 1.8.15
| | * | | | | add format in writePlantUMLSource() and gathered in one pu file. But it is ↵Charles.Lee2018-08-287-26/+239
| | | | | | | | | | | | | | | | | | | | | | | | | | | | not final
| | * | | | | Merge remote-tracking branch 'upstream/master' into run_java_onceCharles.Lee2018-08-2730-104/+168
| | |\ \ \ \ \
| | * | | | | | source arrangementCharles.Lee2018-08-272-15/+5
| | | | | | | |
| | * | | | | | Imporvement of performance : Reduce the Java running countCharles.Lee2018-08-276-13/+267
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # What is it - #6465 is the first reqeust. So I followed up the albert advice. - in case of debug you use printf statements, I think that here there better options would be - create an -d flag (e.g. -d plantuml) that gives the information, so no need for using the configuration option - Follow up : create -d plantuml [debug.h, debug.cpp] - usage of printf - printf should not be used,all output is steered over calls to routines as defined in message.cpp, - Follow up : use Debug::Print(Debug::Plantuml, ... and msg() - usage of std::string / std::map - in doxygen the string manipulation is. mostly, done by means of Qt classes (e.g. classes QCString, QString). For consistency these classes should be used. - map manipulation is also done by means of Qt classes (dictionary and list classes) - Follow up : use QDict QList QCString [plantuml.h, plantuml.cpp] - dirent / opendir /readdir - when browsing through directories the routines line readFileOrDirectory should probably be used or the techniques used in this routine - Follow up : I will follow when I try to reduce redundancy of creating plantuml image. - Run java minimally - Test Case : 4 plantuml - Original Run without PLANTUML_RUN_JAVA_ONCE - 8.2 sec = 4 times * ( 1.6(java vm) + 0.1 * 1(load multiple file) + process each plantuml (0.35) *1 ) <- prediction - New with PLANTUML_RUN_JAVA_ONCE - 3.499 sec = 1.6(java vm) + 0.1 * 4(load multiple file) + process each plantuml (0.35) *4 <- prediction - Creating Java Virtual Machine has a big portion. - Result - Improving Performance : 8.2 -> 3.499 (in case of 4 plantuml) # Configuration - add configuration value in Doxyfile - PLANTUML_RUN_JAVA_ONCE = YES # Debugging - doxygen -d plantuml - doxygen -d time -d plantuml # Tested with following options - source code of 3 plantuml - PLANTUML_RUN_JAVA_ONCE = YES or NO - DOT_IMAGE_FORMAT = png or svg - DOT_CLEANUP = YES or NO - -d plantuml
* | | | | | | | Merge branch 'mosra-extract-private-virtual'Dimitri van Heesch2019-01-085-5/+171
|\ \ \ \ \ \ \ \
| * | | | | | | | Shortened EXTRACT_PRIVATE_VIRTUAL to EXTRACT_PRIV_VIRTUAL to deal with max ↵Dimitri van Heesch2019-01-085-17/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | length limitation
| * | | | | | | | Merge branch 'extract-private-virtual' of https://github.com/mosra/doxygen ↵Dimitri van Heesch2019-01-085-5/+169
| |\ \ \ \ \ \ \ \ |/ / / / / / / / / | | | | | | | | | | | | | | | | | | into mosra-extract-private-virtual
| * | | | | | | | Implement a new EXTRACT_PRIVATE_VIRTUAL option.Vladimír Vondruš2019-01-035-5/+169
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The classic article about virtuality from Herb Sutter [1] suggests that virtual functions are always private and public class interface is never virtual. Until now, it was not really possible to document these functions in Doxygen: * Enabling EXTRACT_PRIVATE would show all internals, not just virtual functions, which is not wanted. * Enabling HIDE_UNDOC_MEMBERS and HIDE_UNDOC_CLASSES would effectively disable warnings about *all* undocumented members, which is not wanted. The usual workaround was to put the members into protected scope just for Doxygen: #ifdef DOXYGEN_GENERATING_OUTPUT protected: #else private: #endif /** @brief Documented private virtual function */ virtual doStuff(); The new EXTRACT_PRIVATE_VIRTUAL option makes these visible (and able to be linked to), but shows them *only* if they are documented. [1] http://www.gotw.ca/publications/mill18.htm
* | | | | | | | | Merge pull request #6745 from Croydon/croydon/ci4Dimitri van Heesch2019-01-082-18/+53
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | CI: Faster run time and envionment updates
| * | | | | | | | | AppVeyor: Remove needless CMake generation at the endCroydon2019-01-061-1/+0
| | | | | | | | | |
| * | | | | | | | | Travis macOS: Use Travis addons for homebrewCroydon2019-01-061-3/+6
| | | | | | | | | |
| * | | | | | | | | Travis macOS: Use shared Qt until upstream bugs are fixedCroydon2019-01-061-1/+1
| | | | | | | | | |
| * | | | | | | | | Travis macOS: Update Qt to 5.12.0Croydon2019-01-061-1/+1
| | | | | | | | | |
| * | | | | | | | | Travis: macOS Remove permission workaroundCroydon2019-01-061-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This got added here https://github.com/doxygen/doxygen/commit/72f9ffcbda4da4930ceab28043278cff51778c68#diff-354f30a63fb0907d4ad57269548329e3 but is fixed upstream in the meantime
| * | | | | | | | | Travis: Workaround to differ between x86 and ppc64leCroydon2019-01-061-7/+7
| | | | | | | | | |
| * | | | | | | | | Travis: Handle linux-ppc64le differentlyCroydon2019-01-061-16/+37
| | | | | | | | | |
| * | | | | | | | | Travis: Output CMake versionCroydon2019-01-061-0/+1
| | | | | | | | | |
| * | | | | | | | | Travis: Removing sudo keyword as this will be soon deprecated anywayCroydon2019-01-061-1/+0
| | | | | | | | | |
| * | | | | | | | | Travis: Install libiconv and libxml via ConanCroydon2019-01-061-6/+20
| | | | | | | | | |
| * | | | | | | | | Make conanfile creation more readableCroydon2019-01-061-2/+2
| | | | | | | | | |
* | | | | | | | | | Merge pull request #6747 from albert-github/feature/bug_test_066Dimitri van Heesch2019-01-082-52/+57
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Warning messages of test 66
| * | | | | | | | | | Warning messages of test 66albert-github2019-01-062-52/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test 66 gives some warning messages bout not documented entities: .../testing/066_property_initializer.cs:4: warning: Compound Class1 is not documented. .../testing/066_property_initializer.cs:5: warning: Member Property1 (property) of class Class1 is not documented. .../testing/066_property_initializer.cs:6: warning: Member Property2 (property) of class Class1 is not documented. The entities have been documented.
* | | | | | | | | | | Merge pull request #6750 from albert-github/feature/issue_6725Dimitri van Heesch2019-01-081-2/+3
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | issue #6725 Doxygen 1.8.15 CMake 3.13 incompatibility
| * | | | | | | | | | | issue #6725 Doxygen 1.8.15 CMake 3.13 incompatibilityalbert-github2019-01-071-2/+3
| |/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix to overcome problems in CMake. The required `\` in the `tex` code is automatically added when generating the LaTeX files.
* | | | | | | | | | | Merge pull request #6755 from albert-github/feature/issue_6748Dimitri van Heesch2019-01-081-0/+4
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|/ / / |/| | | | | | | | | | issue #6748 1.8.15 regression with C# internal modifier
| * | | | | | | | | | issue #6748 1.8.15 regression with C# internal modifieralbert-github2019-01-081-0/+4
|/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the fix for issue #677 / bug 743539 only the Java part, in scanner.l, should have been removed and not the other languages in respect to the word "internal", compare also code.l