summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'feature/issue_6800' of ↵Dimitri van Heesch2019-01-311-3/+5
|\ | | | | | | https://github.com/albert-github/doxygen into albert-github-feature/issue_6800
| * issue #6800 Markdown line ending problems in 1.8.15 and masteralbert-github2019-01-281-3/+5
| | | | | | | | | | In case of a completely empty line with 2 spaces at the end don't consider this as a 2 space terminated line. Regression of #6448
* | Merge branch 'master' of github.com:doxygen/doxygenDimitri van Heesch2019-01-313-4/+4
|\ \ | |/
| * issue #6796 Bad link to section, subsection if pointing at item past ↵albert-github2019-01-263-4/+4
| | | | | | | | | | | | suspicious text To escape `\` and `@` not only `\\` and `@@` should be possible but also `\@` and `@\`
* | Aligned license statement for javascripts with general license statementDimitri van Heesch2019-01-272-4/+2
|/
* Merge branch 'master' of github.com:doxygen/doxygenDimitri van Heesch2019-01-262-23/+1
|\
| * issue #6791 TOC not generated when using a particular Markdown header stylealbert-github2019-01-211-1/+1
| | | | | | | | | | The default for the `TOC_INCLUDE_HEADERINGS` was set to 0, for compatibility this should be 5. (Problem was observed in the doxygen documentation, chapter markdown, where the TOC was missing; alternatively in the Doxyfile the `TOC_INCLUDE_HEADERINGS` could be set to `5`,. The solution chosen is more consistent with the old situation).
| * issue #6679 Multiple use of section label warning for Setex-stype headers in ↵albert-github2019-01-181-22/+0
| | | | | | | | | | | | | | | | markdown Due to the move of the markdown code to another place the adding of the section info of section, subsection etc. would be attempted to add twice (first in markdown and later on again when translating the resulting '`section`, `\subsection` commands. The adding should only take place when handling the (replaced) commands. Removing the test in `addSection` won't work as in that case using twice a sectioning command with the same label would not be signaled anymore.
* | Store inline attribute for namespacesDimitri van Heesch2019-01-211-0/+4
| |
* | Remove dead codeDimitri van Heesch2019-01-213-32/+0
| |
* | Improve constnessDimitri van Heesch2019-01-212-12/+12
|/
* Added 'constexpr' as attribute label and to XML outputDimitri van Heesch2019-01-135-0/+25
|
* Added noexcept attribute to the XML outputDimitri van Heesch2019-01-131-0/+5
|
* Merge: moved example from 081 to 084, improved check if last char is newlineDimitri van Heesch2019-01-131-1/+1
|
* Merge branch 'feature/bug_pre_markdown' of ↵Dimitri van Heesch2019-01-131-1/+3
|\ | | | | | | https://github.com/albert-github/doxygen into albert-github-feature/bug_pre_markdown
| * No translation of markdown in <pre>albert-github2019-01-111-1/+3
| | | | | | | | | | | | | | | | | | According to the documentation: Doxygen does not have this requirement, and will also process Markdown formatting inside such HTML blocks. The only exception is <pre> blocks, which are passed untouched (handy for ASCII art). Though in case the `</pre>` is the last statement in a non block type comment the markdown is processed. C has block type /* ... */ and /// is translated to this, Fortran, Python are line type comments. Adding a `\n` at the when no `\n` is present at the end solves the problem.
* | Merge branch 'master' of github.com:doxygen/doxygenDimitri van Heesch2019-01-123-1/+7
|\ \
| * \ Merge pull request #6767 from albert-github/feature/bug_xhtml_tooltipDimitri van Heesch2019-01-122-1/+2
| |\ \ | | | | | | | | Invalid id possible with tooltips
| | * | Invalid id possible with tooltipsalbert-github2019-01-112-1/+2
| | |/ | | | | | | | | | | | | | | | In case a filename starts with a number the `id` also starts with a number and this is not allowed in XHTML and results in the message: `Syntax of value for attribute id of div is not valid` on other places it has been solved by placing an `a` as first character, this is done here as well but also needs to be don in the transformation from reference to tooltip id (htmlgen.cpp)
| * | Terminate brief in case of `-#` listalbert-github2019-01-111-0/+5
| |/ | | | | | | With the list types `-`, `*` and `1.` the brief description is terminated, with the `-#` lists this was not the case.
* | Added declfile, declline, and declcolumn attributes to the location element ↵Dimitri van Heesch2019-01-126-22/+114
|/ | | | in the XML output
* Merge pull request #6738 from albert-github/feature/issue_6733Dimitri van Heesch2019-01-101-7/+54
|\ | | | | issue #6733 invalid cite anchor id when using crossref
| * issue #6733 invalid cite anchor id when using crossrefalbert-github2019-01-041-7/+54
| | | | | | | | | | | | | | 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.
* | | | | 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-24112-4663/+11844
| | |\ \ \ \
| | * | | | | 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-2725-97/+151
| | |\ \ \ \ \
| | * | | | | | 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
* | | | | | | | Shortened EXTRACT_PRIVATE_VIRTUAL to EXTRACT_PRIV_VIRTUAL to deal with max ↵Dimitri van Heesch2019-01-083-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | length limitation
* | | | | | | | Merge branch 'extract-private-virtual' of https://github.com/mosra/doxygen ↵Dimitri van Heesch2019-01-083-5/+24
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | into mosra-extract-private-virtual
| * | | | | | | | Implement a new EXTRACT_PRIVATE_VIRTUAL option.Vladimír Vondruš2019-01-033-5/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 #6750 from albert-github/feature/issue_6725Dimitri van Heesch2019-01-081-2/+3
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | issue #6725 Doxygen 1.8.15 CMake 3.13 incompatibility