From 0e5fe1510853a0a05add1a9a25b3958893591328 Mon Sep 17 00:00:00 2001 From: dimitri Date: Fri, 24 Dec 2004 11:05:13 +0000 Subject: Release-1.3.9.1-20041224 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- configure | 3 + doc/maintainers.txt | 1 + packages/rpm/doxygen.spec | 2 +- qtools/scstring.cpp | 8 +- src/declinfo.l | 2 +- src/docparser.cpp | 1 + src/groupdef.cpp | 4 +- src/scanner.l | 34 +++-- src/translator_ke.h | 15 +- src/translator_kr.h | 365 ++++++++++++++++++++++++++++++---------------- src/util.cpp | 12 +- 14 files changed, 300 insertions(+), 157 deletions(-) diff --git a/INSTALL b/INSTALL index 81fe1eb..039e19c 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.3.9.1-20041221 +DOXYGEN Version 1.3.9.1-20041224 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (21 December 2004) +Dimitri van Heesch (24 December 2004) diff --git a/README b/README index 94640ac..37e90c7 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3.9.1_20041221 +DOXYGEN Version 1.3.9.1_20041224 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) (21 December 2004) +Dimitri van Heesch (dimitri@stack.nl) (24 December 2004) diff --git a/VERSION b/VERSION index 7256b0f..f33edb0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.9.1-20041221 +1.3.9.1-20041224 diff --git a/configure b/configure index 0a35411..cbee394 100755 --- a/configure +++ b/configure @@ -517,6 +517,9 @@ done # - generating src/lang_cfg.h +if test -e "src/lang_cfg.h"; then + chmod u+w src/lang_cfg.h # make sure file can be overwritten +fi echo -n " Generating src/lang_cfg.h..." echo $f_langs | $f_perl -e '@l=split(/,/,); chomp @l; diff --git a/doc/maintainers.txt b/doc/maintainers.txt index 4122e39..b3bed25 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -67,6 +67,7 @@ Kenji Nagamatsu: naga@joyful.club.ne.jp Iwasa Kazmi: iwasa@cosmo-system.jp TranslatorKorean +SooYoung Jung: jung5000@gmail.com Richard Kim: ryk@dspwiz.com TranslatorLithuanian diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 7fb95b7..c9d35ca 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3.9.1_20041221 +Version: 1.3.9.1_20041224 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/qtools/scstring.cpp b/qtools/scstring.cpp index a265afe..4a36755 100644 --- a/qtools/scstring.cpp +++ b/qtools/scstring.cpp @@ -151,7 +151,7 @@ SCString &SCString::sprintf( const char *format, ... ) int SCString::find( char c, int index, bool cs ) const { uint len = length(); - if ( m_data==0 || (uint)index>=len ) // index outside string + if ( m_data==0 || (uint)index>len ) // index outside string return -1; register const char *d; if ( cs ) // case sensitive @@ -173,7 +173,7 @@ int SCString::find( char c, int index, bool cs ) const int SCString::find( const char *str, int index, bool cs ) const { uint l = length(); - if ( m_data==0 || (uint)index >= l ) // index outside string + if ( m_data==0 || (uint)index > l ) // index outside string return -1; if ( !str ) // no search string return -1; @@ -222,7 +222,7 @@ int SCString::findRev( char c, int index, bool cs) const } index = len; } - else if ( (uint)index >= len ) // bad index + else if ( (uint)index > len ) // bad index { return -1; } @@ -247,7 +247,7 @@ int SCString::findRev( const char *str, int index, bool cs) const uint len = length(); if ( index < 0 ) // neg index ==> start from end index = len-slen; - else if ( (uint)index >= len ) // bad index + else if ( (uint)index > len ) // bad index return -1; else if ( (uint)(index + slen) > len ) // str would be too long index = len - slen; diff --git a/src/declinfo.l b/src/declinfo.l index 0c67a80..50924d7 100644 --- a/src/declinfo.l +++ b/src/declinfo.l @@ -113,7 +113,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+) %% -"operator" { // operator rule must be before {ID} rule +"operator"/({B}*"["{B}*"]")* { // operator rule must be before {ID} rule name += yytext; BEGIN(Operator); } diff --git a/src/docparser.cpp b/src/docparser.cpp index e7e970a..8e1a487 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -840,6 +840,7 @@ static void handleLinkedWord(DocNode *parent,QList &children) QString name = linkToText(g_token->name,TRUE); int len = g_token->name.length(); ClassDef *cd=0; + //printf("handleLinkedWord(%s)\n",name.data()); if (!g_insideHtmlLink && resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member)) { diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 260348c..0d0e401 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -578,8 +578,8 @@ void GroupDef::writeDocumentation(OutputList &ol) while (gd) { ol.startMemberItem(0); - ol.docify(theTranslator->trGroup(FALSE,TRUE)); - ol.docify(" "); + //ol.docify(theTranslator->trGroup(FALSE,TRUE)); + //ol.docify(" "); ol.insertMemberAlign(); ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle()); if (!Config_getString("GENERATE_TAGFILE").isEmpty()) diff --git a/src/scanner.l b/src/scanner.l index 7708a38..0d8c09d 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -4637,18 +4637,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } "\\"{B}*"\n" { yyLineNr++; } -[^\n\*]+ { +[^\n\\\*]+ { current->type += yytext; current->type = current->type.stripWhiteSpace(); } -"\n" { +"\\_linebr"|"\n" { if( current->groupDocType == Entry::GROUPDOC_NORMAL && current->type.length() == 0 ) warn(yyFileName,yyLineNr, "Warning: missing title after " "\\defgroup %s", current->name.data() ); - yyLineNr++; + if (*yytext=='\n') yyLineNr++; newDocState(); } {FILE} { @@ -4658,6 +4658,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } "\\"{B}*"\n" { yyLineNr++; } +"\\_linebr" { + newDocState(); + } "\n" { yyLineNr++; newDocState(); } @@ -4672,7 +4675,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } "\\"{B}*"\n" { yyLineNr++; } -"\n" { yyLineNr++; +"\n"|"\\linebr" { yyLineNr++; newDocState(); } {B}*"*/" { @@ -4685,9 +4688,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } "\\"{B}*"\n" { yyLineNr++; } -"\n" { +"\n"|"\\_linebr" { current->name = yyFileName; - yyLineNr++; + if (*yytext=='\n') yyLineNr++; newDocState(); if (lastFileDocContext==LineDoc) { @@ -4705,13 +4708,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] "\\"{B}*"\n" { yyLineNr++; current->doc+="\n"; } -"\n" { +"\n"|"\\_linebr" { warn(yyFileName,yyLineNr, "Warning: missing argument after " "\\page." ); current->doc+="\n"; - yyLineNr++; + if (*yytext=='\n') yyLineNr++; BEGIN( Doc ); } .*"\n" { @@ -4728,12 +4731,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] "\\"{B}*"\n" { yyLineNr++; current->doc+="\n"; } -"\n" { +"\n"|"\\_linebr" { warn(yyFileName,yyLineNr, "Warning: missing argument after \\enum." ); current->doc+="\n"; - yyLineNr++; + if (*yytext=='\n') yyLineNr++; BEGIN( Doc ); } {CMD}"refitem".*"\n" { @@ -4766,8 +4769,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] startGroupInDoc(); newDocState(); } -\n { - yyLineNr++; +\n|"\\_linebr" { + if (*yytext=='\n') yyLineNr++; current->doc+="\n"; //printf("Found memberGroup=`%s'\n",memberGroupHeader.data()); startGroupInDoc(); @@ -5328,7 +5331,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] new Grouping(yytext, Grouping::GROUPING_INGROUP) ); } -\n { +"\\_linebr" { + BEGIN( lastGroupContext ); + } +"\n" { yyLineNr++; BEGIN( lastGroupContext ); } @@ -5699,7 +5705,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] unput('/');unput('*'); BEGIN( tmpDocType ); } -"\\_linebr " { +"\\_linebr " { // used to compensate for misalignments due to \n's inside ALIASES current->doc += '\n'; } diff --git a/src/translator_ke.h b/src/translator_ke.h index cc7a106..ec048bb 100644 --- a/src/translator_ke.h +++ b/src/translator_ke.h @@ -15,6 +15,16 @@ * */ +// +// Update: +// +// 2004.12.22 (SooYoung Jung: jung5000@gmail.com) +// - LaTex and RTF were not generated correctly. +// Corrected trRTFansicp and trRTFCharSet. +// It was wrong. +// +// + #ifndef TRANSLATOR_KE_H #define TRANSLATOR_KE_H @@ -32,10 +42,9 @@ class TranslatorKoreanEn : public TranslatorEnglish { return "euc-kr"; } - virtual QCString trRTFansicp() { - return "1252"; + return "949"; } /*! Used as ansicpg for RTF fcharset @@ -43,7 +52,7 @@ class TranslatorKoreanEn : public TranslatorEnglish */ virtual QCString trRTFCharSet() { - return "0"; + return "129"; } }; diff --git a/src/translator_kr.h b/src/translator_kr.h index 337df87..e00e18e 100644 --- a/src/translator_kr.h +++ b/src/translator_kr.h @@ -1,12 +1,12 @@ /****************************************************************************** * - * + * * * Copyright (C) 1997-2004 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * @@ -15,35 +15,83 @@ * */ +#ifndef TRANSLATOR_KR_H +#define TRANSLATOR_KR_H + +/*! + When defining a translator class for the new language, follow + the description in the documentation. One of the steps says + that you should copy the translator_en.h (this) file to your + translator_xx.h new file. Your new language should use the + Translator class as the base class. This means that you need to + implement exactly the same (pure virtual) methods as the + TranslatorEnglish does. Because of this, it is a good idea to + start with the copy of TranslatorEnglish and replace the strings + one by one. + + It is not necessary to include "translator.h" or + "translator_adapter.h" here. The files are included in the + language.cpp correctly. Not including any of the mentioned + files frees the maintainer from thinking about whether the + first, the second, or both files should be included or not, and + why. This holds namely for localized translators because their + base class is changed occasionaly to adapter classes when the + Translator class changes the interface, or back to the + Translator class (by the local maintainer) when the localized + translator is made up-to-date again. +*/ + /* Ãʱâ ÀÛ¾÷ÀÚ: ryk TODO ÁÖ¼®À» º¸¸é 11/22/01, doxygen ¹öÀü 1.2.11±îÁö ¼ö°íÇØ ÁֽŠ°Í °°½À´Ï´Ù. ÃÖ±Ù °»½ÅÀÚ: Astromaker(http://ngps.net/) gpgiki(http://www.gpgstudy.com/gpgiki/) -*/ - - -#ifndef TRANSLATOR_KR_H -#define TRANSLATOR_KR_H - -class TranslatorKorean : public TranslatorAdapter_1_3_8 + */ + +// +// Update: +// +// 2004.12.22 (SooYoung Jung: jung5000@gmail.com) +// - LaTex and RTF were not generated correctly. +// Corrected trRTFansicp and trRTFCharSet. +// It was wrong. +// - Adapting 1.3.9 and added "new since 1.3.9" +// - Çؼ®ÀÌ À߸øµÈ ºÎºÐÀÌ ²Ò³ª ÀÖ¾î º¸ÀÓ.. +// + + +class TranslatorKorean : public TranslatorAdapter_1_3_9 { + private: + /*! The decode() can change euc into sjis */ + inline QCString decode(const QCString & sInput) + { + if (Config_getBool("USE_WINDOWS_ENCODING")) + { + return JapaneseEucToSjis(sInput); + } + else + { + return sInput; + } + } + public: // --- Language control methods ------------------- - - /*! Used for identification of the language. The identification - * should not be translated. It should be replaced by the name + + /*! Used for identification of the language. The identification + * should not be translated. It should be replaced by the name * of the language in English using lower-case characters only - * (e.g. "czech", "japanese", "russian", etc.). It should be equal to + * (e.g. "czech", "japanese", "russian", etc.). It should be equal to * the identification used in language.cpp. */ virtual QCString idLanguage() { return "korean"; } - - /*! Used to get the LaTeX command(s) for the language support. + + /*! Used to get the LaTeX command(s) for the language support. * This method should return string with commands that switch - * LaTeX to the desired language. For example + * LaTeX to the desired language. For example *
"\\usepackage[german]{babel}\n"
      *  
