summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp261
-rw-r--r--src/classdef.h3
-rw-r--r--src/definition.cpp2
-rw-r--r--src/definition.h2
-rw-r--r--src/doc.l137
-rw-r--r--src/doxygen.cpp24
-rw-r--r--src/filedef.cpp127
-rw-r--r--src/filedef.h25
-rw-r--r--src/groupdef.cpp151
-rw-r--r--src/groupdef.h25
-rw-r--r--src/index.cpp14
-rw-r--r--src/language.cpp6
-rw-r--r--src/latexgen.cpp10
-rw-r--r--src/memberdef.cpp765
-rw-r--r--src/memberdef.h27
-rw-r--r--src/membergroup.cpp82
-rw-r--r--src/membergroup.h21
-rw-r--r--src/memberlist.cpp600
-rw-r--r--src/memberlist.h43
-rw-r--r--src/message.cpp4
-rw-r--r--src/namespacedef.cpp141
-rw-r--r--src/namespacedef.h28
-rw-r--r--src/rtfgen.cpp16
-rw-r--r--src/scanner.l26
-rw-r--r--src/translator.h18
-rw-r--r--src/translator_br.h786
-rw-r--r--src/translator_cz.h189
-rw-r--r--src/translator_de.h155
-rw-r--r--src/translator_ru.h1653
-rw-r--r--src/util.cpp91
-rw-r--r--src/util.h7
31 files changed, 3109 insertions, 2330 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index f477cb1..743ff4f 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -150,58 +150,31 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p,
inheritedBy->inSort(new BaseClassDef(cd,0,p,s,t));
}
-void ClassDef::addMemberListToGroup(MemberList *ml)
-{
- MemberListIterator mli(*ml);
- MemberDef *md;
- for (;(md=mli.current());++mli)
- {
- int groupId=md->getMemberGroupId();
- if (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);
- }
- }
- }
-}
-
void ClassDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&pubTypes);
- addMemberListToGroup(&pubMembers);
- addMemberListToGroup(&pubAttribs);
- addMemberListToGroup(&pubSlots);
- addMemberListToGroup(&signals);
- addMemberListToGroup(&dcopMethods);
- addMemberListToGroup(&pubStaticMembers);
- addMemberListToGroup(&pubStaticAttribs);
- addMemberListToGroup(&proTypes);
- addMemberListToGroup(&proMembers);
- addMemberListToGroup(&proAttribs);
- addMemberListToGroup(&proSlots);
- addMemberListToGroup(&proStaticMembers);
- addMemberListToGroup(&proStaticAttribs);
- addMemberListToGroup(&priTypes);
- addMemberListToGroup(&priMembers);
- addMemberListToGroup(&priAttribs);
- addMemberListToGroup(&priSlots);
- addMemberListToGroup(&priStaticMembers);
- addMemberListToGroup(&priStaticAttribs);
- addMemberListToGroup(&friends);
- addMemberListToGroup(&related);
- addMemberListToGroup(&properties);
+ ::addMembersToMemberGroup(&pubTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&signals,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&dcopMethods,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&proStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priTypes,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priSlots,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priStaticMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&priStaticAttribs,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&friends,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&related,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&properties,memberGroupDict,memberGroupList);
}
// adds new member definition to the class
@@ -1037,85 +1010,26 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeTemplateSpec(ol,outerTempArgList,pageType,name());
}
- typedefMembers.countDocMembers();
- if (typedefMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ typedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberTypedefDocumentation());
- enumMembers.countDocMembers();
- if (enumMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberEnumerationDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ enumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberEnumerationDocumentation());
- //enumValMembers.countDocMembers();
- //if (enumValMembers.totalCount()>0)
- //{
- // ol.writeRuler();
- // ol.startGroupHeader();
- // parseText(ol,theTranslator->trEnumerationValueDocumentation());
- // ol.endGroupHeader();
- // enumValMembers.writeDocumentation(ol,name());
- //}
-
- constructors.countDocMembers();
- if (constructors.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trConstructorDocumentation());
- ol.endGroupHeader();
- constructors.writeDocumentation(ol,name(),this);
- }
+ constructors.writeDocumentation(ol,name(),this,
+ theTranslator->trConstructorDocumentation());
- functionMembers.countDocMembers();
- if (functionMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberFunctionDocumentation());
- ol.endGroupHeader();
- functionMembers.writeDocumentation(ol,name(),this);
- }
+ functionMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberFunctionDocumentation());
- relatedMembers.countDocMembers();
- if (relatedMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trRelatedFunctionDocumentation());
- ol.endGroupHeader();
- relatedMembers.writeDocumentation(ol,name(),this);
- }
+ relatedMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trRelatedFunctionDocumentation());
- variableMembers.countDocMembers();
- if (variableMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trMemberDataDocumentation());
- ol.endGroupHeader();
- variableMembers.writeDocumentation(ol,name(),this);
- }
+ variableMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trMemberDataDocumentation());
- propertyMembers.countDocMembers();
- if (propertyMembers.totalCount()>0)
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trPropertyDocumentation());
- ol.endGroupHeader();
- propertyMembers.writeDocumentation(ol,name(),this);
- }
+ propertyMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trPropertyDocumentation());
ol.startTextBlock();
@@ -1398,13 +1312,16 @@ bool ClassDef::hasNonReferenceSuperClass()
return found;
}
+/*! called from MemberDef::writeDeclaration() to (recusively) write the
+ * definition of an annonymous struct, union or class.
+ */
void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
{
//ol.insertMemberAlign();
//printf("ClassName=`%s' inGroup=%d\n",name().data(),inGroup);
- if (inGroup && md && md->getClassDef()==this) return;
-
+ //if (inGroup && md && md->getClassDef()==this) return;
+
ol.docify(compoundTypeString());
int ri=name().findRev("::");
if (ri==-1) ri=name().length();
@@ -1417,45 +1334,64 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
ol.docify(" {");
ol.endMemberItem(FALSE);
- // insert members of this class
- if (inGroup)
+ // write user defined member groups
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writePlainDeclarations(ol,this,0,0,0);
- }
+ mg->setInGroup(inGroup);
+ mg->writePlainDeclarations(ol,this,0,0,0);
}
- else
+
+ pubTypes.setInGroup(inGroup);
+ pubTypes.writePlainDeclarations(ol,this,0,0,0);
+ pubMembers.setInGroup(inGroup);
+ pubMembers.writePlainDeclarations(ol,this,0,0,0);
+ pubAttribs.setInGroup(inGroup);
+ pubAttribs.writePlainDeclarations(ol,this,0,0,0);
+ pubSlots.setInGroup(inGroup);
+ pubSlots.writePlainDeclarations(ol,this,0,0,0);
+ signals.setInGroup(inGroup);
+ signals.writePlainDeclarations(ol,this,0,0,0);
+ dcopMethods.setInGroup(inGroup);
+ dcopMethods.writePlainDeclarations(ol,this,0,0,0);
+ properties.setInGroup(inGroup);
+ properties.writePlainDeclarations(ol,this,0,0,0);
+ pubStaticMembers.setInGroup(inGroup);
+ pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ pubStaticAttribs.setInGroup(inGroup);
+ pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
+ proTypes.setInGroup(inGroup);
+ proTypes.writePlainDeclarations(ol,this,0,0,0);
+ proMembers.setInGroup(inGroup);
+ proMembers.writePlainDeclarations(ol,this,0,0,0);
+ proAttribs.setInGroup(inGroup);
+ proAttribs.writePlainDeclarations(ol,this,0,0,0);
+ proSlots.setInGroup(inGroup);
+ proSlots.writePlainDeclarations(ol,this,0,0,0);
+ proStaticMembers.setInGroup(inGroup);
+ proStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ proStaticAttribs.setInGroup(inGroup);
+ proStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
+ if (Config_getBool("EXTRACT_PRIVATE"))
{
- pubTypes.writePlainDeclarations(ol,this,0,0,0);
- pubMembers.writePlainDeclarations(ol,this,0,0,0);
- pubAttribs.writePlainDeclarations(ol,this,0,0,0);
- pubSlots.writePlainDeclarations(ol,this,0,0,0);
- signals.writePlainDeclarations(ol,this,0,0,0);
- dcopMethods.writePlainDeclarations(ol,this,0,0,0);
- properties.writePlainDeclarations(ol,this,0,0,0);
- pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- proTypes.writePlainDeclarations(ol,this,0,0,0);
- proMembers.writePlainDeclarations(ol,this,0,0,0);
- proAttribs.writePlainDeclarations(ol,this,0,0,0);
- proSlots.writePlainDeclarations(ol,this,0,0,0);
- proStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- proStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- if (Config_getBool("EXTRACT_PRIVATE"))
- {
- priTypes.writePlainDeclarations(ol,this,0,0,0);
- priMembers.writePlainDeclarations(ol,this,0,0,0);
- priAttribs.writePlainDeclarations(ol,this,0,0,0);
- priSlots.writePlainDeclarations(ol,this,0,0,0);
- priStaticMembers.writePlainDeclarations(ol,this,0,0,0);
- priStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
- }
- friends.writePlainDeclarations(ol,this,0,0,0);
- related.writePlainDeclarations(ol,this,0,0,0);
+ priTypes.setInGroup(inGroup);
+ priTypes.writePlainDeclarations(ol,this,0,0,0);
+ priMembers.setInGroup(inGroup);
+ priMembers.writePlainDeclarations(ol,this,0,0,0);
+ priAttribs.setInGroup(inGroup);
+ priAttribs.writePlainDeclarations(ol,this,0,0,0);
+ priSlots.setInGroup(inGroup);
+ priSlots.writePlainDeclarations(ol,this,0,0,0);
+ priStaticMembers.setInGroup(inGroup);
+ priStaticMembers.writePlainDeclarations(ol,this,0,0,0);
+ priStaticAttribs.setInGroup(inGroup);
+ priStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
}
+ friends.setInGroup(inGroup);
+ friends.writePlainDeclarations(ol,this,0,0,0);
+ related.setInGroup(inGroup);
+ related.writePlainDeclarations(ol,this,0,0,0);
}
/*! a link to this class is possible within this project */
@@ -1478,6 +1414,11 @@ bool ClassDef::isVisibleInHierarchy()
(hasDocumentation() || !Config_getBool("HIDE_UNDOC_CLASSES") || isReference());
}
+bool ClassDef::hasDocumentation() const
+{
+ return Definition::hasDocumentation();
+}
+
//----------------------------------------------------------------------
// recursive function:
// returns TRUE iff class definition `bcd' represents an (in)direct base
diff --git a/src/classdef.h b/src/classdef.h
index 2270d31..63dabd9 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -70,6 +70,8 @@ class ClassDef : public Definition
QCString getFileBase() const;
QCString getSourceFileBase() const;
+ bool hasDocumentation() const;
+
/*! Returns the name as it is appears in the documentation */
QCString displayName() const;
@@ -247,7 +249,6 @@ class ClassDef : public Definition
protected:
void addUsedInterfaceClasses(MemberDef *md,const char *typeStr);
- void addMemberListToGroup(MemberList *);
bool hasExamples();
bool hasNonReferenceSuperClass();
diff --git a/src/definition.cpp b/src/definition.cpp
index 78c2ded..1beeba9 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -400,7 +400,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
ol.popGeneratorState();
}
-bool Definition::hasDocumentation()
+bool Definition::hasDocumentation() const
{
return !doc.isEmpty() || // has detailed docs
!brief.isEmpty() || // has brief description
diff --git a/src/definition.h b/src/definition.h
index 7353e38..2018525 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -73,7 +73,7 @@ class Definition
*/
void setBriefDescription(const char *b);
/*! Returns TRUE iff the definition is documented */
- virtual bool hasDocumentation();
+ virtual bool hasDocumentation() const;
virtual bool isLinkableInProject() = 0;
virtual bool isLinkable() = 0;
diff --git a/src/doc.l b/src/doc.l
index 8bbf7a4..2f6dc97 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -1841,21 +1841,49 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocScan,DocRefName>{ID}"<"[^>\ \t\n]*">"("::"{ID})+"("?[a-z_A-Z0-9,:\<\> \t\*\&]*")"? {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")" {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>{SCOPEMASK}("()")? {
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan,DocRefName>({SCOPEMASK}"::")?"operator"{OPMASK} {
QCString oName=yytext;
- generateRef(*outDoc,className,
- removeRedundantWhiteSpace(oName),inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,
+ removeRedundantWhiteSpace(oName),inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
BEGIN(DocScan);
}
<DocScan>("http:"|"https:"|"ftp:"|"file:"){URLMASK} { outDoc->startHtmlLink(yytext);
@@ -1864,10 +1892,24 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILESCHAR}*{FILEECHAR}+/".\\n" { // special exception that is otherwise matches by FILEMASK
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
}
<DocScan>{FILEMASK} {
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
}
<DocCodeBlock>{BN}*{CMD}"endcode"/[^a-z_A-Z0-9] { // needed to match things like \endcode. (note the dot)
parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName);
@@ -2156,55 +2198,118 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
<DocEmphasis>{FILEMASK} {
outDoc->startEmphasis();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startEmphasis();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocEmphasis>{WORD} {
outDoc->startEmphasis();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocBold>{FILEMASK} {
outDoc->startBold();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startBold();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocBold>{WORD} {
outDoc->startBold();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endBold();
BEGIN( DocScan );
}
<DocCode>{FILEMASK} {
outDoc->startTypewriter();
- generateFileRef(*outDoc,yytext);
+ if (!insideHtmlLink)
+ {
+ generateFileRef(*outDoc,yytext);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()!\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startTypewriter();
- generateRef(*outDoc,className,yytext,inSeeBlock);
+ if (!insideHtmlLink)
+ {
+ generateRef(*outDoc,className,yytext,inSeeBlock);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
<DocCode>{WORD} {
outDoc->startTypewriter();
- linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ if (!insideHtmlLink)
+ {
+ linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE);
+ }
+ else
+ {
+ outDoc->docify(yytext);
+ }
outDoc->endTypewriter();
BEGIN( DocScan );
}
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 18610ac..73c765c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -599,7 +599,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
{
NamespaceDef *nd=0;
//printf("addNameSpace() trying: %s\n",e->name.data());
- QCString nsName = stripAnnonymousNamespaceScope(e->name);
+ QCString nsName = stripAnonymousNamespaceScope(e->name);
if (!nsName.isEmpty() && nsName.at(0)!='@' &&
(nd=getResolvedNamespace(nsName))
)
@@ -637,7 +637,7 @@ static void buildClassList(Entry *root)
}
else
{
- fullName=stripAnnonymousNamespaceScope(fullName);
+ fullName=stripAnonymousNamespaceScope(fullName);
Debug::print(Debug::Classes,0," Found class with name %s\n",fullName.data());
bool ambig;
@@ -825,7 +825,7 @@ static void buildNamespaceList(Entry *root)
!root->name.isEmpty()
)
{
- QCString fullName=stripAnnonymousNamespaceScope(root->name.copy());
+ QCString fullName=stripAnonymousNamespaceScope(root->name.copy());
if (!fullName.isEmpty())
{
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
@@ -1199,13 +1199,14 @@ static MemberDef *addVariableToClass(
md->setDefinition(def);
md->setBitfields(root->bitfields);
md->addSectionsToDefinition(root->anchors);
- md->setFromAnnonymousScope(fromAnnScope);
- md->setFromAnnonymousMember(fromAnnMemb);
+ md->setFromAnonymousScope(fromAnnScope);
+ md->setFromAnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer);
md->setMaxInitLines(root->initLines);
md->setMemberGroupId(root->mGrpId);
+ addMemberToGroups(root,md);
//if (root->mGrpId!=-1)
//{
// printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
@@ -1356,8 +1357,8 @@ static MemberDef *addVariableToFile(
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->addSectionsToDefinition(root->anchors);
- md->setFromAnnonymousScope(fromAnnScope);
- md->setFromAnnonymousMember(fromAnnMemb);
+ md->setFromAnonymousScope(fromAnnScope);
+ md->setFromAnonymousMember(fromAnnMemb);
md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer);
@@ -1366,6 +1367,7 @@ static MemberDef *addVariableToFile(
md->setBodyDef(fd);
md->setDefinition(def);
md->setExplicitExternal(root->explicitExternal);
+ addMemberToGroups(root,md);
//if (root->mGrpId!=-1)
//{
// md->setMemberGroup(memberGroupDict[root->mGrpId]);
@@ -1535,7 +1537,7 @@ void buildVarList(Entry *root)
else
mtype=MemberDef::Variable;
- QCString classScope=stripAnnonymousNamespaceScope(scope);
+ QCString classScope=stripAnonymousNamespaceScope(scope);
QCString annScopePrefix=scope.left(scope.length()-classScope.length());
scope=classScope;
if (!scope.isEmpty() && !name.isEmpty() && (cd=getClass(scope)))
@@ -1639,7 +1641,7 @@ static void buildMemberList(Entry *root)
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
- QCString scope=stripAnnonymousNamespaceScope(root->parent->name.copy());
+ QCString scope=stripAnonymousNamespaceScope(root->parent->name.copy());
bool isMember=FALSE;
int memIndex=rname.find("::");
@@ -2475,7 +2477,7 @@ static void computeClassRelations(Entry *root)
{
ClassDef *cd;
// strip any annonymous scopes first
- QCString bName=stripAnnonymousNamespaceScope(root->name);
+ QCString bName=stripAnonymousNamespaceScope(root->name);
Debug::print(Debug::Classes,0," Class %s : \n",bName.data());
if ((cd=getClass(bName)))
{
@@ -3201,7 +3203,7 @@ static void findMember(Entry *root,
Entry *p=root->parent;
while (p) // get full scope as class name
{
- QCString sc = stripAnnonymousNamespaceScope(p->name);
+ QCString sc = stripAnonymousNamespaceScope(p->name);
if ((p->section & Entry::SCOPE_MASK)
&& !sc.isEmpty() && sc[0]!='@'
)
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 741c76d..e2fcb76 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -114,7 +114,7 @@ void FileDef::writeDocumentation(OutputList &ol)
// fn.prepend(stripFromPath(getPath().copy()));
//}
- //printf("WriteDocumentation %p diskname=%s\n",this,diskname.data());
+ //printf("WriteDocumentation diskname=%s\n",diskname.data());
QCString pageTitle=name()+" File Reference";
startFile(ol,getOutputFileBase(),pageTitle);
@@ -311,7 +311,13 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
- allMemberList.writeDeclarations(ol,0,0,this,0,0,0);
+ //allMemberList.writeDeclarations(ol,0,0,this,0,0,0);
+ decDefineMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,0,this,0,theTranslator->trVariables(),0);
ol.endMemberSections();
//doc=doc.stripWhiteSpace();
@@ -366,65 +372,23 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
- defineMembers.countDocMembers();
- if (defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers();
- if (protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers();
- if (typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers();
- if (enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- funcMembers.countDocMembers();
- if (funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers();
- if (varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
// write Author section (Man only)
ol.disableAllBut(OutputGenerator::Man);
@@ -470,6 +434,7 @@ void FileDef::writeSource(OutputList &ol)
ol.enableAll();
}
+#if 0
/*! Adds a member \a md to the member group with id \a groupId.
*/
void FileDef::addMemberListToGroup(MemberList *ml,
@@ -501,15 +466,16 @@ void FileDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
void FileDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&allMemberList,&MemberDef::isDefine);
- addMemberListToGroup(&allMemberList,&MemberDef::isTypedef);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumerate);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumValue);
- addMemberListToGroup(&allMemberList,&MemberDef::isFunction);
- addMemberListToGroup(&allMemberList,&MemberDef::isVariable);
+ ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);
}
/*! Adds member definition \a md to the list of all members of this file */
@@ -521,45 +487,56 @@ void FileDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ case MemberDef::Property:
+ decVarMembers.append(md);
if (sortMemberDocs)
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (sortMemberDocs)
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (sortMemberDocs)
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (sortMemberDocs)
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue: // enum values are shown inside their enums
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (sortMemberDocs)
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (sortMemberDocs)
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("FileDef::insertMembers(): unexpected member insert in file!\n");
+ err("FileDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in file scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
diff --git a/src/filedef.h b/src/filedef.h
index d042601..26a297d 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -149,15 +149,22 @@ class FileDef : public Definition
//void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
MemberList allMemberList;
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList funcMembers;
- MemberList varMembers;
-
- protected:
- void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
+
+ // members in the declaration part of the documentation
+ MemberList decDefineMembers;
+ MemberList decProtoMembers;
+ MemberList decTypedefMembers;
+ MemberList decEnumMembers;
+ MemberList decFuncMembers;
+ MemberList decVarMembers;
+
+ // members in the documentation part of the documentation
+ MemberList docDefineMembers;
+ MemberList docProtoMembers;
+ MemberList docTypedefMembers;
+ MemberList docEnumMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
private:
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 765c95f..ccb81de 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -56,6 +56,22 @@ GroupDef::GroupDef(const char *df,int dl,const char *na,const char *t) :
memberGroupList->setAutoDelete(TRUE);
memberGroupDict = new MemberGroupDict(1009);
+ decDefineMembers.setInGroup(TRUE);
+ decProtoMembers.setInGroup(TRUE);
+ decTypedefMembers.setInGroup(TRUE);
+ decEnumMembers.setInGroup(TRUE);
+ decEnumValMembers.setInGroup(TRUE);
+ decFuncMembers.setInGroup(TRUE);
+ decVarMembers.setInGroup(TRUE);
+
+ docDefineMembers.setInGroup(TRUE);
+ docProtoMembers.setInGroup(TRUE);
+ docTypedefMembers.setInGroup(TRUE);
+ docEnumMembers.setInGroup(TRUE);
+ docEnumValMembers.setInGroup(TRUE);
+ docFuncMembers.setInGroup(TRUE);
+ docVarMembers.setInGroup(TRUE);
+
visited = 0;
}
@@ -119,6 +135,7 @@ void GroupDef::addExample(const PageInfo *def)
exampleDict->append(def->name,def);
}
+#if 0
void GroupDef::addMemberListToGroup(MemberList *ml,
bool (MemberDef::*func)() const)
{
@@ -147,9 +164,12 @@ void GroupDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
+
void GroupDef::addMembersToMemberGroup()
{
+#if 0
addMemberListToGroup(allMemberList,&MemberDef::isDefine);
addMemberListToGroup(allMemberList,&MemberDef::isTypedef);
addMemberListToGroup(allMemberList,&MemberDef::isEnumerate);
@@ -158,6 +178,23 @@ void GroupDef::addMembersToMemberGroup()
addMemberListToGroup(allMemberList,&MemberDef::isSlot);
addMemberListToGroup(allMemberList,&MemberDef::isSignal);
addMemberListToGroup(allMemberList,&MemberDef::isVariable);
+#endif
+
+ ::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);
+
+ //printf("GroupDef::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ mg->setInGroup(TRUE);
+ }
}
@@ -189,49 +226,55 @@ void GroupDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue:
- if (Config_getBool("SORT_MEMBER_DOCS"))
- enumValMembers.inSort(md);
- else
- enumValMembers.append(md);
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("FileDef::insertMembers(): unexpected member insert in file!\n");
+ err("GroupDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in group scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
@@ -410,7 +453,13 @@ void GroupDef::writeDocumentation(OutputList &ol)
mg->writeDeclarations(ol,0,0,0,this);
}
- allMemberList->writeDeclarations(ol,0,0,0,this,0,0);
+ //allMemberList->writeDeclarations(ol,0,0,0,this,0,0);
+ decDefineMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trVariables(),0);
}
ol.endMemberSections();
@@ -471,65 +520,23 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
- defineMembers.countDocMembers(TRUE);
- if (defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers(TRUE);
- if (protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers(TRUE);
- if (typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers(TRUE);
- if (enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- funcMembers.countDocMembers(TRUE);
- if (funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers(TRUE);
- if (varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
diff --git a/src/groupdef.h b/src/groupdef.h
index 8c586ba..e55c727 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -94,14 +94,23 @@ class GroupDef : public Definition
MemberList *allMemberList;
MemberNameInfoDict *allMemberNameInfoDict;
- // members sorted by type
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList enumValMembers;
- MemberList funcMembers;
- MemberList varMembers;
+ // 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 docEnumValMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
/* user defined member groups */
MemberGroupList *memberGroupList; // list of member groups in this group
diff --git a/src/index.cpp b/src/index.cpp
index d37bef6..f7aa869 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2239,13 +2239,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
};
MemInfo memberLists[] =
{
- MemInfo(&gd->defineMembers, theTranslator->trDefines()),
- MemInfo(&gd->typedefMembers, theTranslator->trTypedefs()),
- MemInfo(&gd->enumMembers, theTranslator->trEnumerations()),
- MemInfo(&gd->enumValMembers, theTranslator->trEnumerationValues()),
- MemInfo(&gd->funcMembers, theTranslator->trFunctions()),
- MemInfo(&gd->varMembers, theTranslator->trVariables()),
- MemInfo(&gd->protoMembers, theTranslator->trFuncProtos()),
+ MemInfo(&gd->docDefineMembers, theTranslator->trDefines()),
+ MemInfo(&gd->docTypedefMembers, theTranslator->trTypedefs()),
+ MemInfo(&gd->docEnumMembers, theTranslator->trEnumerations()),
+ MemInfo(&gd->docEnumValMembers, theTranslator->trEnumerationValues()),
+ MemInfo(&gd->docFuncMembers, theTranslator->trFunctions()),
+ MemInfo(&gd->docVarMembers, theTranslator->trVariables()),
+ MemInfo(&gd->docProtoMembers, theTranslator->trFuncProtos()),
MemInfo(0,0)
};
diff --git a/src/language.cpp b/src/language.cpp
index 870a271..d8b2b86 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -61,10 +61,6 @@ bool setTranslator(const char *langName)
}
else if (L_EQUAL("czech"))
{
-#ifndef _WIN32
- err("Warning: The Czech translation uses the windows code page 1250 encoding.\n"
- "Please convert translator_cz.h to ISO Latin-2 to use it under UNIX.\n");
-#endif
theTranslator=new TranslatorCzech;
}
else if (L_EQUAL("french"))
@@ -133,7 +129,7 @@ bool setTranslator(const char *langName)
}
else if (L_EQUAL("brazilian"))
{
- theTranslator=new TranslatorBrazilianPortuguese;
+ theTranslator=new TranslatorBrazilian;
}
#endif
else // use the default language (i.e. english)
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 9347c79..761845f 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -261,16 +261,6 @@ static void writeDefaultHeaderPart1(QTextStream &t)
// The result of the LatexLanguageSupportCommand()
// is empty, which means that the language prefers
// the babel package, or no package is needed at all.
- if (theTranslator->latexBabelPackage()=="russian")
- {
- // The russian babel package also needs an encoding.
- // Assume the encoding matched the platform.
-#if defined(_WIN32)
- t << "\\usepackage[cp1251]{inputenc}\n";
-#else
- t << "\\usepackage[koi8-r]{inputenc}\n";
-#endif
- }
t << "\\usepackage[" << theTranslator->latexBabelPackage() << "]{babel}\n";
}
}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 9962576..75b5c21 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -182,7 +182,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
}
-static void writeTemplatePrefix(OutputList &ol,ArgumentList *al,bool br=TRUE)
+static void writeTemplatePrefix(OutputList &ol,ArgumentList *al)
{
ol.docify("template<");
Argument *a=al->first();
@@ -200,35 +200,29 @@ static void writeTemplatePrefix(OutputList &ol,ArgumentList *al,bool br=TRUE)
if (a) ol.docify(", ");
}
ol.docify("> ");
- if (br)
- {
- // ol.pushGeneratorState();
- // ol.disable(OutputGenerator::Man);
- // ol.disable(OutputGenerator::Latex);
- // ol.lineBreak();
- // ol.popGeneratorState();
- }
}
//-----------------------------------------------------------------------------
/*! Creates a new member definition.
- * Members can be function/variables/enums/etc. inside a class or inside a
- * file.
*
* \param df File containing the definition of this member.
* \param dl Line at which the member definition was found.
* \param t A string representing the type of the member.
- * \param n A string representing the name of the member.
+ * \param na A string representing the name of the member.
* \param a A string representing the arguments of the member.
- * \param p The type of protection of the member, possible values are:
+ * \param e A string representing the throw clause of the members.
+ * \param p The protection context of the member, possible values are:
* \c Public, \c Protected, \c Private.
- * \param v The `virtualness' of the member, possible values are:
+ * \param v The degree of `virtualness' of the member, possible values are:
* \c Normal, \c Virtual, \c Pure.
- * \param s A boolean that is true if the member is static.
- * \param r A boolean that is true if the member is only related.
+ * \param s A boolean that is true iff the member is static.
+ * \param r A boolean that is true iff the member is only related.
* \param mt The kind of member. See #MemberDef::MemberType for a list of
* all types.
+ * \param tal The template arguments of this member.
+ * \param al The arguments of this member. This is a structured form of
+ * the string past as argument \a a.
*/
MemberDef::MemberDef(const char *df,int dl,
@@ -240,7 +234,6 @@ MemberDef::MemberDef(const char *df,int dl,
//printf("++++++ MemberDef(%s file=%s,line=%d) ++++++ \n",na,df,dl);
classDef=0;
fileDef=0;
- //fileDec=0;
redefines=0;
redefinedBy=0;
nspace=0;
@@ -268,7 +261,6 @@ MemberDef::MemberDef(const char *df,int dl,
stat=s;
mtype=mt;
exception=e;
- eUsed=FALSE;
proto=FALSE;
annScope=FALSE;
memSpec=FALSE;
@@ -319,6 +311,7 @@ MemberDef::MemberDef(const char *df,int dl,
}
}
+/*! Destroys the member definition. */
MemberDef::~MemberDef()
{
delete redefinedBy;
@@ -399,10 +392,6 @@ QCString MemberDef::getOutputFileBase() const
{
return fileDef->getOutputFileBase();
}
- //else if (fileDec)
- //{
- // return fileDec->getOutputFileBase();
- //}
else if (nspace)
{
return nspace->getOutputFileBase();
@@ -454,7 +443,7 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
{
Definition *d=0;
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else if (gd) d=gd;
- if (d==0) { err("Member %s without group! Please report this bug!\n",name().data()); return; }
+ if (d==0) { err("Member %s without definition! Please report this bug!\n",name().data()); return; }
if (group!=0 && gd==0) // forward link to the group
{
ol.writeObjectLink(group->getReference(),group->getOutputFileBase(),anchor(),name());
@@ -465,422 +454,435 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
}
}
-
-void MemberDef::writeDeclaration(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup
- )
+/*! If this member has an anonymous class/struct/union as its type, then
+ * this method will return the ClassDef that describes this return type.
+ */
+ClassDef *MemberDef::getClassDefOfAnonymousType(const char *scopeName) const
{
- int i,l;
- bool hasDocs=hasDocumentation();
- //printf("%s MemberDef::writeDeclaration(): hasDocs %d\n",name().data(),hasDocs);
- //if (cd)
- //{
- // printf("MemberDef: %s in class %s annScope=%d annMemb=%p\n",
- // name().data(),cd->name().data(),annScope,annMemb);
- //}
-
- // hide members in anonymous scopes
- // (they are displayed by there parent placeholder)
- if (annScope) return;
- // hide undocumented members unless overwritten by the configuration
- if (!hasDocs && Config_getBool("HIDE_UNDOC_MEMBERS")) return;
- // hide members with no detailed desciption and brief descriptions explicitly
- // disabled.
- if (Config_getBool("HIDE_UNDOC_MEMBERS") && documentation().isEmpty() &&
- !Config_getBool("BRIEF_MEMBER_DESC") && !Config_getBool("REPEAT_BRIEF")
- ) return;
- // hide static file & namespace members unless extract static is on
- if (cd==0 && isStatic() && !Config_getBool("EXTRACT_STATIC")) return;
-
- // hide private member that are put into a member group. Non-grouped
- // members are not rendered anyway.
- //printf("md->name()=`%s' Protection=%d\n",name().data(),protection());
- if (inGroup && protection()==Private && !Config_getBool("EXTRACT_PRIVATE")) return;
-
- QCString ltype=type.copy();
+ QCString cname=scopeName;
+ QCString ltype(type);
// strip `static' keyword from ltype
if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7);
// strip `friend' keyword from ltype
if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7);
static QRegExp r("@[0-9]+");
- i=-1;
- if ((ltype.isEmpty() || (i=r.match(ltype,0,&l))==-1) || !enumUsed())
+ int l,i=r.match(ltype,0,&l);
+ // search for the last anonymous scope in the member type
+ ClassDef *annoClassDef=0;
+ if (i!=-1) // found anonymous scope in type
{
-
- if (!Config_getString("GENERATE_TAGFILE").isEmpty())
+ int il=i-1,ir=i+l;
+ // extract anonymous scope
+ while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--;
+ if (il>0) il++;
+ while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++;
+
+ //QCString annName = ltype.mid(i,l);
+ QCString annName = ltype.mid(il,ir-il);
+
+ // if inside a class or namespace try to prepend the scope name
+ if (!cname.isEmpty() && annName.left(cname.length()+2)!=cname+"::")
{
- Doxygen::tagFile << " <member kind=\"";
- switch (mtype)
- {
- case Define: Doxygen::tagFile << "define"; break;
- case EnumValue: Doxygen::tagFile << "enumvalue"; break;
- case Property: Doxygen::tagFile << "property"; break;
- case Variable: Doxygen::tagFile << "variable"; break;
- case Typedef: Doxygen::tagFile << "typedef"; break;
- case Enumeration: Doxygen::tagFile << "enumeration"; break;
- case Function: Doxygen::tagFile << "function"; break;
- case Signal: Doxygen::tagFile << "signal"; break;
- case Prototype: Doxygen::tagFile << "prototype"; break;
- case Friend: Doxygen::tagFile << "friend"; break;
- case DCOP: Doxygen::tagFile << "dcop"; break;
- case Slot: Doxygen::tagFile << "slot"; break;
- }
- if (prot!=Public)
- {
- Doxygen::tagFile << "\" protection=\"";
- if (prot==Protected) Doxygen::tagFile << "public";
- else /* Private */ Doxygen::tagFile << "protected";
- }
- if (virt!=Normal)
- {
- Doxygen::tagFile << "\" virtualness=\"";
- if (virt==Virtual) Doxygen::tagFile << "virtual";
- else /* Pure */ Doxygen::tagFile << "pure";
- }
- if (isStatic())
- {
- Doxygen::tagFile << "\" static=\"yes";
- }
- Doxygen::tagFile << "\">" << endl;
- Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
- Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
- Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
- writeDocAnchorsToTagFile();
- Doxygen::tagFile << " </member>" << endl;
+ QCString ts=stripAnonymousNamespaceScope(cname+"::"+annName);
+ //printf("Member::writeDeclaration: Trying %s\n",ts.data());
+ annoClassDef=getClass(ts);
}
-
- Definition *d=0;
- ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
- if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
- QCString cname = d->name();
- QCString cfname = d->getOutputFileBase();
-
- //int gId = inGroup ? -1 : groupId();
- //MemberGroup *mg = (gId!=prevGroupId && gId!=-1) ? memberGroupDict[gId] : 0;
- //const char *gHeader = 0;
- //const char *gFile = 0;
- //if (mg)
- //{
- // gHeader=mg->header();
- // gFile=mg->getOutputFileBase();
- //}
- //
- //if (!inGroup)
- //{
- // if (prevGroupId==-1 && gId!=-1)
- // {
- // ol.memberGroupSpacing(FALSE);
- // ol.memberGroupSeparator();
- // }
- // else if (prevGroupId!=-1 && gId==-1)
- // {
- // ol.memberGroupSpacing(TRUE);
- // ol.memberGroupSeparator();
- // }
- // else if (prevGroupId!=-1 && gId!=-1 && prevGroupId!=gId)
- // {
- // ol.memberGroupSpacing(TRUE);
- // ol.memberGroupSeparator();
- // }
- //}
-
- HtmlHelp *htmlHelp=0;
- bool hasHtmlHelp = Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP");
- if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance();
-
- // search for the last anonymous scope in the member type
- ClassDef *annoClassDef=0;
- //while (i!=-1 && cname.find(ltype.mid(i,l))!=-1)
- //{
- // i=r.match(ltype,i+l,&l);
- //}
- int il=i-1,ir=i+l;
- if (i!=-1) // found anonymous scope in type
+ // if not found yet, try without scope name
+ if (annoClassDef==0)
{
- // extract anonymous scope
- while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--;
- if (il>0) il++;
- while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++;
-
- //QCString annName = ltype.mid(i,l);
- QCString annName = ltype.mid(il,ir-il);
-
- // if inside a class or namespace try to prepend the scope name
- if ((cd || nd) && annName.left(cname.length())!=cname)
- {
- QCString ts=stripAnnonymousNamespaceScope(cname+"::"+annName);
- //printf("Member::writeDeclaration: Trying %s\n",ts.data());
- annoClassDef=getClass(ts);
- }
- // if not found yet, try without scope name
- if (annoClassDef==0)
- {
- QCString ts=stripAnnonymousNamespaceScope(annName);
- //printf("Member::writeDeclaration: Trying %s\n",ts.data());
- annoClassDef=getClass(ts);
- }
+ QCString ts=stripAnonymousNamespaceScope(annName);
+ //printf("Member::writeDeclaration: Trying %s\n",ts.data());
+ annoClassDef=getClass(ts);
}
+ }
+ return annoClassDef;
+}
+
+/*! This methods returns TRUE iff the brief section (also known as
+ * declaration section) is visible in the documentation.
+ */
+bool MemberDef::isBriefSectionVisible() const
+{
+ // only include static members with file/namespace scope if
+ // explicitly enabled in the config file
+ bool visibleIfStatic = !(getClassDef()==0 &&
+ isStatic() &&
+ !Config_getBool("EXTRACT_STATIC")
+ );
- // start a new member declaration
- ol.startMemberItem((annoClassDef || annMemb || annEnumType) ? 1 : 0);
+ // only include members is the are documented or
+ // HIDE_UNDOC_MEMBERS is NO in the config file
+ bool visibleIfDocumented = (!Config_getBool("HIDE_UNDOC_MEMBERS") ||
+ hasDocumentation()
+ );
+
+ // hide members with no detailed desciption and brief descriptions
+ // explicitly disabled.
+ bool visibleIfEnabled = !(Config_getBool("HIDE_UNDOC_MEMBERS") &&
+ documentation().isEmpty() &&
+ !Config_getBool("BRIEF_MEMBER_DESC") &&
+ !Config_getBool("REPEAT_BRIEF")
+ );
+
+ // only include members that are non-private unless EXTRACT_PRIVATE is
+ // set to YES or the member is part of a group
+ bool visibleIfPrivate = (protection()!=Private ||
+ Config_getBool("EXTRACT_PRIVATE")
+ );
- // If there is no detailed description we need to write the anchor here.
- bool detailsVisible = detailsAreVisible();
- if (!detailsVisible && !Config_getBool("EXTRACT_ALL") && !annMemb)
- {
- QCString doxyName=name().copy();
- if (!cname.isEmpty()) doxyName.prepend(cname+"::");
- ol.startDoxyAnchor(cfname,anchor(),doxyName);
+ return visibleIfStatic && visibleIfDocumented &&
+ visibleIfEnabled && visibleIfPrivate && !annScope;
+}
- ol.addIndexItem(name(),cname);
- ol.addIndexItem(cname,name());
+void MemberDef::writeDeclaration(OutputList &ol,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
+ bool inGroup
+ )
+{
+ //printf("%s MemberDef::writeDeclaration()\n",name().data());
- if (hasHtmlHelp)
- {
- htmlHelp->addIndexItem(cname,name(),cfname,anchor());
- }
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.docify("\n");
- ol.popGeneratorState();
- }
+ // hide members whose brief section should not be visible
+ if (!isBriefSectionVisible()) return;
- //printf("member name=%s indDepth=%d\n",name().data(),indDepth);
- if (annoClassDef || annMemb)
- {
- int j;
- for (j=0;j<indDepth;j++)
- {
- ol.writeNonBreakableSpace(3);
- }
- }
-
- if (tArgList)
+ // write tag file information of this member
+ if (!Config_getString("GENERATE_TAGFILE").isEmpty())
+ {
+ Doxygen::tagFile << " <member kind=\"";
+ switch (mtype)
{
- writeTemplatePrefix(ol,tArgList,FALSE);
+ case Define: Doxygen::tagFile << "define"; break;
+ case EnumValue: Doxygen::tagFile << "enumvalue"; break;
+ case Property: Doxygen::tagFile << "property"; break;
+ case Variable: Doxygen::tagFile << "variable"; break;
+ case Typedef: Doxygen::tagFile << "typedef"; break;
+ case Enumeration: Doxygen::tagFile << "enumeration"; break;
+ case Function: Doxygen::tagFile << "function"; break;
+ case Signal: Doxygen::tagFile << "signal"; break;
+ case Prototype: Doxygen::tagFile << "prototype"; break;
+ case Friend: Doxygen::tagFile << "friend"; break;
+ case DCOP: Doxygen::tagFile << "dcop"; break;
+ case Slot: Doxygen::tagFile << "slot"; break;
}
- else if (membTAL)
+ if (prot!=Public)
{
- writeTemplatePrefix(ol,membTAL,FALSE);
+ Doxygen::tagFile << "\" protection=\"";
+ if (prot==Protected) Doxygen::tagFile << "public";
+ else /* Private */ Doxygen::tagFile << "protected";
}
-
- if (i!=-1) // member has an anonymous type
+ if (virt!=Normal)
{
- //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
- // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data());
-
- if (annoClassDef) // type is an anonymous compound
- {
- //printf("class found!\n");
- annoClassDef->writeDeclaration(ol,annMemb,inGroup);
- ol.startMemberItem(2);
- int j;
- for (j=0;j<indDepth;j++)
- {
- ol.writeNonBreakableSpace(3);
- }
- QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
- ol.docify("}");
- if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
- {
- ol.docify(";");
- }
- else
- {
- ol.docify(varName);
- }
- }
- else
- {
- if (getAnonymousEnumType()) // type is an anonymous enum
- {
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.left(i),TRUE);
- ol+=*getAnonymousEnumType()->enumDecl();
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.right(ltype.length()-i-l),TRUE);
- }
- else
- {
- ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l);
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
- }
- }
+ Doxygen::tagFile << "\" virtualness=\"";
+ if (virt==Virtual) Doxygen::tagFile << "virtual";
+ else /* Pure */ Doxygen::tagFile << "pure";
}
- else
- {
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
- }
- bool htmlOn = ol.isEnabled(OutputGenerator::Html);
- if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
+ if (isStatic())
{
- ol.disable(OutputGenerator::Html);
+ Doxygen::tagFile << "\" static=\"yes";
}
- if (!ltype.isEmpty()) ol.docify(" ");
- if (htmlOn)
+ Doxygen::tagFile << "\">" << endl;
+ Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
+ Doxygen::tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
+ Doxygen::tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
+ writeDocAnchorsToTagFile();
+ Doxygen::tagFile << " </member>" << endl;
+ }
+
+ Definition *d=0;
+ ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
+ if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
+ QCString cname = d->name();
+ QCString cfname = d->getOutputFileBase();
+
+ HtmlHelp *htmlHelp=0;
+ bool hasHtmlHelp = Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP");
+ if (hasHtmlHelp) htmlHelp = HtmlHelp::getInstance();
+
+ // search for the last anonymous scope in the member type
+ ClassDef *annoClassDef=getClassDefOfAnonymousType((cd||nd)?cname.data():0);
+
+ // start a new member declaration
+ ol.startMemberItem((annoClassDef || annMemb || annEnumType) ? 1 : 0);
+
+ // If there is no detailed description we need to write the anchor here.
+ bool detailsVisible = isDetailedSectionVisible();
+ if (!detailsVisible && !annMemb)
+ {
+ QCString doxyName=name().copy();
+ if (!cname.isEmpty()) doxyName.prepend(cname+"::");
+ ol.startDoxyAnchor(cfname,anchor(),doxyName);
+
+ ol.addIndexItem(name(),cname);
+ ol.addIndexItem(cname,name());
+
+ if (hasHtmlHelp)
{
- ol.enable(OutputGenerator::Html);
+ htmlHelp->addIndexItem(cname,name(),cfname,anchor());
}
+ ol.pushGeneratorState();
+ ol.disable(OutputGenerator::Man);
+ ol.docify("\n");
+ ol.popGeneratorState();
+ }
- if (annMemb)
+ //printf("member name=%s indDepth=%d\n",name().data(),indDepth);
+ if (annoClassDef || annMemb)
+ {
+ int j;
+ for (j=0;j<indDepth;j++)
{
- //bool latexOn = ol.isEnabled(OutputGenerator::Latex);
- //bool manOn = ol.isEnabled(OutputGenerator::Man);
- //if (latexOn) ol.disable(OutputGenerator::Latex);
- //if (manOn) ol.disable(OutputGenerator::Man);
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
ol.writeNonBreakableSpace(3);
- ol.popGeneratorState();
- //if (latexOn) ol.enable(OutputGenerator::Latex);
- //if (manOn) ol.enable(OutputGenerator::Man);
}
- else
+ }
+
+ if (tArgList)
+ {
+ writeTemplatePrefix(ol,tArgList);
+ }
+ else if (membTAL)
+ {
+ writeTemplatePrefix(ol,membTAL);
+ }
+
+ QCString ltype(type);
+ // strip `static' keyword from ltype
+ if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7);
+ // strip `friend' keyword from ltype
+ if (ltype.left(7)=="friend ") ltype=ltype.right(ltype.length()-7);
+ static QRegExp r("@[0-9]+");
+
+ int l,i=r.match(ltype,0,&l);
+ if (i!=-1) // member has an anonymous type
+ {
+ //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
+ // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data());
+
+ if (annoClassDef) // type is an anonymous compound
{
- ol.insertMemberAlign();
+ int ir=i+l;
+ //printf("class found!\n");
+ annoClassDef->writeDeclaration(ol,annMemb,inGroup);
+ ol.startMemberItem(2);
+ int j;
+ for (j=0;j<indDepth;j++)
+ {
+ ol.writeNonBreakableSpace(3);
+ }
+ QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
+ //printf(">>>>>> indDepth=%d ltype=`%s' varName=`%s'\n",indDepth,ltype.data(),varName.data());
+ ol.docify("}");
+ if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
+ {
+ ol.docify(";");
+ }
+ //else
+ //{
+ // ol.docify(varName);
+ //}
}
-
- // write name
- if (!name().isEmpty() && name().at(0)!='@')
+ else
{
- if (isLinkable())
+ if (getAnonymousEnumType()) // type is an anonymous enum
{
- if (annMemb)
- {
- //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
- annMemb->writeLink(ol,
- annMemb->getClassDef(),
- annMemb->getNamespaceDef(),
- annMemb->getFileDef(),
- annMemb->getGroupDef()
- );
- annMemb->annUsed=annUsed=TRUE;
- }
- else
- //printf("writeLink %s->%d\n",name.data(),hasDocumentation());
- writeLink(ol,cd,nd,fd,gd);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.left(i),TRUE);
+ ol+=*getAnonymousEnumType()->enumDecl();
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype.right(ltype.length()-i-l),TRUE);
}
- else // there is a brief member description and brief member
- // descriptions are enabled or there is no detailed description.
+ else
{
- if (annMemb) annMemb->annUsed=annUsed=TRUE;
- ol.startBold();
- ol.docify(name());
- ol.endBold();
+ ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
}
}
+ }
+ else
+ {
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),ltype,TRUE);
+ }
+ bool htmlOn = ol.isEnabled(OutputGenerator::Html);
+ if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
+ {
+ ol.disable(OutputGenerator::Html);
+ }
+ if (!ltype.isEmpty()) ol.docify(" ");
+ if (htmlOn)
+ {
+ ol.enable(OutputGenerator::Html);
+ }
- // if member template specifiers are not part of the name, but they are
- // present, we add them
- //if (tArgList && !(name().find('<')!=-1 && name().find('>')!=-1)
- // && cd && cd->templateArguments())
- //{
- // ol.docify(tempArgListToString(tArgList));
- //}
+ if (annMemb)
+ {
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.writeNonBreakableSpace(3);
+ ol.popGeneratorState();
+ }
+ else
+ {
+ ol.insertMemberAlign();
+ }
- if (argsString())
+ // write name
+ if (!name().isEmpty() && name().at(0)!='@')
+ {
+ if (isLinkable())
{
- if (!isDefine()) ol.writeString(" ");
- //ol.docify(argsString());
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),argsString());
+ if (annMemb)
+ {
+ //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
+ annMemb->writeLink(ol,
+ annMemb->getClassDef(),
+ annMemb->getNamespaceDef(),
+ annMemb->getFileDef(),
+ annMemb->getGroupDef()
+ );
+ annMemb->annUsed=annUsed=TRUE;
+ }
+ else
+ //printf("writeLink %s->%d\n",name.data(),hasDocumentation());
+ writeLink(ol,cd,nd,fd,gd);
}
-
- if (excpString())
+ else // there is a brief member description and brief member
+ // descriptions are enabled or there is no detailed description.
{
- ol.writeString(" ");
- ol.docify(excpString());
+ if (annMemb) annMemb->annUsed=annUsed=TRUE;
+ ol.startBold();
+ ol.docify(name());
+ ol.endBold();
}
+ }
+
+ if (argsString())
+ {
+ if (!isDefine()) ol.writeString(" ");
+ //ol.docify(argsString());
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),argsString());
+ }
+
+ if (excpString())
+ {
+ ol.writeString(" ");
+ ol.docify(excpString());
+ }
- if (!bitfields.isEmpty()) // add bitfields
+ if (!bitfields.isEmpty()) // add bitfields
+ {
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),bitfields.simplifyWhiteSpace());
+ }
+ else if (!init.isEmpty() && initLines==0 && // one line initializer
+ ((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
+ ) // add initializer
+ {
+ if (!isDefine())
{
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),bitfields.simplifyWhiteSpace());
+ ol.writeString(" = ");
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),init.simplifyWhiteSpace());
}
- else if (!init.isEmpty() && initLines==0 && // one line initializer
- ((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
- ) // add initializer
+ else
{
- if (!isDefine())
- {
- ol.writeString(" = ");
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),init.simplifyWhiteSpace());
- }
- else
- {
- ol.writeNonBreakableSpace(3);
- linkifyText(TextGeneratorOLImpl(ol),cname,name(),init);
- }
+ ol.writeNonBreakableSpace(3);
+ linkifyText(TextGeneratorOLImpl(ol),cname,name(),init);
}
+ }
- if (!detailsVisible && !Config_getBool("EXTRACT_ALL") && !annMemb)
- {
- ol.endDoxyAnchor(cfname,anchor());
- }
+ if (!detailsVisible && !annMemb)
+ {
+ ol.endDoxyAnchor(cfname,anchor());
+ }
- ol.endMemberItem((annoClassDef!=0 && indDepth==0) || annEnumType);
-
- //ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
- // write brief description
- if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC") && !annMemb)
+ ol.endMemberItem((annoClassDef!=0 && indDepth==0) || annEnumType);
+
+ //ol.endMemberItem(gId!=-1,gFile,gHeader,annoClassDef || annMemb);
+ // write brief description
+ if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC") && !annMemb)
+ {
+ ol.startMemberDescription();
+ parseDoc(ol,defFileName,defLine,cname,name(),briefDescription());
+ if (detailsVisible)
{
- ol.startMemberDescription();
- parseDoc(ol,defFileName,defLine,cname,name(),briefDescription());
- if (/*!documentation().isEmpty()*/ detailsAreVisible())
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.endEmphasis();
+ ol.docify(" ");
+ if (group!=0 && gd==0) // forward link to the group
{
- ol.pushGeneratorState();
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- if (group!=0 && gd==0) // forward link to the group
- {
- ol.startTextLink(group->getOutputFileBase(),anchor());
- }
- else
- {
- ol.startTextLink(0,anchor());
- }
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.popGeneratorState();
+ ol.startTextLink(group->getOutputFileBase(),anchor());
+ }
+ else
+ {
+ ol.startTextLink(0,anchor());
}
- //ol.newParagraph();
- ol.endMemberDescription();
+ parseText(ol,theTranslator->trMore());
+ ol.endTextLink();
+ ol.startEmphasis();
+ ol.popGeneratorState();
}
+ //ol.newParagraph();
+ ol.endMemberDescription();
}
warnIfUndocumented();
}
+bool MemberDef::isDetailedSectionVisible(bool inGroup) const
+{
+ // the member has details documentation for any of the following reasons
+ bool docFilter =
+ // treat everything as documented
+ Config_getBool("EXTRACT_ALL") ||
+ // has detailed docs
+ !documentation().isEmpty() ||
+ // is an enum with values that are documented
+ (mtype==Enumeration && docEnumValues) ||
+ // is documented enum value
+ (mtype==EnumValue && !briefDescription().isEmpty()) ||
+ // has brief description that is part of the detailed description
+ (!briefDescription().isEmpty() &&
+ (!Config_getBool("BRIEF_MEMBER_DESC") ||
+ Config_getBool("ALWAYS_DETAILED_SEC")) &&
+ Config_getBool("REPEAT_BRIEF"
+ )
+ ) ||
+ // has a multi-line initialization block
+ (initLines>0 && initLines<maxInitLines) ||
+ // has one or more documented arguments
+ (argList!=0 && argList->hasDocumentation());
+
+ // this is not a global static or global statics should be extracted
+ bool staticFilter = getClassDef()!=0 || !isStatic() || Config_getBool("EXTRACT_STATIC");
+
+ // details are not part of a group or this is for a group documentation page
+ bool groupFilter = getGroupDef()==0 || inGroup;
+
+ // member is part of an anonymous scope that is the type of
+ // another member in the list.
+ //
+ bool inAnonymousScope = !briefDescription().isEmpty() && annUsed;
+
+ return ((docFilter && staticFilter) || inAnonymousScope) && groupFilter;
+}
+
/*! Writes the "detailed documentation" section of this member to
* all active output formats.
*/
void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
const char *scName,
- Definition *container
+ Definition *container,
+ bool inGroup
)
{
- // hide global static functions unless extractStaticFlag is enabled
- if (getClassDef()==0 && isStatic() && !Config_getBool("EXTRACT_STATIC")) return;
- // hide member that are documented in their own group
- if (group!=0 && container->definitionType()!=TypeGroup) return;
-
// if this member is in a group find the real scope name.
- QCString scopeName = scName;
- if (container->definitionType()==TypeGroup)
+ bool hasDocs = isDetailedSectionVisible(inGroup);
+ //printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
+ // name().data(),hasDocs,container->definitionType(),inGroup);
+ if ( hasDocs )
{
- if (getClassDef()) scopeName=getClassDef()->name();
- else if (getNamespaceDef()) scopeName=getNamespaceDef()->name();
- else if (getFileDef()) scopeName=getFileDef()->name();
- }
+ QCString scopeName = scName;
+ if (container->definitionType()==TypeGroup)
+ {
+ if (getClassDef()) scopeName=getClassDef()->name();
+ else if (getNamespaceDef()) scopeName=getNamespaceDef()->name();
+ else if (getFileDef()) scopeName=getFileDef()->name();
+ }
- bool hasDocs = detailsAreVisible();
- //printf("MemberDef::writeDocumentation(): type=`%s' def=`%s'\n",type.data(),definition());
- if (
- Config_getBool("EXTRACT_ALL") || hasDocs
- || /* member is part of an anonymous scope that is the type of
- * another member in the list.
- */
- (!hasDocs && !briefDescription().isEmpty() && annUsed)
- )
- {
// get definition.
QCString cname = container->name();
QCString cfname = container->getOutputFileBase();
@@ -939,7 +941,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
if (!found) // anonymous compound
{
- //printf("Annonymous compound `%s'\n",cname.data());
+ //printf("Anonymous compound `%s'\n",cname.data());
ol.startDoxyAnchor(cfname,anchor(),doxyName);
ol.startMemberDoc(cname,name(),anchor(),name());
if (hasHtmlHelp)
@@ -1429,30 +1431,17 @@ bool MemberDef::isLinkable()
return isLinkableInProject() || isReference();
}
-bool MemberDef::detailsAreVisible() const
-{
- return !documentation().isEmpty() || // has detailed docs
- //((Config_getBool("SOURCE_BROWSER") || Config_getBool("INLINE_SOURCES")) && startBodyLine!=-1 && bodyDef) || // has reference to sources
- (mtype==Enumeration && docEnumValues) || // has enum values
- (mtype==EnumValue && !briefDescription().isEmpty()) || // is doc enum value
- (!briefDescription().isEmpty() &&
- (!Config_getBool("BRIEF_MEMBER_DESC") || Config_getBool("ALWAYS_DETAILED_SEC")) &&
- Config_getBool("REPEAT_BRIEF") // has brief description inside detailed area
- ) ||
- (initLines>0 && initLines<maxInitLines) ||
- (argList!=0 && argList->hasDocumentation())
- ;
-}
-
void MemberDef::setEnumDecl(OutputList &ed)
{
enumDeclList=new OutputList(&ed);
*enumDeclList+=ed;
}
-bool MemberDef::hasDocumentation()
+bool MemberDef::hasDocumentation() const
{
- return Definition::hasDocumentation() || (argList!=0 && argList->hasDocumentation());
+ return Definition::hasDocumentation() ||
+ (mtype==Enumeration && docEnumValues) || // has enum values
+ (argList!=0 && argList->hasDocumentation());
}
void MemberDef::setMemberGroup(MemberGroup *grp)
diff --git a/src/memberdef.h b/src/memberdef.h
index ee60338..4eda16b 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -95,6 +95,7 @@ class MemberDef : public Definition
Specifier virtualness() const { return virt; }
MemberType memberType() const { return mtype; }
+
// convenience methods
bool isSignal() const { return mtype==Signal; }
bool isSlot() const { return mtype==Slot; }
@@ -117,8 +118,9 @@ class MemberDef : public Definition
// output info
bool isLinkableInProject();
bool isLinkable();
- bool detailsAreVisible() const;
- bool hasDocumentation(); // overrides hasDocumentation in definition.h
+ bool hasDocumentation() const; // overrides hasDocumentation in definition.h
+ bool isBriefSectionVisible() const;
+ bool isDetailedSectionVisible(bool inGroup=FALSE) const;
// set functions
void setMemberType(MemberType t) { mtype=t; }
@@ -148,7 +150,8 @@ class MemberDef : public Definition
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
bool inGroup);
void writeDocumentation(MemberList *ml,OutputList &ol,
- const char *scopeName,Definition *container);
+ const char *scopeName,Definition *container,
+ bool inGroup);
void warnIfUndocumented();
// relation to other members
@@ -162,8 +165,8 @@ class MemberDef : public Definition
void setEnumScope(MemberDef *md) { enumScope=md; }
MemberDef *getEnumScope() const { return enumScope; }
void setEnumDecl(OutputList &ed);
- void setEnumUsed() { eUsed=TRUE; }
- bool enumUsed() const { return eUsed; }
+ //void setEnumUsed() { eUsed=TRUE; }
+ //bool enumUsed() const { return eUsed; }
OutputList *enumDecl() const { return enumDeclList; }
MemberList *enumFieldList() const { return enumFields; }
void setDocumentedEnumValues(bool value) { docEnumValues=value; }
@@ -202,11 +205,11 @@ class MemberDef : public Definition
void setMemberGroupId(int id) { grpId=id; }
int getMemberGroupId() const { return grpId; }
- // annonymous scope members
- void setFromAnnonymousScope(bool b) { annScope=b; }
- void setFromAnnonymousMember(MemberDef *m) { annMemb=m; }
- bool fromAnnonymousScope() const { return annScope; }
- bool annonymousDeclShown() const { return annUsed; }
+ // anonymous scope members
+ void setFromAnonymousScope(bool b) { annScope=b; }
+ void setFromAnonymousMember(MemberDef *m) { annMemb=m; }
+ bool fromAnonymousScope() const { return annScope; }
+ bool anonymousDeclShown() const { return annUsed; }
void setIndentDepth( int i) { indDepth=i; }
int indentDepth() { return indDepth; }
@@ -214,7 +217,7 @@ class MemberDef : public Definition
QCString getScopeString() const;
- //void generateXML(QTextStream &t,Definition *def);
+ ClassDef *getClassDefOfAnonymousType(const char *scopeName) const;
private:
ClassDef *classDef; // member of or related to
@@ -247,7 +250,7 @@ class MemberDef : public Definition
bool stat; // is it a static function?
int memSpec; // The specifiers present for this member
MemberType mtype; // returns the kind of member
- bool eUsed; // is the enumerate already placed in a list
+ //bool eUsed; // is the enumerate already placed in a list
bool proto; // is it a prototype;
bool docEnumValues; // is an enum with documented enum values.
bool annScope; // member is part of an annoymous scope
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index f96dc06..83e4dd3 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -43,7 +43,7 @@ MemberGroup::MemberGroup(int id,const char *hdr,const char *d) /* : Definition(i
scope = 0;
inSameSection = TRUE;
inDeclSection = 0;
- numDeclMembers = -1;
+ m_numDecMembers = -1;
//printf("Member group docs=`%s'\n",doc.data());
}
@@ -89,15 +89,22 @@ void MemberGroup::setAnchors()
void MemberGroup::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd)
{
- memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,doc,TRUE,TRUE);
+ //printf("MemberGroup::writeDeclarations() memberList->count()=%d\n",memberList->count());
+ memberList->writeDeclarations(ol,cd,nd,fd,gd,grpHeader,doc/*,TRUE,TRUE*/);
}
void MemberGroup::writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup)
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
+ )
{
//printf("MemberGroup::writePlainDeclarations() memberList->count()=%d\n",memberList->count());
- memberList->writePlainDeclarations(ol,cd,nd,fd,gd,inGroup);
+ memberList->writePlainDeclarations(ol,cd,nd,fd,gd);
+}
+
+void MemberGroup::writeDocumentation(OutputList &ol,const char *scopeName,
+ Definition *container)
+{
+ memberList->writeDocumentation(ol,scopeName,container,0);
}
/*! Add this group as a subsection of the declaration section, instead
@@ -111,14 +118,14 @@ void MemberGroup::addToDeclarationSection()
}
}
-int MemberGroup::countDecMembers(bool sectionPerType)
+int MemberGroup::countDecMembers(/*bool sectionPerType*/)
{
- if (numDeclMembers==-1) /* number of member not cached */
+ if (m_numDecMembers==-1) /* number of member not cached */
{
- memberList->countDecMembers(TRUE,TRUE,sectionPerType);
- numDeclMembers = memberList->totalCount();
+ memberList->countDecMembers(/*TRUE,TRUE,sectionPerType*/);
+ m_numDecMembers = memberList->numDecMembers();
}
- return numDeclMembers;
+ return m_numDecMembers;
}
void MemberGroup::distributeMemberGroupDocumentation()
@@ -141,3 +148,58 @@ void MemberGroup::distributeMemberGroupDocumentation()
}
}
}
+
+int MemberGroup::varCount() const
+{
+ return memberList->varCount();
+}
+
+int MemberGroup::funcCount() const
+{
+ return memberList->funcCount();
+}
+
+int MemberGroup::enumCount() const
+{
+ return memberList->enumCount();
+}
+
+int MemberGroup::enumValueCount() const
+{
+ return memberList->enumValueCount();
+}
+
+int MemberGroup::typedefCount() const
+{
+ return memberList->typedefCount();
+}
+
+int MemberGroup::protoCount() const
+{
+ return memberList->protoCount();
+}
+
+int MemberGroup::defineCount() const
+{
+ return memberList->defineCount();
+}
+
+int MemberGroup::friendCount() const
+{
+ return memberList->friendCount();
+}
+
+int MemberGroup::numDecMembers() const
+{
+ return memberList->numDecMembers();
+}
+
+int MemberGroup::numDocMembers() const
+{
+ return memberList->numDocMembers();
+}
+
+void MemberGroup::setInGroup(bool b)
+{
+ memberList->setInGroup(b);
+}
diff --git a/src/membergroup.h b/src/membergroup.h
index 8ddcb66..833350e 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -43,15 +43,28 @@ class MemberGroup /* : public Definition */
void insertMember(MemberDef *);
void setAnchors();
void writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup=TRUE);
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
+
+ void writeDocumentation(OutputList &ol,const char *scopeName,
+ Definition *container);
QCString documentation() { return doc; }
bool allMembersInSameSection() { return inSameSection; }
void addToDeclarationSection();
- int countDecMembers(bool sectionPerType);
+ int countDecMembers(/*bool sectionPerType*/);
void distributeMemberGroupDocumentation();
+ int varCount() const;
+ int funcCount() const;
+ int enumCount() const;
+ int enumValueCount() const;
+ int typedefCount() const;
+ int protoCount() const;
+ int defineCount() const;
+ int friendCount() const;
+ int numDecMembers() const;
+ int numDocMembers() const;
+ void setInGroup(bool b);
private:
MemberList *memberList; // list of all members in the group
@@ -62,7 +75,7 @@ class MemberGroup /* : public Definition */
QCString doc;
MemberList *inDeclSection;
bool inSameSection;
- int numDeclMembers;
+ int m_numDecMembers;
};
class MemberGroupList : public QList<MemberGroup>
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index d6d05e2..404c5a0 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -30,6 +30,9 @@
MemberList::MemberList() : QList<MemberDef>()
{
memberGroupList=0;
+ m_numDecMembers=-1; // special value indicating that computation is needed
+ m_numDocMembers=-1; // special value indicating that computation is needed
+ m_inGroup=FALSE;
}
MemberList::~MemberList()
@@ -44,96 +47,98 @@ int MemberList::compareItems(GCI item1, GCI item2)
return strcmp(c1->name(),c2->name());
}
-void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPerType)
+/*! Count the number of members in this list that are visible in
+ * the declaration part of a compound's documentation page.
+ */
+void MemberList::countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/)
{
- //printf("----- countDecMembers ----\n");
- varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;
- m_count=0;
- MemberDef *md=first();
- while (md)
+ if (m_numDecMembers!=-1) return;
+
+ //printf("----- countDecMembers count=%d ----\n",count());
+ m_varCnt=m_funcCnt=m_enumCnt=m_enumValCnt=0;
+ m_typeCnt=m_protoCnt=m_defCnt=m_friendCnt=0;
+ m_numDecMembers=0;
+ QListIterator<MemberDef> mli(*this);
+ MemberDef *md;
+ for (mli.toFirst();(md=mli.current());++mli)
{
- //printf("md=%p md->name()=`%s' inGroup=%d getMemberGroup()=%p\n",
- // md,md->name().data(),inGroup,md->getMemberGroup());
- if (!(md->getClassDef()==0 && md->isStatic() && !Config_getBool("EXTRACT_STATIC")) &&
- (!Config_getBool("HIDE_UNDOC_MEMBERS") || md->hasDocumentation()) &&
- (
- (!Config_getBool("HIDE_UNDOC_MEMBERS") || !md->documentation().isEmpty() ||
- Config_getBool("BRIEF_MEMBER_DESC") || Config_getBool("REPEAT_BRIEF")
- ) || Config_getBool("EXTRACT_ALL") ||
- (md->isEnumerate() &&
- md->hasDocumentedEnumValues()
- )
- ) &&
- inGroup==md->visibleMemberGroup(sectionPerType) &&
- !(inGroup && md->protection()==Private && !Config_getBool("EXTRACT_PRIVATE"))
- )
+ if (md->isBriefSectionVisible())
{
switch(md->memberType())
{
case MemberDef::Variable: // fall through
- case MemberDef::Property: varCnt++,m_count++;
+ case MemberDef::Property: m_varCnt++,m_numDecMembers++;
break;
case MemberDef::Function: // fall through
case MemberDef::Signal: // fall through
case MemberDef::DCOP: // fall through
case MemberDef::Slot: if (!md->isRelated() || md->getClassDef())
- funcCnt++,m_count++;
+ m_funcCnt++,m_numDecMembers++;
break;
- case MemberDef::Enumeration: enumCnt++,m_count++; break;
- case MemberDef::EnumValue: enumValCnt++,m_count++; break;
- case MemberDef::Typedef: typeCnt++,m_count++; break;
- case MemberDef::Prototype: protoCnt++,m_count++; break;
+ case MemberDef::Enumeration: m_enumCnt++,m_numDecMembers++; break;
+ case MemberDef::EnumValue: m_enumValCnt++,m_numDecMembers++; break;
+ case MemberDef::Typedef: m_typeCnt++,m_numDecMembers++; break;
+ case MemberDef::Prototype: m_protoCnt++,m_numDecMembers++; break;
case MemberDef::Define: if (Config_getBool("EXTRACT_ALL") ||
md->argsString() ||
!md->initializer().isEmpty() ||
md->hasDocumentation()
- ) defCnt++,m_count++;
+ ) m_defCnt++,m_numDecMembers++;
break;
- case MemberDef::Friend: friendCnt++,m_count++; break;
+ case MemberDef::Friend: m_friendCnt++,m_numDecMembers++; break;
default:
- err("Error: Unknown member type found!");
+ err("Error: Unknown member type found for member `%s'\n!",md->name().data());
}
}
- md=next();
}
- if (memberGroupList && countSubGroups)
+ if (memberGroupList /*&& countSubGroups*/)
{
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
- int mgCount = mg->countDecMembers(sectionPerType);
- //printf("memberGroupList adding %d inGroup=%d\n",mgCount,inGroup);
- m_count+=mgCount;
+ mg->countDecMembers();
+ m_varCnt+=mg->varCount();
+ m_funcCnt+=mg->funcCount();
+ m_enumCnt+=mg->enumCount();
+ m_enumValCnt+=mg->enumValueCount();
+ m_typeCnt+=mg->typedefCount();
+ m_protoCnt+=mg->protoCount();
+ m_defCnt+=mg->defineCount();
+ m_friendCnt+=mg->friendCount();
+ m_numDecMembers+=mg->numDecMembers();
}
}
//printf("----- end countDecMembers ----\n");
- //printf("MemberList::countDecMembers(%d)=%d\n",inGroup,m_count);
+ //printf("MemberList::countDecMembers()=%d\n",m_numDecMembers);
}
-void MemberList::countDocMembers(bool listOfGroup)
+void MemberList::countDocMembers()
{
- /*varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;*/
- m_count=0;
- MemberDef *md=first();
- while (md)
+ if (m_numDocMembers!=-1) return; // used cached value
+ m_numDocMembers=0;
+ QListIterator<MemberDef> mli(*this);
+ MemberDef *md;
+ for (mli.toFirst();(md=mli.current());++mli)
{
- //printf("%s MemberList::countDocMembers() details=%d\n",
- // md->name().data(),md->detailsAreVisible());
- bool visibleIfStatic =
- !(md->getClassDef()==0 && md->isStatic() && !Config_getBool("EXTRACT_STATIC"));
-
- bool inOwnGroup = (md->getGroupDef()!=0 && !listOfGroup);
-
- if (visibleIfStatic && !inOwnGroup &&
- (Config_getBool("EXTRACT_ALL") || md->detailsAreVisible())
- )
+ if (md->isDetailedSectionVisible(m_inGroup))
+ {
+ // do not count enum values, since they do not produce entries of their own
+ if (md->memberType()!=MemberDef::EnumValue) m_numDocMembers++;
+ }
+ }
+ if (memberGroupList)
+ {
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
{
- if (md->memberType()!=MemberDef::EnumValue) m_count++;
+ mg->countDecMembers();
+ m_numDocMembers+=mg->numDocMembers();
}
- md=next();
}
+ //printf("MemberList::countDocMembers()=%d memberGroupList=%p\n",m_numDocMembers,memberGroupList);
}
bool MemberList::insert(uint index,const MemberDef *md)
@@ -157,183 +162,88 @@ MemberListIterator::MemberListIterator(const QList<MemberDef> &l) :
}
void MemberList::writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup,bool countSubGroups
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
)
{
- bool sectionPerType = !inGroup && (fd || nd || gd);
//printf("----- writePlainDeclaration() ----\n");
- countDecMembers(inGroup,countSubGroups,sectionPerType);
- if (totalCount()==0) return; // no members in this list
+ countDecMembers(/*inGroup,countSubGroups,sectionPerType*/);
+ if (numDecMembers()==0) return; // no members in this list
//printf("----> writePlainDeclaration() inGroup=%d totalCount()=%d\n",inGroup,totalCount());
ol.pushGeneratorState();
- //int prevGroupId = -1;
- if (!sectionPerType) ol.startMemberList();
+ ol.startMemberList();
MemberDef *md;
-
- if (defineCount()>0)
- {
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trDefines());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()); ++mli )
- {
- //printf("md->isDefined()=%d inGroup=%d md->getMemberGroup()=%p\n",
- // md->isDefine(),inGroup,md->getMemberGroup());
- if (md->isDefine() &&
- (md->argsString() || md->hasDocumentation() ||
- !md->initializer().isEmpty() ||
- Config_getBool("EXTRACT_ALL")) &&
- inGroup==md->visibleMemberGroup(sectionPerType)
- )
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType)
- {
- ol.endMemberList();
- }
- }
-
- if (protoCount()>0)
- {
- //printf("There are %d prototypes\n",protoCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trFuncProtos());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()); ++mli )
- {
- if (md->isPrototype() && inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType)
- {
- ol.endMemberList();
- }
- }
-
- if (typedefCount()>0)
- {
- //printf("There are %d typedefs\n",typedefCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trTypedefs());
- ol.endMemberHeader();
- //ol.writeMemberHeader("Typedefs");
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (md->isTypedef() && inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- // write enums
- if (enumCount()>0)
+ MemberListIterator mli(*this);
+ for ( ; (md=mli.current()); ++mli )
{
- //printf("There are %d enums\n",enumCount());
- if (sectionPerType)
+ //printf(">>> Member `%s' type=%d\n",md->name().data(),md->memberType());
+ switch(md->memberType())
{
- ol.startMemberHeader();
- parseText(ol,theTranslator->trEnumerations());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli ) // iterate through the members
- {
- // see if member is hidden by protection
- if (md->protection()==Private && !Config_getBool("EXTRACT_PRIVATE")) continue;
-
- QCString type=md->typeString();
- type=type.stripWhiteSpace(); // TODO: is this really needed?
-
- // filter out enums that are in a group iff inGroup holds
- if (md->isEnumerate() && inGroup==md->visibleMemberGroup(sectionPerType) /*&& (hasDocs || !Config_getBool("HIDE_UNDOC_MEMBERS"))*/)
+ case MemberDef::Define: // fall through
+ case MemberDef::Prototype: // fall through
+ case MemberDef::Typedef: // fall through
+ case MemberDef::Variable: // fall through
+ case MemberDef::Function: // fall through
+ case MemberDef::Signal: // fall through
+ case MemberDef::Slot: // fall through
+ case MemberDef::DCOP: // fall through
+ case MemberDef::Property:
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
+ break;
+ case MemberDef::Enumeration:
{
- // filter out invisible enums
- if ( !Config_getBool("HIDE_UNDOC_MEMBERS") || // do not hide undocumented members or
- !md->documentation().isEmpty() || // member has detailed descr. or
- md->hasDocumentedEnumValues() || // member has documented enum vales.
- (
- !md->briefDescription().isEmpty() &&
- Config_getBool("BRIEF_MEMBER_DESC") // brief descr. is shown or
- )
- )
+ OutputList typeDecl(&ol);
+ QCString name(md->name());
+ int i=name.findRev("::");
+ if (i!=-1) name=name.right(name.length()-i-2); // strip scope (TODO: is this needed?)
+ if (name[0]!='@') // not an anonymous enum
{
- OutputList typeDecl(&ol);
- QCString name=md->name().copy();
- int i=name.findRev("::");
- if (i!=-1) name=name.right(name.length()-i-2); // strip scope
- if (name[0]!='@') // not an anonymous enum
+ if (md->isLinkableInProject() || md->hasDocumentedEnumValues())
{
- if (md->isLinkableInProject() || md->hasDocumentedEnumValues())
- {
- if (!Config_getString("GENERATE_TAGFILE").isEmpty())
- {
- Doxygen::tagFile << " <member kind=\"enumeration\">" << endl;
- Doxygen::tagFile << " <name>" << convertToXML(md->name()) << "</name>" << endl;
- Doxygen::tagFile << " <anchor>" << convertToXML(md->anchor()) << "</anchor>" << endl;
- Doxygen::tagFile << " <arglist>" << convertToXML(md->argsString()) << "</arglist>" << endl;
- Doxygen::tagFile << " </member>" << endl;
- }
- md->writeLink(typeDecl,cd,nd,fd,gd);
- }
- else
+ if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
- typeDecl.startBold();
- typeDecl.docify(name);
- typeDecl.endBold();
+ Doxygen::tagFile << " <member kind=\"enumeration\">" << endl;
+ Doxygen::tagFile << " <name>" << convertToXML(md->name()) << "</name>" << endl;
+ Doxygen::tagFile << " <anchor>" << convertToXML(md->anchor()) << "</anchor>" << endl;
+ Doxygen::tagFile << " <arglist>" << convertToXML(md->argsString()) << "</arglist>" << endl;
+ Doxygen::tagFile << " </member>" << endl;
}
- typeDecl.writeChar(' ');
+ md->writeLink(typeDecl,cd,nd,fd,gd);
+ }
+ else
+ {
+ typeDecl.startBold();
+ typeDecl.docify(name);
+ typeDecl.endBold();
}
+ typeDecl.writeChar(' ');
+ }
+
+ int enumMemCount=0;
- int enumMemCount=0;
-
- uint enumValuesPerLine =
- (uint)Config_getInt("ENUM_VALUES_PER_LINE");
- typeDecl.docify("{ ");
- QList<MemberDef> *fmdl=md->enumFieldList();
- if (fmdl)
+ uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE");
+ typeDecl.docify("{ ");
+ QList<MemberDef> *fmdl=md->enumFieldList();
+ if (fmdl)
+ {
+ MemberDef *fmd=fmdl->first();
+ while (fmd)
{
- MemberDef *fmd=fmdl->first();
- while (fmd)
+ /* in html we start a new line after a number of items */
+ if (fmdl->count()>enumValuesPerLine
+ && (enumMemCount%enumValuesPerLine)==0
+ )
{
- /* in html we start a new line after a number of items */
- if (fmdl->count()>enumValuesPerLine
- && (enumMemCount%enumValuesPerLine)==0
- )
- {
- typeDecl.pushGeneratorState();
- typeDecl.disableAllBut(OutputGenerator::Html);
- typeDecl.lineBreak();
- typeDecl.writeString("&nbsp;&nbsp;");
- typeDecl.popGeneratorState();
- }
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.writeString("&nbsp;&nbsp;");
+ typeDecl.popGeneratorState();
+ }
- if (fmd->hasDocumentation()) // enum value has docs
- {
+ if (fmd->hasDocumentation()) // enum value has docs
+ {
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
Doxygen::tagFile << " <member kind=\"enumvalue\">" << endl;
@@ -342,130 +252,95 @@ void MemberList::writePlainDeclarations(OutputList &ol,
Doxygen::tagFile << " <arglist>" << convertToXML(fmd->argsString()) << "</arglist>" << endl;
Doxygen::tagFile << " </member>" << endl;
}
- fmd->writeLink(typeDecl,cd,nd,fd,gd);
- }
- else // no docs for this enum value
- {
- typeDecl.startBold();
- typeDecl.docify(fmd->name());
- typeDecl.endBold();
- }
- if (!fmd->initializer().isEmpty()) // enum value has initializer
- {
- typeDecl.writeString(" = ");
- parseText(typeDecl,fmd->initializer());
- }
-
- fmd=fmdl->next();
- if (fmd) typeDecl.writeString(", ");
- typeDecl.disable(OutputGenerator::Man);
- typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
- typeDecl.enable(OutputGenerator::Man);
- enumMemCount++;
+ fmd->writeLink(typeDecl,cd,nd,fd,gd);
}
- if (fmdl->count()>enumValuesPerLine)
+ else // no docs for this enum value
{
- typeDecl.pushGeneratorState();
- typeDecl.disableAllBut(OutputGenerator::Html);
- typeDecl.lineBreak();
- typeDecl.popGeneratorState();
+ typeDecl.startBold();
+ typeDecl.docify(fmd->name());
+ typeDecl.endBold();
}
+ if (!fmd->initializer().isEmpty()) // enum value has initializer
+ {
+ typeDecl.writeString(" = ");
+ parseText(typeDecl,fmd->initializer());
+ }
+
+ fmd=fmdl->next();
+ if (fmd) typeDecl.writeString(", ");
+ typeDecl.disable(OutputGenerator::Man);
+ typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
+ typeDecl.enable(OutputGenerator::Man);
+ enumMemCount++;
+ }
+ if (fmdl->count()>enumValuesPerLine)
+ {
+ typeDecl.pushGeneratorState();
+ typeDecl.disableAllBut(OutputGenerator::Html);
+ typeDecl.lineBreak();
+ typeDecl.popGeneratorState();
}
- typeDecl.docify(" }");
- md->setEnumDecl(typeDecl);
- int enumVars=0;
- MemberListIterator vmli(*this);
- MemberDef *vmd;
- if (name[0]=='@') // anonymous enum => append variables
+ }
+ typeDecl.docify(" }");
+ md->setEnumDecl(typeDecl);
+ int enumVars=0;
+ MemberListIterator vmli(*this);
+ MemberDef *vmd;
+ if (name[0]=='@') // anonymous enum => append variables
+ {
+ for ( ; (vmd=vmli.current()) ; ++vmli)
{
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ QCString vtype=vmd->typeString();
+ if ((vtype.find(name))!=-1)
{
- QCString vtype=vmd->typeString();
- if ((vtype.find(name))!=-1)
- {
- enumVars++;
- vmd->setAnonymousEnumType(md);
- }
+ enumVars++;
+ vmd->setAnonymousEnumType(md);
}
}
- // if this is an annoymous enum and there are variable of this
- // enum type (i.e. enumVars>0), then we do not show the enum here.
- if (enumVars==0) // show enum here
+ }
+ // if this is an anoymous enum and there are variable of this
+ // enum type (i.e. enumVars>0), then we do not show the enum here.
+ if (enumVars==0) // show enum here
+ {
+ ol.startMemberItem(0);
+ ol.writeString("enum ");
+ ol.insertMemberAlign();
+ ol+=typeDecl; // append the enum values.
+ ol.endMemberItem(FALSE);
+ if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
{
- ol.startMemberItem(0);
- ol.writeString("enum ");
- ol.insertMemberAlign();
- ol+=typeDecl; // append the enum values.
- ol.endMemberItem(FALSE);
- if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
+ ol.startMemberDescription();
+ parseDoc(ol,
+ md->getDefFileName(),md->getDefLine(),
+ cd?cd->name().data():0,md->name().data(),
+ md->briefDescription()
+ );
+ if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
{
- ol.startMemberDescription();
- parseDoc(ol,
- md->getDefFileName(),md->getDefLine(),
- cd?cd->name().data():0,md->name().data(),
- md->briefDescription()
- );
- if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
- {
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- ol.startTextLink(0,md->anchor());
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.enableAll();
- }
- ol.endMemberDescription();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.endEmphasis();
+ ol.docify(" ");
+ ol.startTextLink(0,md->anchor());
+ parseText(ol,theTranslator->trMore());
+ ol.endTextLink();
+ ol.startEmphasis();
+ ol.enableAll();
}
+ ol.endMemberDescription();
}
- md->warnIfUndocumented();
}
- } // md->isEnumerate()
- } // enum loop
- if (sectionPerType) ol.endMemberList();
- } // write enums
-
- // write functions
- if (funcCount()>0)
- {
- //printf("There are %d functions\n",funcCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trFunctions());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (
- ( md->isFunction() || md->isSignal() || md->isSlot() || md->isDCOP()) &&
- ( !md->isRelated() || md->getClassDef() ) &&
- inGroup==md->visibleMemberGroup(sectionPerType)
- )
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
+ md->warnIfUndocumented();
+ break;
}
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- if (friendCount()>0)
- {
- //printf("There are %d friends\n",friendCount());
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if (md->isFriend() && inGroup==md->visibleMemberGroup(sectionPerType))
+ case MemberDef::Friend:
{
+ //printf("Writing friend `%s'\n",md->name().data());
QCString type=md->typeString();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
bool isFriendClass = type=="friend class";
if (!isFriendClass)
{
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
}
else // isFriendClass
// friend is undocumented as a member but it is a class,
@@ -499,52 +374,31 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.endMemberItem(FALSE);
}
}
+ break;
}
+ case MemberDef::EnumValue:
+ break;
}
}
- // write variables
- if (varCount()>0)
- {
- //printf("There are %d variables\n",varCount());
- if (sectionPerType)
- {
- ol.startMemberHeader();
- parseText(ol,theTranslator->trVariables());
- ol.endMemberHeader();
- ol.startMemberList();
- }
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
- {
- if ((md->isVariable() || md->isProperty()) &&
- inGroup==md->visibleMemberGroup(sectionPerType))
- {
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- }
- }
- if (sectionPerType) ol.endMemberList();
- }
-
- // handle members that are inside annonymous compounds and for which
- // no variables of the annonymous compound type exist.
+ // handle members that are inside anonymous compounds and for which
+ // no variables of the anonymous compound type exist.
if (cd)
{
MemberListIterator mli(*this);
for ( ; (md=mli.current()) ; ++mli )
{
- if (md->fromAnnonymousScope() && !md->annonymousDeclShown()
- && inGroup==md->visibleMemberGroup(sectionPerType))
+ if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{
- //printf("annonymous compound members\n");
- md->setFromAnnonymousScope(FALSE);
- md->writeDeclaration(ol,cd,nd,fd,gd,inGroup);
- md->setFromAnnonymousScope(TRUE);
+ //printf("anonymous compound members\n");
+ md->setFromAnonymousScope(FALSE);
+ md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
+ md->setFromAnonymousScope(TRUE);
}
}
}
- if (!sectionPerType) { ol.endMemberList(); /*ol.writeChar('\n');*/ }
+ ol.endMemberList();
ol.popGeneratorState();
//printf("----- end writePlainDeclaration() ----\n");
@@ -552,24 +406,13 @@ void MemberList::writePlainDeclarations(OutputList &ol,
void MemberList::writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- const char *title,const char *subtitle,
- bool inGroup,bool countSubGroups)
+ const char *title,const char *subtitle
+ /*, bool inGroup,bool countSubGroups*/)
{
//printf("MemberList::writeDeclaration(title=`%s',subtitle=`%s')\n",title,subtitle);
//printf("----- writeDeclaration() ----\n");
- bool sectionPerType = !inGroup && (fd || nd || gd);
- countDecMembers(FALSE,countSubGroups,sectionPerType); // count member not in group
- int normalMembers = totalCount();
- int ingroupMembers = 0;
- //printf("Normal members %d\n",normalMembers);
- if (inGroup)
- {
- countDecMembers(TRUE,countSubGroups,sectionPerType); // count member inside group
- ingroupMembers = totalCount();
- }
- int totalMembers = normalMembers + ingroupMembers;
- //printf("Total members %d\n",totalMembers);
- if (totalMembers==0) return;
+ countDecMembers(); // count member not in group
+ if (numDecMembers()==0) return;
if (title)
{
ol.startMemberHeader();
@@ -580,15 +423,16 @@ void MemberList::writeDeclarations(OutputList &ol,
{
//printf("subtitle=`%s'\n",subtitle);
ol.startMemberSubtitle();
- if (inGroup)
+ if (m_inGroup)
parseDoc(ol,"<generated>",1,0,0,subtitle);
else
parseText(ol,subtitle);
ol.endMemberSubtitle();
}
- writePlainDeclarations(ol,cd,nd,fd,gd,inGroup,FALSE);
+ writePlainDeclarations(ol,cd,nd,fd,gd);
+ //printf("memberGroupList=%p\n",memberGroupList);
if (memberGroupList)
{
MemberGroupListIterator mgli(*memberGroupList);
@@ -611,8 +455,8 @@ void MemberList::writeDeclarations(OutputList &ol,
}
ol.startMemberGroup();
mg->writePlainDeclarations(ol,cd,nd,fd,gd);
- ++mgli;
ol.endMemberGroup(hasHeader);
+ ++mgli;
}
}
//printf("----- end writeDeclaration() ----\n");
@@ -620,13 +464,37 @@ void MemberList::writeDeclarations(OutputList &ol,
}
void MemberList::writeDocumentation(OutputList &ol,
- const char *scopeName, Definition *container)
+ const char *scopeName, Definition *container,
+ const char *title)
{
+ //printf("MemberList::writeDocumentation()\n");
+
+ countDocMembers();
+ if (numDocMembers()==0) return;
+
+ if (title)
+ {
+ ol.writeRuler();
+ ol.startGroupHeader();
+ parseText(ol,title);
+ ol.endGroupHeader();
+ }
+
MemberListIterator mli(*this);
MemberDef *md;
for ( ; (md=mli.current()) ; ++mli)
{
- md->writeDocumentation(this,ol,scopeName,container);
+ md->writeDocumentation(this,ol,scopeName,container,m_inGroup);
+ }
+ if (memberGroupList)
+ {
+ //printf("MemberList::writeDocumentation() -- member groups\n");
+ MemberGroupListIterator mgli(*memberGroupList);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ mg->writeDocumentation(ol,scopeName,container);
+ }
}
}
diff --git a/src/memberlist.h b/src/memberlist.h
index 417abfd..9b8410f 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -33,36 +33,35 @@ class MemberList : public QList<MemberDef>
void inSort(const MemberDef *md);
void append(const MemberDef *md);
int compareItems(GCI item1,GCI item2);
- int varCount() const { return varCnt; }
- int funcCount() const { return funcCnt; }
- int enumCount() const { return enumCnt; }
- int enumValueCount() const { return enumValCnt; }
- int typedefCount() const { return typeCnt; }
- int protoCount() const { return protoCnt; }
- int defineCount() const { return defCnt; }
- int friendCount() const { return friendCnt; }
- void countDecMembers(bool inGroup,bool countSubGroups,bool sectionPerType);
- void countDocMembers(bool listOfGroup=FALSE);
- int totalCount() const
- { return //varCnt+funcCnt+enumCnt+enumValCnt+typeCnt+
- //protoCnt+defCnt+friendCnt;
- m_count;
- }
+ int varCount() const { ASSERT(m_numDecMembers!=-1); return m_varCnt; }
+ int funcCount() const { ASSERT(m_numDecMembers!=-1); return m_funcCnt; }
+ int enumCount() const { ASSERT(m_numDecMembers!=-1); return m_enumCnt; }
+ int enumValueCount() const { ASSERT(m_numDecMembers!=-1); return m_enumValCnt; }
+ int typedefCount() const { ASSERT(m_numDecMembers!=-1); return m_typeCnt; }
+ int protoCount() const { ASSERT(m_numDecMembers!=-1); return m_protoCnt; }
+ int defineCount() const { ASSERT(m_numDecMembers!=-1); return m_defCnt; }
+ int friendCount() const { ASSERT(m_numDecMembers!=-1); return m_friendCnt; }
+ int numDecMembers() const { ASSERT(m_numDecMembers!=-1); return m_numDecMembers; }
+ int numDocMembers() const { ASSERT(m_numDocMembers!=-1); return m_numDocMembers; }
+ void countDecMembers(/*bool inGroup,bool countSubGroups,bool sectionPerType*/);
+ void countDocMembers();
void writePlainDeclarations(OutputList &ol,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup=FALSE,bool countSubGroups=TRUE);
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- const char *title,const char *subtitle,
- bool inGroup=FALSE,bool countSubGroups=TRUE);
+ const char *title,const char *subtitle);
void writeDocumentation(OutputList &ol,const char *scopeName,
- Definition *container);
+ Definition *container,const char *title);
void addMemberGroup(MemberGroup *mg);
+ void setInGroup(bool group) { m_inGroup=group; }
private:
- int varCnt,funcCnt,enumCnt,enumValCnt,typeCnt,protoCnt,defCnt,friendCnt;
- int m_count;
+ int m_varCnt,m_funcCnt,m_enumCnt,m_enumValCnt,m_typeCnt;
+ int m_protoCnt,m_defCnt,m_friendCnt;
+ int m_numDecMembers; // number of members in the brief part of the memberlist
+ int m_numDocMembers; // number of members in the detailed part of the memberlist
MemberGroupList *memberGroupList;
+ bool m_inGroup; // is this list part of a group
};
class MemberListIterator : public QListIterator<MemberDef>
diff --git a/src/message.cpp b/src/message.cpp
index 5c9e783..285f1c3 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -85,6 +85,10 @@ void initWarningFormat()
{
warnFile = fopen(Config_getString("WARN_LOGFILE"),"w");
}
+ if (!warnFile) // point it to something valid, because warn() relies on it
+ {
+ warnFile = stderr;
+ }
}
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index b214de6..efcd10f 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -87,6 +87,7 @@ void NamespaceDef::insertClass(ClassDef *cd)
}
}
+#if 0
void NamespaceDef::addMemberListToGroup(MemberList *ml,
bool (MemberDef::*func)() const)
{
@@ -114,14 +115,16 @@ void NamespaceDef::addMemberListToGroup(MemberList *ml,
}
}
}
+#endif
void NamespaceDef::addMembersToMemberGroup()
{
- addMemberListToGroup(&allMemberList,&MemberDef::isTypedef);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumerate);
- addMemberListToGroup(&allMemberList,&MemberDef::isEnumValue);
- addMemberListToGroup(&allMemberList,&MemberDef::isFunction);
- addMemberListToGroup(&allMemberList,&MemberDef::isVariable);
+ ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);
+ ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);
}
void NamespaceDef::insertMember(MemberDef *md)
@@ -131,49 +134,55 @@ void NamespaceDef::insertMember(MemberDef *md)
switch(md->memberType())
{
case MemberDef::Variable:
+ decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- varMembers.inSort(md);
+ docVarMembers.inSort(md);
else
- varMembers.append(md);
+ docVarMembers.append(md);
break;
case MemberDef::Function:
+ decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- funcMembers.inSort(md);
+ docFuncMembers.inSort(md);
else
- funcMembers.append(md);
+ docFuncMembers.append(md);
break;
case MemberDef::Typedef:
+ decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- typedefMembers.inSort(md);
+ docTypedefMembers.inSort(md);
else
- typedefMembers.append(md);
+ docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
+ decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- enumMembers.inSort(md);
+ docEnumMembers.inSort(md);
else
- enumMembers.append(md);
+ docEnumMembers.append(md);
break;
case MemberDef::EnumValue:
- if (Config_getBool("SORT_MEMBER_DOCS"))
- enumValMembers.inSort(md);
- else
- enumValMembers.append(md);
break;
case MemberDef::Prototype:
+ decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- protoMembers.inSort(md);
+ docProtoMembers.inSort(md);
else
- protoMembers.append(md);
+ docProtoMembers.append(md);
break;
case MemberDef::Define:
+ decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
- defineMembers.inSort(md);
+ docDefineMembers.inSort(md);
else
- defineMembers.append(md);
+ docDefineMembers.append(md);
break;
default:
- err("NamespaceDef::insertMembers(): unexpected member inserted in namespace!\n");
+ err("NamespaceDef::insertMembers(): "
+ "member `%s' with class scope `%s' inserted in namespace scope `%s'!\n",
+ md->name().data(),
+ md->getClassDef() ? md->getClassDef()->name().data() : "",
+ name().data());
}
//addMemberToGroup(md,groupId);
}
@@ -238,7 +247,14 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
mg->writeDeclarations(ol,0,this,0,0);
}
- allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
+
+ //allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
+ decDefineMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trDefines(),0);
+ decProtoMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFuncProtos(),0);
+ decTypedefMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trTypedefs(),0);
+ decEnumMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trEnumerations(),0);
+ decFuncMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFunctions(),0);
+ decVarMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trVariables(),0);
ol.endMemberSections();
if ((!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||
@@ -273,76 +289,23 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol.endTextBlock();
}
- //memList->countDocMembers();
- defineMembers.countDocMembers();
- if ( defineMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trDefineDocumentation());
- ol.endGroupHeader();
- defineMembers.writeDocumentation(ol,name(),this);
- }
+ docDefineMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trDefineDocumentation());
- protoMembers.countDocMembers();
- if ( protoMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionPrototypeDocumentation());
- ol.endGroupHeader();
- protoMembers.writeDocumentation(ol,name(),this);
- }
+ docProtoMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionPrototypeDocumentation());
- typedefMembers.countDocMembers();
- if ( typedefMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trTypedefDocumentation());
- ol.endGroupHeader();
- typedefMembers.writeDocumentation(ol,name(),this);
- }
+ docTypedefMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trTypedefDocumentation());
- enumMembers.countDocMembers();
- if ( enumMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trEnumerationTypeDocumentation());
- ol.endGroupHeader();
- enumMembers.writeDocumentation(ol,name(),this);
- }
+ docEnumMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trEnumerationTypeDocumentation());
- //enumValMembers.countDocMembers();
- //if ( enumValMembers.totalCount()>0 )
- //{
- // ol.writeRuler();
- // ol.startGroupHeader();
- // parseText(ol,theTranslator->trEnumerationValueDocumentation());
- // ol.endGroupHeader();
- // enumValMembers.writeDocumentation(ol,name());
- //}
-
- funcMembers.countDocMembers();
- if ( funcMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trFunctionDocumentation());
- ol.endGroupHeader();
- funcMembers.writeDocumentation(ol,name(),this);
- }
+ docFuncMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trFunctionDocumentation());
- varMembers.countDocMembers();
- if ( varMembers.totalCount()>0 )
- {
- ol.writeRuler();
- ol.startGroupHeader();
- parseText(ol,theTranslator->trVariableDocumentation());
- ol.endGroupHeader();
- varMembers.writeDocumentation(ol,name(),this);
- }
+ docVarMembers.writeDocumentation(ol,name(),this,
+ theTranslator->trVariableDocumentation());
// write Author section (Man only)
ol.pushGeneratorState();
@@ -365,7 +328,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
int NamespaceDef::countMembers()
{
allMemberList.countDocMembers();
- return allMemberList.totalCount()+classList->count();
+ return allMemberList.numDocMembers()+classList->count();
}
void NamespaceDef::addUsingDirective(NamespaceDef *nd)
diff --git a/src/namespacedef.h b/src/namespacedef.h
index 0e1d089..08a8701 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -66,8 +66,8 @@ class NamespaceDef : public Definition
void addMembersToMemberGroup();
void distributeMemberGroupDocumentation();
- protected:
- void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
+ //protected:
+ // void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
//QCString reference;
@@ -79,13 +79,23 @@ class NamespaceDef : public Definition
ClassList *usingDeclList;
MemberList allMemberList;
- MemberList defineMembers;
- MemberList protoMembers;
- MemberList typedefMembers;
- MemberList enumMembers;
- MemberList enumValMembers;
- MemberList funcMembers;
- MemberList varMembers;
+
+ // members in the declaration part of the documentation
+ MemberList decDefineMembers;
+ MemberList decProtoMembers;
+ MemberList decTypedefMembers;
+ MemberList decEnumMembers;
+ MemberList decFuncMembers;
+ MemberList decVarMembers;
+
+ // members in the documentation part of the documentation
+ MemberList docAllMemberList;
+ MemberList docDefineMembers;
+ MemberList docProtoMembers;
+ MemberList docTypedefMembers;
+ MemberList docEnumMembers;
+ MemberList docFuncMembers;
+ MemberList docVarMembers;
/* user defined member groups */
MemberGroupList *memberGroupList;
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 82f3396..be3b676 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -742,13 +742,17 @@ void RTFGenerator::beginRTFDocument()
/* all the included RTF files should begin with the
* same header
*/
- t <<"{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang1033\\deflangfe1033\n";
+ t <<"{\\rtf1\\ansi\\ansicpg" << theTranslator->trRTFansicp();
+ t <<"\\uc1 \\deff0\\deflang1033\\deflangfe1033\n";
DBG_RTF(t <<"{\\comment Begining font list}\n")
t <<"{\\fonttbl ";
- t <<"{\\f0\\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n";
- t <<"{\\f1\\fswiss\\fcharset0\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n";
- t <<"{\\f2\\fmodern\\fcharset0\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n";
+ t <<"{\\f0\\froman\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\n";
+ t <<"{\\f1\\fswiss\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq2{\\*\\panose 020b0604020202020204}Arial;}\n";
+ t <<"{\\f2\\fmodern\\fcharset" << theTranslator->trRTFCharSet();
+ t <<"\\fprq1{\\*\\panose 02070309020205020404}Courier New;}\n";
t <<"{\\f3\\froman\\fcharset2\\fprq2{\\*\\panose 05050102010706020507}Symbol;}\n";
t <<"}\n";
DBG_RTF(t <<"{\\comment begin colors}\n")
@@ -1332,9 +1336,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
case isEndIndex:
beginRTFChapter();
t << Rtf_Style["Heading1"]->reference;
- t << "Index\\par "<< endl;
+ t << theTranslator->trRTFGeneralIndex() << "\\par "<< endl;
t << Rtf_Style_Reset << endl;
- t << "{\\tc \\v Index}" << endl;
+ t << "{\\tc \\v " << theTranslator->trRTFGeneralIndex() << "}" << endl;
t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n";
break;
diff --git a/src/scanner.l b/src/scanner.l
index cf35630..2a38b43 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -1248,7 +1248,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN(AfterDoc);
}
}
-<FindMembers,FindFields>"//"([!*]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
+<FindMembers,FindFields>"//"([!/]?){B}*{CMD}"{"|"/*"([!*]?){B}*{CMD}"{" {
startGroup();
tmpDocType=-1;
if (current_root->section & Entry::SCOPE_MASK)
@@ -1267,7 +1267,7 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( Doc );
}
}
-<FindMembers,FindFields,ReadInitializer>"//"([!*]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
+<FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}"|"/*"([!*]?){B}*{CMD}"}"{B}*"*/" {
endGroup();
}
<FindMembers>"=" {
@@ -1687,6 +1687,15 @@ TITLE [tT][iI][tT][lL][eE]
varEntry->doc = current->doc.copy();
varEntry->brief = current->brief.copy();
varEntry->mGrpId = current->mGrpId;
+
+ // deep copy group list
+ QListIterator<QCString> sli(*current->groups);
+ QCString *s;
+ for (;(s=sli.current());++sli)
+ {
+ varEntry->groups->append(new QCString(*s));
+ }
+
//printf("Add: type=`%s',name=`%s',args=`%s'\n",
// varEntry->type.data(),varEntry->name.data(),varEntry->args.data());
current_root->addSubEntry(varEntry);
@@ -2313,7 +2322,6 @@ TITLE [tT][iI][tT][lL][eE]
BEGIN( ClassVar );
}
<ClassVar>{SCOPENAME}{BN}*/"(" {
- err("Inside IDL = %d\n",insideIDL);
if (insideIDL && strncmp(yytext,"switch",6)==0 && !isId(yytext[6]))
{
// Corba IDL style union
@@ -3810,7 +3818,19 @@ static void parseCompounds(Entry *rt)
mtype = Method;
gstat = FALSE;
virt = Normal;
+
+ memberGroupId = NOGROUP;
+
+ // rebuild compound's group context
+ QCString *s = ce->groups->first();
+ if (s)
+ {
+ lastDefGroup=*s;
+ startGroup();
+ }
+
current->mGrpId = memberGroupId = ce->mGrpId;
+
scanYYlex() ;
delete current; current=0;
ce->program.resize(0);
diff --git a/src/translator.h b/src/translator.h
index 9b6e413..d40e379 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -1276,6 +1276,24 @@ class Translator
return "Bug List";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.?
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as ansicpg for RTF file */
+ virtual QCString trRTFansicp()
+ {
+ return "1252";
+ }
+ /*! Used as ansicpg for RTF fcharset */
+ virtual QCString trRTFCharSet()
+ {
+ return "0";
+ }
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return "Index";
+ }
};
#endif
diff --git a/src/translator_br.h b/src/translator_br.h
index 4919737..ae8ed73 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,7 +1,4 @@
/******************************************************************************
- *
- *
- *
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
@@ -13,10 +10,9 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
- * The translation into Brasilian Portuguese was provided by
+ * Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@grad.icmc.sc.usp.br>
- * Based on the original translation to Portuguese provided by
- * Rui Godinho Lopes <ruiglopes@yahoo.com>
+ * Version: 1.2.6.1 (2001/04/13)
*/
#ifndef TRANSLATOR_BR_H
@@ -24,450 +20,557 @@
#include "translator.h"
-/*
-* I used the name brazilian in language.cpp.
-*/
-class TranslatorBrazilianPortuguese : public Translator
+class TranslatorBrazilian: public Translator
{
public:
- QCString idLanguage()
- { return "brazilian"; }
+
+ // --- Language contol methods -------------------
+
+ /*! Used for identification of the language. May resemble
+ * the string returned by latexBabelPackage(), but it is not used
+ * for the same purpose. The identification should not be translated.
+ * It should be replaced by the name of the language in English
+ * (e.g. Czech, Japanese, Russian, etc.). It should be equal to
+ * the identification in language.h.
+ */
+ virtual QCString idLanguage()
+ {
+ return "portuges";
+ /* I'm not sure if it is correct. I did not found the documentation of BabelPackage*/
+ }
+
+ /*! Used to get the command(s) for the language support. This method
+ * was designed for languages which do not prefer babel package.
+ * If this methods returns empty string, then the latexBabelPackage()
+ * method is used to generate the command for using the babel package.
+ */
+ virtual QCString latexLanguageSupportCommand()
+ {
+ return "Brazilian";
+ }
+
/*! returns the name of the package that is included by LaTeX */
- QCString latexBabelPackage()
- { return "portuguese_br"; }
+ virtual QCString latexBabelPackage()
+ { return ""; }
+
+ /*! return the language charset. This will be used for the HTML output */
+ virtual QCString idLanguageCharset()
+ {
+ return "iso-8859-1";
+ }
+
+ // --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */
- QCString trRelatedFunctions()
- { return "FunГУes relacionadas"; }
+ virtual QCString trRelatedFunctions()
+ { return "FunГУes Relacionadas"; }
/*! subscript for the related functions. */
- QCString trRelatedSubscript()
- { return "(Note que nЦo sЦo funГУes membro)"; }
+ virtual QCString trRelatedSubscript()
+ { return "(Note que estes nЦo sЦo funГУes membros.)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
- QCString trDetailedDescription()
- { return "DescriГЦo"; }
+ virtual QCString trDetailedDescription()
+ { return "DescriГЦo Detalhada"; }
/*! header that is put before the list of typedefs. */
- QCString trMemberTypedefDocumentation()
- { return "Tipos definidos"; }
+ virtual QCString trMemberTypedefDocumentation()
+ { return "DefiniГУes de Tipos"; }
/*! header that is put before the list of enumerations. */
- QCString trMemberEnumerationDocumentation()
+ virtual QCString trMemberEnumerationDocumentation()
{ return "EnumeraГУes"; }
/*! header that is put before the list of member functions. */
- QCString trMemberFunctionDocumentation()
+ virtual QCString trMemberFunctionDocumentation()
{ return "MИtodos"; }
/*! header that is put before the list of member attributes. */
- QCString trMemberDataDocumentation()
- { return "Atributos"; }
+ virtual QCString trMemberDataDocumentation()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos e Atributos";
+ }
+ else
+ {
+ return "Constantes";
+ }
+ }
/*! this is the text of a link put after brief descriptions. */
- QCString trMore()
+ virtual QCString trMore()
{ return "Mais..."; }
/*! put in the class documentation */
- QCString trListOfAllMembers()
- { return "Mostrar lista completa dos membros"; }
+ virtual QCString trListOfAllMembers()
+ { return "Lista de todos os Membros."; }
/*! used as the title of the "list of all members" page of a class */
- QCString trMemberList()
- { return "Lista dos membros"; }
+ virtual QCString trMemberList()
+ { return "Lista de Membros"; }
/*! this is the first part of a sentence that is followed by a class name */
- QCString trThisIsTheListOfAllMembers()
- { return "Esta И a lista de todos os membros de "; }
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return "Esta И a lista completa dos membros da "; }
/*! this is the remainder of the sentence after the class name */
- QCString trIncludingInheritedMembers()
- { return ", incluindo os membros herdados."; }
+ virtual QCString trIncludingInheritedMembers()
+ { return ", incluindo todos os membros herdados."; }
/*! 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="Gerado automaticamente por Doxygen";
if (s) result+=(QCString)" para "+s;
- result+=" a partir do cСdigo fonte.";
+ result+=" a partir do cСdigo-fonte.";
return result;
}
/*! put after an enum name in the list of all members */
- QCString trEnumName()
- { return "enumeraГЦo"; }
+ virtual QCString trEnumName()
+ { return "Nome da enumeraГЦo"; }
/*! put after an enum value in the list of all members */
- QCString trEnumValue()
- { return "valor enumerado"; }
+ virtual QCString trEnumValue()
+ { return "Valor enumerado"; }
/*! put after an undocumented member in the list of all members */
- QCString trDefinedIn()
- { return "definido em"; }
+ virtual QCString trDefinedIn()
+ { return "definida em"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
- QCString trIncludeFile()
- { return "Arquivo incluМdo"; }
- QCString trVerbatimText(const char *f)
- { return (QCString)"Este texto foi originado pelo arquivo incluМdo "+f+"."; }
+ virtual QCString trVerbatimText(const char *f)
+ { return (QCString)"Este И o texto original do arquivo "+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()
- { return "MСdulos"; }
+ virtual QCString trModules()
+ { return "Modulos"; }
/*! This is put above each page as a link to the class hierarchy */
- QCString trClassHierarchy()
- { return "Hierarquia de classes"; }
+ virtual QCString trClassHierarchy()
+ { return "Hierarquia de Classes"; }
/*! This is put above each page as a link to the list of annotated classes */
- QCString trCompoundList()
- { return "Lista de componentes";
+ virtual QCString trCompoundList()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estrutura de Dados";
+ }
+ else
+ {
+ return "Lista de Componentes";
+ }
+ }
- /*! This is put above each page as a link to the list of documented files */}
- QCString trFileList()
- { return "Lista de arquivos"; }
+ /*! This is put above each page as a link to the list of documented files */
+ virtual QCString trFileList()
+ { return "Lista de Arquivos"; }
/*! This is put above each page as a link to the list of all verbatim headers */
- QCString trHeaderFiles()
- { return "Arquivos IncluМdos"; }
+ virtual QCString trHeaderFiles()
+ { return "Arquivos de CabeГalho (Headers)"; }
/*! This is put above each page as a link to all members of compounds. */
- QCString trCompoundMembers()
- { return "Componentes"; }
+ virtual QCString trCompoundMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos de Dados";
+ }
+ else
+ {
+ return "Componentes Membros";
+ }
+ }
/*! This is put above each page as a link to all members of files. */
- QCString trFileMembers()
- { return "DeclaraГУes"; }
+ virtual QCString trFileMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Globais";
+ }
+ else
+ {
+ return "Arquivos Membros";
+ }
+ }
/*! This is put above each page as a link to all related pages. */
- QCString trRelatedPages()
- { return "Paginas relacionadas"; }
+ virtual QCString trRelatedPages()
+ { return "PАginas relacionadas"; }
/*! This is put above each page as a link to all examples. */
- QCString trExamples()
+ virtual QCString trExamples()
{ return "Exemplos"; }
/*! This is put above each page as a link to the search engine. */
- QCString trSearch()
- { return "Localizar"; }
+ virtual QCString trSearch()
+ { return "Busca"; }
/*! This is an introduction to the class hierarchy. */
- QCString trClassHierarchyDescription()
- { return "Esta lista de heranГas estА organizada, dentro do possМvel, por ordem alfabИtica:"; }
+ virtual QCString trClassHierarchyDescription()
+ { return "Esta lista de hierarquia И parcialmente ordenada em ordem alfabИtica:"; }
/*! This is an introduction to the list with all files. */
- QCString trFileListDescription(bool extractAll)
+ virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Lista de todos os arquivos ";
+ QCString result="Aqui estА a lista de todos os arquivos ";
if (!extractAll) result+="documentados ";
- result+="com uma breve descriГЦo:";
+ result+="com suas respectivas descriГУes:";
return result;
}
/*! This is an introduction to the annotated compound list. */
- QCString trCompoundListDescription()
- { return "Lista de classes, estruturas, uniУes e interfaces com breves descriГУes:";
+ virtual QCString trCompoundListDescription()
+ {
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Aqui estЦo as estruturas de dados e suas respectivas descriГУes:";
+ }
+ else
+ {
+ return "Aqui estЦo as classes, estruturas, uniУes e interfaces e suas respectivas descriГУes:";
+ }
}
/*! This is an introduction to the page with all class members. */
- QCString trCompoundMembersDescription(bool extractAll)
+ virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result="Lista de todos os membros ";
+ QCString result="Aqui estА a lista de todos os membros de classes ";
if (!extractAll) result+="documentados ";
result+="com links para ";
- if (extractAll) result+="a documentaГЦo das respectivas classes:";
- else result+="o arquivo a que pertencem:";
+ if (extractAll)
+ result+="a documentaГЦo de suas respectivas classes:";
+ else
+ result+="suas respectivas classes:";
return result;
}
/*! This is an introduction to the page with all file members. */
- QCString trFileMembersDescription(bool extractAll)
+ virtual QCString trFileMembersDescription(bool extractAll)
{
- QCString result="Lista de todos os membros ";
- if (!extractAll) result+="documentados ";
+ QCString result="Aqui 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 ";
+ if (!extractAll) result+="documentadas ";
+ }
+ else
+ {
+ result+="todos os membros dos arquivos ";
+ if (!extractAll) result+="documentados ";
+ }
+
+
result+="com links para ";
- if (extractAll) result+="a documentaГЦo correspondente:";
- else result+="os arquivos onde foram definidos:";
+ if (extractAll)
+ result+="seus respectivos arquivos:";
+ else
+ result+="suas respectivas documentaГУes:";
return result;
}
/*! This is an introduction to the page with the list of all header files. */
- QCString trHeaderFilesDescription()
- { return "Lista de todos os arquivos cabeГalho que constituem a API:"; }
+ virtual QCString trHeaderFilesDescription()
+ { return "Aqui estЦo os arquivos de cabeГalho que compУe a API:"; }
/*! This is an introduction to the page with the list of all examples */
- QCString trExamplesDescription()
- { return "Lista de todos os exemplos:"; }
+ virtual QCString trExamplesDescription()
+ { return "Aqui estА a lista de todos os exemplos:"; }
/*! This is an introduction to the page with the list of related pages */
- QCString trRelatedPagesDescription()
- { return "Lista de documentaГЦo relacionada:"; }
+ virtual QCString trRelatedPagesDescription()
+ { return "Aqui estА a lista de toda a documentaГЦo relacionadas:"; }
/*! This is an introduction to the page with the list of class/file groups */
- QCString trModulesDescription()
- { return "Lista de todos os mСdulos:"; }
+ virtual QCString trModulesDescription()
+ { return "Aqui estА a lista de todos os mИdulos:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
- QCString trNoDescriptionAvailable()
- { return "Nenhuma descriГЦo disponМvel"; }
+ virtual QCString trNoDescriptionAvailable()
+ { return "Sem descriГЦodisponМvel"; }
// 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 "DocumentaГЦo"; }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
- QCString trModuleIndex()
- { return "мndice dos mСdulos"; }
+ virtual QCString trModuleIndex()
+ { return "мndice de MСdulos"; }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
- QCString trHierarchicalIndex()
- { return "мndice da hierarquia"; }
+ virtual QCString trHierarchicalIndex()
+ { return "мndice HierАrquico"; }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
- QCString trCompoundIndex()
- { return "мndice dos componentes"; }
+ virtual QCString trCompoundIndex()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "мndice das Estruturas de Dados";
+ }
+ else
+ {
+ return "мndice dos Componentes";
+ }
+ }
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
- QCString trFileIndex()
- { return "мndice dos arquivos"; }
+ virtual QCString trFileIndex()
+ { return "мndice dos Arquivos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
- QCString trModuleDocumentation()
- { return "DocumentaГЦo do mСdulo"; }
+ virtual QCString trModuleDocumentation()
+ { return "MСdulos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
- QCString trClassDocumentation()
- { return "DocumentaГЦo da classe"; }
+ virtual QCString trClassDocumentation()
+ { return "Classes"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
- QCString trFileDocumentation()
- { return "DocumentaГЦo do arquivo"; }
+ virtual QCString trFileDocumentation()
+ { return "Arquivos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
- QCString trExampleDocumentation()
- { return "DocumentaГЦo do exemplo"; }
+ virtual QCString trExampleDocumentation()
+ { return "Exemplos"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
- QCString trPageDocumentation()
- { return "DocumentaГЦo da pАgina"; }
+ virtual QCString trPageDocumentation()
+ { return "DocumentaГЦo Relacionada"; }
/*! This is used in LaTeX as the title of the document */
- QCString trReferenceManual()
- { return "Manual de referЙncia"; }
+ virtual QCString trReferenceManual()
+ { return "Manual de ReferЙncia"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
- QCString trDefines()
- { return "DefiniГЦo de macros"; }
+ virtual QCString trDefines()
+ { return "DefiniГУes e Macros"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
- QCString trFuncProtos()
- { return "ProtСtipos de funГУes"; }
+ virtual QCString trFuncProtos()
+ { return "ProtСtipos de FunГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
- QCString trTypedefs()
- { return "DefiniГУes de tipos"; }
+ virtual QCString trTypedefs()
+ { return "DefiniГУes de Tipos"; }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
- QCString trEnumerations()
+ virtual QCString trEnumerations()
{ return "EnumeraГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
- QCString trFunctions()
+ virtual QCString trFunctions()
{ return "FunГУes"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trVariables()
+ virtual QCString trVariables()
{ return "VariАveis"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trEnumerationValues()
- { return "Valores da enumeraГЦo"; }
+ virtual QCString trEnumerationValues()
+ { return "Valores Enumerados"; }
/*! This is used in man pages as the author section. */
- QCString trAuthor()
+ virtual QCString trAuthor()
{ return "Autor"; }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
- QCString trDefineDocumentation()
- { return "Macros"; }
+ virtual QCString trDefineDocumentation()
+ { return "DeiniГУes e macros"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
- QCString trFunctionPrototypeDocumentation()
- { return "ProtСtipos das funГУes"; }
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return "ProtСtipos de funГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
- QCString trTypedefDocumentation()
- { return "Tipos"; }
+ virtual QCString trTypedefDocumentation()
+ { return "DefiniГУes de tipos"; }
/*! 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 "EnumeraГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
- QCString trEnumerationValueDocumentation()
- { return "Elementos da enumeraГЦo"; }
+ virtual QCString trEnumerationValueDocumentation()
+ { return "Valores enumerados"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
- QCString trFunctionDocumentation()
+ virtual QCString trFunctionDocumentation()
{ return "FunГУes"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
- QCString trVariableDocumentation()
+ virtual QCString trVariableDocumentation()
{ return "VariАveis"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
- QCString trCompounds()
- { return "Componentes"; }
+ virtual QCString trCompounds()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estruturas de Dados";
+ }
+ else
+ {
+ return "Componentes";
+ }
+ }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
- QCString trFiles()
+ virtual QCString trFiles()
{ return "Arquivos"; }
/*! 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=(QCString)"Criado em "+date;
+ QCString result=(QCString)"Gerado em "+date;
if (projName) result+=(QCString)" para "+projName;
result+=(QCString)" por";
return result;
}
/*! This is part of the sentence used in the standard footer of each page.
*/
- QCString trWrittenBy()
+ virtual QCString trWrittenBy()
{
return "escrito por";
}
/*! this text is put before a class diagram */
- QCString trClassDiagram(const char *clName)
+ virtual QCString trClassDiagram(const char *clName)
{
- return (QCString)"Diagrama de heranГas da classe "+clName;
+ return (QCString)"Diagrama de Hierarquia para "+clName+":";
}
- /*! this text is generated when the \internal command is used. */
- QCString trForInternalUseOnly()
+ /*! this text is generated when the \\internal command is used. */
+ virtual QCString trForInternalUseOnly()
{ return "Apenas para uso interno."; }
- /*! this text is generated when the \reimp command is used. */
- QCString trReimplementedForInternalReasons()
- { return "Redefinido por razУes internas. A interface nЦo foi afetada.";
- }
+ /*! this text is generated when the \\reimp command is used. */
+ virtual QCString trReimplementedForInternalReasons()
+ { return "Reimplementado por razУes internas. A API nЦo foi modificada."; }
- /*! this text is generated when the \warning command is used. */
- QCString trWarning()
+ /*! this text is generated when the \\warning command is used. */
+ virtual QCString trWarning()
{ return "Aviso"; }
- /*! this text is generated when the \bug command is used. */
- QCString trBugsAndLimitations()
+ /*! this text is generated when the \\bug command is used. */
+ virtual QCString trBugsAndLimitations()
{ return "Bugs e limitaГУes"; }
- /*! this text is generated when the \version command is used. */
- QCString trVersion()
+ /*! this text is generated when the \\version command is used. */
+ virtual QCString trVersion()
{ return "VersЦo"; }
- /*! this text is generated when the \date command is used. */
- QCString trDate()
+ /*! this text is generated when the \\date command is used. */
+ virtual QCString trDate()
{ return "Data"; }
- /*! this text is generated when the \author command is used. */
- QCString trAuthors()
+ /*! this text is generated when the \\author command is used. */
+ virtual QCString trAuthors()
{ return "Autor(es)"; }
- /*! this text is generated when the \return command is used. */
- QCString trReturns()
+ /*! this text is generated when the \\return command is used. */
+ virtual QCString trReturns()
{ return "Retorna"; }
- /*! this text is generated when the \sa command is used. */
- QCString trSeeAlso()
+ /*! this text is generated when the \\sa command is used. */
+ virtual QCString trSeeAlso()
{ return "Veja tambИm"; }
- /*! this text is generated when the \param command is used. */
- QCString trParameters()
+ /*! this text is generated when the \\param command is used. */
+ virtual QCString trParameters()
{ return "ParБmetros"; }
- /*! this text is generated when the \exception command is used. */
- QCString trExceptions()
+ /*! this text is generated when the \\exception command is used. */
+ virtual QCString trExceptions()
{ return "ExceГУes"; }
/*! this text is used in the title page of a LaTeX document. */
- QCString trGeneratedBy()
- { return "Criado por"; }
+ virtual QCString trGeneratedBy()
+ { return "Gerado por"; }
- // new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+ /*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
- { return "Lista de namespaces"; }
+ { return "Lista de Namespaces"; }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{
- QCString result="Lista ";
- if (!extractAll) result+="de toda a documentaГЦo ";
- result+="dos namespaces com uma breve descriГЦo:";
+ QCString result="Aqui esta a lista de todos os Namespaces ";
+ if (!extractAll) result+="documentados ";
+ result+="com suas respectivas descriГУes:";
return result;
}
@@ -485,7 +588,7 @@ class TranslatorBrazilianPortuguese : public Translator
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
- { return "FunГУes relacionadas e classes amigas"; }
+ { return "Amigos e FunГУes Relacionadas"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
@@ -496,19 +599,17 @@ class TranslatorBrazilianPortuguese : public Translator
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result="Referencia ";
+ QCString result="ReferЙncia da";
+
+ if (isTemplate) result+=" Template de";
switch(compType)
{
- case ClassDef::Class: result+="Ю classe "; break;
- case ClassDef::Struct: result+="Ю estrutura "; break;
- case ClassDef::Union: result+="Ю uniЦo "; break;
- case ClassDef::Interface: result+="Ю interface "; break;
- case ClassDef::Exception: result+="Ю excepГЦo "; break;
+ case ClassDef::Class: result+=" Classe "; break;
+ case ClassDef::Struct: result+=" Estrutura "; break;
+ case ClassDef::Union: result+=" UniЦo "; break;
+ case ClassDef::Interface: result+=" Interface "; break;
+ case ClassDef::Exception: result+=" ExceГЦo "; break;
}
-
- if (isTemplate)
- result+="<template> ";
-
result+=(QCString)clName;
return result;
}
@@ -516,7 +617,7 @@ class TranslatorBrazilianPortuguese : public Translator
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
- QCString result= "Referencia ao arquivo ";
+ QCString result = "ReferЙncia do Arquivo ";
result += fileName;
return result;
}
@@ -524,7 +625,7 @@ class TranslatorBrazilianPortuguese : public Translator
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
- QCString result= "Referencia ao namespace ";
+ QCString result ="RefЙncia do Namespace ";
result += namespaceName;
return result;
}
@@ -533,25 +634,25 @@ class TranslatorBrazilianPortuguese : public Translator
* these are for the member sections of a class, struct or union
*/
virtual QCString trPublicMembers()
- { return "Membros pЗblicos"; }
+ { return "MИtodos PЗblicos"; }
virtual QCString trPublicSlots()
- { return "Slots pЗblicos"; }
+ { return "Slots PЗblicos"; }
virtual QCString trSignals()
- { return "Sinais"; }
+ { return "Signals"; }
virtual QCString trStaticPublicMembers()
- { return "Membros pЗblicos estАticos"; }
+ { return "MИtodos PЗblicos EstАticos"; }
virtual QCString trProtectedMembers()
- { return "Membros protegidos"; }
+ { return "MИtodos Protegidos"; }
virtual QCString trProtectedSlots()
- { return "Slots protegidos"; }
+ { return "Slots Protegidos"; }
virtual QCString trStaticProtectedMembers()
- { return "Membros protegidos estАticos"; }
+ { return "MИtodos Protegidos EstАticos"; }
virtual QCString trPrivateMembers()
- { return "Membros privados"; }
+ { return "MИtodos Privados"; }
virtual QCString trPrivateSlots()
- { return "Slots privados"; }
+ { return "Slots Privados"; }
virtual QCString trStaticPrivateMembers()
- { return "Membros privados estАticos"; }
+ { return "MИtodos Privados EstАticos"; }
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
@@ -573,7 +674,7 @@ class TranslatorBrazilianPortuguese : public Translator
if (i<numEntries-2) // not the fore last entry
result+=", ";
else // the fore last entry
- result+=", e ";
+ result+=" e ";
}
}
return result;
@@ -584,7 +685,7 @@ class TranslatorBrazilianPortuguese : public Translator
*/
virtual QCString trInheritsList(int numEntries)
{
- return "Derivada de "+trWriteList(numEntries)+".";
+ return "Herdeiro de " + trWriteList(numEntries) + ".";
}
/*! used in class documentation to produce a list of super classes,
@@ -592,7 +693,7 @@ class TranslatorBrazilianPortuguese : public Translator
*/
virtual QCString trInheritedByList(int numEntries)
{
- return "Herdado por "+trWriteList(numEntries)+".";
+ return "Superclasse de "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
@@ -613,25 +714,25 @@ class TranslatorBrazilianPortuguese : public Translator
/*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers()
- { return "Membros do namespace"; }
+ { return "Membros do Namespace"; }
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- QCString result="Lista ";
- if (extractAll) result+="de todos os ";
- else result+="de toda a documentaГЦo dos ";
- result+="membros do namespace com links para ";
- if (extractAll) result+="a documentaГЦo de cada membro:";
- else result+="o namespace correspondente:";
+ QCString result="Aqui estА a lista de todos os membros do Namespace ";
+ if (!extractAll) result+="documentados ";
+ result+="com links para ";
+ if (extractAll)
+ result+="a documentaГЦo de seus respectivos Namespaces:";
+ else
+ result+="os seus respectivos namespaces:";
return result;
}
-
- /*! This is used in LaTeX as the title of the chapter with the
+ /*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
- { return "мndice dos namespaces"; }
+ { return "мndice de Namespaces"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
@@ -660,18 +761,17 @@ class TranslatorBrazilianPortuguese : public Translator
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)"A documentaГЦo para ";
+ QCString result=(QCString)"A documentaГЦo para esta ";
switch(compType)
{
- case ClassDef::Class: result+="esta classe"; break;
- case ClassDef::Struct: result+="esta estrutura"; break;
- case ClassDef::Union: result+="esta uniЦo"; break;
- case ClassDef::Interface: result+="esta interface"; break;
- case ClassDef::Exception: result+="esta exceГЦo"; break;
+ case ClassDef::Class: result+="classe "; break;
+ case ClassDef::Struct: result+="estrura "; break;
+ case ClassDef::Union: result+="uniЦo "; break;
+ case ClassDef::Interface: result+="interface "; break;
+ case ClassDef::Exception: result+="exceГЦo "; break;
}
result+=" foi gerada a partir ";
- if (single) result+=" do seguinte arquivo:";
- else result+="dos seguintes arquivos:";
+ if (single) result+="do seguinte arquivo:"; else result+="dos seguintes arquivos:";
return result;
}
@@ -679,10 +779,7 @@ class TranslatorBrazilianPortuguese : public Translator
* list.
*/
virtual QCString trAlphabeticalList()
- {
- return "Lista em ordem alfabИtica";
- }
-
+ { return "Lista AlfabИtica"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
@@ -690,18 +787,18 @@ class TranslatorBrazilianPortuguese : public Translator
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
- { return "Valores retornados"; }
+ { return "Valores Retornados"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
- { return "PАgina principal"; }
+ { return "PАgina Principal"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
- { return "p. "; }
+ { return "pag."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
@@ -713,11 +810,11 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trDefinedAtLineInSourceFile()
{
- return "Definido na linha @0 do arquivo @1.";
+ return "DefiniГЦo na linha @0 do arquivo @1.";
}
virtual QCString trDefinedInSourceFile()
{
- return "Definido no arquivo @0.";
+ return "DefiniГЦo no arquivo @0.";
}
//////////////////////////////////////////////////////////////////////////
@@ -726,7 +823,10 @@ class TranslatorBrazilianPortuguese : public Translator
virtual QCString trDeprecated()
{
- return "Desaprovado";
+ /* This note is for brazilians.
+ Esta И uma boa traduГЦo para "deprecated"?
+ */
+ return "Descontinuada";
}
//////////////////////////////////////////////////////////////////////////
@@ -741,42 +841,42 @@ class TranslatorBrazilianPortuguese : public Translator
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Diagrama de dependЙncias de inclusЦo para "+fName+":";
+ return (QCString)"GrАfico de dependЙncia de inclusУes para "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
- return "Construtores e Destrutores";
+ return "Construtores & Destrutores";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
{
- return "Ir para o cСdigo fonte deste arquivo.";
+ return "VА para o cСdigo-fonte deste arquivo.";
}
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
- return "Ir para a documentaГЦo deste arquivo.";
+ return "VА para a documentaГЦo deste arquivo.";
}
/*! Text for the \pre command */
virtual QCString trPrecondition()
{
- return "PrecondiГЦo";
+ return "PrИ-CondiГЦo";
}
/*! Text for the \post command */
virtual QCString trPostcondition()
{
- return "PoscondiГЦo";
+ return "PСs-CondiГЦo";
}
/*! Text for the \invariant command */
virtual QCString trInvariant()
{
- return "Invariante";
+ return "InvariАvel";
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
{
- return "Valor inicial:";
+ return "Valor Inicial:";
}
/*! Text used the source code in the file index */
virtual QCString trCode()
@@ -785,25 +885,25 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trGraphicalHierarchy()
{
- return "RepresentaГЦo grАfica da hierarquia da classe";
+ return "GrАfico de Hierarquia de Classes";
}
virtual QCString trGotoGraphicalHierarchy()
{
- return "Ir para a representaГЦo grАfica da hierarquia da classe";
+ return "VА para o GrАfico de Hierarquia de Classes";
}
virtual QCString trGotoTextualHierarchy()
{
- return "Ir para a representaГЦo textual da hierarquia da classe";
+ return "VА para a Hierarquia de Classes (texto)";
}
virtual QCString trPageIndex()
{
- return "мndice da pАgina";
+ return "мndice de PАgina";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
-
+
virtual QCString trNote()
{
return "Nota";
@@ -814,7 +914,14 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trPublicAttribs()
{
- return "Atributos PЗblicos";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Campos de Dados";
+ }
+ else
+ {
+ return "Atributos PЗblicos";
+ }
}
virtual QCString trStaticPublicAttribs()
{
@@ -852,12 +959,12 @@ class TranslatorBrazilianPortuguese : public Translator
/*! Used as a marker that is put before a todo item */
virtual QCString trTodo()
{
- return "Tarefa";
+ return "Tarefas Futuras";
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
- return "Lista de tarefas";
+ return "Lista de tarefas futuras";
}
//////////////////////////////////////////////////////////////////////////
@@ -870,7 +977,7 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trRemarks()
{
- return "ObservaГУes";
+ return "AnotaГУes";
}
virtual QCString trAttention()
{
@@ -878,12 +985,193 @@ class TranslatorBrazilianPortuguese : public Translator
}
virtual QCString trInclByDepGraph()
{
- return "Este grАfico mostra quais sЦo os arquivos que incluem diretamente ou indiretamente este arquivo:";
+ return "Este grafo mostra quais arquivos estЦo direta ou indiretamente "
+ "relacionados com este arquivo:";
}
virtual QCString trSince()
{
return "Desde";
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! title of the graph legend page */
+ virtual QCString trLegendTitle()
+ {
+ return "Legenda do Grafo";
+ }
+ /*! page explaining how the dot graph's should be interpreted */
+ virtual QCString trLegendDocs()
+ {
+ return
+ "Esta pАgina explica como interpretar os grafos gerados pelo doxygen.<p>\n"
+ "Considere o seguinte exemplo:\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"
+ "/*! 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"
+ "{\n"
+ " private:\n"
+ " Used *m_usedClass;\n"
+ "};\n"
+ "\\endcode\n"
+
+ "Se a tag \\c MAX_DOT_GRAPH_HEIGHT no arquivo de configuraГЦo tem o valor"
+ "200, o seguinte grАfo serА gerado:"
+ "<p><center><img src=\"graph_legend.gif\"></center>\n"
+ "<p>\n"
+ "As caixas no grafo acima tem as seguintes interpretaГУes:\n"
+ "<ul>\n"
+ "<li>Uma caixa inteiramente preta representa a estrutura ou a classe para qual "
+ "o grafo foi gerado.\n"
+ "<li>Uma caixa com bordas pretas denota uma estrutura ou classe documentada.\n"
+ "<li>Uma caixa com bordas cinzas denota uma estrutura ou classe nЦo documentada.\n"
+
+ "<li>Uma caixa com bordas vermelhas denota uma estrutura ou classe documentada para\n"
+ "a qual nem todas as heranГas ou componentes sЦo mostradas no grafo. Um grafo И "
+ "truncado quando este И maior que o tamanho especificado."
+ "</ul>\n"
+ "As setas tem os seguintes significados:\n"
+ "<ul>\n"
+ "<li>Uma seta azul escura И utilizada para denotar uma relaГЦo de heranГa "
+ "pЗblica entre duas classes.\n"
+ "<li>Uma seta verde escura И utilizada para denotar uma heranГa protegida.\n"
+ "<li>Uma seta vermelho escura И utilizada para denotar uma heranГa privada.\n"
+ "<li>Uma seta pЗrpura pontilhada И usada se uma classe estА contida ou И utilizada"
+ "por outra classe. A seta И marcada com a(s) variАvel(eis) "
+ "atravИs das quais a classe ou estrutura apontada estА acessМvel. \n"
+ "</ul>\n";
+ }
+ /*! text for the link to the legend page */
+ virtual QCString trLegend()
+ {
+ return "legenda";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a test item */
+ virtual QCString trTest()
+ {
+ return "Teste";
+ }
+ /*! Used as the header of the test list */
+ virtual QCString trTestList()
+ {
+ return "Lista de Teste";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for KDE-2 IDL methods */
+ virtual QCString trDCOPMethods()
+ {
+ return "MИtodos DCOP";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for IDL properties */
+ virtual QCString trProperties()
+ {
+ return "Propriedades";
+ }
+ /*! Used as a section header for IDL property documentation */
+ virtual QCString trPropertyDocumentation()
+ {
+ return "Propriedades";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used for Java interfaces in the summary section of Java packages */
+ virtual QCString trInterfaces()
+ {
+ return "Interfaces";
+ }
+ /*! Used for Java classes in the summary section of Java packages */
+ virtual QCString trClasses()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return "Estruturas de Dados";
+ }
+ else
+ {
+ return "Classes";
+ }
+ }
+ /*! Used as the title of a Java package */
+ virtual QCString trPackage(const char *name)
+ {
+ return (QCString)"Pacote "+name;
+ }
+ /*! Title of the package index page */
+ virtual QCString trPackageList()
+ {
+ return "Lista de Pacotes";
+ }
+ /*! The description of the package index page */
+ virtual QCString trPackageListDescription()
+ {
+ return "Aqui estА a lista de pacotes com suas respectivas descriГУes (se disponМveis):";
+ }
+ /*! The link name in the Quick links header for each page */
+ virtual QCString trPackages()
+ {
+ return "Pacotes";
+ }
+ /*! Used as a chapter title for Latex & RTF output */
+ virtual QCString trPackageDocumentation()
+ {
+ return "Pacotes";
+ }
+ /*! Text shown before a multi-line define */
+ virtual QCString trDefineValue()
+ {
+ return "Valor:";
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a \\bug item */
+ virtual QCString trBug()
+ {
+ return "Bug";
+ }
+ /*! Used as the header of the bug list */
+ virtual QCString trBugList()
+ {
+ return "Lista de Bug";
+ }
+
};
#endif
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 732d4e1..41187da 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -97,6 +97,11 @@
// - Minor correction of comments which copied the same
// corrections in translator.h (doubled backslash) just after
// 1.2.6 release.
+//
+// 2001/04/10 (Petr Prikryl)
+// - Update for OPTIMIZE_OUTPUT_FOR_C (1.2.6-20010408).
+// - Removed implementation of latexBabelPackage().
+// - Removed implementation of trVerbatimText().
//
// Notices:
// --------
@@ -113,7 +118,7 @@ class TranslatorCzech : public Translator
{
private:
/*! The Decode() inline assumes the source written in the
- Windows encoding (maintainer dependent).
+ Windows encoding (maintainer only dependent).
*/
inline QCString Decode(const QCString & sInput)
{
@@ -133,10 +138,6 @@ class TranslatorCzech : public Translator
virtual QCString latexLanguageSupportCommand()
{ return "\\usepackage{czech}\n"; }
- /*! returns the name of the package that is included by LaTeX */
- virtual QCString latexBabelPackage()
- { return ""; }
-
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
@@ -175,7 +176,16 @@ class TranslatorCzech : public Translator
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
- { return Decode("Dokumentace k datovЩm ХlenЫm"); }
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("Dokumentace k polo·kАm");
+ }
+ else
+ {
+ return Decode("Dokumentace k datovЩm ХlenЫm");
+ }
+ }
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
@@ -220,12 +230,6 @@ class TranslatorCzech : public Translator
virtual QCString trDefinedIn()
{ return Decode("definovАn v"); }
- /*! put as in introduction in the verbatim header file of a class.
- * parameter f is the name of the include file.
- */
- virtual QCString trVerbatimText(const char *f)
- { return Decode((QCString)"зplnЩ text vklАdanИho souboru "+f+"."); }
-
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
@@ -240,8 +244,17 @@ class TranslatorCzech : public Translator
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
- { return Decode("Seznam tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ struktury");
+ }
+ else
+ {
+ return Decode("Seznam tЬМd");
+ }
+ }
+
/*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList()
{ return Decode("Seznam souborЫ"); }
@@ -252,11 +265,29 @@ class TranslatorCzech : public Translator
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
- { return Decode("Seznam ХlenЫ tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ polo·ky");
+ }
+ else
+ {
+ return Decode("Seznam ХlenЫ tЬМd");
+ }
+ }
+
/*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers()
- { return Decode("Symboly v souborech"); }
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("GlobАlnМ symboly");
+ }
+ else
+ {
+ return Decode("Symboly v souborech");
+ }
+ }
/*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages()
@@ -287,22 +318,65 @@ class TranslatorCzech : public Translator
/*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription()
- { return Decode("NАsledujМcМ seznam obsahuje pЬedev Мm identifikace tЬМd, "
- "ale nachАzМ se zde i dal М netriviАlnМ prvky, jako jsou "
- "struktury (struct), unie (union) a rozhranМ (interface). "
- "V seznamu jsou uvedeny jejich struХnИ popisy:");
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("NАsledujМcМ seznam obsahuje identifikace datovЩch "
+ "struktur a jejich struХnИ popisy:");
+ }
+ else
+ {
+ return Decode("NАsledujМcМ seznam obsahuje pЬedev Мm identifikace "
+ "tЬМd, ale nachАzejМ se zde i dal М netriviАlnМ prvky, "
+ "jako jsou struktury (struct), unie (union) a rozhranМ "
+ "(interface). V seznamu jsou uvedeny jejich struХnИ "
+ "popisy:");
+ }
}
/*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result="Zde naleznete seznam v ech ";
- if (!extractAll) result+="dokumentovanЩch ";
- result+="ХlenЫ tЬМd s odkazy na ";
- if (extractAll)
- result+="dokumentaci tЬМd, ke kterЩm pЬМslu ejМ:";
- else
- result+="tЬМdy, ke kterЩm pЬМslu ejМ:";
+ QCString result= "Zde naleznete seznam v ech ";
+ if (!extractAll)
+ {
+ result += "dokumentovanЩch ";
+ }
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result += "polo·ek struktur (struct) a uniМ (union) ";
+ }
+ else
+ {
+ result += "ХlenЫ tЬМd ";
+ }
+
+ result += "s odkazy na ";
+
+ if (extractAll)
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result += "dokumentaci struktur/uniМ, ke kterЩm pЬМslu ejМ:";
+ }
+ else
+ {
+ result += "dokumentaci tЬМd, ke kterЩm pЬМslu ejМ:";
+ }
+ }
+ else
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="struktury/unie, ke kterЩm pЬМslu ejМ:";
+ }
+ else
+ {
+ result+="tЬМdy, ke kterЩm pЬМslu ejМ:";
+ }
+ }
+
return Decode(result);
}
@@ -311,18 +385,22 @@ class TranslatorCzech : public Translator
{
QCString result="Zde naleznete seznam v ech ";
if (!extractAll) result+="dokumentovanЩch ";
- result+="symbolЫ, kterИ jsou definovАny na Зrovni svЩch souborЫ. "
- "Pro ka·dЩ symbol je uveden odkaz na ";
+
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="funkcМ, promЛnnЩch, maker, vЩХtЫ a definic typЫ (typedef) "
+ "s odkazy na ";
+ }
+ else
+ {
+ result+="symbolЫ, kterИ jsou definovАny na Зrovni svЩch souborЫ. "
+ "Pro ka·dЩ symbol je uveden odkaz na ";
+ }
+
if (extractAll)
- result+="dokumentaci pЬМslu nИho souboru";
+ result+="soubory, ke kterЩm pЬМslu ejМ:";
else
- result+="soubor, ve kterИm je symbol definovАn";
- result+=". Podle zpЫsobu definice mЫ·e bЩt symbol globАlnМm symbolem "
- "nebo symbolem, kterЩ je viditelnЩ pouze z danИho souboru "
- "(to se tЩkА napЬМklad statickЩch promЛnnЩch v C++). "
- "Seznam neobsahuje symboly ХlenЫ tЬМd. "
- "Symbol mЫ·e oznaХovat makro, typ, instanci tЬМdy, "
- "promЛnnou, konstantu, funkci, vЩХet, hodnotu vЩХtu a podobnЛ:";
+ result+="dokumentaci:";
return Decode(result);
}
@@ -374,8 +452,17 @@ class TranslatorCzech : public Translator
* annotated compound index.
*/
virtual QCString trCompoundIndex()
- { return Decode("RejstЬМk tЬМd"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("RejstЬМk datovЩch struktur");
+ }
+ else
+ {
+ return Decode("RejstЬМk tЬМd");
+ }
+ }
+
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
@@ -508,8 +595,17 @@ class TranslatorCzech : public Translator
* the list of links to documented compounds
*/
virtual QCString trCompounds()
- { return Decode("TЬМdy"); }
-
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ struktry");
+ }
+ else
+ {
+ return Decode("TЬМdy");
+ }
+ }
+
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
@@ -954,7 +1050,14 @@ class TranslatorCzech : public Translator
}
virtual QCString trPublicAttribs()
{
- return Decode("VeЬejnИ atributy");
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return Decode("DatovИ polo·ky");
+ }
+ else
+ {
+ return Decode("VeЬejnИ atributy");
+ }
}
virtual QCString trStaticPublicAttribs()
{
diff --git a/src/translator_de.h b/src/translator_de.h
index 8f0f75a..3d157ff 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -22,25 +22,30 @@
// RK (who are you?)
// - Update for "new since 1.1.3" version
//
-// 2001/03/23 Jens Seidel (jens.seidel@mathematik.tu-chemnitz.de)
+// 2001/03/23 Jens Seidel (jensseidel@users.sourceforge.net)
// - fixed typos
// - changed trPageDocumentation() "Seitenbeschreibung" to
-// "Zus&auml;tzliche Informationen"
+// "ZusДtzliche Informationen"
// - removed old trGeneratedFrom()
-// - /*! ==> /* (documentation is inherited from translator.h;
-// INHERIT_DOCS = YES)
+// - changed "/*!" to "/*" (documentation is inherited from translator.h
+// (INHERIT_DOCS = YES), there's no need to make changes twice)
// - Update for "new since 1.2.4" version
//
+// 2001/04/17 Jens Seidel (jensseidel@users.sourceforge.net)
+// - fixed typos ("Vererbunsbeziehung", "gesch&uumltzter")
+// - use umlauts instead of html code ("&auml;",...)
+// this makes it easier to read and fixes three problems (two in
+// \code segment)
+//
// Todo:
// - translation of all Config_getBool("OPTIMIZE_OUTPUT_FOR_C")
// strings (see translator.h)
// - translation of "compound"
-// - see FIXME for further changes
-// - use "Д",... (instead of "&auml;") in \code segments (or is there a bug
-// in doxygen-1.2.6)?
+// - see FIXME
// - was ist richtig: "Liste aller dokumentierter Elemente" oder
// "Liste aller dokumentierten Elemente" (aktuell)
// (nach "aller" suchen)
+// "Mithilfe" oder "Mit Hilfe"
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
@@ -67,7 +72,7 @@ class TranslatorGerman : public Translator
QCString trDetailedDescription()
// header that is put before the detailed description of files, classes and namespaces.
- { return "Ausf&uuml;hrliche Beschreibung"; }
+ { return "AusfЭhrliche Beschreibung"; }
QCString trMemberTypedefDocumentation()
// header that is put before the list of typedefs.
@@ -75,7 +80,7 @@ class TranslatorGerman : public Translator
QCString trMemberEnumerationDocumentation()
// header that is put before the list of enumerations.
- { return "Dokumentation der Aufz&auml;hlungstypen"; }
+ { return "Dokumentation der AufzДhlungstypen"; }
QCString trMemberFunctionDocumentation()
// header that is put before the list of member functions.
@@ -99,17 +104,17 @@ class TranslatorGerman : public Translator
QCString trThisIsTheListOfAllMembers()
// this is the first part of a sentence that is followed by a class name
- { return "Vollst&auml;ndige Aufstellung aller Elemente f&uuml;r "; }
+ { return "VollstДndige Aufstellung aller Elemente fЭr "; }
QCString trIncludingInheritedMembers()
// this is the remainder of the sentence after the class name
- { return " einschlie&szlig;lich aller geerbten Elemente."; }
+ { return " einschlieъlich aller geerbten Elemente."; }
QCString trGeneratedAutomatically(const char *s)
// this is put at the author sections at the bottom of man pages.
// parameter s is name of the project name.
{ QCString result="Automatisch erzeugt von Doxygen";
- if (s) result+=(QCString)" f&uuml;r "+s;
+ if (s) result+=(QCString)" fЭr "+s;
result+=" aus dem Quellcode.";
return result;
}
@@ -129,7 +134,7 @@ class TranslatorGerman : public Translator
QCString trVerbatimText(const char *f)
// put as in introduction in the verbatim header file of a class.
// parameter f is the name of the include file.
- { return (QCString)"Dieses ist der unver&auml;nderte Text aus der "
+ { return (QCString)"Dieses ist der unverДnderte Text aus der "
"Include-Datei "+f+"."; }
// quick reference sections
@@ -145,7 +150,7 @@ class TranslatorGerman : public Translator
QCString trCompoundList()
// This is put above each page as a link to the list of annotated classes
- { return "&Uuml;bersicht"; }
+ { return "эbersicht"; }
QCString trFileList()
// This is put above each page as a link to the list of documented files
@@ -157,7 +162,7 @@ class TranslatorGerman : public Translator
QCString trCompoundMembers()
// This is put above each page as a link to all members of compounds.
- { return "Element&uuml;bersicht"; }
+ { return "ElementЭbersicht"; }
QCString trFileMembers()
// This is put above each page as a link to all members of files.
@@ -165,7 +170,7 @@ class TranslatorGerman : public Translator
QCString trRelatedPages()
// This is put above each page as a link to all related pages.
- { return "Zus&auml;tzliche Informationen"; }
+ { return "ZusДtzliche Informationen"; }
QCString trExamples()
// This is put above each page as a link to all examples.
@@ -177,14 +182,14 @@ class TranslatorGerman : public Translator
QCString trClassHierarchyDescription()
// This is an introduction to the class hierarchy.
- { return "Die Liste der Ableitungen ist -mit Einschr&auml;nkungen- "
+ { return "Die Liste der Ableitungen ist -mit EinschrДnkungen- "
"alphabetisch sortiert:";
}
QCString trFileListDescription(bool extractAll)
// This is an introduction to the list with all files.
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Dateien mit einer Kurzbeschreibung:";
return result;
@@ -194,17 +199,17 @@ class TranslatorGerman : public Translator
// This is an introduction to the annotated compound list
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- return "Hier folgt die Aufz&auml;hlung aller Datenstrukturen "
+ return "Hier folgt die AufzДhlung aller Datenstrukturen "
"mit einer Kurzbeschreibung:";
else
- return "Hier folgt die Aufz&auml;hlung aller Klassen, Strukturen "
+ return "Hier folgt die AufzДhlung aller Klassen, Strukturen "
"und Varianten mit einer Kurzbeschreibung:"; // FIXME: "interfaces" = ??
}
QCString trCompoundMembersDescription(bool extractAll)
// This is an introduction to the page with all class members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
result+="Strukturen und Varianten mit Verweisen auf ";
@@ -217,9 +222,9 @@ class TranslatorGerman : public Translator
result+="die Klassendokumentation zu jedem Element:";
} else {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- result+="die zugeh&ouml;rigen Elemente:";
+ result+="die zugehЖrigen Elemente:";
else
- result+="die zugeh&ouml;rigen Klassen:";
+ result+="die zugehЖrigen Klassen:";
}
return result;
}
@@ -227,11 +232,11 @@ class TranslatorGerman : public Translator
QCString trFileMembersDescription(bool extractAll)
// This is an introduction to the page with all file members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Dateielemente mit Verweisen auf ";
if (extractAll) result+="die Dateidokumentation zu jedem Element:";
- else result+="die zugeh&ouml;rigen Dateien:";
+ else result+="die zugehЖrigen Dateien:";
return result;
}
@@ -245,16 +250,16 @@ class TranslatorGerman : public Translator
QCString trRelatedPagesDescription()
// This is an introduction to the page with the list of related pages
- { return "Hier folgt eine Liste mit zusammengeh&ouml;rigen Themengebieten:"; }
+ { return "Hier folgt eine Liste mit zusammengehЖrigen Themengebieten:"; }
QCString trModulesDescription()
// This is an introduction to the page with the list of class/file groups
- { return "Hier folgt die Aufz&auml;hlung aller Module:"; }
+ { return "Hier folgt die AufzДhlung aller Module:"; }
QCString trNoDescriptionAvailable()
// This sentences is used in the annotated class/file lists if no brief
// description is given.
- { return "Keine Beschreibung verf&uuml;gbar"; }
+ { return "Keine Beschreibung verfЭgbar"; }
// index titles (the project name is prepended for these)
@@ -310,7 +315,7 @@ class TranslatorGerman : public Translator
QCString trPageDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all related pages.
- { return "Zus&auml;tzliche Informationen"; }
+ { return "ZusДtzliche Informationen"; }
QCString trReferenceManual()
// This is used in LaTeX as the title of the document
@@ -334,7 +339,7 @@ class TranslatorGerman : public Translator
QCString trEnumerations()
// This is used in the documentation of a file as a header before the
// list of enumerations
- { return "Aufz&auml;hlungen"; }
+ { return "AufzДhlungen"; }
QCString trFunctions()
// This is used in the documentation of a file as a header before the
@@ -349,7 +354,7 @@ class TranslatorGerman : public Translator
QCString trEnumerationValues()
// This is used in the documentation of a file as a header before the
// list of (global) variables
- { return "Aufz&auml;hlungswerte"; }
+ { return "AufzДhlungswerte"; }
QCString trAuthor()
// This is used in man pages as the author section.
@@ -373,12 +378,12 @@ class TranslatorGerman : public Translator
QCString trEnumerationTypeDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration types
- { return "Dokumentation der Aufz&auml;hlungstypen"; }
+ { return "Dokumentation der AufzДhlungstypen"; }
QCString trEnumerationValueDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration values
- { return "Dokumentation des Wertebereiches der Aufz&auml;hlungstypen"; }
+ { return "Dokumentation des Wertebereiches der AufzДhlungstypen"; }
QCString trFunctionDocumentation()
// This is used in the documentation of a file/namespace before the list
@@ -393,7 +398,7 @@ class TranslatorGerman : public Translator
QCString trCompounds()
// This is used in the documentation of a file/namespace/group before
// the list of links to documented compounds
- { return "&Uuml;bersicht"; }
+ { return "эbersicht"; }
QCString trFiles()
// This is used in the documentation of a group before the list of
@@ -403,7 +408,7 @@ class TranslatorGerman : public Translator
QCString trGeneratedAt(const char *date,const char *projName)
{
QCString result=(QCString)"Erzeugt am "+date;
- if (projName) result+=(QCString)" f&uuml;r "+projName;
+ if (projName) result+=(QCString)" fЭr "+projName;
result+=(QCString)" von";
return result;
}
@@ -416,17 +421,17 @@ class TranslatorGerman : public Translator
QCString trClassDiagram(const char *clName)
// this text is put before a class diagram
{
- return (QCString)"Klassendiagramm f&uuml;r "+clName;
+ return (QCString)"Klassendiagramm fЭr "+clName;
}
QCString trForInternalUseOnly()
// this text is generated when the \internal command is used.
- { return "Nur f&uuml;r den internen Gebrauch."; }
+ { return "Nur fЭr den internen Gebrauch."; }
QCString trReimplementedForInternalReasons()
// this text is generated when the \reimp command is used.
- { return "Aus internen Gr&uuml;nden neu implementiert. "
- "Das API wird davon nicht ber&uuml;hrt."; }
+ { return "Aus internen GrЭnden neu implementiert. "
+ "Das API wird davon nicht berЭhrt."; }
QCString trWarning()
// this text is generated when the \warning command is used.
@@ -434,7 +439,7 @@ class TranslatorGerman : public Translator
QCString trBugsAndLimitations()
// this text is generated when the \bug command is used.
- { return "Fehler und Einschr&auml;nkungen"; }
+ { return "Fehler und EinschrДnkungen"; }
QCString trVersion()
// this text is generated when the \version command is used.
@@ -450,7 +455,7 @@ class TranslatorGerman : public Translator
QCString trReturns()
// this text is generated when the \return command is used.
- { return "R&uuml;ckgabe"; }
+ { return "RЭckgabe"; }
QCString trSeeAlso()
// this text is generated when the \sa command is used.
@@ -539,25 +544,25 @@ class TranslatorGerman : public Translator
// these are for the member sections of a class, struct or union
QCString trPublicMembers()
- { return "&Ouml;ffentliche Datenelemente"; }
+ { return "жffentliche Datenelemente"; }
QCString trPublicSlots()
- { return "&Ouml;ffentliche Slots"; }
+ { return "жffentliche Slots"; }
QCString trSignals()
{ return "Signale"; }
QCString trStaticPublicMembers()
- { return "&Ouml;ffentliche, statische Datenelemente"; }
+ { return "жffentliche, statische Datenelemente"; }
QCString trProtectedMembers()
- { return "Gesch&uuml;tzte Datenelemente"; }
+ { return "GeschЭtzte Datenelemente"; }
QCString trProtectedSlots()
- { return "Gesch&uuml;tzte Slots"; }
+ { return "GeschЭtzte Slots"; }
QCString trStaticProtectedMembers()
- { return "Gesch&uuml;tzte, statische Datenelemente"; }
+ { return "GeschЭtzte, statische Datenelemente"; }
QCString trPrivateMembers()
{ return "Private Datenelemente"; }
@@ -605,7 +610,7 @@ class TranslatorGerman : public Translator
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
- return "Basisklasse f&uuml;r "+trWriteList(numEntries)+".";
+ return "Basisklasse fЭr "+trWriteList(numEntries)+".";
}
QCString trReimplementedFromList(int numEntries)
@@ -629,13 +634,13 @@ class TranslatorGerman : public Translator
QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members
{
- QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ QCString result="Hier folgt die AufzДhlung aller ";
if (!extractAll) result+="dokumentierten ";
result+="Namensbereichselemente mit Verweisen auf ";
if (extractAll)
- result+="die Namensbereichsdokumentation f&uuml;r jedes Element:";
+ result+="die Namensbereichsdokumentation fЭr jedes Element:";
else
- result+="die zugeh&ouml;rigen Dateien:";
+ result+="die zugehЖrigen Dateien:";
return result;
}
@@ -670,7 +675,7 @@ class TranslatorGerman : public Translator
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)"Die Dokumentation f&uuml;r diese";
+ QCString result=(QCString)"Die Dokumentation fЭr diese";
switch(compType)
{
case ClassDef::Class: result+=" Klasse"; break;
@@ -696,7 +701,7 @@ class TranslatorGerman : public Translator
/* This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
- { return "R&uuml;ckgabewerte"; }
+ { return "RЭckgabewerte"; }
/* This is in the (quick) index as a link to the main page (index.html)
*/
@@ -744,14 +749,13 @@ class TranslatorGerman : public Translator
/* this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
- return (QCString)"Zusammengeh&ouml;rigkeiten von "+clName+":";
+ return (QCString)"ZusammengehЖrigkeiten von "+clName+":";
}
- //RK: Apparently Jens missed the Umlaut here. Corrected that.
/* this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Include-Abh&auml;ngigkeitsdiagramm f&uuml;r "+fName+":";
+ return (QCString)"Include-AbhДngigkeitsdiagramm fЭr "+fName+":";
}
/* header that is put before the list of constructor/destructors. */
@@ -834,32 +838,32 @@ class TranslatorGerman : public Translator
virtual QCString trPublicTypes()
{
- return "&Ouml;ffentliche Typen";
+ return "жffentliche Typen";
}
virtual QCString trPublicAttribs()
{
- return "&Ouml;ffentliche Attribute";
+ return "жffentliche Attribute";
}
virtual QCString trStaticPublicAttribs()
{
- return "Statische &ouml;ffentliche Attribute";
+ return "Statische Жffentliche Attribute";
}
virtual QCString trProtectedTypes()
{
- return "Gesch&uuml;tzte Typen";
+ return "GeschЭtzte Typen";
}
virtual QCString trProtectedAttribs()
{
- return "Gesch&uuml;tzte Attribute";
+ return "GeschЭtzte Attribute";
}
virtual QCString trStaticProtectedAttribs()
{
- return "Statische gesch&uuml;tzte Attribute";
+ return "Statische geschЭtzte Attribute";
}
virtual QCString trPrivateTypes()
@@ -881,7 +885,6 @@ class TranslatorGerman : public Translator
// new since 1.1.3
//////////////////////////////////////////////////////////////////////////
-//RK: Started from here
/* Used as a marker that is put before a \todo item */
virtual QCString trTodo()
{
@@ -916,7 +919,7 @@ class TranslatorGerman : public Translator
virtual QCString trInclByDepGraph()
{
return "Dieser Graph zeigt, welche Datei direkt oder "
- "indirekt diese Datei enth&auml;lt:";
+ "indirekt diese Datei enthДlt:";
}
virtual QCString trSince()
@@ -931,26 +934,26 @@ class TranslatorGerman : public Translator
/* title of the graph legend page */
virtual QCString trLegendTitle()
{
- return "Erkl&auml;rung des Graphen";
+ return "ErklДrung des Graphen";
}
/* page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs()
{
return
- "Diese Seite erkl&auml;rt die Interpretation der von doxygen "
+ "Diese Seite erklДrt die Interpretation der von doxygen "
"erzeugten Graphen.<p>\n"
"Beispiel:\n"
"\\code\n"
- "/*! Wegen Verk&uuml;rzung unsichtbare Klasse */\n"
+ "/*! Wegen VerkЭrzung unsichtbare Klasse */\n"
"class Invisible { };\n\n"
- "/*! Klasse verk&uuml;rzt dargestellt, Vererbunsbeziehung ist versteckt */\n"
+ "/*! Klasse verkЭrzt dargestellt, Vererbungsbeziehung ist versteckt */\n"
"class Truncated : public Invisible { };\n\n"
"/* Nicht mit doxygen-Kommentaren dokumentierte Klasse */\n"
"class Undocumented { };\n\n"
- "/*! Mithilfe &ouml;ffentlicher Vererbung vererbte Klasse */\n"
+ "/*! Mithilfe Жffentlicher Vererbung vererbte Klasse */\n"
"class PublicBase : public Truncated { };\n\n"
- "/*! Mithilfe gesch&uumltzter Vererbung vererbte Klasse */\n"
+ "/*! Mithilfe geschЭtzter Vererbung vererbte Klasse */\n"
"class ProtectedBase { };\n\n"
"/*! Mithilfe privater Vererbung vererbte Klasse */\n"
"class PrivateBase { };\n\n"
@@ -972,22 +975,22 @@ class TranslatorGerman : public Translator
"<p>\n"
"Die Rechtecke in obigem Graphen bedeuten:\n"
"<ul>\n"
- "<li>Ein schwarz gef&uuml;lltes Rechteck stellt die Struktur oder "
- "Klasse dar, f&uuml;r die der Graph erzeugt wurde.\n"
+ "<li>Ein schwarz gefЭlltes Rechteck stellt die Struktur oder "
+ "Klasse dar, fЭr die der Graph erzeugt wurde.\n"
"<li>Ein Rechteck mit schwarzem Rahmen kennzeichnet eine dokumentierte "
" Struktur oder Klasse.\n"
"<li>Ein Rechteck mit grauem Rahmen kennzeichnet eine undokumentierte "
" Struktur oder Klasse.\n"
"<li>Ein Rechteck mit rotem Rahmen kennzeichnet eine dokumentierte "
- " Struktur oder Klasse, f&uuml;r die nicht alle Vererbungs-/"
- "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gek&uuml;rzt, "
+ " Struktur oder Klasse, fЭr die nicht alle Vererbungs-/"
+ "Enthaltenseinsbeziehungen dargestellt werden. Ein Graph wird gekЭrzt, "
"wenn er nicht in die angegebenen Schranken passt."
"</ul>\n"
"Die Pfeile bedeuten:\n"
"<ul>\n"
- "<li>Ein dunkelblauer Pfeil stellt eine &ouml;ffentliche Vererbungsbeziehung "
+ "<li>Ein dunkelblauer Pfeil stellt eine Жffentliche Vererbungsbeziehung "
"zwischen zwei Klassen dar.\n"
- "<li>Ein dunkelgr&uuml;ner Pfeil stellt gesch&uuml;tzte Vererbung dar.\n"
+ "<li>Ein dunkelgrЭner Pfeil stellt geschЭtzte Vererbung dar.\n"
"<li>Ein dunkelroter Pfeil stellt private Vererbung dar.\n"
"<li>Ein gestrichelter violetter Pfeil bedeutet, dass eine Klasse in einer "
"anderen enthalten ist oder von einer anderen benutzt wird. Am Pfeil "
diff --git a/src/translator_ru.h b/src/translator_ru.h
index e16596e..e13591c 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-1999 by Dimitri van Heesch.
+ * Copyright (C) 1997-2000 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -10,13 +10,39 @@
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
- * All output generated with Doxygen is not covered by this license.
- *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
*/
/*
- * Russian translation by Andrey V. Stolyarov <crocodil<AT>croco.net>
- * released Feb 14, 2001
+ *
+ * Nickolay Semyonov
+ * Andrey V. Stolyarov released Feb 14, 2001
+ * Alexandr V. Chelpanov <cav@cryptopro.ru> released Apr 21, 2001
+ *
+ * Доступны так же перевод примеров на русский язык по email (см. выше)
+ *
+ * При переводе заголовков слова list и documentation убраны.
+ *
+ * Modules переведено как группы, так как модули чаще всего в русском
+ * переводе встречается в контексте модуля как единицы трансляции, файла
+ * и др., что в данном случае не совсем подходит, тем более что
+ * соответствующая команда в doxygen именуется \group.
+ *
+ * Просьба не оптимизировать decode обрамляя результат, это может привести
+ * к перекодировке входа в том числе русских имен файлов.
+ *
+ * Отдано предпочтение при переводе related functions - "относящиеся к классу
+ * функции", а не "связанные функции", что верно до тех пор пока есть только
+ * related to class, и нет related to template, package и т.д. Последнее
+ * замечание касается большинства member.
+ *
+ * По возможности при переводе members указывается членом чего этот member
+ * является.
+ *
+ * Compounds переведено как классы, см Строустрап.
+ *
+ * Определения помеченные ?? являются спорными.
*/
#ifndef TRANSLATOR_RU_H
@@ -26,195 +52,343 @@
class TranslatorRussian : public Translator
{
- public:
- QCString idLanguage()
- { return "russian"; }
- QCString latexBabelPackage()
- { return "russian"; }
- QCString idLanguageCharset()
- {
- return "koi8-r";
- }
- QCString trRelatedFunctions()
- {
- return "Связанные функции";
- }
- QCString trRelatedSubscript()
- {
- return "(Обратите внимание, что эти функции - не члены класса)";
- }
- QCString trDetailedDescription()
- {
- return "Детальное описание";
- }
- QCString trMemberTypedefDocumentation()
- {
- // Need additional translation
- return "Описание typedef-членов";
- }
- QCString trMemberEnumerationDocumentation()
- {
- return "Описание членов перечислимого типа";
- }
- QCString trMemberFunctionDocumentation()
- {
- return "Описание функций-членов";
- }
- QCString trMemberDataDocumentation()
- {
- if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- {
- return "Описание полей";
+ protected:
+ /*! Returns the string converted from koi8-r to windows-1251. */
+ /* The method was designed initially for translator_cz.h.
+ It is used for on-line encoding conversion related to conditional
+ compilation in Unix/MS Windows environments (both use different
+ encoding).
+ Encoding table got from QT:qtextcodec.cpp
+ */
+ QCString Koi8RToWindows1251( const QCString sInput )
+ {
+ static Q_UINT16 koi8_r[128] =
+ { 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
+ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219/**/, 0x221A, 0x2248,
+ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
+ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
+ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
+ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
+ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
+ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A
+ };
+
+ QString result;
+ int len = sInput.length();
+
+ result.setUnicode(0, len);
+ QChar* uc = (QChar*)result.unicode(); // const_cast
+ const unsigned char * c = (const unsigned char *)(const char*)sInput;
+ for( int i=0; i<len; i++ ) {
+ if ( c[i] > 127 )
+ uc[i] = koi8_r[c[i]-128];
+ else
+ uc[i] = c[i];
}
- else
- {
- return "Описание переменных-членов";
+ return result.local8Bit();
+ }
+ /*! returns the string converted from Windows-1251 to koi8-r */
+ /* See the comments of the Koi8RToWindows1251() method for details.
+ Encoding table got from QT:qtextcodec.cpp */
+ QCString Windows1251ToKoi8R( const QCString sInput )
+ {
+ static Q_UINT16 windows_1251[128] =
+ { 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
+ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
+ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+ 0xFFFD, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
+ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
+ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
+ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
+ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
+ };
+
+ QString result;
+ int len = sInput.length();
+
+ result.setUnicode(0, len);
+ QChar* uc = (QChar*)result.unicode(); // const_cast
+ const unsigned char * c = (const unsigned char *)(const char*)sInput;
+ for( int i=0; i<len; i++ ) {
+ if ( c[i] > 127 )
+ uc[i] = windows_1251[c[i]-128];
+ else
+ uc[i] = c[i];
}
+ return result.local8Bit();
}
- QCString trMore()
- {
- return "Дальше...";
- }
- QCString trListOfAllMembers()
- {
- return "Cписок всех членов класса.";
- }
- QCString trMemberList()
- {
- return "Список членов";
- }
- QCString trThisIsTheListOfAllMembers()
- {
- return "Это полный список членов класса/структуры ";
- }
- QCString trIncludeIncludingInheritedMembers()
- {
- return ", включая все унаследованные члены.";
- }
- QCString trGeneratedAutomatically(const char *s)
- { QCString result="Автоматически создано системой Doxygen";
- if (s) result+=(QCString)" для "+s;
- result+=" по файлам исходного текста.";
- return result;
- }
- QCString trEnumName()
- {
- return "имя перечисления";
- }
- QCString trEnumValue()
- {
- return "значение перечисления";
- }
- QCString trDefinedIn()
- {
- return "определено в";
- }
- QCString trVerbatimText(const char* f)
- {
- return (QCString)"Это прямая вставка текста из включаемого файла"+f;
- }
- QCString trModules()
- {
- return "Модули";
- }
- QCString trClassHierarchy()
- {
- return "Иерархия классов";
+
+ private:
+ /*! The Decode() inline assumes the source written in the
+ Koi8-R encoding (maintainer dependent).
+ */
+ inline QCString decode(const QCString & sInput)
+ {
+#ifdef _WIN32
+ return Koi8RToWindows1251(sInput);
+#else
+ return sInput;
+#endif
}
- QCString trCompoundList()
+
+ public:
+ /*! Used for identification of the language. */
+ virtual QCString idLanguage()
+ { return "russian"; }
+
+ /* Used to get the command(s) for the language support. */
+ // virtual QCString latexLanguageSupportCommand()
+
+ /*! Used to get the command(s) for the language support. This method
+ * was designed for languages which do not prefer babel package.
+ * If this methods returns empty string, then the latexBabelPackage()
+ * method is used to generate the command for using the babel package.
+ */
+ virtual QCString latexBabelPackage()
+ { return "russianb"; }
+
+ /*! return the language charset. This will be used for the HTML output */
+ virtual QCString idLanguageCharset()
+#ifdef _WIN32
+ { return "Windows-1215"; }
+#else
+ { return "koi8-r"; }
+#endif
+
+ // --- Language translation methods -------------------
+
+ /*! used in the compound documentation before a list of related functions. */
+ virtual QCString trRelatedFunctions()
+ { return decode("Относящиеся к классу функции"); }
+
+ /*! subscript for the related functions. */
+ virtual QCString trRelatedSubscript()
+ { return decode("(не члены класса)"); }
+
+ /*! header that is put before the detailed description of files, classes and namespaces. */
+ virtual QCString trDetailedDescription()
+ { return decode("Подробное описание"); }
+
+ /*! header that is put before the list of typedefs. */
+ virtual QCString trMemberTypedefDocumentation()
+ { return decode("Определения типов"); }
+
+ /*! header that is put before the list of enumerations. */
+ virtual QCString trMemberEnumerationDocumentation()
+ { return decode("Перечисления"); }
+
+ /*! header that is put before the list of member functions. */
+ virtual QCString trMemberFunctionDocumentation()
+ { return decode("Методы"); }
+
+ /*! header that is put before the list of member attributes. */
+ virtual QCString trMemberDataDocumentation()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Структуры данных";
+ return decode( "Поля" );
}
else
{
- // doubtful translation; originally - "Compound List"
- return "Список составных объектов";
+ return decode( "Данные класса" );
}
}
- QCString trFileList()
+
+ /*! this is the text of a link put after brief descriptions. */
+ virtual QCString trMore()
+ { return decode("Подробнее..."); }
+
+ /*! put in the class documentation */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trListOfAllMembers()
{
- return "Список файлов";
+ return decode( "Полный список членов класса" );
}
- QCString trHeaderFiles()
+
+ /*! used as the title of the "list of all members" page of a class */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trMemberList()
{
- return "Заголовочные файлы";
+ return decode( "Cписок членов класса" );
}
- QCString trCompoundMembers()
+
+ /*! this is the first part of a sentence that is followed by a class name */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return decode("Полный список членов класса"); }
+
+ /*! this is the remainder of the sentence after the class name */
+ /* Dosn't use when optimization for C is on. */
+ virtual QCString trIncludingInheritedMembers()
+ { return decode(", включая наследуемые из базового класса"); }
+
+ /*! this is put at the author sections at the bottom of man pages.
+ * parameter s is name of the project name.
+ */
+ virtual QCString trGeneratedAutomatically(const char *s)
+ { QCString result=decode("Автоматически создано Doxygen");
+ if (s) result+=decode(" для ")+s;
+ result+=decode(" из исходного текста.");
+ return result;
+ }
+
+ /*! put after an enum name in the list of all members */
+ virtual QCString trEnumName()
+ { return decode("перечисление"); }
+
+ /*! put after an enum value in the list of all members */
+ virtual QCString trEnumValue()
+ { return decode("элементы перечисления"); }
+
+ /*! put after an undocumented member in the list of all members */
+ virtual QCString trDefinedIn()
+ { return decode("определено в"); }
+
+ // TODO: trVerbatimText is no longer used => remove!
+ /*! put as in introduction in the verbatim header file of a class.
+ * parameter f is the name of the include file.
+ */
+ virtual QCString trVerbatimText(const char *f)
+ { return decode( (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).
+ */
+ virtual QCString trModules()
+ { return decode("Группы"); }
+
+ /*! This is put above each page as a link to the class hierarchy */
+ virtual QCString trClassHierarchy()
+ { return decode("Иерархия классов"); }
+
+ /*! This is put above each page as a link to the list of annotated classes */
+ virtual QCString trCompoundList()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Поля структур";
+ return decode( "Структуры данных" );
}
else
{
- return "Члены-данные";
+ return decode( "Классы" );
}
}
- QCString trFileMembers()
+
+ /*! This is put above each page as a link to the list of documented files */
+ virtual QCString trFileList()
+ { return decode("Файлы"); }
+
+ /*! This is put above each page as a link to the list of all verbatim headers */
+ virtual QCString trHeaderFiles()
+ { return decode("Заголовочные файлы"); }
+
+ /*! This is put above each page as a link to all members of compounds. */
+ virtual QCString trCompoundMembers()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Глобальные имена";
+ return decode( "Поля структур" );
}
else
{
- // doubtful translation
- // (originally - "File members", but not good for Russian)
- return "Члены файла";
+ return decode( "Члены классов" );
}
}
- QCString trRelatedPages()
- {
- // non-verbatim translation: originally "related pages"
- return "См. также: ";
- }
- QCString trExamples()
- {
- return "Примеры";
- }
- QCString trSearch()
- {
- return "Поиск";
- }
- QCString trClassHierarchyDescription()
+
+ /*! This is put above each page as a link to all members of files. */
+ /*??*/
+ virtual QCString trFileMembers()
{
- return "Это дерево наследования отсортировано приблизительно "
- "(но не совсем) по алфавиту";
+ return decode( "Члены файла" );
}
- QCString trFileListDescription(bool extractAll)
+
+ /*! This is put above each page as a link to all related pages. */
+ virtual QCString trRelatedPages()
+ /* ?? Вариант перевода "См. также: " более удачный, но не в заголовке,
+ как в данном случае. */
+ { return decode("Описания"); }
+
+ /*! This is put above each page as a link to all examples. */
+ virtual QCString trExamples()
+ { return decode("Примеры"); }
+
+ /*! This is put above each page as a link to the search engine. */
+ virtual QCString trSearch()
+ { return decode("Поиск"); }
+
+ /*! This is an introduction to the class hierarchy. */
+ virtual QCString trClassHierarchyDescription()
+ { return decode("Иерархия классов."); }
+
+ /*! This is an introduction to the list with all files. */
+ virtual QCString trFileListDescription(bool extractAll)
{
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="файлов с кратким описанием:";
- return result;
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="файлов.";
+ return decode(result);
}
- QCString trCompoundListDescription()
+
+ /*! This is an introduction to the annotated compound list. */
+ virtual QCString trCompoundListDescription()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Структуры данных и их краткое описание: ";
+ return decode( "Структуры данных с их кратким описанием." );
}
else
{
- return "Классы, структуры, объединения и интерфейсы "
- "и их краткое описание: ";
+ return decode( "Классы с их кратким описанием." );
}
}
- QCString trCompoundMembersDescription(bool extractAll)
+
+ /*! This is an introduction to the page with all class members. */
+ virtual QCString trCompoundMembersDescription(bool extractAll)
{
- // Need additional translation
QCString result="Список всех ";
if(!extractAll) result+="документированных ";
- result+="членов классов со ссылками на ";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result+="членов структур данных со ссылками на ";
+ else
+ result+="членов классов со ссылками на ";
if(extractAll)
- result+="документацию по классу для каждого члена:";
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result+="документацию по структуре для каждого члена.";
+ else
+ result+="документацию по классу для каждого члена.";
+ }
else
- result+="классы, к которым они принадлежат:";
- return result;
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ result += "структуры";
+ else
+ result += "классы";
+ result+=", к которым они принадлежат.";
+ }
+ return decode( result );
}
- QCString trFileMembersDescription(bool extractAll)
+
+ /*! This is an introduction to the page with all file members. */
+ virtual QCString trFileMembersDescription(bool extractAll)
{
QCString result="Список всех ";
if (!extractAll) result+="документированных ";
@@ -230,598 +404,781 @@ class TranslatorRussian : public Translator
}
result+=" со ссылками на ";
if (extractAll)
- result+="файлы, к которым они принадлежат:";
+ result+="файлы, к которым они принадлежат.";
else
- result+="документацию:";
- return result;
- }
- QCString trHeaderFilesDescription()
- {
- return "Список заголовочных файлов, составляющих API:";
- }
- QCString trExamplesDescription()
- {
- return "Список всех примеров:";
- }
- QCString trRelatedPagesDescription()
- {
- return "Список всех родственных страниц документации:";
+ result+="документацию.";
+ return decode( result );
}
- QCString trModulesDescription()
- {
- return "Список всех модулей:";
- }
- QCString trNoDescriptionAvailable()
- {
- return "Описание отсутствует";
- }
- QCString trDocumentation()
- {
- return "Документация";
- }
- QCString trModuleIndex()
- {
- return "Указатель модулей";
- }
- QCString trHierarchicalIndex()
- {
- return "Иерархический список";
- }
- QCString trCompoundIndex()
+
+ /*! This is an introduction to the page with the list of all header files. */
+ virtual QCString trHeaderFilesDescription()
+ { return decode("Полный список заголовочных файлов."); }
+
+ /*! This is an introduction to the page with the list of all examples */
+ virtual QCString trExamplesDescription()
+ { return decode("Полный список примеров."); }
+
+ /*! This is an introduction to the page with the list of related pages */
+ virtual QCString trRelatedPagesDescription()
+ { return decode("Полный список дополнительных описаний."); }
+
+ /*! This is an introduction to the page with the list of class/file groups */
+ virtual QCString trModulesDescription()
+ { return decode("Полный список групп."); }
+
+ /*! This sentences is used in the annotated class/file lists if no brief
+ * description is given.
+ */
+ virtual QCString trNoDescriptionAvailable()
+ { return decode("Описание отсутсвует"); }
+
+ // index titles (the project name is prepended for these)
+
+
+ /*! This is used in HTML as the title of index.html. */
+ virtual QCString trDocumentation()
+ { return decode("Документация"); }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all groups.
+ */
+ virtual QCString trModuleIndex()
+ { return decode("Алфавитный указатель групп"); }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * class hierarchy.
+ */
+ virtual QCString trHierarchicalIndex()
+ { return decode("Иерархический список классов"); }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index.
+ */
+ virtual QCString trCompoundIndex()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Список структур данных";
+ return decode( "Алфавитный указатель структур данных" );
}
else
{
- // originally "compound index"
- return "Список классов и структур";
+ return decode( "Алфавитный указатель классов" );
}
}
- QCString trFileIndex()
- {
- return "Список файлов";
- }
- QCString trModuleDocumentation()
- {
- return "Документация по модулям";
- }
- QCString trClassDocumentation()
- {
- return "Документация по классам";
- }
- QCString trFileDocumentation()
- {
- return "Документация по файлам";
- }
- QCString trExampleDocumentation()
- {
- return "Описания примеров";
- }
- QCString trPageDocumentation()
- {
- return "Документация по страницам";
- }
- QCString trReferenceManual()
- {
- // originally reference manual
- return "Краткий справочник";
- }
- QCString trDefines()
- {
- return "Определения";
- }
- QCString trFunctionPrototypes()
- {
- return "Прототипы функций";
- }
- QCString trTypedefs()
- {
- return "Определения типов";
- }
- QCString trEnumerations()
- {
- return "Перечисления";
- }
- QCString trFunctions()
- {
- return "Функции";
- }
- QCString trVariables()
- {
- return "Переменные";
- }
- QCString trEnumerationValues()
- {
- return "Значения перечислимого типа";
- }
- QCString trAuthor()
- {
- return "Автор";
- }
- QCString trDefineDocumentation()
- {
- return "Документация по определениям";
- }
- QCString trFunctionPrototypeDocumentation()
- {
- return "Документация по прототипам функций";
- }
- QCString trTypedefDocumentation()
- {
- return "Документация по определениям типов";
- }
- QCString trEnumerationTypeDocumentation()
- {
- return "Документация по перечислимым типам";
- }
- QCString trEnumerationValueDocumentation()
- {
- return "Документация по значениям перечислимых типов";
- }
- QCString trFunctionDocumentation()
- {
- return "Документация по функциям";
- }
- QCString trVariableDocumentation()
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * list of all files.
+ */
+ virtual QCString trFileIndex()
+ { return decode( "Список файлов" ); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all groups.
+ */
+ virtual QCString trModuleDocumentation()
+ { return decode("Группы"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all classes, structs and unions.
+ */
+ virtual QCString trClassDocumentation()
{
- return "Документация по переменным";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode( "Структуры данных" );
+ }
+ else
+ {
+ return decode( "Классы" );
+ }
}
- QCString trCompounds()
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all files.
+ */
+ virtual QCString trFileDocumentation()
+ { return decode("Файлы"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all examples.
+ */
+ virtual QCString trExampleDocumentation()
+ { return decode("Примеры"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all related pages.
+ */
+ virtual QCString trPageDocumentation()
+ { return decode("Тематические описания"); }
+
+ /*! This is used in LaTeX as the title of the document */
+ virtual QCString trReferenceManual()
+ { return decode("Оглавление"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of defines
+ */
+ virtual QCString trDefines()
+ { return decode("Макросы"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of function prototypes
+ */
+ virtual QCString trFuncProtos()
+ { return decode("Прототипы функций"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of typedefs
+ */
+ virtual QCString trTypedefs()
+ { return decode("Определения типов"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of enumerations
+ */
+ virtual QCString trEnumerations()
+ { return decode("Перечисления"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) functions
+ */
+ virtual QCString trFunctions()
+ { return decode("Функции"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trVariables()
+ { return decode("Переменные"); }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) variables
+ */
+ virtual QCString trEnumerationValues()
+ { return decode("Элементы перечислений"); }
+
+ /*! This is used in man pages as the author section. */
+ virtual QCString trAuthor()
+ { return decode("Автор"); }
+
+ /*! This is used in the documentation of a file before the list of
+ * documentation blocks for defines
+ */
+ virtual QCString trDefineDocumentation()
+ { return decode("Макросы"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for function prototypes
+ */
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return decode("Прототипы функций"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for typedefs
+ */
+ virtual QCString trTypedefDocumentation()
+ { return decode("Типы"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration types
+ */
+ virtual QCString trEnumerationTypeDocumentation()
+ { return decode("Перечисления"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for enumeration values
+ */
+ virtual QCString trEnumerationValueDocumentation()
+ { return decode("Элементы перечислений"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for functions
+ */
+ virtual QCString trFunctionDocumentation()
+ { return decode("Функции"); }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for variables
+ */
+ virtual QCString trVariableDocumentation()
+ { return decode("Переменные"); }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds
+ */
+ virtual QCString trCompounds()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Структуры данных";
+ return decode( "Структуры данных" );
}
else
{
- // originally "compounds"
- return "Составные типы";
+ return decode( "Классы" );
}
}
- QCString trFiles()
- {
- return "Файлы";
- }
- QCString trGeneratedAt(const char* date,const char* projName)
- {
- QCString result=(QCString)"Создано "+date;
- if(projName) result+=(QCString)" для "+projName;
- result+=(QCString)" с помощью ";
- return result;
- }
- QCString trWrittenBy()
- {
- return "написанного";
- }
- QCString trClassDiagram(const char* clName)
- {
- return (QCString)"Диаграмма наследования для "+clName+":";
- }
- QCString trForInternalUseOnly()
- {
- return "Только для внутреннего использования.";
- }
- QCString trReimplementedForInternalREasons()
- {
- return "Реализация изменена по внутренним причинам;"
- " Интерфейсная часть не изменилась.";
- }
- QCString trWarning()
- {
- return "Предупреждение";
- }
- QCString trBugsAndLimitations()
- {
- return "Ошибки и ограничения";
- }
- QCString trVersion()
- {
- return "Версия";
- }
- QCString trDate()
- {
- return "Дата";
- }
- QCString trAuthors()
- {
- return "Автор(ы)";
- }
- QCString trReturns()
- {
- return "Возвращает";
- }
- QCString trSeeAlso()
- {
- return "См. также";
- }
- QCString trParameters()
- {
- return "Параметры";
- }
- QCString trExceptions()
- {
- return "Исключения";
- }
- QCString trGeneratedBy()
- {
- return "Создано при помощи";
+
+ /*! This is used in the documentation of a group before the list of
+ * links to documented files
+ */
+ virtual QCString trFiles()
+ { return decode("Файлы"); }
+
+ /*! This is used in the standard footer of each page and indicates when
+ * the page was generated
+ */
+ virtual QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result=decode("Документация ");
+ if (projName) result+=decode("по ")+projName;
+ result+=decode(". Последние изменения: ")+date;
+ result+=decode(". Создано системой ");
+ return result;
}
- QCString trNamespaceList()
+ /*! This is part of the sentence used in the standard footer of each page.
+ */
+ virtual QCString trWrittenBy()
{
- return "Список пространств имен (namespaces)";
+ return decode("Автор:");
}
- QCString trNamespaceListDescription(bool extractAll)
+
+ /*! this text is put before a class diagram */
+ virtual QCString trClassDiagram(const char *clName)
{
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="пространств имен с кратким описанием:";
- return result;
+ return decode("Граф наследования:")+clName+":";
}
- QCString trFriends()
- {
- return "Друзья";
+
+ /*! this text is generated when the \\internal command is used. */
+ virtual QCString trForInternalUseOnly()
+ { return decode("Только для внутреннего использования"); }
+
+ /*! this text is generated when the \\reimp command is used. */
+ virtual QCString trReimplementedForInternalReasons()
+ /*??*/
+ { return decode("Изменено по внутренним причинам");
}
- QCString trRelatedFunctionDocumentation()
+
+ /*! this text is generated when the \\warning command is used. */
+ virtual QCString trWarning()
+ { return decode("Предупреждения"); }
+
+ /*! this text is generated when the \\bug command is used. */
+ virtual QCString trBugsAndLimitations()
+ { return decode("Ошибки и ограничения"); }
+
+ /*! this text is generated when the \\version command is used. */
+ virtual QCString trVersion()
+ { return decode("Версия"); }
+
+ /*! this text is generated when the \\date command is used. */
+ virtual QCString trDate()
+ { return decode("Дата"); }
+
+ /*! this text is generated when the \\author command is used. */
+ virtual QCString trAuthors()
+ { return decode("Автор(ы)"); }
+
+ /*! this text is generated when the \\return command is used. */
+ virtual QCString trReturns()
+ { return decode("Возвращает"); }
+
+ /*! this text is generated when the \\sa command is used. */
+ virtual QCString trSeeAlso()
+ { return decode("См. также"); }
+
+ /*! this text is generated when the \\param command is used. */
+ virtual QCString trParameters()
+ { return decode("Аргументы"); }
+
+ /*! this text is generated when the \\exception command is used. */
+ virtual QCString trExceptions()
+ { return decode("Исключения"); }
+
+ /*! this text is used in the title page of a LaTeX document. */
+ virtual QCString trGeneratedBy()
+ { return decode("Создано системой"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used as the title of page containing all the index of all namespaces. */
+ virtual QCString trNamespaceList()
+ { return decode("Пространства имен"); }
+
+ /*! used as an introduction to the namespace list */
+ virtual QCString trNamespaceListDescription(bool extractAll)
{
- // need translation
- return "Документация по друзьям класса и связанным функциям";
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="пространств имен.";
+ return decode(result);
}
- QCString trCompoundReference(const char* clName,
+
+ /*! used in the class documentation as a header before the list of all
+ * friends of a class
+ */
+ virtual QCString trFriends()
+ { return decode("Друзья"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used in the class documentation as a header before the list of all
+ * related classes
+ */
+ virtual QCString trRelatedFunctionDocumentation()
+ { return decode("Документация по друзьям класса и функциям отноносящихся"
+ "к классу"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ /*! used as the title of the HTML page of a class/struct/union */
+ virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
- QCString result=(QCString)"Описание ";
- if (isTemplate){
- switch(compType)
- {
- case ClassDef::Struct: result+="шаблонной "; break;
- case ClassDef::Class:
- case ClassDef::Union:
- case ClassDef::Interface:
- case ClassDef::Exception:
- result+="шаблонного "; break;
- }
- }
+ QCString result;
+ if (isTemplate)
+ {
+ result="Шаблон ";
switch(compType)
{
- case ClassDef::Class: result+="класса "; break;
- case ClassDef::Struct: result+="структуры "; break;
- case ClassDef::Union: result+="объединения "; break;
- case ClassDef::Interface: result+="интерфейса "; break;
- case ClassDef::Exception: result+="исключения "; break;
+ case ClassDef::Class: result+="класса"; break;
+ case ClassDef::Struct: result+="структуры"; break;
+ case ClassDef::Union: result+="объединения"; break;
+ case ClassDef::Interface: result+="интерфейса"; break;
+ case ClassDef::Exception: result+="исключения"; break;
}
- result+=clName;
- return result;
- }
- QCString trFileReference(const char* fileName)
- {
- QCString result;
- result+=(QCString)"Описание файла "+fileName;
- return result;
- }
- QCString trNamespaceReference(const char* namespaceName)
- {
- QCString result=(QCString)"Описание пространства имен "+namespaceName;
- return result;
- }
- QCString trPublicMembers()
- {
- return "Открытые члены";
- }
- QCString trPublicSlots()
- {
- return "Открытые слоты";
- }
- QCString trSignals()
- {
- return "Сигналы";
- }
- QCString trStaticPublicMembers()
- {
- return "Статические открытые члены";
- }
- QCString trProtectedMembers()
- {
- return "Защищенные члены";
- }
- QCString trProtectedSlots()
- {
- return "Защищенные слоты";
- }
- QCString trStaticProtectedSlots()
- {
- return "Статические защищенные слоты";
- }
- QCString trPrivateMembers()
- {
- return "Закрытые члены";
- }
- QCString trPrivateSlots()
- {
- return "Закрытые слоты";
- }
- QCString trStaticPrivateMembers()
- {
- return "Закрытые статические члены";
- }
- QCString trWriteList(int numEntries)
- {
- QCString result;
- int i;
- for(i=0;i<numEntries;i++)
+ }
+ else
+ {
+ switch(compType)
{
- result+=generateMarker(i);
- if(i!=numEntries-1)
- {
- if(i<numEntries-2)
- result+=", ";
- else
- result+=" и ";
- }
+ case ClassDef::Class: result+="Класс"; break;
+ case ClassDef::Struct: result+="Структура"; break;
+ case ClassDef::Union: result+="Объединение"; break;
+ case ClassDef::Interface: result+="Интерфейс"; break;
+ case ClassDef::Exception: result+="Исключение"; break;
}
- return result;
- }
- QCString trInheritsList(int numEntries)
- {
- return "Унаследован от "+trWriteList(numEntries)+".";
- }
- QCString trInheritedByList(int numEntries)
- {
- return "Наследуется "+trWriteList(numEntries)+".";
+ }
+ result+=" ";
+ return decode(result)+clName;
}
- QCString trReimplementedFromList(int numEntries)
- {
- // Originally: "reimplemented from"
- // This translation assumes numEntries is always 1
- // which is true as of 1.2.5 and it's hard for me to
- // imagine a situation when it could be wrong.
- return "Переопределяет метод предка "+trWriteList(numEntries)+".";
- }
- QCString trReimplementedInList(int numEntries)
+ /*! used as the title of the HTML page of a file */
+ virtual QCString trFileReference(const char *fileName)
{
- return "Переопределяется в "+trWriteList(numEntries)+".";
+ return decode("Файл ")+fileName;
}
- QCString trNamespaceMembers()
- {
- return "Члены пространств имен";
- }
- QCString trNamespaceMemberDescription(bool extractAll)
- {
- QCString result="Список всех ";
- if(!extractAll) result+="документированных ";
- result+="членов пространств имен со ссылками на ";
- if(extractAll)
- result+="документацию по каждому члену:";
- else
- result+="пространства имен, к которым они принадлежат:";
- return result;
- }
- QCString trNamespaceIndex()
- {
- return "Индекс пространств имен";
- }
- QCString trNamespaceDocumentation()
- {
- return "Документация пространств имен";
+
+ /*! used as the title of the HTML page of a namespace */
+ virtual QCString trNamespaceReference(const char *namespaceName)
+ {
+ return decode("Пространство имен ")+namespaceName;
+ }
+
+ virtual QCString trPublicMembers()
+ { return decode("Публичные члены"); }
+ virtual QCString trPublicSlots()
+ { return decode("Публичные слоты"); }
+ virtual QCString trSignals()
+ { return decode("Сигналы"); }
+ virtual QCString trStaticPublicMembers()
+ { return decode("Публичные статические члены"); }
+ virtual QCString trProtectedMembers()
+ { return decode("Защищенные члены"); }
+ virtual QCString trProtectedSlots()
+ { return decode("Защищенные слоты"); }
+ virtual QCString trStaticProtectedMembers()
+ { return decode("Защищенные статические члены"); }
+ virtual QCString trPrivateMembers()
+ { return decode("Приватные члены"); }
+ virtual QCString trPrivateSlots()
+ { return decode("Приватные слоты"); }
+ virtual QCString trStaticPrivateMembers()
+ { return decode("Приватные статические члены"); }
+
+ /*! this function is used to produce a comma-separated list of items.
+ * use generateMarker(i) to indicate where item i should be put.
+ */
+ virtual QCString trWriteList(int numEntries)
+ {
+ QCString result;
+ int i;
+ // the inherits list contain `numEntries' classes
+ for (i=0;i<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=decode( " и " );
+ }
+ }
+ return result;
}
- QCString trNamespaces()
+
+ /*! used in class documentation to produce a list of base classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritsList(int numEntries)
{
- return "Пространства имен";
+ return decode("Базовые классы:")+trWriteList(numEntries)+".";
}
- QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)
+
+ /*! used in class documentation to produce a list of super classes,
+ * if class diagrams are disabled.
+ */
+ virtual QCString trInheritedByList(int numEntries)
{
- QCString result=(QCString)"Документация для это";
- switch(compType)
- {
- case ClassDef::Class: result+="го класса"; break;
- case ClassDef::Struct: result+="й структуры"; break;
- case ClassDef::Union: result+="го объединения"; break;
- case ClassDef::Interface: result+="го интерфейса"; break;
- case ClassDef::Exception: result+="го исключения"; break;
- }
- result+=" была создана из файл";
- if(single)
- result+="а:";
- else
- result+="ов:";
- return result;
+ return decode("Производные классы:")+trWriteList(numEntries)+".";
}
- QCString trAlphabeticalList()
+
+ /*! used in member documentation blocks to produce a list of
+ * members that are hidden by this one.
+ */
+ virtual QCString trReimplementedFromList(int numEntries)
{
- return "Алфавитный список";
+ return decode("Переопределяет метод предка ")+trWriteList(numEntries)+".";
}
- QCString trReturnValues()
+
+ /*! used in member documentation blocks to produce a list of
+ * all member that overwrite the implementation of this member.
+ */
+ virtual QCString trReimplementedInList(int numEntries)
{
- return "Возвращаемые значения";
+ return decode("Переопределяется в ")+trWriteList(numEntries)+".";
}
- QCString trMainPage()
+
+ /*! This is put above each page as a link to all members of namespaces. */
+ virtual QCString trNamespaceMembers()
+ { return decode("Члены пространства имен"); }
+
+ /*! This is an introduction to the page with all namespace members */
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- return "Главная страница";
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="членов простанства имен.";
+ return decode(result);
}
- QCString trPageAbbreviation()
- {
- return "стр.";
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all namespaces.
+ */
+ virtual QCString trNamespaceIndex()
+ { return decode("Алфавитный указатель пространства имен"); }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all namespaces.
+ */
+ virtual QCString trNamespaceDocumentation()
+ { return decode("Пространства имен"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990522
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used in the documentation before the list of all
+ * namespaces in a file.
+ */
+ virtual QCString trNamespaces()
+ { return decode( "Пространства имен" ); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990728
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is put at the bottom of a class documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Class", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Объявления и описания членов ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="класс";
+ if (single) result+='а'; else result+="ов";
+ break;
+ case ClassDef::Struct: result+="структур";
+ if (single) result+='ы';
+ break;
+ case ClassDef::Union: result+="объединени";
+ if (single) result+='я'; else result+='й';
+ break;
+ case ClassDef::Interface: result+="интерфейс";
+ if (single) result+='а'; else result+="ов";
+ break;
+ case ClassDef::Exception: result+="исключени";
+ if (single) result+='я'; else result+='й';
+ break;
+ }
+ result+=" находятся в файл";
+ if (single) result+="е:"; else result+="ах:";
+ return decode(result);
}
- QCString trSources()
+
+ /*! This is in the (quick) index as a link to the alphabetical compound
+ * list.
+ */
+ virtual QCString trAlphabeticalList()
+ { return decode("Алфавитный указатель"); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990901
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This is used as the heading text for the retval command. */
+ virtual QCString trReturnValues()
+ { return decode("Возвращаемые значения"); }
+
+ /*! This is in the (quick) index as a link to the main page (index.html)
+ */
+ virtual QCString trMainPage()
+ { return decode("Титульная страница"); }
+
+ /*! This is used in references to page that are put in the LaTeX
+ * documentation. It should be an abbreviation of the word page.
+ */
+ virtual QCString trPageAbbreviation()
+ { return decode("стр."); }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991106
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trSources()
{
- return "Исходные тексты";
+ return decode("Исходные тексты.");
}
- QCString trDefinedAtLineInSourceFile()
+ virtual QCString trDefinedAtLineInSourceFile()
{
- return "Определяется в строке @0 файла @1.";
+ return decode("См. определение в файле @1 строка @0");
}
- QCString trDefinedInSourceFile()
+ virtual QCString trDefinedInSourceFile()
{
- return "Определяется в файле @0.";
+ return decode("См. определение в файле @0");
}
- QCString trDeprecated()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-991205
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trDeprecated()
{
- return "Устарело";
+ return decode("Уст.");
}
- QCString trCollaborationDiagram(const char* clName)
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.0.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! this text is put before a collaboration diagram */
+ virtual QCString trCollaborationDiagram(const char *clName)
{
- // originally "collaboration diagram"
- return (QCString)"Диаграмма использования для "+clName+":";
+ return (QCString)decode("Граф связей класса ")+clName+":";
}
- QCString trInclDepGraph(const char* fName)
+ /*! this text is put before an include dependency graph */
+ virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)"Граф зависимостей по включениям "
- "файлов для "+fName+":";
+ return decode("Граф включаемых заголовочных файлов для ")+fName+":";
}
- QCString trConstructorDocumentation()
+ /*! header that is put before the list of constructor/destructors. */
+ virtual QCString trConstructorDocumentation()
{
- return "Документация по конструктору и деструктору";
+ return decode("Конструктор(ы)");
}
- QCString trGotoSourceCode()
+ /*! Used in the file documentation to point to the corresponding sources. */
+ virtual QCString trGotoSourceCode()
{
- return "Перейти к исходному тексту этого файла.";
+ return decode("См. исходные тексты.");
}
- QCString trGotoDocumentation()
+ /*! Used in the file sources to point to the corresponding documentation. */
+ virtual QCString trGotoDocumentation()
{
- return "Перейти к документации на этот файл.";
+ return decode("См. документацию.");
}
- QCString trPrecondition()
+ /*! Text for the \pre command */
+ virtual QCString trPrecondition()
{
- return "Предусловие";
+ return decode("Предусловие");
}
- QCString trPostcondition()
+ /*! Text for the \post command */
+ virtual QCString trPostcondition()
{
- return "Постусловие";
+ return decode("Постусловие");
}
- QCString trInvariant()
+ /*! Text for the \invariant command */
+ virtual QCString trInvariant()
{
- return "Инвариант";
+ return decode("Инвариант");
}
- QCString trInitialValue()
+ /*! Text shown before a multi-line variable/enum initialization */
+ virtual QCString trInitialValue()
{
- return "Начальное значение:";
+ return decode("Инициализатор");
}
- QCString trCode()
+ /*! Text used the source code in the file index */
+ virtual QCString trCode()
{
- return "исходный текст";
+ return decode("Исходные тексты");
}
- QCString trGraphicalHierarchy()
+ virtual QCString trGraphicalHierarchy()
{
- return "Графическая иерархия класса(ов)";
+ return decode("Иерархия классов. Графический вид.");
}
- QCString trGotoGraphicalHierarchy()
+ virtual QCString trGotoGraphicalHierarchy()
{
- return "Перейти к графической иерархии";
+ return decode("см. графический вид.");
}
- QCString trGotoTextualHierarchy()
+ virtual QCString trGotoTextualHierarchy()
{
- return "Перейти к текстовой иерархии";
+ return decode("см. текстовый вид.");
}
- QCString trPageIndex()
+ virtual QCString trPageIndex()
{
- return "Индекс страниц";
+ return decode("Алфавитный указатель тематических описаний");
}
- QCString trNote()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.0
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trNote()
{
- return "Примечание";
+ return decode("Заметки");
}
- QCString trPublicTypes()
+ virtual QCString trPublicTypes()
{
- return "Открытые типы";
+ return decode("Публичные типы");
}
- QCString trPublicAttribs()
+ virtual QCString trPublicAttribs()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return "Поля данных";
+ return decode( "Поля данных" );
}
else
{
- return "Открытые атрибуты";
+ return decode( "Открытые атрибуты" );
}
}
- QCString trStaticPublicAttribs()
+ virtual QCString trStaticPublicAttribs()
{
- return "Открытые статические атрибуты";
+ return decode("Статические публичные данные");
}
- QCString trProtectedTypes()
+ virtual QCString trProtectedTypes()
{
- return "Защищенные типы";
+ return decode("Защищенные типы");
}
- QCString trProtectedAttribs()
+ virtual QCString trProtectedAttribs()
{
- return "Защищенные атрибуты";
+ return decode("Защищенные данные");
}
- QCString trStaticProtectedAttribs()
+ virtual QCString trStaticProtectedAttribs()
{
- return "Статические защищенные атрибуты";
+ return decode("Статические защищенные данные");
}
- QCString trPrivateTypes()
+ virtual QCString trPrivateTypes()
{
- return "Закрытые типы";
+ return decode("Приватные типы");
}
- QCString trPrivateAttribs()
+ virtual QCString trPrivateAttribs()
{
- return "Закрытые атрибуты";
+ return decode("Приватные данные");
}
- QCString trStaticPrivateAttribs()
+ virtual QCString trStaticPrivateAttribs()
{
- return "Закрытые статические атрибуты";
+ return decode("Приватные статические данные");
}
- QCString trTodo()
+
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.3
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a todo item */
+ virtual QCString trTodo()
+ /*??*/
{
- return "Необходимо сделать:";
+ return decode("Необходимо сделать");
}
- QCString trTodoList()
+ /*! Used as the header of the todo list */
+ virtual QCString trTodoList()
+ /*??*/
{
- return "Список дел";
+ return decode("Список задач");
}
- QCString trReferencedBy()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.4
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trReferencedBy()
{
- return "Упоминается в";
+ return decode("Используется в");
}
- QCString trRemarks()
+ virtual QCString trRemarks()
{
- return "Примечания";
+ return decode("Прим.");
}
- QCString trAttention()
+ virtual QCString trAttention()
{
- return "Внимание";
+ return decode("Внимание");
}
- QCString trInclByDepGraph()
+ virtual QCString trInclByDepGraph()
{
- return "Этот граф показывает, какие файлы прямо или "
- "косвенно включают данный файл:";
+ return decode("Граф файлов, в которые включеется этот файл:");
}
- QCString trSince()
+ virtual QCString trSince()
+ /*??*/
{
- return "Начиная с";
+ return decode("Начиная с");
}
- QCString trLegendTitle()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.1.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! title of the graph legend page */
+ virtual QCString trLegendTitle()
{
- return "Условные обозначения";
+ return decode("Легенда");
}
- QCString trLegendDocs()
+ /*! page explaining how the dot graph's should be interpreted */
+ virtual QCString trLegendDocs()
{
- return
- //"Условные обозначения на графах, генерируемых программой "
- //"doxygen.<p>\n"
+ return decode(
+ "Обозначения, используемые в графах.<p>\n"
"Рассмотрим следующий пример:\n"
"\\code\n"
"/*! Невидимый класс из-за усечения */\n"
"class Invisible { };\n\n"
"/*! Усеченный класс, отношение наследования скрыто */\n"
"class Truncated : public Invisible { };\n\n"
- "/* Класс, не документированный комментариями doxygen */\n"
+ "/* Недокументированный класс */\n"
"class Undocumented { };\n\n"
- "/*! Класс, использующий открытое наследование */\n"
+ "/*! Публичное наследование */\n"
"class PublicBase : public Truncated { };\n\n"
- "/*! Класс, использующий защищенное наследование */\n"
+ "/*! Защищенное наследование */\n"
"class ProtectedBase { };\n\n"
- "/*! Класс, использующий закрытое наследование */\n"
+ "/*! Приватное наследование */\n"
"class PrivateBase { };\n\n"
- "/*! Класс, используемый в классе Inherited */\n"
+ "/*! Класс, используемый классом Inherited */\n"
"class Used { };\n\n"
- "/*! Суперкласс, унаследованный от нескольких классов */\n"
+ "/*! Класс, порожденный от других классов */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
@@ -831,92 +1188,140 @@ class TranslatorRussian : public Translator
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
- "Если тэг \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
- "имеет значение 200, получим следующий граф:"
+ "Если \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
+ "установлен в 200, получится следующий граф:"
"<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
- "Прямоугольники в этом графе имеют следующие значения:\n"
+ "Прямоугольники в этом графе имеют следующее значение:\n"
"<ul>\n"
- "<li>Заполненный черный прямоугольник представляет структуру или класс, "
- "для которого создан данный граф.\n"
+ "<li>Заполненный чернный прямоугольник представляет структуру или класс, "
+ "для которого создан граф.\n"
"<li>Прямоугольник с черной границей обозначает документированную структуру или класс.\n"
"<li>Прямоугольник с серой границей обозначает недокументированную структуру или класс.\n"
"<li>Прямоугольник с красной границей обозначает документированную структуру или класс, для которого\n"
- " не все отношения наследования/содержания показаны. Граф усекается, "
- "если он не поместился в указанные границы."
+ " не все отношения наследования/содержания показаны. Граф усечен, "
+ "если он не поместился в указанных границах."
"</ul>\n"
- "Стрелки имеют следующие значения:\n"
+ "Стрелки имеют следующее значение:\n"
"<ul>\n"
- "<li>Темносиняя стрелка используется для изображения отношения открытого наследования "
+ "<li>Темносиняя стрелка используется для изображения отношения публичного наследования "
"между двумя классами.\n"
"<li>Темнозеленая стрелка используется при защищенном наследовании.\n"
- "<li>Темнокрасная стрелка используется при закрытом наследовании.\n"
- "<li>Фиолетовая пунктирная стрелка используется, если класс содержится "
- "в другом классе или используется другим классом. "
- "Стрелка маркируется именем переменной, "
+ "<li>Темнокрасная стрелка используется при приватном наследовании.\n"
+ "<li>Фиолетовая стрелка используется, если класс содержится в"
+ "другом класе или используется другим классом."
+ "Со стрелкой указывается переменная, "
"через которую доступен указываемый класс или структура. \n"
- "</ul>\n";
+ "</ul>\n");
}
- QCString trLegend()
+ /*! text for the link to the legend page */
+ virtual QCString trLegend()
{
- return "обозначения";
+ return decode("см. легенду");
}
- QCString trTest()
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.0
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a test item */
+ virtual QCString trTest()
{
- return "Тест";
+ return decode("Тест");
}
- QCString trTestList()
+ /*! Used as the header of the test list */
+ virtual QCString trTestList()
{
- return "Список тестов";
+ return decode("Список тестов");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.1
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
- return "Методы DCOP";
+ return decode("DCOP Методы");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.2
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
- return "Свойства";
+ return decode("Свойства");
}
+ /*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
- return "Документация свойств";
+ return decode("Полный список свойств");
}
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.4
+//////////////////////////////////////////////////////////////////////////
+ /*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
- return "Интерфейсы";
+ return decode("Интерфейсы");
}
+ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
- return "Классы";
+ return decode("Классы");
}
+ /*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
- return (QCString)"Пакет "+name;
+ return decode("Пакет ")+name;
}
+ /*! Title of the package index page */
virtual QCString trPackageList()
{
- return "Список пакетов";
+ return decode("Полный список пакетов ");
}
+ /*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return "Список пакетов с кратким описанием (если есть):";
+ return decode("Полный список документированных пакетов.");
}
+ /*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
- return "Пакеты";
+ return decode("Пакеты");
}
+ /*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
- return "Документация пакетов";
+ return decode("Пакеты");
}
+ /*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
- return "Значение:";
+ return decode("Макроопределение:");
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.?
+//////////////////////////////////////////////////////////////////////////
+ /*! Used as ansicpg for RTF file */
+ virtual QCString trRTFansicp()
+ {
+ return "1251";
+ }
+ /*! Used as ansicpg for RTF fcharset */
+ virtual QCString trRTFCharSet()
+ {
+ return "204";
+ }
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return decode("Алфавитный указатель");
}
};
diff --git a/src/util.cpp b/src/util.cpp
index bcbf077..0add74d 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -179,21 +179,6 @@ bool isId(char c)
return c=='_' || isalnum(c);
}
-// strip annonymous left hand side part of the scope
-//QCString stripAnnonymousScope(const QCString &s)
-//{
-// QCString result=s;
-// int i=0;
-// while (!result.isEmpty() && result.at(0)=='@' && (i=result.find("::"))!=-1)
-// {
-// result=result.right(result.length()-i-2);
-// }
-// //if (result.at(0)=='@')
-// //{
-// // result.resize(0);
-// //}
-// return result;
-//}
/*!
Removes all anoymous scopes from string s
@@ -256,7 +241,7 @@ QCString replaceAnonymousScopes(const QCString &s)
// strip annonymous left hand side part of the scope
-QCString stripAnnonymousNamespaceScope(const QCString &s)
+QCString stripAnonymousNamespaceScope(const QCString &s)
{
int oi=0,i=0,p=0;
if (s.isEmpty()) return s;
@@ -264,12 +249,12 @@ QCString stripAnnonymousNamespaceScope(const QCString &s)
Doxygen::namespaceDict[s.left(i)]!=0) { oi=i; p=i+2; }
if (oi==0)
{
- //printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
+ //printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.data());
return s;
}
else
{
- //printf("stripAnnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
+ //printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
return s.right(s.length()-oi-2);
}
}
@@ -2537,39 +2522,6 @@ bool hasVisibleRoot(BaseClassList *bcl)
//----------------------------------------------------------------------
-#if 0
-QCString convertFileName(const QCString &s)
-{
- if (Config_getBool("SHORT_NAMES"))
- {
- printf("convertFileName(%s)\n",s.data());
- return convertNameToFile(s,FALSE);
- }
- QCString result;
- int i,l=s.length();
- for (i=0;i<l;i++)
- {
- if (s.at(i)!='/' && s.at(i)!='.')
- {
- if (Config_getBool("CASE_SENSE_NAMES"))
- {
- result+=s[i];
- }
- else
- {
- result+=tolower(s[i]);
- }
- }
- else
- {
- result+="_";
- }
- }
- return result;
-}
-#endif
-
-
/*! This function determines the file name on disk of an item
* given its name, which could be a class name with templete
* arguments, so special characters need to be escaped.
@@ -2754,3 +2706,40 @@ const char *getOverloadDocs()
"function only in what argument(s) it accepts.";
}
+void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict,
+ MemberGroupList *memberGroupList)
+{
+ MemberListIterator mli(*ml);
+ MemberDef *md;
+ uint index;
+ for (index=0;(md=mli.current());)
+ {
+ int groupId=md->getMemberGroupId();
+ if (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);
+ }
+ md = ml->take(index);
+ mg->insertMember(md);
+ md->setMemberGroup(mg);
+ }
+ else
+ {
+ ++mli;++index;
+ }
+ }
+ else
+ {
+ ++mli;++index;
+ }
+ }
+}
diff --git a/src/util.h b/src/util.h
index adf79de..65f5819 100644
--- a/src/util.h
+++ b/src/util.h
@@ -38,6 +38,8 @@ class ClassList;
class BaseClassList;
class GroupDef;
class NamespaceList;
+class MemberGroupList;
+class MemberGroupDict;
//--------------------------------------------------------------------
@@ -123,8 +125,7 @@ QCString generateMarker(int id);
void writeExample(OutputList &ol,ExampleList *el);
//void setFileNameForSections(QList<QCString> *anchorList,const char *fileName,
// PageInfo *pi=0);
-QCString stripAnnonymousScope(const QCString &s);
-QCString stripAnnonymousNamespaceScope(const QCString &s);
+QCString stripAnonymousNamespaceScope(const QCString &s);
QCString stripFromPath(const QCString &path);
bool rightScopeMatch(const QCString &scope, const QCString &name);
bool leftScopeMatch(const QCString &scope, const QCString &name);
@@ -144,6 +145,8 @@ 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);
#endif