From 1f15cdfe735375f781fddf5e3e483887b7f481bd Mon Sep 17 00:00:00 2001 From: dimitri Date: Mon, 30 Oct 2000 21:12:45 +0000 Subject: Release-1.2.3 --- INSTALL | 4 +- Makefile.in | 2 +- README | 4 +- VERSION | 2 +- addon/configgen/config_templ.l | 26 +++++- addon/configgen/configgen.cpp | 22 ++++- addon/doxywizard/doxywizard_templ.cpp | 28 ++++-- addon/doxywizard/doxywizard_templ.h | 1 + addon/doxywizard/pixmaps.cpp | 34 +++++++ addon/doxywizard/pixmaps.h | 1 + configure | 10 +- doc/Makefile.win.in | 3 +- doc/commands.doc | 6 +- doc/config.doc | 32 +++++-- doc/index.doc | 4 - doc/install.doc | 168 +++++++++++++++++++++------------- doc/language.doc | 6 +- doc/preprocessing.doc | 4 +- packages/rpm/doxygen.spec | 2 +- src/classdef.cpp | 2 +- src/code.l | 59 ++++++------ src/config.h | 4 +- src/config.l | 58 +++++++++++- src/declinfo.l | 2 +- src/define.h | 2 +- src/doxygen.cpp | 1 + src/filedef.cpp | 9 +- src/index.cpp | 2 +- src/language.cpp | 1 + src/memberdef.cpp | 6 +- src/memberlist.cpp | 7 +- src/pre.l | 42 ++++++++- src/scanner.l | 20 ++-- src/translator_cz.h | 18 ++++ src/translator_jp.h | 3 + src/util.cpp | 64 ++++++++++--- src/util.h | 2 +- 37 files changed, 479 insertions(+), 182 deletions(-) diff --git a/INSTALL b/INSTALL index c9fffeb..740a762 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.2-20001015 +DOXYGEN Version 1.2.3 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (15 October 2000) +Dimitri van Heesch (30 October 2000) diff --git a/Makefile.in b/Makefile.in index 812c91b..d6b6096 100644 --- a/Makefile.in +++ b/Makefile.in @@ -24,7 +24,7 @@ distclean: clean -rm -f src/Makefile.doxygen src/Makefile.doxytag src/Makefile.doxysearch qtools/Makefile.qtools -rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile -rm -f .makeconfig .tmakeconfig - -rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro + -rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro qtools/qtools.pro -rm -f src/version.cpp -rm -r addon/configgen/Makefile addon/doxywizard/Makefile -rm -f addon/configgen/Makefile.configgen diff --git a/README b/README index c67bd3b..21c9314 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.2-20001015 +DOXYGEN Version 1.2.3 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (15 October 2000) +Dimitri van Heesch (30 October 2000) diff --git a/VERSION b/VERSION index fdad0e7..0495c4a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.2-20001015 +1.2.3 diff --git a/addon/configgen/config_templ.l b/addon/configgen/config_templ.l index 98a688f..81d4acf 100644 --- a/addon/configgen/config_templ.l +++ b/addon/configgen/config_templ.l @@ -140,8 +140,12 @@ static FILE *tryPath(const char *path,const char *fileName) return 0; } +static void substEnvVarsInStrList(QStrList &sl); +static void substEnvVarsInString(QCString &s); + static FILE *findFile(const char *fileName) { + substEnvVarsInStrList(includePathList); char *s=includePathList.first(); while (s) // try each of the include paths { @@ -162,6 +166,7 @@ static void readIncludeFile(const char *incName) } QCString inc = incName; + substEnvVarsInString(inc); inc = inc.stripWhiteSpace(); uint incLen = inc.length(); if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes @@ -430,6 +435,23 @@ void configStrToVal() } Config::colsInAlphaIndex=cols; } + + if (enumValuesPerLineString.isEmpty()) + { + Config::enumValuesPerLine=4; + } + else + { + bool ok; + int cols = enumValuesPerLineString.toInt(&ok); + if (!ok || cols<1 || cols>20) + { + warn_cont("Warning: argument of ENUM_VALUES_PER_LINE is not a valid number in the range [1..20]!\n" + "Using the default of 4!\n"); + cols = 4; + } + Config::enumValuesPerLine=cols; + } if (maxDotGraphWidthString.isEmpty()) { @@ -441,7 +463,7 @@ void configStrToVal() int width =maxDotGraphWidthString.toInt(&ok); if (!ok) { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n" + warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" "Using the default of 1024 pixels!\n"); width=1024; } @@ -466,7 +488,7 @@ void configStrToVal() int height =maxDotGraphHeightString.toInt(&ok); if (!ok) { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n" + warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" "Using the default of 1024 pixels!\n"); height=1024; } diff --git a/addon/configgen/configgen.cpp b/addon/configgen/configgen.cpp index c9d5a2d..95aab45 100644 --- a/addon/configgen/configgen.cpp +++ b/addon/configgen/configgen.cpp @@ -775,8 +775,8 @@ void init() "information to generate all constant output in the proper language. \n" "The default language is English, other supported languages are: \n" "Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n" - "Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, \n" - "Portuguese and Slovene.\n" + "Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, \n" + "Polish, Portuguese and Slovene.\n" ); ConfigString::addFixedValue("outputLanguage","Croatian"); ConfigString::addFixedValue("outputLanguage","Czech"); @@ -789,6 +789,7 @@ void init() ConfigString::addFixedValue("outputLanguage","Italian"); ConfigString::addFixedValue("outputLanguage","Japanese"); ConfigString::addFixedValue("outputLanguage","Korean"); + ConfigString::addFixedValue("outputLanguage","Norwegian"); ConfigString::addFixedValue("outputLanguage","Romanian"); ConfigString::addFixedValue("outputLanguage","Russian"); ConfigString::addFixedValue("outputLanguage","Polish"); @@ -1169,6 +1170,14 @@ void init() "to standard output. \n", ConfigString::File ); + ConfigBool::add( "filterForSourceFlag", + "FILTER_SOURCE_FILES", + "FALSE", + "do we filter source files?", + "If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n" + "INPUT_FILTER) will be used to filter the input files when producing source \n" + "files to browse. \n" + ); //----------------------------------------------------------------------------------------------- ConfigInfo::add( "Index","configuration options related to the alphabetical class index"); @@ -1279,6 +1288,15 @@ void init() "the value YES disables it. \n" ); addDependency("noIndexFlag","generateHtml"); + ConfigInt::add( "enumValuesPerLine", + "ENUM_VALUES_PER_LINE", + "4", + "number of enum values that are put on one line", + "This tag can be used to set the number of enum values (range [1..20]) \n" + "that doxygen will group on one line in the generated HTML documentation. \n", + 1,20 + ); + addDependency("enumValuesPerLine","generateHtml"); //----------------------------------------------------------------------------------------------- ConfigInfo::add( "LaTeX","configuration options related to the LaTeX output"); //----------------------------------------------------------------------------------------------- diff --git a/addon/doxywizard/doxywizard_templ.cpp b/addon/doxywizard/doxywizard_templ.cpp index 00ed10c..4ba932a 100644 --- a/addon/doxywizard/doxywizard_templ.cpp +++ b/addon/doxywizard/doxywizard_templ.cpp @@ -126,6 +126,10 @@ Wizard::Wizard(int argc,char **argv) : new QToolButton( QPixmap( filesave_xpm ), "Save File", QString::null, this, SLOT(saveFile()), fileTools, "save file" ); + //Micha: QToolButton * = + new QToolButton( QPixmap( rundoxygen_xpm ), "Save and Run doxygen", QString::null, + this, SLOT(runDoxygen()), fileTools, "save and run doxygen" ); + QWhatsThis::whatsThisButton( fileTools ); @@ -142,10 +146,10 @@ Wizard::Wizard(int argc,char **argv) : file->insertItem( "&Quit", this, SLOT(quit()), CTRL+Key_Q ); // Doxygen popupmenu - //QPopupMenu* doxygen = new QPopupMenu; - //int itemIndex = doxygen->insertItem( "&Run" ); - //doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." ); - //doxygen->setItemEnabled( itemIndex, FALSE ); + QPopupMenu* doxygen = new QPopupMenu; + int itemIndex = doxygen->insertItem( QIconSet(QPixmap(rundoxygen_xpm)), + "&Run", this, SLOT(runDoxygen()), CTRL+Key_R ); + doxygen->setWhatsThis ( itemIndex, "Run doxygen with the current configuration file..." ); // Help popupmenu QPopupMenu* help = new QPopupMenu; @@ -154,7 +158,7 @@ Wizard::Wizard(int argc,char **argv) : // menubar definition menuBar()->insertItem( "&File", file ); - //menuBar()->insertItem( "&Doxygen", doxygen ); + menuBar()->insertItem( "&Doxygen", doxygen ); menuBar()->insertSeparator(); menuBar()->insertItem( "&Help", help ); @@ -262,10 +266,20 @@ void Wizard::saveAsFile() } saveConfig(configFileName); - statusBar()->message("Saved as "+ configFileName, messageTimeout ); + statusBar()->message("Saved as "+ configFileName, messageTimeout ); +} + +//Micha +void Wizard::runDoxygen() +{ + saveFile(); + QString s = "doxygen " + configFileName; + system((const char*)s); + statusBar()->message("doxygen completed: "+ configFileName, messageTimeout ); hasChanged = FALSE; refreshCaption(); -} +} + void Wizard::quit() { diff --git a/addon/doxywizard/doxywizard_templ.h b/addon/doxywizard/doxywizard_templ.h index e0c228e..9df50bf 100644 --- a/addon/doxywizard/doxywizard_templ.h +++ b/addon/doxywizard/doxywizard_templ.h @@ -43,6 +43,7 @@ class Wizard : public QMainWindow void quit(); void changed(); void about(); + void runDoxygen(); // Micha signals: diff --git a/addon/doxywizard/pixmaps.cpp b/addon/doxywizard/pixmaps.cpp index e3631c5..6ae7f60 100644 --- a/addon/doxywizard/pixmaps.cpp +++ b/addon/doxywizard/pixmaps.cpp @@ -201,4 +201,38 @@ static const char *filesave_xpm_data[] = "b............." }; const char **filesave_xpm = (const char **)filesave_xpm_data; +/* XPM */ +static const char *rundoxygen_xpm_data[] = +{ + "16 16 11 1", +" c None", +". c #000000", +"+ c #DCDCDC", +"@ c #A0A0A0", +"# c #C3C3C3", +"$ c #808080", +"% c #FFA858", +"& c #FFDCA8", +"* c #FFFFC0", +"= c #FFFFFF", +"- c #585858", +" .. ", +" .. .++. .. ", +" .+@.@##@.@+. ", +" .@+$@%%@$+@. ", +" .$%%&%&%$. ", +" ..+@%&$$%&@+.. ", +".+#@%&%@@&*%@#+.", +".$@+$&*&&=*$+@$.", +" .--+$&*=&$+--. ", +" .$#++$$++#$. ", +" .@=$-$++$-$=@. ", +" .+@-..@@..-@+. ", +" ... .+=. ... ", +" .-$. ", +" .. ", +" " +}; + +const char **rundoxygen_xpm = (const char **)rundoxygen_xpm_data; diff --git a/addon/doxywizard/pixmaps.h b/addon/doxywizard/pixmaps.h index 6c0bb97..b95b75f 100644 --- a/addon/doxywizard/pixmaps.h +++ b/addon/doxywizard/pixmaps.h @@ -22,5 +22,6 @@ extern const char** del_xpm; extern const char** update_xpm; extern const char** fileopen_xpm; extern const char** filesave_xpm; +extern const char** rundoxygen_xpm; #endif diff --git a/configure b/configure index 9f5021a..7105cfb 100755 --- a/configure +++ b/configure @@ -351,26 +351,26 @@ touch .tmakeconfig if test "$f_shared" = NO; then if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then cat >> .tmakeconfig <> .tmakeconfig <> .tmakeconfig <> .tmakeconfig <> .tmakeconfig < \subsection cmdsubsection \subsection (subsection title) @@ -966,7 +967,8 @@ Public/Protected/Private/... section. \e not in other documentation blocks! \sa - Section \ref cmdpage "\\page" for an example of the \\cmdsubsection command. + Section \ref cmdpage "\\page" for an example of the + \ref cmdsubsection "\\cmdsubsection" command.
diff --git a/doc/config.doc b/doc/config.doc index 1d3046f..231cbe9 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -87,6 +87,7 @@ followed by the descriptions of the tags grouped by category.
  • \refitem cfg_doc_url DOC_URL
  • \refitem cfg_dot_path DOT_PATH
  • \refitem cfg_enable_preprocessing ENABLE_PREPROCESSING +
  • \refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE
  • \refitem cfg_enabled_sections ENABLED_SECTIONS
  • \refitem cfg_example_path EXAMPLE_PATH
  • \refitem cfg_example_patterns EXAMPLE_PATTERNS @@ -212,15 +213,6 @@ followed by the descriptions of the tags grouped by category. Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese, Korean, Spanish, Russian, Croatian, Polish and Portuguese. -\anchor cfg_disable_index -
    \c DISABLE_INDEX
    - \addindex DISABLE_INDEX - If you want full control over the layout of the generated HTML pages it - might be necessary to disable the index and replace it with your own. - The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at - top of each page. A value of NO (the default) enables the index and the - value YES disables it. - \anchor cfg_extract_all
    \c EXTRACT_ALL
    \addindex EXTRACT_ALL @@ -578,6 +570,13 @@ followed by the descriptions of the tags grouped by category. input file. Doxygen will then use the output that the filter program writes to standard output. +\anchor cfg_filter_source_files +
    \c FILTER_SOURCE_FILES
    + \addindex FILTER_SOURCE_FILES + If the \c FILTER_SOURCE_FILES tag is set to \c YES, the input filter (if set using + \c INPUT_FILTER ) will be used to filter the input files when producing source + files to browse. + \subsection alphabetical_index Alphabetical index options @@ -723,6 +722,21 @@ followed by the descriptions of the tags grouped by category. (which basically renders \c doxysearch obsolete on Windows). The HTML workshop also contains a viewer for compressed HTML files. +\anchor cfg_disable_index +
    \c DISABLE_INDEX
    + \addindex DISABLE_INDEX + If you want full control over the layout of the generated HTML pages it + might be necessary to disable the index and replace it with your own. + The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at + top of each page. A value of NO (the default) enables the index and the + value YES disables it. + +\anchor cfg_enum_values_per_line +
    \c ENUM_VALUES_PER_LINE
    + \addindex ENUM_VALUES_PER_LINE + This tag can be used to set the number of enum values (range [1..20]) + that doxygen will group on one line in the generated HTML documentation. + \subsection latex_output LaTeX related options \anchor cfg_generate_latex diff --git a/doc/index.doc b/doc/index.doc index 0f7023f..682d921 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -41,10 +41,6 @@ See the GNU General Public License for more details.

    -It is hereby explicitly allowed that this program may be linked against -Troll Tech's Qt library, -and distributed, without the GPL applying to Qt. -

    Documents produced by Doxygen are derivative works derived from the input used in their production; they are not affected by this license. diff --git a/doc/install.doc b/doc/install.doc index 3b0c6b2..1bb1dd2 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -22,18 +22,21 @@ First go to the \latexonly({\tt http://www.stack.nl/$\sim$dimitri/doxygen/download.html})\endlatexonly to get the latest distribution, if you did not have it already. +This section is divided into the following subsections: +

      +
    • \ref install_src_unix "Compiling from source on Unix" +
    • \ref install_bin_unix "Installating the binaries on Unix" +
    • \ref unix_problems "Known compilation problems for Unix" +
    • \ref install_src_windows "Compiling from source on Windows" +
    • \ref install_bin_windows "Installating the binaries on Windows" +
    • \ref build_tools "Tools used to develop doxygen" +
    + \subsection install_src_unix Compiling from source on Unix If you downloaded the source distribution, you need at least the following to build the executable:
      -
    • Troll Tech's GUI toolkit - Qt - \latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly. - \addindex Qt - You can download either version 1.44 or version 2.1.x. - If want to build the GUI front-end you will need Qt 2.1.x. If you do - not need it, using Qt 1.44 will result in a somewhat smaller executable.
    • The GNU tools flex, bison and make \addindex flex @@ -49,14 +52,18 @@ To take full advantage of doxygen's features the following additional tools should be installed.
        +
      • Troll Tech's GUI toolkit version 2.x.y + Qt + \latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly. + \addindex Qt + This is needed to build the GUI front-end.
      • A \f$\mbox{\LaTeX}\f$ distribution: for instance teTeX 1.0.
        This is needed for generating LaTeX, Postscript, and PDF output.
      • the Graph visualization toolkit version 1.5
        Needed for the include dependency graphs, - the graphical inheritance graphs, - and the collaboration graphs. + the graphical inheritance graphs, and the collaboration graphs.
      • The ghostscript interpreter.
      @@ -76,8 +83,8 @@ Compilation is now done by performing the following steps: sh ./configure \endverbatim - The script tries to determine the platform you use, the location - of the Qt library, the make tool (which \e must be GNU make) and the perl + The script tries to determine the platform you use, the make tool + (which \e must be GNU make) and the perl interpreter. It will report what it finds. To override the auto detected platform and compiler you can run @@ -331,17 +338,36 @@ doxygen for Windows. Here is what is required:
      • WinZip to unpack the tar source distribution. This can be found at - http://www.winzip.com + http://www.winzip.com/ . + + The good, tested, and free alternative is the tar utility + supplied with cygwin + tools. Anyway, the cygwin's flex, bison, and sed are also + recommended below. + + Notice (not related to tar): The good alternative to the WinZip, + concerning the zipping/unzipping are the Zip/UnZip utilities by + Info-ZIP which are available for free from + ftp://ftp.freesoftware.com/pub/infozip/index.html . + There also are archives with binaries for Windows. The tip is to + download the unz540xN.exe and zip23xN.zip (they were used without + problems here) which + contain UnZip, Zip, and other auxiliary (but not necessary) + utilities related to the UnZip and Zip. + It may be the case that +
      • Microsoft Visual C++ (I only tested with version 6.0). Use the vcvars32.bat batch file to set the environment variables (if you did not select to do this automatically during installation). +
      • Perl 5.0 or higher for Windows. This can be download from: http://www.ActiveState.com/Products/ActivePerl/ -
      • The GNU tools flex, bison and sed. + +
      • The GNU tools flex, bison, and sed. To get these working on Windows you should install the - cygwin tools - \latexonly(see {\tt http://sourceware.cygnus.com/cygwin/})\endlatexonly. + cygwin tools + \latexonly(see {\tt http://sources.redhat.com/cygwin/})\endlatexonly. Make sure the BISONLIB environment variable points to the location where the files bison.simple and @@ -349,55 +375,67 @@ Here is what is required: Also make sure the tools are available from a dos box, by adding the directory they are in to the search path. - -
      • A professional license of + + For those of you who are very new to cygwin (if you are going to + install it from scratch), you should notice that there is an + archive file bootstrap.zip which also contains the + tar utility (tar.exe), gzip + utilities, and the cygwin1.dll core. This also means + that you have the tar in hands from the start. It + can be used to unpack the tar source distribution instead of + using WinZip -- as mentioned at the beginning of this list of + steps. + +
      • Since Doxygen-1.2.2-20001015, the distribution includes the part + of Qt-2.2.0 that is needed for compilation of doxygen, doxytag, + and doxysearch. The missing files for Windows were also created. + This allows compilation of doxygen on systems without X11 or the + full Qt. For doxywizard Qt-2.2 is still required however. + + You may be interested in the professional license of Qt for Windows - \latexonly\par (see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly. + \latexonly\par (see + {\tt http://www.trolltech.com/products/qt.html})\endlatexonly. - If you do not have that and you can live without the GUI front-end - you can also download Qt-1.44 for X11. Doxygen only the depends on - the tools section of the Qt library, which happens also to compile - on Windows. (Qt version 2.1.x does not work anymore, at least not - without adding some window's specific code). - - Now create the following directories: - -\verbatim - qtools/src - qtools/include - qtools/lib -\endverbatim - - Copy the contents of the src/tools directory of the - Qt-1.44 for X11 archive to qtools/src. Also copy the include - files in src/tools to qtools/include. Create a - static library project resulting in qtools/lib/qt.lib and - add the files in qtools/src to that project. Then - build the library and set the environment variable QTDIR - to the absolute path of the qtools directory. - -
      • To generate LaTeX documentation or formulas in HTML you need the tools: - latex, dvips and gswin32 - To get these working under Windows install the fpTeX distribution - You can download it at: +
      • To generate LaTeX documentation or formulas in HTML you need the tools: + latex, dvips and gswin32. + To get these working under Windows + install the fpTeX distribution You can download it at: ftp://ctan.tug.org/tex-archive/systems/win32/web2c/fptex-0.3/ Make sure the tools are available from a dos box, by adding the directory they are in to the search path. + For your information, the LaTeX is freely available set of so + called macros and styles on the top of the famous TeX program + (by famous Donald Knuth) and the accompanied utilities (all + available for free). It is used to for high quality + typesetting. The result -- in the form of so called + DVI (DeVice Independent) file -- can be printed or + displayed on various devices preserving exactly the same look up + to the capability of the device. The dvips allows you + to convert the dvi to the high quality PostScript + (i.e. PostScript that can be processed by utilities like + psnup, psbook, psselect, + and others). The derived version of TeX (the pdfTeX) can be used + to produce PDF output instead of DVI, or the PDF can be produced + from PostScript using the utility ps2pdf. +
      • If you want to generate compressed HTML help (see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the config file, then you need the Microsoft HTML help workshop. You can download it at: http://msdn.microsoft.com/workshop/author/htmlhelp +
      • If you used WinZip to extract the tar archive it will (apparently) not create empty folders, so you have to add the folders objects and bin manually in the root of the distribution before compiling. +
      • the Graph visualization toolkit version 1.5
        Needed for the include dependency graphs, the graphical inheritance graphs, - and the collaboration graphs.
        + and the collaboration graphs.
      Compilation is now done by performing the following steps: @@ -406,10 +444,15 @@ Compilation is now done by performing the following steps:
    • Open a dos box. Make sure all tools (i.e. nmake, latex, gswin32, dvips, sed, - flex, bison, - cl, rm and perl), are accessible from the command-line - (add them to the PATH environment variable if needed). - + flex, bison, cl, + rm, and perl), are accessible from + the command-line (add them to the PATH environment variable if + needed). + + Notice: The use of LaTeX is optional and only needed for compilation + of the documentation into PostScript or PDF. + It is \e not needed for compiling the doxygen's binaries. +
    • goto the doxygen root dir and type: \verbatim @@ -421,29 +464,28 @@ Compilation is now done by performing the following steps: doxysearch.exe (The compiler should not produce any serious warnings or errors). -
    • To build the examples type: - -\verbatim - nmake examples -\endverbatim - -
    • To generate the HTML documentation type: +
    • To build the examples, go to the examples subdirectory + and type: \verbatim - nmake docs + nmake \endverbatim - The generated docs are located in the html directory. - -
    • - To generate the postscript and PDF manual type: +
    • To generate the doxygen documentation, do ensure, that the + html and latex subdirectories exist. + Then go to the doc subdirectory and type: \verbatim - nmake pdf + doxygen + nmake \endverbatim - The manual should now be in latex/doxygen_manual.pdf + The generated docs int HTML are located in the html + subdirectory. + The sources for LaTeX documentation are located in latex + subdirectory. From those sources, the DVI, PostScript, and PDF + documentation can be generated. \subsection install_bin_windows Installating the binaries on Windows diff --git a/doc/language.doc b/doc/language.doc index 83787e3..8a6fcf6 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -46,8 +46,8 @@ Here is a list of the languages and their current maintainers: Jens Breitenstein - - j@NOSPAM.js-b.de + + Jens.Breitenstein@NOSPAM.tlc.de @@ -227,7 +227,7 @@ Here is a list of the languages and their current maintainers: \hline {\bf Language} & {\bf Maintainer} & {Contact address} \\ \hline - German & Jens Breitenstein & {\tt j@jb-s.de} \\ + German & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} \\ \hline French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\ \hline diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc index 2e1ee36..2300525 100644 --- a/doc/preprocessing.doc +++ b/doc/preprocessing.doc @@ -168,7 +168,9 @@ PREDEFINED = DECLARE_REGISTRY_RESOURCEID=// \ "ATL_NO_VTABLE= "\ "__declspec(a)= "\ BEGIN_CONNECTION_POINT_MAP=/* \ - END_CONNECTION_POINT_MAP=*/// + END_CONNECTION_POINT_MAP=*/// \ + "DECLARE_AGGREGATABLE(Class)= " \ + "DECLARE_REGISTRY_RESOURCEID(id)= " \endverbatim As you can see doxygen's preprocessor is quite powerful, but if you want diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index ee917cc..1410ae0 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,5 +1,5 @@ Name: doxygen -Version: 1.2.2-20001015 +Version: 1.2.3 Summary: documentation system for C, C++ and IDL Release: 1 Source0: doxygen-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 9289375..49846b6 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -727,7 +727,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ClassDef *cd=bcd->classDef; if (cd->isLinkable()) { - if (!Config::genTagFile.isEmpty()) tagFile << cd->getOutputFileBase() << "?"; + if (!Config::genTagFile.isEmpty()) tagFile << cd->name() << "?"; ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers); } else diff --git a/src/code.l b/src/code.l index 10d706f..9323361 100644 --- a/src/code.l +++ b/src/code.l @@ -127,12 +127,9 @@ static QCString g_saveType; * is TRUE. If a definition starts at the current line, then the line * number is linked to the documentation of that definition. */ -static void startCodeLine(OutputList &ol) +static void startCodeLine() { - if (g_currentFontClass) - { - g_code->endFontClass(); - } + //if (g_currentFontClass) { g_code->endFontClass(); } if (g_sourceFileDef) { QCString lineNumber,lineAnchor; @@ -149,25 +146,32 @@ static void startCodeLine(OutputList &ol) g_searchingForBody = TRUE; g_bodyCurlyCount = 0; if (g_currentMemberDef) anchor=g_currentMemberDef->anchor(); - ol.startCodeAnchor(lineAnchor); - ol.writeCodeLink(d->getReference(),d->getOutputFileBase(), + g_code->startCodeAnchor(lineAnchor); + g_code->writeCodeLink(d->getReference(),d->getOutputFileBase(), anchor,lineNumber); - ol.endCodeAnchor(); - ol.codify(" "); + g_code->endCodeAnchor(); + g_code->codify(" "); } else { - ol.codify(lineNumber); - ol.codify(" "); + g_code->codify(lineNumber); + g_code->codify(" "); } } - ol.startCodeLine(); + g_code->startCodeLine(); if (g_currentFontClass) { g_code->startFontClass(g_currentFontClass); } } + +static void endCodeLine() +{ + if (g_currentFontClass) { g_code->endFontClass(); } + g_code->endCodeLine(); +} + /*! write a code fragment `text' that may span multiple lines, inserting * line numbers for each line. */ @@ -185,10 +189,10 @@ static void codifyLines(char *text) g_yyLineNr++; *(p-1)='\0'; g_code->codify(sp); - g_code->endCodeLine(); + endCodeLine(); if (g_yyLineNr"*/"{B}*\n({B}*\n)*({B}*(("//@"[{}])|("/*@"[{}]"*/")){B}*\n)? { g_yyLineNr+=QCString(yytext).contains('\n'); - g_code->endCodeLine(); + endCodeLine(); if (g_yyLineNrendCodeLine(); + endCodeLine(); if (g_yyLineNrendCodeLine(); + endCodeLine(); if (g_yyLineNrendCodeLine(); + endCodeLine(); if (g_yyLineNrendCodeLine(); + endCodeLine(); if (g_yyLineNrendCodeLine(); ol+=*g_code; delete g_code; return; diff --git a/src/config.h b/src/config.h index a85fc68..a3165d7 100644 --- a/src/config.h +++ b/src/config.h @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Tue Oct 10 22:16:03 2000 +/* This file was generated by configgen on Sat Oct 28 15:42:39 2000 * from config_templ.h * * DO NOT EDIT! @@ -84,6 +84,7 @@ struct Config static QStrList examplePatternList; // list of example patterns static QStrList imagePath; // list of image paths static QCString inputFilter; // a filter command that is applied to input files + static bool filterForSourceFlag; // do we filter source files? static bool alphaIndexFlag; // should an alphabetical index be generated? static int colsInAlphaIndex; // number of columns in the alphabetical index static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index @@ -95,6 +96,7 @@ struct Config static bool htmlAlignMemberFlag; // align members in HTML using tables. static bool htmlHelpFlag; // should html help files be generated? static bool noIndexFlag; // generate condensed index flag + static int enumValuesPerLine; // number of enum values that are put on one line static bool generateLatex; // generate Latex output static QCString latexOutputDir; // the directory to put the Latex files static bool compactLatexFlag; // generate compact LaTeX documentation. diff --git a/src/config.l b/src/config.l index 86b6578..d158cdb 100644 --- a/src/config.l +++ b/src/config.l @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Tue Oct 10 22:16:03 2000 +/* This file was generated by configgen on Sat Oct 28 15:42:39 2000 * from config_templ.l * * DO NOT EDIT! @@ -121,6 +121,7 @@ QStrList Config::examplePath; QStrList Config::examplePatternList; QStrList Config::imagePath; QCString Config::inputFilter; +bool Config::filterForSourceFlag = FALSE; bool Config::alphaIndexFlag = FALSE; int Config::colsInAlphaIndex = 5; QStrList Config::ignorePrefixList; @@ -132,6 +133,7 @@ QCString Config::htmlStyleSheet; bool Config::htmlAlignMemberFlag = TRUE; bool Config::htmlHelpFlag = FALSE; bool Config::noIndexFlag = FALSE; +int Config::enumValuesPerLine = 4; bool Config::generateLatex = TRUE; QCString Config::latexOutputDir = "latex"; bool Config::compactLatexFlag = FALSE; @@ -211,6 +213,7 @@ static int includeDepth; static QCString tabSizeString; static QCString colsInAlphaIndexString; +static QCString enumValuesPerLineString; static QCString maxDotGraphWidthString; static QCString maxDotGraphHeightString; @@ -253,8 +256,12 @@ static FILE *tryPath(const char *path,const char *fileName) return 0; } +static void substEnvVarsInStrList(QStrList &sl); +static void substEnvVarsInString(QCString &s); + static FILE *findFile(const char *fileName) { + substEnvVarsInStrList(includePathList); char *s=includePathList.first(); while (s) // try each of the include paths { @@ -275,6 +282,7 @@ static void readIncludeFile(const char *incName) } QCString inc = incName; + substEnvVarsInString(inc); inc = inc.stripWhiteSpace(); uint incLen = inc.length(); if (inc.at(0)=='"' && inc.at(incLen-1)=='"') // strip quotes @@ -389,6 +397,7 @@ static void readIncludeFile(const char *incName) "IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } "IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; } "INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } +"FILTER_SOURCE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::filterForSourceFlag; } "ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; } "COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } "IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } @@ -401,6 +410,7 @@ static void readIncludeFile(const char *incName) "HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } "GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } "DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } +"ENUM_VALUES_PER_LINE"[ \t]*"=" { BEGIN(GetString); s=&enumValuesPerLineString; s->resize(0); } "GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } "LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } "COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } @@ -678,6 +688,7 @@ void dumpConfig() } } printf("inputFilter=`%s'\n",Config::inputFilter.data()); + printf("filterForSourceFlag=`%d'\n",Config::filterForSourceFlag); printf("# configuration options related to the alphabetical class index\n"); printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag); printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex); @@ -698,6 +709,7 @@ void dumpConfig() printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); printf("noIndexFlag=`%d'\n",Config::noIndexFlag); + printf("enumValuesPerLine=`%d'\n",Config::enumValuesPerLine); printf("# configuration options related to the LaTeX output\n"); printf("generateLatex=`%d'\n",Config::generateLatex); printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data()); @@ -853,6 +865,7 @@ void Config::init() Config::examplePatternList.clear(); Config::imagePath.clear(); Config::inputFilter.resize(0); + Config::filterForSourceFlag = FALSE; Config::alphaIndexFlag = FALSE; Config::colsInAlphaIndex = 5; Config::ignorePrefixList.clear(); @@ -864,6 +877,7 @@ void Config::init() Config::htmlAlignMemberFlag = TRUE; Config::htmlHelpFlag = FALSE; Config::noIndexFlag = FALSE; + Config::enumValuesPerLine = 4; Config::generateLatex = TRUE; Config::latexOutputDir = "latex"; Config::compactLatexFlag = FALSE; @@ -1536,6 +1550,17 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using \n"; + t << "# INPUT_FILTER) will be used to filter the input files when producing source \n"; + t << "# files to browse. \n"; + t << "\n"; + } + t << "FILTER_SOURCE_FILES = "; + writeBoolValue(t,Config::filterForSourceFlag); + t << "\n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the alphabetical class index\n"; @@ -1673,6 +1698,16 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# This tag can be used to set the number of enum values (range [1..20]) \n"; + t << "# that doxygen will group on one line in the generated HTML documentation. \n"; + t << "\n"; + } + t << "ENUM_VALUES_PER_LINE = "; + writeIntValue(t,Config::enumValuesPerLine); + t << "\n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the LaTeX output\n"; @@ -2286,6 +2321,23 @@ void configStrToVal() } Config::colsInAlphaIndex=cols; } + + if (enumValuesPerLineString.isEmpty()) + { + Config::enumValuesPerLine=4; + } + else + { + bool ok; + int cols = enumValuesPerLineString.toInt(&ok); + if (!ok || cols<1 || cols>20) + { + warn_cont("Warning: argument of ENUM_VALUES_PER_LINE is not a valid number in the range [1..20]!\n" + "Using the default of 4!\n"); + cols = 4; + } + Config::enumValuesPerLine=cols; + } if (maxDotGraphWidthString.isEmpty()) { @@ -2297,7 +2349,7 @@ void configStrToVal() int width =maxDotGraphWidthString.toInt(&ok); if (!ok) { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n" + warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" "Using the default of 1024 pixels!\n"); width=1024; } @@ -2322,7 +2374,7 @@ void configStrToVal() int height =maxDotGraphHeightString.toInt(&ok); if (!ok) { - warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n" + warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [100..30000]!\n" "Using the default of 1024 pixels!\n"); height=1024; } diff --git a/src/declinfo.l b/src/declinfo.l index a6cafc4..84e2abd 100644 --- a/src/declinfo.l +++ b/src/declinfo.l @@ -136,7 +136,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+) {B}+ { addType(); } -{B}*"("({ID}"::")*{B}*"*" { +{B}*"("({ID}"::")*{B}*"*"({B}*("const"|"volatile"){B}+)? { addType(); QCString text=yytext; type+=text.stripWhiteSpace(); diff --git a/src/define.h b/src/define.h index 09e0140..060270e 100644 --- a/src/define.h +++ b/src/define.h @@ -20,7 +20,7 @@ #include "qtbc.h" #include -#include "util.h" +#include class FileDef; diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 621039d..6d390b5 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1307,6 +1307,7 @@ void buildVarList(Entry *root) ) || (root->section==Entry::FUNCTION_SEC && // function variable !root->type.isEmpty() && root->type.find(re,0)!=-1 && + // special case to catch function pointers root->type.find("operator")==-1 && root->type.find(")(")==-1 ) ) diff --git a/src/filedef.cpp b/src/filedef.cpp index 6ce4c86..c4fe0f1 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -422,11 +422,6 @@ void FileDef::writeDocumentation(OutputList &ol) /*! Write a source listing of this file to the output */ void FileDef::writeSource(OutputList &ol) { - //QCString fn=name(); - //if (Config::fullPathNameFlag) - //{ - // fn.prepend(stripFromPath(getPath().copy())); - //} ol.disableAllBut(OutputGenerator::Html); startFile(ol,sourceName(),docname+" Source File"); startTitle(ol,0); @@ -440,11 +435,9 @@ void FileDef::writeSource(OutputList &ol) ol.endTextLink(); } - //parseText(ol,theTranslator->trVerbatimText(incFile->name())); - //ol.writeRuler(); initParseCodeContext(); ol.startCodeFragment(); - parseCode(ol,0,fileToString(absFilePath()),FALSE,0,this); + parseCode(ol,0,fileToString(absFilePath(),TRUE),FALSE,0,this); ol.endCodeFragment(); endFile(ol); ol.enableAll(); diff --git a/src/index.cpp b/src/index.cpp index f470341..383b41f 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1199,7 +1199,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections) { char lastChar=0; bool first=TRUE; - ol.startItemList(); + //ol.startItemList(); MemberName *mn=functionNameList.first(); while (mn) { diff --git a/src/language.cpp b/src/language.cpp index e7a9576..0711aa3 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -36,6 +36,7 @@ #include "translator_ro.h" #include "translator_si.h" #include "translator_cn.h" +#include "translator_no.h" #endif #define L_EQUAL(a) !stricmp(langName,a) diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 1c2e940..7a20e12 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1198,7 +1198,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, bmd->anchor(),bcd->name()); if ( bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { - writePageRef(ol,bcd->name(),bmd->anchor()); + writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor()); } } else @@ -1207,7 +1207,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, 0,bcd->name()); if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { - writePageRef(ol,bcd->name(),0); + writePageRef(ol,bcd->getOutputFileBase(),0); } } parseText(ol,reimplFromLine.right( @@ -1273,7 +1273,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, bmd->anchor(),bcd->name()); if (bcd->isLinkableInProject()/* && !Config::pdfHyperFlag*/ ) { - writePageRef(ol,bcd->name(),bmd->anchor()); + writePageRef(ol,bcd->getOutputFileBase(),bmd->anchor()); } } ++mli; diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 3e7b7a0..17b9226 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -302,7 +302,6 @@ void MemberList::writePlainDeclarations(OutputList &ol, typeDecl.writeChar(' '); } - const uint MAX_ENUM_VALUES_FOR_ONE_LINE = 4; int enumMemCount=0; typeDecl.docify("{ "); @@ -313,8 +312,8 @@ void MemberList::writePlainDeclarations(OutputList &ol, while (fmd) { /* in html we start a new line after a number of items */ - if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE - && (enumMemCount%MAX_ENUM_VALUES_FOR_ONE_LINE)==0 + if (fmdl->count()>(uint)Config::enumValuesPerLine + && (enumMemCount%(uint)Config::enumValuesPerLine)==0 ) { typeDecl.pushGeneratorState(); @@ -348,7 +347,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, typeDecl.enable(OutputGenerator::Man); enumMemCount++; } - if (fmdl->count()>MAX_ENUM_VALUES_FOR_ONE_LINE) + if (fmdl->count()>(uint)Config::enumValuesPerLine) { typeDecl.pushGeneratorState(); typeDecl.disableAllBut(OutputGenerator::Html); diff --git a/src/pre.l b/src/pre.l index f08aaa9..e18c61e 100644 --- a/src/pre.l +++ b/src/pre.l @@ -92,6 +92,7 @@ static int g_findDefArgContext; static QCString g_lastGuardName; static QCString g_incName; static QCString g_guardExpr; +static int g_curlyCount; static void setFileName(const char *name) { @@ -818,12 +819,12 @@ void addDefine() static void outputChar(char c) { - if (g_includeStack.isEmpty()) g_outputBuf->addChar(c); + if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addChar(c); } static void outputArray(const char *a,int len) { - if (g_includeStack.isEmpty()) g_outputBuf->addArray(a,len); + if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addArray(a,len); } static void readIncludeFile(const QCString &inc) @@ -917,6 +918,7 @@ BN [ \t\r\n] %x SkipCommand %x SkipLine %x CopyLine +%x CopyString %x Include %x IncludeID %x DefName @@ -967,6 +969,41 @@ BN [ \t\r\n] outputArray(yytext,yyleng); } */ + +"{" { // count brackets inside the main file + if (g_includeStack.isEmpty()) + g_curlyCount++; + outputChar(*yytext); + } +"}" { // count brackets inside the main file + if (g_includeStack.isEmpty()) + g_curlyCount--; + outputChar(*yytext); + ASSERT(g_curlyCount>=0); + } +"'"\\[0-7]{1,3}"'" { + outputArray(yytext,yyleng); + } +"'"\\."'" { + outputArray(yytext,yyleng); + } +"'"."'" { + outputArray(yytext,yyleng); + } +\" { + outputChar(*yytext); + BEGIN( CopyString ); + } +[^\"\\]+ { + outputArray(yytext,yyleng); + } +\\. { + outputArray(yytext,yyleng); + } +\" { + outputChar(*yytext); + BEGIN( CopyLine ); + } {ID}/{BN}*"(" { Define *def=0; //printf("Search for define %s\n",yytext); @@ -1726,6 +1763,7 @@ void preprocessFile(const char *fileName,BufStr &output) uint orgOffset=output.curPos(); //#endif + g_curlyCount=0; g_outputBuf=&output; g_includeStack.setAutoDelete(TRUE); g_includeStack.clear(); diff --git a/src/scanner.l b/src/scanner.l index a12189b..5d8484e 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -1615,7 +1615,14 @@ TITLE [tT][iI][tT][lL][eE] } {SCOPENAME} { current->name = yytext; - BEGIN( EndFuncPtr ); + if (current->name=="const" || current->name=="volatile") + { + funcPtrType += current->name; + } + else + { + BEGIN( EndFuncPtr ); + } } . { //printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName); @@ -2337,7 +2344,7 @@ TITLE [tT][iI][tT][lL][eE] } . { current->program += *yytext ; } -("//"{B}*)?"/*!" { +("//"{B}*)?"/*!" { //printf("Start doc block at %d\n",yyLineNr); removeSlashes=(yytext[1]=='/'); tmpDocType=-1; @@ -2350,7 +2357,7 @@ TITLE [tT][iI][tT][lL][eE] current->inside = current_root->name+"::"; BEGIN( Doc ); } -("//"{B}*)?"/**"/[^/*] { +("//"{B}*)?"/**"/[^/*] { removeSlashes=(yytext[1]=='/'); lastDocContext = YY_START; if (current_root->section & Entry::SCOPE_MASK) @@ -2382,7 +2389,7 @@ TITLE [tT][iI][tT][lL][eE] } } } -"//!" { +"//!" { current->brief.resize(0); tmpDocType=-1; lastDocContext = YY_START; @@ -2390,7 +2397,7 @@ TITLE [tT][iI][tT][lL][eE] current->inside = current_root->name+"::"; BEGIN( LineDoc ); } -"///"/[^/] { +"///"/[^/] { current->brief.resize(0); tmpDocType=-1; lastDocContext = YY_START; @@ -3181,9 +3188,8 @@ TITLE [tT][iI][tT][lL][eE] current->brief=current->brief.stripWhiteSpace(); BEGIN( lastBriefContext ); } -{BS}/{CMD}("brief"|"short"){BN}+ { +{BS}{CMD}("brief"|"short"){BN}+ { lastBriefContext=YY_START; - BEGIN( ClassDocBrief ); } . { current->brief += *yytext; } {ID}/"(" { diff --git a/src/translator_cz.h b/src/translator_cz.h index 9b758c4..bad2bf2 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -70,6 +70,9 @@ // - Update for "new since 1.2.1" version. The text of trDCOPMethods() // was translated rather blindly (not knowing what exactly // the DCOP means). +// +// 2000/10/17 (Petr Prikryl) +// - Update for "new since 1.2.2" version. // // Notices: // -------- @@ -1108,6 +1111,21 @@ class TranslatorCzech : public Translator { return Decode("Metody 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("Dokumentace k vlastnosti"); + } }; #endif // TRANSLATOR_CZ_H diff --git a/src/translator_jp.h b/src/translator_jp.h index 650dc5d..4946379 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -25,6 +25,9 @@ class TranslatorJapanese : public Translator public: QCString idLanguage() { return "japanese"; } + QCString idLanguageCharset() + { return "euc-jp"; } + /*! returns the name of the package that is included by LaTeX */ QCString latexBabelPackage() { return "a4j"; } diff --git a/src/util.cpp b/src/util.cpp index 02188c4..72701d2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -48,6 +48,11 @@ extern char **environ; #endif +#if defined(_MSC_VER) || defined(__BORLANDC__) +#define popen _popen +#define pclose _pclose +#endif + //------------------------------------------------------------------------ // TextGeneratorOLImpl implementation //------------------------------------------------------------------------ @@ -954,7 +959,7 @@ void setAnchors(char id,MemberList *ml,int groupId) //---------------------------------------------------------------------------- // read a file with `name' to a string. -QCString fileToString(const char *name) +QCString fileToString(const char *name,bool filter) { if (name==0 || name[0]==0) return 0; QFile f; @@ -989,19 +994,47 @@ QCString fileToString(const char *name) err("Error: file `%s' not found\n",name); return ""; } - f.setName(name); - fileOpened=f.open(IO_ReadOnly); - if (fileOpened) + if (Config::inputFilter.isEmpty() || !filter) { - int fsize=f.size(); - QCString contents(fsize+2); - f.readBlock(contents.data(),fsize); - if (fsize==0 || contents[fsize-1]=='\n') - contents[fsize]='\0'; - else - contents[fsize]='\n'; // to help the scanner - contents[fsize+1]='\0'; - f.close(); + f.setName(name); + fileOpened=f.open(IO_ReadOnly); + if (fileOpened) + { + int fsize=f.size(); + QCString contents(fsize+2); + f.readBlock(contents.data(),fsize); + if (fsize==0 || contents[fsize-1]=='\n') + contents[fsize]='\0'; + else + contents[fsize]='\n'; // to help the scanner + contents[fsize+1]='\0'; + f.close(); + return contents; + } + } + else // filter the input + { + QCString cmd=Config::inputFilter+" "+name; + FILE *f=popen(cmd,"r"); + if (!f) + { + err("Error: could not execute filter %s\n",Config::inputFilter.data()); + return ""; + } + const int bSize=4096; + QCString contents(bSize); + int totalSize=0; + int size; + while ((size=fread(contents.data()+totalSize,1,bSize,f))==bSize) + { + totalSize+=bSize; + contents.resize(totalSize+bSize); + } + totalSize+=size+2; + contents.resize(totalSize); + contents.at(totalSize-2)='\n'; // to help the scanner + contents.at(totalSize-1)='\0'; + pclose(f); return contents; } } @@ -2340,7 +2373,8 @@ bool generateRef(OutputList &ol,const char *scName, if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot() || md->isDefine())) { if (argsStr.isEmpty() && (!md->isDefine() || md->argsString()!=0)) - ol.writeString("()"); + // ol.writeString("()") + ; else ol.docify(argsStr); } @@ -2732,7 +2766,7 @@ void extractNamespaceName(const QCString &scopeName, { QCString clName=scopeName.copy(); //QCString nsName; - NamespaceDef *nd; + NamespaceDef *nd = 0; if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0) { // the whole name is a namespace (and not a class) namespaceName=nd->name().copy(); diff --git a/src/util.h b/src/util.h index 2c1ab3d..edcebe8 100644 --- a/src/util.h +++ b/src/util.h @@ -83,7 +83,7 @@ extern void linkifyText(const TextGeneratorIntf &ol,const char *clName,const cha const char *text,bool autoBreak=FALSE,bool external=TRUE); extern void setAnchors(char id,MemberList *ml,int groupId=-1); -extern QCString fileToString(const char *name); +extern QCString fileToString(const char *name,bool filter=FALSE); extern QCString dateToString(bool); extern bool getDefs(const QCString &scopeName, const QCString &memberName, -- cgit v0.12