Commit 75cfc919 authored by dimitri's avatar dimitri

Release 2000-02-27

parent b76d4ee1
DOXYGEN Version 1.1.0-20000220 DOXYGEN Version 1.1.0-20000227
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.0-20000220.src.tar.gz # uncompress the archive gunzip doxygen-1.1.0-20000227.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.0-20000220.src.tar # unpack it tar xf doxygen-1.1.0-20000227.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -71,7 +71,7 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -71,7 +71,7 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
INSTALLATION INSTRUCTIONS FOR WINDOWS: INSTALLATION INSTRUCTIONS FOR WINDOWS:
-------------------------------------- --------------------------------------
Currently, only Microsoft Visual C++ (version 5.0) is supported. Currently, only Microsoft Visual C++ (version 5.0 or higher) is supported.
(For other compilers you may need to edit the perl script in wintools/make.pl (For other compilers you may need to edit the perl script in wintools/make.pl
a bit). Let me know what you had to change if you got Doxygen working with a bit). Let me know what you had to change if you got Doxygen working with
another windows compiler. another windows compiler.
...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at ...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (20 February 2000) Dimitri van Heesch (27 February 2000)
DOXYGEN Version 1.1.0-20000220 DOXYGEN Version 1.1.0-20000227
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (20 February 2000) Dimitri van Heesch (27 February 2000)
1.1.0-20000220 1.1.0-20000227
...@@ -51,6 +51,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -51,6 +51,7 @@ followed by the descriptions of the tags grouped by category.
\begin{CompactList} \begin{CompactList}
\endlatexonly \endlatexonly
<li> \refitem cfg_allexternals ALLEXTERNALS <li> \refitem cfg_allexternals ALLEXTERNALS
<li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
<li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX <li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
<li> \refitem cfg_bin_abspath BIN_ABSPATH <li> \refitem cfg_bin_abspath BIN_ABSPATH
<li> \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC <li> \refitem cfg_brief_member_desc BRIEF_MEMBER_DESC
...@@ -121,6 +122,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -121,6 +122,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_search_includes SEARCH_INCLUDES <li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES <li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
<li> \refitem cfg_sort_member_docs SORT_MEMBER_DOCS
<li> \refitem cfg_source_browser SOURCE_BROWSER <li> \refitem cfg_source_browser SOURCE_BROWSER
<li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS <li> \refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
<li> \refitem cfg_strip_from_path STRIP_FROM_PATH <li> \refitem cfg_strip_from_path STRIP_FROM_PATH
...@@ -260,6 +262,12 @@ followed by the descriptions of the tags grouped by category. ...@@ -260,6 +262,12 @@ followed by the descriptions of the tags grouped by category.
If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the If both \c HIDE_UNDOC_MEMBERS and \c BRIEF_MEMBER_DESC are set to \c NO, the
brief descriptions will be completely suppressed. brief descriptions will be completely suppressed.
\anchor cfg_always_detailed_sec
<dt>\c ALWAYS_DETAILED_SEC <dd>
If the \c ALWAYS_DETAILED_SEC and \c REPEAT_BRIEF tags are both set to \c YES then
Doxygen will generate a detailed section even if there is only a brief
description.
\anchor cfg_full_path_names \anchor cfg_full_path_names
<dt>\c FULL_PATH_NAMES <dd> <dt>\c FULL_PATH_NAMES <dd>
\addindex FULL_PATH_NAMES \addindex FULL_PATH_NAMES
...@@ -342,12 +350,22 @@ followed by the descriptions of the tags grouped by category. ...@@ -342,12 +350,22 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_inline_info \anchor cfg_inline_info
<dt>\c INLINE_INFO <dd> <dt>\c INLINE_INFO <dd>
\addindex INLINE_INFO
If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline] If the \c INLINE_INFO tag is set to \c YES (the default) then a tag [inline]
is inserted in the documentation for inline members. is inserted in the documentation for inline members.
\anchor cfg_sort_member_docs
<dt>\c SORT_MEMBER_DOCS <dd>
\addindex SORT_MEMBER_DOCS
If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
will sort the (detailed) documentation of file and class members
alphabetically by member name. If set to NO the members will appear in
declaration order.
\anchor cfg_tab_size \anchor cfg_tab_size
<dt>\c TAB_SIZE <dd> <dt>\c TAB_SIZE <dd>
the TAB_SIZE tag can be used to set the number of spaces in a tab. \addindex TAB_SIZE
the \c TAB_SIZE tag can be used to set the number of spaces in a tab.
Doxygen uses this value to replace tabs by spaces in code fragments. Doxygen uses this value to replace tabs by spaces in code fragments.
</dl> </dl>
......
...@@ -495,12 +495,11 @@ Go to the <a href="diagrams.html">next</a> section or return to the ...@@ -495,12 +495,11 @@ Go to the <a href="diagrams.html">next</a> section or return to the
Doxygen uses the "dot" tool to generate the following graphs: Doxygen uses the "dot" tool to generate the following graphs:
<ul> <ul>
<li>if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES, <li>if \ref cfg_graphical_hierarchy "GRAPHICAL_HIERARCHY" is set to \c YES,
a graphical representation of the class diagram will be drawn, along a graphical representation of the class hierarchy will be drawn, along
with the textual one. Currently this feature is supported for HTML only.\n with the textual one. Currently this feature is supported for HTML only.\n
<b>Warning:</b> When you have a very large class hierarchy where many <b>Warning:</b> When you have a very large class hierarchy where many
classes derive from a common classes derive from a common base class, the resulting image may become
base class, the resulting image may become too big to handle for some too big to handle for some browsers.
browsers.
<li>if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include <li>if \ref cfg_include_graph "INCLUDE_GRAPH" is set to \c YES, an include
dependency graph is generated for each documented file that includes at dependency graph is generated for each documented file that includes at
least one other file. This feature is currently supported for HTML and RTF least one other file. This feature is currently supported for HTML and RTF
......
...@@ -121,12 +121,18 @@ void ClassDef::insertMember(const MemberDef *md) ...@@ -121,12 +121,18 @@ void ClassDef::insertMember(const MemberDef *md)
if (md->isRelated() && (Config::extractPrivateFlag || md->protection()!=Private)) if (md->isRelated() && (Config::extractPrivateFlag || md->protection()!=Private))
{ {
related.append(md); related.append(md);
relatedMembers.inSort(md); if (Config::sortMembersFlag)
relatedMembers.inSort(md);
else
relatedMembers.append(md);
} }
else if (md->isFriend()) else if (md->isFriend())
{ {
friends.append(md); friends.append(md);
relatedMembers.inSort(md); if (Config::sortMembersFlag)
relatedMembers.inSort(md);
else
relatedMembers.append(md);
} }
else else
{ {
...@@ -134,22 +140,34 @@ void ClassDef::insertMember(const MemberDef *md) ...@@ -134,22 +140,34 @@ void ClassDef::insertMember(const MemberDef *md)
{ {
case MemberDef::Signal: case MemberDef::Signal:
signals.append(md); signals.append(md);
functionMembers.inSort(md); if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
functionMembers.append(md);
break; break;
case MemberDef::Slot: case MemberDef::Slot:
switch (md->protection()) switch (md->protection())
{ {
case Protected: case Protected:
proSlots.append(md); proSlots.append(md);
functionMembers.inSort(md); if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
functionMembers.append(md);
break; break;
case Public: case Public:
pubSlots.append(md); pubSlots.append(md);
functionMembers.inSort(md); if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
functionMembers.append(md);
break; break;
case Private: case Private:
priSlots.append(md); priSlots.append(md);
functionMembers.inSort(md); if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
functionMembers.append(md);
break; break;
} }
break; break;
...@@ -183,22 +201,43 @@ void ClassDef::insertMember(const MemberDef *md) ...@@ -183,22 +201,43 @@ void ClassDef::insertMember(const MemberDef *md)
switch (md->memberType()) switch (md->memberType())
{ {
case MemberDef::Typedef: case MemberDef::Typedef:
typedefMembers.inSort(md); if (Config::sortMembersFlag)
typedefMembers.inSort(md);
else
typedefMembers.append(md);
break; break;
case MemberDef::Enumeration: case MemberDef::Enumeration:
enumMembers.inSort(md); if (Config::sortMembersFlag)
enumMembers.inSort(md);
else
enumMembers.append(md);
break; break;
case MemberDef::EnumValue: case MemberDef::EnumValue:
enumValMembers.inSort(md); if (Config::sortMembersFlag)
enumValMembers.inSort(md);
else
enumValMembers.append(md);
break; break;
case MemberDef::Function: case MemberDef::Function:
if (md->name()==name() || md->name().find('~')!=-1) if (md->name()==name() || // constructor
(md->name().find('~')!=-1 && // hack to detect destructor
md->name().find("operator")==-1
)
)
constructors.append(md); constructors.append(md);
else else
functionMembers.inSort(md); {
if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
functionMembers.append(md);
}
break; break;
case MemberDef::Variable: case MemberDef::Variable:
variableMembers.inSort(md); if (Config::sortMembersFlag)
variableMembers.inSort(md);
else
variableMembers.append(md);
break; break;
default: default:
printf("Unexpected member type %d found!\n",md->memberType()); printf("Unexpected member type %d found!\n",md->memberType());
......
...@@ -47,7 +47,8 @@ class ClassDef : public Definition ...@@ -47,7 +47,8 @@ class ClassDef : public Definition
enum CompoundType { Class=Entry::CLASS_SEC, enum CompoundType { Class=Entry::CLASS_SEC,
Struct=Entry::STRUCT_SEC, Struct=Entry::STRUCT_SEC,
Union=Entry::UNION_SEC, Union=Entry::UNION_SEC,
Interface=Entry::INTERFACE_SEC Interface=Entry::INTERFACE_SEC,
Exception=Entry::EXCEPTION_SEC
}; };
ClassDef(const char *name,CompoundType ct,const char *ref=0,const char *fName=0); ClassDef(const char *name,CompoundType ct,const char *ref=0,const char *fName=0);
~ClassDef(); ~ClassDef();
......
This diff is collapsed.
...@@ -114,6 +114,7 @@ struct Config ...@@ -114,6 +114,7 @@ struct Config
static bool rtfHyperFlag; // generate hyper links in RTF static bool rtfHyperFlag; // generate hyper links in RTF
static bool showIncFileFlag; // show include file in file documentation? static bool showIncFileFlag; // show include file in file documentation?
static bool stripCommentsFlag; // strip special comments from code fragments? static bool stripCommentsFlag; // strip special comments from code fragments?
static bool sortMembersFlag; // sort members alphabetically?
}; };
#endif #endif
...@@ -144,10 +144,10 @@ bool Config::includeGraphFlag = TRUE; ...@@ -144,10 +144,10 @@ bool Config::includeGraphFlag = TRUE;
bool Config::gfxHierarchyFlag = TRUE; bool Config::gfxHierarchyFlag = TRUE;
bool Config::showIncFileFlag = TRUE; bool Config::showIncFileFlag = TRUE;
bool Config::stripCommentsFlag = TRUE; bool Config::stripCommentsFlag = TRUE;
bool Config::sortMembersFlag = TRUE;
int Config::tabSize = 8; int Config::tabSize = 8;
int Config::colsInAlphaIndex = 5; int Config::colsInAlphaIndex = 5;
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
* *
* static variables * static variables
...@@ -281,6 +281,7 @@ static int yyread(char *buf,int max_size) ...@@ -281,6 +281,7 @@ static int yyread(char *buf,int max_size)
<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } <Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; }
<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; } <Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; }
<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; } <Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; }
<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } <GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n { <GetStrList>\n {
...@@ -499,6 +500,7 @@ void Config::init() ...@@ -499,6 +500,7 @@ void Config::init()
Config::gfxHierarchyFlag = TRUE; Config::gfxHierarchyFlag = TRUE;
Config::showIncFileFlag = TRUE; Config::showIncFileFlag = TRUE;
Config::stripCommentsFlag = TRUE; Config::stripCommentsFlag = TRUE;
Config::sortMembersFlag = TRUE;
} }
void writeTemplateConfig(QFile *f,bool sl) void writeTemplateConfig(QFile *f,bool sl)
...@@ -641,7 +643,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -641,7 +643,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t <<"\n"; t <<"\n";
t << "# If the ALWAYS_DETAILS_SEC and REPEAT_BRIEF tags are both set to YES then\n"; t << "# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n";
t << "# Doxygen will generate a detailed section even if there is only a brief\n"; t << "# Doxygen will generate a detailed section even if there is only a brief\n";
t << "# description.\n"; t << "# description.\n";
t <<"\n"; t <<"\n";
...@@ -752,7 +754,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -752,7 +754,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# if the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n"; t << "# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n";
t << "# member inherits the documentation from any documented member that it\n"; t << "# member inherits the documentation from any documented member that it\n";
t << "# reimplements.\n"; t << "# reimplements.\n";
t << "\n"; t << "\n";
...@@ -761,7 +763,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -761,7 +763,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# if the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n"; t << "# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n";
t << "# is inserted in the documentation for inline members.\n"; t << "# is inserted in the documentation for inline members.\n";
t << "\n"; t << "\n";
} }
...@@ -769,7 +771,17 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -769,7 +771,17 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab.\n"; t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen\n";
t << "# will sort the (detailed) documentation of file and class members \n";
t << "# alphabetically by member name. If set to NO the members will appear in\n";
t << "# declaration order.\n";
t << "\n";
}
t << "SORT_MEMBER_DOCS = YES\n";
if (!sl)
{
t << "\n";
t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab.\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n"; t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n"; t << "\n";
} }
......
...@@ -45,6 +45,8 @@ static int labelToEnumValue(const char *l) ...@@ -45,6 +45,8 @@ static int labelToEnumValue(const char *l)
return Debug::Variables; return Debug::Variables;
else if (label=="Preprocessor") else if (label=="Preprocessor")
return Debug::Preprocessor; return Debug::Preprocessor;
else if (label=="Classes")
return Debug::Classes;
else else
return 0; return 0;
} }
......
...@@ -25,7 +25,8 @@ class Debug ...@@ -25,7 +25,8 @@ class Debug
FindMembers = 0x00000001, FindMembers = 0x00000001,
Functions = 0x00000002, Functions = 0x00000002,
Variables = 0x00000004, Variables = 0x00000004,
Preprocessor = 0x00000008 Preprocessor = 0x00000008,
Classes = 0x00000010
}; };
static void print(DebugMask mask,int prio,const char *fmt,...); static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label); static void setFlag(const char *label);
......
...@@ -1252,6 +1252,6 @@ void ClassDiagram::writeImageMap(QTextStream &t,const char *path, ...@@ -1252,6 +1252,6 @@ void ClassDiagram::writeImageMap(QTextStream &t,const char *path,
image.save((QCString)path+"/"+fileName+".gif"); image.save((QCString)path+"/"+fileName+".gif");
t << "</map></p>" << endl; t << "</map>" << endl;
} }
...@@ -136,7 +136,14 @@ static bool isLeaf(ClassDef *cd) ...@@ -136,7 +136,14 @@ static bool isLeaf(ClassDef *cd)
for ( ; (bcd=bcli.current()); ++bcli ) for ( ; (bcd=bcli.current()); ++bcli )
{ {
ClassDef *bClass = bcd->classDef; ClassDef *bClass = bcd->classDef;
if (bClass->isLinkable() || !isLeaf(bClass)) return FALSE; //if (bClass->isLinkable() || !isLeaf(bClass)) return FALSE;
// if class is not a leaf
if (!isLeaf(bClass)) return FALSE;
// or class is not documented in this project
if (!Config::allExtFlag && !bClass->isLinkableInProject()) return FALSE;
// or class is not documented and all ALLEXTERNALS = YES
if (Config::allExtFlag && !bClass->isLinkable()) return FALSE;
} }
} }
return TRUE; return TRUE;
...@@ -523,7 +530,12 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() ...@@ -523,7 +530,12 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
for (cli.toFirst();(cd=cli.current());++cli) for (cli.toFirst();(cd=cli.current());++cli)
{ {
//printf("Trying %s superClasses=%d\n",cd->name().data(),cd->superClasses()->count()); //printf("Trying %s superClasses=%d\n",cd->name().data(),cd->superClasses()->count());
if (cd->isLinkable() && isLeaf(cd)) // root class in the graph if (isLeaf(cd) &&
(
(!Config::allExtFlag && cd->isLinkableInProject()) ||
(Config::allExtFlag && cd->isLinkable())
)
) // root class in the graph
{ {
//printf("Inserting root class %s\n",cd->name().data()); //printf("Inserting root class %s\n",cd->name().data());
DotNode *n = new DotNode(m_curNodeNumber++, DotNode *n = new DotNode(m_curNodeNumber++,
...@@ -593,7 +605,10 @@ int DotGfxUsageGraph::m_curNodeNumber; ...@@ -593,7 +605,10 @@ int DotGfxUsageGraph::m_curNodeNumber;
void DotGfxUsageGraph::addClass(ClassDef *cd,DotNode *n,int prot, void DotGfxUsageGraph::addClass(ClassDef *cd,DotNode *n,int prot,
const char *label,int distance) const char *label,int distance)
{ {
if (cd->isLinkable()) if (
(!Config::allExtFlag && cd->isLinkableInProject()) ||
(Config::allExtFlag && cd->isLinkable())
)
{ {
//printf(":: DoxGfxUsageGraph::addClass(class=%s,parent=%s,prot=%d,label=%s,dist=%d)\n", //printf(":: DoxGfxUsageGraph::addClass(class=%s,parent=%s,prot=%d,label=%s,dist=%d)\n",
// cd->name().data(),n->m_label.data(),prot,label,distance); // cd->name().data(),n->m_label.data(),prot,label,distance);
...@@ -735,7 +750,7 @@ static void findMaximalDotGraph(DotNode *root,int maxDist, ...@@ -735,7 +750,7 @@ static void findMaximalDotGraph(DotNode *root,int maxDist,
QCString dotCmd; QCString dotCmd;
// create annotated dot file // create annotated dot file
dotCmd.sprintf("dot -Tdot %s.dot -o %s_tmp.dot\n",baseName.data(),baseName.data()); dotCmd.sprintf("dot -Tdot %s.dot -o %s_tmp.dot",baseName.data(),baseName.data());
if (system(dotCmd)!=0) if (system(dotCmd)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
...@@ -807,7 +822,7 @@ void DotGfxUsageGraph::writeGraph(QTextStream &out, ...@@ -807,7 +822,7 @@ void DotGfxUsageGraph::writeGraph(QTextStream &out,
// run dot to create a .gif image // run dot to create a .gif image
QCString dotCmd; QCString dotCmd;
dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif\n",baseName.data(),baseName.data()); dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif",baseName.data(),baseName.data());
if (system(dotCmd)!=0) if (system(dotCmd)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
...@@ -848,27 +863,42 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance) ...@@ -848,27 +863,42 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
for (;(ii=ili.current());++ili) for (;(ii=ili.current());++ili)
{ {
FileDef *bfd = ii->fileDef; FileDef *bfd = ii->fileDef;
QCString in = bfd ? bfd->absFilePath() : ii->includeName; QCString in = ii->includeName;
DotNode *bn = m_usedNodes->find(in); bool doc=TRUE,src=FALSE;
if (bn) // file is already a node in the graph if (bfd)
{ {
n->addChild(bn,0,0,0); in = bfd->absFilePath();
bn->addParent(n); doc = bfd->isLinkableInProject();
bn->setDistance(distance); src = bfd->generateSource() || (!bfd->isReference() && Config::sourceBrowseFlag);
} }
else if (doc || src)
{ {
bn = new DotNode( QCString url=bfd ? bfd->getOutputFileBase().data() : "";
m_curNodeNumber++, if (!doc && src)
ii->includeName, {
bfd ? (bfd->getReference()+"$"+bfd->getOutputFileBase()).data() : 0, url+="-source";
distance }
); DotNode *bn = m_usedNodes->find(in);
if (distance>m_maxDistance) m_maxDistance=distance; if (bn) // file is already a node in the graph
n->addChild(bn,0,0,0); {
bn->addParent(n); n->addChild(bn,0,0,0);
m_usedNodes->insert(in,bn); bn->addParent(n);
if (bfd) buildGraph(bn,bfd,distance+1); bn->setDistance(distance);
}
else
{
bn = new DotNode(
m_curNodeNumber++,
ii->includeName,
bfd ? (bfd->getReference()+"$"+url).data() : 0,
distance
);
if (distance>m_maxDistance) m_maxDistance=distance;
n->addChild(bn,0,0,0);
bn->addParent(n);
m_usedNodes->insert(in,bn);
if (bfd) buildGraph(bn,bfd,distance+1);
}
} }
} }
} }
...@@ -876,6 +906,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance) ...@@ -876,6 +906,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
DotInclDepGraph::DotInclDepGraph(FileDef *fd) DotInclDepGraph::DotInclDepGraph(FileDef *fd)
{ {
m_maxDistance = 0; m_maxDistance = 0;
ASSERT(fd!=0);
m_diskName = fd->getOutputFileBase().copy(); m_diskName = fd->getOutputFileBase().copy();
m_startNode = new DotNode(m_curNodeNumber++, m_startNode = new DotNode(m_curNodeNumber++,
fd->name(), fd->name(),
...@@ -918,7 +949,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,const char *path) ...@@ -918,7 +949,7 @@ void DotInclDepGraph::writeGraph(QTextStream &out,const char *path)
// run dot to create a .gif image // run dot to create a .gif image
QCString dotCmd; QCString dotCmd;
dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif\n",baseName.data(),baseName.data()); dotCmd.sprintf("dot -Tgif %s.dot -o %s.gif",baseName.data(),baseName.data());
if (system(dotCmd)!=0) if (system(dotCmd)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
......
This diff is collapsed.
...@@ -96,37 +96,44 @@ class Entry ...@@ -96,37 +96,44 @@ class Entry
CLASS_SEC = 0x00000001, CLASS_SEC = 0x00000001,
STRUCT_SEC = 0x00000002, STRUCT_SEC = 0x00000002,
UNION_SEC = 0x00000004, UNION_SEC = 0x00000004,
ENUM_SEC = 0x00000008, EXCEPTION_SEC = 0x00000008,
EMPTY_SEC = 0x00000010, NAMESPACE_SEC = 0x00000010,
PAGEDOC_SEC = 0x00000020, INTERFACE_SEC = 0x00000020,
VARIABLE_SEC = 0x00000040, COMPOUND_MASK = CLASS_SEC | STRUCT_SEC | UNION_SEC |
FUNCTION_SEC = 0x00000080, INTERFACE_SEC | EXCEPTION_SEC,
TYPEDEF_SEC = 0x00000100,
CLASSDOC_SEC = 0x00000200,
MEMBERDOC_SEC = 0x00000400,
OVERLOADDOC_SEC = 0x00000800,
EXAMPLE_SEC = 0x00001000,
VARIABLEDOC_SEC = 0x00002000,
ENUMDOC_SEC = 0x00004000,
UNIONDOC_SEC = 0x00008000,
STRUCTDOC_SEC = 0x00010000,
SOURCE_SEC = 0x00020000,
HEADER_SEC = 0x00040000,
FILEDOC_SEC = 0x00080000,
DEFINEDOC_SEC = 0x00100000,
INCLUDE_SEC = 0x00200000,
DEFINE_SEC = 0x00400000,
GROUPDOC_SEC = 0x00800000,
NAMESPACE_SEC = 0x01000000,
NAMESPACEDOC_SEC = 0x02000000,
INTERFACE_SEC = 0x04000000,
INTERFACEDOC_SEC = 0x08000000,
MAINPAGEDOC_SEC = 0x10000000,
USINGDIR_SEC = 0x20000000,
COMPOUND_MASK = CLASS_SEC | STRUCT_SEC | UNION_SEC | INTERFACE_SEC,
COMPOUNDDOC_MASK = CLASSDOC_SEC | STRUCTDOC_SEC | UNIONDOC_SEC | INTERFACEDOC_SEC,
SCOPE_MASK = COMPOUND_MASK | NAMESPACE_SEC, SCOPE_MASK = COMPOUND_MASK | NAMESPACE_SEC,
FILE_MASK = SOURCE_SEC | HEADER_SEC
CLASSDOC_SEC = 0x00000100,
STRUCTDOC_SEC = 0x00000200,
UNIONDOC_SEC = 0x00000400,
EXCEPTIONDOC_SEC = 0x00000800,
NAMESPACEDOC_SEC = 0x00001000,
INTERFACEDOC_SEC = 0x00002000,
COMPOUNDDOC_MASK = CLASSDOC_SEC | STRUCTDOC_SEC | UNIONDOC_SEC |
INTERFACEDOC_SEC | EXCEPTIONDOC_SEC,
SOURCE_SEC = 0x00010000,
HEADER_SEC = 0x00020000,
FILE_MASK = SOURCE_SEC | HEADER_SEC,
ENUMDOC_SEC = 0x00100000,
ENUM_SEC = 0x00200000,
EMPTY_SEC = 0x00300000,
PAGEDOC_SEC = 0x00400000,
VARIABLE_SEC = 0x00500000,
FUNCTION_SEC = 0x00600000,
TYPEDEF_SEC = 0x00700000,
MEMBERDOC_SEC = 0x00800000,
OVERLOADDOC_SEC = 0x00900000,
EXAMPLE_SEC = 0x00a00000,
VARIABLEDOC_SEC = 0x00b00000,
FILEDOC_SEC = 0x00c00000,
DEFINEDOC_SEC = 0x00d00000,
INCLUDE_SEC = 0x00e00000,
DEFINE_SEC = 0x00f00000,
GROUPDOC_SEC = 0x01000000,
USINGDIR_SEC = 0x01100000,
MAINPAGEDOC_SEC = 0x01200000
}; };
Entry(); Entry();
......
...@@ -269,6 +269,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -269,6 +269,7 @@ void FileDef::writeDocumentation(OutputList &ol)
case ClassDef::Struct: ol.writeString("struct"); break; case ClassDef::Struct: ol.writeString("struct"); break;
case ClassDef::Union: ol.writeString("union"); break; case ClassDef::Union: ol.writeString("union"); break;
case ClassDef::Interface: ol.writeString("interface"); break; case ClassDef::Interface: ol.writeString("interface"); break;
case ClassDef::Exception: ol.writeString("exception"); break;
} }
ol.writeString(" "); ol.writeString(" ");
ol.insertMemberAlign(); ol.insertMemberAlign();
......
...@@ -136,6 +136,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -136,6 +136,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
case ClassDef::Struct: type="struct"; break; case ClassDef::Struct: type="struct"; break;
case ClassDef::Union: type="union"; break; case ClassDef::Union: type="union"; break;
case ClassDef::Interface: type="interface"; break; case ClassDef::Interface: type="interface"; break;
case ClassDef::Exception: type="exception"; break;
} }
ol.writeStartAnnoItem(type,cd->getOutputFileBase(),0,cd->name()); ol.writeStartAnnoItem(type,cd->getOutputFileBase(),0,cd->name());
ol.writeEndAnnoItem(cd->name()); ol.writeEndAnnoItem(cd->name());
......
...@@ -184,7 +184,12 @@ void HtmlGenerator::writeStyleInfo(int part) ...@@ -184,7 +184,12 @@ void HtmlGenerator::writeStyleInfo(int part)
if (Config::htmlStyleSheet.isEmpty()) // write default style sheet if (Config::htmlStyleSheet.isEmpty()) // write default style sheet
{ {
startPlainFile("doxygen.css"); startPlainFile("doxygen.css");
t << "H1 { text-align: center }" << endl;
// alternative, cooler looking titles
//t << "H1 { text-align: center; border-width: thin none thin none;" << endl;
//t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl;
t << "H1 { text-align: center; }" << endl;
t << "A.qindex {}" << endl; t << "A.qindex {}" << endl;
t << "A.qindexRef {}" << endl; t << "A.qindexRef {}" << endl;
t << "A.el { text-decoration: none; font-weight: bold }" << endl; t << "A.el { text-decoration: none; font-weight: bold }" << endl;
......
...@@ -211,7 +211,7 @@ void writeClassHierarchy(OutputList &ol) ...@@ -211,7 +211,7 @@ void writeClassHierarchy(OutputList &ol)
ClassDef *cd=cli.current(); ClassDef *cd=cli.current();
if (!hasVisibleRoot(cd->baseClasses())) if (!hasVisibleRoot(cd->baseClasses()))
{ {
if (cd->isVisibleInHierarchy()) // WAS: isVisible()! if (cd->isVisibleInHierarchy())
{ {
if (!started) if (!started)
{ {
...@@ -399,7 +399,7 @@ void writeFileIndex(OutputList &ol) ...@@ -399,7 +399,7 @@ void writeFileIndex(OutputList &ol)
{ {
bool doc = fd->isLinkableInProject(); bool doc = fd->isLinkableInProject();
bool src = fd->generateSource() || Config::sourceBrowseFlag; bool src = fd->generateSource() || Config::sourceBrowseFlag;
if (doc || src) if ((doc || src) && !fd->isReference())
{ {
//ol.writeIndexItem(fd->getReference(),fd->diskName(), //ol.writeIndexItem(fd->getReference(),fd->diskName(),
// fd->name()); // fd->name());
......
...@@ -863,7 +863,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -863,7 +863,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
//if (cd && (!isRelated() || templateArguments()!=0) && //if (cd && (!isRelated() || templateArguments()!=0) &&
// ((al=scopeDefTemplateArguments()) || (al=cd->templateArguments())) // ((al=scopeDefTemplateArguments()) || (al=cd->templateArguments()))
// ) // )
if (scopeAl) // class template prefix if (scopeAl && !related) // class template prefix
{ {
writeTemplatePrefix(ol,scopeAl); writeTemplatePrefix(ol,scopeAl);
} }
......
...@@ -99,6 +99,7 @@ class MemberDef : public Definition ...@@ -99,6 +99,7 @@ class MemberDef : public Definition
FileDef *getFileDef() { return fileDef; } FileDef *getFileDef() { return fileDef; }
FileDef *getFileDec() { return fileDec; } FileDef *getFileDec() { return fileDec; }
void setMemberClass(ClassDef *cd) { classDef=cd; } void setMemberClass(ClassDef *cd) { classDef=cd; }
void makeRelated() { related=TRUE; }
bool isRelated() const { return related; } bool isRelated() const { return related; }
bool isStatic() const { return stat; } bool isStatic() const { return stat; }
bool isInline() const { return inLine; } bool isInline() const { return inLine; }
......
...@@ -63,7 +63,9 @@ void MemberList::countDecMembers() ...@@ -63,7 +63,9 @@ void MemberList::countDecMembers()
case MemberDef::Variable: varCnt++,m_count++; break; case MemberDef::Variable: varCnt++,m_count++; break;
case MemberDef::Function: // fall through case MemberDef::Function: // fall through
case MemberDef::Signal: // fall through case MemberDef::Signal: // fall through
case MemberDef::Slot: funcCnt++,m_count++; break; case MemberDef::Slot: if (!md->isRelated() || md->memberClass())
funcCnt++,m_count++;
break;
case MemberDef::Enumeration: enumCnt++,m_count++; break; case MemberDef::Enumeration: enumCnt++,m_count++; break;
case MemberDef::EnumValue: enumValCnt++,m_count++; break; case MemberDef::EnumValue: enumValCnt++,m_count++; break;
case MemberDef::Typedef: typeCnt++,m_count++; break; case MemberDef::Typedef: typeCnt++,m_count++; break;
...@@ -409,8 +411,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd, ...@@ -409,8 +411,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
MemberListIterator mli(*this); MemberListIterator mli(*this);
for ( ; (md=mli.current()) ; ++mli ) for ( ; (md=mli.current()) ; ++mli )
{ {
if ( md->isFunction() || md->isSignal() || if (
md->isSlot()) ( md->isFunction() || md->isSignal() || md->isSlot()) &&
( !md->isRelated() || md->memberClass() )
)
{ {
md->writeDeclaration(ol,cd,nd,fd,prevGroupId,inGroup); md->writeDeclaration(ol,cd,nd,fd,prevGroupId,inGroup);
prevGroupId = md->groupId(); prevGroupId = md->groupId();
...@@ -424,7 +428,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd, ...@@ -424,7 +428,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,ClassDef *cd,
MemberListIterator mli(*this); MemberListIterator mli(*this);
for ( ; (md=mli.current()) ; ++mli ) for ( ; (md=mli.current()) ; ++mli )
{ {
if ( md->isFriend()) if (md->isFriend())
{ {
QCString type=md->typeString(); QCString type=md->typeString();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data()); //printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
......
...@@ -138,6 +138,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -138,6 +138,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
case ClassDef::Struct: ol.writeString("struct"); break; case ClassDef::Struct: ol.writeString("struct"); break;
case ClassDef::Union: ol.writeString("union"); break; case ClassDef::Union: ol.writeString("union"); break;
case ClassDef::Interface: ol.writeString("interface"); break; case ClassDef::Interface: ol.writeString("interface"); break;
case ClassDef::Exception: ol.writeString("exception"); break;
} }
ol.writeString(" "); ol.writeString(" ");
ol.insertMemberAlign(); ol.insertMemberAlign();
......
This diff is collapsed.
...@@ -2189,7 +2189,7 @@ VAR [vV][aA][rR] ...@@ -2189,7 +2189,7 @@ VAR [vV][aA][rR]
lineCount(); lineCount();
BEGIN( ClassName ); BEGIN( ClassName );
} }
<FindMembers>{B}*"interface"{BN}+ { <FindMembers>{B}*"interface"{BN}+ { // M$/Corba IDL interface
isTypedef=FALSE; isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC; current->section = Entry::INTERFACE_SEC;
addType( current ) ; addType( current ) ;
...@@ -2200,6 +2200,17 @@ VAR [vV][aA][rR] ...@@ -2200,6 +2200,17 @@ VAR [vV][aA][rR]
lineCount(); lineCount();
BEGIN( ClassName ); BEGIN( ClassName );
} }
<FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception
isTypedef=FALSE;
current->section = Entry::EXCEPTION_SEC;
addType( current ) ;
current->type += " exception" ;
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount();
BEGIN( ClassName );
}
<FindMembers>{B}*(("typedef"{BN}+)?)"class"{BN}+ { <FindMembers>{B}*(("typedef"{BN}+)?)"class"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1; isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::CLASS_SEC; current->section = Entry::CLASS_SEC;
...@@ -2897,7 +2908,7 @@ VAR [vV][aA][rR] ...@@ -2897,7 +2908,7 @@ VAR [vV][aA][rR]
while (p) while (p)
{ {
// only look for class scopes, not namespace scopes // only look for class scopes, not namespace scopes
if (p->section & Entry::COMPOUND_MASK) if ((p->section & Entry::COMPOUND_MASK) && !p->name.isEmpty())
{ {
//printf("Trying scope `%s'\n",p->name.data()); //printf("Trying scope `%s'\n",p->name.data());
int i=p->name.findRev("::"); int i=p->name.findRev("::");
...@@ -3514,8 +3525,9 @@ VAR [vV][aA][rR] ...@@ -3514,8 +3525,9 @@ VAR [vV][aA][rR]
lastClassTemplSpecContext = ClassVar; lastClassTemplSpecContext = ClassVar;
BEGIN( ClassTemplSpec ); BEGIN( ClassTemplSpec );
} }
<ClassTemplSpec>">"({BN}*{SCOPENAME})? { <ClassTemplSpec>">"({BN}*"::"{BN}*{SCOPENAME})? {
current->name += yytext; current->name += yytext;
lineCount();
if (--sharpCount<=0) if (--sharpCount<=0)
{ {
current->name = removeRedundantWhiteSpace(current->name); current->name = removeRedundantWhiteSpace(current->name);
...@@ -3580,7 +3592,7 @@ VAR [vV][aA][rR] ...@@ -3580,7 +3592,7 @@ VAR [vV][aA][rR]
<BasesProt>"public" { baseProt = Public; } <BasesProt>"public" { baseProt = Public; }
<BasesProt>"protected" { baseProt = Protected; } <BasesProt>"protected" { baseProt = Protected; }
<BasesProt>"private" { baseProt = Private; } <BasesProt>"private" { baseProt = Private; }
<BasesProt>{BN} {} <BasesProt>{BN} { lineCount(); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); } <BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")*{BN}*({ID}{BN}*"::"{BN}*)*{ID} { <Bases>("::")*{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
//current->extends->append( //current->extends->append(
...@@ -3634,7 +3646,10 @@ VAR [vV][aA][rR] ...@@ -3634,7 +3646,10 @@ VAR [vV][aA][rR]
current->extends->append( current->extends->append(
new BaseInfo(baseName,baseProt,baseVirt) new BaseInfo(baseName,baseProt,baseVirt)
); );
baseProt=Private; if (current->section == Entry::INTERFACE_SEC)
baseProt=Public;
else
baseProt=Private;
baseVirt=Normal; baseVirt=Normal;
baseName.resize(0); baseName.resize(0);
BEGIN(BasesProt); BEGIN(BasesProt);
...@@ -3850,6 +3865,12 @@ VAR [vV][aA][rR] ...@@ -3850,6 +3865,12 @@ VAR [vV][aA][rR]
current->startLine = yyLineNr; current->startLine = yyLineNr;
BEGIN( ClassDocArg1 ); BEGIN( ClassDocArg1 );
} }
<Doc,JavaDoc>{B}*{CMD}"idlexcept"{B}* {
current->section = Entry::EXCEPTIONDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"page"{B}* { <Doc,JavaDoc>{B}*{CMD}"page"{B}* {
current->section = Entry::PAGEDOC_SEC; current->section = Entry::PAGEDOC_SEC;
current->fileName = yyFileName; current->fileName = yyFileName;
......
...@@ -527,6 +527,7 @@ class Translator ...@@ -527,6 +527,7 @@ class Translator
case ClassDef::Struct: result+=" Struct"; break; case ClassDef::Struct: result+=" Struct"; break;
case ClassDef::Union: result+=" Union"; break; case ClassDef::Union: result+=" Union"; break;
case ClassDef::Interface: result+=" Interface"; break; case ClassDef::Interface: result+=" Interface"; break;
case ClassDef::Exception: result+=" Exception"; break;
} }
result+=" Reference"; result+=" Reference";
return result; return result;
...@@ -686,6 +687,7 @@ class Translator ...@@ -686,6 +687,7 @@ class Translator
case ClassDef::Struct: result+="struct"; break; case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break; case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break; case ClassDef::Interface: result+="interface"; break;
case ClassDef::Exception: result+="exception"; break;
} }
result+=" was generated from the following file"; result+=" was generated from the following file";
if (single) result+=":"; else result+="s:"; if (single) result+=":"; else result+="s:";
......
...@@ -296,6 +296,7 @@ class TranslatorCzech : public Translator ...@@ -296,6 +296,7 @@ class TranslatorCzech : public Translator
case ClassDef::Struct: result+=" struktury"; break; case ClassDef::Struct: result+=" struktury"; break;
case ClassDef::Union: result+=" unie"; break; case ClassDef::Union: result+=" unie"; break;
case ClassDef::Interface: result+=" rozhrani"; break; case ClassDef::Interface: result+=" rozhrani"; break;
case ClassDef::Exception: result+=" exception"; break;
} }
return result; return result;
} }
...@@ -454,6 +455,7 @@ class TranslatorCzech : public Translator ...@@ -454,6 +455,7 @@ class TranslatorCzech : public Translator
case ClassDef::Struct: result+="tuto strukturu"; break; case ClassDef::Struct: result+="tuto strukturu"; break;
case ClassDef::Union: result+="tuto unii"; break; case ClassDef::Union: result+="tuto unii"; break;
case ClassDef::Interface: result+="toto rozhrani"; break; case ClassDef::Interface: result+="toto rozhrani"; break;
case ClassDef::Exception: result+="exception"; break;
} }
result+=" byla vygenerovana z nasledujiciho souboru"; result+=" byla vygenerovana z nasledujiciho souboru";
if (single) result+=":"; else result+="s:"; if (single) result+=":"; else result+="s:";
......
...@@ -440,6 +440,7 @@ class TranslatorGerman : public Translator ...@@ -440,6 +440,7 @@ class TranslatorGerman : public Translator
case ClassDef::Struct: result+=" Strukturen"; break; case ClassDef::Struct: result+=" Strukturen"; break;
case ClassDef::Union: result+=" Varianten"; break; case ClassDef::Union: result+=" Varianten"; break;
case ClassDef::Interface: result+=" Interface"; break; case ClassDef::Interface: result+=" Interface"; break;
case ClassDef::Exception: result+=" Exception"; break;
} }
result+="referenz"; result+="referenz";
return result; return result;
......
...@@ -287,6 +287,7 @@ class TranslatorSpanish : public Translator ...@@ -287,6 +287,7 @@ class TranslatorSpanish : public Translator
case ClassDef::Struct: result+=" Estructura"; break; case ClassDef::Struct: result+=" Estructura"; break;
case ClassDef::Union: result+=" Unin"; break; case ClassDef::Union: result+=" Unin"; break;
case ClassDef::Interface: result+=" Interface"; break; case ClassDef::Interface: result+=" Interface"; break;
case ClassDef::Exception: result+=" Exception"; break;
} }
result+=" Referencia"; result+=" Referencia";
return result; return result;
......
...@@ -473,6 +473,7 @@ class TranslatorFinnish : public Translator ...@@ -473,6 +473,7 @@ class TranslatorFinnish : public Translator
case ClassDef::Struct: result+=" Struct"; break; // "Struct" case ClassDef::Struct: result+=" Struct"; break; // "Struct"
case ClassDef::Union: result+=" Union"; break; // "Union" case ClassDef::Union: result+=" Union"; break; // "Union"
case ClassDef::Interface: result+=" Interface"; break; // "Interface" case ClassDef::Interface: result+=" Interface"; break; // "Interface"
case ClassDef::Exception: result+=" Exception"; break; // "Interface"
} }
result+=" Referenssi"; // " Reference" result+=" Referenssi"; // " Reference"
return result; return result;
......
...@@ -499,6 +499,7 @@ class TranslatorFrench : public Translator ...@@ -499,6 +499,7 @@ class TranslatorFrench : public Translator
case ClassDef::Struct: result+="la structure "; break; case ClassDef::Struct: result+="la structure "; break;
case ClassDef::Union: result+="l'union "; break; case ClassDef::Union: result+="l'union "; break;
case ClassDef::Interface: result+="l'interface "; break; case ClassDef::Interface: result+="l'interface "; break;
case ClassDef::Exception: result+="l'exception "; break;
} }
result+=(QCString)clName; result+=(QCString)clName;
...@@ -659,6 +660,7 @@ class TranslatorFrench : public Translator ...@@ -659,6 +660,7 @@ class TranslatorFrench : public Translator
case ClassDef::Struct: result+="structure"; break; case ClassDef::Struct: result+="structure"; break;
case ClassDef::Union: result+="union"; break; case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break; case ClassDef::Interface: result+="interface"; break;
case ClassDef::Exception: result+="exception"; break;
} }
result+=" a été générée à partir "; result+=" a été générée à partir ";
if (single) result+=" du fichier suivant :"; if (single) result+=" du fichier suivant :";
......
...@@ -538,6 +538,7 @@ class TranslatorItalian : public Translator ...@@ -538,6 +538,7 @@ class TranslatorItalian : public Translator
case ClassDef::Struct: result+="la struct "; break; case ClassDef::Struct: result+="la struct "; break;
case ClassDef::Union: result+="la union "; break; case ClassDef::Union: result+="la union "; break;
case ClassDef::Interface: result+="l'interfaccia "; break; case ClassDef::Interface: result+="l'interfaccia "; break;
case ClassDef::Exception: result+="exception "; break;
} }
result+=(QCString)clName; result+=(QCString)clName;
return result; return result;
...@@ -699,6 +700,7 @@ class TranslatorItalian : public Translator ...@@ -699,6 +700,7 @@ class TranslatorItalian : public Translator
case ClassDef::Struct: result+="struct"; break; case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break; case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interfaccia"; break; case ClassDef::Interface: result+="interfaccia"; break;
case ClassDef::Exception: result+="exception"; break;
} }
result+=" è stata generata a partire "; result+=" è stata generata a partire ";
if (single) result+="dal seguente file:"; if (single) result+="dal seguente file:";
......
...@@ -270,6 +270,7 @@ class TranslatorDutch : public Translator ...@@ -270,6 +270,7 @@ class TranslatorDutch : public Translator
case ClassDef::Struct: result+=" Struct"; break; case ClassDef::Struct: result+=" Struct"; break;
case ClassDef::Union: result+=" Union"; break; case ClassDef::Union: result+=" Union"; break;
case ClassDef::Interface: result+=" Interface"; break; case ClassDef::Interface: result+=" Interface"; break;
case ClassDef::Exception: result+=" Exception"; break;
} }
result+=" Referentie"; result+=" Referentie";
return result; return result;
...@@ -403,6 +404,7 @@ class TranslatorDutch : public Translator ...@@ -403,6 +404,7 @@ class TranslatorDutch : public Translator
case ClassDef::Struct: result+="struct"; break; case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break; case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break; case ClassDef::Interface: result+="interface"; break;
case ClassDef::Exception: result+="exception"; break;
} }
result+=" is gegenereerd op grond van de volgende file"; result+=" is gegenereerd op grond van de volgende file";
if (single) result+=":"; else result+="s:"; if (single) result+=":"; else result+="s:";
......
...@@ -388,6 +388,7 @@ class TranslatorSwedish : public Translator ...@@ -388,6 +388,7 @@ class TranslatorSwedish : public Translator
case ClassDef::Struct: result+=" strukt"; break; case ClassDef::Struct: result+=" strukt"; break;
case ClassDef::Union: result+=" union"; break; case ClassDef::Union: result+=" union"; break;
case ClassDef::Interface: result+=" grnssnitt"; break; case ClassDef::Interface: result+=" grnssnitt"; break;
case ClassDef::Exception: result+=" exception"; break;
} }
result+="referens"; result+="referens";
return result; return result;
...@@ -525,6 +526,7 @@ class TranslatorSwedish : public Translator ...@@ -525,6 +526,7 @@ class TranslatorSwedish : public Translator
case ClassDef::Struct: result+="denna strukt "; break; case ClassDef::Struct: result+="denna strukt "; break;
case ClassDef::Union: result+="denna union "; break; case ClassDef::Union: result+="denna union "; break;
case ClassDef::Interface: result+="detta grnssnitt "; break; case ClassDef::Interface: result+="detta grnssnitt "; break;
case ClassDef::Exception: result+="exception "; break;
} }
result+="var genererad frn fljande fil"; result+="var genererad frn fljande fil";
if (single) result+=":"; else result+="er:"; if (single) result+=":"; else result+="er:";
......
...@@ -59,6 +59,29 @@ bool isId(char c) ...@@ -59,6 +59,29 @@ bool isId(char c)
// return result; // return result;
//} //}
// remove all annoymous scopes from string s
QCString removeAnnonymousScopes(const QCString &s)
{
QCString result;
int i,ni,l=s.length();
int p=0;
while ((i=s.find('@',p))!=-1)
{
if (i>p+2) result+=s.mid(p,i-p-2);
if ((ni=s.find("::",i+1))!=-1)
{
p=ni+2;
}
else
{
p=l;
}
}
if (p!=l) result+=s.mid(p,l-p);
//printf("removeAnnonymousScopes(`%s')=`%s'\n",s.data(),result.data());
return result;
}
// strip annonymous left hand side part of the scope // strip annonymous left hand side part of the scope
QCString stripAnnonymousNamespaceScope(const QCString &s) QCString stripAnnonymousNamespaceScope(const QCString &s)
{ {
...@@ -85,7 +108,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn) ...@@ -85,7 +108,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn)
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.enableAll(); //ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
ol.disable(OutputGenerator::Man); ol.disable(OutputGenerator::Man);
if (Config::pdfHyperFlag) ol.disable(OutputGenerator::Latex); if (Config::pdfHyperFlag) ol.disable(OutputGenerator::Latex);
......
...@@ -79,5 +79,6 @@ bool leftScopeMatch(const QCString &scope, const QCString &name); ...@@ -79,5 +79,6 @@ bool leftScopeMatch(const QCString &scope, const QCString &name);
void writePageRef(OutputList &ol,const char *cn,const char *mn); void writePageRef(OutputList &ol,const char *cn,const char *mn);
QCString substituteKeywords(const QCString &s,const char *title); QCString substituteKeywords(const QCString &s,const char *title);
int getPrefixIndex(const QCString &name); int getPrefixIndex(const QCString &name);
QCString removeAnnonymousScopes(const QCString &s);
#endif #endif
...@@ -8,7 +8,7 @@ TEMPLATE = app ...@@ -8,7 +8,7 @@ TEMPLATE = app
CONFIG = qt warn_on release CONFIG = qt warn_on release
TMAKE_CC = cc TMAKE_CC = cc
TMAKE_CFLAGS = -w +a1 TMAKE_CFLAGS = -w +a1 -DAportable
TMAKE_CFLAGS_WARN_ON = TMAKE_CFLAGS_WARN_ON =
TMAKE_CFLAGS_WARN_OFF = TMAKE_CFLAGS_WARN_OFF =
TMAKE_CFLAGS_RELEASE = -O TMAKE_CFLAGS_RELEASE = -O
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment