diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-11-25 18:56:18 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2001-11-25 18:56:18 (GMT) |
commit | cce8b9505201c95443798341d3d6176922db9253 (patch) | |
tree | 6643370adedf0cbaac88d674978bd44175ab1475 | |
parent | c736b03f16a88b6654ff9c1ae680e46b86e50218 (diff) | |
download | Doxygen-cce8b9505201c95443798341d3d6176922db9253.zip Doxygen-cce8b9505201c95443798341d3d6176922db9253.tar.gz Doxygen-cce8b9505201c95443798341d3d6176922db9253.tar.bz2 |
Release-1.2.12-20011125
43 files changed, 1515 insertions, 567 deletions
@@ -1,6 +1,6 @@ -DOXYGEN Version 1.2.12 +DOXYGEN Version 1.2.12-20011125 Please read the installation section of the manual for instructions. -------- -Dimitri van Heesch (18 November 2001) +Dimitri van Heesch (25 November 2001) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.2.12 +DOXYGEN Version 1.2.12_20011125 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) (18 November 2001) +Dimitri van Heesch (dimitri@stack.nl) (25 November 2001) @@ -1 +1 @@ -1.2.12 +1.2.12-20011125 diff --git a/addon/xmlparse/doxmlintf.h b/addon/xmlparse/doxmlintf.h index cfff948..1af6a60 100644 --- a/addon/xmlparse/doxmlintf.h +++ b/addon/xmlparse/doxmlintf.h @@ -4,6 +4,8 @@ #include <qlist.h> #include <qstring.h> +class IMember; + class IParam { public: @@ -15,6 +17,14 @@ class IParam virtual QString defaultValue() const = 0; }; +class IMemberReference +{ + public: + virtual IMember *getMember() const = 0; + virtual QString getMemberName() const = 0; + virtual int getLineNumber() const = 0; +}; + class IMember { public: diff --git a/addon/xmlparse/mainhandler.cpp b/addon/xmlparse/mainhandler.cpp index cb92df2..c32426f 100644 --- a/addon/xmlparse/mainhandler.cpp +++ b/addon/xmlparse/mainhandler.cpp @@ -67,6 +67,20 @@ void MainHandler::initialize() m_compoundNameDict.insert(compHandler->name(),compHandler); m_compoundDict.insert(compHandler->id(),compHandler); } + + // for each member + QDictIterator< QList<IMember> > mndi(m_memberNameDict); + QList<IMember> *ml; + for (;(ml=mndi.current());++mndi) + { + QListIterator<IMember> mli(*ml); + IMember *mem; + for (;(mem=mli.current());++mli) + { + ((MemberHandler*)mem)->initialize(this); + } + } + } class ErrorHandler : public QXmlErrorHandler diff --git a/addon/xmlparse/memberhandler.cpp b/addon/xmlparse/memberhandler.cpp index 54dd0f0..0fbf5c1 100644 --- a/addon/xmlparse/memberhandler.cpp +++ b/addon/xmlparse/memberhandler.cpp @@ -16,6 +16,7 @@ #include "memberhandler.h" #include "sectionhandler.h" #include "dochandler.h" +#include "mainhandler.h" MemberHandler::MemberHandler(IBaseHandler *parent) : m_parent(parent), m_brief(0), m_detailed(0) @@ -90,6 +91,7 @@ void MemberHandler::startReferences(const QXmlAttributes& attrib) { MemberReference *mr = new MemberReference; mr->m_memId = attrib.value("id"); + mr->m_line = attrib.value("line").toInt(); m_references.append(mr); m_curString=""; } @@ -103,6 +105,7 @@ void MemberHandler::startReferencedBy(const QXmlAttributes& attrib) { MemberReference *mr = new MemberReference; mr->m_memId = attrib.value("id"); + mr->m_line = attrib.value("line").toInt(); m_referencedBy.append(mr); m_curString=""; } @@ -136,4 +139,22 @@ void MemberHandler::startParam(const QXmlAttributes& attrib) m_params.append(paramHandler); } +void MemberHandler::initialize(MainHandler *mh) +{ + QListIterator<MemberReference> mli(m_references); + MemberReference *mr; + for (;(mr=mli.current());++mli) + { + mr->initialize(mh); + } +} +void MemberHandler::MemberReference::initialize(MainHandler *mh) +{ + m_mainHandler = mh; +} + +IMember *MemberHandler::MemberReference::getMember() const +{ + return m_mainHandler->getMemberById(m_memId); +} diff --git a/addon/xmlparse/memberhandler.h b/addon/xmlparse/memberhandler.h index e79835f..ccb4a57 100644 --- a/addon/xmlparse/memberhandler.h +++ b/addon/xmlparse/memberhandler.h @@ -25,6 +25,7 @@ #include "doxmlintf.h" class DocHandler; +class MainHandler; class MemberHandler : public IMember, public BaseHandler<MemberHandler> { @@ -54,12 +55,21 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler> virtual QString name() const { return m_name; } virtual QListIterator<IParam> getParamIterator() const { return m_params; } + void initialize(MainHandler *m); + private: - struct MemberReference + struct MemberReference : public IMemberReference { - QString m_memId; - QString m_name; - int line; + virtual ~MemberReference() {} + virtual IMember *getMember() const; + virtual QString getMemberName() const { return m_name; } + virtual int getLineNumber() const { return m_line; } + void initialize(MainHandler *m); + + QString m_memId; + QString m_name; + int m_line; + MainHandler *m_mainHandler; }; IBaseHandler *m_parent; diff --git a/doc/maintainers.txt b/doc/maintainers.txt index d0a7188..d2c1a65 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -2,7 +2,7 @@ % xml entities like ä are used for special characters Brazilian -Fabio "FJTC" Jun Takada Chino: chino@grad.icmc.sc.usp.br +Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br Chinese Wei Liu: liuwei@asiainfo.com diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index e45bb1b..e410077 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,5 +1,5 @@ Name: doxygen -Version: 1.2.12 +Version: 1.2.12_20011125 Summary: documentation system for C, C++ and IDL Release: 4 Source: doxygen-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 4b1b949..a65e76b 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -84,9 +84,8 @@ ClassDef::ClassDef( m_fileDef=0; m_usesImplClassDict=0; m_usesIntfClassDict=0; - m_memberGroupList = new MemberGroupList; - m_memberGroupList->setAutoDelete(TRUE); - m_memberGroupDict = new MemberGroupDict(17); + memberGroupSDict = new MemberGroupSDict; + memberGroupSDict->setAutoDelete(TRUE); m_innerClasses = new ClassSDict(17); //int i=name().findRev("::"); // TODO: broken if A<N::C> is the class name //if (i==-1) @@ -117,8 +116,7 @@ ClassDef::~ClassDef() delete m_usesImplClassDict; delete m_usesIntfClassDict; delete m_incInfo; - delete m_memberGroupList; - delete m_memberGroupDict; + delete memberGroupSDict; delete m_innerClasses; delete m_templateInstances; delete m_templBaseClassNames; @@ -157,29 +155,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p, void ClassDef::addMembersToMemberGroup() { - ::addMembersToMemberGroup(&pubTypes,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&pubMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&pubAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&pubSlots,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&signals,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&dcopMethods,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&pubStaticMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&pubStaticAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proTypes,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proSlots,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proStaticMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&proStaticAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priTypes,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priSlots,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priStaticMembers,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&priStaticAttribs,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&friends,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&related,m_memberGroupDict,m_memberGroupList); - ::addMembersToMemberGroup(&properties,m_memberGroupDict,m_memberGroupList); + ::addMembersToMemberGroup(&pubTypes,memberGroupSDict); + ::addMembersToMemberGroup(&pubMembers,memberGroupSDict); + ::addMembersToMemberGroup(&pubAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&pubSlots,memberGroupSDict); + ::addMembersToMemberGroup(&signals,memberGroupSDict); + ::addMembersToMemberGroup(&dcopMethods,memberGroupSDict); + ::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict); + ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&proTypes,memberGroupSDict); + ::addMembersToMemberGroup(&proMembers,memberGroupSDict); + ::addMembersToMemberGroup(&proAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&proSlots,memberGroupSDict); + ::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict); + ::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&priTypes,memberGroupSDict); + ::addMembersToMemberGroup(&priMembers,memberGroupSDict); + ::addMembersToMemberGroup(&priAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&priSlots,memberGroupSDict); + ::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict); + ::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict); + ::addMembersToMemberGroup(&friends,memberGroupSDict); + ::addMembersToMemberGroup(&related,memberGroupSDict); + ::addMembersToMemberGroup(&properties,memberGroupSDict); } // adds new member definition to the class @@ -527,7 +525,7 @@ void ClassDef::computeAnchors() void ClassDef::distributeMemberGroupDocumentation() { - MemberGroupListIterator mgli(*m_memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -737,8 +735,17 @@ void ClassDef::writeDocumentation(OutputList &ol) if (!nm.isEmpty()) { ol.startTypewriter(); - ol.docify("#include "); - if (m_incInfo->local) + bool isIDLorJava = nm.right(4)==".idl" || + nm.right(5)==".java"; + if (isIDLorJava) + { + ol.docify("import "); + } + else + { + ol.docify("#include "); + } + if (m_incInfo->local || isIDLorJava) ol.docify("\""); else ol.docify("<"); @@ -756,10 +763,12 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.docify(nm); } ol.popGeneratorState(); - if (m_incInfo->local) + if (m_incInfo->local || isIDLorJava) ol.docify("\""); else ol.docify(">"); + if (isIDLorJava) + ol.docify(";"); ol.endTypewriter(); ol.newParagraph(); } @@ -973,7 +982,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.startMemberSections(); // write user defined member groups - MemberGroupListIterator mgli(*m_memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -1485,7 +1494,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup) ol.endMemberItem(FALSE); // write user defined member groups - MemberGroupListIterator mgli(*m_memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -2361,7 +2370,7 @@ void ClassDef::addListReferences() theTranslator->trClass(TRUE,TRUE), getOutputFileBase(),name() ); - MemberGroupListIterator mgli(*m_memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { diff --git a/src/classdef.h b/src/classdef.h index c2b6274..bdfe4d9 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -39,8 +39,7 @@ class MemberDef; class ExampleSDict; class MemberNameInfoSDict; class UsesClassDict; -class MemberGroupList; -class MemberGroupDict; +class MemberGroupSDict; class QTextStream; class PackageDef; class GroupDef; @@ -235,6 +234,9 @@ class ClassDef : public Definition MemberList variableMembers; MemberList propertyMembers; + /* user defined member groups */ + MemberGroupSDict *memberGroupSDict; + /*! \} Public API */ /*! \name Doxygen internal API @@ -377,9 +379,6 @@ class ClassDef : public Definition */ ClassSDict *m_innerClasses; - /* user defined member groups */ - MemberGroupList *m_memberGroupList; - MemberGroupDict *m_memberGroupDict; /* classes for the collaboration diagram */ UsesClassDict *m_usesImplClassDict; @@ -1967,9 +1967,9 @@ void parseCode(OutputDocInterface &od,const char *className,const QCString &s, codeYYrestart( codeYYin ); BEGIN( Body ); codeYYlex(); - endFontClass(); if (g_inputLines==1) { + endFontClass(); g_code->endCodeLine(); } od.append(g_code); diff --git a/src/constexp.l b/src/constexp.l index 92b3da4..a1bf69e 100644 --- a/src/constexp.l +++ b/src/constexp.l @@ -85,7 +85,9 @@ static int yyread(char *buf,int max_size) [1-9][0-9]*[uUlL]* { g_strToken=yytext; return TOK_DECIMALINT; } -(0x|0X)[0-9a-fA-F]+[uUlL]* { g_strToken=yytext; return TOK_HEXADECIMALINT; } +(0x|0X)[0-9a-fA-F]+[uUlL]* { g_strToken=yytext+2; + return TOK_HEXADECIMALINT; + } (([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+))([eE]([\-\+])?[0-9]+)?([fFlL])? { g_strToken=yytext; return TOK_FLOAT; } @@ -106,7 +108,7 @@ bool parseCppExpression(const char *fileName,int lineNr,const QCString &s) g_inputPosition = 0; cppExpYYrestart( cppExpYYin ); cppExpYYparse(); - //printf("Result: %ld\n",(long)resultValue); + //printf("Result: %ld\n",(long)g_resultValue); return (long)g_resultValue!=0; } diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp index be1018a..55373a8 100644 --- a/src/cppvalue.cpp +++ b/src/cppvalue.cpp @@ -50,6 +50,7 @@ CPPValue parseHexadecimal() else if (*p >= 'a' && *p <= 'f') val = val * 16 + *p - 'a' + 10; else if (*p >= 'A' && *p <= 'F') val = val * 16 + *p - 'A' + 10; } + //printf("parseHexadecimal %s->%x\n",g_strToken.data(),val); return CPPValue(val); } diff --git a/src/definition.cpp b/src/definition.cpp index 56b3edf..1125569 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -377,13 +377,17 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, { name.prepend(scope+"::"); } + Definition *d = md->getOuterScope(); + if (d==Doxygen::globalScope) d=md->getBodyDef(); if (md->getStartBodyLine()!=-1 && md->getBodyDef()) { + //printf("md->getBodyDef()=%p global=%p\n",md->getBodyDef(),Doxygen::globalScope); // for HTML write a real link ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); QCString lineStr,anchorStr; anchorStr.sprintf("l%05d",md->getStartBodyLine()); + //printf("Write object link to %s\n",md->getBodyDef()->getSourceFileBase().data()); ol.writeObjectLink(0,md->getBodyDef()->getSourceFileBase(),anchorStr,name); ol.popGeneratorState(); @@ -393,9 +397,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ol.docify(name); ol.popGeneratorState(); } - else if (md->isLinkable() && md->getOuterScope()) + else if (md->isLinkable() && d && d->isLinkable()) { - Definition *d = md->getOuterScope(); // for HTML write a real link ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); @@ -913,7 +913,7 @@ TT [tT][tT] UL [uU][lL] VAR [vV][aA][rR] BLOCKQUOTE [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE] -DOCPARAM ("#")?([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") +DOCPARAM ("#")?([a-z_A-Z0-9:\!\<\~\>\^\&\=\.\-]+)|("\"".*"\"") OPNEW {B}+"new"({B}*"[]")? OPDEL {B}+"delete"({B}*"[]")? OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")" diff --git a/src/dot.cpp b/src/dot.cpp index fae5b93..9849426 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -1520,6 +1520,16 @@ bool DotInclDepGraph::isTrivial() const return m_startNode->m_children==0; } +void DotInclDepGraph::writeXML(QTextStream &t) +{ + QDictIterator<DotNode> dni(*m_usedNodes); + DotNode *node; + for (;(node=dni.current());++dni) + { + node->writeXML(t); + } +} + //------------------------------------------------------------- void generateGraphLegend(const char *path) @@ -151,6 +151,7 @@ class DotInclDepGraph bool writeImageMap=TRUE); bool isTrivial() const; QCString diskName() const; + void writeXML(QTextStream &t); private: void buildGraph(DotNode *n,FileDef *fd,int distance); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 571cc41..a5f40ac 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -7102,6 +7102,7 @@ void generateOutput() exit(1); } Doxygen::tagFile.setDevice(tag); + Doxygen::tagFile << "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>" << endl; Doxygen::tagFile << "<tagfile>" << endl; } diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp index 3b5b227..90ac247 100644 --- a/src/doxysearch.cpp +++ b/src/doxysearch.cpp @@ -17,6 +17,11 @@ // includes +#ifdef _WIN32 +#include <windows.h> // for AllocConsole +#endif + + #include <stdio.h> #include <string.h> #include <stdarg.h> @@ -805,7 +810,11 @@ void getConfig(const char *s) int l; char configFile[MAXSTRLEN]; strcpy(configFile,s); +#if defined(_WIN32) + strcat(configFile,"\\search.cfg"); +#else strcat(configFile,"/search.cfg"); +#endif FILE *f; if ((f=fopen(configFile,"r"))==NULL) @@ -860,6 +869,10 @@ void strlowercpy(char *d,const char *s) int main(int argc,char **argv) { +#ifdef _WIN32 + AllocConsole(); +#endif + #ifdef PROFILING struct timeval tv_start,tv_end; gettimeofday(&tv_start,0); diff --git a/src/filedef.cpp b/src/filedef.cpp index 56b9fa2..32d14d0 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -64,9 +64,8 @@ FileDef::FileDef(const char *p,const char *nm,const char *lref) { docname.prepend(stripFromPath(path.copy())); } - memberGroupList = new MemberGroupList; - memberGroupList->setAutoDelete(TRUE); - memberGroupDict = new MemberGroupDict(1009); + memberGroupSDict = new MemberGroupSDict; + memberGroupSDict->setAutoDelete(TRUE); } /*! destroy the file definition */ @@ -81,8 +80,7 @@ FileDef::~FileDef() delete srcMemberDict; delete usingDirList; delete usingDeclList; - delete memberGroupList; - delete memberGroupDict; + delete memberGroupSDict; } /*! Compute the HTML anchor names for all members in the class */ @@ -93,7 +91,7 @@ void FileDef::computeAnchors() void FileDef::distributeMemberGroupDocumentation() { - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -161,9 +159,22 @@ void FileDef::writeDocumentation(OutputList &ol) for (;(ii=ili.current());++ili) { FileDef *fd=ii->fileDef; + bool isIDLorJava = FALSE; + if (fd) + { + isIDLorJava = fd->name().right(4)==".idl" || + fd->name().right(5)==".java"; + } ol.startTypewriter(); - ol.docify("#include "); - if (ii->local) + if (isIDLorJava) + { + ol.docify("import "); + } + else + { + ol.docify("#include "); + } + if (ii->local || isIDLorJava) ol.docify("\""); else ol.docify("<"); @@ -185,10 +196,12 @@ void FileDef::writeDocumentation(OutputList &ol) } ol.enableAll(); - if (ii->local) + if (ii->local || isIDLorJava) ol.docify("\""); else ol.docify(">"); + if (isIDLorJava) + ol.docify(";"); ol.endTypewriter(); ol.disable(OutputGenerator::RTF); ol.lineBreak(); @@ -301,7 +314,7 @@ void FileDef::writeDocumentation(OutputList &ol) classSDict->writeDeclaration(ol); /* write user defined member groups */ - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -425,13 +438,10 @@ void FileDef::writeSource(OutputList &ol) initParseCodeContext(); ol.startCodeFragment(); - //if (name().left(9)=="memory.c") - //{ parseCode(ol,0, fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")), FALSE,0,this ); - //} ol.endCodeFragment(); endFile(ol); ol.enableAll(); @@ -440,12 +450,12 @@ void FileDef::writeSource(OutputList &ol) void FileDef::addMembersToMemberGroup() { - ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); + ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict); } /*! Adds member definition \a md to the list of all members of this file */ @@ -631,7 +641,7 @@ void FileDef::addListReferences() theTranslator->trFile(TRUE,TRUE), getOutputFileBase(),name() ); - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { diff --git a/src/filedef.h b/src/filedef.h index 77c8aa8..906e208 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -37,8 +37,7 @@ class OutputList; class NamespaceDef; class NamespaceList; class NamespaceDict; -class MemberGroupList; -class MemberGroupDict; +class MemberGroupSDict; class PackageDef; struct IncludeInfo @@ -169,6 +168,9 @@ class FileDef : public Definition MemberList docFuncMembers; MemberList docVarMembers; + /* user defined member groups */ + MemberGroupSDict *memberGroupSDict; + private: ClassSDict *classSDict; @@ -191,9 +193,6 @@ class FileDef : public Definition QIntDict<MemberDef> *srcMemberDict; bool isSource; - /* user defined member groups */ - MemberGroupList *memberGroupList; - MemberGroupDict *memberGroupDict; PackageDef *package; }; diff --git a/src/groupdef.cpp b/src/groupdef.cpp index ec43b56..50d846b 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -46,9 +46,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) : allMemberNameInfoSDict = new MemberNameInfoSDict(17); fileName = (QCString)"group_"+na; setGroupTitle( t ); - memberGroupList = new MemberGroupList; - memberGroupList->setAutoDelete(TRUE); - memberGroupDict = new MemberGroupDict(1009); + memberGroupSDict = new MemberGroupSDict; + memberGroupSDict->setAutoDelete(TRUE); decDefineMembers.setInGroup(TRUE); decProtoMembers.setInGroup(TRUE); @@ -79,8 +78,7 @@ GroupDef::~GroupDef() delete exampleDict; delete allMemberList; delete allMemberNameInfoSDict; - delete memberGroupList; - delete memberGroupDict; + delete memberGroupSDict; } void GroupDef::setGroupTitle( const char *t ) @@ -101,7 +99,7 @@ void GroupDef::setGroupTitle( const char *t ) void GroupDef::distributeMemberGroupDocumentation() { - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -147,16 +145,16 @@ void GroupDef::addExample(const PageInfo *def) void GroupDef::addMembersToMemberGroup() { - ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decEnumValMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); + ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decEnumValMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict); //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count()); - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -476,7 +474,7 @@ void GroupDef::writeDocumentation(OutputList &ol) if (allMemberList->count()>0) { /* write user defined member groups */ - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -740,7 +738,7 @@ void GroupDef::addListReferences() theTranslator->trGroup(TRUE,TRUE), getOutputFileBase(),name() ); - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { diff --git a/src/groupdef.h b/src/groupdef.h index 458d314..8a0088f 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -33,8 +33,7 @@ class NamespaceDef; class GroupList; class OutputList; class NamespaceList; -class MemberGroupList; -class MemberGroupDict; +class MemberGroupSDict; class MemberNameInfoSDict; class PageSDict; class PageInfo; @@ -82,6 +81,26 @@ class GroupDef : public Definition friend void writeGroupTreeNode(OutputList&, GroupDef*,bool); // make accessible for writing tree view of group in index.cpp - KPW + // members in the declaration part of the documentation + MemberList decDefineMembers; + MemberList decProtoMembers; + MemberList decTypedefMembers; + MemberList decEnumMembers; + MemberList decEnumValMembers; + MemberList decFuncMembers; + MemberList decVarMembers; + + // members in the documentation part of the documentation + MemberList docDefineMembers; + MemberList docProtoMembers; + MemberList docTypedefMembers; + MemberList docEnumMembers; + MemberList docFuncMembers; + MemberList docVarMembers; + + /* user defined member groups */ + MemberGroupSDict *memberGroupSDict; + protected: void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const); @@ -100,26 +119,7 @@ class GroupDef : public Definition MemberList *allMemberList; MemberNameInfoSDict *allMemberNameInfoSDict; - // members in the declaration part of the documentation - MemberList decDefineMembers; - MemberList decProtoMembers; - MemberList decTypedefMembers; - MemberList decEnumMembers; - MemberList decEnumValMembers; - MemberList decFuncMembers; - MemberList decVarMembers; - // members in the documentation part of the documentation - MemberList docDefineMembers; - MemberList docProtoMembers; - MemberList docTypedefMembers; - MemberList docEnumMembers; - MemberList docFuncMembers; - MemberList docVarMembers; - - /* user defined member groups */ - MemberGroupList *memberGroupList; // list of member groups in this group - MemberGroupDict *memberGroupDict; }; class GroupSDict : public SDict<GroupDef> diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 8ed96af..4253ce5 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -427,14 +427,14 @@ QCString MemberDef::getOutputFileBase() const { return classDef->getOutputFileBase(); } - else if (fileDef) - { - return fileDef->getOutputFileBase(); - } else if (nspace) { return nspace->getOutputFileBase(); } + else if (fileDef) + { + return fileDef->getOutputFileBase(); + } warn(m_defFileName,m_defLine, "Warning: Internal inconsistency: member %s does not belong to any" " container!",name().data() diff --git a/src/membergroup.h b/src/membergroup.h index 63b047b..c67f960 100644 --- a/src/membergroup.h +++ b/src/membergroup.h @@ -20,7 +20,7 @@ #include "qtbc.h" #include <qlist.h> -#include <qintdict.h> +#include "sortdict.h" #define NOGROUP -1 @@ -33,7 +33,7 @@ class GroupDef; class OutputList; class Definition; -class MemberGroup /* : public Definition */ +class MemberGroup { public: MemberGroup(int id,const char *header,const char *docs); @@ -66,6 +66,7 @@ class MemberGroup /* : public Definition */ int numDocMembers() const; void setInGroup(bool b); void addListReferences(Definition *d); + MemberList *members() const { return memberList; } private: MemberList *memberList; // list of all members in the group @@ -97,6 +98,13 @@ class MemberGroupDict : public QIntDict<MemberGroup> ~MemberGroupDict() {} }; +class MemberGroupSDict : public SIntDict<MemberGroup> +{ + public: + MemberGroupSDict(int size=17) : SIntDict<MemberGroup>(size) {} + ~MemberGroupSDict() {} +}; + class MemberGroupDictIterator : public QIntDictIterator<MemberGroup> { public: diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 9e2692d..25b6bad 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -38,9 +38,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl, usingDirList = 0; usingDeclList = 0; setReference(lref); - memberGroupList = new MemberGroupList; - memberGroupList->setAutoDelete(TRUE); - memberGroupDict = new MemberGroupDict(1009); + memberGroupSDict = new MemberGroupSDict; + memberGroupSDict->setAutoDelete(TRUE); } NamespaceDef::~NamespaceDef() @@ -50,13 +49,12 @@ NamespaceDef::~NamespaceDef() delete m_innerCompounds; delete usingDirList; delete usingDeclList; - delete memberGroupList; - delete memberGroupDict; + delete memberGroupSDict; } void NamespaceDef::distributeMemberGroupDocumentation() { - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -96,44 +94,15 @@ void NamespaceDef::insertNamespace(NamespaceDef *nd) } } -#if 0 -void NamespaceDef::addMemberListToGroup(MemberList *ml, - bool (MemberDef::*func)() const) -{ - MemberListIterator mli(*ml); - MemberDef *md; - for (;(md=mli.current());++mli) - { - int groupId=md->getMemberGroupId(); - if ((md->*func)() && groupId!=-1) - { - QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId]; - QCString *pDocs = Doxygen::memberDocDict[groupId]; - if (pGrpHeader) - { - MemberGroup *mg = memberGroupDict->find(groupId); - if (mg==0) - { - mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0); - memberGroupDict->insert(groupId,mg); - memberGroupList->append(mg); - } - mg->insertMember(md); - md->setMemberGroup(mg); - } - } - } -} -#endif void NamespaceDef::addMembersToMemberGroup() { - ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); - ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); + ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict); + ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict); } void NamespaceDef::insertMember(MemberDef *md) @@ -199,12 +168,6 @@ void NamespaceDef::insertMember(MemberDef *md) void NamespaceDef::computeAnchors() { setAnchors('a',&allMemberList); - //MemberGroupListIterator mgli(*memberGroupList); - //MemberGroup *mg; - //for (;(mg=mgli.current());++mgli) - //{ - // mg->setAnchors(); - //} } void NamespaceDef::writeDocumentation(OutputList &ol) @@ -249,7 +212,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) classSDict->writeDeclaration(ol); /* write user defined member groups */ - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { @@ -380,7 +343,7 @@ void NamespaceDef::addListReferences() theTranslator->trNamespace(TRUE,TRUE), getOutputFileBase(),name() ); - MemberGroupListIterator mgli(*memberGroupList); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { diff --git a/src/namespacedef.h b/src/namespacedef.h index ef82d9c..93ade90 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -31,8 +31,7 @@ class OutputList; class ClassSDict; class MemberDef; class NamespaceList; -class MemberGroupDict; -class MemberGroupList; +class MemberGroupSDict; class NamespaceSDict; class NamespaceDef : public Definition @@ -97,6 +96,9 @@ class NamespaceDef : public Definition MemberList docFuncMembers; MemberList docVarMembers; + /* user defined member groups */ + MemberGroupSDict *memberGroupSDict; + /*! Classes inside this namespace */ ClassSDict *classSDict; /*! Namespaces inside this namespace */ @@ -114,9 +116,6 @@ class NamespaceDef : public Definition MemberList allMemberList; - /* user defined member groups */ - MemberGroupList *memberGroupList; - MemberGroupDict *memberGroupDict; }; class NamespaceList : public QList<NamespaceDef> diff --git a/src/outputlist.cpp b/src/outputlist.cpp index 34c67c7..7611b6a 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -267,6 +267,7 @@ FORALL1(SectionTypes a1,a1) FORALL1(bool a1,a1) FORALL2(bool a1,int a2,a1,a2) FORALL2(bool a1,bool a2,a1,a2) +FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4) #endif FORALL2(int a1,bool a2,a1,a2) FORALL1(IndexSections a1,a1) @@ -277,7 +278,6 @@ FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3) FORALL3(uchar a1,uchar a2,uchar a3,a1,a2,a3) FORALL4(const char *a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4) -FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4) FORALL4(const char *a1,const char *a2,const char *a3,int a4,a1,a2,a3,a4) diff --git a/src/outputlist.h b/src/outputlist.h index 8a49235..8f3152a 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -478,6 +478,7 @@ class OutputList : public OutputDocInterface FORALLPROTO1(bool); FORALLPROTO2(bool,int); FORALLPROTO2(bool,bool); + FORALLPROTO4(const char *,const char *,const char *,int); #endif FORALLPROTO2(int,bool); FORALLPROTO2(const char *,const char *); @@ -488,7 +489,6 @@ class OutputList : public OutputDocInterface FORALLPROTO3(ClassDiagram &,const char *,const char *); FORALLPROTO4(const char *,const char *,const char *,const char *); FORALLPROTO4(const char *,const char *,const char *,bool); - FORALLPROTO4(const char *,const char *,const char *,int); OutputList(const OutputList &ol); QList<OutputGenerator> *outputs; @@ -721,7 +721,7 @@ QCString removeIdsAndMarkers(const char *s) p++; inNum=TRUE; } - else if (c=='d') // identifier starting with a `d' + else if (c=='d' && !inNum) // identifier starting with a `d' { if (strncmp(p,"defined ",8)==0 || strncmp(p,"defined(",8)==0) // defined keyword @@ -745,7 +745,7 @@ QCString removeIdsAndMarkers(const char *s) { result+=c; char lc=tolower(c); - if (lc!='l' && lc!='u') inNum=FALSE; + if (!isId(lc) && lc!='.' && lc!='-' && lc!='+') inNum=FALSE; p++; } } diff --git a/src/scanner.l b/src/scanner.l index 93cac98..04bb08f 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -177,7 +177,6 @@ static void initParser() isTypedef = FALSE; autoGroupStack.clear(); insideTryBlock = FALSE; - insideIDL = FALSE; autoGroupStack.setAutoDelete(TRUE); lastDefGroup.groupname.resize(0); } @@ -379,6 +378,7 @@ static void setContext() QCString fileName = yyFileName; insideIDL = fileName.right(4)==".idl"; insideJava = fileName.right(5)==".java"; + //printf("setContext(%s) insideIDL=%d\n",yyFileName,insideIDL); } static void prependScope() diff --git a/src/sortdict.h b/src/sortdict.h index b716d33..7675724 100644 --- a/src/sortdict.h +++ b/src/sortdict.h @@ -22,6 +22,7 @@ #include "qtbc.h" #include <qlist.h> #include <qdict.h> +#include <qintdict.h> #define AUTORESIZE 1 @@ -63,6 +64,7 @@ const uint SDict_primes[] = #endif template<class T> class SDict; +template<class T> class SIntDict; /*! internal wrapper class that redirects compareItems() to the * dictionary @@ -270,4 +272,210 @@ class SDict }; +/*! internal wrapper class that redirects compareItems() to the + * dictionary + */ +template<class T> +class SIntList : public QList<T> +{ + public: + SIntList(SIntDict<T> *owner) : m_owner(owner) {} + ~SIntList() {} + int compareItems(GCI item1,GCI item2) + { + return m_owner->compareItems(item1,item2); + } + private: + SIntDict<T> *m_owner; +}; + +/*! Ordered dictionary of elements of type T. + * Internally uses a QList<T> and a QIntDict<T>. + */ +template<class T> +class SIntDict +{ + private: + SIntList<T> *m_list; + QIntDict<T> *m_dict; + int m_sizeIndex; + + public: + /*! Create an ordered dictionary. + * \param size The size of the dictionary. Should be a prime number for + * best distribution of elements. + */ + SIntDict(int size) : m_sizeIndex(0) + { + m_list = new SIntList<T>(this); +#if AUTORESIZE + while ((uint)size>SDict_primes[m_sizeIndex]) m_sizeIndex++; + m_dict = new QIntDict<T>(SDict_primes[m_sizeIndex]); +#else + m_dict = new QIntDict<T>(size); +#endif + } + /*! Destroys the dictionary */ + virtual ~SIntDict() + { + delete m_list; + delete m_dict; + } + /*! Appends a compound to the dictionary. The element is owned by the + * dictionary. + * \param key The unique key to use to quicky find the item later on. + * \param d The compound to add. + * \sa find() + */ + void append(int key,const T *d) + { + m_list->append(d); + m_dict->insert(key,d); +#if AUTORESIZE + if (m_dict->size()>SDict_primes[m_sizeIndex]) + { + m_dict->resize(SDict_primes[++m_sizeIndex]); + } +#endif + } + /*! Remove an item from the dictionary */ + bool remove(int key) + { + T *item = m_dict->take(key); + return item ? m_list->remove(item) : FALSE; + } + /*! Sorts the members of the dictionary. First appending a number + * of members and then sorting them is faster (O(NlogN) than using + * inSort() for each member (O(N^2)). + */ + void sort() + { + m_list->sort(); + } + /*! Inserts a compound into the dictionary in a sorted way. + * \param key The unique key to use to quicky find the item later on. + * \param d The compound to add. + * \sa find() + */ + void inSort(int key,const T *d) + { + m_list->inSort(d); + m_dict->insert(key,d); +#if AUTORESIZE + if (m_dict->size()>SDict_primes[m_sizeIndex]) + { + m_dict->resize(SDict_primes[++m_sizeIndex]); + } +#endif + } + /*! Indicates whether or not the dictionary owns its elements */ + void setAutoDelete(bool val) + { + m_list->setAutoDelete(val); + } + /*! Looks up a compound given its key. + * \param key The key to identify this element. + * \return The requested compound or zero if it cannot be found. + * \sa append() + */ + T *find(int key) + { + return m_dict->find(key); + } + + /*! Equavalent to find(). */ + T *operator[](int key) const + { + return m_dict->find(key); + } + + /*! Returns the item at position \a i in the sorted dictionary */ + T *at(uint i) + { + return m_list->at(i); + } + /*! Function that is used to compare two items when sorting. + * Overload this to properly sort items. + * \sa inSort() + */ + virtual int compareItems(GCI item1,GCI item2) + { + return item1!=item2; + } + /*! Clears the dictionary. Will delete items if setAutoDelete() was + * set to \c TRUE. + * \sa setAutoDelete + */ + void clear() + { + m_list->clear(); + m_dict->clear(); + } + /*! Returns the number of items stored in the dictionary + */ + int count() + { + return m_list->count(); + } + + class Iterator; // first forward declare + friend class Iterator; // then make it a friend + /*! Simple iterator for SDict. It iterates in the order in which the + * elements are stored. + */ + class Iterator + { + public: + /*! Create an iterator given the dictionary. */ + Iterator(const SIntDict<T> &dict) + { + m_li = new QListIterator<T>(*dict.m_list); + } + /*! Destroys the dictionary */ + virtual ~Iterator() + { + delete m_li; + } + /*! Set the iterator to the first element in the list. + * \return The first compound, or zero if the list was empty. + */ + T *toFirst() const + { + return m_li->toFirst(); + } + /*! Set the iterator to the last element in the list. + * \return The first compound, or zero if the list was empty. + */ + T *toLast() const + { + return m_li->toLast(); + } + /*! Returns the current compound */ + T *current() const + { + return m_li->current(); + } + /*! Moves the iterator to the next element. + * \return the new "current" element, or zero if the iterator was + * already pointing at the last element. + */ + T *operator++() + { + return m_li->operator++(); + } + /*! Moves the iterator to the previous element. + * \return the new "current" element, or zero if the iterator was + * already pointing at the first element. + */ + T *operator--() + { + return m_li->operator--(); + } + + private: + QListIterator<T> *m_li; + }; + +}; + #endif diff --git a/src/translator_br.h b/src/translator_br.h index 6c60bae..dca4523 100644 --- a/src/translator_br.h +++ b/src/translator_br.h @@ -11,13 +11,17 @@ * input used in their production; they are not affected by this license. * * Brazilian Portuguese version by - * Fabio "FJTC" Jun Takada Chino <chino@grad.icmc.sc.usp.br> - * Version: 1.2.8.2 (2001/07/24) + * Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br> + * http://www.icmc.sc.usp.br/~chino + * Version: 1.2.11 (2001/11/23) + * + * News: + * - Everything was revised. */ #ifndef TRANSLATOR_BR_H #define TRANSLATOR_BR_H -class TranslatorBrazilian: public TranslatorAdapter_1_2_11 +class TranslatorBrazilian: public Translator { public: @@ -61,7 +65,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() - { return "(Note que estes não são funções membros.)"; } + { return "(Note que estas não são funções membros.)"; } /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() @@ -102,15 +106,15 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! used as the title of the "list of all members" page of a class */ virtual QCString trMemberList() - { return "Lista de Membros"; } + { return "Lista dos Membros"; } /*! this is the first part of a sentence that is followed by a class name */ virtual QCString trThisIsTheListOfAllMembers() - { return "Esta é a lista completa dos membros da "; } + { return "Esta é a lista de todos os membros da "; } /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() - { return ", incluindo todos os membros herdados."; } + { return ", incluindo os membros herdados."; } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. @@ -118,7 +122,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 virtual QCString trGeneratedAutomatically(const char *s) { QCString result="Gerado automaticamente por Doxygen"; if (s) result+=(QCString)" para "+s; - result+=" a partir do código-fonte."; + result+=" a partir de seu código-fonte."; return result; } @@ -207,7 +211,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() - { return "Esta lista de hierarquia é parcialmente ordenada em ordem alfabética:"; } + { return "Esta lista de hierarquia está parcialmente ordenada em ordem alfabética:"; } /*! This is an introduction to the list with all files. */ virtual QCString trFileListDescription(bool extractAll) @@ -235,7 +239,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! This is an introduction to the page with all class members. */ virtual QCString trCompoundMembersDescription(bool extractAll) { - QCString result="Aqui está a lista de todos os membros de classes "; + QCString result="Esta é lista de todos os membros das classes "; if (!extractAll) result+="documentados "; result+="com links para "; if (extractAll) @@ -248,7 +252,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! This is an introduction to the page with all file members. */ virtual QCString trFileMembersDescription(bool extractAll) { - QCString result="Aqui esta a lista de "; + QCString result="Esta é a lista de "; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { result+="tadas as funções, variáveis, definições, enumerações e definições de tipos "; @@ -271,25 +275,25 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! This is an introduction to the page with the list of all header files. */ virtual QCString trHeaderFilesDescription() - { return "Aqui estão os arquivos de cabeçalho que compõe a API:"; } + { return "Estes são os arquivos de cabeçalho que compõe a API:"; } /*! This is an introduction to the page with the list of all examples */ virtual QCString trExamplesDescription() - { return "Aqui está a lista de todos os exemplos:"; } + { return "Esta é a lista de todos os exemplos:"; } /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() - { return "Aqui está a lista de toda a documentação relacionadas:"; } + { return "Esta é a lista de toda a documentação relacionadas:"; } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() - { return "Aqui está a lista de todos os médulos:"; } + { return "Esta é a lista de todos os médulos:"; } /*! This sentences is used in the annotated class/file lists if no brief * description is given. */ virtual QCString trNoDescriptionAvailable() - { return "Sem descriçãodisponível"; } + { return "Sem descrição disponível"; } // index titles (the project name is prepended for these) @@ -302,7 +306,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 * index of all groups. */ virtual QCString trModuleIndex() - { return "Índice de Módulos"; } + { return "Índice dos Módulos"; } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. @@ -363,7 +367,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() - { return "Manual de Referência"; } + { return "Guia de Referência"; } /*! This is used in the documentation of a file as a header before the * list of defines @@ -417,13 +421,13 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 * of documentation blocks for function prototypes */ virtual QCString trFunctionPrototypeDocumentation() - { return "Protótipos de funções"; } + { return "Protótipos das funções"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return "Definições de tipos"; } + { return "Definições dos tipos"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types @@ -552,7 +556,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 * friends of a class */ virtual QCString trFriends() - { return "Amigos"; } + { return "Amigas"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 @@ -562,7 +566,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 * related classes */ virtual QCString trRelatedFunctionDocumentation() - { return "Amigos e Funções Relacionadas"; } + { return "Amigas e Funções Relacionadas"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 @@ -777,7 +781,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 virtual QCString trSources() { - return "Fontes"; + return "Códigos-Fonte"; } virtual QCString trDefinedAtLineInSourceFile() { @@ -794,8 +798,9 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 virtual QCString trDeprecated() { - /* This note is for brazilians. - Esta é uma boa tradução para "deprecated"? + /* + * This note is for brazilians only. + * Esta é uma boa tradução para "deprecated"? */ return "Descontinuada"; } @@ -935,7 +940,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! Used as the header of the todo list */ virtual QCString trTodoList() { - return "Lista de tarefas futuras"; + return "Lista de Tarefas Futuras"; } ////////////////////////////////////////////////////////////////////////// @@ -1049,7 +1054,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! Used as the header of the test list */ virtual QCString trTestList() { - return "Lista de Teste"; + return "Lista de Testes"; } ////////////////////////////////////////////////////////////////////////// @@ -1150,8 +1155,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 /*! Used as ansicpg for RTF file * - * The following table shows the correlation of Charset name, Charset Value -and + * The following table shows the correlation of Charset name, Charset Value and * <pre> * Codepage number: * Charset Name Charset Value(hex) Codepage number @@ -1298,5 +1302,16 @@ and if (!singular) result+="es"; return result; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Referências"; + } }; #endif diff --git a/src/translator_fr.h b/src/translator_fr.h index 490e45c..584995b 100644 --- a/src/translator_fr.h +++ b/src/translator_fr.h @@ -20,10 +20,24 @@ * d2set@d2set.org). */ +/****************************************************************************** + * History of content + * + * Date | Description + * ============+============================================================= + * 2001-11-22 | Removed obsolet methods: + * | QCString latexBabelPackage() + * | QCString trAuthor() + * | QCString trAuthors() + * | QCString trFiles() + * | QCString trIncludeFile() + * | QCString trVerbatimText(const char *f) + * -------------+------------------------------------------------------------ + */ #ifndef TRANSLATOR_FR_H #define TRANSLATOR_FR_H -class TranslatorFrench : public TranslatorAdapter_1_2_11 +class TranslatorFrench : public Translator { public: QCString idLanguage() @@ -46,9 +60,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 { return "\\usepackage[french]{babel}\n"; } - /*! returns the name of the package that is included by LaTeX */ - QCString latexBabelPackage() - { return "french"; } /*! return the language charset. This will be used for the HTML output */ virtual QCString idLanguageCharset() @@ -126,14 +137,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 QCString trDefinedIn() { return "défini dans"; } - /*! put as in introduction in the verbatim header file of a class. - * parameter f is the name of the include file. - */ - QCString trIncludeFile() - { return "Fichier inclu"; } - QCString trVerbatimText(const char *f) - { return (QCString)"Ce texte provient du fichier inclu "+f+"."; } - // quick reference sections /*! This is put above each page as a link to the list of all groups of @@ -351,10 +354,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 QCString trEnumerationValues() { return "Éléments énumérés"; } - /*! This is used in man pages as the author section. */ - QCString trAuthor() - { return "Auteur"; } - /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ @@ -403,12 +402,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 QCString trCompounds() { return "Composants"; } - /*! This is used in the documentation of a group before the list of - * links to documented files - */ - QCString trFiles() - { return "Fichiers"; } - /*! This is used in the standard footer of each page and indicates when * the page was generated */ @@ -458,10 +451,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 QCString trDate() { return "Date"; } - /*! this text is generated when the \\author command is used. */ - QCString trAuthors() - { return "Auteur(s)"; } - /*! this text is generated when the \\return command is used. */ QCString trReturns() { return "Renvoie"; } @@ -1233,5 +1222,15 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 return result; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Références"; + } }; #endif diff --git a/src/translator_it.h b/src/translator_it.h index 1744c4b..a4933e9 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -22,6 +22,8 @@ * Initial Italian Translation by Ahmed Aldo Faisal * Revised and completed by Alessandro Falappa (since June 1999) * Updates: + * 2001/11: corrected the translation fixing the issues reported by the translator.pl script + * translated new items used since version 1.2.11 * 2001/08: corrected the translation fixing the issues reported by the translator.pl script * translated new items used since version 1.2.7 * 2001/05: adopted new translation mechanism (trough adapters), @@ -53,13 +55,13 @@ * tecnica (ad es "lista dei file" e non "lista dei files") * * Se avete suggerimenti sulla traduzione di alcuni termini o volete segnalare - * eventuali sviste potete scrivermi all'indirizzo: a.falappa@flashnet.it + * eventuali sviste potete scrivermi all'indirizzo: afalappa@interfree.it */ #ifndef TRANSLATOR_IT_H #define TRANSLATOR_IT_H -class TranslatorItalian : public TranslatorAdapter_1_2_11 +class TranslatorItalian : public Translator { public: @@ -1308,6 +1310,17 @@ class TranslatorItalian : public TranslatorAdapter_1_2_11 result+=(singular ? "e" : "i"); return result; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Riferimenti"; + } }; #endif diff --git a/src/translator_kr.h b/src/translator_kr.h index 18b63c9..53f250d 100644 --- a/src/translator_kr.h +++ b/src/translator_kr.h @@ -20,14 +20,41 @@ #include "translator_adapter.h" -class TranslatorKorean : public TranslatorAdapter_1_1_0 +class TranslatorKorean : public Translator { public: - QCString idLanguage() + + // --- Language control methods ------------------- + + /*! 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 + * the identification used in language.cpp. + */ + virtual QCString idLanguage() { return "korean"; } - /*! returns the name of the package that is included by LaTeX */ - QCString latexBabelPackage() - { return ""; } // What is the correct value here? + + /*! 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 + * <pre>"\\usepackage[german]{babel}\n" + * </pre> + * or + * <pre>"\\usepackage{polski}\n" + * "\\usepackage[latin2]{inputenc}\n" + * "\\usepackage[T1]{fontenc}\n" + * </pre> + * + * The English LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. + */ + virtual QCString latexLanguageSupportCommand() + { + // I'm not sure what this should be. + // When I figure it out, I'll update this. + return ""; + } /*! return the language charset. This will be used for the HTML output */ virtual QCString idLanguageCharset() @@ -35,363 +62,411 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 return "euc-kr"; } + // --- Language translation methods ------------------- + /*! used in the compound documentation before a list of related functions. */ - QCString trRelatedFunctions() + virtual QCString trRelatedFunctions() { return "°ü·ÃµÈ ÇÔ¼öµé"; } /*! subscript for the related functions. */ - QCString trRelatedSubscript() + virtual QCString trRelatedSubscript() { return "°ü·ÃÁÖ¼®"; } /*! header that is put before the detailed description of files, classes and namespaces. */ - QCString trDetailedDescription() + virtual QCString trDetailedDescription() { return "»ó¼¼ÇÑ ³»¿ë"; } /*! header that is put before the list of typedefs. */ - QCString trMemberTypedefDocumentation() + virtual QCString trMemberTypedefDocumentation() { return "¸â¹ö ŸÀÔÁ¤ÀÇ ¹®¼È"; } /*! header that is put before the list of enumerations. */ - QCString trMemberEnumerationDocumentation() + virtual QCString trMemberEnumerationDocumentation() { return "±¸¼º¿ø(member) ¿°Å ¹®¼È"; } /*! header that is put before the list of member functions. */ - QCString trMemberFunctionDocumentation() + virtual QCString trMemberFunctionDocumentation() { return "¸â¹ö ÇÔ¼ö ¹®¼È"; } /*! header that is put before the list of member attributes. */ - QCString trMemberDataDocumentation() - { return "¸â¼ µ¥ÀÌŸ ¹®¼È"; } + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + // TODO: This need to be translated. -ryk11/22/01. + return "¸â¼ µ¥ÀÌŸ ¹®¼È"; + } + else + { + return "¸â¼ µ¥ÀÌŸ ¹®¼È"; + } + } /*! this is the text of a link put after brief descriptions. */ - QCString trMore() + virtual QCString trMore() { return "More..."; } /*! put in the class documentation */ - QCString trListOfAllMembers() + virtual QCString trListOfAllMembers() { return "¸ðµç ±¸¼º¿øµé(members)ÀÇ ¸í´Ü"; } /*! used as the title of the "list of all members" page of a class */ - QCString trMemberList() + virtual QCString trMemberList() { return "±¸¼º¿ø(member) ¸í´Ü"; } /*! this is the first part of a sentence that is followed by a class name */ - QCString trThisIsTheListOfAllMembers() - { return "¿ÏÀüÇÑ ±¸¼º¿øµé(members)ÀÇ ¸í´Ü " ; } // "This is the complete list of members for " + virtual QCString trThisIsTheListOfAllMembers() + { return "¿ÏÀüÇÑ ±¸¼º¿øµé(members)ÀÇ ¸í´Ü " ; } /*! this is the remainder of the sentence after the class name */ - QCString trIncludingInheritedMembers() - { return ", »ó¼Ó¹ÞÀº ¸ðµç ±¸¼º¿ø(members)µéµµ Æ÷ÇÔ"; } // ", including all inherited members." + virtual QCString trIncludingInheritedMembers() + { return ", »ó¼Ó¹ÞÀº ¸ðµç ±¸¼º¿ø(members)µéµµ Æ÷ÇÔ"; } /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. */ - QCString trGeneratedAutomatically(const char *s) + virtual QCString trGeneratedAutomatically(const char *s) { QCString result=""; - if (s) result+=(QCString)s+"¿¡ "; - result+="source ÄÚµå·Î ºÎÅÍ Doxygen¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î »ý¼º"; - return result; + if (s) result+=(QCString)s+"¿¡ "; + result += "source ÄÚµå·Î ºÎÅÍ Doxygen¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î »ý¼º"; + return result; } /*! put after an enum name in the list of all members */ - QCString trEnumName() + virtual QCString trEnumName() { return "¿°Åü À̸§"; } /*! put after an enum value in the list of all members */ - QCString trEnumValue() + virtual QCString trEnumValue() { return "¿°Åü °ª"; } /*! put after an undocumented member in the list of all members */ - QCString trDefinedIn() + virtual QCString trDefinedIn() { return "¿¡¼ Á¤ÀǵÈ"; } - /*! put as in introduction in the verbatim header file of a class. - * parameter f is the name of the include file. - */ - QCString trVerbatimText(const char *f) - { return (QCString)"ÀÌ°ÍÀº "+f+" Æ÷ÇÔ ÆÄÀÏÀÇ Ãà¾àÀûÀÎ ¹®¼ÀÌ´Ù"; } - // 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). + * compounds or files (see the \\group command). */ - QCString trModules() + virtual QCString trModules() { return "¸ðµâµé"; } /*! This is put above each page as a link to the class hierarchy */ - QCString trClassHierarchy() + virtual QCString trClassHierarchy() { return "Ŭ·¡½º °èÃþ(µµ)"; } // "Ŭ·¡½º Á¶Á÷" or "Ŭ·¡½º ºÐ·ùü°è" /*! This is put above each page as a link to the list of annotated classes */ - QCString trCompoundList() - { return "È¥ÇÕ ¸ñ·Ï"; } //"È¥ÇÕ ¸ñ·Ï", "ÇÕ¼º(ÁýÇÕ) ¸í´Ü(¸®½ºÆ®)" + virtual QCString trCompoundList() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + //Alternate text: "È¥ÇÕ ¸ñ·Ï", "ÇÕ¼º(ÁýÇÕ) ¸í´Ü(¸®½ºÆ®)" + return "È¥ÇÕ ¸ñ·Ï"; + } + else + { + //TODO: This needs to be translated. -ryk11/22/01. + return "È¥ÇÕ ¸ñ·Ï"; + } + } /*! This is put above each page as a link to the list of documented files */ - QCString trFileList() + virtual QCString trFileList() { return "ÆÄÀÏ ¸ñ·Ï"; } //"ÆÄÀÏ ¸ñ·Ï", "ÆÄÀÏ ¸®½ºÆ®" /*! This is put above each page as a link to the list of all verbatim headers */ - QCString trHeaderFiles() + virtual QCString trHeaderFiles() { return "Çì´õ ÆÄÀϵé"; } /*! This is put above each page as a link to all members of compounds. */ - QCString trCompoundMembers() - { return "È¥ÇÕ ¸â¹öµé"; } // "ÇÕ¼º(ÁýÇÕ) ¸í´Ü(¸â¹öµé)" + virtual QCString trCompoundMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + // TODO: This need to be translated. -ryk11/22/01. + return "È¥ÇÕ ¸â¹öµé"; + } + else + { + // Alternate text: "ÇÕ¼º(ÁýÇÕ) ¸í´Ü(¸â¹öµé)" + return "È¥ÇÕ ¸â¹öµé"; + } + } /*! This is put above each page as a link to all members of files. */ - QCString trFileMembers() - { return "ÆÄÀÏ ¸â¹öµé"; } + virtual QCString trFileMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + // TODO: This needs to be translated. -ryk11/22/01. + return "ÆÄÀÏ ¸â¹öµé"; + } + else + { + return "ÆÄÀÏ ¸â¹öµé"; + } + } /*! This is put above each page as a link to all related pages. */ - QCString trRelatedPages() + virtual QCString trRelatedPages() { return "°ü·ÃµÈ ÆäÀÌÁöµé"; } /*! This is put above each page as a link to all examples. */ - QCString trExamples() + virtual QCString trExamples() { return "¿¹Á¦µé"; } /*! This is put above each page as a link to the search engine. */ - QCString trSearch() + virtual QCString trSearch() { return "°Ë»ö"; } /*! This is an introduction to the class hierarchy. */ - QCString trClassHierarchyDescription() + virtual QCString trClassHierarchyDescription() { return "ÀÌ »ó¼Ó ¸ñ·ÏÀº ¿ÏÀüÇÏÁö´Â ¾ÊÁö¸¸ ¾ËÆĺª¼øÀ¸·Î ºÐ·ùµÇ¾ú½À´Ï´Ù.";} /*! This is an introduction to the list with all files. */ - QCString trFileListDescription(bool extractAll) + virtual QCString trFileListDescription(bool extractAll) { - QCString result="ÀÌ°ÍÀº °£·«ÇÑ ¼³¸íÀ» °¡Áø ¸ðµç "; // "Here is a list of all " - if (!extractAll) result+="¹®¼ÈµÈ "; // "documented " - result+="ÆÄÀϵ鿡 ´ëÇÑ ¸ñ·ÏÀÔ´Ï´Ù."; // "files with brief descriptions:" + QCString result="ÀÌ°ÍÀº °£·«ÇÑ ¼³¸íÀ» °¡Áø ¸ðµç "; + if (!extractAll) result+="¹®¼ÈµÈ "; + result+="ÆÄÀϵ鿡 ´ëÇÑ ¸ñ·ÏÀÔ´Ï´Ù."; return result; } /*! This is an introduction to the annotated compound list. */ - QCString trCompoundListDescription() - { return "ÀÌ°ÍÀº °£·«ÇÑ ¼³¸íÀ» °¡Áø Ŭ·¡½ºµé, " - "±¸Á¶Ã¼µé, °ø¿ëüµé, ±×¸®°í ÀÎÅÍÆäÀ̽ºµéÀÔ´Ï´Ù."; + virtual QCString trCompoundListDescription() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + // TODO: This needs to be translated. -ryk11/22/01. + return "ÀÌ°ÍÀº °£·«ÇÑ ¼³¸íÀ» °¡Áø Ŭ·¡½ºµé, " + "±¸Á¶Ã¼µé, °ø¿ëüµé, ±×¸®°í ÀÎÅÍÆäÀ̽ºµéÀÔ´Ï´Ù."; + } + else + { + return "ÀÌ°ÍÀº °£·«ÇÑ ¼³¸íÀ» °¡Áø Ŭ·¡½ºµé, " + "±¸Á¶Ã¼µé, °ø¿ëüµé, ±×¸®°í ÀÎÅÍÆäÀ̽ºµéÀÔ´Ï´Ù."; + } } /*! This is an introduction to the page with all class members. */ - QCString trCompoundMembersDescription(bool extractAll) + virtual QCString trCompoundMembersDescription(bool extractAll) { - QCString result="ÀÌ°÷¿¡ ¸ðµç ¸®½ºÆ®°¡ ÀÖ½À´Ï´Ù"; //"Here is a list of all " - if (!extractAll) result+="¹®¼ÈµÈ "; //"documented " - result+="¸µÅ©°¡ µÈ Ŭ·¡½º ¸â¹öµé "; //"class members with links to " + QCString result="ÀÌ°÷¿¡ ¸ðµç ¸®½ºÆ®°¡ ÀÖ½À´Ï´Ù"; + if (!extractAll) + { + result+="¹®¼ÈµÈ "; + } + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + // TODO: This need to be translated. -ryk11/22/01. + result+="¸µÅ©°¡ µÈ Ŭ·¡½º ¸â¹öµé "; + } + else + { + result+="¸µÅ©°¡ µÈ Ŭ·¡½º ¸â¹öµé "; + } if (extractAll) - result+="°¢°¢ÀÇ ¸â¹ö¸¦ À§ÇÑ Å¬·¡½º ¹®¼:"; //"the class documentation for each member:" + result+="°¢°¢ÀÇ ¸â¹ö¸¦ À§ÇÑ Å¬·¡½º ¹®¼:"; else - result+="ÀÌÇÏ·Î ¼ÓÇÑ Å¬·¡½ºµé:"; //"the classes they belong to:" + result+="ÀÌÇÏ·Î ¼ÓÇÑ Å¬·¡½ºµé:"; return result; } /*! This is an introduction to the page with all file members. */ - QCString trFileMembersDescription(bool extractAll) + virtual QCString trFileMembersDescription(bool extractAll) { QCString result="ÀÌ°÷¿¡ ¸ðµç ¸®½ºÆ®°¡ ÀÖ½À´Ï´Ù"; if (!extractAll) result+="¹®¼ÈµÈ "; result+="¸µÅ©°¡ µÈ ÆÄÀÏ ¸â¹öµé "; if (extractAll) - result+="°¢ ¸â¹öµé¿¡ ´ëÇÑ ÆÄÀÏ ¹®¼È"; // "the file documentation for each member:" + result+="°¢ ¸â¹öµé¿¡ ´ëÇÑ ÆÄÀÏ ¹®¼È"; else - result+="±×°ÍµéÀÌ ¼ÓÇØÀÖ´Â ÆÄÀϵé"; // "the files they belong to:" + result+="±×°ÍµéÀÌ ¼ÓÇØÀÖ´Â ÆÄÀϵé"; return result; } /*! This is an introduction to the page with the list of all header files. */ - QCString trHeaderFilesDescription() - { return "ÀÌ°ÍÀº API¸¦ ±¸¼ºÇÏ´Â Çì´õ ÆÄÀϵéÀÔ´Ï´Ù."; } // "Here are the header files that make up the API:" + virtual QCString trHeaderFilesDescription() + { return "ÀÌ°ÍÀº API¸¦ ±¸¼ºÇÏ´Â Çì´õ ÆÄÀϵéÀÔ´Ï´Ù."; } /*! This is an introduction to the page with the list of all examples */ - QCString trExamplesDescription() - { return "ÀÌ°ÍÀº ¸ðµç ¿¹Á¦µéÀÇ ¸ñ·ÏÀÔ´Ï´Ù."; } // "Here is a list of all examples:" + virtual QCString trExamplesDescription() + { return "ÀÌ°ÍÀº ¸ðµç ¿¹Á¦µéÀÇ ¸ñ·ÏÀÔ´Ï´Ù."; } /*! This is an introduction to the page with the list of related pages */ - QCString trRelatedPagesDescription() + virtual QCString trRelatedPagesDescription() { return "ÀÌ°ÍÀº ¸ðµç °ü·ÃµÈ ¹®¼È ÆäÀÌÁöµéÀÇ ¸ñ·ÏÀÔ´Ï´Ù."; } - // "Here is a list of all related documentation pages:" /*! This is an introduction to the page with the list of class/file groups */ - QCString trModulesDescription() - { return "ÀÌ°ÍÀº ¸ðµç ¸ðµâµéÀÇ ¸ñ·ÏÀÔ´Ï´Ù."; } // "Here is a list of all modules:" + virtual QCString trModulesDescription() + { return "ÀÌ°ÍÀº ¸ðµç ¸ðµâµéÀÇ ¸ñ·ÏÀÔ´Ï´Ù."; } /*! This sentences is used in the annotated class/file lists if no brief * description is given. */ - QCString trNoDescriptionAvailable() - { return "À¯¿ëÇÑ ¼³¸íÀÌ ¾ø½À´Ï´Ù."; } // "No description available" + virtual QCString trNoDescriptionAvailable() + { return "À¯¿ëÇÑ ¼³¸íÀÌ ¾ø½À´Ï´Ù."; } // index titles (the project name is prepended for these) /*! This is used in HTML as the title of index.html. */ - QCString trDocumentation() + virtual QCString trDocumentation() { return "¹®¼È"; } /*! This is used in LaTeX as the title of the chapter with the * index of all groups. */ - QCString trModuleIndex() + virtual QCString trModuleIndex() { return "¸ðµâ »öÀÎ"; } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ - QCString trHierarchicalIndex() - { return "ºÐ·ùü°è »öÀÎ"; } // "Á¶Á÷ »öÀÎ", "°èÃþÀû À妽º" + virtual QCString trHierarchicalIndex() + { return "ºÐ·ùü°è »öÀÎ"; } /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. */ - QCString trCompoundIndex() - { return "ÇÕ¼º À妽º"; } // "È¥ÇÕ »öÀÎ" + virtual QCString trCompoundIndex() + { return "ÇÕ¼º À妽º"; } /*! This is used in LaTeX as the title of the chapter with the * list of all files. */ - QCString trFileIndex() + virtual QCString trFileIndex() { return "ÆÄÀÏ »öÀÎ"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all groups. */ - QCString trModuleDocumentation() + virtual QCString trModuleDocumentation() { return "¸ðµâ ¹®¼È"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all classes, structs and unions. */ - QCString trClassDocumentation() + virtual QCString trClassDocumentation() { return "Ŭ·¡½º ¹®¼È"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all files. */ - QCString trFileDocumentation() + virtual QCString trFileDocumentation() { return "ÆÄÀÏ ¹®¼È"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. */ - QCString trExampleDocumentation() + virtual QCString trExampleDocumentation() { return "¿¹Á¦ ¹®¼È"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all related pages. */ - QCString trPageDocumentation() + virtual QCString trPageDocumentation() { return "ÆäÀÌÁö ¹®¼È"; } /*! This is used in LaTeX as the title of the document */ - QCString trReferenceManual() - { return "Âü°í¼"; } // "Âü°í¼","Âü°í ¸Å´º¾ó", "ÂüÁ¶ ¸Þ´º¾ó" + virtual QCString trReferenceManual() + { return "Âü°í¼"; } /*! This is used in the documentation of a file as a header before the * list of defines */ - QCString trDefines() + virtual QCString trDefines() { return "Á¤Àǵé"; } /*! This is used in the documentation of a file as a header before the * list of function prototypes */ - QCString trFuncProtos() + virtual QCString trFuncProtos() { return "ÇÔ¼ö ¿øÇüµé"; } /*! This is used in the documentation of a file as a header before the * list of typedefs */ - QCString trTypedefs() + virtual QCString trTypedefs() { return "ŸÀÔ Á¤Àǵé"; } /*! This is used in the documentation of a file as a header before the * list of enumerations */ - QCString trEnumerations() + virtual QCString trEnumerations() { return "Enumerations"; } /*! This is used in the documentation of a file as a header before the * list of (global) functions */ - QCString trFunctions() + virtual QCString trFunctions() { return "ÇÔ¼öµé"; } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ - QCString trVariables() + virtual QCString trVariables() { return "º¯¼öµé"; } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ - QCString trEnumerationValues() + virtual QCString trEnumerationValues() { return "¿°Åü °ªµé"; } - /*! This is used in man pages as the author section. */ - QCString trAuthor() - { return "ÀúÀÚ"; } - /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ - QCString trDefineDocumentation() + virtual QCString trDefineDocumentation() { return "Á¤ÀÇ ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for function prototypes */ - QCString trFunctionPrototypeDocumentation() + virtual QCString trFunctionPrototypeDocumentation() { return "ÇÔ¼ö ¿øÇü ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for typedefs */ - QCString trTypedefDocumentation() + virtual QCString trTypedefDocumentation() { return "ŸÀÔ Á¤ÀÇ ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ - QCString trEnumerationTypeDocumentation() + virtual QCString trEnumerationTypeDocumentation() { return "¿°Åü ŸÀÔ ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ - QCString trEnumerationValueDocumentation() + virtual QCString trEnumerationValueDocumentation() { return "¿°Åü °ª ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ - QCString trFunctionDocumentation() + virtual QCString trFunctionDocumentation() { return "ÇÔ¼ö ¹®¼È"; } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for variables */ - QCString trVariableDocumentation() + virtual QCString trVariableDocumentation() { return "º¯¼ö ¹®¼È"; } /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds */ - QCString trCompounds() + virtual QCString trCompounds() { return "È¥ÇÕµé"; } - /*! This is used in the documentation of a group before the list of - * links to documented files - */ - QCString trFiles() - { return "ÆÄÀϵé"; } - /*! This is used in the standard footer of each page and indicates when * the page was generated */ - QCString trGeneratedAt(const char *date,const char *projName) + virtual QCString trGeneratedAt(const char *date,const char *projName) { QCString result=""; if (projName) result+=(QCString)projName+"¿¡ ´ëÇØ "; @@ -400,74 +475,71 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 } /*! This is part of the sentence used in the standard footer of each page. */ - QCString trWrittenBy() + virtual QCString trWrittenBy() { - return "written by"; // "¿¡ ÀÇÇØ ¾²¿©Áø?" + return "written by"; } /*! this text is put before a class diagram */ - QCString trClassDiagram(const char *clName) + virtual QCString trClassDiagram(const char *clName) { - return (QCString)clName+"¿¡ ´ëÇÑ »ó¼Ó µµÇ¥"; // "Inheritance diagram for "+clName + return (QCString)clName+"¿¡ ´ëÇÑ »ó¼Ó µµÇ¥"; } /*! this text is generated when the \\internal command is used. */ - QCString trForInternalUseOnly() + virtual QCString trForInternalUseOnly() { return "³»ºÎ »ç¿ë¸¸À» À§ÇØ"; } /*! this text is generated when the \\reimp command is used. */ - QCString trReimplementedForInternalReasons() + virtual QCString trReimplementedForInternalReasons() { return "³»ºÎÀû ÀÌÀ¯¸¦ À§ÇØ À籸ÇöµÈ: API°¡ ¿µÇâÀ» ¹ÞÁö¾Ê¾Ò´Ù."; } - // "Reimplemented for internal reasons; the API is not affected." /*! this text is generated when the \\warning command is used. */ - QCString trWarning() + virtual QCString trWarning() { return "°æ°í"; } /*! this text is generated when the \\bug command is used. */ - QCString trBugsAndLimitations() + virtual QCString trBugsAndLimitations() { return "¹ö±×µé°ú ÇÑ°èµé"; } /*! this text is generated when the \\version command is used. */ - QCString trVersion() + virtual QCString trVersion() { return "¹öÀü"; } /*! this text is generated when the \\date command is used. */ - QCString trDate() + virtual QCString trDate() { return "³¯Â¥"; } - /*! this text is generated when the \\author command is used. */ - QCString trAuthors() - { return "ÀúÀÚ(µé)"; } - /*! this text is generated when the \\return command is used. */ - QCString trReturns() + virtual QCString trReturns() { return "¹Ýȯ"; } /*! this text is generated when the \\sa command is used. */ - QCString trSeeAlso() + virtual QCString trSeeAlso() { return "ÂüÁ¶ÇϽÿä"; } /*! this text is generated when the \\param command is used. */ - QCString trParameters() + virtual QCString trParameters() { return "¸Å°³º¯¼öµé"; } /*! this text is generated when the \\exception command is used. */ - QCString trExceptions() + virtual QCString trExceptions() { return "¿¹¿Üµé"; } /*! this text is used in the title page of a LaTeX document. */ - QCString trGeneratedBy() + virtual QCString trGeneratedBy() { return "¿¡ ÀÇÇØ »ý¼ºµÈ"; } - // new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// /*! used as the title of page containing all the index of all namespaces. */ - QCString trNamespaceList() + virtual QCString trNamespaceList() { return "À̸§°ø°£ ¸ñ·Ï"; } /*! used as an introduction to the namespace list */ - QCString trNamespaceListDescription(bool extractAll) + virtual QCString trNamespaceListDescription(bool extractAll) { QCString result="ÀÌ°ÍÀº ¸ðµç °£·«ÇÑ ¼³¸íÀ» °¡Áø "; if (!extractAll) result+="¹®¼ÈµÈ "; @@ -478,7 +550,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! used in the class documentation as a header before the list of all * friends of a class */ - QCString trFriends() + virtual QCString trFriends() { return "ÇÁ·»µå"; } ////////////////////////////////////////////////////////////////////////// @@ -496,7 +568,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 ////////////////////////////////////////////////////////////////////////// /*! used as the title of the HTML page of a class/struct/union */ - QCString trCompoundReference(const char *clName, + virtual QCString trCompoundReference(const char *clName, ClassDef::CompoundType compType, bool isTemplate) { @@ -515,7 +587,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 } /*! used as the title of the HTML page of a file */ - QCString trFileReference(const char *fileName) + virtual QCString trFileReference(const char *fileName) { QCString result=fileName; result+=" ÆÄÀÏ ÂüÁ¶"; @@ -523,39 +595,38 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 } /*! used as the title of the HTML page of a namespace */ - QCString trNamespaceReference(const char *namespaceName) + virtual QCString trNamespaceReference(const char *namespaceName) { QCString result=namespaceName; result+=" À̸§ °ø°£ ÂüÁ¶"; return result; } - /* these are for the member sections of a class, struct or union */ - QCString trPublicMembers() + virtual QCString trPublicMembers() { return "°ø¿ë ¸Þ¼Òµå"; } - QCString trPublicSlots() + virtual QCString trPublicSlots() { return "°ø¿ë Slots"; } - QCString trSignals() + virtual QCString trSignals() { return "½ÅÈ£"; } - QCString trStaticPublicMembers() + virtual QCString trStaticPublicMembers() { return "Á¤Àû °ø¿ë ¸Þ¼Òµå"; } - QCString trProtectedMembers() + virtual QCString trProtectedMembers() { return "ÇÁ·ÎÅØƼµå ¸Þ¼Òµå"; } - QCString trProtectedSlots() + virtual QCString trProtectedSlots() { return "Protected Slots"; } - QCString trStaticProtectedMembers() + virtual QCString trStaticProtectedMembers() { return "Á¤Àû ÇÁ·ÎÅØƼµå ¸Þ¼Òµå"; } - QCString trPrivateMembers() + virtual QCString trPrivateMembers() { return "ÇÁ¶óÀ̺£ÀÌÆ® ¸Þ¼Òµå"; } - QCString trPrivateSlots() + virtual QCString trPrivateSlots() { return "Private Slots"; } - QCString trStaticPrivateMembers() + virtual QCString trStaticPrivateMembers() { return "Á¤Àû ÇÁ¶óÀ̺£ÀÌÆ® ¸Þ¼Òµå"; } /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. */ - QCString trWriteList(int numEntries) + virtual QCString trWriteList(int numEntries) { QCString result; int i; @@ -580,7 +651,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! used in class documentation to produce a list of base classes, * if class diagrams are disabled. */ - QCString trInheritsList(int numEntries) + virtual QCString trInheritsList(int numEntries) { return trWriteList(numEntries)+" µéÀ» »ó¼ÓÇÏ´Ù."; } @@ -588,7 +659,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! used in class documentation to produce a list of super classes, * if class diagrams are disabled. */ - QCString trInheritedByList(int numEntries) + virtual QCString trInheritedByList(int numEntries) { return trWriteList(numEntries)+"¿¡ ÀÇÇØ »ó¼ÓµÈ."; } @@ -596,7 +667,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! used in member documentation blocks to produce a list of * members that are hidden by this one. */ - QCString trReimplementedFromList(int numEntries) + virtual QCString trReimplementedFromList(int numEntries) { return trWriteList(numEntries)+"À¸·ÎºÎÅÍ À籸ÇöµÈ."; } @@ -604,17 +675,17 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! used in member documentation blocks to produce a list of * all member that overwrite the implementation of this member. */ - QCString trReimplementedInList(int numEntries) + virtual QCString trReimplementedInList(int numEntries) { return trWriteList(numEntries)+"¿¡¼ À籸ÇöµÈ."; } /*! This is put above each page as a link to all members of namespaces. */ - QCString trNamespaceMembers() + virtual QCString trNamespaceMembers() { return "À̸§°ø°£ ¸â¹öµé"; } /*! This is an introduction to the page with all namespace members */ - QCString trNamespaceMemberDescription(bool extractAll) + virtual QCString trNamespaceMemberDescription(bool extractAll) { QCString result="ÀÌ°ÍÀº ¸ðµç "; if (!extractAll) result+="¹®¼ÈµÈ "; @@ -629,13 +700,13 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! This is used in LaTeX as the title of the chapter with the * index of all namespaces. */ - QCString trNamespaceIndex() + virtual QCString trNamespaceIndex() { return "À̸§°ø°£ »öÀÎ"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all namespaces. */ - QCString trNamespaceDocumentation() + virtual QCString trNamespaceDocumentation() { return "À̸§°ø°£ ¹®¼È"; } ////////////////////////////////////////////////////////////////////////// @@ -645,7 +716,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! This is used in the documentation before the list of all * namespaces in a file. */ - QCString trNamespaces() + virtual QCString trNamespaces() { return "À̸§°ø°£"; } ////////////////////////////////////////////////////////////////////////// @@ -655,7 +726,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! 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. */ - QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) { // here s is one of " Class", " Struct" or " Union" // single is true implies a single file @@ -677,7 +748,7 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 /*! This is in the (quick) index as a link to the alphabetical compound * list. */ - QCString trAlphabeticalList() + virtual QCString trAlphabeticalList() { return "¾ËÆĺª¼ø¼ÀÇ ¸ñ·Ï"; } ////////////////////////////////////////////////////////////////////////// @@ -685,44 +756,44 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 ////////////////////////////////////////////////////////////////////////// /*! This is used as the heading text for the retval command. */ - QCString trReturnValues() + virtual QCString trReturnValues() { return "¹Ýȯ°ª"; } /*! This is in the (quick) index as a link to the main page (index.html) */ - QCString trMainPage() + virtual QCString trMainPage() { return "ÁÖ¿ä ÆäÀÌÁö"; } /*! This is used in references to page that are put in the LaTeX * documentation. It should be an abbreviation of the word page. */ - QCString trPageAbbreviation() + virtual QCString trPageAbbreviation() { return "ÆäÀÌÁö"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - QCString trSources() + virtual QCString trSources() { return "Ãâó"; } - QCString trDefinedAtLineInSourceFile() + virtual QCString trDefinedAtLineInSourceFile() { - return "ÆÄÀÏ @1. ÀÇ @0 ¹ø° ¶óÀο¡¼ Á¤ÀÇ"; // "Definition at line @0 of file @1." + return "ÆÄÀÏ @1. ÀÇ @0 ¹ø° ¶óÀο¡¼ Á¤ÀÇ"; } - QCString trDefinedInSourceFile() + virtual QCString trDefinedInSourceFile() { - return "ÆÄÀÏ @0. ¿¡¼ Á¤ÀÇ"; // "Definition in file @0." + return "ÆÄÀÏ @0. ¿¡¼ Á¤ÀÇ"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991205 ////////////////////////////////////////////////////////////////////////// - QCString trDeprecated() + virtual QCString trDeprecated() { - return "Deprecated"; // "ºñ³¹ÞÀº(??)","¹Ý´ëÇÏ´Â" + return "Deprecated"; } ////////////////////////////////////////////////////////////////////////// @@ -730,71 +801,515 @@ class TranslatorKorean : public TranslatorAdapter_1_1_0 ////////////////////////////////////////////////////////////////////////// /*! this text is put before a collaboration diagram */ - QCString trCollaborationDiagram(const char *clName) + virtual QCString trCollaborationDiagram(const char *clName) { return (QCString)clName+"¿¡ ´ëÇÑ ¿øÁ¶ µµÇ¥:"; } /*! this text is put before an include dependency graph */ - QCString trInclDepGraph(const char *fName) + virtual QCString trInclDepGraph(const char *fName) { return (QCString)fName+"¿¡ ´ëÇÑ include ÀÇÁ¸ ±×·¡ÇÁ"; } /*! header that is put before the list of constructor/destructors. */ - QCString trConstructorDocumentation() + virtual QCString trConstructorDocumentation() { return "»ý¼ºÀÚ & ¼Ò¸êÀÚ ¹®¼È"; } /*! Used in the file documentation to point to the corresponding sources. */ - QCString trGotoSourceCode() + virtual QCString trGotoSourceCode() { return "ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ ¼Ò½º ÄÚµå·Î °¡½Ã¿À"; } /*! Used in the file sources to point to the corresponding documentation. */ - QCString trGotoDocumentation() + virtual QCString trGotoDocumentation() { return "ÀÌ ÆÄÀÏÀÇ ¹®¼È·Î °¡½Ã¿À"; } /*! Text for the \\pre command */ - QCString trPrecondition() + virtual QCString trPrecondition() { return "ÀüÁ¦ Á¶°Ç"; } /*! Text for the \\post command */ - QCString trPostcondition() + virtual QCString trPostcondition() { - return "ÈÄ¹Ì Á¶°Ç"; // "ÈÄÄ¡Á¶°Ç" + return "ÈÄ¹Ì Á¶°Ç"; //Alternate: "ÈÄÄ¡Á¶°Ç" } /*! Text for the \\invariant command */ - QCString trInvariant() + virtual QCString trInvariant() { return "º¯ÇÏÁö ¾Ê´Â"; } /*! Text shown before a multi-line variable/enum initialization */ - QCString trInitialValue() + virtual QCString trInitialValue() { return "Ãʱâȱâ"; } /*! Text used the source code in the file index */ - QCString trCode() + virtual QCString trCode() { return "ÄÚµå"; } - QCString trGraphicalHierarchy() + virtual QCString trGraphicalHierarchy() { return "µµÇ¥ÀÇ Å¬·¡½º ºÐ·ùü°è"; // "µµÇ¥ÀÇ Å¬·¡½º Á¶Á÷" } - QCString trGotoGraphicalHierarchy() + virtual QCString trGotoGraphicalHierarchy() { return "µµÇ¥ÀÇ Å¬·¡½º ºÐ·ùü°è·Î °¡½Ã¿À"; // "µµÇ¥ÀÇ Å¬·¡½º Á¶Á÷À¸·Î °¡½Ã¿À" } - QCString trGotoTextualHierarchy() + virtual QCString trGotoTextualHierarchy() { return "¹®ÀÚÀÇ Å¬·¡½º ºÐ·ùü°è·Î °¡½Ã¿À"; // "¹®ÀÚÀÇ Å¬·¡½º Á¶Á÷À¸·Î °¡½Ã¿À" } - QCString trPageIndex() + virtual QCString trPageIndex() { return "ÆäÀÌÁö »öÀÎ"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trNote() + { + return "Note"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trPublicTypes() + { + return "Public Types"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trPublicAttribs() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Data Fields"; // TODO: Need to be translated. -ryk11/22/01. + } + else + { + return "Public Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + } + virtual QCString trStaticPublicAttribs() + { + return "Static Public Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trProtectedTypes() + { + return "Protected Types"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trProtectedAttribs() + { + return "Protected Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trStaticProtectedAttribs() + { + return "Static Protected Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trPrivateTypes() + { + return "Private Types"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trPrivateAttribs() + { + return "Private Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trStaticPrivateAttribs() + { + return "Static Private Attributes"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\todo item */ + virtual QCString trTodo() + { + return "Todo"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Todo List"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trReferencedBy() + { + return "Referenced by"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trRemarks() + { + return "Remarks"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trAttention() + { + return "Attention"; // TODO: Need to be translated. -ryk11/22/01. + } + virtual QCString trInclByDepGraph() + { + // TODO: Need to be translated. -ryk11/22/01. + return "This graph shows which files directly or " + "indirectly include this file:"; + } + virtual QCString trSince() + { + return "Since"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Graph Legend"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! page explaining how the dot graph's should be interpreted + * The %A in the text below are to prevent link to classes called "A". + */ + virtual QCString trLegendDocs() + { + // TODO: Need to be translated. -ryk11/22/01. + return + "This page explains how to interpret the graphs that are generated " + "by doxygen.<p>\n" + "Consider the following example:\n" + "\\code\n" + "/*! Invisible class because of truncation */\n" + "class Invisible { };\n\n" + "/*! Truncated class, inheritance relation is hidden */\n" + "class Truncated : public Invisible { };\n\n" + "/* Class not documented with doxygen comments */\n" + "class Undocumented { };\n\n" + "/*! Class that is inherited using public inheritance */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! A template class */\n" + "template<class T> class Templ { };\n\n" + "/*! Class that is inherited using protected inheritance */\n" + "class ProtectedBase { };\n\n" + "/*! Class that is inherited using private inheritance */\n" + "class PrivateBase { };\n\n" + "/*! Class that is used by the Inherited class */\n" + "class Used { };\n\n" + "/*! Super class that inherits a number of other classes */\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" + "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file " + "is set to 240 this will result in the following graph:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "The boxes in the above graph have the following meaning:\n" + "<ul>\n" + "<li>%A filled black box represents the struct or class for which the " + "graph is generated.\n" + "<li>%A box with a black border denotes a documented struct or class.\n" + "<li>%A box with a grey border denotes an undocumented struct or class.\n" + "<li>%A box with a red border denotes a documented struct or class for" + "which not all inheritance/containment relations are shown. %A graph is " + "truncated if it does not fit within the specified boundaries.\n" + "</ul>\n" + "The arrows have the following meaning:\n" + "<ul>\n" + "<li>%A dark blue arrow is used to visualize a public inheritance " + "relation between two classes.\n" + "<li>%A dark green arrow is used for protected inheritance.\n" + "<li>%A dark red arrow is used for private inheritance.\n" + "<li>%A purple dashed arrow is used if a class is contained or used " + "by another class. The arrow is labeled with the variable(s) " + "through which the pointed class or struct is accessible.\n" + "<li>%A yellow dashed arrow denotes a relation between a template instance and " + "the template class it was instantiated from. The arrow is labeled with " + "the template parameters of the instance.\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "legend"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Test"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Test List"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for KDE-2 IDL methods */ + virtual QCString trDCOPMethods() + { + return "DCOP Methods"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for IDL properties */ + virtual QCString trProperties() + { + return "Properties"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used as a section header for IDL property documentation */ + virtual QCString trPropertyDocumentation() + { + return "Property Documentation"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + virtual QCString trInterfaces() + { + return "Interfaces"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Data Structures"; // TODO: Need to be translated. -ryk11/22/01. + } + else + { + return "Classes"; // TODO: Need to be translated. -ryk11/22/01. + } + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Package "+name; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Package List"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Here are the packages with brief descriptions (if available):"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Packages"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used as a chapter title for Latex & RTF output */ + virtual QCString trPackageDocumentation() + { + return "Package Documentation"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Value:"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\bug item */ + virtual QCString trBug() + { + return "Bug"; // TODO: Need to be translated. -ryk11/22/01. + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return "Bug List"; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.6 +////////////////////////////////////////////////////////////////////////// + + /*! Used as ansicpg for RTF file + * + * The following table shows the correlation of Charset name, Charset Value and + * <pre> + * Codepage number: + * Charset Name Charset Value(hex) Codepage number + * ------------------------------------------------------ + * DEFAULT_CHARSET 1 (x01) + * SYMBOL_CHARSET 2 (x02) + * OEM_CHARSET 255 (xFF) + * ANSI_CHARSET 0 (x00) 1252 + * RUSSIAN_CHARSET 204 (xCC) 1251 + * EE_CHARSET 238 (xEE) 1250 + * GREEK_CHARSET 161 (xA1) 1253 + * TURKISH_CHARSET 162 (xA2) 1254 + * BALTIC_CHARSET 186 (xBA) 1257 + * HEBREW_CHARSET 177 (xB1) 1255 + * ARABIC _CHARSET 178 (xB2) 1256 + * SHIFTJIS_CHARSET 128 (x80) 932 + * HANGEUL_CHARSET 129 (x81) 949 + * GB2313_CHARSET 134 (x86) 936 + * CHINESEBIG5_CHARSET 136 (x88) 950 + * </pre> + * + */ + virtual QCString trRTFansicp() + { + return "1252"; + } + + + /*! Used as ansicpg for RTF fcharset + * \see trRTFansicp() for a table of possible values. + */ + virtual QCString trRTFCharSet() + { + return "0"; + } + + /*! Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return "Index"; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Class" : "class")); + if (!singular) result+="es"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "File" : "file")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Namespace" : "namespace")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Group" : "group")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Page" : "page")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Member" : "member")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Field" : "field")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + + /*! 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 ? "Global" : "global")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// 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 ? "Author" : "author")); + if (!singular) result+="s"; + return result; // TODO: Need to be translated. -ryk11/22/01. + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "References"; // TODO: Need to be translated. -ryk11/22/01. + } + }; #endif diff --git a/src/translator_nl.h b/src/translator_nl.h index e5a749a..c757351 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -18,7 +18,7 @@ #ifndef TRANSLATOR_NL_H #define TRANSLATOR_NL_H -class TranslatorDutch : public TranslatorAdapter_1_2_11 +class TranslatorDutch : public Translator { public: QCString idLanguage() @@ -964,6 +964,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_11 return result; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Gebruikt"; + } + }; #endif diff --git a/src/translator_pt.h b/src/translator_pt.h index 08c1e82..4f3ffa8 100644 --- a/src/translator_pt.h +++ b/src/translator_pt.h @@ -18,16 +18,18 @@ * * VERSION HISTORY * --------------- + * 002 19 november 2001 + * ! Updated for doxygen v1.2.12 * 001 20 july 2001 - * - Updated for doxygen v1.2.8.1 + * ! Updated for doxygen v1.2.8.1 * 000 ? - * - Initial translation for doxygen v1.1.5 + * + Initial translation for doxygen v1.1.5 */ #ifndef TRANSLATOR_PT_H #define TRANSLATOR_PT_H -class TranslatorPortuguese : public TranslatorAdapter_1_2_11 +class TranslatorPortuguese : public Translator { public: @@ -1348,5 +1350,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_11 return result; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Referências"; + } + }; + #endif diff --git a/src/translator_si.h b/src/translator_si.h index 831cb3f..ea073b5 100644 --- a/src/translator_si.h +++ b/src/translator_si.h @@ -21,7 +21,7 @@ #define TRANSLATOR_SI_H -class TranslatorSlovene : public TranslatorAdapter_1_2_11 +class TranslatorSlovene : public Translator { public: QCString idLanguage() @@ -981,7 +981,16 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_11 if (!singular) result+="ji"; return result; } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Reference"; + } }; #endif diff --git a/src/util.cpp b/src/util.cpp index adb3172..0baf3f7 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1275,6 +1275,8 @@ void stripIrrelevantConstVolatile(QCString &s) int i; if (s=="const") { s.resize(0); return; } if (s=="volatile") { s.resize(0); return; } + + // strip occurrences of const i = s.find("const "); if (i!=-1) { @@ -1284,6 +1286,8 @@ void stripIrrelevantConstVolatile(QCString &s) s=s.left(i)+s.right(s.length()-i-6); } } + + // strip occurrences of volatile i = s.find("volatile "); if (i!=-1) { @@ -1295,22 +1299,6 @@ void stripIrrelevantConstVolatile(QCString &s) } } -#if 0 // should be done differently -static QCString resolveTypeDefs(const QCString &s) -{ - QCString result; - static QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*"); - int p=0,l,i; - while ((i=re.match(s,p,&l))!=-1) - { - result += s.mid(p,i-p); - result += resolveTypeDef(s.mid(i,l)); - p=i+l; - } - result+=s.right(s.length()-p); - return result; -} -#endif // a bit of debug support for matchArguments #define MATCH @@ -1485,6 +1473,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, // otherwise we assume that a name starts at the current position. while (srcPos<srcAType.length() && isId(srcAType.at(srcPos))) srcPos++; while (dstPos<dstAType.length() && isId(dstAType.at(dstPos))) dstPos++; + // if nothing more follows for both types then we assume we have // found a match. Note that now `signed int' and `signed' match, but // seeing that int is not a name can only be done by looking at the @@ -3108,8 +3097,7 @@ const char *getOverloadDocs() "function only in what argument(s) it accepts."; } -void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, - MemberGroupList *memberGroupList) +void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict) { MemberListIterator mli(*ml); MemberDef *md; @@ -3123,12 +3111,11 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, QCString *pDocs = Doxygen::memberDocDict[groupId]; if (pGrpHeader) { - MemberGroup *mg = memberGroupDict->find(groupId); + MemberGroup *mg = memberGroupSDict->find(groupId); if (mg==0) { mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0); - memberGroupDict->insert(groupId,mg); - memberGroupList->append(mg); + memberGroupSDict->append(groupId,mg); } md = ml->take(index); mg->insertMember(md); @@ -39,8 +39,7 @@ class BaseClassList; class GroupDef; class NamespaceList; class ClassList; -class MemberGroupList; -class MemberGroupDict; +class MemberGroupSDict; class Definition; struct TagInfo; @@ -149,8 +148,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE); QCString convertToHtml(const char *s); QCString convertToXML(const char *s); const char * getOverloadDocs(); -void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, - MemberGroupList *memberGroupList); +void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict); bool extractClassNameFromType(const QCString &type,int &pos, QCString &name,QCString &templSpec); QCString substituteTemplateArgumentsInString( diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 361b68c..0c3a5da 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -771,7 +771,7 @@ class XMLGenerator : public OutputDocInterface friend void writeXMLCodeBlock(QTextStream &t,FileDef *fd); }; -void writeXMLDocBlock(QTextStream &t, +static void writeXMLDocBlock(QTextStream &t, const QCString &fileName, int lineNr, const QCString &scope, @@ -810,19 +810,19 @@ void writeXMLCodeBlock(QTextStream &t,FileDef *fd) -void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) +static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) { - // + declaration - // - reimplements - // - reimplementedBy - // - exceptions - // - const/volatile specifiers + // + declaration/definition arg lists + // + reimplements + // + reimplementedBy + // + exceptions + // + const/volatile specifiers // - examples // + source definition - // - source references - // - source referenced by - // - include code + // + source references + // + source referenced by + // - body code if (md->memberType()==MemberDef::EnumValue) return; @@ -852,7 +852,7 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) case MemberDef::Slot: memType="slot"; isFunc=TRUE; break; } t << memType << "\" id=\""; - t << def->getOutputFileBase() + t << md->getOutputFileBase() << "_1" // encoded `:' character (see util.cpp:convertNameToFile) << md->anchor(); t << "\""; @@ -871,8 +871,19 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) case Protected: t << "protected"; break; case Private: t << "private"; break; } - t << "\">" << endl; - + t << "\""; + + if (isFunc) + { + ArgumentList *al = md->argumentList(); + t << " const=\""; + if (al && al->constSpecifier) t << "yes"; else t << "no"; + t << "\" volatile=\""; + if (al && al->volatileSpecifier) t << "yes"; else t << "no"; + t << "\""; + } + t << ">" << endl; + if (md->memberType()!=MemberDef::Define && md->memberType()!=MemberDef::Enumeration ) @@ -885,7 +896,27 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) t << " <name>"; writeXMLString(t,md->name()); + t << "</name>" << endl; + MemberDef *rmd = md->reimplements(); + if (rmd) + { + t << " <reimplements id=\"" + << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">" + << rmd->name() << "</reimplements>"; + } + MemberList *rbml = md->reimplementedBy(); + if (rbml) + { + MemberListIterator mli(*rbml); + for (mli.toFirst();(rmd=mli.current());++mli) + { + t << " <reimplementedby id=\"" + << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">" + << rmd->name() << "</reimplementedby>"; + } + } + if (isFunc) //function { ArgumentList *declAl = new ArgumentList; @@ -958,7 +989,14 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),md->initializer()); t << "</initializer>" << endl; } - // TODO: exceptions, const volatile + + if (md->excpString()) + { + t << " <exceptions>"; + linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),md->excpString()); + t << "</exception>" << endl; + } + if (md->memberType()==MemberDef::Enumeration) // enum { if (md->enumFieldList()) @@ -994,7 +1032,7 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) << md->getDefLine() << "\"/>" << endl; } - printf("md->getReferencesMembers()=%p\n",md->getReferencesMembers()); + //printf("md->getReferencesMembers()=%p\n",md->getReferencesMembers()); if (md->getReferencesMembers()) { MemberSDict::Iterator mdi(*md->getReferencesMembers()); @@ -1051,43 +1089,48 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) t << " </memberdef>" << endl; } - -void generateXMLClassSection(ClassDef *cd,QTextStream &t,MemberList *ml,const char *kind) +static void generateXMLSection(Definition *d,QTextStream &t, + MemberList *ml,const char *kind,const char *header=0) { - if (ml->count()>0) + if (ml->count()==0) return; // empty list + + t << " <sectiondef kind=\"" << kind << "\">" << endl; + if (header) { - t << " <sectiondef kind=\"" << kind << "\">" << endl; - //t << " <memberlist>" << endl; - MemberListIterator mli(*ml); - MemberDef *md; - for (mli.toFirst();(md=mli.current());++mli) - { - generateXMLForMember(md,t,cd); - } - //t << " </memberlist>" << endl; - t << " </sectiondef>" << endl; + t << " <header>" << convertToXML(header) << "</header>" << endl; + } + MemberListIterator mli(*ml); + MemberDef *md; + for (mli.toFirst();(md=mli.current());++mli) + { + generateXMLForMember(md,t,d); } + t << " </sectiondef>" << endl; } -void generateXMLForClass(ClassDef *cd,QTextStream &t) + +static void generateXMLForClass(ClassDef *cd,QTextStream &t) { // + brief description // + detailed description // - template arguments - // - include files + // - include file + // - member groups // + inheritance diagram // + list of direct super classes // + list of direct sub classes + // - list of inner classes // + collaboration diagram // - list of all members // + user defined member sections // + standard member sections // + detailed member documentation - // - examples + // - examples using the class - if (cd->isReference()) return; // skip external references. + if (cd->isReference()) return; // skip external references. if (cd->name().find('@')!=-1) return; // skip anonymous compounds. - if (cd->templateMaster()!=0) return; // skip generated template instances. + if (cd->templateMaster()!=0) return; // skip generated template instances. + t << " <compounddef id=\"" << cd->getOutputFileBase() << "\" kind=\"" << cd->compoundTypeString() << "\">" << endl; @@ -1144,43 +1187,38 @@ void generateXMLForClass(ClassDef *cd,QTextStream &t) t << "\"/>" << endl; } } - int numMembers = - cd->pubTypes.count()+cd->pubMembers.count()+cd->pubAttribs.count()+ - cd->pubSlots.count()+cd->signals.count()+cd->dcopMethods.count()+ - cd->pubStaticMembers.count()+ - cd->pubStaticAttribs.count()+cd->proTypes.count()+cd->proMembers.count()+ - cd->proAttribs.count()+cd->proSlots.count()+cd->proStaticMembers.count()+ - cd->proStaticAttribs.count()+cd->priTypes.count()+cd->priMembers.count()+ - cd->priAttribs.count()+cd->priSlots.count()+cd->priStaticMembers.count()+ - cd->priStaticAttribs.count()+cd->friends.count()+cd->related.count(); - if (numMembers>0) + + MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); + MemberGroup *mg; + for (;(mg=mgli.current());++mgli) { - //t << " <sectionlist>" << endl; - generateXMLClassSection(cd,t,&cd->pubTypes,"public-type"); - generateXMLClassSection(cd,t,&cd->pubMembers,"public-func"); - generateXMLClassSection(cd,t,&cd->pubAttribs,"public-attrib"); - generateXMLClassSection(cd,t,&cd->pubSlots,"public-slot"); - generateXMLClassSection(cd,t,&cd->signals,"signal"); - generateXMLClassSection(cd,t,&cd->dcopMethods,"dcop-func"); - generateXMLClassSection(cd,t,&cd->properties,"property"); - generateXMLClassSection(cd,t,&cd->pubStaticMembers,"public-static-func"); - generateXMLClassSection(cd,t,&cd->pubStaticAttribs,"public-static-attrib"); - generateXMLClassSection(cd,t,&cd->proTypes,"protected-type"); - generateXMLClassSection(cd,t,&cd->proMembers,"protected-func"); - generateXMLClassSection(cd,t,&cd->proAttribs,"protected-attrib"); - generateXMLClassSection(cd,t,&cd->proSlots,"protected-slot"); - generateXMLClassSection(cd,t,&cd->proStaticMembers,"protected-static-func"); - generateXMLClassSection(cd,t,&cd->proStaticAttribs,"protected-static-attrib"); - generateXMLClassSection(cd,t,&cd->priTypes,"private-type"); - generateXMLClassSection(cd,t,&cd->priMembers,"private-func"); - generateXMLClassSection(cd,t,&cd->priAttribs,"private-attrib"); - generateXMLClassSection(cd,t,&cd->priSlots,"private-slot"); - generateXMLClassSection(cd,t,&cd->priStaticMembers,"private-static-func"); - generateXMLClassSection(cd,t,&cd->priStaticAttribs,"private-static-attrib"); - generateXMLClassSection(cd,t,&cd->friends,"signal"); - generateXMLClassSection(cd,t,&cd->related,"related"); - //t << " </sectionlist>" << endl; + generateXMLSection(cd,t,mg->members(),"user-defined",mg->header()); } + + generateXMLSection(cd,t,&cd->pubTypes,"public-type"); + generateXMLSection(cd,t,&cd->pubMembers,"public-func"); + generateXMLSection(cd,t,&cd->pubAttribs,"public-attrib"); + generateXMLSection(cd,t,&cd->pubSlots,"public-slot"); + generateXMLSection(cd,t,&cd->signals,"signal"); + generateXMLSection(cd,t,&cd->dcopMethods,"dcop-func"); + generateXMLSection(cd,t,&cd->properties,"property"); + generateXMLSection(cd,t,&cd->pubStaticMembers,"public-static-func"); + generateXMLSection(cd,t,&cd->pubStaticAttribs,"public-static-attrib"); + generateXMLSection(cd,t,&cd->proTypes,"protected-type"); + generateXMLSection(cd,t,&cd->proMembers,"protected-func"); + generateXMLSection(cd,t,&cd->proAttribs,"protected-attrib"); + generateXMLSection(cd,t,&cd->proSlots,"protected-slot"); + generateXMLSection(cd,t,&cd->proStaticMembers,"protected-static-func"); + generateXMLSection(cd,t,&cd->proStaticAttribs,"protected-static-attrib"); + generateXMLSection(cd,t,&cd->priTypes,"private-type"); + generateXMLSection(cd,t,&cd->priMembers,"private-func"); + generateXMLSection(cd,t,&cd->priAttribs,"private-attrib"); + generateXMLSection(cd,t,&cd->priSlots,"private-slot"); + generateXMLSection(cd,t,&cd->priStaticMembers,"private-static-func"); + generateXMLSection(cd,t,&cd->priStaticAttribs,"private-static-attrib"); + generateXMLSection(cd,t,&cd->friends,"signal"); + generateXMLSection(cd,t,&cd->related,"related"); + t << " <briefdescription>" << endl; writeXMLDocBlock(t,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->briefDescription()); t << " </briefdescription>" << endl; @@ -1207,41 +1245,38 @@ void generateXMLForClass(ClassDef *cd,QTextStream &t) t << " </compounddef>" << endl; } -void generateXMLSection(Definition *d,QTextStream &t,MemberList *ml,const char *kind) +static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t) { - if (ml->count()>0) - { - t << " <sectiondef kind=\"" << kind << "\">" << endl; - MemberListIterator mli(*ml); - MemberDef *md; - for (mli.toFirst();(md=mli.current());++mli) - { - generateXMLForMember(md,t,d); - } - t << " </sectiondef>" << endl; - } -} + // - contained class definitions + // - contained namespace definitions + // - member groups + // + normal members + // + brief desc + // + detailed desc + // + location + // - files containing (parts of) the namespace definition -void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t) -{ if (nd->isReference()) return; // skip external references t << " <compounddef id=\"" << nd->getOutputFileBase() << "\" kind=\"namespace\">" << endl; t << " <compoundname>"; writeXMLString(t,nd->name()); t << "</compoundname>" << endl; - int numMembers = nd->decDefineMembers.count()+nd->decProtoMembers.count()+ - nd->decTypedefMembers.count()+nd->decEnumMembers.count()+ - nd->decFuncMembers.count()+nd->decVarMembers.count(); - if (numMembers>0) + + MemberGroupSDict::Iterator mgli(*nd->memberGroupSDict); + MemberGroup *mg; + for (;(mg=mgli.current());++mgli) { - generateXMLSection(nd,t,&nd->decDefineMembers,"define"); - generateXMLSection(nd,t,&nd->decProtoMembers,"prototype"); - generateXMLSection(nd,t,&nd->decTypedefMembers,"typedef"); - generateXMLSection(nd,t,&nd->decEnumMembers,"enum"); - generateXMLSection(nd,t,&nd->decFuncMembers,"func"); - generateXMLSection(nd,t,&nd->decVarMembers,"var"); + generateXMLSection(nd,t,mg->members(),"user-defined",mg->header()); } + + generateXMLSection(nd,t,&nd->decDefineMembers,"define"); + generateXMLSection(nd,t,&nd->decProtoMembers,"prototype"); + generateXMLSection(nd,t,&nd->decTypedefMembers,"typedef"); + generateXMLSection(nd,t,&nd->decEnumMembers,"enum"); + generateXMLSection(nd,t,&nd->decFuncMembers,"func"); + generateXMLSection(nd,t,&nd->decVarMembers,"var"); + t << " <briefdescription>" << endl; writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->briefDescription()); t << " </briefdescription>" << endl; @@ -1254,26 +1289,87 @@ void generateXMLForNamespace(NamespaceDef *nd,QTextStream &t) t << " </compounddef>" << endl; } -void generateXMLForFile(FileDef *fd,QTextStream &t) +static void generateXMLForFile(FileDef *fd,QTextStream &t) { + // + includes files + // + includedby files + // + include graph + // + included by graph + // - contained class definitions + // - contained namespace definitions + // - member groups + // + normal members + // + brief desc + // + detailed desc + // + source code + // + location + // - number of lines + if (fd->isReference()) return; // skip external references + t << " <compounddef id=\"" << fd->getOutputFileBase() << "\" kind=\"file\">" << endl; t << " <compoundname>"; writeXMLString(t,fd->name()); t << "</compoundname>" << endl; - int numMembers = fd->decDefineMembers.count()+fd->decProtoMembers.count()+ - fd->decTypedefMembers.count()+fd->decEnumMembers.count()+ - fd->decFuncMembers.count()+fd->decVarMembers.count(); - if (numMembers>0) + + QListIterator<IncludeInfo> ili1(*fd->includeFileList()); + IncludeInfo *inc; + for (ili1.toFirst();(inc=ili1.current());++ili1) + { + t << " <includes"; + if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references + { + t << " id=\"" << inc->fileDef->getOutputFileBase() << "\""; + } + t << " local=\"" << (inc->local ? "yes" : "no") << "\">"; + t << inc->includeName; + t << "</includes>" << endl; + } + + QListIterator<IncludeInfo> ili2(*fd->includedByFileList()); + for (ili2.toFirst();(inc=ili2.current());++ili2) + { + t << " <includedby"; + if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references + { + t << " id=\"" << inc->fileDef->getOutputFileBase() << "\""; + } + t << " local=\"" << (inc->local ? "yes" : "no") << "\">"; + t << inc->includeName; + t << "</includedby>" << endl; + } + + DotInclDepGraph incDepGraph(fd,FALSE); + if (!incDepGraph.isTrivial()) + { + t << " <incdepgraph>" << endl; + incDepGraph.writeXML(t); + t << " </incdepgraph>" << endl; + } + + DotInclDepGraph invIncDepGraph(fd,TRUE); + if (!invIncDepGraph.isTrivial()) + { + t << " <invincdepgraph>" << endl; + invIncDepGraph.writeXML(t); + t << " </invincdepgraph>" << endl; + } + + MemberGroupSDict::Iterator mgli(*fd->memberGroupSDict); + MemberGroup *mg; + for (;(mg=mgli.current());++mgli) { - generateXMLSection(fd,t,&fd->decDefineMembers,"define"); - generateXMLSection(fd,t,&fd->decProtoMembers,"prototype"); - generateXMLSection(fd,t,&fd->decTypedefMembers,"typedef"); - generateXMLSection(fd,t,&fd->decEnumMembers,"enum"); - generateXMLSection(fd,t,&fd->decFuncMembers,"func"); - generateXMLSection(fd,t,&fd->decVarMembers,"var"); + generateXMLSection(fd,t,mg->members(),"user-defined",mg->header()); } + + generateXMLSection(fd,t,&fd->decDefineMembers,"define"); + generateXMLSection(fd,t,&fd->decProtoMembers,"prototype"); + generateXMLSection(fd,t,&fd->decTypedefMembers,"typedef"); + generateXMLSection(fd,t,&fd->decEnumMembers,"enum"); + generateXMLSection(fd,t,&fd->decFuncMembers,"func"); + generateXMLSection(fd,t,&fd->decVarMembers,"var"); + t << " <briefdescription>" << endl; writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->briefDescription()); t << " </briefdescription>" << endl; @@ -1283,15 +1379,21 @@ void generateXMLForFile(FileDef *fd,QTextStream &t) t << " <programlisting>" << endl; writeXMLCodeBlock(t,fd); t << " </programlisting>" << endl; - t << " <location file=\"" - << fd->getDefFileName() << "\" line=\"" - << fd->getDefLine() << "\"/>" << endl; + t << " <location file=\"" << fd->getDefFileName() << "\"/>" << endl; t << " </compounddef>" << endl; } void generateXML() { + + // + classes + // + namespaces + // + files + // - packages + // - groups + // - related pages + QCString outputDirectory = Config_getString("OUTPUT_DIRECTORY"); if (outputDirectory.isEmpty()) { @@ -1356,6 +1458,12 @@ void generateXML() { generateXMLForClass(cd,t); } + NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); + NamespaceDef *nd; + for (nli.toFirst();(nd=nli.current());++nli) + { + generateXMLForNamespace(nd,t); + } FileNameListIterator fnli(Doxygen::inputNameList); FileName *fn; for (;(fn=fnli.current());++fnli) |