| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
|\ |
|
| | |
|
| |\
|/ /
| |
| | |
https://github.com/albert-github/doxygen into albert-github-feature/bug_pre_markdown
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
|\ \ |
|
| |\ \
| | | |
| | | | |
Invalid id possible with tooltips
|
| | |/
| | |
| | |
| | |
| | |
| | | |
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 `-#` list
|
| | |
| | |
| | |
| | | |
Test case.
|
| |/
| |
| |
| | |
With the list types `-`, `*` and `1.` the brief description is terminated, with the `-#` lists this was not the case.
|
|/
|
|
| |
in the XML output
|
|\
| |
| | |
issue #6733 invalid cite anchor id when using crossref
|
| |
| |
| |
| | |
Also test 050 was hit by the change of samlpe.bib
|
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| | |
| | | |
issue #6727 SHOW_NAMESPACES = NO breaks latex PDF
|
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
issue #6754 False positives for "multiple @param sections"
|
| | | |
| | | |
| | | |
| | | | |
Don't add the argument to list of parameters in case of a non-parameter call (i.e. retval call)
|
|\ \ \ \
| | | | |
| | | | | |
Terminating brief command
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
|/ / / / |
|
|\ \ \ \ |
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | | |
https://github.com/cheoljoo/doxygen into cheoljoo-run_java_once_3rd_trial
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- 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)
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
# 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
```
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- 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
|
| | | | | | |
|
| |\ \ \ \ \
| | |/ / / /
| | | | | |
| | | | | | |
https://github.com/cheoljoo/doxygen into cheoljoo-run_java_once_3rd_trial
|
| | | | | | |
|
| | | | | | |
|
| | |\ \ \ \ |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
# 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
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
error on ver 1.8.15
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
not final
|
| | |\ \ \ \ \ |
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
# 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
|
|\ \ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
length limitation
|
| |\ \ \ \ \ \ \ \
|/ / / / / / / / /
| | | | | | | | |
| | | | | | | | | |
into mosra-extract-private-virtual
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \
| | | | | | | | | |
| | | | | | | | | | |
CI: Faster run time and envionment updates
|