* or @@ -51,7 +99,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 * "\\usepackage[latin2]{inputenc}\n" * "\\usepackage[T1]{fontenc}\n" * - * + * * The English LaTeX does not use such commands. Because of this * the empty string is returned in this implementation. */ @@ -97,7 +145,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "¸â¹ö º¯¼ö ¹®¼­È­"; @@ -152,7 +200,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 // quick reference sections - /*! This is put above each page as a link to the list of all groups of + /*! 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() @@ -175,7 +223,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 return "º¹ÇÕ±¸Á¶(Ŭ·¡½º, ±¸Á¶Ã¼, °ø¿ëü)"; } } - + /*! This is put above each page as a link to the list of documented files */ virtual QCString trFileList() { return "ÆÄÀÏ ¸ñ·Ï"; } //"ÆÄÀÏ ¸ñ·Ï", "ÆÄÀÏ ¸®½ºÆ®" @@ -267,6 +315,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 { result+="¸µÅ© µÈ Ŭ·¡½º ¸â¹ö´Â "; } + if (extractAll) result+="±× ¸â¹ö¿¡ ´ëÇÑ Å¬·¡½º ¹®¼­È­·Î °©´Ï´Ù."; else @@ -316,19 +365,19 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 virtual QCString trDocumentation() { return "¹®¼­È­"; } - /*! This is used in LaTeX as the title of the chapter with the + /*! This is used in LaTeX as the title of the chapter with the * index of all groups. */ virtual QCString trModuleIndex() { return "¸ðµâ »öÀÎ"; } - /*! This is used in LaTeX as the title of the chapter with the + /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ virtual QCString trHierarchicalIndex() { return "ºÐ·ùü°è »öÀÎ"; } - /*! This is used in LaTeX as the title of the chapter with the + /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. */ virtual QCString trCompoundIndex() @@ -380,37 +429,37 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 virtual QCString trDefines() { return "¸ÅÅ©·Î, #define"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of function prototypes */ virtual QCString trFuncProtos() { return "ÇÔ¼ö ¿øÇü"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of typedefs */ virtual QCString trTypedefs() { return "ŸÀÔ Á¤ÀÇ"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of enumerations */ virtual QCString trEnumerations() { return "¿­°ÅÇü"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of (global) functions */ virtual QCString trFunctions() { return "ÇÔ¼ö"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trVariables() { return "º¯¼ö"; } - /*! This is used in the documentation of a file as a header before the + /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trEnumerationValues() @@ -422,50 +471,59 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 virtual QCString trDefineDocumentation() { return "#define ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes */ virtual QCString trFunctionPrototypeDocumentation() { return "ÇÔ¼ö ¿øÇü ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() { return "ŸÀÔ Á¤ÀÇ ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() { return "¿­°ÅÇü ŸÀÔ ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() { return "¿­°ÅÇü °ª ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() { return "ÇÔ¼ö ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace before the list + /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for variables */ virtual QCString trVariableDocumentation() { return "º¯¼ö ¹®¼­È­"; } - /*! This is used in the documentation of a file/namespace/group before + /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds */ virtual QCString trCompounds() - { return "º¹ÇÕ±¸Á¶"; } + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Data Structures"; + } + else + { + return "Classes"; + } + } - /*! This is used in the standard footer of each page and indicates when - * the page was generated + /*! 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) { @@ -486,7 +544,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 { return (QCString)clName+"¿¡ ´ëÇÑ »ó¼Ó µµÇ¥"; } - + /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() { return "³»ºÎ »ç¿ë¸¸À» À§ÇØ"; } @@ -534,7 +592,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 ////////////////////////////////////////////////////////////////////////// - + /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() { return "namespace ¸ñ·Ï"; } @@ -552,14 +610,14 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 * friends of a class */ virtual QCString trFriends() - { return "friend"; } - + { return "Friends"; } + ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// - + /*! used in the class documentation as a header before the list of all - * related classes + * related classes */ virtual QCString trRelatedFunctionDocumentation() { return "friend, ±×¸®°í °ü·ÃµÈ ÇÔ¼ö ¹®¼­È­"; } @@ -585,6 +643,7 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 case ClassDef::Category: result+=" category"; break; // translate me! case ClassDef::Exception: result+=" ¿¹¿Ü"; break; } + if (isTemplate) result+=" ÅÛÇø´"; result+=" ÂüÁ¶"; return result; } @@ -634,23 +693,23 @@ class TranslatorKorean : public TranslatorAdapter_1_3_8 QCString result; int i; // the inherits list contain `numEntries' classes - for (i=0;i