diff options
88 files changed, 2190 insertions, 720 deletions
@@ -1,7 +1,7 @@ -DOXYGEN Version 1.8.1.2-20120730 +DOXYGEN Version 1.8.2 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (30 July 2012) +Dimitri van Heesch (11 August 2012) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.8.1.2_20120730 +DOXYGEN Version 1.8.2 Please read INSTALL for compilation instructions. @@ -26,4 +26,4 @@ forum. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (30 July 2012) +Dimitri van Heesch (dimitri@stack.nl) (11 August 2012) diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in index 3b40576..86bd38a 100644 --- a/addon/doxywizard/doxywizard.pro.in +++ b/addon/doxywizard/doxywizard.pro.in @@ -15,7 +15,7 @@ RCC_DIR = rcc DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII macx-g++ { - CONFIG += x86 ppc + CONFIG += x86 } # Input @@ -17,10 +17,10 @@ doxygen_version_major=1 doxygen_version_minor=8 -doxygen_version_revision=1.2 +doxygen_version_revision=2 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20120730 +doxygen_version_mmn=NO bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/doc/config.doc b/doc/config.doc index 4cb7cec..8dfb199 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -61,6 +61,7 @@ followed by the descriptions of the tags grouped by category. \refitem cfg_allexternals ALLEXTERNALS \refitem cfg_alphabetical_index ALPHABETICAL_INDEX \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC +\refitem cfg_autolink_support AUTOLINK_SUPPORT \refitem cfg_binary_toc BINARY_TOC \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC \refitem cfg_builtin_stl_support BUILTIN_STL_SUPPORT @@ -164,6 +165,7 @@ followed by the descriptions of the tags grouped by category. \refitem cfg_html_colorstyle_sat HTML_COLORSTYLE_SAT \refitem cfg_html_dynamic_sections HTML_DYNAMIC_SECTIONS \refitem cfg_html_extra_files HTML_EXTRA_FILES +\refitem cfg_html_extra_stylesheet HTML_EXTRA_STYLESHEET \refitem cfg_html_file_extension HTML_FILE_EXTENSION \refitem cfg_html_footer HTML_FOOTER \refitem cfg_html_header HTML_HEADER @@ -471,6 +473,14 @@ followed by the descriptions of the tags grouped by category. can mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in case of backward compatibilities issues. +\anchor cfg_autolink_support +<dt>'c AUTOLINK_SUPPORT <dd> + \addindex AUTOLINK_SUPPORT + When enabled doxygen tries to link words that correspond to documented classes, + or namespaces to their corresponding documentation. Such a link can be + prevented in individual cases by by putting a % sign in front of the word or + globally by setting AUTOLINK_SUPPORT to NO. + \anchor cfg_builtin_stl_support <dt>\c BUILTIN_STL_SUPPORT <dd> \addindex BUILTIN_STL_SUPPORT @@ -1430,14 +1440,61 @@ doxygen -w html new_header.html new_footer.html new_stylesheet.css YourConfigFil \anchor cfg_html_stylesheet <dt>\c HTML_STYLESHEET <dd> \addindex HTML_STYLESHEET - The \c HTML_STYLESHEET tag can be used to specify a user-defined cascading - style sheet that is used by each HTML page. It can be used to - fine-tune the look of the HTML output. If the tag is left blank doxygen - will generate a default style sheet. + The HTML_STYLESHEET tag can be used to specify a user-defined cascading + style sheet that is used by each HTML page. It can be used to + fine-tune the look of the HTML output. If left blank doxygen + will generate a default style sheet. + See also section \ref doxygen_usage for information on how to generate the style sheet that doxygen normally uses. + \note It is recommended to use + \c HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and + this tag will in the future become obsolete. + +\anchor cfg_html_extra_stylesheet +<dt>\c HTML_EXTRA_STYLESHEET <dd> + \addindex HTML_EXTRA_STYLESHEET + The HTML_EXTRA_STYLESHEET tag can be used to specify an additional + user-defined cascading style sheet that is included after the standard + style sheets created by doxygen. Using this option one can overrule + certain style aspects. This is preferred over using \c HTML_STYLESHEET + since it does not replace the standard style sheet and is therefor more + robust against future updates. Doxygen will copy the style sheet file to + the output directory. + + Here is an example stylesheet that gives the contents area a fixed width: +\verbatim +body { + background-color: #CCC; + color: black; + margin: 0; +} + +div.contents { + margin-bottom: 10px; + padding: 12px; + margin-left: auto; + margin-right: auto; + width: 960px; + background-color: white; + border-radius: 8px; +} + +#titlearea { + background-color: white; +} + +hr.footer { + display: none; +} + +.footer { + background-color: #AAA; +} +\endverbatim + \anchor cfg_html_extra_files <dt>\c HTML_EXTRA_FILES <dd> \addindex HTML_EXTRA_FILES diff --git a/doc/language.doc b/doc/language.doc index ce72f23..83a0bfa 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other than English (the default). The output language is chosen through the configuration file (with default name and known as Doxyfile). -Currently (version 1.8.1.1), 39 languages +Currently (version 1.8.1.2), 39 languages are supported (sorted alphabetically): Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, @@ -86,7 +86,7 @@ when the translator was updated. <td>Chinese</td> <td>Lian Yang<br/>Li Daobing<br/>Wei Liu</td> <td>lian dot yang dot cn at gmail dot com<br/>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td> - <td>up-to-date</td> + <td>1.8.2</td> </tr> <tr bgcolor="#ffffff"> <td>Chinese Traditional</td> @@ -98,12 +98,12 @@ when the translator was updated. <td>Croatian</td> <td>Boris Bralo</td> <td>boris dot bralo at gmail dot com</td> - <td>up-to-date</td> + <td>1.8.2</td> </tr> <tr bgcolor="#ffffff"> <td>Czech</td> <td>Petr Přikryl</td> - <td>prikrylp at skil dot cz</td> + <td>prikryl at atlas dot cz</td> <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> @@ -126,8 +126,8 @@ when the translator was updated. </tr> <tr bgcolor="#ffffff"> <td>Esperanto</td> - <td>Ander Martinez</td> - <td>dwarfnauko at gmail dot com</td> + <td>Ander Martínez</td> + <td>ander dot basaundi at gmail dot com</td> <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> @@ -146,13 +146,13 @@ when the translator was updated. <td>German</td> <td>Peter Grotrian<br/>Jens Seidel</td> <td>Peter dot Grotrian at pdv-FS dot de<br/>jensseidel at users dot sf dot net</td> - <td>up-to-date</td> + <td>1.8.2</td> </tr> <tr bgcolor="#ffffff"> <td>Greek</td> <td>Paul Gessos</td> <td>gessos dot paul at yahoo dot gr</td> - <td>1.8.0</td> + <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Hungarian</td> @@ -170,7 +170,7 @@ when the translator was updated. <td>Italian</td> <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td> <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td> - <td>up-to-date</td> + <td>1.8.2</td> </tr> <tr bgcolor="#ffffff"> <td>Japanese</td> @@ -188,7 +188,7 @@ when the translator was updated. <td>Korean</td> <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td> <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/><span style="color: brown">[unreachable]</span></td> - <td>up-to-date</td> + <td>1.8.02</td> </tr> <tr bgcolor="#ffffff"> <td>KoreanEn</td> @@ -224,12 +224,12 @@ when the translator was updated. <td>Polish</td> <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td> <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/>krzysztof dot kral at gmail dot com</td> - <td>up-to-date</td> + <td>1.8.2</td> </tr> <tr bgcolor="#ffffff"> <td>Portuguese</td> - <td>Rui Godinho Lopes<br/><span style="color: red; background-color: yellow">-- searching for the maintainer --</span></td> - <td><span style="color: brown">[resigned]</span><br/><span style="color: brown">[Please, try to help to find someone.]</span></td> + <td>Rui Godinho Lopes<br/>Fabio "FJTC" Jun Takada Chino</td> + <td><span style="color: brown">[resigned]</span><br/>jun-chino at uol dot com dot br</td> <td>1.8.0</td> </tr> <tr bgcolor="#ffffff"> @@ -259,7 +259,7 @@ when the translator was updated. <tr bgcolor="#ffffff"> <td>Slovak</td> <td>Kali+Laco Švec<br/>Petr Přikryl</td> - <td>the Slovak language advisors<br/>prikrylp at skil dot cz</td> + <td><span style="color: brown">[the Slovak language advisors]</span><br/>prikryl at atlas dot cz</td> <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> @@ -326,16 +326,16 @@ when the translator was updated. Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.8.0 \\ ~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\ \hline - Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & up-to-date \\ + Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & 1.8.2 \\ ~ & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & ~ \\ ~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\ \hline Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & 1.8.0 \\ ~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\ \hline - Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & up-to-date \\ + Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & 1.8.2 \\ \hline - Czech & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & up-to-date \\ + Czech & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & up-to-date \\ \hline Danish & Poul-Erik Hansen & {\tt\tiny pouhan at gnotometrics dot dk} & 1.8.0 \\ ~ & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & ~ \\ @@ -344,24 +344,24 @@ when the translator was updated. \hline English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\ \hline - Esperanto & Ander Martinez & {\tt\tiny dwarfnauko at gmail dot com} & up-to-date \\ + Esperanto & Ander Martínez & {\tt\tiny ander dot basaundi at gmail dot com} & up-to-date \\ \hline Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\ \hline French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & 1.8.0 \\ ~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\ \hline - German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & up-to-date \\ + German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.2 \\ ~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\ \hline - Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & 1.8.0 \\ + Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & up-to-date \\ \hline Hungarian & Ákos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\ ~ & Földvári György & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\ \hline Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.8.0 \\ \hline - Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & up-to-date \\ + Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.8.2 \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\ \hline Japanese & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & 1.6.0 \\ @@ -371,7 +371,7 @@ when the translator was updated. \hline JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\ \hline - Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & up-to-date \\ + Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & 1.8.02 \\ ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\ ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\ \hline @@ -388,12 +388,12 @@ when the translator was updated. \hline Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & 1.7.5 \\ \hline - Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & up-to-date \\ + Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.8.2 \\ ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\ ~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\ \hline Portuguese & Rui Godinho Lopes & {\tt\tiny [resigned] rgl at ruilopes dot com} & 1.8.0 \\ - ~ & -- searching for the maintainer -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\ + ~ & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & ~ \\ \hline Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & 1.6.0 \\ ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\ @@ -404,8 +404,8 @@ when the translator was updated. \hline SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\ \hline - Slovak & Kali+Laco Švec & {\tt\tiny the Slovak language advisors} & up-to-date \\ - ~ & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & ~ \\ + Slovak & Kali+Laco Švec & {\tt\tiny [the Slovak language advisors]} & up-to-date \\ + ~ & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & ~ \\ \hline Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\ \hline diff --git a/doc/maintainers.txt b/doc/maintainers.txt index c3fa112..1eade70 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -4,7 +4,7 @@ % There is one record for each language. The records are separated % by the empty line and they do not contain empty lines. % First line of the record identifies the translator class for the language. -% The following one or more lines contain information about +% The following one or more lines contain information about % the maintainer(s) for the language (one line, one maintainer) % in the form: <readable name><colon><e-mail> % If the readable name name starts with '--' it will be displayed in HTML @@ -44,21 +44,21 @@ Gary Lee: garywlee at gmail dot com TranslatorCroatian Boris Bralo: boris dot bralo at gmail dot com -TranslatorCzech -Petr Přikryl: prikrylp at skil dot cz +TranslatorCzech +Petr Přikryl: prikryl at atlas dot cz TranslatorDanish Poul-Erik Hansen: pouhan at gnotometrics dot dk Erik Søe Sørensen: eriksoe+doxygen at daimi dot au dot dk -TranslatorDutch +TranslatorDutch Dimitri van Heesch: dimitri at stack dot nl -TranslatorEnglish +TranslatorEnglish Dimitri van Heesch: dimitri at stack dot nl TranslatorEsperanto -Ander Martinez: dwarfnauko at gmail dot com +Ander Martínez: ander dot basaundi at gmail dot com TranslatorFinnish Antti Laine: antti dot a dot laine at tut dot fi @@ -67,7 +67,7 @@ TranslatorFrench David Martinet: contact at e-concept-applications dot fr Xavier Outhier: xouthier at yahoo dot fr -TranslatorGerman +TranslatorGerman Peter Grotrian: Peter dot Grotrian at pdv-FS dot de Jens Seidel: jensseidel at users dot sf dot net @@ -81,11 +81,11 @@ Földvári György: [unreachable] foldvari lost at cyberspace TranslatorIndonesian Hendy Irawan: ceefour at gauldong dot net -TranslatorItalian -Alessandro Falappa: alessandro at falappa dot net +TranslatorItalian +Alessandro Falappa: alessandro at falappa dot net Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk -TranslatorJapanese +TranslatorJapanese Hiroki Iseri: goyoki at gmail dot com Ryunosuke Satoh: sun594 at hotmail dot com Kenji Nagamatsu: naga at joyful dot club dot ne dot jp @@ -111,14 +111,14 @@ Slave Jovanovski: slavejovanovski at yahoo dot com TranslatorPersian Ali Nadalizadeh: nadalizadeh at gmail dot com -TranslatorPolish +TranslatorPolish Piotr Kaminski: [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl Grzegorz Kowal: [unreachable] g_kowal at poczta dot onet dot pl Krzysztof Kral: krzysztof dot kral at gmail dot com TranslatorPortuguese Rui Godinho Lopes: [resigned] rgl at ruilopes dot com --- searching for the maintainer --: [Please, try to help to find someone.] +Fabio "FJTC" Jun Takada Chino: jun-chino at uol dot com dot br TranslatorRomanian Ionut Dumitrascu: reddumy at yahoo dot com @@ -135,18 +135,18 @@ Nedeljko Stefanovic: stenedjo at yahoo dot com TranslatorSlovak % Stanislav Kudláč: [resigned] skudlac at pobox dot sk -Kali+Laco Švec: the Slovak language advisors -Petr Přikryl: prikrylp at skil dot cz +Kali+Laco Švec: [the Slovak language advisors] +Petr Přikryl: prikryl at atlas dot cz TranslatorSlovene Matjaž Ostroveršnik: matjaz dot ostroversnik at ostri dot org -TranslatorSpanish +TranslatorSpanish Bartomeu: bartomeu at loteria3cornella dot com Francisco Oltra Thennet: [unreachable] foltra at puc dot cl David Vaquero: david at grupoikusnet dot com -TranslatorSwedish +TranslatorSwedish Mikael Hallin: mikaelhallin at yahoo dot se TranslatorTurkish diff --git a/doc/markdown.doc b/doc/markdown.doc index 4df3efc..d0243dd 100644 --- a/doc/markdown.doc +++ b/doc/markdown.doc @@ -462,6 +462,13 @@ and in other sections that need to be processed without changes \subsection mddox_code_blocks Code Block Indentation +Markdown allows both a single tab or 4 spaces to start a code block. +Since doxygen already replaces tabs by spaces before doing Markdown +processing, the effect will only be same if TAB_SIZE in the config file +has been set to 4. When it is set to a higher value spaces will be +present in the code block. A lower value will prevent a single tab to be +interpreted as the start of a code block. + With Markdown any block that is indented by 4 spaces (and 8 spaces inside lists) is treated as a code block. This indentation amount is absolute, i.e. counting from the start of the line. diff --git a/doc/translator_report.txt b/doc/translator_report.txt index 060fd30..83f020a 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -1,4 +1,4 @@ -(1.8.1.1) +(1.8.1.2) Doxygen supports the following 39 languages (sorted alphabetically): @@ -10,27 +10,22 @@ Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -Of them, 12 translators are up-to-date, 27 translators are based on +Of them, 7 translators are up-to-date, 32 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- The following translator classes are up-to-date (sorted alphabetically). This means that they derive from the Translator class -and they implement all 235 of the required methods. Anyway, there +and they implement all 242 of the required methods. Anyway, there still may be some details listed even for them: - TranslatorChinese - TranslatorCroatian TranslatorCzech TranslatorDutch TranslatorEnglish TranslatorEsperanto - TranslatorGerman - TranslatorItalian - TranslatorKorean -- Change the base class to Translator. - TranslatorPolish -- Remove the obsolete methods (never used). + TranslatorGreek TranslatorSlovak - TranslatorSpanish -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() + TranslatorSpanish ---------------------------------------------------------------------- The following translator classes need some maintenance (the most @@ -38,63 +33,70 @@ obsolete at the end). The other info shows the estimation of Doxygen version when the class was last updated and number of methods that must be implemented to become up-to-date: - TranslatorPortuguese 1.8.0 7 methods to implement (2 %) - TranslatorIndonesian 1.8.0 7 methods to implement (2 %) + TranslatorPolish 1.8.2 7 methods to implement (2 %) + TranslatorKorean 1.8.02 7 methods to implement (2 %) + Note: Change the base class to TranslatorAdapter_1_8_2. + + TranslatorItalian 1.8.2 7 methods to implement (2 %) + TranslatorGerman 1.8.2 7 methods to implement (2 %) + TranslatorCroatian 1.8.2 7 methods to implement (2 %) + TranslatorChinese 1.8.2 7 methods to implement (2 %) + TranslatorPortuguese 1.8.0 14 methods to implement (5 %) + TranslatorIndonesian 1.8.0 14 methods to implement (5 %) Note: Reimplementation using UTF-8 suggested. - TranslatorGreek 1.8.0 7 methods to implement (2 %) - TranslatorFrench 1.8.0 7 methods to implement (2 %) + TranslatorFrench 1.8.0 14 methods to implement (5 %) Note: Reimplementation using UTF-8 suggested. - TranslatorDanish 1.8.0 7 methods to implement (2 %) + TranslatorDanish 1.8.0 14 methods to implement (5 %) Note: Reimplementation using UTF-8 suggested. - TranslatorChinesetraditional 1.8.0 7 methods to implement (2 %) + TranslatorChinesetraditional 1.8.0 14 methods to implement (5 %) Note: Reimplementation using UTF-8 suggested. - TranslatorCatalan 1.8.0 7 methods to implement (2 %) - TranslatorBrazilian 1.8.0 7 methods to implement (2 %) - TranslatorArmenian 1.8.0 7 methods to implement (2 %) - TranslatorTurkish 1.7.5 10 methods to implement (4 %) - TranslatorRussian 1.7.5 10 methods to implement (4 %) + TranslatorCatalan 1.8.0 14 methods to implement (5 %) + TranslatorBrazilian 1.8.0 14 methods to implement (5 %) + TranslatorArmenian 1.8.0 14 methods to implement (5 %) + TranslatorTurkish 1.7.5 17 methods to implement (7 %) + TranslatorRussian 1.7.5 17 methods to implement (7 %) Note: Reimplementation using UTF-8 suggested. - TranslatorPersian 1.7.5 10 methods to implement (4 %) - TranslatorVietnamese 1.6.0 19 methods to implement (8 %) - TranslatorSwedish 1.6.0 19 methods to implement (8 %) + TranslatorPersian 1.7.5 17 methods to implement (7 %) + TranslatorVietnamese 1.6.0 26 methods to implement (10 %) + TranslatorSwedish 1.6.0 26 methods to implement (10 %) Note: Reimplementation using UTF-8 suggested. - TranslatorSerbian 1.6.0 19 methods to implement (8 %) + TranslatorSerbian 1.6.0 26 methods to implement (10 %) Note: Reimplementation using UTF-8 suggested. - TranslatorSerbianCyrilic 1.6.0 19 methods to implement (8 %) - TranslatorRomanian 1.6.0 19 methods to implement (8 %) + TranslatorSerbianCyrilic 1.6.0 26 methods to implement (10 %) + TranslatorRomanian 1.6.0 26 methods to implement (10 %) Note: Reimplementation using UTF-8 suggested. - TranslatorMacedonian 1.6.0 19 methods to implement (8 %) - TranslatorJapanese 1.6.0 19 methods to implement (8 %) + TranslatorMacedonian 1.6.0 26 methods to implement (10 %) + TranslatorJapanese 1.6.0 26 methods to implement (10 %) Note: Reimplementation using UTF-8 suggested. - TranslatorFinnish 1.6.0 19 methods to implement (8 %) - TranslatorAfrikaans 1.6.0 19 methods to implement (8 %) + TranslatorFinnish 1.6.0 26 methods to implement (10 %) + TranslatorAfrikaans 1.6.0 26 methods to implement (10 %) Note: Reimplementation using UTF-8 suggested. - TranslatorSlovene 1.4.6 43 methods to implement (18 %) + TranslatorSlovene 1.4.6 50 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. - TranslatorNorwegian 1.4.6 42 methods to implement (17 %) + TranslatorNorwegian 1.4.6 49 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. - TranslatorLithuanian 1.4.6 43 methods to implement (18 %) + TranslatorLithuanian 1.4.6 50 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. - TranslatorHungarian 1.4.6 43 methods to implement (18 %) + TranslatorHungarian 1.4.6 50 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. - TranslatorArabic 1.4.6 42 methods to implement (17 %) + TranslatorArabic 1.4.6 49 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. - TranslatorUkrainian 1.4.1 43 methods to implement (18 %) + TranslatorUkrainian 1.4.1 50 methods to implement (20 %) Note: Reimplementation using UTF-8 suggested. @@ -128,10 +130,10 @@ Details for translators (classes sorted alphabetically): -TranslatorAfrikaans (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorAfrikaans (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ------------------- - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -142,10 +144,14 @@ TranslatorAfrikaans (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -154,12 +160,15 @@ TranslatorAfrikaans (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorArabic (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) +TranslatorArabic (TranslatorAdapter_1_4_6) 49 methods to implement (20 %) ---------------- - Implements 193 of the required methods (82 %). + Implements 193 of the required methods (79 %). Missing methods (should be implemented): @@ -176,9 +185,12 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -187,6 +199,7 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -199,12 +212,15 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() Obsolete methods (should be removed, never used): @@ -219,90 +235,157 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trNoDescriptionAvailable() -TranslatorArmenian (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorArmenian (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ------------------ - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorBrazilian (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorBrazilian (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ------------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorCatalan (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorCatalan (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ----------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorChinese (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) +----------------- + + Implements 235 of the required methods (97 %). + Missing methods (should be implemented): -TranslatorChinesetraditional (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorChinesetraditional (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ---------------------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorCroatian (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) +------------------ + Implements 235 of the required methods (97 %). -TranslatorDanish (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) + Missing methods (should be implemented): + + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorDanish (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ---------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorFinnish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorFinnish (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ----------------- - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -313,10 +396,14 @@ TranslatorFinnish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -325,44 +412,54 @@ TranslatorFinnish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorFrench (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorFrench (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) ---------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorGreek (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) ---------------- +TranslatorGerman (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) +---------------- - Implements 228 of the required methods (97 %). + Implements 235 of the required methods (97 %). Missing methods (should be implemented): - virtual QCString trDetailLevel() - virtual QCString trTemplateParameters() - virtual QCString trAndMore(const QCString & number) - virtual QCString trEnumReference(const char * name) - virtual QCString trInheritedFrom(const char * members, const char * what) - virtual QCString trAdditionalInheritedMembers() - virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorHungarian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) +TranslatorHungarian (TranslatorAdapter_1_4_6) 50 methods to implement (20 %) ------------------- - Implements 192 of the required methods (81 %). + Implements 192 of the required methods (79 %). Missing methods (should be implemented): @@ -379,9 +476,12 @@ TranslatorHungarian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -390,6 +490,7 @@ TranslatorHungarian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -402,35 +503,61 @@ TranslatorHungarian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trEnumerationValueDocumentation() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() -TranslatorIndonesian (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorIndonesian (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) -------------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + +TranslatorItalian (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) +----------------- + + Implements 235 of the required methods (97 %). -TranslatorJapanese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) + Missing methods (should be implemented): + + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorJapanese (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ------------------ - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -441,10 +568,14 @@ TranslatorJapanese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -453,11 +584,14 @@ TranslatorJapanese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() Obsolete methods (should be removed, never used): virtual QCString trHeaderFilesDescription() - virtual QCString trField(bool first_capital, bool singular) + virtual QCString trField(bool/*first_capital*/, bool/*singular*/) virtual QCString trPackageDocumentation() virtual QCString trSources() virtual QCString trReimplementedForInternalReasons() @@ -467,7 +601,7 @@ TranslatorJapanese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trNoDescriptionAvailable() -TranslatorJapaneseEn (TranslatorEnglish) 230 methods to implement (97 %) +TranslatorJapaneseEn (TranslatorEnglish) 237 methods to implement (97 %) -------------------- Implements 5 of the required methods (2 %). @@ -481,13 +615,23 @@ TranslatorJapaneseEn (TranslatorEnglish) 230 methods to implement (97 %) virtual QCString latexLanguageSupportCommand() -TranslatorKorean (TranslatorAdapter_1_7_5) +TranslatorKorean (TranslatorAdapter_1_7_5) 7 methods to implement (2 %) ---------------- - Implements 235 of the required methods (100 %). + Implements 235 of the required methods (97 %). + Missing methods (should be implemented): -TranslatorKoreanEn (TranslatorEnglish) 230 methods to implement (97 %) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() + + +TranslatorKoreanEn (TranslatorEnglish) 237 methods to implement (97 %) ------------------ Implements 5 of the required methods (2 %). @@ -501,10 +645,10 @@ TranslatorKoreanEn (TranslatorEnglish) 230 methods to implement (97 %) virtual QCString latexLanguageSupportCommand() -TranslatorLithuanian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) +TranslatorLithuanian (TranslatorAdapter_1_4_6) 50 methods to implement (20 %) -------------------- - Implements 192 of the required methods (81 %). + Implements 192 of the required methods (79 %). Missing methods (should be implemented): @@ -521,9 +665,12 @@ TranslatorLithuanian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -532,6 +679,7 @@ TranslatorLithuanian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -544,19 +692,22 @@ TranslatorLithuanian (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trEnumerationValueDocumentation() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() -TranslatorMacedonian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorMacedonian (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) -------------------- - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -567,10 +718,14 @@ TranslatorMacedonian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -579,12 +734,15 @@ TranslatorMacedonian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorNorwegian (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) +TranslatorNorwegian (TranslatorAdapter_1_4_6) 49 methods to implement (20 %) ------------------- - Implements 193 of the required methods (82 %). + Implements 193 of the required methods (79 %). Missing methods (should be implemented): @@ -601,9 +759,12 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -612,6 +773,7 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -624,12 +786,15 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() Obsolete methods (should be removed, never used): @@ -644,29 +809,46 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 42 methods to implement (17 %) virtual QCString trNoDescriptionAvailable() -TranslatorPersian (TranslatorAdapter_1_7_5) 10 methods to implement (4 %) +TranslatorPersian (TranslatorAdapter_1_7_5) 17 methods to implement (7 %) ----------------- - Implements 225 of the required methods (95 %). + Implements 225 of the required methods (92 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() virtual QCString trAdditionalInheritedMembers() virtual QCString trCopyright() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorPolish (Translator) +TranslatorPolish (TranslatorAdapter_1_8_2) 7 methods to implement (2 %) ---------------- - Implements 235 of the required methods (100 %). + Implements 235 of the required methods (97 %). + + Missing methods (should be implemented): + + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() + virtual QCString trMethodDocumentation() + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() Obsolete methods (should be removed, never used): @@ -681,26 +863,33 @@ TranslatorPolish (Translator) QCString trNoDescriptionAvailable() -TranslatorPortuguese (TranslatorAdapter_1_8_0) 7 methods to implement (2 %) +TranslatorPortuguese (TranslatorAdapter_1_8_0) 14 methods to implement (5 %) -------------------- - Implements 228 of the required methods (97 %). + Implements 228 of the required methods (94 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trAdditionalInheritedMembers() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorRomanian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorRomanian (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ------------------ - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -711,10 +900,14 @@ TranslatorRomanian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -723,31 +916,41 @@ TranslatorRomanian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorRussian (TranslatorAdapter_1_7_5) 10 methods to implement (4 %) +TranslatorRussian (TranslatorAdapter_1_7_5) 17 methods to implement (7 %) ----------------- - Implements 225 of the required methods (95 %). + Implements 225 of the required methods (92 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() virtual QCString trAdditionalInheritedMembers() virtual QCString trCopyright() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorSerbian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorSerbian (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ----------------- - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -758,10 +961,14 @@ TranslatorSerbian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -770,12 +977,15 @@ TranslatorSerbian (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorSerbianCyrilic (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorSerbianCyrilic (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ------------------------ - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -786,10 +996,14 @@ TranslatorSerbianCyrilic (TranslatorAdapter_1_6_0) 19 methods to implement (8 virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -798,12 +1012,15 @@ TranslatorSerbianCyrilic (TranslatorAdapter_1_6_0) 19 methods to implement (8 virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorSlovene (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) +TranslatorSlovene (TranslatorAdapter_1_4_6) 50 methods to implement (20 %) ----------------- - Implements 192 of the required methods (81 %). + Implements 192 of the required methods (79 %). Missing methods (should be implemented): @@ -820,9 +1037,12 @@ TranslatorSlovene (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -831,6 +1051,7 @@ TranslatorSlovene (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -843,25 +1064,22 @@ TranslatorSlovene (TranslatorAdapter_1_4_6) 43 methods to implement (18 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trEnumerationValueDocumentation() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() -TranslatorSpanish (Translator) +TranslatorSwedish (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) ----------------- - Implements 235 of the required methods (100 %). - - -TranslatorSwedish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) ------------------ - - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -872,10 +1090,14 @@ TranslatorSwedish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -884,31 +1106,41 @@ TranslatorSwedish (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorTurkish (TranslatorAdapter_1_7_5) 10 methods to implement (4 %) +TranslatorTurkish (TranslatorAdapter_1_7_5) 17 methods to implement (7 %) ----------------- - Implements 225 of the required methods (95 %). + Implements 225 of the required methods (92 %). Missing methods (should be implemented): virtual QCString trDetailLevel() virtual QCString trTemplateParameters() + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() virtual QCString trAdditionalInheritedMembers() virtual QCString trCopyright() virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods() -TranslatorUkrainian (TranslatorAdapter_1_4_1) 43 methods to implement (18 %) +TranslatorUkrainian (TranslatorAdapter_1_4_1) 50 methods to implement (20 %) ------------------- - Implements 192 of the required methods (81 %). + Implements 192 of the required methods (79 %). Missing methods (should be implemented): @@ -926,9 +1158,12 @@ TranslatorUkrainian (TranslatorAdapter_1_4_1) 43 methods to implement (18 %) virtual QCString trModulesList() virtual QCString trTypeConstraints() virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() virtual QCString trMemberFunctionDocumentationFortran() virtual QCString trCompoundListDescriptionFortran() + virtual QCString trDesignOverview() virtual QCString trTypeDocumentation() virtual QCString trAndMore(const QCString & number) virtual QCString trModuleReference(const char * namespaceName) @@ -937,6 +1172,7 @@ TranslatorUkrainian (TranslatorAdapter_1_4_1) 43 methods to implement (18 %) virtual QCString trDirDepGraph(const char * name) virtual QCString trModulesIndex() virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trCompoundListFortran() virtual QCString trDataTypes() virtual QCString trEnumReference(const char * name) @@ -949,12 +1185,15 @@ TranslatorUkrainian (TranslatorAdapter_1_4_1) 43 methods to implement (18 %) virtual QCString trEnumGeneratedFromFiles(bool single) virtual QCString trCompoundIndexFortran() virtual QCString trSubprogram(bool first_capital, bool singular) + virtual QCString trPanelSynchronisationTooltip(bool enable) virtual QCString trCallerGraph() + virtual QCString trExtendsClass() virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate) virtual QCString trType(bool first_capital, bool singular) virtual QCString trModule(bool first_capital, bool singular) virtual QCString trCompoundMembersFortran() virtual QCString trSubprogramDocumentation() + virtual QCString trInstanceMethods() Obsolete methods (should be removed, never used): @@ -969,10 +1208,10 @@ TranslatorUkrainian (TranslatorAdapter_1_4_1) 43 methods to implement (18 %) virtual QCString trNoDescriptionAvailable() -TranslatorVietnamese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) +TranslatorVietnamese (TranslatorAdapter_1_6_0) 26 methods to implement (10 %) -------------------- - Implements 216 of the required methods (91 %). + Implements 216 of the required methods (89 %). Missing methods (should be implemented): @@ -983,10 +1222,14 @@ TranslatorVietnamese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trLoading() virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) virtual QCString trFileIn(const char * name) + virtual QCString trClassMethods() + virtual QCString trProvidedByCategory() virtual QCString trGlobalNamespace() + virtual QCString trDesignOverview() virtual QCString trAndMore(const QCString & number) virtual QCString trDirDepGraph(const char * name) virtual QCString trDirRelation(const char * name) + virtual QCString trMethodDocumentation() virtual QCString trEnumReference(const char * name) virtual QCString trInheritedFrom(const char * members, const char * what) virtual QCString trCiteReferences() @@ -994,4 +1237,7 @@ TranslatorVietnamese (TranslatorAdapter_1_6_0) 19 methods to implement (8 %) virtual QCString trDirDependency(const char * name) virtual QCString trCopyright() virtual QCString trIncludesFileIn(const char * name) - virtual QCString trEnumGeneratedFromFiles(bool single)
\ No newline at end of file + virtual QCString trEnumGeneratedFromFiles(bool single) + virtual QCString trPanelSynchronisationTooltip(bool enable) + virtual QCString trExtendsClass() + virtual QCString trInstanceMethods()
\ No newline at end of file diff --git a/qtools/Doxyfile b/qtools/Doxyfile index 65efcf4..8d3aff7 100644 --- a/qtools/Doxyfile +++ b/qtools/Doxyfile @@ -179,7 +179,7 @@ USE_MATHJAX = NO MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest MATHJAX_EXTENSIONS = SEARCHENGINE = YES -SERVER_BASED_SEARCH = NO +SERVER_BASED_SEARCH = YES #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- diff --git a/src/Makefile.in b/src/Makefile.in index 2ecffd2..a4e096d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -44,6 +44,11 @@ distclean: clean declinfo.cpp defargs.cpp commentcnv.cpp doctokenizer.cpp \ pycode.cpp pyscanner.cpp fortrancode.cpp fortranscanner.cpp \ vhdlscanner.cpp vhdlcode.cpp tclscanner.cpp vhdlparser.h \ - vhdlparser.cpp + vhdlparser.cpp index_xsd.h compound_xsd.h layout_default.h \ + header_html.h footer_html.h search_functions_php.h search_opensearch_php.h \ + search_js.h search_css.h doxygen_css.h navtree_js.h navindex_js.h resize_js.h \ + jquery_fx_js.h jquery_p1_js.h jquery_p2_js.h \ + jquery_p3_js.h jquery_ui_js.h navtree_css.h svgpan_js.h dynsections_js.h \ + doxygen_bst.h bib2xhtml.h configoptions.cpp FORCE: diff --git a/src/classdef.cpp b/src/classdef.cpp index 947d7d3..bf95dbb 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -162,7 +162,7 @@ class ClassDefImpl */ bool subGrouping; - /** Reason of existance is a "use" relation */ + /** Reason of existence is a "use" relation */ bool usedOnly; /** List of titles to use for the summary */ @@ -180,6 +180,8 @@ class ClassDefImpl /** Does this class represent a Java style enum? */ bool isJavaEnum; + bool isGeneric; + int spec; }; @@ -240,6 +242,7 @@ void ClassDefImpl::init(const char *defFileName, const char *name, { isLocal=FALSE; } + isGeneric = lang==SrcLangExt_CSharp && QCString(name).find('<')!=-1; } ClassDefImpl::ClassDefImpl() : vhdlSummaryTitles(17) @@ -324,10 +327,10 @@ QCString ClassDef::displayName(bool includeScope) const { n="<"+n.left(n.length()-2)+">"; } - else if (n.right(2)=="-g") - { - n = n.left(n.length()-2); - } + //else if (n.right(2)=="-g") + //{ + // n = n.left(n.length()-2); + //} //printf("ClassDef::displayName()=%s\n",n.data()); return n; } @@ -831,7 +834,7 @@ static void searchTemplateSpecs(/*in*/ Definition *d, ClassDef *cd=(ClassDef *)d; if (!name.isEmpty()) name+="::"; QCString clName = d->localName(); - if (clName.right(2)=="-g" || clName.right(2)=="-p") + if (/*clName.right(2)=="-g" ||*/ clName.right(2)=="-p") { clName = clName.left(clName.length()-2); } @@ -1749,19 +1752,7 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade ol.startMemberDeclaration(); ol.startMemberItem(anchor(),FALSE); QCString ctype = compoundTypeString(); - QCString cname; - if (localNames) - { - cname = localName(); - if (cname.right(2)=="-p" || cname.right(2)=="-g") - { - cname = cname.left(cname.length()-2); - } - } - else - { - cname = displayName(); - } + QCString cname = displayName(!localNames); if (lang!=SrcLangExt_VHDL) // for VHDL we swap the name and the type { @@ -1831,7 +1822,7 @@ void ClassDef::addClassAttributes(OutputList &ol) ol.popGeneratorState(); } -void ClassDef::writeDocumentationContents(OutputList &ol,const QCString &pageTitle) +void ClassDef::writeDocumentationContents(OutputList &ol,const QCString & /*pageTitle*/) { ol.startContents(); @@ -1845,7 +1836,7 @@ void ClassDef::writeDocumentationContents(OutputList &ol,const QCString &pageTit if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase(),anchor()); + Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); Doxygen::searchIndex->addWord(localName(),TRUE); } bool exampleFlag=hasExamples(); @@ -2456,7 +2447,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup, QCString cn=name().right(name().length()-ri-2); if (!cn.isEmpty() && cn.at(0)!='@' && md) { - if (cn.right(2)=="-p" || cn.right(2)=="-g") + if (cn.right(2)=="-p" /*|| cn.right(2)=="-g"*/) { cn = cn.left(cn.length()-2); } @@ -3622,13 +3613,13 @@ QCString ClassDef::qualifiedNameWithTemplateParameters( if (!scName.isEmpty()) scName+=scopeSeparator; bool isSpecialization = localName().find('<')!=-1; - bool isGeneric = getLanguage()==SrcLangExt_CSharp; QCString clName = className(); - if (isGeneric && clName.right(2)=="-g") - { - clName = clName.left(clName.length()-2); - } + //bool isGeneric = getLanguage()==SrcLangExt_CSharp; + //if (isGeneric && clName.right(2)=="-g") + //{ + // clName = clName.left(clName.length()-2); + //} //printf("m_impl->lang=%d clName=%s\n",m_impl->lang,clName.data()); scName+=clName; ArgumentList *al=0; @@ -4485,6 +4476,11 @@ bool ClassDef::isJavaEnum() const return m_impl->isJavaEnum; } +bool ClassDef::isGeneric() const +{ + return m_impl->isGeneric; +} + void ClassDef::setClassSpecifier(int spec) { m_impl->spec = spec; diff --git a/src/classdef.h b/src/classdef.h index e1fa0e5..5c18728 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -288,6 +288,8 @@ class ClassDef : public Definition bool isJavaEnum() const; + bool isGeneric() const; + //----------------------------------------------------------------------------------- // --- setters ---- //----------------------------------------------------------------------------------- diff --git a/src/classlist.cpp b/src/classlist.cpp index 188664b..11f36b6 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -22,6 +22,8 @@ #include "language.h" #include "doxygen.h" #include "vhdldocgen.h" +#include "defargs.h" +#include "arguments.h" ClassList::ClassList() : QList<ClassDef>() { @@ -164,3 +166,54 @@ void ClassSDict::writeDocumentation(OutputList &ol,Definition * container) } } +//------------------------------------------- + +void GenericsSDict::insert(const QCString &key,ClassDef *cd) +{ + int i=key.find('<'); + if (i==-1) return; + ArgumentList argList; + stringToArgumentList(key.mid(i),&argList); + int c = argList.count(); + if (c==0) return; + GenericsCollection *collection = m_dict.find(key.left(i)); + if (collection==0) // new name + { + collection = new GenericsCollection; + m_dict.append(key.left(i),collection); + } + if (collection->find(c)==0) // should always be 0! + { + collection->insert(c,cd); + } +} + +ClassDef *GenericsSDict::find(const QCString &key) +{ + int i=key.find('<'); + if (i==-1) + { + GenericsCollection *collection = m_dict.find(key); + if (collection && collection->count()==1) + { + QIntDictIterator<ClassDef> it(*collection); + return it.current(); + } + } + else + { + GenericsCollection *collection = m_dict.find(key.left(i)); + if (collection) + { + ArgumentList argList; + stringToArgumentList(key.mid(i),&argList); + int c = argList.count(); + return collection->find(c); + } + } + return 0; +} + + + + diff --git a/src/classlist.h b/src/classlist.h index 71a62b6..830c3cd 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -64,4 +64,22 @@ class ClassSDict : public SDict<ClassDef> bool declVisible(const ClassDef::CompoundType *filter=0) const; }; +class GenericsCollection : public QIntDict<ClassDef> +{ + public: + GenericsCollection() : QIntDict<ClassDef>(17) {} + ~GenericsCollection() {} +}; + +class GenericsSDict +{ + public: + GenericsSDict() : m_dict(17) { m_dict.setAutoDelete(TRUE); } + ~GenericsSDict() {} + void insert(const QCString &key,ClassDef *cd); + ClassDef *find(const QCString &key); + private: + SDict<GenericsCollection> m_dict; +}; + #endif @@ -26,9 +26,9 @@ class FileDef; class MemberDef; void parseCCode(CodeOutputInterface &,const char *,const QCString &, - bool ,const char *,FileDef *fd=0, - int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0,bool showLineNumbers=TRUE); + bool ,const char *,FileDef *fd, + int startLine,int endLine,bool inlineFragment, + MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx); void resetCCodeParserState(); void codeFreeScanner(); @@ -112,6 +112,8 @@ static bool g_lexInit = FALSE; static QStack<int> g_classScopeLengthStack; +static Definition *g_searchCtx; + // context for an Objective-C method call struct ObjCCallCtx { @@ -414,11 +416,18 @@ static void popScope() //printf("popScope() result: `%s'\n",g_classScope.data()); } -static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") +static void setCurrentDoc(const QCString &anchor) { if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(name,base,anchor); + if (g_searchCtx) + { + Doxygen::searchIndex->setCurrentDoc(g_searchCtx,g_searchCtx->anchor(),FALSE); + } + else + { + Doxygen::searchIndex->setCurrentDoc(g_sourceFileDef,anchor,TRUE); + } } } @@ -496,20 +505,14 @@ static void startCodeLine() g_code->writeLineNumber(g_currentMemberDef->getReference(), g_currentMemberDef->getOutputFileBase(), g_currentMemberDef->anchor(),g_yyLineNr); - setCurrentDoc( - g_currentMemberDef->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } else if (d->isLinkableInProject()) { g_code->writeLineNumber(d->getReference(), d->getOutputFileBase(), 0,g_yyLineNr); - setCurrentDoc( - d->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } } else @@ -3546,10 +3549,10 @@ void resetCCodeParserState() void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef,bool showLineNumbers) + MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx) { - //printf("***parseCode() exBlock=%d exName=%s fd=%p className=%s\n", - // exBlock,exName,fd,className); + //printf("***parseCode() exBlock=%d exName=%s fd=%p className=%s searchCtx=%s\n", + // exBlock,exName,fd,className,searchCtx?searchCtx->name().data():"<none>"); if (s.isEmpty()) return; if (g_codeClassSDict==0) { @@ -3560,6 +3563,7 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, g_inputPosition = 0; g_currentFontClass = 0; g_needsTermination = FALSE; + g_searchCtx = searchCtx; g_inFunctionTryBlock = FALSE; if (endLine!=-1) g_inputLines = endLine+1; @@ -3585,7 +3589,7 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, g_sourceFileDef = fd; g_lineNumbers = fd!=0 && showLineNumbers; bool cleanupSourceDef = FALSE; - if (/* exBlock */ fd==0) + if (fd==0) { // create a dummy filedef for the example g_sourceFileDef = new FileDef("",(exName?exName:"generated")); @@ -3593,7 +3597,7 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, } if (g_sourceFileDef) { - setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); + setCurrentDoc("l00001"); g_insideObjC = g_sourceFileDef->name().lower().right(2)==".m" || g_sourceFileDef->name().lower().right(3)==".mm"; } diff --git a/src/commentcnv.l b/src/commentcnv.l index 20744e1..6da02db 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -439,6 +439,23 @@ void replaceComment(int offset); { copyToOutput(yytext,(int)yyleng); } + else + { + int l=0; + while (yytext[l]==' ' || yytext[l]=='\t') + { + l++; + } + copyToOutput(yytext,l); + if (yyleng-l==3) // ends with //! or /// + { + copyToOutput(" * ",3); + } + else // ends with // + { + copyToOutput("//",2); + } + } } <Verbatim,VerbatimCode>[^@\/\\\n{}]* { /* any character not a backslash or new line or } */ copyToOutput(yytext,(int)yyleng); @@ -446,10 +463,16 @@ void replaceComment(int offset); <Verbatim,VerbatimCode>\n { /* new line in verbatim block */ copyToOutput(yytext,(int)yyleng); } -<Verbatim,VerbatimCode>^[ \t]*"///" { +<Verbatim>^[ \t]*"///" { if (g_blockName=="dot" || g_blockName=="msc" || g_blockName.at(0)=='f') { // see bug 487871, strip /// from dot images and formulas. + int l=0; + while (yytext[l]==' ' || yytext[l]=='\t') + { + l++; + } + copyToOutput(yytext,l); copyToOutput(" ",3); } else // even slashes are verbatim (e.g. \verbatim, \code) diff --git a/src/config.xml b/src/config.xml index b59b213..e0caa16 100644 --- a/src/config.xml +++ b/src/config.xml @@ -149,8 +149,9 @@ can be used to strip a user-defined part of the path. Stripping is only done if one of the specified strings matches the left-hand part of the path. The tag can be used to show relative paths in the file list. If left blank the directory from which doxygen is run is used as the -path to strip. -' depends='FULL_PATH_NAMES'> +path to strip. Note that you specify absolute paths here, but also +relative paths, which will be relative from the directory where doxygen is +started.' depends='FULL_PATH_NAMES'> <value name=''/> </option> <option type='list' id='STRIP_FROM_INC_PATH' format='string' docs=' @@ -201,7 +202,7 @@ be part of the file/class/namespace that contains it. <option type='int' id='TAB_SIZE' docs=' The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen uses this value to replace tabs by spaces in code fragments. -' minval='1' maxval='16' defval='8'/> +' minval='1' maxval='16' defval='4'/> <option type='list' id='ALIASES' format='string' docs=' This tag can be used to specify a number of aliases that acts as commands in the documentation. An alias has the form "name=value". @@ -240,14 +241,15 @@ VHDL. ' defval='0'/> <option type='list' id='EXTENSION_MAPPING' format='string' docs=' Doxygen selects the parser to use depending on the extension of the files it -parses. With this tag you can assign which parser to use for a given extension. -Doxygen has a built-in mapping, but you can override or extend it using this -tag. The format is ext=language, where ext is a file extension, and language -is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -(default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +parses. With this tag you can assign which parser to use for a given +extension. Doxygen has a built-in mapping, but you can override or extend it +using this tag. The format is ext=language, where ext is a file extension, +and language is one of the parsers supported by doxygen: IDL, Java, +Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +C++. For instance to make doxygen treat .inc files as Fortran files (default +is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +that for custom extensions you also need to set FILE_PATTERNS otherwise the +files are not read by doxygen. '> </option> <option type='bool' id='MARKDOWN_SUPPORT' docs=' @@ -258,6 +260,12 @@ The output of markdown processing is further processed by doxygen, so you can mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in case of backward compatibilities issues. ' defval='1'/> + <option type='bool' id='AUTOLINK_SUPPORT' docs=' +When enabled doxygen tries to link words that correspond to documented classes, +or namespaces to their corresponding documentation. Such a link can be +prevented in individual cases by by putting a % sign in front of the word or +globally by setting AUTOLINK_SUPPORT to NO. +' defval='1'/> <option type='bool' id='BUILTIN_STL_SUPPORT' docs=' If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to include (a tag file for) the STL sources as input, then you should @@ -276,12 +284,12 @@ Doxygen will parse them like normal C++ but will assume all classes use public instead of private inheritance when no explicit protection keyword is present. ' defval='0'/> <option type='bool' id='IDL_PROPERTY_SUPPORT' docs=' -For Microsoft's IDL there are propget and propput attributes to indicate getter -and setter methods for a property. Setting this option to YES (the default) -will make doxygen replace the get and set methods by a property in the -documentation. This will only work if the methods are indeed getting or -setting a simple type. If this is not the case, or you want to show the -methods anyway, you should set this option to NO. +For Microsoft's IDL there are propget and propput attributes to indicate +getter and setter methods for a property. Setting this option to YES (the +default) will make doxygen replace the get and set methods by a property in +the documentation. This will only work if the methods are indeed getting or +setting a simple type. If this is not the case, or you want to show the +methods anyway, you should set this option to NO. ' defval='1'/> <option type='bool' id='DISTRIBUTE_GROUP_DOC' docs=' If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC @@ -356,7 +364,7 @@ If the EXTRACT_PRIVATE tag is set to YES all private members of a class will be included in the documentation. ' defval='0'/> <option type='bool' id='EXTRACT_PACKAGE' docs=' -If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation. ' defval='0'/> <option type='bool' id='EXTRACT_STATIC' docs=' @@ -848,10 +856,19 @@ standard footer. <option type='string' id='HTML_STYLESHEET' format='file' docs=' The HTML_STYLESHEET tag can be used to specify a user-defined cascading style sheet that is used by each HTML page. It can be used to -fine-tune the look of the HTML output. If the tag is left blank doxygen -will generate a default style sheet. Note that doxygen will try to copy -the style sheet file to the HTML output directory, so don't put your own -style sheet in the HTML output directory as well, or it will be erased! +fine-tune the look of the HTML output. If left blank doxygen will +generate a default style sheet. Note that it is recommended to use +HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +tag will in the future become obsolete. +' defval='' depends='GENERATE_HTML'/> + <option type='string' id='HTML_EXTRA_STYLESHEET' format='file' docs=' +The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +user-defined cascading style sheet that is included after the standard +style sheets created by doxygen. Using this option one can overrule +certain style aspects. This is preferred over using HTML_STYLESHEET +since it does not replace the standard style sheet and is therefor more +robust against future updates. Doxygen will copy the style sheet file to +the output directory. ' defval='' depends='GENERATE_HTML'/> <option type='list' id='HTML_EXTRA_FILES' format='file' docs=' The HTML_EXTRA_FILES tag can be used to specify one or more extra images or @@ -928,9 +945,9 @@ reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen will append .docset to the name. ' defval='org.doxygen.Project' depends='GENERATE_DOCSET'/> <option type='string' id='DOCSET_PUBLISHER_ID' format='string' docs=' -When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -the documentation publisher. This should be a reverse domain-name style -string, e.g. com.mycompany.MyDocSet.documentation. +When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +identify the documentation publisher. This should be a reverse domain-name +style string, e.g. com.mycompany.MyDocSet.documentation. ' defval='org.doxygen.Publisher' depends='GENERATE_DOCSET'/> <option type='string' id='DOCSET_PUBLISHER_NAME' format='string' docs=' The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. diff --git a/src/dbusxmlscanner.cpp b/src/dbusxmlscanner.cpp index ddfe9ac..246bbe9 100644 --- a/src/dbusxmlscanner.cpp +++ b/src/dbusxmlscanner.cpp @@ -866,7 +866,8 @@ void DBusXMLScanner::parseCode(CodeOutputInterface & /* codeOutIntf */, int /* endLine */, bool /* inlineFragment */, MemberDef * /* memberDef */, - bool /*showLineNumbers*/) + bool /*showLineNumbers*/, + Definition * /* searchCtx */) { } void DBusXMLScanner::resetCodeParserState() diff --git a/src/dbusxmlscanner.h b/src/dbusxmlscanner.h index 545071c..e3eff03 100644 --- a/src/dbusxmlscanner.h +++ b/src/dbusxmlscanner.h @@ -45,7 +45,8 @@ public: int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); diff --git a/src/definition.cpp b/src/definition.cpp index 03678f5..c4d3a6e 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -45,7 +45,7 @@ //----------------------------------------------------------------------------------------- -/** Private data associated with a Definition object. */ +/** Private data associated with a Symbol Definition object. */ class DefinitionImpl { public: @@ -491,63 +491,6 @@ void Definition::addSectionsToIndex() } } -void Definition::writeToc(OutputList &ol) -{ - makeResident(); - if (m_impl->sectionDict==0) return; - ol.pushGeneratorState(); - ol.disableAllBut(OutputGenerator::Html); - ol.writeString("<div class=\"toc\">"); - ol.writeString("<h3>"); - ol.writeString(theTranslator->trRTFTableOfContents()); - ol.writeString("</h3>\n"); - ol.writeString("<ul>"); - SDict<SectionInfo>::Iterator li(*m_impl->sectionDict); - SectionInfo *si; - int level=1; - char cs[2]; - cs[1]='\0'; - bool inLi[5]={ FALSE, FALSE, FALSE, FALSE }; - for (li.toFirst();(si=li.current());++li) - { - if (si->type==SectionInfo::Section || - si->type==SectionInfo::Subsection || - si->type==SectionInfo::Subsubsection || - si->type==SectionInfo::Paragraph) - { - //printf(" level=%d title=%s\n",level,si->title.data()); - int nextLevel = (int)si->type; - if (nextLevel>level) - { - ol.writeString("<ul>"); - } - else if (nextLevel<level) - { - if (inLi[level]) ol.writeString("</li>\n"); - inLi[level]=FALSE; - ol.writeString("</ul>\n"); - } - cs[0]='0'+nextLevel; - if (inLi[nextLevel]) ol.writeString("</li>\n"); - ol.writeString("<li class=\"level"+QCString(cs)+"\"><a href=\"#"+si->label+"\">"+si->title+"</a>"); - inLi[nextLevel]=TRUE; - level = nextLevel; - } - } - while (level>1) - { - if (inLi[level]) ol.writeString("</li>\n"); - inLi[level]=FALSE; - ol.writeString("</ul>\n"); - level--; - } - if (inLi[level]) ol.writeString("</li>\n"); - inLi[level]=FALSE; - ol.writeString("</ul>\n"); - ol.writeString("</div>\n"); - ol.popGeneratorState(); -} - void Definition::writeDocAnchorsToTagFile() { makeResident(); @@ -1513,6 +1456,9 @@ QCString Definition::pathFragment() const return result; } +//---------------------------------------------------------------------------------------- + +// TODO: move to htmlgen /*! Returns the string used in the footer for $navpath when * GENERATE_TREEVIEW is enabled */ @@ -1520,9 +1466,11 @@ QCString Definition::navigationPathAsString() const { makeResident(); QCString result; - if (m_impl->outerScope && m_impl->outerScope!=Doxygen::globalScope) + Definition *outerScope = getOuterScope(); + QCString locName = localName(); + if (outerScope && outerScope!=Doxygen::globalScope) { - result+=m_impl->outerScope->navigationPathAsString(); + result+=outerScope->navigationPathAsString(); } else if (definitionType()==Definition::TypeFile && ((const FileDef*)this)->getDirDef()) { @@ -1543,8 +1491,8 @@ QCString Definition::navigationPathAsString() const } else if (definitionType()==Definition::TypeClass) { - QCString name = m_impl->localName; - if (name.right(2)=="-p" || name.right(2)=="-g") + QCString name = locName; + if (name.right(2)=="-p" /*|| name.right(2)=="-g"*/) { name = name.left(name.length()-2); } @@ -1555,17 +1503,18 @@ QCString Definition::navigationPathAsString() const else { result+="<a class=\"el\" href=\"$relpath$"+getOutputFileBase()+Doxygen::htmlFileExtension+"\">"+ - m_impl->localName+"</a>"; + locName+"</a>"; } } else { - result+="<b>"+m_impl->localName+"</b>"; + result+="<b>"+locName+"</b>"; } result+="</li>"; return result; } +// TODO: move to htmlgen void Definition::writeNavigationPath(OutputList &ol) const { ol.pushGeneratorState(); @@ -1582,6 +1531,68 @@ void Definition::writeNavigationPath(OutputList &ol) const ol.popGeneratorState(); } +// TODO: move to htmlgen +void Definition::writeToc(OutputList &ol) +{ + makeResident(); + SectionDict *sectionDict = m_impl->sectionDict; + if (sectionDict==0) return; + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<div class=\"toc\">"); + ol.writeString("<h3>"); + ol.writeString(theTranslator->trRTFTableOfContents()); + ol.writeString("</h3>\n"); + ol.writeString("<ul>"); + SDict<SectionInfo>::Iterator li(*sectionDict); + SectionInfo *si; + int level=1; + char cs[2]; + cs[1]='\0'; + bool inLi[5]={ FALSE, FALSE, FALSE, FALSE }; + for (li.toFirst();(si=li.current());++li) + { + if (si->type==SectionInfo::Section || + si->type==SectionInfo::Subsection || + si->type==SectionInfo::Subsubsection || + si->type==SectionInfo::Paragraph) + { + //printf(" level=%d title=%s\n",level,si->title.data()); + int nextLevel = (int)si->type; + if (nextLevel>level) + { + ol.writeString("<ul>"); + } + else if (nextLevel<level) + { + if (inLi[level]) ol.writeString("</li>\n"); + inLi[level]=FALSE; + ol.writeString("</ul>\n"); + } + cs[0]='0'+nextLevel; + if (inLi[nextLevel]) ol.writeString("</li>\n"); + ol.writeString("<li class=\"level"+QCString(cs)+"\"><a href=\"#"+si->label+"\">"+si->title+"</a>"); + inLi[nextLevel]=TRUE; + level = nextLevel; + } + } + while (level>1) + { + if (inLi[level]) ol.writeString("</li>\n"); + inLi[level]=FALSE; + ol.writeString("</ul>\n"); + level--; + } + if (inLi[level]) ol.writeString("</li>\n"); + inLi[level]=FALSE; + ol.writeString("</ul>\n"); + ol.writeString("</div>\n"); + ol.popGeneratorState(); +} + +//---------------------------------------------------------------------------------------- + + QCString Definition::symbolName() const { return m_symbolName; diff --git a/src/diagram.cpp b/src/diagram.cpp index fe6f1f5..b675b8d 100644 --- a/src/diagram.cpp +++ b/src/diagram.cpp @@ -312,7 +312,7 @@ QCString DiagramItem::label() const // we use classDef->name() here and not diplayName() in order // to get the name used in the inheritance relation. QCString n = classDef->name(); - if (n.right(2)=="-g" || n.right(2)=="-p") + if (/*n.right(2)=="-g" ||*/ n.right(2)=="-p") { n = n.left(n.length()-2); } diff --git a/src/docparser.cpp b/src/docparser.cpp index 4e25bfb..e7a6261 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1001,9 +1001,18 @@ static void handleUnclosedStyleCommands() static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) { + QCString name = linkToText(SrcLangExt_Unknown,g_token->name,TRUE); + static bool autolinkSupport = Config_getBool("AUTOLINK_SUPPORT"); + if (!autolinkSupport) // no autolinking -> add as normal word + { + children.append(new DocWord(parent,name)); + return; + } + + // ------- try to turn the word 'name' into a link + Definition *compound=0; MemberDef *member=0; - QCString name = linkToText(SrcLangExt_Unknown,g_token->name,TRUE); int len = g_token->name.length(); ClassDef *cd=0; bool ambig; @@ -1091,18 +1100,18 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) cd->briefDescriptionAsTooltip() )); } - else if (!g_insideHtmlLink && (cd=getClass(g_token->name+"-g"))) - { - // special case 3, where the token name is not a class, but could - // be a C# generic - children.append(new - DocLinkedWord(parent,name, - cd->getReference(), - cd->getOutputFileBase(), - cd->anchor(), - cd->briefDescriptionAsTooltip() - )); - } +// else if (!g_insideHtmlLink && (cd=getClass(g_token->name+"-g"))) +// { +// // special case 3, where the token name is not a class, but could +// // be a C# generic +// children.append(new +// DocLinkedWord(parent,name, +// cd->getReference(), +// cd->getOutputFileBase(), +// cd->anchor(), +// cd->briefDescriptionAsTooltip() +// )); +// } else // normal non-linkable word { if (g_token->name.left(1)=="#" || g_token->name.left(2)=="::") @@ -5641,7 +5650,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs); break; case HTML_CODE: - if (getLanguageFromFileName(g_fileName)==SrcLangExt_CSharp || g_xmlComment) + if (/*getLanguageFromFileName(g_fileName)==SrcLangExt_CSharp ||*/ g_xmlComment) // for C# source or inside a <summary> or <remark> section we // treat <code> as an XML tag (so similar to @code) { @@ -6835,6 +6844,20 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, } g_scope = ctx; + if (indexWords && Doxygen::searchIndex) + { + if (md) + { + g_searchUrl=md->getOutputFileBase(); + Doxygen::searchIndex->setCurrentDoc(md,md->anchor(),FALSE); + } + else if (ctx) + { + g_searchUrl=ctx->getOutputFileBase(); + Doxygen::searchIndex->setCurrentDoc(ctx,ctx->anchor(),FALSE); + } + } +#if 0 if (indexWords && md && Doxygen::searchIndex) { g_searchUrl=md->getOutputFileBase(); @@ -6912,6 +6935,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, } Doxygen::searchIndex->setCurrentDoc(name,g_searchUrl); } +#endif else { g_searchUrl=""; @@ -7036,22 +7060,3 @@ void docFindSections(const char *input, doctokenizerYYFindSections(input,d,mg,fileName); } -void initDocParser() -{ - static bool searchEngine = Config_getBool("SEARCHENGINE"); - static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); - if (searchEngine && serverBasedSearch) - { - Doxygen::searchIndex = new SearchIndex; - } - else // no search engine or pure javascript based search function - { - Doxygen::searchIndex = 0; - } -} - -void finializeDocParser() -{ - delete Doxygen::searchIndex; -} - diff --git a/src/docparser.h b/src/docparser.h index 77f488b..e1a630e 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -35,10 +35,6 @@ class SectionDict; //--------------------------------------------------------------------------- -/*! Initialize the documentation parser */ -void initDocParser(); -/*! Cleanup the documentation parser */ -void finializeDocParser(); /*! Main entry point for the documentation parser. * @param fileName File in which the documentation block is found (or the diff --git a/src/docsets.cpp b/src/docsets.cpp index d7d3d1c..e851383 100644 --- a/src/docsets.cpp +++ b/src/docsets.cpp @@ -88,6 +88,9 @@ void DocSets::initialize() "\trm -f $(DOCSET_RESOURCES)/Nodes.xml\n" "\trm -f $(DOCSET_RESOURCES)/Tokens.xml\n" "\n" + "clean:\n" + "\trm -rf $(DOCSET_NAME)\n" + "\n" "install: docset\n" "\tmkdir -p $(DESTDIR)\n" "\tcp -R $(DOCSET_NAME) $(DESTDIR)\n" @@ -194,6 +197,7 @@ QCString DocSets::indent() void DocSets::incContentsDepth() { + //printf("DocSets::incContentsDepth() m_dc=%d\n",m_dc); ++m_dc; m_nts << indent() << "<Subnodes>" << endl; m_firstNode.resize(m_dc); @@ -211,6 +215,7 @@ void DocSets::decContentsDepth() } m_nts << indent() << "</Subnodes>" << endl; --m_dc; + //printf("DocSets::decContentsDepth() m_dc=%d\n",m_dc); } void DocSets::addContentsItem(bool isDir, @@ -223,7 +228,8 @@ void DocSets::addContentsItem(bool isDir, Definition * /*def*/) { (void)isDir; - if (file && ref==0) + //printf("DocSets::addContentsItem(%s) m_dc=%d\n",name,m_dc); + if (ref==0) { if (!m_firstNode.at(m_dc-1)) { @@ -232,12 +238,27 @@ void DocSets::addContentsItem(bool isDir, m_firstNode.at(m_dc-1)=FALSE; m_nts << indent() << " <Node>" << endl; m_nts << indent() << " <Name>" << convertToXML(name) << "</Name>" << endl; - m_nts << indent() << " <Path>"; - m_nts << file << Doxygen::htmlFileExtension; - m_nts << "</Path>" << endl; - if (anchor) + if (file && file[0]=='^') // URL marker { - m_nts << indent() << " <Anchor>" << anchor << "</Anchor>" << endl; + m_nts << indent() << " <URL>" << convertToXML(&file[1]) + << "</URL>" << endl; + } + else // relative file + { + m_nts << indent() << " <Path>"; + if (file && file[0]=='!') // user specified file + { + m_nts << convertToXML(&file[1]); + } + else if (file) // doxygen generated file + { + m_nts << file << Doxygen::htmlFileExtension; + } + m_nts << "</Path>" << endl; + if (file && anchor) + { + m_nts << indent() << " <Anchor>" << anchor << "</Anchor>" << endl; + } } } } @@ -374,7 +395,16 @@ void DocSets::addIndexItem(Definition *context,MemberDef *md,const char *) { scope = nd->name(); } - writeToken(m_tts,md,type,lang,scope,md->anchor()); + MemberDef *declMd = md->memberDeclaration(); + if (declMd==0) declMd = md; + { + fd = md->getFileDef(); + if (fd) + { + decl = fd->name(); + } + } + writeToken(m_tts,md,type,lang,scope,md->anchor(),decl); } else if (context && context->isLinkable()) { diff --git a/src/dot.cpp b/src/dot.cpp index 5d6cfbd..39bc844 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -1540,10 +1540,10 @@ static QCString convertLabel(const QCString &l) { QCString result; QCString bBefore("\\_/<({[: =-+@%#~?$"); // break before character set - QCString bAfter(">]),;|"); // break after character set + QCString bAfter(">]),:;|"); // break after character set const char *p=l.data(); if (p==0) return result; - char c; + char c,pc=0; char cs[2]; cs[1]=0; int len=l.length(); @@ -1573,7 +1573,7 @@ static QCString convertLabel(const QCString &l) foldLen = (3*foldLen+sinceLast+2)/4; sinceLast=1; } - else if (charsLeft>foldLen/3 && sinceLast>foldLen && bBefore.contains(c)) + else if ((pc!=':' || c!=':') && charsLeft>foldLen/3 && sinceLast>foldLen && bBefore.contains(c)) { result+="\\l"; result+=replacement; @@ -1588,7 +1588,7 @@ static QCString convertLabel(const QCString &l) foldLen = (foldLen+sinceLast+1)/2; sinceLast=0; } - else if (charsLeft>foldLen/3 && sinceLast>foldLen && bAfter.contains(c)) + else if (charsLeft>foldLen/3 && sinceLast>foldLen && bAfter.contains(c) && (c!=':' || *p!=':')) { result+=replacement; result+="\\l"; @@ -1601,6 +1601,7 @@ static QCString convertLabel(const QCString &l) sinceLast++; } charsLeft--; + pc=c; } return result; } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 26784f5..afb2205 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -130,7 +130,7 @@ NamespaceDef *Doxygen::globalScope = 0; QDict<RefList> *Doxygen::xrefLists = new QDict<RefList>; // dictionary of cross-referenced item lists bool Doxygen::parseSourcesNeeded = FALSE; QTime Doxygen::runningTime; -SearchIndex * Doxygen::searchIndex=0; +SearchIndexIntf *Doxygen::searchIndex=0; QDict<DefinitionIntf> *Doxygen::symbolMap; bool Doxygen::outputToWizard=FALSE; QDict<int> * Doxygen::htmlDirMap = 0; @@ -151,6 +151,7 @@ bool Doxygen::userComments = FALSE; QCString Doxygen::spaces; bool Doxygen::generatingXmlOutput = FALSE; bool Doxygen::markdownSupport = TRUE; +GenericsSDict Doxygen::genericsDict; // locally accessible globals static QDict<EntryNav> g_classEntries(1009); @@ -1156,7 +1157,7 @@ static void addClassToContext(EntryNav *rootNav) Debug::print(Debug::Classes,0, " Found class with name %s (qualifiedName=%s -> cd=%p)\n", cd ? cd->name().data() : root->name.data(), qualifiedName.data(),cd); - + if (cd) { fullName=cd->name(); @@ -1241,6 +1242,11 @@ static void addClassToContext(EntryNav *rootNav) // add class to the list //printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data()); Doxygen::classSDict->append(fullName,cd); + + if (cd->isGeneric()) // generics are also stored in a separate dictionary for fast lookup of instantions + { + Doxygen::genericsDict.insert(fullName,cd); + } } cd->addSectionsToDefinition(root->anchors); @@ -3833,12 +3839,16 @@ static ClassDef *findClassWithinClassContext(Definition *context,ClassDef *cd,co { result = getClass(name); } + if (result==0 && cd && cd->getLanguage()==SrcLangExt_CSharp && name.find('<')!=-1) + { + result = Doxygen::genericsDict.find(name); + } //printf("** Trying to find %s within context %s class %s result=%s lookup=%p\n", // name.data(), // context ? context->name().data() : "<none>", // cd ? cd->name().data() : "<none>", // result ? result->name().data() : "<none>", - // Doxygen::classSDict.find(name) + // Doxygen::classSDict->find(name) // ); return result; } @@ -4366,24 +4376,31 @@ static bool findClassRelation( if (baseClass==0 && i!=-1) // base class has template specifiers { - // TODO: here we should try to find the correct template specialization - // but for now, we only look for the unspecializated base class. - int e=findEndOfTemplate(baseClassName,i+1); - //printf("baseClass==0 i=%d e=%d\n",i,e); - if (e!=-1) // end of template was found at e + if (root->lang == SrcLangExt_CSharp) + { + baseClass = Doxygen::genericsDict.find(baseClassName); + } + else { - templSpec=removeRedundantWhiteSpace(baseClassName.mid(i,e-i)); - baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e); - baseClass=getResolvedClass(explicitGlobalScope ? Doxygen::globalScope : context, - cd->getFileDef(), - baseClassName, - &baseClassTypeDef, - 0, //&templSpec, - mode==Undocumented, - TRUE - ); - //printf("baseClass=%p -> baseClass=%s templSpec=%s\n", - // baseClass,baseClassName.data(),templSpec.data()); + // TODO: here we should try to find the correct template specialization + // but for now, we only look for the unspecializated base class. + int e=findEndOfTemplate(baseClassName,i+1); + //printf("baseClass==0 i=%d e=%d\n",i,e); + if (e!=-1) // end of template was found at e + { + templSpec=removeRedundantWhiteSpace(baseClassName.mid(i,e-i)); + baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e); + baseClass=getResolvedClass(explicitGlobalScope ? Doxygen::globalScope : context, + cd->getFileDef(), + baseClassName, + &baseClassTypeDef, + 0, //&templSpec, + mode==Undocumented, + TRUE + ); + //printf("baseClass=%p -> baseClass=%s templSpec=%s\n", + // baseClass,baseClassName.data(),templSpec.data()); + } } } else if (baseClass && !templSpec.isEmpty()) // we have a known class, but also @@ -4425,11 +4442,10 @@ static bool findClassRelation( //printf("root->name=%s biName=%s baseClassName=%s\n", // root->name.data(),biName.data(),baseClassName.data()); - if (cd->isCSharp() && i!=-1) // C# generic -> add internal -g postfix - { - baseClassName+="-g"; - //templSpec.resize(0); - } + //if (cd->isCSharp() && i!=-1) // C# generic -> add internal -g postfix + //{ + // baseClassName+="-g"; + //} if (!found) { @@ -6036,7 +6052,7 @@ static void findMember(EntryNav *rootNav, else if (overloaded) // check if the function belongs to only one class { // for unique overloaded member we allow the class to be - // omitted, this is to be Qt compatable. Using this should + // omitted, this is to be Qt compatible. Using this should // however be avoided, because it is error prone MemberNameIterator mni(*mn); MemberDef *md=mni.toFirst(); @@ -7182,7 +7198,7 @@ static void findEnumDocumentation(EntryNav *rootNav) RECURSE_ENTRYTREE(findEnumDocumentation,rootNav); } -// seach for each enum (member or function) in mnl if it has documented +// search for each enum (member or function) in mnl if it has documented // enum values. static void findDEV(const MemberNameSDict &mnsd) { @@ -7217,7 +7233,7 @@ static void findDEV(const MemberNameSDict &mnsd) } } -// seach for each enum (member or function) if it has documented enum +// search for each enum (member or function) if it has documented enum // values. static void findDocumentedEnumValues() { @@ -8687,6 +8703,22 @@ static void copyStyleSheet() copyFile(htmlStyleSheet,destFileName); } } + QCString &htmlExtraStyleSheet = Config_getString("HTML_EXTRA_STYLESHEET"); + if (!htmlExtraStyleSheet.isEmpty()) + { + QFileInfo fi(htmlExtraStyleSheet); + if (!fi.exists()) + { + err("Style sheet '%s' specified by HTML_EXTRA_STYLESHEET does not exist!\n",htmlExtraStyleSheet.data()); + htmlExtraStyleSheet.resize(0); // revert to the default + } + else + { + QCString destFileName = Config_getString("HTML_OUTPUT")+"/"+fi.fileName().data(); + copyFile(htmlExtraStyleSheet,destFileName); + } + } + } static void copyLogo() @@ -8704,6 +8736,7 @@ static void copyLogo() { QCString destFileName = Config_getString("HTML_OUTPUT")+"/"+fi.fileName().data(); copyFile(projectLogo,destFileName); + Doxygen::indexList.addImageFile(fi.fileName().data()); } } } @@ -10420,7 +10453,7 @@ void parseInput() } // compute the shortest possible names of all files - // without loosing the uniqueness of the file names. + // without losing the uniqueness of the file names. msg("Generating disk names...\n"); Doxygen::inputNameList->generateDiskNames(); @@ -10484,7 +10517,7 @@ void generateOutput() exit(0); } - initDocParser(); + initSearchIndexer(); bool generateHtml = Config_getBool("GENERATE_HTML"); bool generateLatex = Config_getBool("GENERATE_LATEX"); @@ -10696,8 +10729,15 @@ void generateOutput() if (generateHtml && searchEngine && serverBasedSearch) { msg("Generating search index\n"); - HtmlGenerator::writeSearchPage(); - Doxygen::searchIndex->write(Config_getString("HTML_OUTPUT")+"/search/search.idx"); + if (Doxygen::searchIndex->kind()==SearchIndexIntf::Internal) // write own search index + { + HtmlGenerator::writeSearchPage(); + Doxygen::searchIndex->write(Config_getString("HTML_OUTPUT")+"/search/search.idx"); + } + else // write data for external search index + { + Doxygen::searchIndex->write(Config_getString("OUTPUT_DIRECTORY")+"/searchdata.xml"); + } } if (generateRtf) @@ -10789,7 +10829,7 @@ void generateOutput() cleanUpDoxygen(); - finializeDocParser(); + finializeSearchIndexer(); Doxygen::symbolStorage->close(); QDir thisDir; thisDir.remove(Doxygen::objDBFileName); diff --git a/src/doxygen.css b/src/doxygen.css index b48c40c..ec994dd 100644 --- a/src/doxygen.css +++ b/src/doxygen.css @@ -6,7 +6,7 @@ body, table, div, p, dl { /* @group Heading Levels */ -h1 { +h1.groupheader { font-size: 150%; } @@ -16,7 +16,7 @@ h1 { margin: 10px 2px; } -h2 { +h2.groupheader { border-bottom: 1px solid ##99; color: ##44; font-size: 150%; @@ -27,7 +27,7 @@ h2 { width: 100%; } -h3 { +h3.groupheader { font-size: 100%; } @@ -857,7 +857,10 @@ table.fieldtable { display:block; text-decoration: none; outline: none; + color: ##30; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; } .navpath li.navelem a:hover diff --git a/src/doxygen.h b/src/doxygen.h index 0e436ec..b863e5e 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -42,7 +42,7 @@ class PageSList; class PageSDict; class PageDef; -class SearchIndex; +class SearchIndexIntf; class ParserManager; class ObjCache; class Store; @@ -114,7 +114,7 @@ class Doxygen static QCString htmlFileExtension; static bool parseSourcesNeeded; static QTime runningTime; - static SearchIndex *searchIndex; + static SearchIndexIntf *searchIndex; static QDict<DefinitionIntf> *symbolMap; static bool outputToWizard; static QDict<int> *htmlDirMap; @@ -135,6 +135,7 @@ class Doxygen static QCString spaces; static bool generatingXmlOutput; static bool markdownSupport; + static GenericsSDict genericsDict; }; void initDoxygen(); diff --git a/src/doxygen.md b/src/doxygen.md index 6ca351e..736c6c6 100644 --- a/src/doxygen.md +++ b/src/doxygen.md @@ -100,4 +100,54 @@ Producing output TODO +Topics TODO +----------- +- Grouping of files in Model / Parser / Generator categories +- Index files based on IndexIntf + - HTML navigation + - HTML Help (chm) + - Documentation Sets (XCode) + - Qt Help (qhp) + - Eclipse Help +- Search index + - Javascript based + - Server based + - External +- Citations + - via bibtex +- Various processing steps for a comment block + - comment conversion + - comment scanner + - markdown processor + - doc tokeninzer + - doc parser + - doc visitors +- Diagrams and Images + - builtin + - via Graphviz dot + - via mscgen + - PNG generation +- Output formats: OutputGen, OutputList, and DocVisitor + - Html: HtmlGenerator and HtmlDocVisitor + - Latex: LatexGenerator and LatexDocVisitor + - RTF: RTFGenerator and RTFDocVisitor + - Man: ManGenerator and ManDocVisitor + - XML: generateXML() and XmlDocVisitor + - print: debugging via PrintDocVisitor + - text: TextDocVisitor for tooltips + - perlmod +- i18n via Translator and language.cpp +- Customizing the layout via LayoutDocManager +- Parsers + - C Preprocessing + - const expression evaluation + - C link languages + - Python + - Fortran + - VHDL + - TCL + - Tag files +- Marshaling to/from disk +- Portability functions +- Utility functions diff --git a/src/filedef.cpp b/src/filedef.cpp index 7ae4689..41d564d 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -587,7 +587,7 @@ void FileDef::writeDocumentation(OutputList &ol) if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); + Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); Doxygen::searchIndex->addWord(localName(),TRUE); } diff --git a/src/fortrancode.h b/src/fortrancode.h index 887fe65..fb91804 100644 --- a/src/fortrancode.h +++ b/src/fortrancode.h @@ -26,9 +26,9 @@ class FileDef; class MemberDef; void parseFortranCode(CodeOutputInterface &,const char *,const QCString &, - bool ,const char *,FileDef *fd=0, - int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0,bool showLineNumbers=TRUE); + bool ,const char *,FileDef *fd, + int startLine,int endLine,bool inlineFragment, + MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx); void resetFortranCodeParserState(); void codeFreeScanner(); diff --git a/src/fortrancode.l b/src/fortrancode.l index d7385ff..ed891c0 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -107,6 +107,7 @@ static int g_inputPosition; //!< read offset during parsing static int g_inputLines; //!< number of line in the code fragment static int g_yyLineNr; //!< current line number static bool g_needsTermination; +static Definition *g_searchCtx; static bool g_isFixedForm; static bool g_insideBody; //!< inside subprog/program body? => create links @@ -182,11 +183,18 @@ static void startFontClass(const char *s) g_currentFontClass=s; } -static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") +static void setCurrentDoc(const QCString &anchor) { if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(name,base,anchor); + if (g_searchCtx) + { + Doxygen::searchIndex->setCurrentDoc(g_searchCtx,g_searchCtx->anchor(),FALSE); + } + else + { + Doxygen::searchIndex->setCurrentDoc(g_sourceFileDef,anchor,TRUE); + } } } @@ -226,20 +234,14 @@ static void startCodeLine() g_code->writeLineNumber(g_currentMemberDef->getReference(), g_currentMemberDef->getOutputFileBase(), g_currentMemberDef->anchor(),g_yyLineNr); - setCurrentDoc( - g_currentMemberDef->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } else if (d->isLinkableInProject()) { g_code->writeLineNumber(d->getReference(), d->getOutputFileBase(), 0,g_yyLineNr); - setCurrentDoc( - d->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } } else @@ -1066,7 +1068,7 @@ void resetFortranCodeParserState() {} void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef,bool) + MemberDef *memberDef,bool,Definition *searchCtx) { //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); @@ -1081,6 +1083,7 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri g_isFixedForm = recognizeFixedForm((const char*)s); g_currentFontClass = 0; g_needsTermination = FALSE; + g_searchCtx = searchCtx; if (endLine!=-1) g_inputLines = endLine+1; else @@ -1101,7 +1104,7 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri } if (g_sourceFileDef) { - setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); + setCurrentDoc("l00001"); } g_currentDefinition = 0; g_currentMemberDef = 0; diff --git a/src/fortranscanner.h b/src/fortranscanner.h index 392a75d..d904b87 100644 --- a/src/fortranscanner.h +++ b/src/fortranscanner.h @@ -42,7 +42,8 @@ class FortranLanguageScanner : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/fortranscanner.l b/src/fortranscanner.l index 884d3bf..e214217 100644 --- a/src/fortranscanner.l +++ b/src/fortranscanner.l @@ -2214,12 +2214,13 @@ void FortranLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { ::parseFortranCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, fileDef,startLine,endLine,inlineFragment,memberDef, - showLineNumbers); + showLineNumbers,searchCtx); } bool FortranLanguageScanner::needsPreprocessing(const QCString &extension) diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index dee8c0b..190f3e5 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -887,7 +887,7 @@ static void generateBriefDoc(FTextStream &t,Definition *def) def,0,brief,FALSE,FALSE,0,TRUE,TRUE); QCString relPath = relativePathToRoot(def->getOutputFileBase()); HtmlCodeGenerator htmlGen(t,relPath); - HtmlDocVisitor *visitor = new HtmlDocVisitor(t,htmlGen,0); + HtmlDocVisitor *visitor = new HtmlDocVisitor(t,htmlGen,def,0); root->accept(visitor); delete visitor; delete root; diff --git a/src/groupdef.cpp b/src/groupdef.cpp index c257501..4f688f1 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -938,7 +938,7 @@ void GroupDef::writeDocumentation(OutputList &ol) if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase()); + Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); static QRegExp we("[a-zA-Z_][-a-zA-Z_0-9]*"); int i=0,p=0,l=0; while ((i=we.match(title,p,&l))!=-1) // foreach word in the title diff --git a/src/header.html b/src/header.html index 3d17125..78730af 100644 --- a/src/header.html +++ b/src/header.html @@ -12,6 +12,7 @@ $treeview $search $mathjax <link href="$relpath$$stylesheet" rel="stylesheet" type="text/css" /> +$extrastylesheet </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 4fa613d..9ef5f5b 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -130,10 +130,11 @@ static QString htmlAttribsToString(const HtmlAttribList &attribs) //------------------------------------------------------------------------- HtmlDocVisitor::HtmlDocVisitor(FTextStream &t,CodeOutputInterface &ci, - const char *langExt) + Definition *ctx,MemberDef *md) : DocVisitor(DocVisitor_Html), m_t(t), m_ci(ci), m_insidePre(FALSE), - m_hide(FALSE), m_langExt(langExt) + m_hide(FALSE), m_ctx(ctx), m_md(md) { + if (ctx) m_langExt=ctx->getDefFileExtension(); } //-------------------------------------- @@ -413,8 +414,19 @@ void HtmlDocVisitor::visit(DocVerbatim *s) forceEndParagraph(s); m_t << PREFRAG_START; Doxygen::parserManager->getParser(lang) - ->parseCode(m_ci,s->context(),s->text(), - s->isExample(),s->exampleFile()); + ->parseCode(m_ci, + s->context(), + s->text(), + s->isExample(), + s->exampleFile(), + 0, // fileDef + -1, // startLine + -1, // endLine + FALSE, // inlineFragment + 0, // memberDef + TRUE, // show line numbers + m_ctx // search context + ); m_t << PREFRAG_END; forceStartParagraph(s); break; @@ -514,10 +526,13 @@ void HtmlDocVisitor::visit(DocInclude *inc) inc->text(), inc->isExample(), inc->exampleFile(), - 0, // fd - -1, // startLine - -1, // endLine - TRUE // inlineFragment + 0, // fileDef + -1, // startLine + -1, // endLine + TRUE, // inlineFragment + 0, // memberDef + TRUE, // show line numbers + m_ctx // search context ); m_t << PREFRAG_END; forceStartParagraph(inc); @@ -533,7 +548,15 @@ void HtmlDocVisitor::visit(DocInclude *inc) inc->context(), inc->text(), inc->isExample(), - inc->exampleFile(), &fd); + inc->exampleFile(), + &fd, // fileDef, + -1, // start line + -1, // end line + FALSE, // inline fragment + 0, // memberDef + TRUE, // show line numbers + m_ctx // search context + ); m_t << PREFRAG_END; forceStartParagraph(inc); } @@ -561,9 +584,12 @@ void HtmlDocVisitor::visit(DocInclude *inc) inc->isExample(), inc->exampleFile(), 0, - -1, // startLine - -1, // endLine - TRUE // inlineFragment + -1, // startLine + -1, // endLine + TRUE, // inlineFragment + 0, // memberDef + TRUE, // show line number + m_ctx // search context ); m_t << PREFRAG_END; forceStartParagraph(inc); @@ -588,9 +614,20 @@ void HtmlDocVisitor::visit(DocIncOperator *op) if (!m_hide) { Doxygen::parserManager->getParser(m_langExt) - ->parseCode(m_ci,op->context(), - op->text(),op->isExample(), - op->exampleFile()); + ->parseCode( + m_ci, + op->context(), + op->text(), + op->isExample(), + op->exampleFile(), + 0, // fileDef + -1, // startLine + -1, // endLine + FALSE, // inline fragment + 0, // memberDef + TRUE, // show line numbers + m_ctx // search context + ); } pushEnabled(); m_hide=TRUE; diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h index 9a22a64..dbf5e21 100644 --- a/src/htmldocvisitor.h +++ b/src/htmldocvisitor.h @@ -23,6 +23,8 @@ #include <qstack.h> #include <qcstring.h> +class Definition; +class MemberDef; class DocNode; class FTextStream; class CodeOutputInterface; @@ -31,7 +33,7 @@ class CodeOutputInterface; class HtmlDocVisitor : public DocVisitor { public: - HtmlDocVisitor(FTextStream &t,CodeOutputInterface &ci,const char *langExt); + HtmlDocVisitor(FTextStream &t,CodeOutputInterface &ci,Definition *ctx,MemberDef *md); //-------------------------------------- // visitor functions for leaf nodes @@ -160,6 +162,8 @@ class HtmlDocVisitor : public DocVisitor bool m_insidePre; bool m_hide; QStack<bool> m_enabled; + Definition *m_ctx; + MemberDef *m_md; QCString m_langExt; }; diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 1c5c3a6..f8900cc 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -302,6 +302,7 @@ static unsigned char doxygen_a_png[3224] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +// magnifying glass icon (raw png) unsigned char mag_sel_png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, @@ -556,25 +557,6 @@ static unsigned char close_png[] = { }; static unsigned int close_png_len = 273; -#if 0 -unsigned char open_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, - 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x02, 0x0d, 0x8c, 0x8f, 0xa9, 0xcb, 0xe0, 0xff, 0x02, 0x8c, 0x66, - 0x26, 0x7a, 0x51, 0x01, 0x00, 0x3b -}; -unsigned int open_gif_len = 54; - -unsigned char closed_gif[] = { - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x09, 0x00, 0x09, 0x00, 0xf0, 0x00, - 0x00, 0x8e, 0xaf, 0xc4, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x02, 0x10, 0x8c, 0x03, 0xa7, 0x98, 0xcb, 0xad, 0x80, 0x84, 0x66, - 0xca, 0x38, 0x57, 0xd6, 0xf4, 0xd0, 0x02, 0x00, 0x3b -}; -unsigned int closed_gif_len = 57; -#endif static unsigned char closed_png[81] = { @@ -833,24 +815,26 @@ static void writeImgData(const char *dir,img_data_item *data) static ColoredImgDataItem colored_tab_data[] = { - { "tab_a.png", 1, 36, tab_a_png, 0 }, - { "tab_b.png", 1, 36, tab_b_png, 0 }, - { "tab_h.png", 1, 36, tab_h_png, 0 }, - { "tab_s.png", 1, 36, tab_s_png, 0 }, - { "nav_h.png", 1, 12, header_png, 0 }, + // file_name W H luma_data alpha_data + { "tab_a.png", 1, 36, tab_a_png, 0 }, + { "tab_b.png", 1, 36, tab_b_png, 0 }, + { "tab_h.png", 1, 36, tab_h_png, 0 }, + { "tab_s.png", 1, 36, tab_s_png, 0 }, + { "nav_h.png", 1, 12, header_png, 0 }, { "nav_f.png", 1, 56, func_header_png, 0 }, - { "bc_s.png", 8, 32, bc_s_png, bc_s_a_png }, - { "doxygen.png", 104,31, doxygen_png, doxygen_a_png }, - { "closed.png", 9, 9, closed_png, closed_a_png }, - { "open.png", 9, 9, open_png, open_a_png }, - { "bdwn.png", 7, 8, bdwn_png, bdwn_a_png }, - { "sync_on.png", 24, 24, sync_on_png, sync_a_png }, - { "sync_off.png",24, 24, sync_off_png, sync_a_png }, + { "bc_s.png", 8, 30, bc_s_png, bc_s_a_png }, + { "doxygen.png", 104,31, doxygen_png, doxygen_a_png }, + { "closed.png", 9, 9, closed_png, closed_a_png }, + { "open.png", 9, 9, open_png, open_a_png }, + { "bdwn.png", 7, 8, bdwn_png, bdwn_a_png }, + { "sync_on.png", 24, 24, sync_on_png, sync_a_png }, + { "sync_off.png",24, 24, sync_off_png, sync_a_png }, { 0, 0, 0, 0, 0 } }; static img_data_item search_client_data[] = { + // file_name raw_data num bytes { "mag_sel.png", mag_sel_png, mag_sel_png_len }, { "search_l.png", search_l_png, search_l_png_len }, { "search_m.png", search_m_png, search_m_png_len }, @@ -861,6 +845,7 @@ static img_data_item search_client_data[] = static img_data_item search_server_data[] = { + // file_name raw_data num bytes { "mag.png", mag_png, mag_png_len }, { "search_l.png", search_l_png, search_l_png_len }, { "search_m.png", search_m_png, search_m_png_len }, @@ -1056,11 +1041,13 @@ static QCString substituteHtmlKeywords(const QCString &s, { // Build CSS/Javascript tags depending on treeview, search engine settings QCString cssFile; + QCString extraCssFile; QCString generatedBy; QCString treeViewCssJs; QCString searchCssJs; QCString searchBox; QCString mathJaxJs; + QCString extraCssText; static QCString projectName = Config_getString("PROJECT_NAME"); static bool timeStamp = Config_getBool("HTML_TIMESTAMP"); @@ -1092,6 +1079,11 @@ static QCString substituteHtmlKeywords(const QCString &s, cssFile = "doxygen.css"; } } + extraCssFile = Config_getString("HTML_EXTRA_STYLESHEET"); + if (!extraCssFile.isEmpty()) + { + extraCssText = "<link href=\"$relpath$"+extraCssFile+"\" rel=\"stylesheet\" type=\"text/css\"/>\n"; + } if (timeStamp) { generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), Config_getString("PROJECT_NAME")); @@ -1182,6 +1174,7 @@ static QCString substituteHtmlKeywords(const QCString &s, result = substitute(result,"$search",searchCssJs); result = substitute(result,"$mathjax",mathJaxJs); result = substitute(result,"$generatedby",generatedBy); + result = substitute(result,"$extrastylesheet",extraCssText); result = substitute(result,"$relpath$",relPath); //<-- must be last // additional HTML only conditional blocks @@ -1563,10 +1556,6 @@ void HtmlGenerator::startFile(const char *name,const char *, m_codeGen.setTextStream(t); m_codeGen.setRelativePath(relPath); Doxygen::indexList.addIndexFile(fileName); - //if (Config_getBool("GENERATE_HTMLHELP")) - //{ - // HtmlHelp::getInstance()->addIndexFile(fileName); - //} lastFile = fileName; t << substituteHtmlKeywords(g_header,convertToHtml(title),relPath); @@ -1853,15 +1842,15 @@ void HtmlGenerator::startGroupHeader(int extraIndentLevel) { if (extraIndentLevel==2) { - t << "<h4>"; + t << "<h4 class=\"groupheader\">"; } else if (extraIndentLevel==1) { - t << "<h3>"; + t << "<h3 class=\"groupheader\">"; } else // extraIndentLevel==0 { - t << "<h2>"; + t << "<h2 class=\"groupheader\">"; } } @@ -2212,7 +2201,7 @@ void HtmlGenerator::startMemberHeader(const char *anchor) t << "<table class=\"memberdecls\">" << endl; m_emptySection=FALSE; } - t << "<tr class=\"heading\"><td colspan=\"2\"><h2>"; + t << "<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\">"; //} //else //{ @@ -2609,9 +2598,9 @@ void HtmlGenerator::endParamList() t << "</dl>"; } -void HtmlGenerator::printDoc(DocNode *n,const char *langExt) +void HtmlGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *md) { - HtmlDocVisitor *visitor = new HtmlDocVisitor(t,*this,langExt); + HtmlDocVisitor *visitor = new HtmlDocVisitor(t,m_codeGen,ctx,md); n->accept(visitor); delete visitor; } diff --git a/src/htmlgen.h b/src/htmlgen.h index 9560382..a28aa8b 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -112,7 +112,7 @@ class HtmlGenerator : public OutputGenerator { m_codeGen.linkableSymbol(line,symName,symDef,context); } // --------------------------- - void printDoc(DocNode *,const char *); + void writeDoc(DocNode *,Definition *,MemberDef *); void startFile(const char *name,const char *manName,const char *title); void writeFooter(const char *navPath); diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp index 2569c58..744e86f 100644 --- a/src/htmlhelp.cpp +++ b/src/htmlhelp.cpp @@ -123,6 +123,16 @@ void HtmlHelpIndex::addItem(const char *level1,const char *level2, } } +static QCString field2URL(const IndexField *f,bool checkReversed) +{ + QCString result = f->url + Doxygen::htmlFileExtension; + if (!f->anchor.isEmpty() && (!checkReversed || f->reversed)) + { + result+="#"+f->anchor; + } + return result; +} + /*! Writes the sorted list of index items into a html like list. * * An list of calls with <code>name = level1,level2</code> as follows: @@ -198,8 +208,7 @@ void HtmlHelpIndex::writeFields(FTextStream &t) if (level2.isEmpty()) { t << " <LI><OBJECT type=\"text/sitemap\">"; - t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension; - if (!f->anchor.isEmpty() && f->reversed) t << "#" << f->anchor; + t << "<param name=\"Local\" value=\"" << field2URL(f,TRUE); t << "\">"; t << "<param name=\"Name\" value=\"" << m_help->recode(level1) << "\">" "</OBJECT>\n"; @@ -209,8 +218,7 @@ void HtmlHelpIndex::writeFields(FTextStream &t) if (f->link) { t << " <LI><OBJECT type=\"text/sitemap\">"; - t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension; - if (!f->anchor.isEmpty() && f->reversed) t << "#" << f->anchor; + t << "<param name=\"Local\" value=\"" << field2URL(f,TRUE); t << "\">"; t << "<param name=\"Name\" value=\"" << m_help->recode(level1) << "\">" "</OBJECT>\n"; @@ -237,8 +245,7 @@ void HtmlHelpIndex::writeFields(FTextStream &t) if (level2Started) { t << " <LI><OBJECT type=\"text/sitemap\">"; - t << "<param name=\"Local\" value=\"" << f->url << Doxygen::htmlFileExtension; - if (!f->anchor.isEmpty()) t << "#" << f->anchor; + t << "<param name=\"Local\" value=\"" << field2URL(f,FALSE); t << "\">"; t << "<param name=\"Name\" value=\"" << m_help->recode(level2) << "\">" "</OBJECT>\n"; @@ -655,8 +662,19 @@ void HtmlHelp::addContentsItem(bool isDir, cts << "<param name=\"Name\" value=\"" << recode(name) << "\">"; if (file) // made file optional param - KPW { - cts << "<param name=\"Local\" value=\"" << file << Doxygen::htmlFileExtension; - if (anchor) cts << "#" << anchor; + if (file && (file[0]=='!' || file[0]=='^')) // special markers for user defined URLs + { + cts << "<param name=\""; + if (file[0]=='^') cts << "URL"; else cts << "Local"; + cts << "\" value=\""; + cts << &file[1]; + } + else + { + cts << "<param name=\"Local\" value=\""; + cts << file << Doxygen::htmlFileExtension; + if (anchor) cts << "#" << anchor; + } cts << "\">"; } cts << "<param name=\"ImageNumber\" value=\""; diff --git a/src/index.cpp b/src/index.cpp index 257f5aa..0e5294f 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1946,6 +1946,7 @@ static void writeAlphabeticalClassList(OutputList &ol) if (sep!="::") { nsDispName=substitute(namesp,"::",sep); + cname=substitute(cname,"::",sep); } else { @@ -3433,7 +3434,8 @@ void writeGraphInfo(OutputList &ol) legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e); //printf("legendDocs=%s\n",legendDocs.data()); } - ol.parseDoc("graph_legend",1,0,0,legendDocs,FALSE,FALSE); + FileDef fd("","graph_legend"); + ol.parseDoc("graph_legend",1,&fd,0,legendDocs,FALSE,FALSE); stripCommentsStateRef = oldStripCommentsState; endFile(ol); ol.popGeneratorState(); @@ -4156,7 +4158,7 @@ static void writeIndex(OutputList &ol) ol.parseText(/*projPrefix+*/ (fortranOpt ? theTranslator->trCompoundIndexFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitIndex() : - theTranslator->trCompoundIndex() + theTranslator->trHierarchicalIndex() )); ol.endIndexSection(isClassHierarchyIndex); } diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 3fce01c..a0188c8 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -946,6 +946,7 @@ static void writeDefaultStyleSheetPart3(FTextStream &t) static void writeDefaultFooter(FTextStream &t) { Doxygen::citeDict->writeLatexBibliography(t); + t << "\\addcontentsline{toc}{part}{" << theTranslator->trRTFGeneralIndex() << "}\n"; t << "\\printindex\n"; t << "\\end{document}\n"; } @@ -2372,9 +2373,10 @@ void LatexGenerator::endParameterName(bool last,bool /* emptyList */,bool closeB } -void LatexGenerator::printDoc(DocNode *n,const char *langExt) +void LatexGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *) { - LatexDocVisitor *visitor = new LatexDocVisitor(t,*this,langExt,insideTabbing); + LatexDocVisitor *visitor = + new LatexDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString(""),insideTabbing); n->accept(visitor); delete visitor; } diff --git a/src/latexgen.h b/src/latexgen.h index 6a92867..f2cc193 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -45,7 +45,7 @@ class LatexGenerator : public OutputGenerator bool isEnabled(OutputType o) { return (o==Latex && active); } OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; } - void printDoc(DocNode *,const char *); + void writeDoc(DocNode *,Definition *ctx,MemberDef *); void startFile(const char *name,const char *manName,const char *title); void writeSearchInfo() {} diff --git a/src/layout.cpp b/src/layout.cpp index 2045609..fa4ab42 100644 --- a/src/layout.cpp +++ b/src/layout.cpp @@ -862,7 +862,7 @@ class LayoutParser : public QXmlDefaultHandler m_scope=""; if (m_rootNav && !m_rootNav->find(LayoutNavEntry::MainPage)) { - // no MainPage node... add one the first item of the root node... + // no MainPage node... add one as the first item of the root node... new LayoutNavEntry(m_rootNav,LayoutNavEntry::MainPage, TRUE, /*Config_getBool("GENERATE_TREEVIEW") ? "main" :*/ "index", theTranslator->trMainPage(),TRUE); diff --git a/src/mangen.cpp b/src/mangen.cpp index 2179ee5..e20b5f7 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -659,9 +659,9 @@ void ManGenerator::endParamList() { } -void ManGenerator::printDoc(DocNode *n,const char *langExt) +void ManGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *) { - ManDocVisitor *visitor = new ManDocVisitor(t,*this,langExt); + ManDocVisitor *visitor = new ManDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString("")); n->accept(visitor); delete visitor; firstCol=FALSE; diff --git a/src/mangen.h b/src/mangen.h index b997c63..e2d0965 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -41,7 +41,7 @@ class ManGenerator : public OutputGenerator bool isEnabled(OutputType o) { return (o==Man && active); } OutputGenerator *get(OutputType o) { return (o==Man) ? this : 0; } - void printDoc(DocNode *,const char *); + void writeDoc(DocNode *,Definition *,MemberDef *); static void init(); void startFile(const char *name,const char *manName,const char *title); diff --git a/src/markdown.cpp b/src/markdown.cpp index d69e05c..0c7c2f8 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -93,7 +93,7 @@ static QCString g_fileName; // as a title of the page, in effect making it a level0 header, so the // level of all other sections needs to be corrected as well. // This flag is TRUE if corrections are needed. -static bool g_correctSectionLevel; +//static bool g_correctSectionLevel; //---------- @@ -1618,8 +1618,8 @@ void writeOneLineHeaderOrRuler(GrowBuf &out,const char *data,int size) } else if ((level=isAtxHeader(data,size,header,id))) { - if (level==1) g_correctSectionLevel=FALSE; - if (g_correctSectionLevel) level--; + //if (level==1) g_correctSectionLevel=FALSE; + //if (g_correctSectionLevel) level--; QCString hTag; if (level<5 && !id.isEmpty()) { @@ -1737,7 +1737,8 @@ static int writeCodeBlock(GrowBuf &out,const char *data,int size,int refIndent) int j=i; int indent=0; while (j<end && data[j]==' ') j++,indent++; - //printf("j=%d end=%d indent=%d refIndent=%d data={%s}\n",j,end,indent,refIndent,QCString(data+i).left(end-i-1).data()); + //printf("j=%d end=%d indent=%d refIndent=%d tabSize=%d data={%s}\n", + // j,end,indent,refIndent,Config_getInt("TAB_SIZE"),QCString(data+i).left(end-i-1).data()); if (j==end-1) // empty line { emptyLines++; @@ -1953,8 +1954,8 @@ static QCString processBlocks(const QCString &s,int indent) //printf("isHeaderLine(%s)=%d\n",QCString(data+i).left(size-i).data(),level); if ((level=isHeaderline(data+i,size-i))>0) { - if (level==1) g_correctSectionLevel=FALSE; - if (g_correctSectionLevel) level--; + //if (level==1) g_correctSectionLevel=FALSE; + //if (g_correctSectionLevel) level--; //printf("Found header at %d-%d\n",i,end); while (pi<size && data[pi]==' ') pi++; QCString header,id; @@ -2116,6 +2117,7 @@ static QCString detab(const QCString &s,int &refIndent) case '\t': // expand tab { int stop = tabSize - (col%tabSize); + //printf("expand at %d stop=%d\n",col,stop); col+=stop; while (stop--) out.addChar(' '); } @@ -2170,6 +2172,7 @@ QCString processMarkdown(const QCString &fileName,Entry *e,const QCString &input int refIndent; // for replace tabs by spaces QCString s = detab(input,refIndent); + //printf("======== DeTab =========\n---- output -----\n%s\n---------\n",s.data()); // then process quotation blocks (as these may contain other blocks) s = processQuotations(s,refIndent); //printf("======== Quotations =========\n---- output -----\n%s\n---------\n",s.data()); @@ -2203,7 +2206,7 @@ void MarkdownFileParser::parseInput(const char *fileName, QCString docs = output.data(); QCString id; QCString title=extractPageTitle(docs,id).stripWhiteSpace(); - g_correctSectionLevel = !title.isEmpty(); + //g_correctSectionLevel = !title.isEmpty(); QCString baseName = substitute(QFileInfo(fileName).baseName().utf8()," ","_"); if (id.isEmpty()) id = "md_"+baseName; if (title.isEmpty()) title = baseName; @@ -2255,7 +2258,7 @@ void MarkdownFileParser::parseInput(const char *fileName, // restore setting Doxygen::markdownSupport = markdownEnabled; - g_correctSectionLevel = FALSE; + //g_correctSectionLevel = FALSE; } void MarkdownFileParser::parseCode(CodeOutputInterface &codeOutIntf, @@ -2268,7 +2271,8 @@ void MarkdownFileParser::parseCode(CodeOutputInterface &codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { ParserInterface *pIntf = Doxygen::parserManager->getParser("*.cpp"); @@ -2276,7 +2280,7 @@ void MarkdownFileParser::parseCode(CodeOutputInterface &codeOutIntf, { pIntf->parseCode( codeOutIntf,scopeName,input,isExampleBlock,exampleName, - fileDef,startLine,endLine,inlineFragment,memberDef,showLineNumbers); + fileDef,startLine,endLine,inlineFragment,memberDef,showLineNumbers,searchCtx); } } diff --git a/src/markdown.h b/src/markdown.h index bff1100..f41de5e 100644 --- a/src/markdown.h +++ b/src/markdown.h @@ -42,7 +42,8 @@ class MarkdownFileParser : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 75486a0..f9cae59 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1400,7 +1400,7 @@ void MemberDef::writeDeclaration(OutputList &ol, // write search index info if (Doxygen::searchIndex && isLinkableInProject()) { - Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor()); + Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); Doxygen::searchIndex->addWord(localName(),TRUE); Doxygen::searchIndex->addWord(qualifiedName(),FALSE); } @@ -1459,7 +1459,7 @@ void MemberDef::writeDeclaration(OutputList &ol, } // *** write template lists - if (m_impl->tArgList) + if (m_impl->tArgList && getLanguage()==SrcLangExt_Cpp) { if (!isAnonymous) ol.startMemberTemplateParams(); writeTemplatePrefix(ol,m_impl->tArgList); @@ -2466,7 +2466,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (!Config_getBool("HIDE_SCOPE_NAMES")) { bool first=TRUE; - if (m_impl->defTmpArgLists) + SrcLangExt lang = getLanguage(); + if (m_impl->defTmpArgLists && lang==SrcLangExt_Cpp) // definition has explicit template parameter declarations { QListIterator<ArgumentList> ali(*m_impl->defTmpArgLists); @@ -2485,7 +2486,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, else // definition gets it template parameters from its class // (since no definition was found) { - if (cd && !isTemplateSpecialization()) + if (cd && lang==SrcLangExt_Cpp && !isTemplateSpecialization()) { QList<ArgumentList> tempParamLists; cd->getTemplateParameterLists(tempParamLists); @@ -2503,7 +2504,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, } } } - if (m_impl->tArgList) // function template prefix + if (m_impl->tArgList && lang==SrcLangExt_Cpp) // function template prefix { ol.startMemberDocPrefixItem(); writeTemplatePrefix(ol,m_impl->tArgList); @@ -2668,7 +2669,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, pIntf->resetCodeParserState(); ol.startCodeFragment(); pIntf->parseCode(ol,scopeName,m_impl->initializer,FALSE,0,getFileDef(), - -1,-1,TRUE,this,FALSE); + -1,-1,TRUE,this,FALSE,this); ol.endCodeFragment(); } diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 36876db..2512502 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -458,7 +458,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); + Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); Doxygen::searchIndex->addWord(localName(),TRUE); } diff --git a/src/outputgen.h b/src/outputgen.h index 3bff797..e9e1d25 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -97,8 +97,6 @@ class BaseOutputDocInterface : public CodeOutputInterface Examples }; - //virtual void parseDoc(const char *,int, const char *,MemberDef *, - // const QCString &,bool) {} virtual void parseText(const QCString &) {} /*! Start of a bullet list: e.g. \c \<ul\> in html. startItemListItem() is @@ -294,7 +292,7 @@ class OutputGenerator : public BaseOutputDocInterface //void setEncoding(const QCString &enc) { encoding = enc; } //virtual void postProcess(QByteArray &) { } - virtual void printDoc(DocNode *,const char *langExt) = 0; + virtual void writeDoc(DocNode *,Definition *ctx,MemberDef *md) = 0; /////////////////////////////////////////////////////////////// // structural output interface diff --git a/src/outputlist.cpp b/src/outputlist.cpp index d184b58..01b1a51 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -166,7 +166,7 @@ void OutputList::parseDoc(const char *fileName,int startLine, { //printf("og->printDoc(extension=%s)\n", // ctx?ctx->getDefFileExtension().data():"<null>"); - if (og->isEnabled()) og->printDoc(root,ctx?ctx->getDefFileExtension():QCString("")); + if (og->isEnabled()) og->writeDoc(root,ctx,md); og=outputs->next(); } @@ -189,7 +189,7 @@ void OutputList::parseText(const QCString &textStr) og=outputs->first(); while (og) { - if (og->isEnabled()) og->printDoc(root,0); + if (og->isEnabled()) og->writeDoc(root,0,0); og=outputs->next(); } diff --git a/src/pagedef.h b/src/pagedef.h index b157731..170326d 100644 --- a/src/pagedef.h +++ b/src/pagedef.h @@ -15,6 +15,9 @@ * */ +#ifndef PAGEDEF_H +#define PAGEDEF_H + #include "definition.h" #include "sortdict.h" @@ -85,3 +88,5 @@ class PageSDict : public SDict<PageDef> } }; +#endif + diff --git a/src/parserintf.h b/src/parserintf.h index db22088..7211274 100644 --- a/src/parserintf.h +++ b/src/parserintf.h @@ -24,6 +24,7 @@ class Entry; class FileDef; class CodeOutputInterface; class MemberDef; +class Definition; /** \brief Abstract interface for programming language parsers. * @@ -70,6 +71,7 @@ class ParserInterface * for a member). * @param[in] showLineNumbers if set to TRUE and also fileDef is not 0, * line numbers will be added to the source fragement + * @param[in] searchCtx context under which search data has to be stored. */ virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, @@ -81,7 +83,8 @@ class ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ) = 0; /** Resets the state of the code parser. diff --git a/src/pycode.h b/src/pycode.h index 895c88e..642da46 100644 --- a/src/pycode.h +++ b/src/pycode.h @@ -31,11 +31,12 @@ class CodeOutputInterface; class FileDef; class MemberDef; +class Definition; extern void parsePythonCode(CodeOutputInterface &,const char *,const QCString &, - bool ,const char *,FileDef *fd=0, - int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0,bool showLineNumbers=TRUE); + bool ,const char *,FileDef *fd, + int startLine,int endLine,bool inlineFragment, + MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx); extern void resetPythonCodeParserState(); #endif diff --git a/src/pycode.l b/src/pycode.l index 255e2f4..035aa96 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -51,6 +51,7 @@ static const char * g_inputString; //!< the code fragment as text static int g_inputPosition; //!< read offset during parsing static const char * g_currentFontClass; static bool g_needsTermination; +static Definition *g_searchCtx; static int g_inputLines; //!< number of line in the code fragment static int g_yyLineNr; //!< current line number static FileDef * g_sourceFileDef; @@ -280,11 +281,18 @@ static int countLines() return count; } -static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") +static void setCurrentDoc(const QCString &anchor) { if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(name,base,anchor); + if (g_searchCtx) + { + Doxygen::searchIndex->setCurrentDoc(g_searchCtx,g_searchCtx->anchor(),FALSE); + } + else + { + Doxygen::searchIndex->setCurrentDoc(g_sourceFileDef,anchor,TRUE); + } } } @@ -360,20 +368,14 @@ static void startCodeLine() g_code->writeLineNumber(g_currentMemberDef->getReference(), g_currentMemberDef->getOutputFileBase(), g_currentMemberDef->anchor(),g_yyLineNr); - setCurrentDoc( - g_currentMemberDef->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } else { g_code->writeLineNumber(d->getReference(), d->getOutputFileBase(), 0,g_yyLineNr); - setCurrentDoc( - d->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } } else @@ -1430,7 +1432,7 @@ static void adjustScopesAndSuites(unsigned indentLength) void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, const QCString &s,bool exBlock, const char *exName, FileDef *fd,int startLine,int endLine,bool /*inlineFragment*/, - MemberDef *,bool) + MemberDef *,bool,Definition *searchCtx) { //printf("***parseCode()\n"); @@ -1442,6 +1444,7 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, g_inputPosition = 0; g_currentFontClass = 0; g_needsTermination = FALSE; + g_searchCtx=searchCtx; if (endLine!=-1) g_inputLines = endLine+1; else @@ -1456,6 +1459,17 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, g_exampleName = exName; g_sourceFileDef = fd; + bool cleanupSourceDef = FALSE; + if (fd==0) + { + // create a dummy filedef for the example + g_sourceFileDef = new FileDef("",(exName?exName:"generated")); + cleanupSourceDef = TRUE; + } + if (g_sourceFileDef) + { + setCurrentDoc("l00001"); + } // Starts line 1 on the output startCodeLine(); @@ -1473,6 +1487,12 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, { endCodeLine(); } + if (cleanupSourceDef) + { + // delete the temporary file definition used for this example + delete g_sourceFileDef; + g_sourceFileDef=0; + } return; } diff --git a/src/pyscanner.h b/src/pyscanner.h index 3bb4b21..ad7cfaa 100644 --- a/src/pyscanner.h +++ b/src/pyscanner.h @@ -49,7 +49,8 @@ class PythonLanguageScanner : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/pyscanner.l b/src/pyscanner.l index 8c6c8ed..b0486e4 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -1698,12 +1698,13 @@ void PythonLanguageScanner::parseCode(CodeOutputInterface &codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { ::parsePythonCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, fileDef,startLine,endLine,inlineFragment,memberDef, - showLineNumbers); + showLineNumbers,searchCtx); } void PythonLanguageScanner::parsePrototype(const char *text) diff --git a/src/qhp.cpp b/src/qhp.cpp index 0d55227..00e870b 100644 --- a/src/qhp.cpp +++ b/src/qhp.cpp @@ -20,6 +20,7 @@ #include "config.h" #include "memberdef.h" #include "groupdef.h" +#include "doxygen.h" #include "filedef.h" #include <qstringlist.h> @@ -27,8 +28,19 @@ static QCString makeFileName(const char * withoutExtension) { - if (!withoutExtension) return QCString(); - return QCString(withoutExtension)+".html"; + QCString result=withoutExtension; + if (!result.isEmpty()) + { + if (result.at(0)=='!') // relative URL -> strip marker + { + result=result.mid(1); + } + else // add specified HTML extension + { + result+=Doxygen::htmlFileExtension; + } + } + return result; } static QCString makeRef(const char * withoutExtension, const char * anchor) @@ -114,10 +126,11 @@ void Qhp::initialize() QCString fullProjectname = getFullProjectName(); const char * const attributes[] = { "title", fullProjectname, - "ref", "index.html", + "ref", QCString("index")+Doxygen::htmlFileExtension, NULL }; m_toc.open("section", attributes); + m_prevSectionTitle = getFullProjectName(); m_prevSectionLevel = 1; m_sectionLevel = 1; @@ -181,10 +194,14 @@ void Qhp::addContentsItem(bool /*isDir*/, const char * name, { //printf("Qhp::addContentsItem(%s) %d\n",name,m_sectionLevel); // Backup difference before modification + + QCString f = file; + if (!f.isEmpty() && f.at(0)=='^') return; // absolute URL not supported + int diff = m_prevSectionLevel - m_sectionLevel; handlePrevSection(); - setPrevSection(name, file, m_sectionLevel); + setPrevSection(name, f, m_sectionLevel); // Close sections as needed for (; diff > 0; diff--) @@ -289,7 +306,7 @@ void Qhp::handlePrevSection() } // We skip "Main Page" as our extra root is pointing to that - if (!((m_prevSectionLevel==1) && (m_prevSectionTitle=="Main Page"))) + if (!((m_prevSectionLevel==1) && (m_prevSectionTitle==getFullProjectName()))) { QCString finalRef = makeFileName(m_prevSectionRef); diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp index 3000151..7f92c0c 100644 --- a/src/rtfdocvisitor.cpp +++ b/src/rtfdocvisitor.cpp @@ -1683,7 +1683,7 @@ void RTFDocVisitor::filter(const char *str,bool verbatim) { const unsigned char *p=(const unsigned char *)str; unsigned char c; - unsigned char pc='\0'; + //unsigned char pc='\0'; while (*p) { //static bool MultiByte = FALSE; @@ -1718,7 +1718,7 @@ void RTFDocVisitor::filter(const char *str,bool verbatim) break; default: m_t << (char)c; } - pc = c; + //pc = c; } } } diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 579f933..ad99480 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -2708,9 +2708,9 @@ void RTFGenerator::endParameterType() t << " "; } -void RTFGenerator::printDoc(DocNode *n,const char *langExt) +void RTFGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *) { - RTFDocVisitor *visitor = new RTFDocVisitor(t,*this,langExt); + RTFDocVisitor *visitor = new RTFDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString("")); n->accept(visitor); delete visitor; m_omitParagraph = TRUE; diff --git a/src/rtfgen.h b/src/rtfgen.h index 3ec4929..52aa160 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -41,7 +41,7 @@ class RTFGenerator : public OutputGenerator bool isEnabled(OutputType o) { return (o==RTF && active); } OutputGenerator *get(OutputType o) { return (o==RTF) ? this : 0; } - void printDoc(DocNode *,const char *); + void writeDoc(DocNode *,Definition *,MemberDef *); void startFile(const char *name,const char *manName,const char *title); void writeSearchInfo() {} diff --git a/src/scanner.h b/src/scanner.h index 70dad99..7e3b2a3 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -44,7 +44,8 @@ class CLanguageScanner : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/scanner.l b/src/scanner.l index c494902..e46c89d 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -4883,7 +4883,7 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" } else if (insideCS) // C# generic class { - current->name+="-g"; + //current->name+="-g"; BEGIN( CSGeneric ); } else // C++ template specialization @@ -4904,10 +4904,10 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" current->tArgLists->append(al); currentArgumentList = al; templateStr="<"; - //current->name += "<"; + current->name += "<"; fullArgString = templateStr; - //copyArgString = ¤t->name; - copyArgString = &templateStr; + copyArgString = ¤t->name; + //copyArgString = &templateStr; currentArgumentContext = ClassVar; BEGIN( ReadTempArgs ); } @@ -6421,12 +6421,13 @@ void CLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { ::parseCCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, fileDef,startLine,endLine,inlineFragment,memberDef, - showLineNumbers); + showLineNumbers,searchCtx); } bool CLanguageScanner::needsPreprocessing(const QCString &extension) diff --git a/src/searchindex.cpp b/src/searchindex.cpp index dfad6b1..cd030db 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -15,13 +15,21 @@ * */ +#include <ctype.h> +#include <assert.h> + +#include <qfile.h> +#include <qregexp.h> + #include "qtbc.h" #include "searchindex.h" #include "config.h" #include "util.h" -#include <qfile.h> -#include <ctype.h> -#include <qregexp.h> +#include "doxygen.h" +#include "language.h" +#include "pagedef.h" +#include "growbuf.h" +#include "message.h" // file format: (all multi-byte values are stored in big endian format) @@ -61,7 +69,8 @@ void IndexWord::addUrlIndex(int idx,bool hiPriority) //-------------------------------------------------------------------- -SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlIndex(-1) +SearchIndex::SearchIndex() : SearchIndexIntf(Internal), + m_words(328829), m_index(numIndexEntries), m_urlIndex(-1) { int i; m_words.setAutoDelete(TRUE); @@ -70,13 +79,86 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd for (i=0;i<numIndexEntries;i++) m_index.insert(i,new QList<IndexWord>); } -void SearchIndex::setCurrentDoc(const char *name,const char *baseName,const char *anchor) +void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile) { - if (name==0 || baseName==0) return; + if (ctx==0) return; + assert(!isSourceFile || ctx->definitionType()==Definition::TypeFile); //printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor); - QCString url=baseName+Config_getString("HTML_FILE_EXTENSION"); - if (anchor) url+=(QCString)"#"+anchor; + QCString url=isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase(); + url+=Config_getString("HTML_FILE_EXTENSION"); + if (anchor) url+=QCString("#")+anchor; m_urlIndex++; + QCString name=ctx->qualifiedName(); + if (ctx->definitionType()==Definition::TypeMember) + { + MemberDef *md = (MemberDef *)ctx; + name.prepend((md->getLanguage()==SrcLangExt_Fortran ? + theTranslator->trSubprogram(TRUE,TRUE) : + theTranslator->trMember(TRUE,TRUE))+" "); + } + else // compound type + { + SrcLangExt lang = ctx->getLanguage(); + QCString sep = getLanguageSpecificSeparator(lang); + if (sep!="::") + { + name = substitute(name,"::",sep); + } + switch (ctx->definitionType()) + { + case Definition::TypePage: + { + PageDef *pd = (PageDef *)ctx; + if (!pd->title().isEmpty()) + { + name = theTranslator->trPage(TRUE,TRUE)+" "+pd->title(); + } + else + { + name = theTranslator->trPage(TRUE,TRUE)+" "+pd->name(); + } + } + break; + case Definition::TypeClass: + { + ClassDef *cd = (ClassDef *)ctx; + name.prepend(cd->compoundTypeString()+" "); + } + break; + case Definition::TypeNamespace: + { + if (lang==SrcLangExt_Java || lang==SrcLangExt_CSharp) + { + name = theTranslator->trPackage(name); + } + else if (lang==SrcLangExt_Fortran) + { + name.prepend(theTranslator->trModule(TRUE,TRUE)+" "); + } + else + { + name.prepend(theTranslator->trNamespace(TRUE,TRUE)+" "); + } + } + break; + case Definition::TypeGroup: + { + GroupDef *gd = (GroupDef *)ctx; + if (gd->groupTitle()) + { + name = theTranslator->trGroup(TRUE,TRUE)+" "+gd->groupTitle(); + } + else + { + name.prepend(theTranslator->trGroup(TRUE,TRUE)+" "); + } + } + break; + default: + break; + } + } + m_urls.insert(m_urlIndex,new URL(name,url)); } @@ -139,6 +221,10 @@ void SearchIndex::addWord(const char *word,bool hiPriority,bool recurse) } } +void SearchIndex::addWord(const char *word,bool hiPriority) +{ + addWord(word,hiPriority,FALSE); +} static void writeInt(QFile &f,int index) { @@ -304,6 +390,193 @@ void SearchIndex::write(const char *fileName) delete[] wordStatOffsets; } + +//--------------------------------------------------------------------------- +// the following part is for writing an external search index + +struct SearchDocEntry +{ + QCString type; + QCString name; + QCString tag; + QCString url; + GrowBuf importantText; + GrowBuf normalText; +}; + +struct SearchIndexExternal::Private +{ + Private() : docEntries(257) {} + //QFile f; + //bool openOk; + //FTextStream t; + //bool insideDoc; + SDict<SearchDocEntry> docEntries; + SearchDocEntry *current; +}; + +SearchIndexExternal::SearchIndexExternal() : SearchIndexIntf(External) +{ + p = new SearchIndexExternal::Private; + p->docEntries.setAutoDelete(TRUE); + p->current=0; + //p->f.setName(fileName); + //p->openOk = p->f.open(IO_WriteOnly); + //if (p->openOk) + //{ + // p->t.setDevice(&p->f); + // p->t << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; + // p->t << "<add>" << endl; + // p->insideDoc=FALSE; + //} +} + +SearchIndexExternal::~SearchIndexExternal() +{ + //if (p->openOk) + //{ + // if (p->insideDoc) + // { + // p->t << " </doc>" << endl; + // } + // p->t << "</add>" << endl; + // p->f.close(); + // p->openOk=FALSE; + //} + delete p; +} + +static QCString definitionToName(Definition *ctx) +{ + if (ctx->definitionType()==Definition::TypeMember) + { + MemberDef *md = (MemberDef*)ctx; + if (md->isFunction()) + return "function"; + else if (md->isSlot()) + return "slot"; + else if (md->isSignal()) + return "signal"; + else if (md->isVariable()) + return "variable"; + else if (md->isTypedef()) + return "typedef"; + else if (md->isEnumerate()) + return "enum"; + else if (md->isEnumValue()) + return "enumvalue"; + else if (md->isProperty()) + return "property"; + else if (md->isEvent()) + return "event"; + else if (md->isRelated() || md->isForeign()) + return "related"; + else if (md->isFriend()) + return "friend"; + else if (md->isDefine()) + return "define"; + } + else if (ctx) + { + switch(ctx->definitionType()) + { + case Definition::TypeClass: + return ((ClassDef*)ctx)->compoundTypeString(); + case Definition::TypeFile: + return "file"; + case Definition::TypeNamespace: + return "namespace"; + case Definition::TypeGroup: + return "group"; + case Definition::TypePackage: + return "package"; + case Definition::TypePage: + return "page"; + case Definition::TypeDir: + return "dir"; + default: + break; + } + } + return "unknown"; +} + +void SearchIndexExternal::setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile) +{ + //if (p->openOk) + //{ + SearchDocEntry *e = new SearchDocEntry; + e->type = definitionToName(ctx); + e->name = ctx->qualifiedName(); + e->tag = stripPath(Config_getString("GENERATE_TAGFILE")); + QCString baseName = isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase(); + e->url = baseName + Doxygen::htmlFileExtension; + if (anchor) e->url+=QCString("#")+anchor; + p->current = e; + p->docEntries.append(e->url,e); + //if (p->insideDoc) + //{ + // p->t << " </doc>" << endl; + //} + //p->t << " <doc>" << endl; + //QCString baseName = isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase(); + //p->t << " <field name=\"type\">" << definitionToName(ctx) << "</field>" << endl; + //p->t << " <field name=\"name\">" << convertToXML(ctx->qualifiedName()) << "</field>" << endl; + //p->t << " <field name=\"tag\">" << convertToXML(stripPath(Config_getString("GENERATE_TAGFILE"))) << "</field>" << endl; + //p->t << " <field name=\"url\">" << baseName << Doxygen::htmlFileExtension; + //if (anchor) p->t << "#" << anchor; + //p->t << "</field>" << endl; + //p->insideDoc=TRUE; + //} +} + +void SearchIndexExternal::addWord(const char *word,bool hiPriority) +{ + if (word==0 || !isId(*word) || p->current==0) return; + GrowBuf *pText = hiPriority ? &p->current->importantText : &p->current->normalText; + if (pText->getPos()>0) pText->addChar(' '); + pText->addStr(word); + //if (p->openOk) + //{ + // p->t << " <field name=\"text"; + // if (hiPriority) p->t << "\" boost=\"yes"; + // p->t << "\">"; + // p->t << convertToXML(word); + // p->t << "</field>" << endl; + //} +} + +void SearchIndexExternal::write(const char *fileName) +{ + QFile f(fileName); + if (f.open(IO_WriteOnly)) + { + FTextStream t(&f); + t << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; + t << "<add>" << endl; + SDict<SearchDocEntry>::Iterator it(p->docEntries); + SearchDocEntry *doc; + for (it.toFirst();(doc=it.current());++it) + { + doc->normalText.addChar(0); // make sure buffer ends with a 0 terminator + doc->importantText.addChar(0); // make sure buffer ends with a 0 terminator + t << " <doc>" << endl; + t << " <field name=\"type\">" << doc->type << "</field>" << endl; + t << " <field name=\"name\">" << convertToXML(doc->name) << "</field>" << endl; + t << " <field name=\"tag\">" << convertToXML(doc->tag) << "</field>" << endl; + t << " <field name=\"url\">" << doc->url << "</field>" << endl; + t << " <field name=\"keywords\">" << convertToXML(doc->importantText.get()) << "</field>" << endl; + t << " <field name=\"text\">" << convertToXML(doc->normalText.get()) << "</field>" << endl; + t << " </doc>" << endl; + } + t << "</add>" << endl; + } + else + { + err("Failed to open file %s for writing!\n",fileName); + } +} + //--------------------------------------------------------------------------- // the following part is for the javascript based search engine @@ -322,7 +595,6 @@ static const char search_script[]= #define MEMBER_INDEX_ENTRIES 256 -#define NUM_SEARCH_INDICES 15 #define SEARCH_INDEX_ALL 0 #define SEARCH_INDEX_CLASSES 1 #define SEARCH_INDEX_NAMESPACES 2 @@ -338,6 +610,7 @@ static const char search_script[]= #define SEARCH_INDEX_DEFINES 12 #define SEARCH_INDEX_GROUPS 13 #define SEARCH_INDEX_PAGES 14 +#define NUM_SEARCH_INDICES 15 class SearchIndexList : public SDict< QList<Definition> > { @@ -1079,5 +1352,26 @@ void writeSearchCategories(FTextStream &t) } } +//--------------------------------------------------------------------------------------------- + +void initSearchIndexer() +{ + static bool searchEngine = Config_getBool("SEARCHENGINE"); + static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); + if (searchEngine && serverBasedSearch) + { + //Doxygen::searchIndex = new SearchIndexExternal; + Doxygen::searchIndex = new SearchIndex; + } + else // no search engine or pure javascript based search function + { + Doxygen::searchIndex = 0; + } +} + +void finializeSearchIndexer() +{ + delete Doxygen::searchIndex; +} diff --git a/src/searchindex.h b/src/searchindex.h index 024e70a..c643315 100644 --- a/src/searchindex.h +++ b/src/searchindex.h @@ -26,6 +26,13 @@ #include <qvector.h> class FTextStream; +class Definition; +class MemberDef; + +/*! Initialize the search indexer */ +void initSearchIndexer(); +/*! Cleanup the search indexer */ +void finializeSearchIndexer(); //------- server side search index ---------------------- @@ -57,20 +64,49 @@ class IndexWord QIntDict<URLInfo> m_urls; }; -class SearchIndex +class SearchIndexIntf +{ + public: + enum Kind { Internal, External }; + SearchIndexIntf(Kind k) : m_kind(k) {} + virtual ~SearchIndexIntf() {} + virtual void setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile) = 0; + virtual void addWord(const char *word,bool hiPriority) = 0; + virtual void write(const char *file) = 0; + Kind kind() const { return m_kind; } + private: + Kind m_kind; +}; + +class SearchIndex : public SearchIndexIntf { public: SearchIndex(); - void setCurrentDoc(const char *name,const char *baseName,const char *anchor=0); - void addWord(const char *word,bool hiPriority,bool recurse=FALSE); + void setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile); + void addWord(const char *word,bool hiPriority); void write(const char *file); private: + void addWord(const char *word,bool hiPrio,bool recurse); QDict<IndexWord> m_words; QVector< QList<IndexWord> > m_index; QIntDict<URL> m_urls; int m_urlIndex; }; + +class SearchIndexExternal : public SearchIndexIntf +{ + struct Private; + public: + SearchIndexExternal(); + ~SearchIndexExternal(); + void setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile); + void addWord(const char *word,bool hiPriority); + void write(const char *file); + private: + Private *p; +}; + //------- client side search index ---------------------- void writeJavascriptSearchIndex(); diff --git a/src/tclscanner.h b/src/tclscanner.h index 8f9d280..24bf40b 100644 --- a/src/tclscanner.h +++ b/src/tclscanner.h @@ -43,7 +43,8 @@ class TclLanguageScanner : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/tclscanner.l b/src/tclscanner.l index 7db791a..5a1ec1d 100644 --- a/src/tclscanner.l +++ b/src/tclscanner.l @@ -1790,7 +1790,8 @@ static void tcl_command_PROC() { D QCString myNs, myName; - Entry *myEntryNs, *myEntry; + Entry *myEntryNs; + Entry *myEntry; tcl_scan *myScan = tcl.scan.at(0); tcl_codify_cmd("keyword",0); @@ -2010,7 +2011,8 @@ static void tcl_command_OO_CLASS() { D QCString myNs, myName, myStr; - Entry *myEntryNs, *myEntryCl; + //Entry *myEntryNs; + Entry *myEntryCl; tcl_scan *myScan = tcl.scan.at(0); tcl_codify_cmd("keyword",0); @@ -2030,7 +2032,7 @@ D tcl.entry_current->bodyLine = tcl.line_body0; tcl.entry_current->endBodyLine = tcl.line_body1; tcl.entry_main->addSubEntry(tcl.entry_current); - myEntryNs = tcl_entry_namespace(myName); + //myEntryNs = tcl_entry_namespace(myName); tcl.cl.insert(myName,tcl.entry_current); myEntryCl = tcl.entry_current; myScan = tcl_scan_start(tcl.word_is,*tcl.list_commandwords.at(6), @@ -2559,7 +2561,8 @@ void TclLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { (void)scopeName; @@ -2567,6 +2570,7 @@ void TclLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, (void)fileDef; (void)endLine; (void)inlineFragment; + (void)searchCtx; if (input.length()<1) return; tcl.input_string = input; diff --git a/src/translator_cz.h b/src/translator_cz.h index ecff92d..c317cae 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -20,6 +20,7 @@ // Updates: // -------- +// 2012/07/31 - Updates for "new since 1.8.2". // 2012/04/10 - Updates for "new since 1.8.0". // 2011/07/28 - Updates for "new since 1.7.5". // 2010/06/01 - typo @@ -83,7 +84,7 @@ // something else. It is difficult to find the general translation // for all kinds in the Czech language. -class TranslatorCzech : public TranslatorAdapter_1_8_2 +class TranslatorCzech : public Translator { public: // --- Language control methods ------------------- @@ -1964,6 +1965,70 @@ class TranslatorCzech : public TranslatorAdapter_1_8_2 { return "Další zděděné členy"; } ////////////////////////////////////////////////////////////////////////// +// new since 1.8.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a tooltip for the toggle button that appears in the + * navigation tree in the HTML output when GENERATE_TREEVIEW is + * enabled. This tooltip explains the meaning of the button. + */ + virtual QCString trPanelSynchronisationTooltip(bool enable) + { + QCString opt = enable ? "povolit" : "zakázat"; + return opt + " synchronizaci panelů"; + } + + /*! Used in a method of an Objective-C class that is declared in a + * a category. Note that the @1 marker is required and is replaced + * by a link. + */ + virtual QCString trProvidedByCategory() + { + return "Deklarováno v kategorii @1."; + } + + /*! Used in a method of an Objective-C category that extends a class. + * Note that the @1 marker is required and is replaced by a link to + * the class method. + */ + virtual QCString trExtendsClass() + { + return "Rozšiřuje třídu @1."; + } + + /*! Used as the header of a list of class methods in Objective-C. + * These are similar to static public member functions in C++. + */ + virtual QCString trClassMethods() + { + return "Metody třídy"; + } + + /*! Used as the header of a list of instance methods in Objective-C. + * These are similar to public member functions in C++. + */ + virtual QCString trInstanceMethods() + { + return "Metody instance"; + } + + /*! Used as the header of the member functions of an Objective-C class. + */ + virtual QCString trMethodDocumentation() + { + return "Dokumentace metody"; + } + + /*! Used as the title of the design overview picture created for the + * VHDL output. + */ + virtual QCString trDesignOverview() + { + return "Návrhové schéma"; + } + +////////////////////////////////////////////////////////////////////////// + }; #endif // TRANSLATOR_CZ_H diff --git a/src/translator_eo.h b/src/translator_eo.h index 65e495a..b4a077c 100644 --- a/src/translator_eo.h +++ b/src/translator_eo.h @@ -42,7 +42,7 @@ Translator class (by the local maintainer) when the localized translator is made up-to-date again. */ -class TranslatorEsperanto : public TranslatorAdapter_1_8_2 +class TranslatorEsperanto : public Translator { public: @@ -1873,7 +1873,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_2 } return sdate; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.7.5 ////////////////////////////////////////////////////////////////////////// @@ -1922,13 +1922,76 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_2 virtual QCString trInheritedFrom(const char *members,const char *what) { return QCString(members)+" heredita el "+what; } - /*! Header of the sections with inherited members specific for the - * base class(es) + /*! Header of the sections with inherited members specific for the + * base class(es) */ virtual QCString trAdditionalInheritedMembers() { return "Kromaj Hereditaj Membroj"; } ////////////////////////////////////////////////////////////////////////// +// new since 1.8.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a tooltip for the toggle button that appears in the + * navigation tree in the HTML output when GENERATE_TREEVIEW is + * enabled. This tooltip explains the meaning of the button. + */ + virtual QCString trPanelSynchronisationTooltip(bool enable) + { + QCString opt = enable ? "aktivigi" : "malaktivigi"; + return "klaku por "+opt+" panelan sinkronigon"; + } + + /*! Used in a method of an Objective-C class that is declared in a + * a category. Note that the @1 marker is required and is replaced + * by a link. + */ + virtual QCString trProvidedByCategory() + { + return "Provizita de kategorio @1."; + } + + /*! Used in a method of an Objective-C category that extends a class. + * Note that the @1 marker is required and is replaced by a link to + * the class method. + */ + virtual QCString trExtendsClass() + { + return "Etendi klason @1."; + } + + /*! Used as the header of a list of class methods in Objective-C. + * These are similar to static public member functions in C++. + */ + virtual QCString trClassMethods() + { + return "Klasaj Metodoj"; + } + + /*! Used as the header of a list of instance methods in Objective-C. + * These are similar to public member functions in C++. + */ + virtual QCString trInstanceMethods() + { + return "Aperaj Metodoj"; + } + + /*! Used as the header of the member functions of an Objective-C class. + */ + virtual QCString trMethodDocumentation() + { + return "Dokumentaro de la Metodo"; + } + + /*! Used as the title of the design overview picture created for the + * VHDL output. + */ + virtual QCString trDesignOverview() + { + return "Fasona Superrigardo"; + } + +////////////////////////////////////////////////////////////////////////// }; diff --git a/src/translator_es.h b/src/translator_es.h index eb34b52..bdddeba 100644 --- a/src/translator_es.h +++ b/src/translator_es.h @@ -30,12 +30,11 @@ * Updated to 1.6.3 by Bartomeu Creus Navarro (3-marzo-2010) * Updated to 1.6.4 by Bartomeu Creus Navarro (26-mayo-2010) [(16-jun-2010) grabado en UTF-8] * Updated to 1.8.0 by Bartomeu Creus Navarro (11-abril-2012) + * Updated to 1.8.2 by Bartomeu Creus Navarro (01-julio-2012) */ - -class TranslatorSpanish : public TranslatorAdapter_1_8_2 +class TranslatorSpanish : public Translator { - public: // --- Language control methods ------------------- @@ -1060,7 +1059,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_8_2 "class ProtectedBase { };\n\n" "/*! Clase que es heredera usando herencia privada */\n" "class PrivateBase { };\n\n" - "/*! Clase que es usada por la clase hija */\n" + "/*! Clase que es usada por la clase heredada */\n" "class Used { };\n\n" "/*! Super-Clase que hereda de varias otras clases */\n" "class Inherited : public PublicBase,\n" @@ -1073,13 +1072,13 @@ class TranslatorSpanish : public TranslatorAdapter_1_8_2 " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "Si la etiqueta \\c MAX_DOT_GRAPH_HEIGHT en el archivo de configuración " - "tiene valor 240 resultará en el siguiente gráfico:" - "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" + "Dará como resultado el siguiente gráfico:" + "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n" "<p>\n" "Las cajas en el gráfico arriba tienen el siguiente significado:\n" + "</p>\n" "<ul>\n" - "<li>Una caja llena negra representa la estructura o clase para la cuál" + "<li>Una caja llena gris representa la estructura o clase para la cuál" "se generó el gráfico.\n" "<li>Una caja con borde negro señala una estructura o clase documentada.\n" "<li>Una caja con borde griz señala una estructura o clase no documentada.\n" @@ -1088,7 +1087,9 @@ class TranslatorSpanish : public TranslatorAdapter_1_8_2 "mostradas. El gráfico sera truncado si este no calza dentro de los " "límites especificados." "</ul>\n" + "<p>\n" "Las flechas tienen el siguiente significado:\n" + "</p>\n" "<ul>\n" "<li>Una flecha azul oscuro es usada para visualizar una relación herencia publica entre dos clases.\n" "<li>Una flecha verde oscuro es usada para herencia protegida.\n" @@ -1988,6 +1989,69 @@ class TranslatorSpanish : public TranslatorAdapter_1_8_2 { return "Otros miembros heredados"; } ////////////////////////////////////////////////////////////////////////// +// new since 1.8.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a tooltip for the toggle button that appears in the + * navigation tree in the HTML output when GENERATE_TREEVIEW is + * enabled. This tooltip explains the meaning of the button. + */ + virtual QCString trPanelSynchronisationTooltip(bool enable) + { + QCString opt = enable ? "habilitar" : "deshabilitar"; + return "click en "+opt+" sincronización"; + } + + /*! Used in a method of an Objective-C class that is declared in a + * a category. Note that the @1 marker is required and is replaced + * by a link. + */ + virtual QCString trProvidedByCategory() + { + return "Proporcionado por categoría @1."; + } + + /*! Used in a method of an Objective-C category that extends a class. + * Note that the @1 marker is required and is replaced by a link to + * the class method. + */ + virtual QCString trExtendsClass() + { + return "Extiende la clase @1."; + } + + /*! Used as the header of a list of class methods in Objective-C. + * These are similar to static public member functions in C++. + */ + virtual QCString trClassMethods() + { + return "Métodos de la clase"; + } + + /*! Used as the header of a list of instance methods in Objective-C. + * These are similar to public member functions in C++. + */ + virtual QCString trInstanceMethods() + { + return "Métodos de instancia"; + } + + /*! Used as the header of the member functions of an Objective-C class. + */ + virtual QCString trMethodDocumentation() + { + return "Método de documentación"; + } + + /*! Used as the title of the design overview picture created for the + * VHDL output. + */ + virtual QCString trDesignOverview() + { + return "Diseño información general"; + } + +////////////////////////////////////////////////////////////////////////// }; diff --git a/src/translator_gr.h b/src/translator_gr.h index 6490e85..95072a3 100644 --- a/src/translator_gr.h +++ b/src/translator_gr.h @@ -26,11 +26,8 @@ #ifndef TRANSLATOR_GR_H #define TRANSLATOR_GR_H -class TranslatorGreek : public TranslatorAdapter_1_8_0 +class TranslatorGreek : public Translator { - protected: - friend class TranslatorAdapterBase; - public: // --- Language control methods ------------------- @@ -589,13 +586,13 @@ class TranslatorGreek : public TranslatorAdapter_1_8_0 if (isTemplate) result+=" Προτύπου"; switch(compType) { - case ClassDef::Class: result+=" Κλάσης"; break; - case ClassDef::Struct: result+=" Δομής"; break; - case ClassDef::Union: result+=" Ένωσης"; break; - case ClassDef::Interface: result+=" Διαπροσωπίας"; break; - case ClassDef::Protocol: result+=" Πρωτοκόλλου"; break; - case ClassDef::Category: result+=" Κατηγορίας"; break; - case ClassDef::Exception: result+=" Εξαίρεσης"; break; + case ClassDef::Class: result+=" Κλάσης "; break; + case ClassDef::Struct: result+=" Δομής "; break; + case ClassDef::Union: result+=" Ένωσης "; break; + case ClassDef::Interface: result+=" Διασύνδεσης "; break; + case ClassDef::Protocol: result+=" Πρωτοκόλλου "; break; + case ClassDef::Category: result+=" Κατηγορίας "; break; + case ClassDef::Exception: result+=" Εξαίρεσης "; break; } result+=clName; return result; @@ -748,12 +745,12 @@ class TranslatorGreek : public TranslatorAdapter_1_8_0 switch(compType) { case ClassDef::Class: result+="αυτή την κλάση"; break; - case ClassDef::Struct: result+="αυτή η δομή"; break; - case ClassDef::Union: result+="αυτή η ένωση"; break; - case ClassDef::Interface: result+="αυτή η διαπροσωπία"; break; - case ClassDef::Protocol: result+="Πρωτόκολλο"; break; - case ClassDef::Category: result+="Κατηγορία"; break; - case ClassDef::Exception: result+="αυτή η εξαίρεση"; break; + case ClassDef::Struct: result+="αυτή τη δομή"; break; + case ClassDef::Union: result+="αυτή την ένωση"; break; + case ClassDef::Interface: result+="αυτή τη διασύνδεση"; break; + case ClassDef::Protocol: result+="αυτό το πρωτόκολλο"; break; + case ClassDef::Category: result+="αυτή την κατηγορία"; break; + case ClassDef::Exception: result+="αυτή την εξαίρεση"; break; } result+=" δημιουργήθηκε απο τ"; if (single) result+="ο ακόλουθο αρχείο:"; else result+="α ακόλουθα αρχεία:"; @@ -1549,7 +1546,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_0 return "Το διάγραμμα δείχνει από ποιές συναρτήσεις καλείται αυτή η συνάρτηση:"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() @@ -1816,7 +1813,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_0 return (QCString)"Εσωκλείει το αρχείο στο "+name; } - /** Compiles a date string. + /** Compiles a date string. * @param year Year in 4 digits * @param month Month of the year: 1=January * @param day Day of the Month: 1..31 @@ -1859,6 +1856,118 @@ class TranslatorGreek : public TranslatorAdapter_1_8_0 virtual QCString trDirDepGraph(const char *name) { return QCString("Διάγραμμα εξάρτησης φακέλων για ")+name+":"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.8.0 +////////////////////////////////////////////////////////////////////////// + + /*! Detail level selector shown for hierarchical indices */ + virtual QCString trDetailLevel() + { return "Επίπεδο λεπτομέρειας"; } + + /*! Section header for list of template parameters */ + virtual QCString trTemplateParameters() + { return "Παράμετροι Προτύπου"; } + + /*! Used in dot graph when UML_LOOK is enabled and there are many fields */ + virtual QCString trAndMore(const QCString &number) + { return "και "+number+" ακόμη..."; } + + /*! Used file list for a Java enum */ + virtual QCString trEnumGeneratedFromFiles(bool single) + { QCString result = "Η τεκμηρίωση αυτής της απαρίθμησης δημιουργήθηκε από "; + if (single) result += "τo αρχείo"; else result += "τα αρχεία"; + result+=":"; + return result; + } + + /*! Header of a Java enum page (Java enums are represented as classes). */ + virtual QCString trEnumReference(const char *name) + { return QCString("Αναφορά Απαρίθμησης ") + QCString(name); } + + /*! Used for a section containing inherited members */ + virtual QCString trInheritedFrom(const char *members,const char *what) + { return QCString(members)+" κληρονόμησαν από "+what; } + + /*! Header of the sections with inherited members specific for the + * base class(es) + */ + virtual QCString trAdditionalInheritedMembers() + { return "Επιπρόσθετες Κληρονομημένες Μέθοδοι"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.8.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a tooltip for the toggle button that appears in the + * navigation tree in the HTML output when GENERATE_TREEVIEW is + * enabled. This tooltip explains the meaning of the button. + */ + virtual QCString trPanelSynchronisationTooltip(bool enable) + { + QCString opt = enable ? "ενεργοποιήσετε" : "απενεργοποιήσετε"; + return "Κάντε κλικ για να "+opt+" το συγχρονισμό του παραθύρου"; + } + + /*! Used in a method of an Objective-C class that is declared in a + * a category. Note that the @1 marker is required and is replaced + * by a link. + */ + virtual QCString trProvidedByCategory() + { + return "Παρέχεται από την κατηγορία @1."; + } + + /*! Used in a method of an Objective-C category that extends a class. + * Note that the @1 marker is required and is replaced by a link to + * the class method. + */ + virtual QCString trExtendsClass() + { + return "Κληρονομει την κλάση @1."; + } + + /*! Used as the header of a list of class methods in Objective-C. + * These are similar to static public member functions in C++. + */ + virtual QCString trClassMethods() + { + return "Μέθοδοι Κλάσης"; + } + + /*! Used as the header of a list of instance methods in Objective-C. + * These are similar to public member functions in C++. + */ + virtual QCString trInstanceMethods() + { + return "Μέθοδοι Αντικειμένου"; + } + + /*! Used as the header of the member functions of an Objective-C class. + */ + virtual QCString trMethodDocumentation() + { + return "Τεκμηρίωση Μεθόδου"; + } + + /*! Used as the title of the design overview picture created for the + * VHDL output. + */ + virtual QCString trDesignOverview() + { + return "Επισκόπηση σχεδίασης"; + } + + +/* Future strategy of changes + Many words have more clear meaning in English and not in Greek: + template -> πρότυπο + instance -> αντικείμενο? (μπορεί να μιλάμε για template instantiation ή class instantiation) + interface -> διασύνδεση +*/ + +////////////////////////////////////////////////////////////////////////// + }; #endif diff --git a/src/translator_sk.h b/src/translator_sk.h index 162a32d..df3feea 100644 --- a/src/translator_sk.h +++ b/src/translator_sk.h @@ -14,9 +14,10 @@ * input used in their production; they are not affected by this license. * * ----------------------------------------------------------------------------*/ - + // Updates: // -------- +// 2012/08/02 - Updates for "new since 1.8.2". // 2012/04/18 - Updates for "new since 1.8.0". // 2011/07/28 - Updates for "new since 1.7.5". // 2010/06/04 - big leap from 1.2.18 to 1.6.3+ @@ -30,7 +31,7 @@ #ifndef TRANSLATOR_SK_H #define TRANSLATOR_SK_H -class TranslatorSlovak : public TranslatorAdapter_1_8_2 +class TranslatorSlovak : public Translator { public: // --- Language control methods ------------------- @@ -112,7 +113,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 virtual QCString trGeneratedAutomatically(const char *s) { QCString result("Generované automaticky programom Doxygen " "zo zdrojových textov"); - if (s) + if (s) result+=(QCString)" projektu "+s; result+="."; return result; @@ -1330,7 +1331,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 // new since 1.2.18 ////////////////////////////////////////////////////////////////////////// - /*! Used as a header for declaration section of the events found in + /*! Used as a header for declaration section of the events found in * a C# program */ virtual QCString trEvents() @@ -1350,35 +1351,35 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 /*! Used as a heading for a list of Java class types with package scope. */ virtual QCString trPackageTypes() - { + { return "Typy v balíku"; } - /*! Used as a heading for a list of Java class functions with package - * scope. + /*! Used as a heading for a list of Java class functions with package + * scope. */ virtual QCString trPackageMembers() - { + { return "Funkcie v balíku"; } - /*! Used as a heading for a list of static Java class functions with + /*! Used as a heading for a list of static Java class functions with * package scope. */ virtual QCString trStaticPackageMembers() - { + { return "Statické funkcie v balíku"; } - /*! Used as a heading for a list of Java class variables with package + /*! Used as a heading for a list of Java class variables with package * scope. */ virtual QCString trPackageAttribs() - { + { return "Atribúty balíku"; } - /*! Used as a heading for a list of static Java class variables with + /*! Used as a heading for a list of static Java class variables with * package scope. */ virtual QCString trStaticPackageAttribs() - { + { return "Statické atribúty balíku"; } @@ -1386,7 +1387,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 // new since 1.3.1 ////////////////////////////////////////////////////////////////////////// - /*! Used in the quick index of a class/file/namespace member list page + /*! Used in the quick index of a class/file/namespace member list page * to link to the unfiltered list of all members. */ virtual QCString trAll() @@ -1398,13 +1399,13 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 { return "Táto funkcia volá..."; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.3.3 ////////////////////////////////////////////////////////////////////////// - /*! When the search engine is enabled this text is put in the index - * of each page before the search field. + /*! When the search engine is enabled this text is put in the index + * of each page before the search field. */ virtual QCString trSearchForIndex() { @@ -1421,7 +1422,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 * text can be different depending on the number of documents found. * Inside the text you can put the special marker $num to insert * the number representing the actual number of search results. - * The @a numDocuments parameter can be either 0, 1 or 2, where the + * The @a numDocuments parameter can be either 0, 1 or 2, where the * value 2 represents 2 or more matches. HTML markup is allowed inside * the returned string. */ @@ -1435,20 +1436,20 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 { return "Bol nájdený jediný dokument, ktorý vyhovuje vášmu dotazu."; } - else + else { return "Bolo nájdených <b>$num</b> dokumentov, ktoré vyhovujú vášmu " "dotazu. Najviac odpovedajúce dokumenty sú ako prvé."; } } - /*! This string is put before the list of matched words, for each search + /*! This string is put before the list of matched words, for each search * result. What follows is the list of words that matched the query. */ virtual QCString trSearchMatches() { return "Nájdené slová:"; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.3.8 ////////////////////////////////////////////////////////////////////////// @@ -1459,8 +1460,8 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 { return QCString("Zdrojový súbor ") + filename; } - - + + ////////////////////////////////////////////////////////////////////////// // new since 1.3.9 ////////////////////////////////////////////////////////////////////////// @@ -1484,34 +1485,34 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 virtual QCString trDirectories() { return "Adresáre"; } - /*! This returns a sentences that introduces the directory hierarchy. + /*! This returns a sentences that introduces the directory hierarchy. * and the fact that it is sorted alphabetically per level */ virtual QCString trDirDescription() - { + { return "Následujúca hierarchia adresárov je zhruba, " - "ale nie úplne, zoradená podľa abecedy:"; + "ale nie úplne, zoradená podľa abecedy:"; } /*! This returns the title of a directory page. The name of the * directory is passed via \a dirName. */ virtual QCString trDirReference(const char *dirName) - { - QCString result = "Referencia k adresáru "; - result += dirName; - return result; + { + QCString result = "Referencia k adresáru "; + result += dirName; + return result; } /*! This returns the word directory with or without starting capital * (\a first_capital) and in sigular or plural form (\a singular). */ virtual QCString trDir(bool first_capital, bool singular) - { + { QCString result((first_capital ? "Adresár" : "adresár")); - if ( ! singular) + if ( ! singular) result += "e"; - return result; + return result; } ////////////////////////////////////////////////////////////////////////// @@ -1536,7 +1537,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 { return "Túto funkciu volajú..."; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() @@ -1546,12 +1547,12 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 ////////////////////////////////////////////////////////////////////////// // new since 1.5.4 (mainly for Fortran) ////////////////////////////////////////////////////////////////////////// - + /*! header that is put before the list of member subprograms (Fortran). */ virtual QCString trMemberFunctionDocumentationFortran() { return "Dokumentácia členských funkcií/podprogramov"; } - /*! This is put above each page as a link to the list of annotated data types (Fortran). */ + /*! This is put above each page as a link to the list of annotated data types (Fortran). */ virtual QCString trCompoundListFortran() { return "Zoznam dátových typov"; } @@ -1574,18 +1575,18 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 } result+="zložiek dátových typov"; result+=" s odkazmi na "; - if (!extractAll) + if (!extractAll) { result+="dokumentáciu dátovej štruktúry pre každú zložku:"; } - else + else { result+="příslušné dátové typy:"; } return result; } - /*! This is used in LaTeX as the title of the chapter with the + /*! This is used in LaTeX as the title of the chapter with the * annotated compound index (Fortran). */ virtual QCString trCompoundIndexFortran() @@ -1597,24 +1598,24 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 virtual QCString trTypeDocumentation() { return "Dokumentácia k dátovým typom"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of (global) subprograms (Fortran). */ virtual QCString trSubprograms() { return "Funkcie/podprogramy"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for subprograms (Fortran) */ virtual QCString trSubprogramDocumentation() { return "Dokumentácia funkcie/podprogramu"; } - /*! This is used in the documentation of a file/namespace/group before + /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds (Fortran) */ virtual QCString trDataTypes() { return "Dátové typy"; } - + /*! used as the title of page containing all the index of all modules (Fortran). */ virtual QCString trModulesList() { return "Zoznam modulov"; } @@ -1653,46 +1654,46 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 virtual QCString trModuleReference(const char *namespaceName) { QCString result="Dokumentácia modulu "; - result += namespaceName; + result += namespaceName; return result; } - + /*! This is put above each page as a link to all members of modules. (Fortran) */ virtual QCString trModulesMembers() { return "Časti modulu"; } /*! This is an introduction to the page with all modules members (Fortran) */ virtual QCString trModulesMemberDescription(bool extractAll) - { + { QCString result="Nasleduje zoznam všetkých "; if (!extractAll) result+="dokumentovaných "; result+="častí modulov s odkazmi "; - if (extractAll) + if (extractAll) { result+="na dokumentáciu modulov pre danú časť:"; } - else + else { result+="na moduly, ku ktorým časť patrí:"; } return result; } - /*! This is used in LaTeX as the title of the chapter with the + /*! This is used in LaTeX as the title of the chapter with the * index of all modules (Fortran). */ virtual QCString trModulesIndex() { return "Register modulov"; } - + /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names + * be followed by a single name or by a list of names * of the category. */ virtual QCString trModule(bool first_capital, bool singular) - { + { QCString result((first_capital ? "Modul" : "modul")); if (!singular) result+="y"; - return result; + return result; } /*! This is put at the bottom of a module documentation page and is * followed by a list of files that were used to generate the page. @@ -1713,29 +1714,29 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 case ClassDef::Exception: result+="k tejto výnimke"; break; } result+=" bola vygenerovaná z "; - if (single) result+="nasledujúceho súboru:"; + if (single) result+="nasledujúceho súboru:"; else result+="nasledujúcich súborov:"; return result; } /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names + * be followed by a single name or by a list of names * of the category. */ virtual QCString trType(bool first_capital, bool singular) - { + { QCString result((first_capital ? "Typ" : "typ")); if (!singular) result+="y"; - return result; + return result; } /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names + * be followed by a single name or by a list of names * of the category. */ virtual QCString trSubprogram(bool first_capital, bool singular) - { + { QCString result((first_capital ? "Podprogram" : "podprogram")); if (!singular) result+="y"; - return result; + return result; } /*! C# Type Contraint list */ @@ -1806,7 +1807,7 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 return (QCString)"Vkladá (include) súbor z "+name; } - /** Compiles a date string. + /** Compiles a date string. * @param year Year in 4 digits * @param month Month of the year: 1=January * @param day Day of the Month: 1..31 @@ -1895,6 +1896,69 @@ class TranslatorSlovak : public TranslatorAdapter_1_8_2 { return "Ďaľšie zdedené členy"; } ////////////////////////////////////////////////////////////////////////// +// new since 1.8.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a tooltip for the toggle button that appears in the + * navigation tree in the HTML output when GENERATE_TREEVIEW is + * enabled. This tooltip explains the meaning of the button. + */ + virtual QCString trPanelSynchronisationTooltip(bool enable) + { + QCString opt = enable ? "povoliť" : "zakázať"; + return opt + " synchronizáciu panelov"; + } + + /*! Used in a method of an Objective-C class that is declared in a + * a category. Note that the @1 marker is required and is replaced + * by a link. + */ + virtual QCString trProvidedByCategory() + { + return "Deklarované v kategórii @1."; + } + + /*! Used in a method of an Objective-C category that extends a class. + * Note that the @1 marker is required and is replaced by a link to + * the class method. + */ + virtual QCString trExtendsClass() + { + return "Rozširuje triedu @1."; + } + + /*! Used as the header of a list of class methods in Objective-C. + * These are similar to static public member functions in C++. + */ + virtual QCString trClassMethods() + { + return "Metódy triedy"; + } + + /*! Used as the header of a list of instance methods in Objective-C. + * These are similar to public member functions in C++. + */ + virtual QCString trInstanceMethods() + { + return "Metódy inštancie"; + } + + /*! Used as the header of the member functions of an Objective-C class. + */ + virtual QCString trMethodDocumentation() + { + return "Dokumentácia metódy"; + } + + /*! Used as the title of the design overview picture created for the + * VHDL output. + */ + virtual QCString trDesignOverview() + { + return "Návrhová schéma"; + } + +////////////////////////////////////////////////////////////////////////// }; #endif // TRANSLATOR_SK_H diff --git a/src/util.cpp b/src/util.cpp index 2546d47..2679b65 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -460,10 +460,21 @@ QCString resolveTypeDef(Definition *context,const QCString &qualifiedName, /*! Get a class definition given its name. * Returns 0 if the class is not found. */ -ClassDef *getClass(const char *name) +ClassDef *getClass(const char *n) { - if (name==0 || name[0]=='\0') return 0; - return Doxygen::classSDict->find(name); + if (n==0 || n[0]=='\0') return 0; + QCString name=n; + ClassDef *result = Doxygen::classSDict->find(name); + //if (result==0 && !exact) // also try generic and protocol versions + //{ + // result = Doxygen::classSDict->find(name+"-g"); + // if (result==0) + // { + // result = Doxygen::classSDict->find(name+"-p"); + // } + //} + //printf("getClass(%s)=%s\n",n,result?result->name().data():"<none>"); + return result; } NamespaceDef *getResolvedNamespace(const char *name) @@ -1388,18 +1399,20 @@ static ClassDef *getResolvedClassRec(Definition *scope, //printf("Looking for symbol %s\n",name.data()); DefinitionIntf *di = Doxygen::symbolMap->find(name); + // the -g (for C# generics) and -p (for ObjC protocols) are now already + // stripped from the key used in the symbolMap, so that is not needed here. if (di==0) { - di = Doxygen::symbolMap->find(name+"-g"); - if (di==0) - { + //di = Doxygen::symbolMap->find(name+"-g"); + //if (di==0) + //{ di = Doxygen::symbolMap->find(name+"-p"); if (di==0) { //printf("no such symbol!\n"); return 0; } - } + //} } //printf("found symbol!\n"); @@ -1822,10 +1835,10 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope, static QRegExp regExpSplit("(?!:),"); QCString txtStr=text; int strLen = txtStr.length(); - //printf("linkifyText scope=%s fileScope=%s strtxt=%s strlen=%d\n", + //printf("linkifyText scope=%s fileScope=%s strtxt=%s strlen=%d external=%d\n", // scope?scope->name().data():"<none>", // fileScope?fileScope->name().data():"<none>", - // txtStr.data(),strLen); + // txtStr.data(),strLen,external); int matchLen; int index=0; int newIndex; @@ -1906,7 +1919,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope, } } } - if (!found && cd) + if (!found && (cd || (cd=getClass(matchWord)))) { //printf("Found class %s\n",cd->name().data()); // add link to the result @@ -1931,18 +1944,18 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope, } } } - else if ((cd=getClass(matchWord+"-g"))) // C# generic as well - { - // add link to the result - if (external ? cd->isLinkable() : cd->isLinkableInProject()) - { - if (cd!=self) - { - out.writeLink(cd->getReference(),cd->getOutputFileBase(),cd->anchor(),word); - found=TRUE; - } - } - } +// else if ((cd=getClass(matchWord+"-g"))) // C# generic as well +// { +// // add link to the result +// if (external ? cd->isLinkable() : cd->isLinkableInProject()) +// { +// if (cd!=self) +// { +// out.writeLink(cd->getReference(),cd->getOutputFileBase(),cd->anchor(),word); +// found=TRUE; +// } +// } +// } else { //printf(" -> nothing\n"); @@ -3822,15 +3835,19 @@ static void findMembersWithSpecificName(MemberName *mn, * - if `fd' is non zero, the member was found in the global namespace of * file fd. */ -bool getDefs(const QCString &scName,const QCString &memberName, - const char *args, - MemberDef *&md, - ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd, - bool forceEmptyScope, - FileDef *currentFile, - bool checkCV, - const char *forceTagFile - ) +bool getDefs(const QCString &scName, + const QCString &memberName, + const char *args, + MemberDef *&md, + ClassDef *&cd, + FileDef *&fd, + NamespaceDef *&nd, + GroupDef *&gd, + bool forceEmptyScope, + FileDef *currentFile, + bool checkCV, + const char *forceTagFile + ) { fd=0, md=0, cd=0, nd=0, gd=0; if (memberName.isEmpty()) return FALSE; /* empty name => nothing to link */ @@ -4224,8 +4241,8 @@ static bool getScopeDefs(const char *docScope,const char *scope, if (scopeOffset>0) fullName.prepend(docScopeName.left(scopeOffset)+"::"); if (((cd=getClass(fullName)) || // normal class - (cd=getClass(fullName+"-p")) || // ObjC protocol - (cd=getClass(fullName+"-g")) // C# generic + (cd=getClass(fullName+"-p")) //|| // ObjC protocol + //(cd=getClass(fullName+"-g")) // C# generic ) && cd->isLinkable()) { return TRUE; // class link written => quit @@ -4582,12 +4599,12 @@ bool resolveLink(/* in */ const char *scName, resAnchor=cd->anchor(); return TRUE; } - else if ((cd=getClass(linkRef+"-g"))) // C# generic link - { - *resContext=cd; - resAnchor=cd->anchor(); - return TRUE; - } +// else if ((cd=getClass(linkRef+"-g"))) // C# generic link +// { +// *resContext=cd; +// resAnchor=cd->anchor(); +// return TRUE; +// } else if ((nd=Doxygen::namespaceSDict->find(linkRef))) { *resContext=nd; @@ -5161,7 +5178,7 @@ done: } //printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(), // className.data(),namespaceName.data()); - if (className.right(2)=="-g" || className.right(2)=="-p") + if (/*className.right(2)=="-g" ||*/ className.right(2)=="-p") { className = className.left(className.length()-2); } diff --git a/src/vhdlcode.h b/src/vhdlcode.h index e5df98e..362b79d 100644 --- a/src/vhdlcode.h +++ b/src/vhdlcode.h @@ -9,9 +9,9 @@ class FileDef; class MemberDef; void parseVhdlCode(CodeOutputInterface &,const char *,const QCString &, - bool ,const char *,FileDef *fd=0, - int startLine=-1,int endLine=-1,bool inlineFragment=FALSE, - MemberDef *memberDef=0,bool showLineNumbers=TRUE); + bool ,const char *,FileDef *fd, + int startLine,int endLine,bool inlineFragment, + MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx); void resetVhdlCodeParserState(); void codeFreeVhdlScanner(); diff --git a/src/vhdlcode.l b/src/vhdlcode.l index f8da699..89412b2 100644 --- a/src/vhdlcode.l +++ b/src/vhdlcode.l @@ -83,6 +83,7 @@ static int g_inputPosition; //!< read offset during parsing static int g_inputLines; //!< number of line in the code fragment static int g_yyLineNr; //!< current line number static bool g_needsTermination; +static Definition *g_searchCtx; static QCString g_exampleName; static QCString g_exampleFile; @@ -113,11 +114,18 @@ static void startFontClass(const char *s); //------------------------------------------------------------------- -static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") +static void setCurrentDoc(const QCString &anchor) { if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(name,base,anchor); + if (g_searchCtx) + { + Doxygen::searchIndex->setCurrentDoc(g_searchCtx,g_searchCtx->anchor(),FALSE); + } + else + { + Doxygen::searchIndex->setCurrentDoc(g_sourceFileDef,anchor,TRUE); + } } } @@ -207,18 +215,14 @@ static void startCodeLine() g_code->writeLineNumber(g_currentMemberDef->getReference(), g_currentMemberDef->getOutputFileBase(), g_currentMemberDef->anchor(),g_yyLineNr); - setCurrentDoc(g_currentMemberDef->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } else if (d->isLinkableInProject()) { g_code->writeLineNumber(d->getReference(), d->getOutputFileBase(), 0,g_yyLineNr); - setCurrentDoc(d->qualifiedName(), - g_sourceFileDef->getSourceFileBase(), - lineAnchor); + setCurrentDoc(lineAnchor); } } else @@ -1501,9 +1505,9 @@ void resetVhdlCodeParserState() } void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &s, - bool exBlock, const char *exName,FileDef *fd, + bool /*exBlock*/, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, - MemberDef *memberDef,bool) + MemberDef *memberDef,bool,Definition *searchCtx) { //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); if (s.isEmpty()) return; @@ -1519,6 +1523,7 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString g_inputPosition = 0; g_currentFontClass = 0; g_needsTermination = FALSE; + g_searchCtx = searchCtx; if (endLine!=-1) g_inputLines = endLine+1; @@ -1535,14 +1540,16 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString g_classScope = className; g_exampleName = exName; g_sourceFileDef = fd; - if (exBlock && fd==0) + bool cleanupSourceDef = FALSE; + if (fd==0) { // create a dummy filedef for the example g_sourceFileDef = new FileDef("",exName); + cleanupSourceDef = TRUE; } if (g_sourceFileDef) { - setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); + setCurrentDoc("l00001"); } g_currentDefinition = 0; g_currentMemberDef = 0; @@ -1574,7 +1581,7 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString { endCodeLine(); } - if (exBlock && g_sourceFileDef) + if (cleanupSourceDef) { // delete the temporary file definition used for this example delete g_sourceFileDef; diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp index a2eb4b8..e4e5bd1 100644 --- a/src/vhdldocgen.cpp +++ b/src/vhdldocgen.cpp @@ -1963,7 +1963,7 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol, // write search index info if (Doxygen::searchIndex) { - Doxygen::searchIndex->setCurrentDoc(mdef->qualifiedName(),mdef->getOutputFileBase(),mdef->anchor()); + Doxygen::searchIndex->setCurrentDoc(mdef,mdef->anchor(),FALSE); Doxygen::searchIndex->addWord(mdef->localName(),TRUE); Doxygen::searchIndex->addWord(mdef->qualifiedName(),FALSE); } diff --git a/src/vhdlscanner.h b/src/vhdlscanner.h index b245c78..7fbed18 100644 --- a/src/vhdlscanner.h +++ b/src/vhdlscanner.h @@ -62,7 +62,8 @@ class VHDLLanguageScanner : public ParserInterface int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, - bool showLineNumbers=TRUE + bool showLineNumbers=TRUE, + Definition *searchCtx=0 ); void resetCodeParserState(); void parsePrototype(const char *text); diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l index c92c6ce..a13a51c 100644 --- a/src/vhdlscanner.l +++ b/src/vhdlscanner.l @@ -794,12 +794,13 @@ void VHDLLanguageScanner::parseCode(CodeOutputInterface &codeOutIntf, int endLine, bool inlineFragment, MemberDef *memberDef, - bool showLineNumbers + bool showLineNumbers, + Definition *searchCtx ) { ::parseVhdlCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, fileDef,startLine,endLine,inlineFragment,memberDef, - showLineNumbers); + showLineNumbers,searchCtx); } /* @@ -998,7 +999,7 @@ static bool checkMultiComment(QCString& qcs,int line) if (pTemp->isEmpty()) return false; - int ii=pTemp->count(); + //int ii=pTemp->count(); qcs.stripPrefix("--!"); while (!pTemp->isEmpty()) { @@ -1007,7 +1008,7 @@ static bool checkMultiComment(QCString& qcs,int line) e->brief+=qcs; iDocLine=-1; pTemp->removeFirst(); - ii=pTemp->count(); + //ii=pTemp->count(); } return true; } diff --git a/tmake/lib/macosx-intel-c++/app.t b/tmake/lib/macosx-intel-c++/app.t new file mode 100644 index 0000000..867725e --- /dev/null +++ b/tmake/lib/macosx-intel-c++/app.t @@ -0,0 +1,2 @@ +#! Use the common Unix template +#$ IncludeTemplate("../unix/app.t"); diff --git a/tmake/lib/macosx-intel-c++/lib.t b/tmake/lib/macosx-intel-c++/lib.t new file mode 100644 index 0000000..2523b2f --- /dev/null +++ b/tmake/lib/macosx-intel-c++/lib.t @@ -0,0 +1,2 @@ +#! Use the common Unix template +#$ IncludeTemplate("../unix/lib.t"); diff --git a/tmake/lib/macosx-intel-c++/subdirs.t b/tmake/lib/macosx-intel-c++/subdirs.t new file mode 100644 index 0000000..5e888af --- /dev/null +++ b/tmake/lib/macosx-intel-c++/subdirs.t @@ -0,0 +1,2 @@ +#! Use the common Unix template +#$ IncludeTemplate("../unix/subdirs.t"); diff --git a/tmake/lib/macosx-intel-c++/tmake.conf b/tmake/lib/macosx-intel-c++/tmake.conf new file mode 100644 index 0000000..878e122 --- /dev/null +++ b/tmake/lib/macosx-intel-c++/tmake.conf @@ -0,0 +1,59 @@ +# +# +# +# tmake configuration for macosx-c++ +# + +TEMPLATE = app +CONFIG = qt warn_on release + +TMAKE_CC = cc +TMAKE_CFLAGS = -pipe -arch i386 -arch x86_64 +TMAKE_CFLAGS_WARN_ON = -Wall -W -Wno-deprecated-declarations -Wno-invalid-source-encoding +TMAKE_CFLAGS_WARN_OFF = +TMAKE_CFLAGS_RELEASE = -O2 +TMAKE_CFLAGS_DEBUG = -g +TMAKE_CFLAGS_SHLIB = -fPIC +TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses + +TMAKE_CXX = c++ +TMAKE_CXXFLAGS = $$TMAKE_CFLAGS -D__FreeBSD__=6 -mmacosx-version-min=10.5 -DYY_TYPEDEF_YY_SIZE_T -Dyy_size_t=int +TMAKE_CXXFLAGS_WARN_ON = $$TMAKE_CFLAGS_WARN_ON +TMAKE_CXXFLAGS_WARN_OFF = $$TMAKE_CFLAGS_WARN_OFF +TMAKE_CXXFLAGS_RELEASE = $$TMAKE_CFLAGS_RELEASE +TMAKE_CXXFLAGS_DEBUG = $$TMAKE_CFLAGS_DEBUG +TMAKE_CXXFLAGS_SHLIB = $$TMAKE_CFLAGS_SHLIB +TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YACC + +TMAKE_INCDIR = +TMAKE_LIBDIR = +TMAKE_INCDIR_X11 = +TMAKE_LIBDIR_X11 = +TMAKE_INCDIR_QT = $(QTDIR)/include +TMAKE_LIBDIR_QT = $(QTDIR)/lib +TMAKE_INCDIR_OPENGL = /usr/X11R6/include +TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib + +TMAKE_LINK = c++ +TMAKE_LINK_SHLIB = c++ +TMAKE_LFLAGS = -Wl,-search_paths_first -arch i386 -arch x86_64 +TMAKE_LFLAGS_RELEASE = +TMAKE_LFLAGS_DEBUG = +TMAKE_LFLAGS_SHLIB = -shared + +TMAKE_LFLAGS_SONAME = -dynamiclib -install_name + +TMAKE_LIBS = -liconv -framework CoreServices -mmacosx-version-min=10.5 +TMAKE_LIBS_X11 = +TMAKE_LIBS_QT = -lqt +TMAKE_LIBS_QT_MT = -lqt-mt +TMAKE_LIBS_QT_OPENGL = -lqgl +TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu + +TMAKE_MOC = moc + +TMAKE_AR = ar cq +TMAKE_RANLIB = ranlib + +TMAKE_TAR = tar -cf +TMAKE_GZIP = gzip -9f diff --git a/tmake/lib/macosx-uni-c++/tmake.conf b/tmake/lib/macosx-uni-c++/tmake.conf index 4f2f0c2..0a5eb97 100644 --- a/tmake/lib/macosx-uni-c++/tmake.conf +++ b/tmake/lib/macosx-uni-c++/tmake.conf @@ -9,7 +9,7 @@ CONFIG = qt warn_on release TMAKE_CC = cc TMAKE_CFLAGS = -pipe -arch i386 -arch ppc -TMAKE_CFLAGS_WARN_ON = -Wall -W +TMAKE_CFLAGS_WARN_ON = -Wall -W -Wno-deprecated-declarations -Wno-invalid-source-encoding TMAKE_CFLAGS_WARN_OFF = TMAKE_CFLAGS_RELEASE = -O2 TMAKE_CFLAGS_DEBUG = -g |