diff options
49 files changed, 2776 insertions, 1677 deletions
@@ -1,7 +1,7 @@ -DOXYGEN Version 1.6.3-20100603 +DOXYGEN Version 1.7.0 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (03 June 2010) +Dimitri van Heesch (15 June 2010) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.6.3_20100603 +DOXYGEN Version 1.7.0 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (03 June 2010) +Dimitri van Heesch (dimitri@stack.nl) (15 June 2010) @@ -16,11 +16,11 @@ # shell script to configure doxygen doxygen_version_major=1 -doxygen_version_minor=6 -doxygen_version_revision=3 +doxygen_version_minor=7 +doxygen_version_revision=0 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20100603 +doxygen_version_mmn=NO bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/doc/Doxyfile b/doc/Doxyfile index 01014fa..0c06390 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -34,7 +34,7 @@ IMAGE_PATH = . INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \ grouping.doc formulas.doc diagrams.doc preprocessing.doc \ autolink.doc output.doc searching.doc customize.doc custcmd.doc \ - external.doc faq.doc trouble.doc history.doc features.doc \ + external.doc faq.doc trouble.doc features.doc \ doxygen_usage.doc doxytag_usage.doc \ doxywizard_usage.doc installdox_usage.doc \ config.doc commands.doc htmlcmds.doc xmlcmds.doc language.doc \ diff --git a/doc/autolink.doc b/doc/autolink.doc index 0325a7a..8279d90 100644 --- a/doc/autolink.doc +++ b/doc/autolink.doc @@ -82,7 +82,7 @@ the patterns above. \par Note 4: In the documentation of a class containing a member foo, - a reference to a global variable is made using ::foo, whereas \#foo + a reference to a global variable is made using "::foo", whereas \#foo will link to the member. For non overloaded members the argument list may be omitted. diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index a755c19..a10cddd 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -17,6 +17,7 @@ \usepackage{makeidx} \usepackage{fancyhdr} \usepackage{float} +\usepackage{longtable} \usepackage{graphicx} \usepackage{epsf} \usepackage{doxygen} @@ -68,7 +69,6 @@ Written by Dimitri van Heesch\\[2ex] \chapter{Troubleshooting}\label{trouble}\hypertarget{trouble}{}\input{trouble} \part{Reference Manual} \chapter{Features}\label{features}\hypertarget{features}{}\input{features} -\chapter{Doxygen History}\label{history}\hypertarget{history}{}\input{history} \chapter{Doxygen usage}\label{doxygen_usage}\hypertarget{doxygen_usage}{}\input{doxygen_usage} \chapter{Doxytag usage}\label{doxytag_usage}\hypertarget{doxytag_usage}{}\input{doxytag_usage} \chapter{Doxywizard usage}\label{doxywizard_usage}\hypertarget{doxywizard_usage}{}\input{doxywizard_usage} diff --git a/doc/features.doc b/doc/features.doc index b1ebf0c..c1615ec 100644 --- a/doc/features.doc +++ b/doc/features.doc @@ -21,30 +21,41 @@ <li>Requires very little overhead from the writer of the documentation. Plain text will do, but for more fancy or structured output HTML tags and/or some of doxygen's special commands can be used. -<li>Supports C/C++, Java, (Corba and Microsoft) Java, Python, - IDL, C#, Objective-C and to some extent D and PHP sources. +<li>Cross platform: works on Windows and many Unices (including Linux and + MacOSX). +<li>Indexes, organizes and generates browsable and cross-referenced + output even from undocumented code. +<li>Generates structured XML output for parsed sources, which can be + used by external tools. +<li>Supports C/C++, Java, (Corba and Microsoft) Java, Python, VHDL, PHP + IDL, C#, Objective-C 2.0, and to some extent D and Fortran sources. <li>Supports documentation of files, namespaces, packages, classes, structs, unions, templates, variables, functions, typedefs, enums and defines. -<li>JavaDoc (1.1), Qt-Doc, and ECMA-334 (C# spec.) compatible. +<li>JavaDoc (1.1), qdoc3 (partially), and ECMA-334 (C# spec.) compatible. +<li>Comes with a GUI frontend (Doxywizard) to ease editing the options and run doxygen. + The GUI is available on Windows, Linux, and MacOSX. <li>Automatically generates class and collaboration diagrams in HTML (as clickable image maps) and \f$\mbox{\LaTeX}\f$ (as Encapsulated PostScript images). <li>Uses the dot tool of the Graphviz tool kit to generate include dependency graphs, collaboration diagrams, call graphs, directory structure graphs, and graphical class hierarchy graphs. +<li>Allows grouping of entities in modules and creating a hierarchy of modules. <li>Flexible comment placement: Allows you to put documentation in the header file (before the declaration of an entity), source file (before the definition of an entity) or in a separate file. <li>Generates a list of all members of a class (including any inherited members) along with their protection level. -<li>Outputs documentation in on-line format (HTML and UNIX man page) and +<li>Outputs documentation in on-line format (XHTML and UNIX man page) and off-line format (\f$\mbox{\LaTeX}\f$ and RTF) simultaneously (any of these can be disabled if desired). All formats are optimized for ease of reading. <br> Furthermore, compressed HTML can be generated from HTML output using Microsoft's HTML Help Workshop (Windows only) and PDF can be generated from the \f$\mbox{\LaTeX}\f$ output. +<li>Support for various third party help formats including HTML Help, + docsets, Qt-Help, and eclipse help. <li>Includes a full C preprocessor to allow proper parsing of conditional code fragments and to allow expansion of all or part of macros definitions. <li>Automatically detects public, protected and private sections, as well as @@ -56,12 +67,14 @@ <li>References to base/super classes and inherited/overridden members are generated automatically. <li>Includes a fast, rank based search engine to search for strings or words - in the class and member documentation. + in the class and member documentation (PHP based). +<li>Includes an Javascript based live search feature to search for symbols + as you type (for small to medium sized projects). <li>You can type normal HTML tags in your documentation. Doxygen will convert them to their equivalent \f$\mbox{\LaTeX}\f$, RTF, and man-page counterparts automatically. -<li>Allows references to documentation generated for other projects - (or another part of the same project) in a location independent way. +<li>Allows references to documentation generated for other (doxygen documented) + projects (or another part of the same project) in a location independent way. <li>Allows inclusion of source code examples that are automatically cross-referenced with the documentation. <li>Inclusion of undocumented classes is also supported, allowing to quickly @@ -75,6 +88,11 @@ configuration file. <li>Documentation and search engine can be transferred to another location or machine without regenerating the documentation. +<li>Supports many different character encodings and uses UTF-8 internally and + for the generated output. +<li>Doxygen can generate a layout which you can use and edit to change the + layout of each page. +<li>There more than a 100 configurable options to finetune the output. <li>Can cope with large projects easily. </UL> diff --git a/doc/index.doc b/doc/index.doc index 8633331..c36504d 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -87,8 +87,6 @@ The second part forms a reference manual: <ul> <li>Section \ref features presents an overview of what doxygen can do. -<li>Section \ref history shows what has changed during the development - of doxygen and what still has to be done. <li>Section \ref doxygen_usage shows how to use the \c doxygen program. <li>Section \ref doxytag_usage shows how to use the \c doxytag program. <li>Section \ref doxywizard_usage shows how to use the \c doxywizard program. diff --git a/doc/language.doc b/doc/language.doc index b61b9f4..c4c1e10 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -73,7 +73,7 @@ when the translator was updated. <tr bgcolor="#ffffff"> <td>Catalan</td> <td>Maximiliano Pin<br/>Albert Mora</td> - <td>max.pin at bitroit dot com<br/>[unreachable]</td> + <td>max dot pin at bitroit dot com<br/>[unreachable]</td> <td>1.6.3</td> </tr> <tr bgcolor="#ffffff"> @@ -85,20 +85,20 @@ when the translator was updated. <tr bgcolor="#ffffff"> <td>Chinese Traditional</td> <td>Daniel YC Lin<br/>Gary Lee</td> - <td>dlin.tw at gmail dot com<br/>garywlee at gmail dot com</td> + <td>dlin dot tw at gmail dot com<br/>garywlee at gmail dot com</td> <td>1.6.0</td> </tr> <tr bgcolor="#ffffff"> <td>Croatian</td> <td>Boris Bralo</td> - <td>boris.bralo at gmail dot com</td> + <td>boris dot bralo at gmail dot com</td> <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Czech</td> <td>Petr Přikryl</td> <td>prikrylp at skil dot cz</td> - <td>1.6.3</td> + <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Danish</td> @@ -127,7 +127,7 @@ when the translator was updated. <tr bgcolor="#ffffff"> <td>Finnish</td> <td>Antti Laine</td> - <td>antti.a.laine at tut dot fi</td> + <td>antti dot a dot laine at tut dot fi</td> <td>1.6.0</td> </tr> <tr bgcolor="#ffffff"> @@ -145,7 +145,7 @@ when the translator was updated. <tr bgcolor="#ffffff"> <td>Greek</td> <td>Paul Gessos</td> - <td>gessos.paul at yahoo dot gr</td> + <td>gessos dot paul at yahoo dot gr</td> <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> @@ -212,12 +212,12 @@ when the translator was updated. <td>Persian</td> <td>Ali Nadalizadeh</td> <td>nadalizadeh at gmail dot com</td> - <td>1.6.0</td> + <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Polish</td> <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td> - <td>[unreachable]<br/>[unreachable]<br/>krzysztof.kral at gmail dot com</td> + <td>[unreachable]<br/>[unreachable]<br/>krzysztof dot kral at gmail dot com</td> <td>1.6.3</td> </tr> <tr bgcolor="#ffffff"> @@ -254,12 +254,12 @@ when the translator was updated. <td>Slovak</td> <td>-- searching for the maintainer --</td> <td></td> - <td>1.2.18</td> + <td>up-to-date</td> </tr> <tr bgcolor="#ffffff"> <td>Slovene</td> <td>Matjaž Ostroveršnik</td> - <td>matjaz.ostroversnik at ostri dot org</td> + <td>matjaz dot ostroversnik at ostri dot org</td> <td>1.4.6</td> </tr> <tr bgcolor="#ffffff"> @@ -301,111 +301,113 @@ when the translator was updated. \latexonly -\begin{tabular}{|l|l|l|l|} +\footnotesize +\begin{longtable}{|l|l|l|l|} \hline {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\ \hline \hline - Afrikaans & Johan Prinsloo & {\tt\tiny johan@zippysnoek.com} & 1.6.0 \\ + Afrikaans & Johan Prinsloo & {\tt\tiny johan at zippysnoek dot com} & 1.6.0 \\ \hline - Arabic & Moaz Reyad & {\tt\tiny moazreyad@yahoo.com} & 1.4.6 \\ + Arabic & Moaz Reyad & {\tt\tiny moazreyad at yahoo dot com} & 1.4.6 \\ \hline - Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\ + Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & up-to-date \\ \hline - Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.6.3 \\ - ~ & Albert Mora & {\tt\tiny [unreachable] amora@iua.upf.es} & ~ \\ + Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.6.3 \\ + ~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\ \hline - Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.6.0 \\ - ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ + Chinese & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & 1.6.0 \\ + ~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\ \hline - Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin.tw@gmail.com} & 1.6.0 \\ - ~ & Gary Lee & {\tt\tiny garywlee@gmail.com} & ~ \\ + Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & 1.6.0 \\ + ~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\ \hline - Croatian & Boris Bralo & {\tt\tiny boris.bralo@gmail.com} & up-to-date \\ + Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & up-to-date \\ \hline - Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.6.3 \\ + Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp at skil dot cz} & up-to-date \\ \hline - Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.5.4 \\ + Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & 1.5.4 \\ \hline - Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ + Dutch & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\ \hline - English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ + English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\ \hline - Esperanto & Ander Martinez & {\tt\tiny dwarfnauko@gmail.com} & 1.6.3 \\ + Esperanto & Ander Martinez & {\tt\tiny dwarfnauko at gmail dot com} & 1.6.3 \\ \hline - Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & 1.6.0 \\ + Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\ \hline - French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.6.3 \\ + French & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & 1.6.3 \\ \hline - German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.3 \\ + German & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & 1.6.3 \\ \hline - Greek & Paul Gessos & {\tt\tiny gessos.paul@yahoo.gr} & up-to-date \\ + Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & up-to-date \\ \hline - Hungarian & \'{A}kos Kiss & {\tt\tiny akiss@users.sourceforge.net} & 1.4.6 \\ - ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny [unreachable] foldvari lost@cyberspace} & ~ \\ + Hungarian & \'{A}kos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\ + ~ & F\"{o}ldv\'{a}ri Gy\"{o}rgy & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\ \hline - Indonesian & Hendy Irawan & {\tt\tiny ceefour@gauldong.net} & 1.4.6 \\ + Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.4.6 \\ \hline - Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & 1.6.0 \\ - ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ + Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.6.0 \\ + ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\ \hline - Japanese & Hiroki Iseri & {\tt\tiny goyoki@gmail.com} & 1.6.0 \\ - ~ & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & ~ \\ - ~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\ - ~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa@cosmo-system.jp} & ~ \\ + Japanese & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & 1.6.0 \\ + ~ & Ryunosuke Satoh & {\tt\tiny sun594 at hotmail dot com} & ~ \\ + ~ & Kenji Nagamatsu & {\tt\tiny naga at joyful dot club dot ne dot jp} & ~ \\ + ~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa at cosmo-system dot jp} & ~ \\ \hline JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\ \hline - Korean & Kim Taedong & {\tt\tiny fly1004@gmail.com} & 1.6.3 \\ - ~ & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & ~ \\ - ~ & Richard Kim & {\tt\tiny [unreachable] ryk@dspwiz.com} & ~ \\ + Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & 1.6.3 \\ + ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\ + ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\ \hline KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\ \hline - Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden@homelan.lt} & 1.4.6 \\ - ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius@takas.lt} & ~ \\ - ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber@takas.lt} & ~ \\ + Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden at homelan dot lt} & 1.4.6 \\ + ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius at takas dot lt} & ~ \\ + ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber at takas dot lt} & ~ \\ ~ & -- contact lost -- & {\tt\tiny } & ~ \\ \hline - Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski@yahoo.com} & 1.6.0 \\ + Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski at yahoo dot com} & 1.6.0 \\ \hline - Norwegian & Lars Erik Jordet & {\tt\tiny lejordet@gmail.com} & 1.4.6 \\ + Norwegian & Lars Erik Jordet & {\tt\tiny lejordet at gmail dot com} & 1.4.6 \\ \hline - Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh@gmail.com} & 1.6.0 \\ + Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & up-to-date \\ \hline - Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr.Kaminski@ctm.gdynia.pl} & 1.6.3 \\ - ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal@poczta.onet.pl} & ~ \\ - ~ & Krzysztof Kral & {\tt\tiny krzysztof.kral@gmail.com} & ~ \\ + Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.6.3 \\ + ~ & 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 [unreachable] ruiglopes@yahoo.com} & 1.3.3 \\ + Portuguese & Rui Godinho Lopes & {\tt\tiny [unreachable] ruiglopes at yahoo dot com} & 1.3.3 \\ \hline - Romanian & Ionut Dumitrascu & {\tt\tiny reddumy@yahoo.com} & 1.6.0 \\ - ~ & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & ~ \\ + Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & 1.6.0 \\ + ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\ \hline - Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.6.0 \\ + Russian & Alexandr Chelpanov & {\tt\tiny cav at cryptopro dot ru} & 1.6.0 \\ \hline - Serbian & Dejan Milosavljevic & {\tt\tiny [unreachable] dmilos@email.com} & 1.6.0 \\ + Serbian & Dejan Milosavljevic & {\tt\tiny [unreachable] dmilos at email dot com} & 1.6.0 \\ \hline - SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo@yahoo.com} & 1.6.0 \\ + SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\ \hline - Slovak & -- searching for the maintainer -- & {\tt\tiny } & 1.2.18 \\ + Slovak & -- searching for the maintainer -- & {\tt\tiny } & up-to-date \\ \hline - Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ostri.org} & 1.4.6 \\ + Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\ \hline - Spanish & Bartomeu & {\tt\tiny bartomeu@loteria3cornella.com} & up-to-date \\ - ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra@puc.cl} & ~ \\ - ~ & David Vaquero & {\tt\tiny david@grupoikusnet.com} & ~ \\ + Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\ + ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\ + ~ & David Vaquero & {\tt\tiny david at grupoikusnet dot com} & ~ \\ \hline - Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.6.0 \\ + Swedish & Mikael Hallin & {\tt\tiny mikaelhallin at yahoo dot se} & 1.6.0 \\ \hline - Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3@yahoo.com} & 1.6.0 \\ + Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & 1.6.0 \\ \hline Ukrainian & -- searching for the maintainer -- & {\tt\tiny } & 1.4.1 \\ \hline - Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey@gmail.com} & 1.6.0 \\ + Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey at gmail dot com} & 1.6.0 \\ \hline -\end{tabular} +\end{longtable} +\normalsize \endlatexonly diff --git a/doc/translator.py b/doc/translator.py index dd8fa00..14f8c3c 100644 --- a/doc/translator.py +++ b/doc/translator.py @@ -1910,13 +1910,15 @@ class TrManager: # Define templates for LaTeX table parts of the documentation. latexTableTpl = r''' \latexonly - \begin{tabular}{|l|l|l|l|} + \footnotesize + \begin{longtable}{|l|l|l|l|} \hline {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\ \hline %s \hline - \end{tabular} + \end{longtable} + \normalsize \endlatexonly ''' latexTableTpl = dedent(latexTableTpl) diff --git a/doc/translator_report.txt b/doc/translator_report.txt index 9501c7d..6d1c243 100644 --- a/doc/translator_report.txt +++ b/doc/translator_report.txt @@ -10,7 +10,7 @@ Persian, Polish, Portuguese, Romanian, Russian, Serbian, SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -Of them, 6 translators are up-to-date, 32 translators are based on +Of them, 9 translators are up-to-date, 29 translators are based on some adapter class, and 2 are English based. ---------------------------------------------------------------------- @@ -21,9 +21,12 @@ still may be some details listed even for them: TranslatorBrazilian TranslatorCroatian + TranslatorCzech TranslatorDutch TranslatorEnglish TranslatorGreek + TranslatorPersian -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() + TranslatorSlovak TranslatorSpanish -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs() ---------------------------------------------------------------------- @@ -41,7 +44,6 @@ must be implemented to become up-to-date: Note: Reimplementation using UTF-8 suggested. TranslatorEsperanto 1.6.3 4 methods to implement (1 %) - TranslatorCzech 1.6.3 4 methods to implement (1 %) TranslatorCatalan 1.6.3 4 methods to implement (1 %) TranslatorVietnamese 1.6.0 9 methods to implement (4 %) TranslatorTurkish 1.6.0 9 methods to implement (4 %) @@ -58,9 +60,6 @@ must be implemented to become up-to-date: TranslatorRomanian 1.6.0 9 methods to implement (4 %) Note: Reimplementation using UTF-8 suggested. - TranslatorPersian 1.6.0 9 methods to implement (4 %) - Note: Reimplementation using UTF-8 suggested. - TranslatorMacedonian 1.6.0 9 methods to implement (4 %) TranslatorJapanese 1.6.0 9 methods to implement (4 %) Note: Reimplementation using UTF-8 suggested. @@ -103,9 +102,6 @@ must be implemented to become up-to-date: TranslatorPortuguese 1.3.3 44 methods to implement (19 %) Note: Reimplementation using UTF-8 suggested. - TranslatorSlovak 1.2.18 53 methods to implement (23 %) - Note: Reimplementation using UTF-8 suggested. - ---------------------------------------------------------------------- The following translator classes derive directly from the @@ -254,19 +250,6 @@ TranslatorChinesetraditional (TranslatorAdapter_1_6_0) 9 methods to implement virtual QCString trIncludesFileIn(const char * name) -TranslatorCzech (TranslatorAdapter_1_6_3) 4 methods to implement (1 %) ---------------- - - Implements 221 of the required methods (98 %). - - Missing methods (should be implemented): - - 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 trDirDependency(const char * name) - virtual QCString trIncludesFileIn(const char * name) - - TranslatorDanish (TranslatorAdapter_1_5_4) 31 methods to implement (13 %) ---------------- @@ -661,22 +644,10 @@ TranslatorNorwegian (TranslatorAdapter_1_4_6) 32 methods to implement (14 %) virtual QCString trNoDescriptionAvailable() -TranslatorPersian (TranslatorAdapter_1_6_0) 9 methods to implement (4 %) +TranslatorPersian (Translator) ----------------- - Implements 216 of the required methods (96 %). - - Missing methods (should be implemented): - - virtual QCString trSearching() - virtual QCString trNoMatches() - 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 trGlobalNamespace() - virtual QCString trDirRelation(const char * name) - virtual QCString trDirDependency(const char * name) - virtual QCString trIncludesFileIn(const char * name) + Implements 225 of the required methods (100 %). TranslatorPolish (TranslatorAdapter_1_6_3) 4 methods to implement (1 %) @@ -841,80 +812,6 @@ TranslatorSerbianCyrilic (TranslatorAdapter_1_6_0) 9 methods to implement (4 virtual QCString trIncludesFileIn(const char * name) -TranslatorSlovak (TranslatorAdapter_1_2_18) 53 methods to implement (23 %) ----------------- - - Implements 172 of the required methods (76 %). - - Missing methods (should be implemented): - - virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) - virtual QCString trSearching() - virtual QCString trOverloadText() - virtual QCString trEventDocumentation() - virtual QCString trDirIndex() - virtual QCString trNoMatches() - virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single) - virtual QCString trLoading() - virtual QCString trSubprograms() - virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime) - virtual QCString trPackageMembers() - virtual QCString trStaticPackageMembers() - virtual QCString trModulesListDescription(bool extractAll) - virtual QCString trModulesList() - virtual QCString trDirDocumentation() - virtual QCString trSearchResultsTitle() - virtual QCString trDirectories() - virtual QCString trTypeConstraints() - virtual QCString trFileIn(const char * name) - virtual QCString trGlobalNamespace() - virtual QCString trMemberFunctionDocumentationFortran() - virtual QCString trDirDescription() - virtual QCString trStaticPackageAttribs() - virtual QCString trCompoundListDescriptionFortran() - virtual QCString trCallGraph() - virtual QCString trTypeDocumentation() - virtual QCString trModuleReference(const char * namespaceName) - virtual QCString trModulesMemberDescription(bool extractAll) - virtual QCString trModulesMembers() - virtual QCString trModulesIndex() - virtual QCString trDirRelation(const char * name) - virtual QCString trPackageTypes() - virtual QCString trCompoundListFortran() - virtual QCString trDataTypes() - virtual QCString trSearchResults(int numDocuments) - virtual QCString trDirDependency(const char * name) - virtual QCString trIncludesFileIn(const char * name) - virtual QCString trPackageAttribs() - virtual QCString trSearchMatches() - virtual QCString trCompoundIndexFortran() - virtual QCString trSubprogram(bool first_capital, bool singular) - virtual QCString trEvents() - virtual QCString trCallerGraph() - 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 trSourceFile(QCString & filename) - virtual QCString trDirReference(const char * dirName) - virtual QCString trDir(bool first_capital, bool singular) - virtual QCString trSearchForIndex() - virtual QCString trAll() - virtual QCString trSubprogramDocumentation() - - Obsolete methods (should be removed, never used): - - virtual QCString trHeaderFilesDescription() - virtual QCString trField(bool first_capital, bool singular) - virtual QCString trPackageDocumentation() - virtual QCString trSources() - virtual QCString trReimplementedForInternalReasons() - virtual QCString trInterfaces() - virtual QCString trHeaderFiles() - virtual QCString trBugsAndLimitations() - virtual QCString trNoDescriptionAvailable() - - TranslatorSlovene (TranslatorAdapter_1_4_6) 33 methods to implement (14 %) ----------------- diff --git a/qtools/qdir_win32.cpp b/qtools/qdir_win32.cpp index 33c8cec..f1515a1 100644 --- a/qtools/qdir_win32.cpp +++ b/qtools/qdir_win32.cpp @@ -59,6 +59,24 @@ extern int qt_cmp_si( const void *, const void * ); } #endif +static QString p_getenv( QString name ) +{ + DWORD len = GetEnvironmentVariableW( ( LPCWSTR ) qt_winTchar ( name, TRUE ), NULL, 0 ); + if ( len == 0 ) + return QString::null; + /* ansi: we allocate too much memory, but this shouldn't be the problem here ... */ + LPWSTR buf = (LPWSTR)new WCHAR[ len ]; + len = GetEnvironmentVariableW ( ( LPCWSTR ) qt_winTchar ( name, TRUE ), buf, len ); + if ( len == 0 ) + { + delete[] buf; + return QString::null; + } + QString ret = qt_winQString ( buf ); + delete[] buf; + return ret; +} + void QDir::slashify( QString& n ) { @@ -71,12 +89,21 @@ void QDir::slashify( QString& n ) QString QDir::homeDirPath() { - QString d; - d = QFile::decodeName(getenv("HOME")); - slashify( d ); - if ( d.isNull() ) - d = rootDirPath(); - return d; + QString d = p_getenv ( "HOME" ); + if ( d.isNull () ) { + d = p_getenv ( "USERPROFILE" ); + if ( d.isNull () ) { + QString homeDrive = p_getenv ( "HOMEDRIVE" ); + QString homePath = p_getenv ( "HOMEPATH" ); + if ( !homeDrive.isNull () && !homePath.isNull () ) { + d = homeDrive + homePath; + } else { + d = rootDirPath (); + } + } + } + slashify( d ); + return d; } QString QDir::canonicalPath() const @@ -99,27 +126,38 @@ QString QDir::canonicalPath() const bool QDir::mkdir( const QString &dirName, bool acceptAbsPath ) const { #if defined(__CYGWIN32_) - return MKDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)), 0777 ) - == 0; + return MKDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)), 0777 ) == 0; #else - return MKDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)) ) == 0; - + return _wmkdir( ( LPCWSTR ) filePath( dirName, acceptAbsPath ).ucs2() ) == 0; #endif } bool QDir::rmdir( const QString &dirName, bool acceptAbsPath ) const { +#if defined(__CYGWIN32_) return RMDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)) ) == 0; +#else + return _wrmdir( ( LPCWSTR ) filePath( dirName, acceptAbsPath ).ucs2() ) == 0; +#endif } bool QDir::isReadable() const { + QString path = dPath; + if ( ( path[ 0 ] == '\\' ) || ( path[ 0 ] == '/' ) ) + path = rootDirPath() + path; +#if defined(__CYGWIN32_) return ACCESS( QFile::encodeName(dPath), R_OK ) == 0; +#else + return ( _waccess( (wchar_t*) path.ucs2(), R_OK ) == 0 ); +#endif } bool QDir::isRoot() const { - return dPath == QString::fromLatin1("/"); + QString path = dPath; + slashify( path ); + return path == rootDirPath (); } bool QDir::rename( const QString &name, const QString &newName, @@ -133,21 +171,33 @@ bool QDir::rename( const QString &name, const QString &newName, } QString fn1 = filePath( name, acceptAbsPaths ); QString fn2 = filePath( newName, acceptAbsPaths ); +#if defined(__CYGWIN32_) return ::rename( QFile::encodeName(fn1), QFile::encodeName(fn2) ) == 0; +#else + return MoveFileW( ( LPCWSTR ) fn1.ucs2(), ( LPCWSTR ) fn2.ucs2() ) != 0; +#endif } bool QDir::setCurrent( const QString &path ) { +#if defined(__CYGWIN32_) int r; r = CHDIR( QFile::encodeName(path) ); return r >= 0; +#else + if ( !QDir( path ).exists() ) + return false; + return ( SetCurrentDirectoryW( ( LPCWSTR ) path.ucs2() ) >= 0 ); +#endif } QString QDir::currentDirPath() { QString result; +#if defined(__CYGWIN32_) + STATBUF st; if ( STAT( ".", &st ) == 0 ) { char currentName[PATH_MAX]; @@ -162,25 +212,47 @@ QString QDir::currentDirPath() qWarning( "QDir::currentDirPath: stat(\".\") failed" ); #endif } + +#else + + DWORD size = 0; + WCHAR currentName[ PATH_MAX ]; + size = ::GetCurrentDirectoryW( PATH_MAX, currentName ); + if ( size != 0 ) { + if ( size > PATH_MAX ) { + WCHAR * newCurrentName = new WCHAR[ size ]; + if ( ::GetCurrentDirectoryW( PATH_MAX, newCurrentName ) != 0 ) + result = QString::fromUcs2( ( ushort* ) newCurrentName ); + delete [] newCurrentName; + } else { + result = QString::fromUcs2( ( ushort* ) currentName ); + } + } + + if ( result.length() >= 2 && result[ 1 ] == ':' ) + result[ 0 ] = result.at( 0 ).upper(); // Force uppercase drive letters. +#endif slashify( result ); return result; } QString QDir::rootDirPath() { - QString d = QString::fromLatin1( "/" ); - return d; + QString d = p_getenv ( "SystemDrive" ); + if ( d.isNull () ) + d = QString::fromLatin1( "c:" ); // not "c:\\" ! + slashify ( d ); + return d; } bool QDir::isRelativePath( const QString &path ) { - int len = path.length(); - if ( len == 0 ) - return TRUE; - int i = 0; - if ( isalpha(path[0]) && path[1] == ':' ) // drive, e.g. a: - i = 2; - return path[i] != '/' && path[i] != '\\'; + if ( path.isEmpty() ) + return TRUE; + int p = 0; + if ( path[ 0 ].isLetter() && path[ 1 ] == ':' ) + p = 2; // we have checked the first 2. + return ( ( path[ p ] != '/' ) && ( path[ p ] != '\\' ) ); } #undef IS_SUBDIR @@ -249,7 +321,7 @@ bool QDir::readDirEntries( const QString &nameFilter, int plen = p.length(); #if defined(_OS_WIN32_) HANDLE ff; - WIN32_FIND_DATA finfo; + WIN32_FIND_DATAW finfo; #else long ff; _finddata_t finfo; @@ -266,7 +338,11 @@ bool QDir::readDirEntries( const QString &nameFilter, p += '/'; p += "*.*"; +#if defined(__CYGWIN32_) ff = FF_GETFIRST( p.data(), &finfo ); +#else + ff = FindFirstFileW ( ( LPCWSTR ) p.ucs2(), &finfo ); +#endif if ( ff == FF_ERROR ) { #if defined(DEBUG) @@ -282,18 +358,20 @@ bool QDir::readDirEntries( const QString &nameFilter, first = FALSE; else { -#if defined(_OS_WIN32_) - if ( !FF_GETNEXT(ff,&finfo) ) - break; -#else +#if defined(__CYGWIN32_) if ( FF_GETNEXT(ff,&finfo) == -1 ) break; +#else + //if ( !FF_GETNEXT(ff,&finfo) ) + // break; + if (!FindNextFileW(ff, &finfo )) + break; #endif } -#if defined(_OS_WIN32_) - int attrib = finfo.dwFileAttributes; -#else +#if defined(__CYGWIN32_) int attrib = finfo.attrib; +#else + int attrib = finfo.dwFileAttributes; #endif bool isDir = (attrib & IS_SUBDIR) != 0; bool isFile = !isDir; @@ -305,12 +383,13 @@ bool QDir::readDirEntries( const QString &nameFilter, bool isHidden = (attrib & IS_HIDDEN) != 0; bool isSystem = (attrib & IS_SYSTEM) != 0; -#if defined(_OS_WIN32_) - const char *fname = finfo.cFileName; -#else +#if defined(__CYGWIN32_) const char *fname = finfo.name; +#else + //const char *fname = finfo.cFileName; + QString fname = QString::fromUcs2( ( const unsigned short* ) finfo.cFileName); #endif - if ( wc.match(fname) == -1 && !(allDirs && isDir) ) + if ( wc.match(fname.utf8()) == -1 && !(allDirs && isDir) ) continue; QString name = fname; @@ -341,10 +420,10 @@ bool QDir::readDirEntries( const QString &nameFilter, fiList->append( new QFileInfo( fi ) ); } } -#if defined(_OS_WIN32_) - FindClose( ff ); -#else +#if defined(__CYGWIN32_) _findclose( ff ); +#else + FindClose( ff ); #endif // Sort... diff --git a/qtools/qfile_win32.cpp b/qtools/qfile_win32.cpp index 0cc91de..80ad628 100644 --- a/qtools/qfile_win32.cpp +++ b/qtools/qfile_win32.cpp @@ -34,11 +34,26 @@ # define OPEN_ASYNC O_NDELAY #endif +static void reslashify( QString& n ) +{ + for ( int i=0; i<(int)n.length(); i++ ) + { + if ( n[i] == '/' ) + n[i] = '\\'; + } +} + bool qt_file_access( const QString& fn, int t ) { if ( fn.isEmpty() ) return FALSE; +#if defined(__CYGWIN32_) return ACCESS( QFile::encodeName(fn), t ) == 0; +#else + QString str = fn; + reslashify(str); + return ( _waccess( (wchar_t*) str.ucs2(), t ) == 0 ); +#endif } /*! @@ -54,8 +69,14 @@ bool QFile::remove( const QString &fileName ) #endif return FALSE; } - return ::remove( QFile::encodeName(fileName) ) == 0; +#if defined(__CYGWIN32_) // unlink more common in UNIX + return ::remove( QFile::encodeName(fileName) ) == 0; +#else + QString str = fileName; + reslashify(str); + return ( _wunlink( (wchar_t*) str.ucs2() ) == 0 ); +#endif } #if defined(O_NONBLOCK) @@ -166,7 +187,15 @@ bool QFile::open( int m ) if ( isAsynchronous() ) oflags |= OPEN_ASYNC; #endif + + +#if defined(__CYGWIN32_) fd = OPEN( QFile::encodeName(fn), oflags, 0666 ); +#else + QString str = fn; + reslashify(str); + fd = _wopen( (wchar_t*) str.ucs2(), oflags, 0666 ); +#endif if ( fd != -1 ) { // open successful FSTAT( fd, &st ); // get the stat for later usage @@ -201,7 +230,14 @@ bool QFile::open( int m ) strcat( perm2, "b" ); while (1) { // At most twice +#if defined(__CYGWIN32_) fh = fopen( QFile::encodeName(fn), perm2 ); +#else + QString str = fn; + QString prm( perm2 ); + reslashify(str); + fh = _wfopen( (wchar_t*) str.ucs2(), (wchar_t*) prm.ucs2() ); +#endif if ( !fh && try_create ) { perm2[0] = 'w'; // try "w+" instead of "r+" @@ -372,10 +408,23 @@ uint QFile::size() const STATBUF st; if ( isOpen() ) { FSTAT( fh ? FILENO(fh) : fd, &st ); + return st.st_size; } else { +#if defined(__CYGWIN32_) STAT( QFile::encodeName(fn), &st ); +#else + QString str = fn; + reslashify(str); +#ifdef QT_LARGEFILE_SUPPORT + if ( _wstati64( (wchar_t*) str.ucs2(), &st ) != -1 ) { +#else + if ( _wstat( (wchar_t*) str.ucs2(), &st ) != -1 ) { +#endif +#endif + return st.st_size; + } } - return st.st_size; + return 0; } /*! diff --git a/qtools/qfileinfo_win32.cpp b/qtools/qfileinfo_win32.cpp index bfcc6ac..8f83107 100644 --- a/qtools/qfileinfo_win32.cpp +++ b/qtools/qfileinfo_win32.cpp @@ -25,6 +25,15 @@ #include "qdatetime.h" #include "qdir.h" +static void reslashify( QString& n ) +{ + for ( int i=0; i<(int)n.length(); i++ ) + { + if ( n[i] == '/' ) + n[i] = '\\'; + } +} + void QFileInfo::slashify( QString& n ) { for ( int i=0; i<(int)n.length(); i++ ) @@ -246,6 +255,7 @@ void QFileInfo::doStat() const STATBUF *b = &that->fic->st; that->fic->isSymLink = FALSE; +#if defined(__CYGWIN32_) int r; r = STAT( QFile::encodeName(fn), b ); @@ -254,6 +264,18 @@ void QFileInfo::doStat() const delete that->fic; that->fic = 0; } +#else + QString file = fn; + reslashify(file); +#ifdef QT_LARGEFILE_SUPPORT + if ( _wstati64( (wchar_t*) file.ucs2(), b ) == -1 ) { +#else + if ( _wstat( (wchar_t*) file.ucs2(), b ) == -1 ) { +#endif + delete that->fic; + that->fic = 0; + } +#endif } /*! diff --git a/qtools/qstring.cpp b/qtools/qstring.cpp index b582445..5d50060 100644 --- a/qtools/qstring.cpp +++ b/qtools/qstring.cpp @@ -12065,6 +12065,69 @@ char* QString::unicodeToAscii(const QChar *uc, uint l) return result; } +static uint computeNewMax( uint len ) +{ + if (len >= 0x80000000) + return len; + + uint newMax = 4; + while ( newMax < len ) + newMax *= 2; + // try to save some memory + if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) ) + newMax -= newMax >> 2; + return newMax; +} + +/*! + Returns the QString as a zero terminated array of unsigned shorts + if the string is not null; otherwise returns zero. + + The result remains valid so long as one unmodified + copy of the source string exists. + */ +const unsigned short *QString::ucs2() const +{ + if ( ! d->unicode ) + return 0; + unsigned int len = d->len; + if ( d->maxl < len + 1 ) { + // detach, grow or shrink + uint newMax = computeNewMax( len + 1 ); + QChar* nd = QT_ALLOC_QCHAR_VEC( newMax ); + if ( nd ) { + if ( d->unicode ) + memcpy( nd, d->unicode, sizeof(QChar)*len ); + ((QString *)this)->deref(); + ((QString *)this)->d = new QStringData( nd, len, newMax ); + } + } + d->unicode[len] = 0; + return (unsigned short *) d->unicode; +} + +/*! + Constructs a string that is a deep copy of \a str, interpreted as a + UCS2 encoded, zero terminated, Unicode string. + + If \a str is 0, then a null string is created. + \sa isNull() + */ +QString QString::fromUcs2( const unsigned short *str ) +{ + if ( !str ) { + return QString::null; + } else { + int length = 0; + while ( str[length] != 0 ) + length++; + QChar* uc = QT_ALLOC_QCHAR_VEC( length ); + memcpy( uc, str, length*sizeof(QChar) ); + return QString( new QStringData( uc, length, length ), TRUE ); + } +} + + /***************************************************************************** QString member functions *****************************************************************************/ @@ -12214,10 +12277,14 @@ QString::QString( const QByteArray& ba ) QString::QString( const QCString& ba ) { - Q2HELPER(stat_construct_ba++) - uint l; - QChar *uc = internalAsciiToUnicode(ba,&l); - d = new QStringData(uc,l,l); + //Q2HELPER(stat_construct_ba++) + //uint l; + //QChar *uc = internalAsciiToUnicode(ba,&l); + //d = new QStringData(uc,l,l); + Q2HELPER(stat_fast_copy++) + QString s = QString::fromUtf8(ba.data(),ba.length()); + d = s.d; + d->ref(); } /*! @@ -12265,11 +12332,15 @@ QString::QString( const QChar* unicode, uint length ) QString::QString( const char *str ) { - Q2HELPER(stat_construct_charstar++) - uint l; - QChar *uc = internalAsciiToUnicode(str,&l); - Q2HELPER(stat_construct_charstar_size+=l) - d = new QStringData(uc,l,l); + //Q2HELPER(stat_construct_charstar++) + //uint l; + //QChar *uc = internalAsciiToUnicode(str,&l); + //Q2HELPER(stat_construct_charstar_size+=l) + //d = new QStringData(uc,l,l); + Q2HELPER(stat_fast_copy++) + QString s = QString::fromUtf8(str); + d = s.d; + d->ref(); } @@ -14329,7 +14400,25 @@ const char* QString::latin1() const } Q2HELPER(stat_get_ascii++) Q2HELPER(stat_get_ascii_size+=d->len) - d->ascii = unicodeToAscii( d->unicode, d->len ); + static QTextCodec* codec = QTextCodec::codecForMib(106); + if (codec) // we use utf8 coding also for latin1 if possible + { + QCString utf8str(codec->fromUnicode(*this)); + d->ascii = new char[utf8str.length()+1]; + if (utf8str.isEmpty()) + { + d->ascii[0]='\0'; // make empty string + } + else // copy string + { + qstrcpy(d->ascii,utf8str.data()); + } + } + else // fall back to latin1 + { + d->ascii = unicodeToAscii( d->unicode, d->len ); + } + QCString utf8str(utf8()); d->dirtyascii = 0; return d->ascii; } diff --git a/qtools/qstring.h b/qtools/qstring.h index c64d756..4357809 100644 --- a/qtools/qstring.h +++ b/qtools/qstring.h @@ -501,6 +501,8 @@ public: const char* ascii() const; const char* latin1() const; static QString fromLatin1(const char*, int len=-1); + const unsigned short *ucs2() const; + static QString fromUcs2( const unsigned short *ucs2 ); #ifndef QT_NO_TEXTCODEC QCString utf8() const; static QString fromUtf8(const char*, int len=-1); diff --git a/qtools/qtextcodec.cpp b/qtools/qtextcodec.cpp index fbbc1f9..4eb8ba5 100644 --- a/qtools/qtextcodec.cpp +++ b/qtools/qtextcodec.cpp @@ -41,14 +41,14 @@ #include "qlist.h" #ifndef QT_NO_CODECS #include "qutfcodec.h" -#include "qgbkcodec.h" -#include "qeucjpcodec.h" -#include "qjiscodec.h" -#include "qsjiscodec.h" -#include "qeuckrcodec.h" -#include "qbig5codec.h" -#include "qrtlcodec.h" -#include "qtsciicodec.h" +//#include "qgbkcodec.h" +//#include "qeucjpcodec.h" +//#include "qjiscodec.h" +//#include "qsjiscodec.h" +//#include "qeuckrcodec.h" +//#include "qbig5codec.h" +//#include "qrtlcodec.h" +//#include "qtsciicodec.h" #endif #include "qfile.h" @@ -1006,7 +1006,7 @@ public: break; else if (incmap) { char* cursor = line; - int byte,unicode=-1; + int byte=0,unicode=-1; ushort* mb_unicode=0; const int maxmb=8; // more -> we'll need to improve datastructures char mb[maxmb+1]; @@ -2054,17 +2054,17 @@ static void setupBuiltinCodecs() (void)new QSimpleTextCodec( i ); } while( unicodevalues[i++].mib != LAST_MIB ); - (void)new QEucJpCodec; - (void)new QSjisCodec; - (void)new QJisCodec; - (void)new QEucKrCodec; - (void)new QGbkCodec; - (void)new QBig5Codec; + //(void)new QEucJpCodec; + //(void)new QSjisCodec; + //(void)new QJisCodec; + //(void)new QEucKrCodec; + //(void)new QGbkCodec; + //(void)new QBig5Codec; (void)new QUtf8Codec; (void)new QUtf16Codec; - (void)new QHebrewCodec; - (void)new QArabicCodec; - (void)new QTsciiCodec; + //(void)new QHebrewCodec; + //(void)new QArabicCodec; + //(void)new QTsciiCodec; #endif // QT_NO_CODECS } diff --git a/qtools/qtools.pro.in b/qtools/qtools.pro.in index f0a1ffa..3eabed9 100644 --- a/qtools/qtools.pro.in +++ b/qtools/qtools.pro.in @@ -49,6 +49,7 @@ HEADERS = qarray.h \ qthread_p.h \ qmutex.h \ qmutex_p.h \ + qutfcodec.h \ qwaitcondition.h SOURCES = qbuffer.cpp \ @@ -75,7 +76,8 @@ SOURCES = qbuffer.cpp \ qxml.cpp \ qmap.cpp \ qthread.cpp \ - qmutex.cpp + qmutex.cpp \ + qutfcodec.cpp unix:SOURCES += qfile_unix.cpp \ qdir_unix.cpp \ @@ -92,7 +94,8 @@ win32:SOURCES += qfile_win32.cpp \ qwaitcondition_win32.cpp INCLUDEPATH = . -TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQT_LITE_UNICODE +#TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQT_LITE_UNICODE +TMAKE_CXXFLAGS += -DQT_LITE_UNICODE win32:TMAKE_CXXFLAGS += -DQT_NODLL win32-g++:TMAKE_CXXFLAGS += -D__CYGWIN__ -DALL_STATIC OBJECTS_DIR = ../objects diff --git a/qtools/qutfcodec.cpp b/qtools/qutfcodec.cpp new file mode 100644 index 0000000..f64812c --- /dev/null +++ b/qtools/qutfcodec.cpp @@ -0,0 +1,276 @@ +/**************************************************************************** +** +** +** Implementation of QEucCodec class +** +** Created : 981015 +** +** Copyright (C)1998-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "qutfcodec.h" + +#ifndef QT_NO_TEXTCODEC + +int QUtf8Codec::mibEnum() const +{ + return 106; +} + +QCString QUtf8Codec::fromUnicode(const QString& uc, int& len_in_out) const +{ + int l = QMIN((int)uc.length(),len_in_out); + int rlen = l*3+1; + QCString rstr(rlen); + uchar* cursor = (uchar*)rstr.data(); + for (int i=0; i<l; i++) { + QChar ch = uc[i]; + if ( !ch.row() && ch.cell() < 0x80 ) { + *cursor++ = ch.cell(); + } else { + uchar b = (ch.row() << 2) | (ch.cell() >> 6); + if ( ch.row() < 0x08 ) { + *cursor++ = 0xc0 | b; + } else { + *cursor++ = 0xe0 | (ch.row() >> 4); + *cursor++ = 0x80 | (b&0x3f); + } + *cursor++ = 0x80 | (ch.cell()&0x3f); + } + } + len_in_out = cursor - (uchar*)rstr.data(); + rstr.truncate(len_in_out); + return rstr; +} + +const char* QUtf8Codec::name() const +{ + return "UTF-8"; +} + +int QUtf8Codec::heuristicContentMatch(const char* chars, int len) const +{ + int score = 0; + for (int i=0; i<len; i++) { + uchar ch = chars[i]; + // No nulls allowed. + if ( !ch ) + return -1; + if ( ch < 128 ) { + // Inconclusive + score++; + } else if ( (ch&0xe0) == 0xc0 ) { + if ( i < len-1 ) { + uchar c2 = chars[++i]; + if ( (c2&0xc0) != 0x80 ) + return -1; + score+=3; + } + } else if ( (ch&0xf0) == 0xe0 ) { + if ( i < len-1 ) { + uchar c2 = chars[++i]; + if ( (c2&0xc0) != 0x80 ) { + return -1; +#if 0 + if ( i < len-1 ) { + uchar c3 = chars[++i]; + if ( (c3&0xc0) != 0x80 ) + return -1; + score+=3; + } +#endif + } + score+=2; + } + } + } + return score; +} + + + + +class QUtf8Decoder : public QTextDecoder { + ushort uc; + int need; +public: + QUtf8Decoder() : need(0) + { + } + + QString toUnicode(const char* chars, int len) + { + QString result; + for (int i=0; i<len; i++) { + uchar ch = chars[i]; + if (need) { + if ( (ch&0xc0) == 0x80 ) { + uc = (uc << 6) | (ch & 0x3f); + need--; + if ( !need ) { + result += QChar(uc); + } + } else { + // error + result += QChar::replacement; + need = 0; + } + } else { + if ( ch < 128 ) { + result += QChar(ch); + } else if ( (ch&0xe0) == 0xc0 ) { + uc = ch &0x1f; + need = 1; + } else if ( (ch&0xf0) == 0xe0 ) { + uc = ch &0x0f; + need = 2; + } + } + } + return result; + } +}; + +QTextDecoder* QUtf8Codec::makeDecoder() const +{ + return new QUtf8Decoder; +} + + + + + + +int QUtf16Codec::mibEnum() const +{ + return 1000; +} + +const char* QUtf16Codec::name() const +{ + return "ISO-10646-UCS-2"; +} + +int QUtf16Codec::heuristicContentMatch(const char* chars, int len) const +{ + uchar* uchars = (uchar*)chars; + if ( len >= 2 && (uchars[0] == 0xff && uchars[1] == 0xfe || + uchars[1] == 0xff && uchars[0] == 0xfe) ) + return len; + else + return 0; +} + + + + +class QUtf16Encoder : public QTextEncoder { + bool headerdone; +public: + QUtf16Encoder() : headerdone(FALSE) + { + } + + QCString fromUnicode(const QString& uc, int& len_in_out) + { + if ( headerdone ) { + len_in_out = uc.length()*sizeof(QChar); + QCString d(len_in_out); + memcpy(d.data(),uc.unicode(),len_in_out); + return d; + } else { + headerdone = TRUE; + len_in_out = (1+uc.length())*sizeof(QChar); + QCString d(len_in_out); + memcpy(d.data(),&QChar::byteOrderMark,sizeof(QChar)); + memcpy(d.data()+sizeof(QChar),uc.unicode(),uc.length()*sizeof(QChar)); + return d; + } + } +}; + +class QUtf16Decoder : public QTextDecoder { + uchar buf; + bool half; + bool swap; + bool headerdone; + +public: + QUtf16Decoder() : half(FALSE), swap(FALSE), headerdone(FALSE) + { + } + + QString toUnicode(const char* chars, int len) + { + QString r; + + while ( len-- ) { + if ( half ) { + QChar ch; + if ( swap ) { + ch.row() = *chars++; + ch.cell() = buf; + } else { + ch.row() = buf; + ch.cell() = *chars++; + } + if ( !headerdone ) { + if ( ch == QChar::byteOrderSwapped ) { + swap = !swap; + } else if ( ch == QChar::byteOrderMark ) { + // Ignore ZWNBSP + } else { + r += ch; + } + headerdone = TRUE; + } else + r += ch; + half = FALSE; + } else { + buf = *chars++; + half = TRUE; + } + } + + return r; + } +}; + +QTextDecoder* QUtf16Codec::makeDecoder() const +{ + return new QUtf16Decoder; +} + +QTextEncoder* QUtf16Codec::makeEncoder() const +{ + return new QUtf16Encoder; +} + +#endif // QT_NO_TEXTCODEC diff --git a/qtools/qutfcodec.h b/qtools/qutfcodec.h new file mode 100644 index 0000000..af864be --- /dev/null +++ b/qtools/qutfcodec.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** +** Definition of QEucCodec class +** +** Created : 981015 +** +** Copyright (C) 1998-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUTFCODEC_H +#define QUTFCODEC_H + +#ifndef QT_H +#include "qtextcodec.h" +#endif // QT_H + +#ifndef QT_NO_TEXTCODEC + +class Q_EXPORT QUtf8Codec : public QTextCodec { +public: + virtual int mibEnum() const; + const char* name() const; + + QTextDecoder* makeDecoder() const; + + QCString fromUnicode(const QString& uc, int& len_in_out) const; + + int heuristicContentMatch(const char* chars, int len) const; +}; + +class Q_EXPORT QUtf16Codec : public QTextCodec { +public: + virtual int mibEnum() const; + const char* name() const; + + QTextDecoder* makeDecoder() const; + QTextEncoder* makeEncoder() const; + + int heuristicContentMatch(const char* chars, int len) const; +}; + +#endif //QT_NO_TEXTCODEC +#endif // QUTFCODEC_H diff --git a/qtools/scstring.h b/qtools/scstring.h index 08de44b..a9b462c 100644 --- a/qtools/scstring.h +++ b/qtools/scstring.h @@ -58,6 +58,7 @@ public: int find( char c, int index=0, bool cs=TRUE ) const; int find( const char *str, int index=0, bool cs=TRUE ) const; int find( const QRegExp &, int index=0 ) const; + int find( const QCString &str, int index, bool cs ) const; int findRev( char c, int index=-1, bool cs=TRUE) const; int findRev( const char *str, int index=-1, bool cs=TRUE) const; int findRev( const QRegExp &, int index=-1 ) const; diff --git a/src/classdef.cpp b/src/classdef.cpp index bfd2fa3..625df51 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -213,7 +213,7 @@ void ClassDefImpl::init(const char *defFileName, const char *name, //extractNamespaceName(name,className,ns); //printf("m_name=%s m_className=%s ns=%s\n",m_name.data(),m_className.data(),ns.data()); - if (((QCString)defFileName).right(5)!=".java" && + if (getLanguageFromFileName(defFileName)!=SrcLangExt_Java && guessSection(defFileName)==Entry::SOURCE_SEC) { isLocal=TRUE; @@ -1225,9 +1225,8 @@ void ClassDef::writeIncludeFiles(OutputList &ol) { ol.startParagraph(); ol.startTypewriter(); - bool isIDLorJava = nm.right(4)==".idl" || - nm.right(5)==".pidl" || - nm.right(5)==".java"; + SrcLangExt lang = getLanguageFromFileName(nm); + bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java; if (isIDLorJava) { ol.docify("import "); @@ -3059,30 +3058,28 @@ QCString ClassDef::qualifiedNameWithTemplateParameters( static bool hideScopeNames = Config_getBool("HIDE_SCOPE_NAMES"); //printf("qualifiedNameWithTemplateParameters() localName=%s\n",localName().data()); QCString scName; - if (!hideScopeNames) + Definition *d=getOuterScope(); + if (d) { - Definition *d=getOuterScope(); - if (d) + if (d->definitionType()==Definition::TypeClass) { - if (d->definitionType()==Definition::TypeClass) - { - ClassDef *cd=(ClassDef *)d; - scName = cd->qualifiedNameWithTemplateParameters(actualParams); - } - else - { - scName = d->qualifiedName(); - } + ClassDef *cd=(ClassDef *)d; + scName = cd->qualifiedNameWithTemplateParameters(actualParams); + } + else if (!hideScopeNames) + { + scName = d->qualifiedName(); } + } - QCString scopeSeparator; - if (optimizeOutputJava) - scopeSeparator="."; - else - scopeSeparator="::"; + QCString scopeSeparator; + if (optimizeOutputJava) + scopeSeparator="."; + else + scopeSeparator="::"; + + if (!scName.isEmpty()) scName+=scopeSeparator; - if (!scName.isEmpty()) scName+=scopeSeparator; - } scName+=className(); ArgumentList *al=0; bool isSpecialization = localName().find('<')!=-1; diff --git a/src/commentcnv.l b/src/commentcnv.l index e508221..ab56812 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -322,7 +322,7 @@ void replaceComment(int offset); int i=3; if (yytext[2]=='/') { - while (i<yyleng && yytext[i]=='/') i++; + while (i<(int)yyleng && yytext[i]=='/') i++; } g_blockHeadCol=g_col; copyToOutput("/**",3); @@ -700,6 +700,8 @@ void replaceComment(int offset); g_lastEscaped=0; BEGIN( ReadAliasArgs ); } +<ReadAliasArgs>^[ \t]*"//"[/!]/[^\n]+ { // skip leading special comments (see bug 618079) + } <ReadAliasArgs>[^{}\n\\\*]+ { g_aliasString+=yytext; g_lastEscaped=FALSE; diff --git a/src/commentscan.h b/src/commentscan.h index 89c5721..914a231 100644 --- a/src/commentscan.h +++ b/src/commentscan.h @@ -77,7 +77,7 @@ void groupLeaveFile(const char *file,int line); void groupLeaveCompound(const char *file,int line,const char *name); void groupEnterCompound(const char *file,int line,const char *name); void openGroup(Entry *e,const char *file,int line); -void closeGroup(Entry *,const char *file,int line); +void closeGroup(Entry *,const char *file,int line,bool foundInline=FALSE); void initGroupInfo(Entry *e); diff --git a/src/commentscan.l b/src/commentscan.l index 902a4f4..b805fff 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -346,7 +346,7 @@ class GuardedSection }; void openGroup(Entry *e,const char *file,int line); -void closeGroup(Entry *e,const char *file,int line); +void closeGroup(Entry *e,const char *file,int line,bool foundInline=FALSE); void initGroupInfo(Entry *e); static void groupAddDocs(Entry *e,const char *fileName); @@ -844,6 +844,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" %x FormatBlock %x LineParam %x GuardParam +%x GuardParamEnd %x SkipGuardedSection %x SkipInternal %x NameParam @@ -929,8 +930,9 @@ RCSTAG "$"{ID}":"[^\n$]+"$" <Comment>"<!--" { BEGIN(HtmlComment); } -<Comment>{CMD}[a-z_A-Z]+{B}* { // potentially interesting command - QCString cmdName = QCString(&yytext[1]).stripWhiteSpace(); +<Comment>{B}*{CMD}[a-z_A-Z]+{B}* { // potentially interesting command + // the {B}* in the front was added for bug620924 + QCString cmdName = QCString(yytext).stripWhiteSpace().data()+1; DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName); if (cmdPtr) // special action is required { @@ -970,20 +972,20 @@ RCSTAG "$"{ID}":"[^\n$]+"$" addOutput(yytext); } } -<Comment>("\\\\"|"@@")"f"[$\[{] { // escaped formula command +<Comment>{B}*("\\\\"|"@@")"f"[$\[{] { // escaped formula command addOutput(yytext); } -<Comment>{CMD}"~"[a-z_A-Z]* { // language switch command - QCString langId = &yytext[2]; +<Comment>{B}*{CMD}"~"[a-z_A-Z]* { // language switch command + QCString langId = QString(yytext).stripWhiteSpace().data()+2; if (!langId.isEmpty() && stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0) { // enable language specific section BEGIN(SkipLang); } } -<Comment>{CMD}"f{"[^}\n]+"}"("{"?) { // start of a formula with custom environment +<Comment>{B}*{CMD}"f{"[^}\n]+"}"("{"?) { // start of a formula with custom environment formulaText="\\begin"; - formulaEnv=&yytext[2]; + formulaEnv=QString(yytext).stripWhiteSpace().data()+2; if (formulaEnv.at(formulaEnv.length()-1)=='{') { // remove trailing open brace @@ -993,26 +995,34 @@ RCSTAG "$"{ID}":"[^\n$]+"$" formulaNewLines=0; BEGIN(ReadFormulaLong); } -<Comment>{CMD}"f$" { // start of a inline formula +<Comment>{B}*{CMD}"f$" { // start of a inline formula formulaText="$"; formulaNewLines=0; BEGIN(ReadFormulaShort); } -<Comment>{CMD}"f[" { // start of a block formula +<Comment>{B}*{CMD}"f[" { // start of a block formula formulaText="\\["; formulaNewLines=0; BEGIN(ReadFormulaLong); } -<Comment>{CMD}"{" { // begin of a group +<Comment>{B}*{CMD}"{" { // begin of a group //langParser->handleGroupStartCommand(g_memberGroupHeader); openGroup(current,yyFileName,yyLineNr); } -<Comment>{CMD}"}" { // end of a group +<Comment>{B}*{CMD}"}" { // end of a group //langParser->handleGroupEndCommand(); - closeGroup(current,yyFileName,yyLineNr); + closeGroup(current,yyFileName,yyLineNr,TRUE); g_memberGroupHeader.resize(0); + parseMore=TRUE; + needNewEntry = TRUE; +#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33 + inputPosition=prevPosition + yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + strlen(yytext); +#else + inputPosition=prevPosition + yy_bp - yy_current_buffer->yy_ch_buf + strlen(yytext); +#endif + yyterminate(); } -<Comment>{CMD}[$@\\&~<>#%] { // escaped character +<Comment>{B}*{CMD}[$@\\&~<>#%] { // escaped character addOutput(yytext); } <Comment>[a-z_A-Z]+ { // normal word @@ -1605,7 +1615,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" { guards.push(new GuardedSection(TRUE,TRUE)); enabledSectionFound=TRUE; - BEGIN( Comment ); + BEGIN( GuardParamEnd ); } else // section is invisible { @@ -1624,7 +1634,8 @@ RCSTAG "$"{ID}":"[^\n$]+"$" } <GuardParam>{DOCNL} { // end of argument if (*yytext=='\n') yyLineNr++; - addOutput('\n'); + //next line is commented out due to bug620924 + //addOutput('\n'); BEGIN( Comment ); } <GuardParam>{LC} { // line continuation @@ -1634,6 +1645,16 @@ RCSTAG "$"{ID}":"[^\n$]+"$" <GuardParam>. { // ignore other stuff addOutput(*yytext); } +<GuardParamEnd>{B}*{DOCNL} { + BEGIN(Comment); + } +<GuardParamEnd>{B}* { + BEGIN(Comment); + } +<GuardParamEnd>. { + unput(*yytext); + BEGIN(Comment); + } /* ----- handle skipping of conditional sections ------- */ @@ -1654,7 +1675,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" else { delete guards.pop(); - BEGIN( Comment ); + BEGIN( GuardParamEnd ); } } <SkipGuardedSection>{CMD}"else"/{NW} { @@ -1670,7 +1691,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" delete guards.pop(); guards.push(new GuardedSection(TRUE,TRUE)); enabledSectionFound=TRUE; - BEGIN( Comment ); + BEGIN( GuardParamEnd ); } } } @@ -1691,7 +1712,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" } <SkipGuardedSection>{DOCNL} { // skip line if (*yytext=='\n') yyLineNr++; - addOutput('\n'); + //addOutput('\n'); } <SkipGuardedSection>[^ \\@\n]+ { // skip non-special characters } @@ -2114,7 +2135,7 @@ static bool handleName(const QCString &) BEGIN( NameParam ); if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group { - closeGroup(current,yyFileName,yyLineNr); + closeGroup(current,yyFileName,yyLineNr,TRUE); } } return stop; @@ -2293,6 +2314,7 @@ static bool handleEndIf(const QCString &) delete guards.pop(); } enabledSectionFound=FALSE; + BEGIN( GuardParamEnd ); return FALSE; } @@ -2646,7 +2668,7 @@ void openGroup(Entry *e,const char *,int) } } -void closeGroup(Entry *e,const char *fileName,int) +void closeGroup(Entry *e,const char *fileName,int,bool foundInline) { //printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n", // e->name.data(),e->section,g_autoGroupStack.count()); @@ -2667,17 +2689,18 @@ void closeGroup(Entry *e,const char *fileName,int) else if (!g_autoGroupStack.isEmpty()) // end of auto group { Grouping *grp = g_autoGroupStack.pop(); - e->groups->removeLast(); - //printf("Removing %s\n",grp->groupname.data()); + // see bug577005: we should not remove the last group for e + if (!foundInline) e->groups->removeLast(); + //printf("Removing %s e=%p\n",grp->groupname.data(),e); delete grp; - initGroupInfo(e); + if (!foundInline) initGroupInfo(e); } } void initGroupInfo(Entry *e) { - //printf("==> initGroup(id=%d,related=%s)\n",g_memberGroupId, - // g_memberGroupRelates.data()); + //printf("==> initGroup(id=%d,related=%s,e=%p)\n",g_memberGroupId, + // g_memberGroupRelates.data(),e); e->mGrpId = g_memberGroupId; e->relates = g_memberGroupRelates; if (!g_autoGroupStack.isEmpty()) diff --git a/src/config.l b/src/config.l index da34aeb..5f1ba37 100644 --- a/src/config.l +++ b/src/config.l @@ -496,7 +496,7 @@ static FILE *tryPath(const char *path,const char *fileName) QFileInfo fi(absName); if (fi.exists() && fi.isFile()) { - FILE *f=fopen(absName,"r"); + FILE *f=portable_fopen(absName,"r"); if (!f) config_err("Error: could not open file %s for reading\n",absName.data()); return f; } diff --git a/src/config.xml b/src/config.xml index f78a620..b58e33b 100644 --- a/src/config.xml +++ b/src/config.xml @@ -226,8 +226,8 @@ 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, C#, C, C++, -D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +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. diff --git a/src/configoptions.cpp b/src/configoptions.cpp index 08be034..abbc7c8 100644 --- a/src/configoptions.cpp +++ b/src/configoptions.cpp @@ -316,8 +316,8 @@ void addConfigOptions(Config *cfg) "parses. With this tag you can assign which parser to use for a given extension.\n" "Doxygen has a built-in mapping, but you can override or extend it using this\n" "tag. The format is ext=language, where ext is a file extension, and language\n" - "is one of the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++,\n" - "D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make\n" + "is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,\n" + "C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make\n" "doxygen treat .inc files as Fortran files (default is PHP), and .f files as C\n" "(default is Fortran), use: inc=Fortran f=C. Note that for custom extensions\n" "you also need to set FILE_PATTERNS otherwise the files are not read by doxygen." diff --git a/src/definition.cpp b/src/definition.cpp index 7db9417..4abf509 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -532,7 +532,7 @@ static bool readCodeFragment(const char *fileName, bool usePipe = !filter.isEmpty() && filterSourceFiles; if (!usePipe) // no filter given or wanted { - f = fopen(fileName,"r"); + f = portable_fopen(fileName,"r"); } else // use filter { diff --git a/src/docparser.cpp b/src/docparser.cpp index 8a8d0ad..e552365 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1087,7 +1087,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) } else // normal non-linkable word { - if (g_token->name.at(0)=='#') + if (g_token->name.at(0)=='#' || g_token->name.left(2)=="::") { warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: explicit link request to '%s' could not be resolved",name.data()); } @@ -4983,7 +4983,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs); break; case HTML_CODE: - if (g_fileName.right(3)==".cs") + if (getLanguageFromFileName(g_fileName)==SrcLangExt_CSharp) // for C# code we treat <code> as an XML tag { doctokenizerYYsetStateXmlCode(); diff --git a/src/dot.cpp b/src/dot.cpp index 565aa68..4847d08 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -795,9 +795,12 @@ int DotManager::addFigure(const QCString &file,const QCString &baseName, bool DotManager::run() { - msg("Generating dot graphs using %d parallel threads...\n",m_workers.count()); uint numDotRuns = m_dotRuns.count(); uint numDotMaps = m_dotMaps.count(); + if (numDotRuns+numDotMaps>0) + { + msg("Generating dot graphs using %d parallel threads...\n",m_workers.count()); + } int i=1; QListIterator<DotRunner> li(m_dotRuns); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 6a288ad..6b3720e 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -10537,7 +10537,10 @@ void generateOutput() } } - DotManager::instance()->run(); + if (Config_getBool("HAVE_DOT")) + { + DotManager::instance()->run(); + } if (Debug::isFlagSet(Debug::Time)) { diff --git a/src/filedef.cpp b/src/filedef.cpp index 7593834..d963688 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -92,8 +92,9 @@ FileDef::FileDef(const char *p,const char *nm, { docname.prepend(stripFromPath(path.copy())); } - m_isJava = name().right(5)==".java"; - m_isCSharp = name().right(5)==".cs"; + SrcLangExt lang = getLanguageFromFileName(name()); + m_isJava = lang==SrcLangExt_Java; + m_isCSharp = lang==SrcLangExt_CSharp; memberGroupSDict = 0; acquireFileVersion(); m_subGrouping=Config_getBool("SUBGROUPING"); @@ -263,10 +264,8 @@ void FileDef::writeIncludeFiles(OutputList &ol) bool isIDLorJava = FALSE; if (fd) { - isIDLorJava = fd->name().right(4)==".idl" || // M$ or Corba IDL - fd->name().right(5)==".pidl" || - fd->name().right(5)==".java" || // Sun's Java - fd->name().right(4)==".jsl"; // M$ J# + SrcLangExt lang = getLanguageFromFileName(fd->name()); + isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java; } ol.startTypewriter(); if (isIDLorJava) // IDL/Java include diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 790a59e..ae89918 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -1506,7 +1506,6 @@ void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file, const QCString &relPath,const QCString &anchor, const QCString &tooltip) { - QCString *dest; if (!ref.isEmpty()) // link to entity imported via tag file { m_t << "<a class=\"elRef\" "; diff --git a/src/index.cpp b/src/index.cpp index 8899d43..0add07b 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1237,7 +1237,7 @@ void writeAlphabeticalClassList(OutputList &ol) { int index = getPrefixIndex(cd->className()); //printf("name=%s index=%d\n",cd->className().data(),index); - startLetter=toupper(cd->className().at(index)); + startLetter=toupper(cd->className().at(index))&0xFF; indexLetterUsed[startLetter] = true; } } @@ -2649,10 +2649,11 @@ void writeJavascriptSearchIndex() { t << "#" << ((MemberDef *)d)->anchor(); } + t << "\""; static bool extLinksInWindow = Config_getBool("EXT_LINKS_IN_WINDOW"); if (!extLinksInWindow || d->getReference().isEmpty()) { - t << "\" target=\""; + t << " target=\""; if (treeView) t << "basefrm"; else t << "_parent"; t << "\""; } @@ -2729,10 +2730,11 @@ void writeJavascriptSearchIndex() { t << "#" << ((MemberDef *)d)->anchor(); } + t << "\""; static bool extLinksInWindow = Config_getBool("EXT_LINKS_IN_WINDOW"); if (!extLinksInWindow || d->getReference().isEmpty()) { - t << "\" target=\""; + t << " target=\""; if (treeView) t << "basefrm"; else t << "_parent"; t << "\""; } diff --git a/src/language.cpp b/src/language.cpp index b0ab2d5..db116e3 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -319,7 +319,7 @@ bool setTranslator(const char *langName) #ifdef LANG_SK else if (L_EQUAL("slovak")) { - theTranslator=new TranslatorDecoder(new TranslatorSlovak); + theTranslator=new TranslatorSlovak; } #endif #ifdef LANG_UA @@ -373,7 +373,7 @@ bool setTranslator(const char *langName) #ifdef LANG_FA else if (L_EQUAL("persian") || L_EQUAL("farsi")) { - theTranslator=new TranslatorDecoder(new TranslatorPersian); + theTranslator=new TranslatorPersian; } #endif #ifdef LANG_MK diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 8e9c1bf..4c39d45 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -1137,20 +1137,20 @@ void LatexDocVisitor::visitPre(DocParamList *pl) m_t << "\\item["; if (pl->direction()!=DocParamSect::Unspecified) { - m_t << "\\mbox{"; + m_t << "\\mbox{\\tt["; if (pl->direction()==DocParamSect::In) { - m_t << "$\\leftarrow$"; + m_t << "in"; } else if (pl->direction()==DocParamSect::Out) { - m_t << "$\\rightarrow$"; + m_t << "out"; } else if (pl->direction()==DocParamSect::InOut) { - m_t << "$\\leftrightarrow$"; + m_t << "in,out"; } - m_t << "} "; + m_t << "]} "; } m_t << "{\\em "; //QStrListIterator li(pl->parameters()); diff --git a/src/lodepng.cpp b/src/lodepng.cpp index 494e357..8da4293 100644 --- a/src/lodepng.cpp +++ b/src/lodepng.cpp @@ -29,6 +29,7 @@ You are free to name this file lodepng.cpp or lodepng.c depending on your usage. */ #include "lodepng.h" +#include "portable.h" #define VERSION_STRING "20080927" @@ -4061,7 +4062,7 @@ unsigned LodePNG_loadFile(unsigned char** out, size_t* outsize, const char* file *out = 0; *outsize = 0; - file = fopen(filename, "rb"); + file = portable_fopen(filename, "rb"); if(!file) return 78; /*get filesize:*/ @@ -4083,7 +4084,7 @@ unsigned LodePNG_loadFile(unsigned char** out, size_t* outsize, const char* file unsigned LodePNG_saveFile(const unsigned char* buffer, size_t buffersize, const char* filename) { FILE* file; - file = fopen(filename, "wb" ); + file = portable_fopen(filename, "wb" ); if(!file) return 79; fwrite((char*)buffer , 1 , buffersize, file); fclose(file); diff --git a/src/message.cpp b/src/message.cpp index 8669650..cc9925a 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -22,6 +22,7 @@ #include "util.h" #include "debug.h" #include "doxygen.h" +#include "portable.h" static QCString outputFormat; //static int warnFormatOrder; // 1 = $file,$line,$text @@ -88,7 +89,7 @@ void initWarningFormat() if (!Config_getString("WARN_LOGFILE").isEmpty()) { - warnFile = fopen(Config_getString("WARN_LOGFILE"),"w"); + warnFile = portable_fopen(Config_getString("WARN_LOGFILE"),"w"); } if (!warnFile) // point it to something valid, because warn() relies on it { diff --git a/src/pagedef.h b/src/pagedef.h index e1afe99..40649ef 100644 --- a/src/pagedef.h +++ b/src/pagedef.h @@ -29,7 +29,7 @@ class PageDef : public Definition DefType definitionType() const { return TypePage; } bool isLinkableInProject() const { - return hasDocumentation() && !isReference(); + return /*hasDocumentation() &&*/ !isReference(); } bool isLinkable() const { diff --git a/src/portable.cpp b/src/portable.cpp index eee8239..ff9b803 100644 --- a/src/portable.cpp +++ b/src/portable.cpp @@ -310,6 +310,17 @@ portable_off_t portable_ftell(FILE *f) #endif } +FILE *portable_fopen(const char *fileName,const char *mode) +{ +#if defined(_WIN32) && !defined(__CYGWIN__) + QString fn(fileName); + QString m(mode); + return _wfopen((wchar_t*)fn.ucs2(),(wchar_t*)m.ucs2()); +#else + return fopen(fileName,mode); +#endif +} + char portable_pathSeparator() { #if defined(_WIN32) && !defined(__CYGWIN__) diff --git a/src/portable.h b/src/portable.h index cbd8df0..f698e32 100644 --- a/src/portable.h +++ b/src/portable.h @@ -3,6 +3,7 @@ #include <sys/types.h> #include <stdio.h> +#include <qglobal.h> #if defined(_WIN32) typedef __int64 portable_off_t; @@ -21,6 +22,7 @@ void portable_setenv(const char *variable,const char *value); void portable_unsetenv(const char *variable); portable_off_t portable_fseek(FILE *f,portable_off_t offset, int whence); portable_off_t portable_ftell(FILE *f); +FILE * portable_fopen(const char *fileName,const char *mode); char portable_pathSeparator(); char portable_pathListSeparator(); const char * portable_ghostScriptCommand(); @@ -131,7 +131,7 @@ static void setFileName(const char *name) //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n", // name,g_yyFileName.data(),g_yyFileDef); if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0; - g_insideCS = g_yyFileName.right(3)==".cs"; + g_insideCS = getLanguageFromFileName(g_yyFileName)==SrcLangExt_CSharp; } static void incrLevel() @@ -1365,6 +1365,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) %x Command %x SkipCommand %x SkipLine +%x SkipString %x CopyLine %x CopyString %x Include @@ -1822,13 +1823,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipLine); } <SkipCommand>. -<SkipLine>[^/\n]+ +<SkipLine>[^'"/\n]+ +<SkipLine>{CHARLIT} { } +<SkipLine>\" { + BEGIN(SkipString); + } <SkipLine>. -<SkipLine,SkipCommand,SkipCPPBlock>"//"[^\n]* { +<SkipLine,SkipCommand,SkipCPPBlock,SkipString>"//"[^\n]* { g_lastCPPContext=YY_START; BEGIN(RemoveCPPComment); } -<SkipLine,SkipCommand,SkipCPPBlock>"/*"/[^\n]* { +<SkipLine,SkipCommand,SkipCPPBlock,SkipString>"/*"/[^\n]* { g_lastCContext=YY_START; BEGIN(RemoveCComment); } @@ -1837,6 +1842,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) g_yyLineNr++; BEGIN(SkipCPPBlock); } +<SkipString>[^"\\\n]+ { } +<SkipString>\\. { } +<SkipString>\" { + BEGIN(SkipLine); + } +<SkipString>. { } <IncludeID>{ID}{B}*/"(" { g_nospaces=TRUE; g_roundCount=0; @@ -2104,6 +2115,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) g_defLitText+=yytext; g_defText+=' '; } +<RemoveCComment>"*/"{B}*"#" { // see bug 594021 for a usecase for this rule + if (g_lastCContext==SkipCPPBlock) + { + BEGIN(SkipCommand); + } + else + { + REJECT; + } + } <RemoveCComment>"*/" { BEGIN(g_lastCContext); } <RemoveCComment>"//" <RemoveCComment>"/*" diff --git a/src/store.cpp b/src/store.cpp index 669fb9c..55f3026 100644 --- a/src/store.cpp +++ b/src/store.cpp @@ -68,7 +68,7 @@ int Store::open(const char *name) int i; STORE_ASSERT(m_state==Init); if (m_file) return 0; // already open - m_file = fopen(name,"w+b"); + m_file = portable_fopen(name,"w+b"); if (m_file==0) return -1; // first block serves as header, so offset=0 can be used as the end of the list. diff --git a/src/translator_adapter.h b/src/translator_adapter.h index 74819bd..3c99783 100644 --- a/src/translator_adapter.h +++ b/src/translator_adapter.h @@ -230,47 +230,5 @@ class TranslatorAdapter_1_3_3 : public TranslatorAdapter_1_3_8 }; -class TranslatorAdapter_1_3_1 : public TranslatorAdapter_1_3_3 -{ - public: - virtual QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"release 1.3.1"); } - virtual QCString trAll() - { return english.trAll(); } - virtual QCString trCallGraph() - { return english.trCallGraph(); } -}; - -class TranslatorAdapter_1_3 : public TranslatorAdapter_1_3_1 -{ - public: - virtual QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"release 1.3"); } - - virtual QCString trPackageTypes() - { return english.trPackageTypes(); } - virtual QCString trPackageMembers() - { return english.trPackageMembers(); } - virtual QCString trStaticPackageMembers() - { return english.trStaticPackageMembers(); } - virtual QCString trPackageAttribs() - { return english.trPackageAttribs(); } - virtual QCString trStaticPackageAttribs() - { return english.trStaticPackageAttribs(); } -}; - -class TranslatorAdapter_1_2_18 : public TranslatorAdapter_1_3 -{ - public: - virtual QCString updateNeededMessage() - { return createUpdateNeededMessage(idLanguage(),"release 1.2.18"); } - - virtual QCString trEvents() - { return english.trEvents(); } - virtual QCString trEventDocumentation() - { return english.trEventDocumentation(); } -}; - - #endif diff --git a/src/translator_fa.h b/src/translator_fa.h index fc90abe..5cdb725 100644 --- a/src/translator_fa.h +++ b/src/translator_fa.h @@ -14,14 +14,21 @@ * input used in their production; they are not affected by this license. * * - * Description : Doxygen Persian Translator - * Author : Ali Nadalizadeh < nadalizadeh @ gmail dot com > + * Description : Doxygen Persian (Farsi) Translator + * Author : Ali Nadalizadeh < nadalizadeh at gmail dot com > + * * ChangeLog : * Thu 06 Jul 2006 11:54:09 PM IRDT <nadalizadeh at gmail dot com> * >> First version of persian language support has been completed. - * Mon Feb 4 11:52:09 IRST 2008 <nadalizadeh at gmail dot com> + * + * Mon 04 Feb 2008 11:52:09 AM IRDT <nadalizadeh at gmail dot com> * >> Obsolete methods removed. Translated more string(s) to persian. Upgraded to 1_5_4 adapter. + * + * Fri 04 Jun 2010 04:05:24 PM IRDT <nadalizadeh at gmail dot com> + * >> Implement missing new methods since 1.6.0. + * >> Add English to Persian digit convertor. (for date/time digits) * + * Translation feedbacks are really appreciated. */ #ifndef TRANSLATOR_FA_H @@ -32,8 +39,26 @@ #define HtmlDivEnd QCString("</div>") -class TranslatorPersian : public TranslatorAdapter_1_6_0 +class TranslatorPersian : public Translator { + private: + /** Converts english digits of an input string to persian equivalents. + */ + QCString convertDigitsToFarsi(QCString str) + { + QCString output; + const char * PersianDigits[] = { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; + for(unsigned i=0; i<str.length(); i++) + { + if (str[i] >= '0' && str[i] <= '9') + output += PersianDigits[ str[i] - '0' ]; + else + output += str[i]; + } + + return output; + } + public: // --- Language control methods ------------------- @@ -88,11 +113,11 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return "های عضو Typedef مستندات"; } + { return "مستندات تعریف گونه ها"; } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return "Member Enumeration Documentation"; } + { return "های عضو Enumeration مستندات"; } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() @@ -204,7 +229,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 } else { - return "اعضاء فايل"; + return "اعضاء پرونده"; } } @@ -310,7 +335,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! This is used in HTML as the title of index.html. */ virtual QCString trDocumentation() - { return "مستند سازی"; } + { return "مستندات"; } /*! This is used in LaTeX as the title of the chapter with the * index of all groups. @@ -404,7 +429,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 * list of typedefs */ virtual QCString trTypedefs() - { return "Typedefs"; } + { return "تعریف گونه ها"; } /*! This is used in the documentation of a file as a header before the * list of enumerations @@ -446,7 +471,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return "Typedef Documentation"; } + { return "Typedef"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types @@ -819,12 +844,12 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) { - return (QCString)"Include dependency graph for "+fName+":"; + return (QCString)"نمودار شامل شدن ها برای "+fName+":"; } /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() { - return "Constructor و Destructor مستندات"; + return "مستندات توباع آغازین و پایانی"; } /*! Used in the file documentation to point to the corresponding sources. */ virtual QCString trGotoSourceCode() @@ -867,11 +892,11 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 } virtual QCString trGotoGraphicalHierarchy() { - return "Go to the graphical class hierarchy"; + return "نمایش نمودار درختی گرافیکی کلاس"; } virtual QCString trGotoTextualHierarchy() { - return "Go to the textual class hierarchy"; + return "نمایش نمودار درختی متنی کلاس"; } virtual QCString trPageIndex() { @@ -955,7 +980,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 } virtual QCString trRemarks() { - return "Remarks"; + return "ملاحظات"; } virtual QCString trAttention() { @@ -1057,7 +1082,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! Used as a marker that is put before a test item */ virtual QCString trTest() { - return "Test"; + return "تست"; } /*! Used as the header of the test list */ virtual QCString trTestList() @@ -1119,7 +1144,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return "Here are the packages with brief descriptions (if available):"; + return "لیست بسته ها به همراه توضیح مختر در صورت وجود :"; } /*! The link name in the Quick links header for each page */ virtual QCString trPackages() @@ -1129,7 +1154,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { - return "Value:"; + return "مقدار:"; } ////////////////////////////////////////////////////////////////////////// @@ -1350,12 +1375,12 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 */ virtual QCString trEvents() { - return "Events"; + return "رویداد ها"; } /*! Header used for the documentation section of a class' events. */ virtual QCString trEventDocumentation() { - return "Event Documentation"; + return "مستندات رویداد"; } ////////////////////////////////////////////////////////////////////////// @@ -1449,7 +1474,7 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 } else if (numDocuments==1) { - return "Found <b>1</b> document matching your query."; + return "یک سند برای این مورد یافت شد."; } else { @@ -1714,6 +1739,96 @@ class TranslatorPersian : public TranslatorAdapter_1_6_0 { return "Type Constraints"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return QCString(name) + " Relation"; + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "در حال بارگذاری..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "فضای نام جهانی"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "در حال جستجو..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "یافت نشد"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.6.3 (missing items for the directory pages) +////////////////////////////////////////////////////////////////////////// + + /*! introduction text for the directory dependency graph */ + virtual QCString trDirDependency(const char *name) + { + return (QCString)"نمودار وابستگی دایرکتوری ها برای "+name; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the first column mentions the + * source file that has a relation to another file. + */ + virtual QCString trFileIn(const char *name) + { + return (QCString)"پرونده ای در "+name; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the second column mentions the + * destination file that is included. + */ + virtual QCString trIncludesFileIn(const char *name) + { + return (QCString)"Includes file in "+name; + } + + /** 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 + * @param dayOfWeek Day of the week: 1=Monday..7=Sunday + * @param hour Hour of the day: 0..23 + * @param minutes Minutes in the hour: 0..59 + * @param seconds Seconds within the minute: 0..59 + * @param includeTime Include time in the result string? + */ + virtual QCString trDateTime(int year,int month,int day,int dayOfWeek, + int hour,int minutes,int seconds, + bool includeTime) + { + static const char *days[] = { "دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه" }; + static const char *months[] = { "ژانویه","فوریه","مارس","آوریل","می","جون","جولای","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر" }; + QCString sdate; + sdate.sprintf("%s %d %s %d",days[dayOfWeek-1],day,months[month-1],year); + if (includeTime) + { + QCString stime; + stime.sprintf(" %.2d:%.2d:%.2d",hour,minutes,seconds); + sdate+=stime; + } + return convertDigitsToFarsi(sdate); + } + }; #endif diff --git a/src/translator_sk.h b/src/translator_sk.h index 4493dfe..afcc0f2 100644 --- a/src/translator_sk.h +++ b/src/translator_sk.h @@ -13,1386 +13,1824 @@ * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * - * ---------------------------------------------------------------------------- - * - * Slovak translation by Stanislav Kudlac (skudlac@pobox.sk) - * - * ---------------------------------------------------------------------------- - */ + * ----------------------------------------------------------------------------*/ + +// Updates: +// -------- +// 2010/06/04 - big leap from 1.2.18 to 1.6.3+ +// +// Slovak translation started by Stanislav Kudlac (skudlac at pobox dot sk). +// He resigned in March 2008 (thanks for the work). Until a "native Slovak" +// maintainer is found, the TranslatorSlovak is maintained by Petr Prikryl with +// Slovak speaking Kali and Laco Švec. +// ---------------------------------------------------------------------------- #ifndef TRANSLATOR_SK_H #define TRANSLATOR_SK_H -class TranslatorSlovak : public TranslatorAdapter_1_2_18 +class TranslatorSlovak : public Translator { - private: - /*! The Decode() inline assumes the source written in the - Windows encoding (maintainer only dependent). - */ - inline QCString Decode(const QCString & sInput) - { -//#ifdef _WIN32 - return sInput; -//#else -// return Win1250ToISO88592(sInput); -//#endif - } - public: - // --- Language control methods ------------------- - - virtual QCString idLanguage() - { return "slovak"; } - - virtual QCString latexLanguageSupportCommand() - { return "\\usepackage[slovak]{babel}\n"; } - - /*! return the language charset. This will be used for the HTML output */ - virtual QCString idLanguageCharset() - { -//#ifdef _WIN32 - return "windows-1250"; -//#else -// return "iso-8859-2"; -//#endif - } - - // --- Language translation methods ------------------- - - /*! used in the compound documentation before a list of related functions. */ - virtual QCString trRelatedFunctions() - { return Decode("Svisiace funkcie"); } - - /*! subscript for the related functions. */ - virtual QCString trRelatedSubscript() - { return Decode("(Uveden funkcie nies lenskmi funkciami.)"); } - - /*! header that is put before the detailed description of files, classes and namespaces. */ - virtual QCString trDetailedDescription() - { return Decode("Detailn popis"); } - - /*! header that is put before the list of typedefs. */ - virtual QCString trMemberTypedefDocumentation() - { return Decode("Dokumentcia k lenskm typom"); } - - /*! header that is put before the list of enumerations. */ - virtual QCString trMemberEnumerationDocumentation() - { return Decode("Dokumentcia k lenskm enumercim"); } - - /*! header that is put before the list of member functions. */ - virtual QCString trMemberFunctionDocumentation() - { return Decode("Dokumentcia k metdam"); } - - /*! header that is put before the list of member attributes. */ - virtual QCString trMemberDataDocumentation() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Dokumentcia k polokm"); - } - else - { - return Decode("Dokumentcia k dtovm lenom"); - } - } - - /*! this is the text of a link put after brief descriptions. */ - virtual QCString trMore() - { return Decode("..."); } - - /*! put in the class documentation */ - virtual QCString trListOfAllMembers() - { return Decode("Zoznam vetkch lenov."); } - - /*! used as the title of the "list of all members" page of a class */ - virtual QCString trMemberList() - { return Decode("Zoznam lenov triedy"); } - - /*! this is the first part of a sentence that is followed by a class name */ - virtual QCString trThisIsTheListOfAllMembers() - { return Decode("Tu njdete pln zoznam lenov triedy "); } - - /*! this is the remainder of the sentence after the class name */ - virtual QCString trIncludingInheritedMembers() - { return Decode(", vrtane vetkch zdedench lenov."); } - - /*! this is put at the author sections at the bottom of man pages. - * parameter s is name of the project name. - */ - virtual QCString trGeneratedAutomatically(const char *s) - { QCString result="Generovan automaticky programom Doxygen " - "zo zdrojovch textov"; - if (s) result+=(QCString)" projektu "+s; - result+="."; - return Decode(result); - } - - /*! put after an enum name in the list of all members */ - virtual QCString trEnumName() - { return Decode("meno enumercie"); } - - /*! put after an enum value in the list of all members */ - virtual QCString trEnumValue() - { return Decode("hodnota enumercie"); } - - /*! put after an undocumented member in the list of all members */ - virtual QCString trDefinedIn() - { return Decode("definovan v"); } - - // quick reference sections - - /*! This is put above each page as a link to the list of all groups of - * compounds or files (see the \\group command). - */ - virtual QCString trModules() - { return Decode("Moduly"); } - - /*! This is put above each page as a link to the class hierarchy */ - virtual QCString trClassHierarchy() - { return Decode("Hierarchia tried"); } - - /*! This is put above each page as a link to the list of annotated classes */ - virtual QCString trCompoundList() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Dtov truktry"); - } - else - { - return Decode("Zoznam tried"); - } - } - - /*! This is put above each page as a link to the list of documented files */ - virtual QCString trFileList() - { return Decode("Zoznam sborov"); } - - /*! This is put above each page as a link to the list of all verbatim headers */ - virtual QCString trHeaderFiles() - { return Decode("Zoznam hlavikovch sborov"); } - - /*! This is put above each page as a link to all members of compounds. */ - virtual QCString trCompoundMembers() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Dtov poloky"); - } - else - { - return Decode("Zoznam lenov tried"); - } - } - - /*! This is put above each page as a link to all members of files. */ - virtual QCString trFileMembers() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Globlne symboly"); - } - else - { - return Decode("Symboly v sboroch"); - } - } - - /*! This is put above each page as a link to all related pages. */ - virtual QCString trRelatedPages() - { return Decode("Ostatn strnky"); } - - /*! This is put above each page as a link to all examples. */ - virtual QCString trExamples() - { return Decode("Prklady"); } - - /*! This is put above each page as a link to the search engine. */ - virtual QCString trSearch() - { return Decode("Hada"); } - - /*! This is an introduction to the class hierarchy. */ - virtual QCString trClassHierarchyDescription() - { return Decode("Tu njdete zoznam, vyjadrujci vzah dedinosti tried. " - "Je zoraden pribline (ale nie plne) poda abecedy:"); - } - - /*! This is an introduction to the list with all files. */ - virtual QCString trFileListDescription(bool extractAll) - { - QCString result="Tu njdete zoznam vetkch "; - if (!extractAll) result+="dokumentovanch "; - result+="sborov so strunmi popismi:"; - return Decode(result); - } - - /*! This is an introduction to the annotated compound list. */ - virtual QCString trCompoundListDescription() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Nasledujci zoznam obsahuje identifikciu dtovch " - "truktr a ich strun popisy:"); - } - else - { - return Decode("Nasledujci zoznam obsahuje predovetkm identifikciu " - "tried, ale nachdzaj sa tu i alie netrivilne prvky, " - "ako s truktry (struct), uniony (union) a rozhrania " - "(interface). V zozname s uveden ich strun " - "popisy:"); - } - } - - /*! This is an introduction to the page with all class members. */ - virtual QCString trCompoundMembersDescription(bool extractAll) - { - QCString result= "Tu njdete zoznam vetkch "; - if (!extractAll) - { - result += "dokumentovanch "; - } - - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - result += "poloiek truktr (struct) a unionov (union) "; - } - else - { - result += "lenov tried "; - } - - result += "s odkazmi na "; - - if (!extractAll) - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - result += "dokumentciu truktr/unionov, ku ktorm prislchaj:"; - } - else - { - result += "dokumentciu tried, ku ktorm prislchaj:"; - } - } - else - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - result+="truktry/uniony, ku ktorm prislchaj:"; - } - else - { - result+="triedy, ku ktorm prislchaj:"; - } - } - - return Decode(result); - } - - /*! This is an introduction to the page with all file members. */ - virtual QCString trFileMembersDescription(bool extractAll) - { - QCString result="Tu njdete zoznam vetkch "; - if (!extractAll) result+="dokumentovanch "; - - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - result+="funkci, premennch, makier, enumerci a definci typov (typedef) " - "s odkazmi na "; - } - else - { - result+="symbolov, ktor s definovan na rovni svojich sborov. " - "Pre kad symbol je uveden odkaz na "; - } - - if (extractAll) - result+="sbory, ku ktorm prislchaj:"; - else - result+="dokumentciu:"; - - return Decode(result); - } - - /*! This is an introduction to the page with the list of all header files. */ - virtual QCString trHeaderFilesDescription() - { return Decode("Tu njdete hlavikov sbory, ktor tvoria " - "aplikan programov rozhranie (API):"); } - - /*! This is an introduction to the page with the list of all examples */ - virtual QCString trExamplesDescription() - { return Decode("Tu njdete zoznam vetkch prkladov:"); } - - /*! This is an introduction to the page with the list of related pages */ - virtual QCString trRelatedPagesDescription() - { return Decode("Nasledujci zoznam odkazuje na alie strnky projektu, " - "ktor maj charakter usporiadanch zoznamov informci, " - "pozbieranch z rznych miest v zdrojovch sboroch:"); } - - /*! This is an introduction to the page with the list of class/file groups */ - virtual QCString trModulesDescription() - { return Decode("Tu njdete zoznam vetkch modulov:"); } - - /*! This sentences is used in the annotated class/file lists if no brief - * description is given. - */ - virtual QCString trNoDescriptionAvailable() - { return Decode("Popis nieje k dispozcii"); } - - // index titles (the project name is prepended for these) - - - /*! This is used in HTML as the title of index.html. */ - virtual QCString trDocumentation() - { return Decode("Dokumentcia"); } - - /*! This is used in LaTeX as the title of the chapter with the - * index of all groups. - */ - virtual QCString trModuleIndex() - { return Decode("Register modulov"); } - - /*! This is used in LaTeX as the title of the chapter with the - * class hierarchy. - */ - virtual QCString trHierarchicalIndex() - { return Decode("Register hierarchie tried"); } - - /*! This is used in LaTeX as the title of the chapter with the - * annotated compound index. - */ - virtual QCString trCompoundIndex() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Register dtovch truktr"); - } - else - { - return Decode("Register tried"); - } - } - - /*! This is used in LaTeX as the title of the chapter with the - * list of all files. - */ - virtual QCString trFileIndex() - { return Decode("Register sborov"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all groups. - */ - virtual QCString trModuleDocumentation() - { return Decode("Dokumentcia modulov"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all classes, structs and unions. - */ - virtual QCString trClassDocumentation() - { return Decode("Dokumentcia tried"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all files. - */ - virtual QCString trFileDocumentation() - { return Decode("Dokumentcia sborov"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all examples. - */ - virtual QCString trExampleDocumentation() - { return Decode("Dokumentcia prkladov"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all related pages. - */ - virtual QCString trPageDocumentation() - { return Decode("Dokumentcia svisiacich strnok"); } - - /*! This is used in LaTeX as the title of the document */ - virtual QCString trReferenceManual() - { return Decode("Referenn prruka"); } - - /*! This is used in the documentation of a file as a header before the - * list of defines - */ - virtual QCString trDefines() - { return Decode("Defincia makier"); } - - /*! This is used in the documentation of a file as a header before the - * list of function prototypes - */ - virtual QCString trFuncProtos() - { return Decode("Prototypy"); } - - /*! This is used in the documentation of a file as a header before the - * list of typedefs - */ - virtual QCString trTypedefs() - { return Decode("Defincia typov"); } - - /*! This is used in the documentation of a file as a header before the - * list of enumerations - */ - virtual QCString trEnumerations() - { return Decode("Enumercie"); } - - /*! This is used in the documentation of a file as a header before the - * list of (global) functions - */ - virtual QCString trFunctions() - { return Decode("Funkcie"); } - - /*! This is used in the documentation of a file as a header before the - * list of (global) variables - */ - virtual QCString trVariables() - { return Decode("Premenn"); } - - /*! This is used in the documentation of a file as a header before the - * list of (global) variables - */ - virtual QCString trEnumerationValues() - { return Decode("Hodnoty enumerci"); } - - /*! This is used in the documentation of a file before the list of - * documentation blocks for defines - */ - virtual QCString trDefineDocumentation() - { return Decode("Dokumentcia k defincim makier"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for function prototypes - */ - virtual QCString trFunctionPrototypeDocumentation() - { return Decode("Dokumentcia prototypov"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for typedefs - */ - virtual QCString trTypedefDocumentation() - { return Decode("Dokumentcia definci typov"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for enumeration types - */ - virtual QCString trEnumerationTypeDocumentation() - { return Decode("Dokumentcia enumeranch typov"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for enumeration values - */ - virtual QCString trEnumerationValueDocumentation() - { return Decode("Dokumentcia enumeranch hodnt"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for functions - */ - virtual QCString trFunctionDocumentation() - { return Decode("Dokumentcia funkci"); } - - /*! This is used in the documentation of a file/namespace before the list - * of documentation blocks for variables - */ - virtual QCString trVariableDocumentation() - { return Decode("Dokumentcia premennch"); } - - /*! This is used in the documentation of a file/namespace/group before - * the list of links to documented compounds - */ - virtual QCString trCompounds() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Dtov truktry"); - } - else - { - return Decode("Triedy"); - } - } - - /*! This is used in the standard footer of each page and indicates when - * the page was generated - */ - virtual QCString trGeneratedAt(const char *date,const char *projName) - { - QCString result=(QCString)"Generovan "+date; - if (projName) result+=(QCString)" pre projekt "+projName; - result+=(QCString)" programom"; - return Decode(result); - } - - /*! This is part of the sentence used in the standard footer of each page. - */ - virtual QCString trWrittenBy() - { - return Decode(" -- autor "); - } - - /*! this text is put before a class diagram */ - virtual QCString trClassDiagram(const char *clName) - { - return Decode((QCString)"Diagram dedinosti pre triedu "+clName); - } - - /*! this text is generated when the \\internal command is used. */ - virtual QCString trForInternalUseOnly() - { return Decode("Iba pre intern pouitie."); } - - /*! this text is generated when the \\reimp command is used. */ - virtual QCString trReimplementedForInternalReasons() - { return Decode("Reimplementovan z internch dvodov; " - "aplikan rozhranie zachovan."); } - - /*! this text is generated when the \\warning command is used. */ - virtual QCString trWarning() - { return Decode("Pozor"); } - - /*! this text is generated when the \\bug command is used. */ - virtual QCString trBugsAndLimitations() - { return Decode("Chyby a obmedzenia"); } - - /*! this text is generated when the \\version command is used. */ - virtual QCString trVersion() - { return Decode("Verzia"); } - - /*! this text is generated when the \\date command is used. */ - virtual QCString trDate() - { return Decode("Dtum"); } - - /*! this text is generated when the \\return command is used. */ - virtual QCString trReturns() - { return Decode("Nvratov hodnota"); } - - /*! this text is generated when the \\sa command is used. */ - virtual QCString trSeeAlso() - { return Decode("Viz tie"); } - - /*! this text is generated when the \\param command is used. */ - virtual QCString trParameters() - { return Decode("Parametre"); } - - /*! this text is generated when the \\exception command is used. */ - virtual QCString trExceptions() - { return Decode("Vnimky"); } - - /*! this text is used in the title page of a LaTeX document. */ - virtual QCString trGeneratedBy() - { return Decode("Generovan programom"); } - - // new since 0.49-990307 - - /*! used as the title of page containing all the index of all namespaces. */ - virtual QCString trNamespaceList() - { return Decode("Zoznam priestorov mien"); } - - /*! used as an introduction to the namespace list */ - virtual QCString trNamespaceListDescription(bool extractAll) - { - QCString result="Tu njdete zoznam vetkch "; - if (!extractAll) result+="dokumentovanch "; - result+="priestorov mien so strunm popisom:"; - return Decode(result); - } - - /*! used in the class documentation as a header before the list of all - * friends of a class - */ - virtual QCString trFriends() - { return Decode("Priatelia (friends)"); } + // --- Language control methods ------------------- + + virtual QCString idLanguage() + { return "slovak"; } + + virtual QCString latexLanguageSupportCommand() + { return "\\usepackage[slovak]{babel}\n"; } + + /*! return the language charset. This will be used for the HTML output */ + virtual QCString idLanguageCharset() + { + return "utf-8"; + } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + virtual QCString trRelatedFunctions() + { return "Súvisiace funkcie"; } + + /*! subscript for the related functions. */ + virtual QCString trRelatedSubscript() + { return "(Uvedené funkcie niesú členskými funkciami.)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() + { return "Detailný popis"; } + + /*! header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() + { return "Dokumentácia k členským typom"; } + + /*! header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() + { return "Dokumentácia k členským enumeráciám"; } + + /*! header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() + { return "Dokumentácia k metódam"; } + + /*! header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dokumentácia k položkám"; + } + else + { + return "Dokumentácia k dátovým členom"; + } + } + + /*! this is the text of a link put after brief descriptions. */ + virtual QCString trMore() + { return "..."; } + + /*! put in the class documentation */ + virtual QCString trListOfAllMembers() + { return "Zoznam všetkých členov."; } + + /*! used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() + { return "Zoznam členov triedy"; } + + /*! this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() + { return "Tu nájdete úplný zoznam členov triedy "; } + + /*! this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() + { return ", vrátane všetkých zdedených členov."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + virtual QCString trGeneratedAutomatically(const char *s) + { QCString result("Generované automaticky programom Doxygen " + "zo zdrojových textov"); + if (s) + result+=(QCString)" projektu "+s; + result+="."; + return result; + } + + /*! put after an enum name in the list of all members */ + virtual QCString trEnumName() + { return "meno enumerácie"; } + + /*! put after an enum value in the list of all members */ + virtual QCString trEnumValue() + { return "hodnota enumerácie"; } + + /*! put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() + { return "definovaný v"; } + + // quick reference sections + + /*! This is put above each page as a link to the list of all groups of + * compounds or files (see the \\group command). + */ + virtual QCString trModules() + { return "Moduly"; } + + /*! This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() + { return "Hierarchia tried"; } + + /*! This is put above each page as a link to the list of annotated classes */ + virtual QCString trCompoundList() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dátové štruktúry"; + } + else + { + return "Zoznam tried"; + } + } + + /*! This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() + { return "Zoznam súborov"; } + + /*! This is put above each page as a link to all members of compounds. */ + virtual QCString trCompoundMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dátové položky"; + } + else + { + return "Zoznam členov tried"; + } + } + + /*! This is put above each page as a link to all members of files. */ + virtual QCString trFileMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Globálne symboly"; + } + else + { + return "Symboly v súboroch"; + } + } + + /*! This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() + { return "Ostatné stránky"; } + + /*! This is put above each page as a link to all examples. */ + virtual QCString trExamples() + { return "Príklady"; } + + /*! This is put above each page as a link to the search engine. */ + virtual QCString trSearch() + { return "Hľadať"; } + + /*! This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() + { return "Tu nájdete zoznam, vyjadrujúci vzťah dedičnosti tried. " + "Je zoradený približne (ale nie úplne) podľa abecedy:"; + } + + /*! This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) + { + QCString result("Tu nájdete zoznam všetkých "); + if (!extractAll) result+="dokumentovaných "; + result+="súborov so stručnými popismi:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Nasledujúci zoznam obsahuje identifikáciu dátových " + "štruktúr a ich stručné popisy:"; + } + else + { + return "Nasledujúci zoznam obsahuje predovšetkým identifikáciu " + "tried, ale nachádzajú sa tu i ďalšie netriviálne prvky, " + "ako sú štruktúry (struct), uniony (union) a rozhrania " + "(interface). V zozname sú uvedené ich stručné " + "popisy:"; + } + } + + /*! This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) + { + QCString result= "Tu nájdete zoznam všetkých "; + if (!extractAll) + { + result += "dokumentovaných "; + } + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result += "položiek štruktúr (struct) a unionov (union) "; + } + else + { + result += "členov tried "; + } + + result += "s odkazmi na "; + + if (!extractAll) + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result += "dokumentáciu štruktúr/unionov, ku ktorým prislúchajú:"; + } + else + { + result += "dokumentáciu tried, ku ktorým prislúchajú:"; + } + } + else + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="štruktúry/uniony, ku ktorým prislúchajú:"; + } + else + { + result+="triedy, ku ktorým prislúchajú:"; + } + } + + return result; + } + + /*! This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) + { + QCString result="Tu nájdete zoznam všetkých "; + if (!extractAll) result+="dokumentovaných "; + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="funkcií, premenných, makier, enumerácií a definícií typov (typedef) " + "s odkazmi na "; + } + else + { + result+="symbolov, ktoré sú definované na úrovni svojich súborov. " + "Pre každý symbol je uvedený odkaz na "; + } + + if (extractAll) + result+="súbory, ku ktorým prislúchajú:"; + else + result+="dokumentáciu:"; + + return result; + } + + /*! This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() + { return "Tu nájdete zoznam všetkých príkladov:"; } + + /*! This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() + { return "Nasledujúci zoznam odkazuje na ďalšie stránky projektu, " + "ktoré majú charakter usporiadaných zoznamov informácií, " + "pozbieraných z rôznych miest v zdrojových súboroch:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() + { return "Tu nájdete zoznam všetkých modulov:"; } + + // index titles (the project name is prepended for these) + + /*! This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() + { return "Dokumentácia"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() + { return "Register modulov"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() + { return "Register hierarchie tried"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + virtual QCString trCompoundIndex() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Register dátových štruktúr"; + } + else + { + return "Register tried"; + } + } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() + { return "Register súborov"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() + { return "Dokumentácia modulov"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + virtual QCString trClassDocumentation() + { return "Dokumentácia tried"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() + { return "Dokumentácia súborov"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() + { return "Dokumentácia príkladov"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() + { return "Dokumentácia súvisiacich stránok"; } + + /*! This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() + { return "Referenčná príručka"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() + { return "Definícia makier"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() + { return "Prototypy"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() + { return "Definícia typov"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() + { return "Enumerácie"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() + { return "Funkcie"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() + { return "Premenné"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() + { return "Hodnoty enumerácií"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() + { return "Dokumentácia k definíciám makier"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() + { return "Dokumentácia prototypov"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() + { return "Dokumentácia definícií typov"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() + { return "Dokumentácia enumeračných typov"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() + { return "Dokumentácia funkcií"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() + { return "Dokumentácia premenných"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + virtual QCString trCompounds() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dátové štruktúry"; + } + else + { + return "Triedy"; + } + } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + virtual QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)"Generované "+date; + if (projName) result+=(QCString)" pre projekt "+projName; + result+=(QCString)" programom"; + return result; + } + + /*! This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() + { + return " -- autor "; + } + + /*! this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) + { + return (QCString)"Diagram dedičnosti pre triedu "+clName; + } + + /*! this text is generated when the \\internal command is used. */ + virtual QCString trForInternalUseOnly() + { return "Iba pre interné použitie."; } + + /*! this text is generated when the \\warning command is used. */ + virtual QCString trWarning() + { return "Pozor"; } + + /*! this text is generated when the \\version command is used. */ + virtual QCString trVersion() + { return "Verzia"; } + + /*! this text is generated when the \\date command is used. */ + virtual QCString trDate() + { return "Dátum"; } + + /*! this text is generated when the \\return command is used. */ + virtual QCString trReturns() + { return "Návratová hodnota"; } + + /*! this text is generated when the \\sa command is used. */ + virtual QCString trSeeAlso() + { return "Viz tiež"; } + + /*! this text is generated when the \\param command is used. */ + virtual QCString trParameters() + { return "Parametre"; } + + /*! this text is generated when the \\exception command is used. */ + virtual QCString trExceptions() + { return "Výnimky"; } + + /*! this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() + { return "Generované programom"; } + + // new since 0.49-990307 + + /*! used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() + { return "Zoznam priestorov mien"; } + + /*! used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Tu nájdete zoznam všetkých "; + if (!extractAll) result+="dokumentovaných "; + result+="priestorov mien so stručným popisom:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() + { return "Priatelia (friends)"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// - /*! used in the class documentation as a header before the list of all - * related classes - */ - virtual QCString trRelatedFunctionDocumentation() - { return Decode("Dokumentcia k priateom (friends)"); } + /*! used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() + { return "Dokumentácia k priateľom (friends)"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 ////////////////////////////////////////////////////////////////////////// - /*! used as the title of the HTML page of a class/struct/union */ - virtual QCString trCompoundReference(const char *clName, - ClassDef::CompoundType compType, - bool isTemplate) - { - QCString result("Dokumentcia "); - if (isTemplate) result+="ablny "; - switch(compType) - { - case ClassDef::Class: result+="triedy "; break; - case ClassDef::Struct: result+="truktry "; break; - case ClassDef::Union: result+="unionu "; break; - case ClassDef::Interface: result+="rozhrania "; break; - case ClassDef::Protocol: result+="protocol "; break; // translate me! - case ClassDef::Category: result+="category "; break; // translate me! - case ClassDef::Exception: result+="vnimky "; break; - } - result+=clName; - return Decode(result); - } - - /*! used as the title of the HTML page of a file */ - virtual QCString trFileReference(const char *fileName) - { - QCString result("Dokumentcia sboru "); - result+=fileName; - return Decode(result); - } - - /*! used as the title of the HTML page of a namespace */ - virtual QCString trNamespaceReference(const char *namespaceName) - { - QCString result("Dokumentcia priestoru mien "); - result+=namespaceName; - return Decode(result); - } - - /* these are for the member sections of a class, struct or union */ - virtual QCString trPublicMembers() - { return Decode("Verejn metdy"); } - virtual QCString trPublicSlots() - { return Decode("Verejn sloty"); } - virtual QCString trSignals() - { return Decode("Signly"); } - virtual QCString trStaticPublicMembers() - { return Decode("Statick verejn metdy"); } - virtual QCString trProtectedMembers() - { return Decode("Chrnen metdy"); } - virtual QCString trProtectedSlots() - { return Decode("Chrnen sloty"); } - virtual QCString trStaticProtectedMembers() - { return Decode("Statick chrnen metdy"); } - virtual QCString trPrivateMembers() - { return Decode("Privtne metdy"); } - virtual QCString trPrivateSlots() - { return Decode("Privtne sloty"); } - virtual QCString trStaticPrivateMembers() - { return Decode("Statick privtne metdy"); } - - /*! this function is used to produce a comma-separated list of items. - * use generateMarker(i) to indicate where item i should be put. - */ - virtual QCString trWriteList(int numEntries) - { - QCString result; - int i; - // the inherits list contain `numEntries' classes - for (i=0;i<numEntries;i++) - { - // use generateMarker to generate placeholders for the class links! - result+=generateMarker(i); // generate marker for entry i in the list - // (order is left to right) - - if (i!=numEntries-1) // not the last entry, so we need a separator - { - if (i<numEntries-2) // not the fore last entry - result+=", "; - else // the fore last entry - result+=" a "; - } - } - return Decode(result); - } - - /*! used in class documentation to produce a list of base classes, - * if class diagrams are disabled. - */ - virtual QCString trInheritsList(int numEntries) - { - QCString result("Ded od "); - result += (numEntries == 1) ? "bzovej triedy " : "bzovch tried "; - result += trWriteList(numEntries)+"."; - return Decode(result); - } - - /*! used in class documentation to produce a list of super classes, - * if class diagrams are disabled. - */ - virtual QCString trInheritedByList(int numEntries) - { - QCString result("Zdeden "); - result += (numEntries == 1) ? "triedou " : "triedami "; - result += trWriteList(numEntries)+"."; - return Decode(result); - } - - /*! used in member documentation blocks to produce a list of - * members that are hidden by this one. - */ - virtual QCString trReimplementedFromList(int numEntries) - { - QCString result("Reimplementuje "); - result += (numEntries == 1) ? "metdu triedy " : "metdy tried "; - result += trWriteList(numEntries)+"."; - return Decode(result); - } - - /*! used in member documentation blocks to produce a list of - * all member that overwrite the implementation of this member. - */ - virtual QCString trReimplementedInList(int numEntries) - { - QCString result("Reimplementovan "); - result += (numEntries == 1) ? "triedou " : "triedami "; - result += trWriteList(numEntries)+"."; - return Decode(result); - } - - /*! This is put above each page as a link to all members of namespaces. */ - virtual QCString trNamespaceMembers() - { return Decode("Symboly v priestoroch mien"); } - - /*! This is an introduction to the page with all namespace members */ - virtual QCString trNamespaceMemberDescription(bool extractAll) - { - QCString result="Tu njdete zoznam vetkch "; - if (!extractAll) result+="dokumentovanch "; - result+="symbolov, ktor s definovan vo svojich priestoroch mien. " - "U kadho je uveden odkaz na "; - if (extractAll) - result+="dokumentciu prslunho priestoru mien:"; - else - result+="prslun priestor mien:"; - return Decode(result); - } - /*! This is used in LaTeX as the title of the chapter with the - * index of all namespaces. - */ - virtual QCString trNamespaceIndex() - { return Decode("Register priestorov mien"); } - - /*! This is used in LaTeX as the title of the chapter containing - * the documentation of all namespaces. - */ - virtual QCString trNamespaceDocumentation() - { return Decode("Dokumentcia priestorov mien"); } + /*! used as the title of the HTML page of a class/struct/union */ + virtual QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result("Dokumentácia "); + if (isTemplate) result+="šablóny "; + switch(compType) + { + case ClassDef::Class: result+="triedy "; break; + case ClassDef::Struct: result+="štruktúry "; break; + case ClassDef::Union: result+="unionu "; break; + case ClassDef::Interface: result+="rozhrania "; break; + case ClassDef::Protocol: result+="protokol "; break; + case ClassDef::Category: result+="kategória "; break; + case ClassDef::Exception: result+="výnimky "; break; + } + result+=clName; + return result; + } + + /*! used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) + { + QCString result("Dokumentácia súboru "); + result+=fileName; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) + { + QCString result("Dokumentácia priestoru mien "); + result+=namespaceName; + return result; + } + + /* these are for the member sections of a class, struct or union */ + virtual QCString trPublicMembers() + { return "Verejné metódy"; } + virtual QCString trPublicSlots() + { return "Verejné sloty"; } + virtual QCString trSignals() + { return "Signály"; } + virtual QCString trStaticPublicMembers() + { return "Statické verejné metódy"; } + virtual QCString trProtectedMembers() + { return "Chránené metódy"; } + virtual QCString trProtectedSlots() + { return "Chránené sloty"; } + virtual QCString trStaticProtectedMembers() + { return "Statické chránené metódy"; } + virtual QCString trPrivateMembers() + { return "Privátne metódy"; } + virtual QCString trPrivateSlots() + { return "Privátne sloty"; } + virtual QCString trStaticPrivateMembers() + { return "Statické privátne metódy"; } + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + virtual QCString trWriteList(int numEntries) + { + QCString result; + int i; + // the inherits list contain `numEntries' classes + for (i=0;i<numEntries;i++) + { + // use generateMarker to generate placeholders for the class links! + result+=generateMarker(i); // generate marker for entry i in the list + // (order is left to right) + + if (i!=numEntries-1) // not the last entry, so we need a separator + { + if (i<numEntries-2) // not the fore last entry + result+=", "; + else // the fore last entry + result+=" a "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritsList(int numEntries) + { + QCString result("Dedí od "); + result += (numEntries == 1) ? "bázovej triedy " : "bázových tried "; + result += trWriteList(numEntries)+"."; + return result; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritedByList(int numEntries) + { + QCString result("Zdedená "); + result += (numEntries == 1) ? "triedou " : "triedami "; + result += trWriteList(numEntries)+"."; + return result; + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + virtual QCString trReimplementedFromList(int numEntries) + { + QCString result("Reimplementuje "); + result += (numEntries == 1) ? "metódu triedy " : "metódy tried "; + result += trWriteList(numEntries)+"."; + return result; + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + virtual QCString trReimplementedInList(int numEntries) + { + QCString result("Reimplementované "); + result += (numEntries == 1) ? "triedou " : "triedami "; + result += trWriteList(numEntries)+"."; + return result; + } + + /*! This is put above each page as a link to all members of namespaces. */ + virtual QCString trNamespaceMembers() + { return "Symboly v priestoroch mien"; } + + /*! This is an introduction to the page with all namespace members */ + virtual QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Tu nájdete zoznam všetkých "; + if (!extractAll) result+="dokumentovaných "; + result+="symbolov, ktoré sú definované vo svojich priestoroch mien. " + "U každého je uvedený odkaz na "; + if (extractAll) + result+="dokumentáciu príslušného priestoru mien:"; + else + result+="príslušný priestor mien:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + virtual QCString trNamespaceIndex() + { return "Register priestorov mien"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + virtual QCString trNamespaceDocumentation() + { return "Dokumentácia priestorov mien"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990522 ////////////////////////////////////////////////////////////////////////// - /*! This is used in the documentation before the list of all - * namespaces in a file. - */ - virtual QCString trNamespaces() - { return Decode("Priestory mien"); } + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + virtual QCString trNamespaces() + { return "Priestory mien"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990728 ////////////////////////////////////////////////////////////////////////// - /*! This is put at the bottom of a class documentation page and is - * followed by a list of files that were used to generate the page. - */ - virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, - bool single) - { // here s is one of " Class", " Struct" or " Union" - // single is true implies a single file - QCString result=(QCString)"Dokumentcia pre "; - switch(compType) - { - case ClassDef::Class: result+="tto triedu"; break; - case ClassDef::Struct: result+="tto truktru (struct)"; break; - case ClassDef::Union: result+="tento union"; break; - case ClassDef::Interface: result+="toto rozhranie"; break; - case ClassDef::Protocol: result+="protocol"; break; // translate me! - case ClassDef::Category: result+="category"; break; // translate me! - case ClassDef::Exception: result+="tto vnimku"; break; - } - result+=" bola generovan z "; - if (single) result+="nasledujceho sboru:"; - else result+="nasledujcich sborov:"; - return Decode(result); - } - - /*! This is in the (quick) index as a link to the alphabetical compound - * list. - */ - virtual QCString trAlphabeticalList() - { return Decode("Register tried"); } + /*! This is put at the bottom of a class documentation page and is + * followed by a list of files that were used to generate the page. + */ + virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Class", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Dokumentácia pre "; + switch(compType) + { + case ClassDef::Class: result+="túto triedu"; break; + case ClassDef::Struct: result+="túto štruktúru (struct)"; break; + case ClassDef::Union: result+="tento union"; break; + case ClassDef::Interface: result+="toto rozhranie"; break; + case ClassDef::Protocol: result+="protokol"; break; + case ClassDef::Category: result+="kategória"; break; + case ClassDef::Exception: result+="túto výnimku"; break; + } + result+=" bola generovaná z "; + if (single) result+="nasledujúceho súboru:"; + else result+="nasledujúcich súborov:"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + virtual QCString trAlphabeticalList() + { return "Register tried"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990901 ////////////////////////////////////////////////////////////////////////// - /*! This is used as the heading text for the retval command. */ - virtual QCString trReturnValues() - { return Decode("Nvratov hodnoty"); } + /*! This is used as the heading text for the retval command. */ + virtual QCString trReturnValues() + { return "Návratové hodnoty"; } - /*! This is in the (quick) index as a link to the main page (index.html) - */ - virtual QCString trMainPage() - { return Decode("Hlavn strnka"); } + /*! This is in the (quick) index as a link to the main page (index.html) + */ + virtual QCString trMainPage() + { return "Hlavná stránka"; } - /*! This is used in references to page that are put in the LaTeX - * documentation. It should be an abbreviation of the word page. - */ - virtual QCString trPageAbbreviation() - { return Decode("s."); } + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + virtual QCString trPageAbbreviation() + { return "s."; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - virtual QCString trSources() - { - return Decode("Zdroje"); - } - virtual QCString trDefinedAtLineInSourceFile() - { - return Decode("Defincia je uveden na riadku @0 v sbore @1."); - } - virtual QCString trDefinedInSourceFile() - { - return Decode("Defincia v sbore @0."); - } + virtual QCString trDefinedAtLineInSourceFile() + { + return "Definícia je uvedená na riadku @0 v súbore @1."; + } + virtual QCString trDefinedInSourceFile() + { + return "Definícia v súbore @0."; + } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991205 ////////////////////////////////////////////////////////////////////////// - virtual QCString trDeprecated() - { - return Decode("Zastaral"); - } + virtual QCString trDeprecated() + { + return "Zastaralé"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.0.0 ////////////////////////////////////////////////////////////////////////// - /*! this text is put before a collaboration diagram */ - virtual QCString trCollaborationDiagram(const char *clName) - { - return Decode((QCString)"Diagram tried pre "+clName+":"); - } - /*! this text is put before an include dependency graph */ - virtual QCString trInclDepGraph(const char *fName) - { - return Decode((QCString)"Graf zvislost na vkladanch sboroch " - "pre "+fName+":"); - } - /*! header that is put before the list of constructor/destructors. */ - virtual QCString trConstructorDocumentation() - { - return Decode("Dokumentcia kontruktoru a detruktoru"); - } - /*! Used in the file documentation to point to the corresponding sources. */ - virtual QCString trGotoSourceCode() - { - return Decode("Zobrazi zdrojov text tohoto sboru."); - } - /*! Used in the file sources to point to the corresponding documentation. */ - virtual QCString trGotoDocumentation() - { - return Decode("Zobrazi dokumentciu tohoto sboru."); - } - /*! Text for the \\pre command */ - virtual QCString trPrecondition() - { - return Decode("Prepodmienka"); - } - /*! Text for the \\post command */ - virtual QCString trPostcondition() - { - return Decode("Postpodmienka"); - } - /*! Text for the \\invariant command */ - virtual QCString trInvariant() - { - return Decode("Invariant"); - } - /*! Text shown before a multi-line variable/enum initialization */ - virtual QCString trInitialValue() - { - return Decode("Inicializtor:"); - } - /*! Text used the source code in the file index */ - virtual QCString trCode() - { - return Decode("zdrojov text"); - } - virtual QCString trGraphicalHierarchy() - { - return Decode("Grafick zobrazenie hierarchie tried"); - } - virtual QCString trGotoGraphicalHierarchy() - { - return Decode("Zobrazi grafick podobu hierarchie tried"); - } - virtual QCString trGotoTextualHierarchy() - { - return Decode("Zobrazi textov podobu hierarchie tried"); - } - virtual QCString trPageIndex() - { - return Decode("Register strnok"); - } + /*! this text is put before a collaboration diagram */ + virtual QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Diagram tried pre "+clName+":"; + } + /*! this text is put before an include dependency graph */ + virtual QCString trInclDepGraph(const char *fName) + { + return (QCString)"Graf závislostí na vkladaných súboroch " + "pre "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + virtual QCString trConstructorDocumentation() + { + return "Dokumentácia konštruktoru a deštruktoru"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + virtual QCString trGotoSourceCode() + { + return "Zobraziť zdrojový text tohoto súboru."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + virtual QCString trGotoDocumentation() + { + return "Zobraziť dokumentáciu tohoto súboru."; + } + /*! Text for the \\pre command */ + virtual QCString trPrecondition() + { + return "Prepodmienka"; + } + /*! Text for the \\post command */ + virtual QCString trPostcondition() + { + return "Postpodmienka"; + } + /*! Text for the \\invariant command */ + virtual QCString trInvariant() + { + return "Invariant"; + } + /*! Text shown before a multi-line variable/enum initialization */ + virtual QCString trInitialValue() + { + return "Inicializátor:"; + } + /*! Text used the source code in the file index */ + virtual QCString trCode() + { + return "zdrojový text"; + } + virtual QCString trGraphicalHierarchy() + { + return "Grafické zobrazenie hierarchie tried"; + } + virtual QCString trGotoGraphicalHierarchy() + { + return "Zobraziť grafickú podobu hierarchie tried"; + } + virtual QCString trGotoTextualHierarchy() + { + return "Zobraziť textovú podobu hierarchie tried"; + } + virtual QCString trPageIndex() + { + return "Register stránok"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.1.0 ////////////////////////////////////////////////////////////////////////// - virtual QCString trNote() - { - return Decode("Poznmka"); - } - virtual QCString trPublicTypes() - { - return Decode("Verejn typy"); - } - virtual QCString trPublicAttribs() - { - if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { - return Decode("Dtov poloky"); - } - else - { - return Decode("Verejn atribty"); - } - } - virtual QCString trStaticPublicAttribs() - { - return Decode("Statick verejn atribty"); - } - virtual QCString trProtectedTypes() - { - return Decode("Chrnen typy"); - } - virtual QCString trProtectedAttribs() - { - return Decode("Chrnen atribty"); - } - virtual QCString trStaticProtectedAttribs() - { - return Decode("Statick chrnen atribty"); - } - virtual QCString trPrivateTypes() - { - return Decode("Privtne typy"); - } - virtual QCString trPrivateAttribs() - { - return Decode("Privtne atribty"); - } - virtual QCString trStaticPrivateAttribs() - { - return Decode("Statick privtne atribty"); - } + virtual QCString trNote() + { + return "Poznámka"; + } + virtual QCString trPublicTypes() + { + return "Verejné typy"; + } + virtual QCString trPublicAttribs() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dátové položky"; + } + else + { + return "Verejné atribúty"; + } + } + virtual QCString trStaticPublicAttribs() + { + return "Statické verejné atribúty"; + } + virtual QCString trProtectedTypes() + { + return "Chránené typy"; + } + virtual QCString trProtectedAttribs() + { + return "Chránené atribúty"; + } + virtual QCString trStaticProtectedAttribs() + { + return "Statické chránené atribúty"; + } + virtual QCString trPrivateTypes() + { + return "Privátne typy"; + } + virtual QCString trPrivateAttribs() + { + return "Privátne atribúty"; + } + virtual QCString trStaticPrivateAttribs() + { + return "Statické privátne atribúty"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.1.3 ////////////////////////////////////////////////////////////////////////// - /*! Used as a marker that is put before a todo item */ - virtual QCString trTodo() - { - return Decode("Plnovan pravy"); - } - /*! Used as the header of the todo list */ - virtual QCString trTodoList() - { - return Decode("Zoznam plnovanch prav"); - } + /*! Used as a marker that is put before a todo item */ + virtual QCString trTodo() + { + return "Plánované úpravy"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Zoznam plánovaných úprav"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.1.4 ////////////////////////////////////////////////////////////////////////// - virtual QCString trReferencedBy() - { - return Decode("Pouva sa v"); - } - virtual QCString trRemarks() - { - return Decode("Poznmky"); // ??? not checked in a context - } - virtual QCString trAttention() - { - return Decode("Upozornenie"); // ??? not checked in a context - } - virtual QCString trInclByDepGraph() - { - return Decode("Nasledujci graf ukazuje, ktor sbory priamo alebo " - "nepriamo vkladaj tento sbor:"); - } - virtual QCString trSince() - { - return Decode("Od"); // ??? not checked in a context - } + virtual QCString trReferencedBy() + { + return "Používa sa v"; + } + virtual QCString trRemarks() + { + return "Poznámky"; + } + virtual QCString trAttention() + { + return "Upozornenie"; + } + virtual QCString trInclByDepGraph() + { + return "Nasledujúci graf ukazuje, ktoré súbory priamo alebo " + "nepriamo vkladajú tento súbor:"; + } + virtual QCString trSince() + { + return "Od"; + } //////////////////////////////////////////////////////////////////////////// // new since 1.1.5 ////////////////////////////////////////////////////////////////////////// - /*! title of the graph legend page */ - virtual QCString trLegendTitle() - { - return Decode("Vysvetlivky ku grafu"); - } - /*! page explaining how the dot graph's should be interpreted */ - virtual QCString trLegendDocs() - { - QCString result( - "Tu njdete vysvetlenie, ako maj by interpretovan grafy, " - "ktor boli generovan programom doxygen.<p>\n" - "Uvaujte nasledujci prklad:\n" - "\\code\n" - "/*! Neviditeln trieda, ktor sa v grafe nezobrazuje, pretoe " - "dolo k orezaniu grafu. */\n" - "class Invisible { };\n\n" - "/*! Trieda, u ktorej dolo k orezaniu grafu. Vzah dedinosti " - "je skryt. */\n" - "class Truncated : public Invisible { };\n\n" - "/* Trieda, ktor nieje dokumentovan komentrmi programu doxygen. */\n" - "class Undocumented { };\n\n" - "/*! Odvoden trieda s verejnm (public) dedenm bzovej triedy. */\n" - "class PublicBase : public Truncated { };\n\n" - "/*! Odvoden trieda s chrnenm (protected) dedenm bzovej triedy. */\n" - "/*! A template class */\n" - "template<class T> class Templ { };\n\n" - "class ProtectedBase { };\n\n" - "/*! Odvoden trieda s privtnym dedenm bzovej triedy. */\n" - "class PrivateBase { };\n\n" - "/*! Trieda, ktor je vyuvan triedou Inherited. */\n" - "class Used { };\n\n" - "/*! Odvoden trieda, ktor rznym spsobom ded od viacerch bzovch " - "tried. */\n" - "class Inherited : public PublicBase,\n" - " protected ProtectedBase,\n" - " private PrivateBase,\n" - " public Undocumented,\n" - " public Templ<int>\n" - "{\n" - " private:\n" - " Used *m_usedClass;\n" - "};\n" - "\\endcode\n" - "Pokia je poloka \\c MAX_DOT_GRAPH_HEIGHT konfiguranho sboru " - "nastaven na hodnotu 200, bude vygenerovan nasledujci graf:" - "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" - "<p>\n" - "Bloky (tj. uzly) v uvedenom grafe maj nasledujci vznam:\n" - "<ul>\n" - "<li>ierne vyplnen obdnik reprezentuje truktru alebo triedu, " - "pre ktor bol graf generovan.\n" - "<li>Obdnik s iernym obrysom oznauje dokumentovan " - "truktru alebo triedu.\n" - "<li>Obdnik so edm obrysom oznauje nedokumentovan " - "truktru alebo triedu.\n" - "<li>Obdnik s ervenm obrysom oznauje dokumentovan " - "truktru alebo triedu, pre ktor\n" - "nies zobrazen vetky vzahy dedinosti alebo obsiahnutia. " - "Graf je orezan v prpade, kedy ho\n" - "nieje mon umiestni do vymedzench hranc.\n" - "</ul>\n" - "pky (tj. hrany grafu) maj nasledujc vznam:\n" - "<ul>\n" - "<li>Tmavo modr pka sa pouva pre oznaenie vzahu verejnej " - "dedinosti medzi dvoma triedami.\n" - "<li>Tmavo zelen pka oznauje vzah chrnenej dedinosti " - "(protected).\n" - "<li>Tmavo erven pka oznauje vzah privtnej dedinosti.\n" - "<li>Purpurov pka kreslen iarkovane sa pouva v prpade, " - "ak je trieda obsiahnut v inej triede,\n" - "alebo ak je pouvan inou triedou. Je oznaen identifiktorom " - "jednej alebo viacerch premennch (objektov), cez ktor\n" - "je trieda alebo truktra zprstupnena.\n" - "</ul>\n"); - - return Decode(result); - } - /*! text for the link to the legend page */ - virtual QCString trLegend() - { - return Decode("vysvetlivky"); - } + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Vysvetlivky ku grafu"; + } + /*! page explaining how the dot graph's should be interpreted */ + virtual QCString trLegendDocs() + { + return + "Tu nájdete vysvetlenie, ako majú byť interpretované grafy, " + "ktoré boli generované programom doxygen.<p>\n" + "Uvažujte nasledujúci príklad:\n" + "\\code\n" + "/*! Neviditelná trieda, ktorá sa v grafe nezobrazuje, pretože " + "došlo k orezaniu grafu. */\n" + "class Invisible { };\n\n" + "/*! Trieda, u ktorej došlo k orezaniu grafu. Vzťah dedičnosti " + "je skrytý. */\n" + "class Truncated : public Invisible { };\n\n" + "/* Trieda, ktorá nieje dokumentovaná komentármi programu doxygen. */\n" + "class Undocumented { };\n\n" + "/*! Odvodená trieda s verejným (public) dedením bázovej triedy. */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Šablóna triedy. */\n" + "template<class T> class Templ { };\n\n" + "/*! Odvodená trieda s chráneným (protected) dedením bázovej triedy. */\n" + "class ProtectedBase { };\n\n" + "/*! Odvodená trieda s privátnym dedením bázovej triedy. */\n" + "class PrivateBase { };\n\n" + "/*! Trieda, ktorá je využívaná triedou Inherited. */\n" + "class Used { };\n\n" + "/*! Odvodená trieda, ktorá rôznym spôsobom dedí od viacerých bázových " + "tried. */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented,\n" + " public Templ<int>\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "K vyššie uvedenému bude vygenerovaný nasledujúci graf:" + "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" + "<p>\n" + "Bloky (tj. uzly) v uvedenom grafe majú nasledujúci význam:\n" + "<ul>\n" + "<li>Čierne vyplnený obdĺžnik reprezentuje štruktúru alebo triedu, " + "pre ktorú bol graf generovaný.\n" + "<li>Obdĺžnik s čiernym obrysom označuje dokumentovanú " + "štruktúru alebo triedu.\n" + "<li>Obdĺžnik so šedým obrysom označuje nedokumentovanú " + "štruktúru alebo triedu.\n" + "<li>Obdĺžnik s červeným obrysom označuje dokumentovanú " + "štruktúru alebo triedu, pre ktorú\n" + "niesú zobrazené všetky vzťahy dedičnosti alebo obsiahnutia. " + "Graf je orezaný v prípade, kedy ho\n" + "nieje možné umiestniť do vymedzených hraníc.\n" + "</ul>\n" + "Šípky (tj. hrany grafu) majú nasledujúcí význam:\n" + "<ul>\n" + "<li>Tmavo modrá šípka sa používa pre označenie vzťahu verejnej " + "dedičnosti medzi dvoma triedami.\n" + "<li>Tmavo zelená šípka označuje vzťah chránenej dedičnosti " + "(protected).\n" + "<li>Tmavo červená šípka označuje vzťah privátnej dedičnosti.\n" + "<li>Purpurová šípka kreslená čiarkovane sa používa v prípade, " + "ak je trieda obsiahnutá v inej triede,\n" + "alebo ak je používaná inou triedou. Je označená identifikátorom " + "jednej alebo viacerých premenných (objektov), cez ktoré\n" + "je trieda alebo štruktúra zprístupnena.\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "vysvetlivky"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.0 ////////////////////////////////////////////////////////////////////////// - /*! Used as a marker that is put before a test item */ - virtual QCString trTest() - { - return Decode("Test"); - } + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Test"; + } - /*! Used as the header of the test list */ - virtual QCString trTestList() - { - return Decode("Zoznam testov"); - } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Zoznam testov"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.1 ////////////////////////////////////////////////////////////////////////// - /*! Used as a section header for KDE-2 IDL methods */ - virtual QCString trDCOPMethods() - { - return Decode("Metdy DCOP"); - } + /*! Used as a section header for KDE-2 IDL methods */ + virtual QCString trDCOPMethods() + { + return "Metódy DCOP"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.2 ////////////////////////////////////////////////////////////////////////// - /*! Used as a section header for IDL properties */ - virtual QCString trProperties() - { - return Decode("Vlastnosti"); - } - /*! Used as a section header for IDL property documentation */ - virtual QCString trPropertyDocumentation() - { - return Decode("Dokumentcia k vlastnosti"); - } + /*! Used as a section header for IDL properties */ + virtual QCString trProperties() + { + return "Vlastnosti"; + } + /*! Used as a section header for IDL property documentation */ + virtual QCString trPropertyDocumentation() + { + return "Dokumentácia k vlastnosti"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.4 ////////////////////////////////////////////////////////////////////////// - /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return Decode("Rozhranie"); - } - /*! Used for Java classes in the summary section of Java packages */ - virtual QCString trClasses() - { - return Decode("Triedy"); - } - /*! Used as the title of a Java package */ - virtual QCString trPackage(const char *name) - { - return Decode((QCString)"Balk "+name); - } - /*! Title of the package index page */ - virtual QCString trPackageList() - { - return Decode("Zoznam balkov"); - } - /*! The description of the package index page */ - virtual QCString trPackageListDescription() - { - return Decode("Tu njdete zoznam balkov so strunm popisom " - "(pokia bol uveden):"); - } - /*! The link name in the Quick links header for each page */ - virtual QCString trPackages() - { - return Decode("Balky"); - } - /*! Used as a chapter title for Latex & RTF output */ - virtual QCString trPackageDocumentation() - { - return Decode("Dokumentcia balku"); - } - /*! Text shown before a multi-line define */ - virtual QCString trDefineValue() - { - return Decode("Hodnota:"); - } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + return "Triedy"; + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Balík "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Zoznam balíkov"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Tu nájdete zoznam balíkov so stručným popisom " + "(pokiaľ bol uvedený):"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Balíky"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Hodnota:"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.5 ////////////////////////////////////////////////////////////////////////// - /*! Used as a marker that is put before a \\bug item */ - virtual QCString trBug() - { - return Decode("Chyba"); - } - /*! Used as the header of the bug list */ - virtual QCString trBugList() - { - return Decode("Zoznam chb"); - } + /*! Used as a marker that is put before a \\bug item */ + virtual QCString trBug() + { + return "Chyba"; + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return "Zoznam chýb"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.6-20010422 ////////////////////////////////////////////////////////////////////////// - /*! Used as ansicpg for RTF file */ - virtual QCString trRTFansicp() - { - return "1250"; - } - - /*! Used as ansicpg for RTF fcharset */ - virtual QCString trRTFCharSet() - { - return "3"; - } - - /*! Used as header RTF general index */ - virtual QCString trRTFGeneralIndex() - { - return "Index"; - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trClass(bool first_capital, bool singular) - { - QCString result((first_capital ? "Tried" : "tried")); - result+=(singular ? "a" : "y"); - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trFile(bool first_capital, bool singular) - { - QCString result((first_capital ? "Sbor" : "sbor")); - if (!singular) result+="y"; - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trNamespace(bool first_capital, bool singular) - { - QCString result((first_capital ? "Priestor" : "priestor")); - if (!singular) result+="y"; - result+=" mien"; - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trGroup(bool first_capital, bool singular) - { - QCString result((first_capital ? "Skupin" : "skupin")); - result+=(singular ? "a" : "y"); - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trPage(bool first_capital, bool singular) - { - QCString result((first_capital ? "Strnk" : "strnk")); - result+=(singular ? "a" : "y"); - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trMember(bool first_capital, bool singular) - { - QCString result((first_capital ? "len" : "len")); - if (!singular) result+="y"; - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trField(bool first_capital, bool singular) - { - QCString result((first_capital ? "Polok" : "polok")); - result+=(singular ? "a" : "y"); - return Decode(result); - } - - /*! This is used for translation of the word that will possibly - * be followed by a single name or by a list of names - * of the category. - */ - virtual QCString trGlobal(bool first_capital, bool singular) - { - QCString result((first_capital ? "Globln" : "globln")); - result+=(singular ? "y" : "e"); - return result; - } + /*! Used as ansicpg for RTF file */ + virtual QCString trRTFansicp() + { + return "1250"; + } + + /*! Used as ansicpg for RTF fcharset */ + virtual QCString trRTFCharSet() + { + return "3"; + } + + /*! Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return "Index"; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trClass(bool first_capital, bool singular) + { + QCString result((first_capital ? "Tried" : "tried")); + result+=(singular ? "a" : "y"); + 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 + * of the category. + */ + virtual QCString trFile(bool first_capital, bool singular) + { + QCString result((first_capital ? "Súbor" : "súbor")); + if (!singular) result+="y"; + 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 + * of the category. + */ + virtual QCString trNamespace(bool first_capital, bool singular) + { + QCString result((first_capital ? "Priestor" : "priestor")); + if (!singular) result+="y"; + result+=" mien"; + 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 + * of the category. + */ + virtual QCString trGroup(bool first_capital, bool singular) + { + QCString result((first_capital ? "Skupin" : "skupin")); + result+=(singular ? "a" : "y"); + 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 + * of the category. + */ + virtual QCString trPage(bool first_capital, bool singular) + { + QCString result((first_capital ? "Stránk" : "stránk")); + result+=(singular ? "a" : "y"); + 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 + * of the category. + */ + virtual QCString trMember(bool first_capital, bool singular) + { + QCString result((first_capital ? "Člen" : "člen")); + if (!singular) result+="y"; + 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 + * of the category. + */ + virtual QCString trGlobal(bool first_capital, bool singular) + { + QCString result((first_capital ? "Globáln" : "globáln")); + result+=(singular ? "y" : "e"); + return result; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.7 ////////////////////////////////////////////////////////////////////////// - /*! This text is generated when the \\author command is used and - * for the author section in man pages. */ - virtual QCString trAuthor(bool first_capital, bool singular) - { - QCString result((first_capital ? "Auto" : "auto")); - result += (singular) ? "r" : "ri"; - return result; - } + /*! This text is generated when the \\author command is used and + * for the author section in man pages. */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + QCString result((first_capital ? "Auto" : "auto")); + result += (singular) ? "r" : "ri"; + return result; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.11 ////////////////////////////////////////////////////////////////////////// - /*! This text is put before the list of members referenced by a member - */ - virtual QCString trReferences() - { - return Decode("Odkazuje sa na"); - } + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Odkazuje sa na"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.13 ////////////////////////////////////////////////////////////////////////// - /*! used in member documentation blocks to produce a list of - * members that are implemented by this one. - */ - virtual QCString trImplementedFromList(int numEntries) - { - return "Implementuje " + trWriteList(numEntries) + "."; - } - - /*! used in member documentation blocks to produce a list of - * all members that implement this member. - */ - virtual QCString trImplementedInList(int numEntries) - { - return Decode("Implementovan v " + trWriteList(numEntries) + "."); - } + /*! used in member documentation blocks to produce a list of + * members that are implemented by this one. + */ + virtual QCString trImplementedFromList(int numEntries) + { + return "Implementuje " + trWriteList(numEntries) + "."; + } + + /*! used in member documentation blocks to produce a list of + * all members that implement this member. + */ + virtual QCString trImplementedInList(int numEntries) + { + return "Implementované v " + trWriteList(numEntries) + "."; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.16 ////////////////////////////////////////////////////////////////////////// - /*! used in RTF documentation as a heading for the Table - * of Contents. - */ - virtual QCString trRTFTableOfContents() - { - return "Obsah"; - } + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Obsah"; + } ////////////////////////////////////////////////////////////////////////// // new since 1.2.17 ////////////////////////////////////////////////////////////////////////// - /*! Used as the header of the list of item that have been - * flagged deprecated - */ - virtual QCString trDeprecatedList() - { - return "Zastaran metdy"; - } + /*! Used as the header of the list of item that have been + * flagged deprecated + */ + virtual QCString trDeprecatedList() + { + return "Zastarané metódy"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + return "Udalosti"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + return "Dokumentácia udalostí"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! 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. + */ + virtual QCString trPackageMembers() + { + return "Funkcie v balíku"; + } + /*! 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 + * scope. + */ + virtual QCString trPackageAttribs() + { + return "Atribúty balíku"; + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + return "Statické atribúty balíku"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! 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() + { + return "Všetko"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + 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. + */ + virtual QCString trSearchForIndex() + { + return "Vyhľadať"; + } + /*! This string is used as the title for the page listing the search + * results. + */ + virtual QCString trSearchResultsTitle() + { + return "Výsledky vyhľadávania"; + } + /*! This string is put just before listing the search results. The + * 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 + * value 2 represents 2 or more matches. HTML markup is allowed inside + * the returned string. + */ + virtual QCString trSearchResults(int numDocuments) + { + if (numDocuments==0) + { + return "Ľutujem. Vášmu dotazu neodpovedá žiadny dokument."; + } + else if (numDocuments==1) + { + return "Bol nájdený jediný dokument, ktorý vyhovuje vášmu dotazu."; + } + 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 + * result. What follows is the list of words that matched the query. + */ + virtual QCString trSearchMatches() + { + return "Nájdené slová:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.8 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in HTML as the title of page with source code for file filename + */ + virtual QCString trSourceFile(QCString& filename) + { + return QCString("Zdrojový súbor ") + filename; + } + + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.9 +////////////////////////////////////////////////////////////////////////// + + + /*! This is used as the name of the chapter containing the directory + * hierarchy. + */ + virtual QCString trDirIndex() + { return "Hierarchia adresárov"; } + + /*! This is used as the name of the chapter containing the documentation + * of the directories. + */ + virtual QCString trDirDocumentation() + { return "Dokumentácia k adresárom"; } + + /*! This is used as the title of the directory index and also in the + * Quick links of a HTML page, to link to the directory hierarchy. + */ + virtual QCString trDirectories() + { return "Adresáre"; } + + /*! 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:"; + } + + /*! 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; + } + + /*! 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) + result += "e"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return "Ide o preťaženú (overloaded) metódu, " + "ktorá má uľahčiť používanie. Od vyššie uvedenej metódy sa odlišuje " + "iba inak zadávanými argumentami."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.6 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trCallerGraph() + { return "Túto funkciu volajú..."; } + + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return "Dokumentácia enumeračných hodnôt"; } + + +////////////////////////////////////////////////////////////////////////// +// 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). */ + virtual QCString trCompoundListFortran() + { return "Zoznam dátových typov"; } + + /*! This is put above each page as a link to all members of compounds (Fortran). */ + virtual QCString trCompoundMembersFortran() + { return "Dátové polia"; } + + /*! This is an introduction to the annotated compound list (Fortran). */ + virtual QCString trCompoundListDescriptionFortran() + { return "Dátové typy so stručnými popismi:"; } + + /*! This is an introduction to the page with all data types (Fortran). */ + virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) + { + + QCString result="Nasleduje zoznam všetkých "; + if (!extractAll) + { + result+="dokumentovaných "; + } + result+="zložiek dátových typov"; + result+=" s odkazmi na "; + if (!extractAll) + { + result+="dokumentáciu dátovej štruktúry pre každú zložku:"; + } + else + { + result+="příslušné dátové typy:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index (Fortran). + */ + virtual QCString trCompoundIndexFortran() + { return "Register dátových typov"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all data types (Fortran). + */ + 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 + * list of (global) subprograms (Fortran). + */ + virtual QCString trSubprograms() + { return "Funkcie/podprogramy"; } + + /*! 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 + * 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"; } + + /*! used as an introduction to the modules list (Fortran) */ + virtual QCString trModulesListDescription(bool extractAll) + { + QCString result="Nasleduje zoznam všetkých "; + if (!extractAll) result+="dokumentovaných "; + result+="modulov so stručnými popismi:"; + return result; + } + + /*! used as the title of the HTML page of a module/type (Fortran) */ + virtual QCString trCompoundReferenceFortran(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result("Dokumentácia "); + if (isTemplate) result += "šablóny "; + switch(compType) + { + case ClassDef::Class: result += "triedy "; break; + case ClassDef::Struct: result += "typu "; break; + case ClassDef::Union: result += "únie "; break; + case ClassDef::Interface: result += "rozhrania "; break; + case ClassDef::Protocol: result += "protokolu "; break; + case ClassDef::Category: result += "kategórie "; break; + case ClassDef::Exception: result += "výnimky "; break; + } + result += clName; + return result; + + } + /*! used as the title of the HTML page of a module (Fortran) */ + virtual QCString trModuleReference(const char *namespaceName) + { + QCString result="Dokumentácia modulu "; + 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) + { + result+="na dokumentáciu modulov pre danú časť:"; + } + else + { + result+="na moduly, ku ktorým časť patrí:"; + } + return result; + } + + /*! 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 + * of the category. + */ + virtual QCString trModule(bool first_capital, bool singular) + { + QCString result((first_capital ? "Modul" : "modul")); + if (!singular) result+="y"; + 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. + */ + virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Module", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Dokumentácia "; + switch(compType) + { + case ClassDef::Class: result+="k tomuto modulu"; break; + case ClassDef::Struct: result+="k tomuto typu"; break; + case ClassDef::Union: result+="k tejto únii"; break; + case ClassDef::Interface: result+="k tomuto rozhraniu"; break; + case ClassDef::Protocol: result+="k tomuto protokolu"; break; + case ClassDef::Category: result+="k tejto kategórii"; break; + case ClassDef::Exception: result+="k tejto výnimke"; break; + } + result+=" bola vygenerovaná z "; + 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 + * of the category. + */ + virtual QCString trType(bool first_capital, bool singular) + { + QCString result((first_capital ? "Typ" : "typ")); + if (!singular) result+="y"; + 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 + * of the category. + */ + virtual QCString trSubprogram(bool first_capital, bool singular) + { + QCString result((first_capital ? "Podprogram" : "podprogram")); + if (!singular) result+="y"; + return result; + } + + /*! C# Type Contraint list */ + virtual QCString trTypeConstraints() + { + return "Obmedzenie typov (Type Constraints)"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.6.0 (mainly for the new search engine) +////////////////////////////////////////////////////////////////////////// + + /*! directory relation for \a name */ + virtual QCString trDirRelation(const char *name) + { + return "Relácia " + QCString(name); + } + + /*! Loading message shown when loading search results */ + virtual QCString trLoading() + { + return "Načítam..."; + } + + /*! Label used for search results in the global namespace */ + virtual QCString trGlobalNamespace() + { + return "Globálny priestor mien"; + } + + /*! Message shown while searching */ + virtual QCString trSearching() + { + return "Vyhľadávam..."; + } + + /*! Text shown when no search results are found */ + virtual QCString trNoMatches() + { + return "Nič sa nenašlo"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.6.3 (missing items for the directory pages) +////////////////////////////////////////////////////////////////////////// + + /*! introduction text for the directory dependency graph */ + virtual QCString trDirDependency(const char *name) + { + return (QCString)"Graf závislosti adresárov pre "+name; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the first column mentions the + * source file that has a relation to another file. + */ + virtual QCString trFileIn(const char *name) + { + return (QCString)"Súbor v "+name; + } + + /*! when clicking a directory dependency label, a page with a + * table is shown. The heading for the second column mentions the + * destination file that is included. + */ + virtual QCString trIncludesFileIn(const char *name) + { + return (QCString)"Vkladá (include) súbor z "+name; + } + + /** 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 + * @param dayOfWeek Day of the week: 1=Monday..7=Sunday + * @param hour Hour of the day: 0..23 + * @param minutes Minutes in the hour: 0..59 + * @param seconds Seconds within the minute: 0..59 + * @param includeTime Include time in the result string? + */ + virtual QCString trDateTime(int year,int month,int day,int dayOfWeek, + int hour,int minutes,int seconds, + bool includeTime) + { + static const char *days[] = { "po","ut","st","št","pi","so","ne" }; + static const char *months[] = { "jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec" }; + QCString sdate; + sdate.sprintf("%s %d. %s %d",days[dayOfWeek-1],day,months[month-1],year); + if (includeTime) + { + QCString stime; + stime.sprintf(" %.2d.%.2d:%.2d",hour,minutes,seconds); + sdate+=stime; + } + return sdate; + } + }; #endif // TRANSLATOR_SK_H diff --git a/src/util.cpp b/src/util.cpp index 2a288e4..31c8cf7 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -4131,13 +4131,18 @@ bool resolveRef(/* in */ const char *scName, ) { QCString tsName = name; - bool memberScopeFirst = tsName.find('#')!=-1; + //bool memberScopeFirst = tsName.find('#')!=-1; QCString fullName = substitute(tsName,"#","::"); fullName = removeRedundantWhiteSpace(substitute(fullName,".","::")); int bracePos=fullName.findRev('('); // reverse is needed for operator()(...) int endNamePos=bracePos!=-1 ? bracePos : fullName.length(); int scopePos=fullName.findRev("::",endNamePos); + bool explicitScope = fullName.left(2)=="::" && // ::scope or #scope + (scopePos>2 || // ::N::A + tsName.left(2)=="::" || // ::foo in local scope + scName==0 // #foo in global scope + ); // default result values *resContext=0; @@ -4184,6 +4189,7 @@ bool resolveRef(/* in */ const char *scName, // extract userscope+name QCString nameStr=fullName.left(endNamePos); + if (explicitScope) nameStr=nameStr.mid(2); // extract arguments QCString argsStr; @@ -4222,7 +4228,8 @@ bool resolveRef(/* in */ const char *scName, // scopeStr.data(),nameStr.data(),argsStr.data(),checkScope); if (getDefs(scopeStr,nameStr,argsStr, md,cd,fd,nd,gd, - scopePos==0 && !memberScopeFirst, // forceEmptyScope + //scopePos==0 && !memberScopeFirst, // forceEmptyScope + explicitScope, // replaces prev line due to bug 600829 currentFile, TRUE // checkCV ) @@ -6375,7 +6382,7 @@ g_lang2extMap[] = { "idl", "c", SrcLangExt_IDL }, { "java", "c", SrcLangExt_Java }, { "javascript", "c", SrcLangExt_JS }, - { "c#", "c", SrcLangExt_CSharp }, + { "csharp", "c", SrcLangExt_CSharp }, { "d", "c", SrcLangExt_D }, { "php", "c", SrcLangExt_PHP }, { "objective-c", "c", SrcLangExt_ObjC }, @@ -6432,7 +6439,7 @@ void initDefaultExtensionMapping() updateLanguageMapping(".java", "java"); updateLanguageMapping(".as", "javascript"); updateLanguageMapping(".js", "javascript"); - updateLanguageMapping(".cs", "c#"); + updateLanguageMapping(".cs", "csharp"); updateLanguageMapping(".d", "d"); updateLanguageMapping(".php", "php"); updateLanguageMapping(".php4", "php"); @@ -7017,7 +7024,7 @@ QCString externalRef(const QCString &relPath,const QCString &ref,bool href) result.prepend(relPath); } if (!href) result.prepend("doxygen=\""+ref+":"); - if (l>0 && !result.at(l-1)!='/') result+='/'; + if (l>0 && result.at(l-1)!='/') result+='/'; if (!href) result.append("\" "); } } diff --git a/winbuild/qtools.vcproj b/winbuild/qtools.vcproj index 73d91da..6c11c85 100644 --- a/winbuild/qtools.vcproj +++ b/winbuild/qtools.vcproj @@ -46,7 +46,7 @@ OmitFramePointers="true" WholeProgramOptimization="true" AdditionalIncludeDirectories="..\qtools" - PreprocessorDefinitions="QT_NO_CODECS;WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -121,7 +121,7 @@ AdditionalOptions="" Optimization="0" AdditionalIncludeDirectories="..\qtools" - PreprocessorDefinitions="QT_NO_CODECS;WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" + PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -702,6 +702,10 @@ > </File> <File + RelativePath="..\qtools\qutfcodec.cpp" + > + </File> + <File RelativePath="..\qtools\qwaitcondition_win32.cpp" > </File> @@ -935,6 +939,10 @@ > </File> <File + RelativePath="..\qtools\qutfcodec.h" + > + </File> + <File RelativePath="..\qtools\qvaluelist.h" > </File> |