Commit cce8b950 authored by dimitri's avatar dimitri

Release-1.2.12-20011125

parent c736b03f
DOXYGEN Version 1.2.12 DOXYGEN Version 1.2.12-20011125
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (18 November 2001) Dimitri van Heesch (25 November 2001)
DOXYGEN Version 1.2.12 DOXYGEN Version 1.2.12_20011125
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (18 November 2001) Dimitri van Heesch (dimitri@stack.nl) (25 November 2001)
1.2.12 1.2.12-20011125
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include <qlist.h> #include <qlist.h>
#include <qstring.h> #include <qstring.h>
class IMember;
class IParam class IParam
{ {
public: public:
...@@ -15,6 +17,14 @@ class IParam ...@@ -15,6 +17,14 @@ class IParam
virtual QString defaultValue() const = 0; 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 class IMember
{ {
public: public:
......
...@@ -67,6 +67,20 @@ void MainHandler::initialize() ...@@ -67,6 +67,20 @@ void MainHandler::initialize()
m_compoundNameDict.insert(compHandler->name(),compHandler); m_compoundNameDict.insert(compHandler->name(),compHandler);
m_compoundDict.insert(compHandler->id(),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 class ErrorHandler : public QXmlErrorHandler
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "memberhandler.h" #include "memberhandler.h"
#include "sectionhandler.h" #include "sectionhandler.h"
#include "dochandler.h" #include "dochandler.h"
#include "mainhandler.h"
MemberHandler::MemberHandler(IBaseHandler *parent) MemberHandler::MemberHandler(IBaseHandler *parent)
: m_parent(parent), m_brief(0), m_detailed(0) : m_parent(parent), m_brief(0), m_detailed(0)
...@@ -90,6 +91,7 @@ void MemberHandler::startReferences(const QXmlAttributes& attrib) ...@@ -90,6 +91,7 @@ void MemberHandler::startReferences(const QXmlAttributes& attrib)
{ {
MemberReference *mr = new MemberReference; MemberReference *mr = new MemberReference;
mr->m_memId = attrib.value("id"); mr->m_memId = attrib.value("id");
mr->m_line = attrib.value("line").toInt();
m_references.append(mr); m_references.append(mr);
m_curString=""; m_curString="";
} }
...@@ -103,6 +105,7 @@ void MemberHandler::startReferencedBy(const QXmlAttributes& attrib) ...@@ -103,6 +105,7 @@ void MemberHandler::startReferencedBy(const QXmlAttributes& attrib)
{ {
MemberReference *mr = new MemberReference; MemberReference *mr = new MemberReference;
mr->m_memId = attrib.value("id"); mr->m_memId = attrib.value("id");
mr->m_line = attrib.value("line").toInt();
m_referencedBy.append(mr); m_referencedBy.append(mr);
m_curString=""; m_curString="";
} }
...@@ -136,4 +139,22 @@ void MemberHandler::startParam(const QXmlAttributes& attrib) ...@@ -136,4 +139,22 @@ void MemberHandler::startParam(const QXmlAttributes& attrib)
m_params.append(paramHandler); 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);
}
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "doxmlintf.h" #include "doxmlintf.h"
class DocHandler; class DocHandler;
class MainHandler;
class MemberHandler : public IMember, public BaseHandler<MemberHandler> class MemberHandler : public IMember, public BaseHandler<MemberHandler>
{ {
...@@ -54,12 +55,21 @@ 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 QString name() const { return m_name; }
virtual QListIterator<IParam> getParamIterator() const { return m_params; } virtual QListIterator<IParam> getParamIterator() const { return m_params; }
void initialize(MainHandler *m);
private: private:
struct MemberReference struct MemberReference : public IMemberReference
{ {
QString m_memId; virtual ~MemberReference() {}
QString m_name; virtual IMember *getMember() const;
int line; 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; IBaseHandler *m_parent;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
% xml entities like &auml; are used for special characters % xml entities like &auml; are used for special characters
Brazilian Brazilian
Fabio "FJTC" Jun Takada Chino: chino@grad.icmc.sc.usp.br Fabio "FJTC" Jun Takada Chino: chino@icmc.sc.usp.br
Chinese Chinese
Wei Liu: liuwei@asiainfo.com Wei Liu: liuwei@asiainfo.com
......
Name: doxygen Name: doxygen
Version: 1.2.12 Version: 1.2.12_20011125
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 4 Release: 4
Source: doxygen-%{version}.src.tar.gz Source: doxygen-%{version}.src.tar.gz
......
...@@ -84,9 +84,8 @@ ClassDef::ClassDef( ...@@ -84,9 +84,8 @@ ClassDef::ClassDef(
m_fileDef=0; m_fileDef=0;
m_usesImplClassDict=0; m_usesImplClassDict=0;
m_usesIntfClassDict=0; m_usesIntfClassDict=0;
m_memberGroupList = new MemberGroupList; memberGroupSDict = new MemberGroupSDict;
m_memberGroupList->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
m_memberGroupDict = new MemberGroupDict(17);
m_innerClasses = new ClassSDict(17); m_innerClasses = new ClassSDict(17);
//int i=name().findRev("::"); // TODO: broken if A<N::C> is the class name //int i=name().findRev("::"); // TODO: broken if A<N::C> is the class name
//if (i==-1) //if (i==-1)
...@@ -117,8 +116,7 @@ ClassDef::~ClassDef() ...@@ -117,8 +116,7 @@ ClassDef::~ClassDef()
delete m_usesImplClassDict; delete m_usesImplClassDict;
delete m_usesIntfClassDict; delete m_usesIntfClassDict;
delete m_incInfo; delete m_incInfo;
delete m_memberGroupList; delete memberGroupSDict;
delete m_memberGroupDict;
delete m_innerClasses; delete m_innerClasses;
delete m_templateInstances; delete m_templateInstances;
delete m_templBaseClassNames; delete m_templBaseClassNames;
...@@ -157,29 +155,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p, ...@@ -157,29 +155,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p,
void ClassDef::addMembersToMemberGroup() void ClassDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&pubTypes,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubTypes,memberGroupSDict);
::addMembersToMemberGroup(&pubMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubMembers,memberGroupSDict);
::addMembersToMemberGroup(&pubAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubAttribs,memberGroupSDict);
::addMembersToMemberGroup(&pubSlots,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubSlots,memberGroupSDict);
::addMembersToMemberGroup(&signals,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&signals,memberGroupSDict);
::addMembersToMemberGroup(&dcopMethods,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&dcopMethods,memberGroupSDict);
::addMembersToMemberGroup(&pubStaticMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict);
::addMembersToMemberGroup(&pubStaticAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict);
::addMembersToMemberGroup(&proTypes,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proTypes,memberGroupSDict);
::addMembersToMemberGroup(&proMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proMembers,memberGroupSDict);
::addMembersToMemberGroup(&proAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proAttribs,memberGroupSDict);
::addMembersToMemberGroup(&proSlots,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proSlots,memberGroupSDict);
::addMembersToMemberGroup(&proStaticMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict);
::addMembersToMemberGroup(&proStaticAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict);
::addMembersToMemberGroup(&priTypes,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priTypes,memberGroupSDict);
::addMembersToMemberGroup(&priMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priMembers,memberGroupSDict);
::addMembersToMemberGroup(&priAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priAttribs,memberGroupSDict);
::addMembersToMemberGroup(&priSlots,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priSlots,memberGroupSDict);
::addMembersToMemberGroup(&priStaticMembers,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict);
::addMembersToMemberGroup(&priStaticAttribs,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict);
::addMembersToMemberGroup(&friends,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&friends,memberGroupSDict);
::addMembersToMemberGroup(&related,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&related,memberGroupSDict);
::addMembersToMemberGroup(&properties,m_memberGroupDict,m_memberGroupList); ::addMembersToMemberGroup(&properties,memberGroupSDict);
} }
// adds new member definition to the class // adds new member definition to the class
...@@ -527,7 +525,7 @@ void ClassDef::computeAnchors() ...@@ -527,7 +525,7 @@ void ClassDef::computeAnchors()
void ClassDef::distributeMemberGroupDocumentation() void ClassDef::distributeMemberGroupDocumentation()
{ {
MemberGroupListIterator mgli(*m_memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -737,8 +735,17 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -737,8 +735,17 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (!nm.isEmpty()) if (!nm.isEmpty())
{ {
ol.startTypewriter(); ol.startTypewriter();
ol.docify("#include "); bool isIDLorJava = nm.right(4)==".idl" ||
if (m_incInfo->local) nm.right(5)==".java";
if (isIDLorJava)
{
ol.docify("import ");
}
else
{
ol.docify("#include ");
}
if (m_incInfo->local || isIDLorJava)
ol.docify("\""); ol.docify("\"");
else else
ol.docify("<"); ol.docify("<");
...@@ -756,10 +763,12 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -756,10 +763,12 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.docify(nm); ol.docify(nm);
} }
ol.popGeneratorState(); ol.popGeneratorState();
if (m_incInfo->local) if (m_incInfo->local || isIDLorJava)
ol.docify("\""); ol.docify("\"");
else else
ol.docify(">"); ol.docify(">");
if (isIDLorJava)
ol.docify(";");
ol.endTypewriter(); ol.endTypewriter();
ol.newParagraph(); ol.newParagraph();
} }
...@@ -973,7 +982,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -973,7 +982,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.startMemberSections(); ol.startMemberSections();
// write user defined member groups // write user defined member groups
MemberGroupListIterator mgli(*m_memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -1485,7 +1494,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup) ...@@ -1485,7 +1494,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
// write user defined member groups // write user defined member groups
MemberGroupListIterator mgli(*m_memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -2361,7 +2370,7 @@ void ClassDef::addListReferences() ...@@ -2361,7 +2370,7 @@ void ClassDef::addListReferences()
theTranslator->trClass(TRUE,TRUE), theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),name() getOutputFileBase(),name()
); );
MemberGroupListIterator mgli(*m_memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
......
...@@ -39,8 +39,7 @@ class MemberDef; ...@@ -39,8 +39,7 @@ class MemberDef;
class ExampleSDict; class ExampleSDict;
class MemberNameInfoSDict; class MemberNameInfoSDict;
class UsesClassDict; class UsesClassDict;
class MemberGroupList; class MemberGroupSDict;
class MemberGroupDict;
class QTextStream; class QTextStream;
class PackageDef; class PackageDef;
class GroupDef; class GroupDef;
...@@ -235,6 +234,9 @@ class ClassDef : public Definition ...@@ -235,6 +234,9 @@ class ClassDef : public Definition
MemberList variableMembers; MemberList variableMembers;
MemberList propertyMembers; MemberList propertyMembers;
/* user defined member groups */
MemberGroupSDict *memberGroupSDict;
/*! \} Public API */ /*! \} Public API */
/*! \name Doxygen internal API /*! \name Doxygen internal API
...@@ -377,9 +379,6 @@ class ClassDef : public Definition ...@@ -377,9 +379,6 @@ class ClassDef : public Definition
*/ */
ClassSDict *m_innerClasses; ClassSDict *m_innerClasses;
/* user defined member groups */
MemberGroupList *m_memberGroupList;
MemberGroupDict *m_memberGroupDict;
/* classes for the collaboration diagram */ /* classes for the collaboration diagram */
UsesClassDict *m_usesImplClassDict; UsesClassDict *m_usesImplClassDict;
......
...@@ -1967,9 +1967,9 @@ void parseCode(OutputDocInterface &od,const char *className,const QCString &s, ...@@ -1967,9 +1967,9 @@ void parseCode(OutputDocInterface &od,const char *className,const QCString &s,
codeYYrestart( codeYYin ); codeYYrestart( codeYYin );
BEGIN( Body ); BEGIN( Body );
codeYYlex(); codeYYlex();
endFontClass();
if (g_inputLines==1) if (g_inputLines==1)
{ {
endFontClass();
g_code->endCodeLine(); g_code->endCodeLine();
} }
od.append(g_code); od.append(g_code);
......
...@@ -85,7 +85,9 @@ static int yyread(char *buf,int max_size) ...@@ -85,7 +85,9 @@ static int yyread(char *buf,int max_size)
[1-9][0-9]*[uUlL]* { g_strToken=yytext; [1-9][0-9]*[uUlL]* { g_strToken=yytext;
return TOK_DECIMALINT; 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])? { (([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+))([eE]([\-\+])?[0-9]+)?([fFlL])? {
g_strToken=yytext; return TOK_FLOAT; g_strToken=yytext; return TOK_FLOAT;
} }
...@@ -106,7 +108,7 @@ bool parseCppExpression(const char *fileName,int lineNr,const QCString &s) ...@@ -106,7 +108,7 @@ bool parseCppExpression(const char *fileName,int lineNr,const QCString &s)
g_inputPosition = 0; g_inputPosition = 0;
cppExpYYrestart( cppExpYYin ); cppExpYYrestart( cppExpYYin );
cppExpYYparse(); cppExpYYparse();
//printf("Result: %ld\n",(long)resultValue); //printf("Result: %ld\n",(long)g_resultValue);
return (long)g_resultValue!=0; return (long)g_resultValue!=0;
} }
......
...@@ -50,6 +50,7 @@ CPPValue parseHexadecimal() ...@@ -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;
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); return CPPValue(val);
} }
......
...@@ -377,13 +377,17 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -377,13 +377,17 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
{ {
name.prepend(scope+"::"); name.prepend(scope+"::");
} }
Definition *d = md->getOuterScope();
if (d==Doxygen::globalScope) d=md->getBodyDef();
if (md->getStartBodyLine()!=-1 && 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 // for HTML write a real link
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
QCString lineStr,anchorStr; QCString lineStr,anchorStr;
anchorStr.sprintf("l%05d",md->getStartBodyLine()); 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.writeObjectLink(0,md->getBodyDef()->getSourceFileBase(),anchorStr,name);
ol.popGeneratorState(); ol.popGeneratorState();
...@@ -393,9 +397,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -393,9 +397,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
ol.docify(name); ol.docify(name);
ol.popGeneratorState(); 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 // for HTML write a real link
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
......
...@@ -913,7 +913,7 @@ TT [tT][tT] ...@@ -913,7 +913,7 @@ TT [tT][tT]
UL [uU][lL] UL [uU][lL]
VAR [vV][aA][rR] VAR [vV][aA][rR]
BLOCKQUOTE [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE] 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}*"[]")? OPNEW {B}+"new"({B}*"[]")?
OPDEL {B}+"delete"({B}*"[]")? OPDEL {B}+"delete"({B}*"[]")?
OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")" OPARG "("[a-z_A-Z0-9,\<\> \t\*\&]*")"
......
...@@ -1520,6 +1520,16 @@ bool DotInclDepGraph::isTrivial() const ...@@ -1520,6 +1520,16 @@ bool DotInclDepGraph::isTrivial() const
return m_startNode->m_children==0; 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) void generateGraphLegend(const char *path)
......
...@@ -151,6 +151,7 @@ class DotInclDepGraph ...@@ -151,6 +151,7 @@ class DotInclDepGraph
bool writeImageMap=TRUE); bool writeImageMap=TRUE);
bool isTrivial() const; bool isTrivial() const;
QCString diskName() const; QCString diskName() const;
void writeXML(QTextStream &t);
private: private:
void buildGraph(DotNode *n,FileDef *fd,int distance); void buildGraph(DotNode *n,FileDef *fd,int distance);
......
...@@ -7102,6 +7102,7 @@ void generateOutput() ...@@ -7102,6 +7102,7 @@ void generateOutput()
exit(1); exit(1);
} }
Doxygen::tagFile.setDevice(tag); Doxygen::tagFile.setDevice(tag);
Doxygen::tagFile << "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>" << endl;
Doxygen::tagFile << "<tagfile>" << endl; Doxygen::tagFile << "<tagfile>" << endl;
} }
......
...@@ -17,6 +17,11 @@ ...@@ -17,6 +17,11 @@
// includes // includes
#ifdef _WIN32
#include <windows.h> // for AllocConsole
#endif
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
...@@ -805,7 +810,11 @@ void getConfig(const char *s) ...@@ -805,7 +810,11 @@ void getConfig(const char *s)
int l; int l;
char configFile[MAXSTRLEN]; char configFile[MAXSTRLEN];
strcpy(configFile,s); strcpy(configFile,s);
#if defined(_WIN32)
strcat(configFile,"\\search.cfg");
#else
strcat(configFile,"/search.cfg"); strcat(configFile,"/search.cfg");
#endif
FILE *f; FILE *f;
if ((f=fopen(configFile,"r"))==NULL) if ((f=fopen(configFile,"r"))==NULL)
...@@ -860,6 +869,10 @@ void strlowercpy(char *d,const char *s) ...@@ -860,6 +869,10 @@ void strlowercpy(char *d,const char *s)
int main(int argc,char **argv) int main(int argc,char **argv)
{ {
#ifdef _WIN32
AllocConsole();
#endif
#ifdef PROFILING #ifdef PROFILING
struct timeval tv_start,tv_end; struct timeval tv_start,tv_end;
gettimeofday(&tv_start,0); gettimeofday(&tv_start,0);
......
...@@ -64,9 +64,8 @@ FileDef::FileDef(const char *p,const char *nm,const char *lref) ...@@ -64,9 +64,8 @@ FileDef::FileDef(const char *p,const char *nm,const char *lref)
{ {
docname.prepend(stripFromPath(path.copy())); docname.prepend(stripFromPath(path.copy()));
} }
memberGroupList = new MemberGroupList; memberGroupSDict = new MemberGroupSDict;
memberGroupList->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
memberGroupDict = new MemberGroupDict(1009);
} }
/*! destroy the file definition */ /*! destroy the file definition */
...@@ -81,8 +80,7 @@ FileDef::~FileDef() ...@@ -81,8 +80,7 @@ FileDef::~FileDef()
delete srcMemberDict; delete srcMemberDict;
delete usingDirList; delete usingDirList;
delete usingDeclList; delete usingDeclList;
delete memberGroupList; delete memberGroupSDict;
delete memberGroupDict;
} }
/*! Compute the HTML anchor names for all members in the class */ /*! Compute the HTML anchor names for all members in the class */
...@@ -93,7 +91,7 @@ void FileDef::computeAnchors() ...@@ -93,7 +91,7 @@ void FileDef::computeAnchors()
void FileDef::distributeMemberGroupDocumentation() void FileDef::distributeMemberGroupDocumentation()
{ {
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -161,9 +159,22 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -161,9 +159,22 @@ void FileDef::writeDocumentation(OutputList &ol)
for (;(ii=ili.current());++ili) for (;(ii=ili.current());++ili)
{ {
FileDef *fd=ii->fileDef; FileDef *fd=ii->fileDef;
bool isIDLorJava = FALSE;
if (fd)
{
isIDLorJava = fd->name().right(4)==".idl" ||
fd->name().right(5)==".java";
}
ol.startTypewriter(); ol.startTypewriter();
ol.docify("#include "); if (isIDLorJava)
if (ii->local) {
ol.docify("import ");
}
else
{
ol.docify("#include ");
}
if (ii->local || isIDLorJava)
ol.docify("\""); ol.docify("\"");
else else
ol.docify("<"); ol.docify("<");
...@@ -185,10 +196,12 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -185,10 +196,12 @@ void FileDef::writeDocumentation(OutputList &ol)
} }
ol.enableAll(); ol.enableAll();
if (ii->local) if (ii->local || isIDLorJava)
ol.docify("\""); ol.docify("\"");
else else
ol.docify(">"); ol.docify(">");
if (isIDLorJava)
ol.docify(";");
ol.endTypewriter(); ol.endTypewriter();
ol.disable(OutputGenerator::RTF); ol.disable(OutputGenerator::RTF);
ol.lineBreak(); ol.lineBreak();
...@@ -301,7 +314,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -301,7 +314,7 @@ void FileDef::writeDocumentation(OutputList &ol)
classSDict->writeDeclaration(ol); classSDict->writeDeclaration(ol);
/* write user defined member groups */ /* write user defined member groups */
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -425,13 +438,10 @@ void FileDef::writeSource(OutputList &ol) ...@@ -425,13 +438,10 @@ void FileDef::writeSource(OutputList &ol)
initParseCodeContext(); initParseCodeContext();
ol.startCodeFragment(); ol.startCodeFragment();
//if (name().left(9)=="memory.c")
//{
parseCode(ol,0, parseCode(ol,0,
fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")), fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")),
FALSE,0,this FALSE,0,this
); );
//}
ol.endCodeFragment(); ol.endCodeFragment();
endFile(ol); endFile(ol);
ol.enableAll(); ol.enableAll();
...@@ -440,12 +450,12 @@ void FileDef::writeSource(OutputList &ol) ...@@ -440,12 +450,12 @@ void FileDef::writeSource(OutputList &ol)
void FileDef::addMembersToMemberGroup() void FileDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict);
::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict);
::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict);
::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict);
::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict);
::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict);
} }
/*! Adds member definition \a md to the list of all members of this file */ /*! Adds member definition \a md to the list of all members of this file */
...@@ -631,7 +641,7 @@ void FileDef::addListReferences() ...@@ -631,7 +641,7 @@ void FileDef::addListReferences()
theTranslator->trFile(TRUE,TRUE), theTranslator->trFile(TRUE,TRUE),
getOutputFileBase(),name() getOutputFileBase(),name()
); );
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
......
...@@ -37,8 +37,7 @@ class OutputList; ...@@ -37,8 +37,7 @@ class OutputList;
class NamespaceDef; class NamespaceDef;
class NamespaceList; class NamespaceList;
class NamespaceDict; class NamespaceDict;
class MemberGroupList; class MemberGroupSDict;
class MemberGroupDict;
class PackageDef; class PackageDef;
struct IncludeInfo struct IncludeInfo
...@@ -169,6 +168,9 @@ class FileDef : public Definition ...@@ -169,6 +168,9 @@ class FileDef : public Definition
MemberList docFuncMembers; MemberList docFuncMembers;
MemberList docVarMembers; MemberList docVarMembers;
/* user defined member groups */
MemberGroupSDict *memberGroupSDict;
private: private:
ClassSDict *classSDict; ClassSDict *classSDict;
...@@ -191,9 +193,6 @@ class FileDef : public Definition ...@@ -191,9 +193,6 @@ class FileDef : public Definition
QIntDict<MemberDef> *srcMemberDict; QIntDict<MemberDef> *srcMemberDict;
bool isSource; bool isSource;
/* user defined member groups */
MemberGroupList *memberGroupList;
MemberGroupDict *memberGroupDict;
PackageDef *package; PackageDef *package;
}; };
......
...@@ -46,9 +46,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) : ...@@ -46,9 +46,8 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
allMemberNameInfoSDict = new MemberNameInfoSDict(17); allMemberNameInfoSDict = new MemberNameInfoSDict(17);
fileName = (QCString)"group_"+na; fileName = (QCString)"group_"+na;
setGroupTitle( t ); setGroupTitle( t );
memberGroupList = new MemberGroupList; memberGroupSDict = new MemberGroupSDict;
memberGroupList->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
memberGroupDict = new MemberGroupDict(1009);
decDefineMembers.setInGroup(TRUE); decDefineMembers.setInGroup(TRUE);
decProtoMembers.setInGroup(TRUE); decProtoMembers.setInGroup(TRUE);
...@@ -79,8 +78,7 @@ GroupDef::~GroupDef() ...@@ -79,8 +78,7 @@ GroupDef::~GroupDef()
delete exampleDict; delete exampleDict;
delete allMemberList; delete allMemberList;
delete allMemberNameInfoSDict; delete allMemberNameInfoSDict;
delete memberGroupList; delete memberGroupSDict;
delete memberGroupDict;
} }
void GroupDef::setGroupTitle( const char *t ) void GroupDef::setGroupTitle( const char *t )
...@@ -101,7 +99,7 @@ void GroupDef::setGroupTitle( const char *t ) ...@@ -101,7 +99,7 @@ void GroupDef::setGroupTitle( const char *t )
void GroupDef::distributeMemberGroupDocumentation() void GroupDef::distributeMemberGroupDocumentation()
{ {
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -147,16 +145,16 @@ void GroupDef::addExample(const PageInfo *def) ...@@ -147,16 +145,16 @@ void GroupDef::addExample(const PageInfo *def)
void GroupDef::addMembersToMemberGroup() void GroupDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict);
::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict);
::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict);
::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict);
::addMembersToMemberGroup(&decEnumValMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decEnumValMembers,memberGroupSDict);
::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict);
::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict);
//printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count()); //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -476,7 +474,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -476,7 +474,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (allMemberList->count()>0) if (allMemberList->count()>0)
{ {
/* write user defined member groups */ /* write user defined member groups */
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -740,7 +738,7 @@ void GroupDef::addListReferences() ...@@ -740,7 +738,7 @@ void GroupDef::addListReferences()
theTranslator->trGroup(TRUE,TRUE), theTranslator->trGroup(TRUE,TRUE),
getOutputFileBase(),name() getOutputFileBase(),name()
); );
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
......
...@@ -33,8 +33,7 @@ class NamespaceDef; ...@@ -33,8 +33,7 @@ class NamespaceDef;
class GroupList; class GroupList;
class OutputList; class OutputList;
class NamespaceList; class NamespaceList;
class MemberGroupList; class MemberGroupSDict;
class MemberGroupDict;
class MemberNameInfoSDict; class MemberNameInfoSDict;
class PageSDict; class PageSDict;
class PageInfo; class PageInfo;
...@@ -82,6 +81,26 @@ class GroupDef : public Definition ...@@ -82,6 +81,26 @@ class GroupDef : public Definition
friend void writeGroupTreeNode(OutputList&, GroupDef*,bool); friend void writeGroupTreeNode(OutputList&, GroupDef*,bool);
// make accessible for writing tree view of group in index.cpp - KPW // 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: protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const); void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
...@@ -100,26 +119,7 @@ class GroupDef : public Definition ...@@ -100,26 +119,7 @@ class GroupDef : public Definition
MemberList *allMemberList; MemberList *allMemberList;
MemberNameInfoSDict *allMemberNameInfoSDict; 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> class GroupSDict : public SDict<GroupDef>
......
...@@ -427,14 +427,14 @@ QCString MemberDef::getOutputFileBase() const ...@@ -427,14 +427,14 @@ QCString MemberDef::getOutputFileBase() const
{ {
return classDef->getOutputFileBase(); return classDef->getOutputFileBase();
} }
else if (fileDef)
{
return fileDef->getOutputFileBase();
}
else if (nspace) else if (nspace)
{ {
return nspace->getOutputFileBase(); return nspace->getOutputFileBase();
} }
else if (fileDef)
{
return fileDef->getOutputFileBase();
}
warn(m_defFileName,m_defLine, warn(m_defFileName,m_defLine,
"Warning: Internal inconsistency: member %s does not belong to any" "Warning: Internal inconsistency: member %s does not belong to any"
" container!",name().data() " container!",name().data()
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qlist.h> #include <qlist.h>
#include <qintdict.h> #include "sortdict.h"
#define NOGROUP -1 #define NOGROUP -1
...@@ -33,7 +33,7 @@ class GroupDef; ...@@ -33,7 +33,7 @@ class GroupDef;
class OutputList; class OutputList;
class Definition; class Definition;
class MemberGroup /* : public Definition */ class MemberGroup
{ {
public: public:
MemberGroup(int id,const char *header,const char *docs); MemberGroup(int id,const char *header,const char *docs);
...@@ -66,6 +66,7 @@ class MemberGroup /* : public Definition */ ...@@ -66,6 +66,7 @@ class MemberGroup /* : public Definition */
int numDocMembers() const; int numDocMembers() const;
void setInGroup(bool b); void setInGroup(bool b);
void addListReferences(Definition *d); void addListReferences(Definition *d);
MemberList *members() const { return memberList; }
private: private:
MemberList *memberList; // list of all members in the group MemberList *memberList; // list of all members in the group
...@@ -97,6 +98,13 @@ class MemberGroupDict : public QIntDict<MemberGroup> ...@@ -97,6 +98,13 @@ class MemberGroupDict : public QIntDict<MemberGroup>
~MemberGroupDict() {} ~MemberGroupDict() {}
}; };
class MemberGroupSDict : public SIntDict<MemberGroup>
{
public:
MemberGroupSDict(int size=17) : SIntDict<MemberGroup>(size) {}
~MemberGroupSDict() {}
};
class MemberGroupDictIterator : public QIntDictIterator<MemberGroup> class MemberGroupDictIterator : public QIntDictIterator<MemberGroup>
{ {
public: public:
......
...@@ -38,9 +38,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl, ...@@ -38,9 +38,8 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
usingDirList = 0; usingDirList = 0;
usingDeclList = 0; usingDeclList = 0;
setReference(lref); setReference(lref);
memberGroupList = new MemberGroupList; memberGroupSDict = new MemberGroupSDict;
memberGroupList->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
memberGroupDict = new MemberGroupDict(1009);
} }
NamespaceDef::~NamespaceDef() NamespaceDef::~NamespaceDef()
...@@ -50,13 +49,12 @@ NamespaceDef::~NamespaceDef() ...@@ -50,13 +49,12 @@ NamespaceDef::~NamespaceDef()
delete m_innerCompounds; delete m_innerCompounds;
delete usingDirList; delete usingDirList;
delete usingDeclList; delete usingDeclList;
delete memberGroupList; delete memberGroupSDict;
delete memberGroupDict;
} }
void NamespaceDef::distributeMemberGroupDocumentation() void NamespaceDef::distributeMemberGroupDocumentation()
{ {
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -96,44 +94,15 @@ void NamespaceDef::insertNamespace(NamespaceDef *nd) ...@@ -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() void NamespaceDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decDefineMembers,memberGroupSDict);
::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decProtoMembers,memberGroupSDict);
::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decTypedefMembers,memberGroupSDict);
::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decEnumMembers,memberGroupSDict);
::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decFuncMembers,memberGroupSDict);
::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList); ::addMembersToMemberGroup(&decVarMembers,memberGroupSDict);
} }
void NamespaceDef::insertMember(MemberDef *md) void NamespaceDef::insertMember(MemberDef *md)
...@@ -199,12 +168,6 @@ void NamespaceDef::insertMember(MemberDef *md) ...@@ -199,12 +168,6 @@ void NamespaceDef::insertMember(MemberDef *md)
void NamespaceDef::computeAnchors() void NamespaceDef::computeAnchors()
{ {
setAnchors('a',&allMemberList); setAnchors('a',&allMemberList);
//MemberGroupListIterator mgli(*memberGroupList);
//MemberGroup *mg;
//for (;(mg=mgli.current());++mgli)
//{
// mg->setAnchors();
//}
} }
void NamespaceDef::writeDocumentation(OutputList &ol) void NamespaceDef::writeDocumentation(OutputList &ol)
...@@ -249,7 +212,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -249,7 +212,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
classSDict->writeDeclaration(ol); classSDict->writeDeclaration(ol);
/* write user defined member groups */ /* write user defined member groups */
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
...@@ -380,7 +343,7 @@ void NamespaceDef::addListReferences() ...@@ -380,7 +343,7 @@ void NamespaceDef::addListReferences()
theTranslator->trNamespace(TRUE,TRUE), theTranslator->trNamespace(TRUE,TRUE),
getOutputFileBase(),name() getOutputFileBase(),name()
); );
MemberGroupListIterator mgli(*memberGroupList); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
......
...@@ -31,8 +31,7 @@ class OutputList; ...@@ -31,8 +31,7 @@ class OutputList;
class ClassSDict; class ClassSDict;
class MemberDef; class MemberDef;
class NamespaceList; class NamespaceList;
class MemberGroupDict; class MemberGroupSDict;
class MemberGroupList;
class NamespaceSDict; class NamespaceSDict;
class NamespaceDef : public Definition class NamespaceDef : public Definition
...@@ -97,6 +96,9 @@ class NamespaceDef : public Definition ...@@ -97,6 +96,9 @@ class NamespaceDef : public Definition
MemberList docFuncMembers; MemberList docFuncMembers;
MemberList docVarMembers; MemberList docVarMembers;
/* user defined member groups */
MemberGroupSDict *memberGroupSDict;
/*! Classes inside this namespace */ /*! Classes inside this namespace */
ClassSDict *classSDict; ClassSDict *classSDict;
/*! Namespaces inside this namespace */ /*! Namespaces inside this namespace */
...@@ -114,9 +116,6 @@ class NamespaceDef : public Definition ...@@ -114,9 +116,6 @@ class NamespaceDef : public Definition
MemberList allMemberList; MemberList allMemberList;
/* user defined member groups */
MemberGroupList *memberGroupList;
MemberGroupDict *memberGroupDict;
}; };
class NamespaceList : public QList<NamespaceDef> class NamespaceList : public QList<NamespaceDef>
......
...@@ -267,6 +267,7 @@ FORALL1(SectionTypes a1,a1) ...@@ -267,6 +267,7 @@ FORALL1(SectionTypes a1,a1)
FORALL1(bool a1,a1) FORALL1(bool a1,a1)
FORALL2(bool a1,int a2,a1,a2) FORALL2(bool a1,int a2,a1,a2)
FORALL2(bool a1,bool 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 #endif
FORALL2(int a1,bool a2,a1,a2) FORALL2(int a1,bool a2,a1,a2)
FORALL1(IndexSections a1,a1) FORALL1(IndexSections a1,a1)
...@@ -277,7 +278,6 @@ FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) ...@@ -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(const char *a1,const char *a2,bool a3,a1,a2,a3)
FORALL3(uchar a1,uchar a2,uchar 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,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) FORALL4(const char *a1,const char *a2,const char *a3,int a4,a1,a2,a3,a4)
......
...@@ -478,6 +478,7 @@ class OutputList : public OutputDocInterface ...@@ -478,6 +478,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO1(bool); FORALLPROTO1(bool);
FORALLPROTO2(bool,int); FORALLPROTO2(bool,int);
FORALLPROTO2(bool,bool); FORALLPROTO2(bool,bool);
FORALLPROTO4(const char *,const char *,const char *,int);
#endif #endif
FORALLPROTO2(int,bool); FORALLPROTO2(int,bool);
FORALLPROTO2(const char *,const char *); FORALLPROTO2(const char *,const char *);
...@@ -488,7 +489,6 @@ class OutputList : public OutputDocInterface ...@@ -488,7 +489,6 @@ class OutputList : public OutputDocInterface
FORALLPROTO3(ClassDiagram &,const char *,const char *); FORALLPROTO3(ClassDiagram &,const char *,const char *);
FORALLPROTO4(const char *,const char *,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 *,bool);
FORALLPROTO4(const char *,const char *,const char *,int);
OutputList(const OutputList &ol); OutputList(const OutputList &ol);
QList<OutputGenerator> *outputs; QList<OutputGenerator> *outputs;
......
...@@ -721,7 +721,7 @@ QCString removeIdsAndMarkers(const char *s) ...@@ -721,7 +721,7 @@ QCString removeIdsAndMarkers(const char *s)
p++; p++;
inNum=TRUE; 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) if (strncmp(p,"defined ",8)==0 || strncmp(p,"defined(",8)==0)
// defined keyword // defined keyword
...@@ -745,7 +745,7 @@ QCString removeIdsAndMarkers(const char *s) ...@@ -745,7 +745,7 @@ QCString removeIdsAndMarkers(const char *s)
{ {
result+=c; result+=c;
char lc=tolower(c); char lc=tolower(c);
if (lc!='l' && lc!='u') inNum=FALSE; if (!isId(lc) && lc!='.' && lc!='-' && lc!='+') inNum=FALSE;
p++; p++;
} }
} }
......
...@@ -177,7 +177,6 @@ static void initParser() ...@@ -177,7 +177,6 @@ static void initParser()
isTypedef = FALSE; isTypedef = FALSE;
autoGroupStack.clear(); autoGroupStack.clear();
insideTryBlock = FALSE; insideTryBlock = FALSE;
insideIDL = FALSE;
autoGroupStack.setAutoDelete(TRUE); autoGroupStack.setAutoDelete(TRUE);
lastDefGroup.groupname.resize(0); lastDefGroup.groupname.resize(0);
} }
...@@ -379,6 +378,7 @@ static void setContext() ...@@ -379,6 +378,7 @@ static void setContext()
QCString fileName = yyFileName; QCString fileName = yyFileName;
insideIDL = fileName.right(4)==".idl"; insideIDL = fileName.right(4)==".idl";
insideJava = fileName.right(5)==".java"; insideJava = fileName.right(5)==".java";
//printf("setContext(%s) insideIDL=%d\n",yyFileName,insideIDL);
} }
static void prependScope() static void prependScope()
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qlist.h> #include <qlist.h>
#include <qdict.h> #include <qdict.h>
#include <qintdict.h>
#define AUTORESIZE 1 #define AUTORESIZE 1
...@@ -63,6 +64,7 @@ const uint SDict_primes[] = ...@@ -63,6 +64,7 @@ const uint SDict_primes[] =
#endif #endif
template<class T> class SDict; template<class T> class SDict;
template<class T> class SIntDict;
/*! internal wrapper class that redirects compareItems() to the /*! internal wrapper class that redirects compareItems() to the
* dictionary * dictionary
...@@ -270,4 +272,210 @@ class SDict ...@@ -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 #endif
...@@ -11,13 +11,17 @@ ...@@ -11,13 +11,17 @@
* input used in their production; they are not affected by this license. * input used in their production; they are not affected by this license.
* *
* Brazilian Portuguese version by * Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@grad.icmc.sc.usp.br> * Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br>
* Version: 1.2.8.2 (2001/07/24) * http://www.icmc.sc.usp.br/~chino
* Version: 1.2.11 (2001/11/23)
*
* News:
* - Everything was revised.
*/ */
#ifndef TRANSLATOR_BR_H #ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H #define TRANSLATOR_BR_H
class TranslatorBrazilian: public TranslatorAdapter_1_2_11 class TranslatorBrazilian: public Translator
{ {
public: public:
...@@ -61,7 +65,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -61,7 +65,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! subscript for the related functions. */ /*! subscript for the related functions. */
virtual QCString trRelatedSubscript() 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. */ /*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription() virtual QCString trDetailedDescription()
...@@ -102,15 +106,15 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -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 */ /*! used as the title of the "list of all members" page of a class */
virtual QCString trMemberList() 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 */ /*! this is the first part of a sentence that is followed by a class name */
virtual QCString trThisIsTheListOfAllMembers() 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 */ /*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers() 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. /*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name. * parameter s is name of the project name.
...@@ -118,7 +122,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -118,7 +122,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
virtual QCString trGeneratedAutomatically(const char *s) virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="Gerado automaticamente por Doxygen"; { QCString result="Gerado automaticamente por Doxygen";
if (s) result+=(QCString)" para "+s; if (s) result+=(QCString)" para "+s;
result+=" a partir do código-fonte."; result+=" a partir de seu código-fonte.";
return result; return result;
} }
...@@ -207,7 +211,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -207,7 +211,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! This is an introduction to the class hierarchy. */ /*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription() 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. */ /*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll) virtual QCString trFileListDescription(bool extractAll)
...@@ -235,7 +239,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -235,7 +239,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! This is an introduction to the page with all class members. */ /*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll) 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 "; if (!extractAll) result+="documentados ";
result+="com links para "; result+="com links para ";
if (extractAll) if (extractAll)
...@@ -248,7 +252,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -248,7 +252,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! This is an introduction to the page with all file members. */ /*! This is an introduction to the page with all file members. */
virtual QCString trFileMembersDescription(bool extractAll) 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")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
result+="tadas as funções, variáveis, definições, enumerações e definições de tipos "; 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 ...@@ -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. */ /*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription() 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 */ /*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription() 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 */ /*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription() 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 */ /*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription() 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 /*! This sentences is used in the annotated class/file lists if no brief
* description is given. * description is given.
*/ */
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
{ return "Sem descriçãodisponível"; } { return "Sem descrição disponível"; }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
...@@ -302,7 +306,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -302,7 +306,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
* index of all groups. * index of all groups.
*/ */
virtual QCString trModuleIndex() 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 /*! This is used in LaTeX as the title of the chapter with the
* class hierarchy. * class hierarchy.
...@@ -363,7 +367,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -363,7 +367,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! This is used in LaTeX as the title of the document */ /*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual() 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 /*! This is used in the documentation of a file as a header before the
* list of defines * list of defines
...@@ -417,13 +421,13 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -417,13 +421,13 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
* of documentation blocks for function prototypes * of documentation blocks for function prototypes
*/ */
virtual QCString trFunctionPrototypeDocumentation() 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 /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs * of documentation blocks for typedefs
*/ */
virtual QCString trTypedefDocumentation() 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 /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types * of documentation blocks for enumeration types
...@@ -552,7 +556,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -552,7 +556,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
* friends of a class * friends of a class
*/ */
virtual QCString trFriends() virtual QCString trFriends()
{ return "Amigos"; } { return "Amigas"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990405 // new since 0.49-990405
...@@ -562,7 +566,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -562,7 +566,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "Amigos e Funções Relacionadas"; } { return "Amigas e Funções Relacionadas"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
...@@ -777,7 +781,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -777,7 +781,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
virtual QCString trSources() virtual QCString trSources()
{ {
return "Fontes"; return "Códigos-Fonte";
} }
virtual QCString trDefinedAtLineInSourceFile() virtual QCString trDefinedAtLineInSourceFile()
{ {
...@@ -794,8 +798,9 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -794,8 +798,9 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
virtual QCString trDeprecated() 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"; return "Descontinuada";
} }
...@@ -935,7 +940,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -935,7 +940,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! Used as the header of the todo list */ /*! Used as the header of the todo list */
virtual QCString trTodoList() virtual QCString trTodoList()
{ {
return "Lista de tarefas futuras"; return "Lista de Tarefas Futuras";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1049,7 +1054,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -1049,7 +1054,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! Used as the header of the test list */ /*! Used as the header of the test list */
virtual QCString trTestList() virtual QCString trTestList()
{ {
return "Lista de Teste"; return "Lista de Testes";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1150,8 +1155,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11 ...@@ -1150,8 +1155,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_2_11
/*! Used as ansicpg for RTF file /*! Used as ansicpg for RTF file
* *
* The following table shows the correlation of Charset name, Charset Value * The following table shows the correlation of Charset name, Charset Value and
and
* <pre> * <pre>
* Codepage number: * Codepage number:
* Charset Name Charset Value(hex) Codepage number * Charset Name Charset Value(hex) Codepage number
...@@ -1298,5 +1302,16 @@ and ...@@ -1298,5 +1302,16 @@ and
if (!singular) result+="es"; if (!singular) result+="es";
return result; 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 #endif
...@@ -20,10 +20,24 @@ ...@@ -20,10 +20,24 @@
* d2set@d2set.org). * 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 #ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H #define TRANSLATOR_FR_H
class TranslatorFrench : public TranslatorAdapter_1_2_11 class TranslatorFrench : public Translator
{ {
public: public:
QCString idLanguage() QCString idLanguage()
...@@ -46,9 +60,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -46,9 +60,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
{ {
return "\\usepackage[french]{babel}\n"; 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 */ /*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset() virtual QCString idLanguageCharset()
...@@ -126,14 +137,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -126,14 +137,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
QCString trDefinedIn() QCString trDefinedIn()
{ return "défini dans"; } { 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 // quick reference sections
/*! This is put above each page as a link to the list of all groups of /*! This is put above each page as a link to the list of all groups of
...@@ -351,10 +354,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -351,10 +354,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
QCString trEnumerationValues() QCString trEnumerationValues()
{ return "Éléments énumérés"; } { 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 /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
...@@ -403,12 +402,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -403,12 +402,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
QCString trCompounds() QCString trCompounds()
{ return "Composants"; } { 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 /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
...@@ -458,10 +451,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -458,10 +451,6 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
QCString trDate() QCString trDate()
{ return "Date"; } { 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. */ /*! this text is generated when the \\return command is used. */
QCString trReturns() QCString trReturns()
{ return "Renvoie"; } { return "Renvoie"; }
...@@ -1233,5 +1222,15 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11 ...@@ -1233,5 +1222,15 @@ class TranslatorFrench : public TranslatorAdapter_1_2_11
return result; 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 #endif
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
* Initial Italian Translation by Ahmed Aldo Faisal * Initial Italian Translation by Ahmed Aldo Faisal
* Revised and completed by Alessandro Falappa (since June 1999) * Revised and completed by Alessandro Falappa (since June 1999)
* Updates: * 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 * 2001/08: corrected the translation fixing the issues reported by the translator.pl script
* translated new items used since version 1.2.7 * translated new items used since version 1.2.7
* 2001/05: adopted new translation mechanism (trough adapters), * 2001/05: adopted new translation mechanism (trough adapters),
...@@ -53,13 +55,13 @@ ...@@ -53,13 +55,13 @@
* tecnica (ad es "lista dei file" e non "lista dei files") * tecnica (ad es "lista dei file" e non "lista dei files")
* *
* Se avete suggerimenti sulla traduzione di alcuni termini o volete segnalare * 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 #ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H #define TRANSLATOR_IT_H
class TranslatorItalian : public TranslatorAdapter_1_2_11 class TranslatorItalian : public Translator
{ {
public: public:
...@@ -1308,6 +1310,17 @@ class TranslatorItalian : public TranslatorAdapter_1_2_11 ...@@ -1308,6 +1310,17 @@ class TranslatorItalian : public TranslatorAdapter_1_2_11
result+=(singular ? "e" : "i"); result+=(singular ? "e" : "i");
return result; 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 #endif
This diff is collapsed.
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H #ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H #define TRANSLATOR_NL_H
class TranslatorDutch : public TranslatorAdapter_1_2_11 class TranslatorDutch : public Translator
{ {
public: public:
QCString idLanguage() QCString idLanguage()
...@@ -964,6 +964,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_11 ...@@ -964,6 +964,17 @@ class TranslatorDutch : public TranslatorAdapter_1_2_11
return result; 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 #endif
...@@ -18,16 +18,18 @@ ...@@ -18,16 +18,18 @@
* *
* VERSION HISTORY * VERSION HISTORY
* --------------- * ---------------
* 002 19 november 2001
* ! Updated for doxygen v1.2.12
* 001 20 july 2001 * 001 20 july 2001
* - Updated for doxygen v1.2.8.1 * ! Updated for doxygen v1.2.8.1
* 000 ? * 000 ?
* - Initial translation for doxygen v1.1.5 * + Initial translation for doxygen v1.1.5
*/ */
#ifndef TRANSLATOR_PT_H #ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H #define TRANSLATOR_PT_H
class TranslatorPortuguese : public TranslatorAdapter_1_2_11 class TranslatorPortuguese : public Translator
{ {
public: public:
...@@ -1348,5 +1350,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_11 ...@@ -1348,5 +1350,17 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_11
return result; 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 #endif
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#define TRANSLATOR_SI_H #define TRANSLATOR_SI_H
class TranslatorSlovene : public TranslatorAdapter_1_2_11 class TranslatorSlovene : public Translator
{ {
public: public:
QCString idLanguage() QCString idLanguage()
...@@ -981,7 +981,16 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_11 ...@@ -981,7 +981,16 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_11
if (!singular) result+="ji"; if (!singular) result+="ji";
return result; 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 #endif
......
...@@ -1275,6 +1275,8 @@ void stripIrrelevantConstVolatile(QCString &s) ...@@ -1275,6 +1275,8 @@ void stripIrrelevantConstVolatile(QCString &s)
int i; int i;
if (s=="const") { s.resize(0); return; } if (s=="const") { s.resize(0); return; }
if (s=="volatile") { s.resize(0); return; } if (s=="volatile") { s.resize(0); return; }
// strip occurrences of const
i = s.find("const "); i = s.find("const ");
if (i!=-1) if (i!=-1)
{ {
...@@ -1284,6 +1286,8 @@ void stripIrrelevantConstVolatile(QCString &s) ...@@ -1284,6 +1286,8 @@ void stripIrrelevantConstVolatile(QCString &s)
s=s.left(i)+s.right(s.length()-i-6); s=s.left(i)+s.right(s.length()-i-6);
} }
} }
// strip occurrences of volatile
i = s.find("volatile "); i = s.find("volatile ");
if (i!=-1) if (i!=-1)
{ {
...@@ -1295,22 +1299,6 @@ void stripIrrelevantConstVolatile(QCString &s) ...@@ -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 // a bit of debug support for matchArguments
#define MATCH #define MATCH
...@@ -1485,6 +1473,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -1485,6 +1473,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
// otherwise we assume that a name starts at the current position. // otherwise we assume that a name starts at the current position.
while (srcPos<srcAType.length() && isId(srcAType.at(srcPos))) srcPos++; while (srcPos<srcAType.length() && isId(srcAType.at(srcPos))) srcPos++;
while (dstPos<dstAType.length() && isId(dstAType.at(dstPos))) dstPos++; while (dstPos<dstAType.length() && isId(dstAType.at(dstPos))) dstPos++;
// if nothing more follows for both types then we assume we have // if nothing more follows for both types then we assume we have
// found a match. Note that now `signed int' and `signed' match, but // 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 // seeing that int is not a name can only be done by looking at the
...@@ -3108,8 +3097,7 @@ const char *getOverloadDocs() ...@@ -3108,8 +3097,7 @@ const char *getOverloadDocs()
"function only in what argument(s) it accepts."; "function only in what argument(s) it accepts.";
} }
void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict)
MemberGroupList *memberGroupList)
{ {
MemberListIterator mli(*ml); MemberListIterator mli(*ml);
MemberDef *md; MemberDef *md;
...@@ -3123,12 +3111,11 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, ...@@ -3123,12 +3111,11 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict,
QCString *pDocs = Doxygen::memberDocDict[groupId]; QCString *pDocs = Doxygen::memberDocDict[groupId];
if (pGrpHeader) if (pGrpHeader)
{ {
MemberGroup *mg = memberGroupDict->find(groupId); MemberGroup *mg = memberGroupSDict->find(groupId);
if (mg==0) if (mg==0)
{ {
mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0); mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
memberGroupDict->insert(groupId,mg); memberGroupSDict->append(groupId,mg);
memberGroupList->append(mg);
} }
md = ml->take(index); md = ml->take(index);
mg->insertMember(md); mg->insertMember(md);
......
...@@ -39,8 +39,7 @@ class BaseClassList; ...@@ -39,8 +39,7 @@ class BaseClassList;
class GroupDef; class GroupDef;
class NamespaceList; class NamespaceList;
class ClassList; class ClassList;
class MemberGroupList; class MemberGroupSDict;
class MemberGroupDict;
class Definition; class Definition;
struct TagInfo; struct TagInfo;
...@@ -149,8 +148,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE); ...@@ -149,8 +148,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s); QCString convertToHtml(const char *s);
QCString convertToXML(const char *s); QCString convertToXML(const char *s);
const char * getOverloadDocs(); const char * getOverloadDocs();
void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict, void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict);
MemberGroupList *memberGroupList);
bool extractClassNameFromType(const QCString &type,int &pos, bool extractClassNameFromType(const QCString &type,int &pos,
QCString &name,QCString &templSpec); QCString &name,QCString &templSpec);
QCString substituteTemplateArgumentsInString( QCString substituteTemplateArgumentsInString(
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment