Commit 44ca9512 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.8.0-20120429

parent f3e0c94b
No related merge requests found
DOXYGEN Version 1.8.0-20120409
DOXYGEN Version 1.8.0-20120429
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (09 April 2012)
Dimitri van Heesch (29 April 2012)
DOXYGEN Version 1.8.0_20120409
DOXYGEN Version 1.8.0_20120429
Please read INSTALL for compilation instructions.
......@@ -26,4 +26,4 @@ forum.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (09 April 2012)
Dimitri van Heesch (dimitri@stack.nl) (29 April 2012)
......@@ -20,7 +20,7 @@ doxygen_version_minor=8
doxygen_version_revision=0
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20120409
doxygen_version_mmn=20120429
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......@@ -180,6 +180,12 @@ if test -z "$f_platform"; then
f_insttool=/usr/bin/install
fi
;;
NetBSD:*)
f_platform=netbsd-g++
if test "$f_insttool" = NO; then
f_insttool=/usr/bin/install
fi
;;
HP-UX:*)
f_platform=hpux-g++
if test "$f_insttool" = NO; then
......
......@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.7.6.1), 39 languages
Currently (version 1.8.0), 39 languages
are supported (sorted alphabetically):
Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese,
Chinese Traditional, Croatian, Czech, Danish, Dutch, English,
......@@ -86,7 +86,7 @@ when the translator was updated.
<td>Chinese</td>
<td>Lian Yang<br/>Li Daobing<br/>Wei Liu</td>
<td>lian dot yang dot cn at gmail dot com<br/>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
<td>1.8.0</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Chinese Traditional</td>
......@@ -98,13 +98,13 @@ when the translator was updated.
<td>Croatian</td>
<td>Boris Bralo</td>
<td>boris dot bralo at gmail dot com</td>
<td>1.8.0</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Czech</td>
<td>Petr Přikryl</td>
<td>prikrylp at skil dot cz</td>
<td>1.8.0</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Danish</td>
......@@ -128,7 +128,7 @@ when the translator was updated.
<td>Esperanto</td>
<td>Ander Martinez</td>
<td>dwarfnauko at gmail dot com</td>
<td>1.7.5</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Finnish</td>
......@@ -146,7 +146,7 @@ when the translator was updated.
<td>German</td>
<td>Peter Grotrian<br/>Jens Seidel</td>
<td>Peter dot Grotrian at pdv-FS dot de<br/>jensseidel at users dot sf dot net</td>
<td>1.8.0</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Greek</td>
......@@ -170,7 +170,7 @@ when the translator was updated.
<td>Italian</td>
<td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
<td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
<td>1.7.5</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Japanese</td>
......@@ -224,7 +224,7 @@ when the translator was updated.
<td>Polish</td>
<td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
<td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/>krzysztof dot kral at gmail dot com</td>
<td>1.6.3</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Portuguese</td>
......@@ -260,7 +260,7 @@ when the translator was updated.
<td>Slovak</td>
<td>Kali+Laco Švec<br/>Petr Přikryl</td>
<td>the Slovak language advisors<br/>prikrylp at skil dot cz</td>
<td>1.8.0</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Slovene</td>
......@@ -272,7 +272,7 @@ when the translator was updated.
<td>Spanish</td>
<td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
<td>bartomeu at loteria3cornella dot com<br/><span style="color: brown">[unreachable]</span><br/>david at grupoikusnet dot com</td>
<td>1.7.5</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Swedish</td>
......@@ -326,16 +326,16 @@ when the translator was updated.
Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.8.0 \\
~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\
\hline
Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & 1.8.0 \\
Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & up-to-date \\
~ & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & ~ \\
~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\
\hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & 1.8.0 \\
~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\
\hline
Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & 1.8.0 \\
Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & up-to-date \\
\hline
Czech & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & 1.8.0 \\
Czech & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & up-to-date \\
\hline
Danish & Poul-Erik Hansen & {\tt\tiny pouhan at gnotometrics dot dk} & 1.8.0 \\
~ & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & ~ \\
......@@ -344,14 +344,14 @@ when the translator was updated.
\hline
English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
\hline
Esperanto & Ander Martinez & {\tt\tiny dwarfnauko at gmail dot com} & 1.7.5 \\
Esperanto & Ander Martinez & {\tt\tiny dwarfnauko at gmail dot com} & up-to-date \\
\hline
Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\
\hline
French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & 1.8.0 \\
~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\
\hline
German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.0 \\
German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & up-to-date \\
~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\
\hline
Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & 1.8.0 \\
......@@ -361,7 +361,7 @@ when the translator was updated.
\hline
Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.8.0 \\
\hline
Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.7.5 \\
Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & up-to-date \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\
\hline
Japanese & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & 1.6.0 \\
......@@ -388,7 +388,7 @@ when the translator was updated.
\hline
Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & 1.7.5 \\
\hline
Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.6.3 \\
Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & up-to-date \\
~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\
~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\
\hline
......@@ -404,12 +404,12 @@ when the translator was updated.
\hline
SerbianCyrilic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\
\hline
Slovak & Kali+Laco Švec & {\tt\tiny the Slovak language advisors} & 1.8.0 \\
Slovak & Kali+Laco Švec & {\tt\tiny the Slovak language advisors} & up-to-date \\
~ & Petr Přikryl & {\tt\tiny prikrylp at skil dot cz} & ~ \\
\hline
Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\
\hline
Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & 1.7.5 \\
Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\
~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\
~ & David Vaquero & {\tt\tiny david at grupoikusnet dot com} & ~ \\
\hline
......
......@@ -6,7 +6,7 @@ Doxygen provides a number of ways to create lists of items.
By putting a number of column-aligned minus (-) signs at the start of a
line, a bullet list will automatically be generated. Instead of the minus
sign also plus (+) or asterix (\*) can be used.
sign also plus (+) or asterisk (\*) can be used.
Numbered lists can also be generated by using a minus followed by a hash
or by using a number followed by a dot.
......
......@@ -515,7 +515,7 @@ Futhermore, a `*` or `_` only starts an emphasis if
- it is preceded by a space, newline, or one the following characters `<{([,:;`
An emphasis ends if
- it is not following by an alphanumerical character, and
- it is not followed by an alphanumerical character, and
- it is not preceded by a space, newline, or one the following characters `({[<=+-\@`
Lastly, the span of the emphasis is limited to a single paragraph.
......
This diff is collapsed.
......@@ -260,7 +260,7 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
HAVE_DOT = YES
DOT_NUM_THREADS = 0
DOT_FONTNAME =
DOT_FONTSIZE = 10
......
......@@ -927,14 +927,12 @@
QStrList documentation
*****************************************************************************/
typedef QList<char> QStrList
//typedef QList<char> QStrList
/*!
\class QStrList qstrlist.h
\brief The QStrList class provides a doubly linked list of \c char*.
\inherit QList
\ingroup collection
\ingroup tools
......@@ -1039,8 +1037,6 @@ case insensitive compare.
\class QStrListIterator qstrlist.h
\brief The QStrListIterator class is an iterator for the QStrList and QStrIList classes.
\inherit QListIterator
\ingroup tools
This class is a QListIterator\<char\> instance.
......
This diff is collapsed.
......@@ -21,6 +21,7 @@
#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
#include <qptrdict.h>
#include <qstrlist.h>
#include "util.h"
......@@ -330,7 +331,7 @@ class ClassDef : public Definition
void writeDocumentationForInnerClasses(OutputList &ol);
void writeMemberPages(OutputList &ol);
void writeMemberList(OutputList &ol);
void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup);
void writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup,const char *inheritId);
void writeQuickMemberLinks(OutputList &ol,MemberDef *md) const;
void writeSummaryLinks(OutputList &ol);
void reclassifyMember(MemberDef *md,MemberDef::MemberType t);
......@@ -338,6 +339,8 @@ class ClassDef : public Definition
void writeDeclarationLink(OutputList &ol,bool &found,
const char *header,bool localNames);
void removeMemberFromLists(MemberDef *md);
void addGroupedInheritedMembers(OutputList &ol,MemberList::ListType lt,
const QCString &inheritId);
bool visited;
......@@ -354,11 +357,12 @@ class ClassDef : public Definition
QCString getMemberListFileName() const;
void addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief);
MemberList *createMemberList(MemberList::ListType lt);
void writeInheritedMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title,ClassDef *inheritedFrom,bool invert,QPtrDict<void> *visitedClasses);
void writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title,
const char *subTitle=0,bool showInline=FALSE);
const char *subTitle=0,bool showInline=FALSE,ClassDef *inheritedFrom=0,int lt2=-1,QPtrDict<void> *visitedClasses=0);
void writeMemberDocumentation(OutputList &ol,MemberList::ListType lt,const QCString &title,bool showInline=FALSE);
void writeSimpleMemberDocumentation(OutputList &ol,MemberList::ListType lt);
void writePlainMemberDeclaration(OutputList &ol,MemberList::ListType lt,bool inGroup);
void writePlainMemberDeclaration(OutputList &ol,MemberList::ListType lt,bool inGroup,const char *inheritId);
void writeBriefDescription(OutputList &ol,bool exampleFlag);
void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag,
const QCString &title,const QCString &anchor=QCString());
......@@ -377,6 +381,12 @@ class ClassDef : public Definition
void writeMoreLink(OutputList &ol,const QCString &anchor);
void writeDetailedDocumentationBody(OutputList &ol);
int countInheritedDecMembersRec(MemberList::ListType lt);
int countInheritedDecMembers(MemberList::ListType lt);
int countAdditionalInheritedMembers();
void writeAdditionalInheritedMembers(OutputList &ol);
int countMembersIncludingGrouped(MemberList::ListType lt);
ClassDefImpl *m_impl;
};
......
......@@ -75,6 +75,7 @@ CommandMap cmdMap[] =
{ "return", CMD_RETURN },
{ "returns", CMD_RETURN },
{ "retval", CMD_RETVAL },
{ "rtfonly", CMD_RTFONLY },
{ "sa", CMD_SA },
{ "secreflist", CMD_SECREFLIST },
{ "section", CMD_SECTION },
......@@ -117,6 +118,8 @@ CommandMap cmdMap[] =
{ "includelineno", CMD_INCWITHLINES },
{ "inheritdoc", CMD_INHERITDOC },
{ "mscfile", CMD_MSCFILE },
{ "rtfonly", CMD_RTFONLY },
{ "endrtfonly", CMD_ENDRTFONLY },
{ 0, 0 },
};
......
......@@ -118,7 +118,9 @@ enum CommandType
CMD_DCOLON = 84,
CMD_COPYRIGHT = 85 | SIMPLESECT_BIT,
CMD_CITE = 86,
CMD_SNIPPET = 87
CMD_SNIPPET = 87,
CMD_RTFONLY = 88,
CMD_ENDRTFONLY = 89
};
enum HtmlTagType
......
......@@ -2378,6 +2378,13 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
codifyLines(yytext);
endFontClass();
}
<Body>"*"{B}*")" { // end of cast?
g_code->codify(yytext);
g_theCallContext.popScope();
g_bracketCount--;
g_parmType = g_name;
BEGIN(FuncCall);
}
<Body>[\\|\)\+\-\/\%\~\!] {
g_code->codify(yytext);
g_name.resize(0);g_type.resize(0);
......@@ -2870,8 +2877,17 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
g_code->codify(yytext);
}
<MemberCall,MemberCall2,FuncCall>")" {
g_theVarContext.addVariable(g_parmType,g_parmName);
<MemberCall,MemberCall2,FuncCall>("*"{B}*)?")" {
if (yytext[0]==')') // no a pointer cast
{
//printf("addVariable(%s,%s)\n",g_parmType.data(),g_parmName.data());
g_theVarContext.addVariable(g_parmType,g_parmName);
}
else
{
g_parmType.resize(0);
g_parmName.resize(0);
}
g_theCallContext.popScope();
g_inForEachExpression = FALSE;
//g_theCallContext.setClass(0); // commented out, otherwise a()->b() does not work for b().
......
......@@ -365,6 +365,9 @@
<xsd:element name="center" type="docMarkupType" />
<xsd:element name="small" type="docMarkupType" />
<xsd:element name="htmlonly" type="xsd:string" />
<xsd:element name="manonly" type="xsd:string" />
<xsd:element name="xmlonly" type="xsd:string" />
<xsd:element name="rtfonly" type="xsd:string" />
<xsd:element name="latexonly" type="xsd:string" />
<xsd:element name="dot" type="xsd:string" />
<xsd:element name="anchor" type="docAnchorType" />
......
......@@ -365,6 +365,9 @@
" <xsd:element name=\"center\" type=\"docMarkupType\" />\n"
" <xsd:element name=\"small\" type=\"docMarkupType\" />\n"
" <xsd:element name=\"htmlonly\" type=\"xsd:string\" />\n"
" <xsd:element name=\"manonly\" type=\"xsd:string\" />\n"
" <xsd:element name=\"xmlonly\" type=\"xsd:string\" />\n"
" <xsd:element name=\"rtfonly\" type=\"xsd:string\" />\n"
" <xsd:element name=\"latexonly\" type=\"xsd:string\" />\n"
" <xsd:element name=\"dot\" type=\"xsd:string\" />\n"
" <xsd:element name=\"anchor\" type=\"docAnchorType\" />\n"
......
......@@ -887,11 +887,6 @@ and 100 does not change the gamma.
If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
page will contain the date and time when the page was generated. Setting
this to NO can help when comparing the output of multiple runs.
' defval='1' depends='GENERATE_HTML'/>
<option type='bool' id='HTML_ALIGN_MEMBERS' docs='
If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
files or namespaces will be aligned in HTML using tables. If set to
NO a bullet list will be used.
' defval='1' depends='GENERATE_HTML'/>
<option type='bool' id='HTML_DYNAMIC_SECTIONS' docs='
If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
......@@ -1630,5 +1625,6 @@ the various graphs.
<option type='obsolete' id='EXT_DOC_PATHS'/>
<option type='obsolete' id='USE_INLINE_TREES'/>
<option type='obsolete' id='SHOW_DIRECTORIES'/>
<option type='obsolete' id='HTML_ALIGN_MEMBERS'/>
</group>
</doxygenconfig>
......@@ -34,8 +34,10 @@ def parseOption(node):
if type=='bool':
if len(adefval)>0:
enabled = adefval
elif defval=='1':
enabled = "TRUE"
else:
enabled = "TRUE" if defval=='1' else "FALSE"
enabled = "FALSE"
print " cb = cfg->addBool("
print " \"%s\"," % (name)
print " \"%s\"," % (docC)
......
......@@ -1274,15 +1274,6 @@ void addConfigOptions(Config *cfg)
);
cb->addDependency("GENERATE_HTML");
//----
cb = cfg->addBool(
"HTML_ALIGN_MEMBERS",
"If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,\n"
"files or namespaces will be aligned in HTML using tables. If set to\n"
"NO a bullet list will be used.",
TRUE
);
cb->addDependency("GENERATE_HTML");
//----
cb = cfg->addBool(
"HTML_DYNAMIC_SECTIONS",
"If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n"
......@@ -2479,4 +2470,6 @@ void addConfigOptions(Config *cfg)
cfg->addObsolete("USE_INLINE_TREES");
//----
cfg->addObsolete("SHOW_DIRECTORIES");
//----
cfg->addObsolete("HTML_ALIGN_MEMBERS");
}
......@@ -1428,27 +1428,33 @@ QCString Definition::pathFragment() const
return result;
}
void Definition::writePathFragment(OutputList &ol) const
/*! Returns the string used in the footer for $navpath when
* GENERATE_TREEVIEW is enabled
*/
QCString Definition::navigationPathAsString() const
{
makeResident();
QCString result;
if (m_impl->outerScope && m_impl->outerScope!=Doxygen::globalScope)
{
m_impl->outerScope->writePathFragment(ol);
result+=m_impl->outerScope->navigationPathAsString();
}
else if (definitionType()==Definition::TypeFile && ((const FileDef*)this)->getDirDef())
{
((const FileDef*)this)->getDirDef()->writePathFragment(ol);
result+=((const FileDef*)this)->getDirDef()->navigationPathAsString();
}
ol.writeString(" <li class=\"navelem\">");
result+="<li class=\"navelem\">";
if (isLinkable())
{
if (definitionType()==Definition::TypeGroup && ((const GroupDef*)this)->groupTitle())
{
ol.writeObjectLink(getReference(),getOutputFileBase(),0,((const GroupDef*)this)->groupTitle());
result+="<a class=\"el\" href=\""+getOutputFileBase()+Doxygen::htmlFileExtension+"\">"+
((const GroupDef*)this)->groupTitle()+"</a>";
}
else if (definitionType()==Definition::TypePage && !((const PageDef*)this)->title().isEmpty())
{
ol.writeObjectLink(getReference(),getOutputFileBase(),0,((const PageDef*)this)->title());
result+="<a class=\"el\" href=\""+getOutputFileBase()+Doxygen::htmlFileExtension+"\">"+
((const PageDef*)this)->title()+"</a>";
}
else if (definitionType()==Definition::TypeClass)
{
......@@ -1457,46 +1463,34 @@ void Definition::writePathFragment(OutputList &ol) const
{
name = name.left(name.length()-2);
}
ol.writeObjectLink(getReference(),getOutputFileBase(),0,name);
result+="<a class=\"el\" href=\""+getOutputFileBase()+Doxygen::htmlFileExtension;
if (!anchor().isEmpty()) result+="#"+anchor();
result+="\">"+name+"</a>";
}
else
{
ol.writeObjectLink(getReference(),getOutputFileBase(),0,m_impl->localName);
result+="<a class=\"el\" href=\""+getOutputFileBase()+Doxygen::htmlFileExtension+"\">"+
m_impl->localName+"</a>";
}
}
else
{
ol.startBold();
ol.docify(m_impl->localName);
ol.endBold();
result+="<b>"+m_impl->localName+"</b>";
}
ol.writeString(" </li>\n");
result+="</li>";
return result;
}
void Definition::writeNavigationPath(OutputList &ol) const
{
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
if (generateTreeView)
{
ol.writeString("</div>\n");
}
//if (showSearchInfo)
//{
// ol.writeSearchInfo();
//}
ol.writeString(" <div id=\"nav-path\" class=\"navpath\">\n");
ol.writeString(" <ul>\n");
writePathFragment(ol);
if (!generateTreeView)
{
ol.writeString(" </ul>\n");
ol.writeString(" </div>\n");
}
ol.writeString("<div id=\"nav-path\" class=\"navpath\">\n");
ol.writeString(" <ul>\n");
ol.writeString(navigationPathAsString());
ol.writeString(" </ul>\n");
ol.writeString("</div>\n");
ol.popGeneratorState();
}
......
......@@ -317,8 +317,9 @@ class Definition : public DefinitionIntf, public LockableObj
void writeSourceRefs(OutputList &ol,const char *scopeName);
void writeSourceReffedBy(OutputList &ol,const char *scopeName);
void makePartOfGroup(GroupDef *gd);
void writePathFragment(OutputList &ol) const;
//void writePathFragment(OutputList &ol) const;
void writeNavigationPath(OutputList &ol) const;
QCString navigationPathAsString() const;
virtual void writeQuickMemberLinks(OutputList &,MemberDef *) const {}
virtual void writeSummaryLinks(OutputList &) {}
QCString pathFragment() const;
......
......@@ -1310,6 +1310,15 @@ reparsetoken:
doctokenizerYYsetStatePara();
}
break;
case CMD_RTFONLY:
{
doctokenizerYYsetStateRtfOnly();
tok = doctokenizerYYlex();
children.append(new DocVerbatim(parent,g_context,g_token->verb,DocVerbatim::RtfOnly,g_isExample,g_exampleName));
if (tok==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"warning: rtfonly section ended without end marker");
doctokenizerYYsetStatePara();
}
break;
case CMD_LATEXONLY:
{
doctokenizerYYsetStateLatexOnly();
......@@ -5265,6 +5274,15 @@ int DocPara::handleCommand(const QCString &cmdName)
doctokenizerYYsetStatePara();
}
break;
case CMD_RTFONLY:
{
doctokenizerYYsetStateRtfOnly();
retval = doctokenizerYYlex();
m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::RtfOnly,g_isExample,g_exampleName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"warning: rtfonly section ended without end marker");
doctokenizerYYsetStatePara();
}
break;
case CMD_LATEXONLY:
{
doctokenizerYYsetStateLatexOnly();
......@@ -5313,6 +5331,7 @@ int DocPara::handleCommand(const QCString &cmdName)
case CMD_ENDCODE:
case CMD_ENDHTMLONLY:
case CMD_ENDMANONLY:
case CMD_ENDRTFONLY:
case CMD_ENDLATEXONLY:
case CMD_ENDXMLONLY:
case CMD_ENDLINK:
......
......@@ -372,7 +372,7 @@ class DocWhiteSpace : public DocNode
class DocVerbatim : public DocNode
{
public:
enum Type { Code, HtmlOnly, ManOnly, LatexOnly, XmlOnly, Verbatim, Dot, Msc };
enum Type { Code, HtmlOnly, ManOnly, LatexOnly, RtfOnly, XmlOnly, Verbatim, Dot, Msc };
DocVerbatim(DocNode *parent,const QCString &context,
const QCString &text, Type t,bool isExample,
const QCString &exampleFile,const QCString &lang=QCString());
......
......@@ -134,6 +134,7 @@ void doctokenizerYYsetStateHtmlOnly();
void doctokenizerYYsetStateManOnly();
void doctokenizerYYsetStateLatexOnly();
void doctokenizerYYsetStateXmlOnly();
void doctokenizerYYsetStateRtfOnly();
void doctokenizerYYsetStateVerbatim();
void doctokenizerYYsetStateDot();
void doctokenizerYYsetStateMsc();
......
......@@ -395,6 +395,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
%x St_HtmlOnly
%x St_ManOnly
%x St_LatexOnly
%x St_RtfOnly
%x St_XmlOnly
%x St_Verbatim
%x St_Dot
......@@ -708,9 +709,10 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
return TK_NEWPARA;
}
}
<St_CodeOpt>"{"{LABELID}"}" {
<St_CodeOpt>{BLANK}*"{"(".")?{LABELID}"}" {
g_token->name = yytext;
g_token->name = g_token->name.mid(1,g_token->name.length()-2);
int i=g_token->name.find('{');
g_token->name = g_token->name.mid(i+1,g_token->name.length()-i-2);
BEGIN(St_Code);
}
<St_CodeOpt>\n |
......@@ -745,6 +747,14 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
<St_ManOnly>. {
g_token->verb+=yytext;
}
<St_RtfOnly>{CMD}"endrtfonly" {
return RetVal_OK;
}
<St_RtfOnly>[^\\@\n$]+ |
<St_RtfOnly>\n |
<St_RtfOnly>. {
g_token->verb+=yytext;
}
<St_LatexOnly>{CMD}"endlatexonly" {
return RetVal_OK;
}
......@@ -1199,6 +1209,12 @@ void doctokenizerYYsetStateManOnly()
BEGIN(St_ManOnly);
}
void doctokenizerYYsetStateRtfOnly()
{
g_token->verb="";
BEGIN(St_RtfOnly);
}
void doctokenizerYYsetStateXmlOnly()
{
g_token->verb="";
......
......@@ -1593,9 +1593,9 @@ static void writeBoxMemberList(FTextStream &t,
(skipNames==0 || skipNames->find(mma->name())==0))
{
static int limit = Config_getInt("UML_LIMIT_NUM_FIELDS");
if (limit==0 || (totalCount>=limit*3/2 && count>=limit))
if (limit>0 && (totalCount>limit*3/2 && count>=limit))
{
t << theTranslator->trAndMore(QCString().sprintf("%d",totalCount-count-1));
t << theTranslator->trAndMore(QCString().sprintf("%d",totalCount-count));
break;
}
else
......
......@@ -8991,9 +8991,9 @@ int readDir(QFileInfo *fi,
}
else if (recursive &&
(!Config_getBool("EXCLUDE_SYMLINKS") || !cfi->isSymLink()) &&
cfi->isDir() && cfi->fileName()!="." &&
cfi->isDir() &&
!patternMatch(*cfi,exclPatList) &&
cfi->fileName()!="..")
cfi->fileName().at(0)!='.') // skip "." ".." and ".dir"
{
cfi->setFile(cfi->absFilePath());
totalSize+=readDir(cfi,fnList,fnDict,exclDict,
......@@ -10399,11 +10399,11 @@ void parseInput()
msg("Computing class relations...\n");
computeTemplateClassRelations();
flushUnresolvedRelations();
computeClassRelations();
if (Config_getBool("OPTIMIZE_OUTPUT_VHDL"))
{
VhdlDocGen::computeVhdlComponentRelations();
}
computeClassRelations();
g_classEntries.clear();
msg("Add enum values to enums...\n");
......
......@@ -598,123 +598,68 @@ span.mlabel {
/* @end */
/* @group Directory (tree) */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin: 0px;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
margin: 5px;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/*
The following two styles can be used to replace the root node title
with an image of your choice. Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
div.directoryalt {
div.directory {
margin: 10px 0px;
border-top: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
width: 100%;
}
.directoryalt table {
.directory table {
border-collapse:collapse;
}
.directoryalt td {
.directory td {
margin: 0px;
padding: 0px;
vertical-align: top;
}
.directoryalt td.entry {
.directory td.entry {
white-space: nowrap;
padding-right: 6px;
}
.directoryalt td.desc {
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directoryalt tr.even {
.directory tr.even {
padding-left: 6px;
background-color: ##F8;
}
.directoryalt img {
.directory img {
vertical-align: -30%;
}
.directoryalt .levels {
.directory .levels {
white-space: nowrap;
width: 100%;
text-align: right;
font-size: 9pt;
}
.directoryalt .levels span {
.directory .levels span {
cursor: pointer;
padding-left: 2px;
padding-right: 2px;
color: ##50;
}
/* @end */
div.dynheader {
margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
address {
......@@ -1102,6 +1047,30 @@ div.toc li.level4 {
margin-left: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
@media print
{
......
......@@ -598,123 +598,68 @@
"\n"
"/* @end */\n"
"\n"
"/* @group Directory (tree) */\n"
"\n"
"/* for the tree view */\n"
"\n"
".ftvtree {\n"
" font-family: sans-serif;\n"
" margin: 0px;\n"
"}\n"
"\n"
"/* these are for tree view when used as main index */\n"
"\n"
".directory {\n"
" font-size: 9pt;\n"
" font-weight: bold;\n"
" margin: 5px;\n"
"}\n"
"\n"
".directory h3 {\n"
" margin: 0px;\n"
" margin-top: 1em;\n"
" font-size: 11pt;\n"
"}\n"
"\n"
"/*\n"
"The following two styles can be used to replace the root node title\n"
"with an image of your choice. Simply uncomment the next two styles,\n"
"specify the name of your image and be sure to set 'height' to the\n"
"proper pixel height of your image.\n"
"*/\n"
"\n"
"/*\n"
".directory h3.swap {\n"
" height: 61px;\n"
" background-repeat: no-repeat;\n"
" background-image: url(\"yourimage.gif\");\n"
"}\n"
".directory h3.swap span {\n"
" display: none;\n"
"}\n"
"*/\n"
"\n"
".directory > h3 {\n"
" margin-top: 0;\n"
"}\n"
"\n"
".directory p {\n"
" margin: 0px;\n"
" white-space: nowrap;\n"
"}\n"
"\n"
".directory div {\n"
" display: none;\n"
" margin: 0px;\n"
"}\n"
"\n"
".directory img {\n"
" vertical-align: -30%;\n"
"}\n"
"\n"
"/* these are for tree view when not used as main index */\n"
"\n"
"div.directoryalt {\n"
"div.directory {\n"
" margin: 10px 0px;\n"
" border-top: 1px solid #A8B8D9;\n"
" border-bottom: 1px solid #A8B8D9;\n"
" width: 100%;\n"
"}\n"
"\n"
".directoryalt table {\n"
".directory table {\n"
" border-collapse:collapse;\n"
"}\n"
"\n"
".directoryalt td {\n"
".directory td {\n"
" margin: 0px;\n"
" padding: 0px;\n"
" vertical-align: top;\n"
"}\n"
"\n"
".directoryalt td.entry {\n"
".directory td.entry {\n"
" white-space: nowrap;\n"
" padding-right: 6px;\n"
"}\n"
"\n"
".directoryalt td.desc {\n"
".directory td.desc {\n"
" width: 100%;\n"
" padding-left: 6px;\n"
" padding-right: 6px;\n"
" border-left: 1px solid rgba(0,0,0,0.05);\n"
"}\n"
"\n"
".directoryalt tr.even {\n"
".directory tr.even {\n"
" padding-left: 6px;\n"
" background-color: ##F8;\n"
"}\n"
"\n"
".directoryalt img {\n"
".directory img {\n"
" vertical-align: -30%;\n"
"}\n"
"\n"
".directoryalt .levels {\n"
".directory .levels {\n"
" white-space: nowrap;\n"
" width: 100%;\n"
" text-align: right;\n"
" font-size: 9pt;\n"
"}\n"
"\n"
".directoryalt .levels span {\n"
".directory .levels span {\n"
" cursor: pointer;\n"
" padding-left: 2px;\n"
" padding-right: 2px;\n"
" color: ##50;\n"
"}\n"
"\n"
"/* @end */\n"
"\n"
"div.dynheader {\n"
" margin-top: 8px;\n"
" -webkit-touch-callout: none;\n"
" -webkit-user-select: none;\n"
" -khtml-user-select: none;\n"
" -moz-user-select: none;\n"
" -ms-user-select: none;\n"
" user-select: none;\n"
"}\n"
"\n"
"address {\n"
......@@ -1102,6 +1047,30 @@
" margin-left: 45px;\n"
"}\n"
"\n"
".inherit_header {\n"
" font-weight: bold;\n"
" color: gray;\n"
" cursor: pointer;\n"
" -webkit-touch-callout: none;\n"
" -webkit-user-select: none;\n"
" -khtml-user-select: none;\n"
" -moz-user-select: none;\n"
" -ms-user-select: none;\n"
" user-select: none;\n"
"}\n"
"\n"
".inherit_header td {\n"
" padding: 6px 0px 2px 5px;\n"
"}\n"
"\n"
".inherit {\n"
" display: none;\n"
"}\n"
"\n"
"tr.heading h2 {\n"
" margin-top: 12px;\n"
" margin-bottom: 4px;\n"
"}\n"
"\n"
"@media print\n"
"{\n"
......
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function(){
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
$(this).show();
} else if (l==level+1) {
i.attr('src','ftv2folderclosed.png');
a.attr('src','ftv2pnode.png');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
var n = $('[id^=row_'+id+']');
var i = $('[id^=img_'+id+']');
var a = $('[id^=arr_'+id+']');
var c = n.slice(1);
if (c.filter(':first').is(':visible')===true) {
i.attr('src','ftv2folderclosed.png');
a.attr('src','ftv2pnode.png');
c.hide();
} else {
i.attr('src','ftv2folderopen.png');
a.attr('src','ftv2mnode.png');
c.show();
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.hide();
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.show();
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
"function toggleVisibility(linkObj)\n"
"{\n"
" var base = $(linkObj).attr('id');\n"
" var summary = $('#'+base+'-summary');\n"
" var content = $('#'+base+'-content');\n"
" var trigger = $('#'+base+'-trigger');\n"
" var src=$(trigger).attr('src');\n"
" if (content.is(':visible')===true) {\n"
" content.hide();\n"
" summary.show();\n"
" $(linkObj).addClass('closed').removeClass('opened');\n"
" $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');\n"
" } else {\n"
" content.show();\n"
" summary.hide();\n"
" $(linkObj).removeClass('closed').addClass('opened');\n"
" $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');\n"
" } \n"
" return false;\n"
"}\n"
"\n"
"function updateStripes()\n"
"{\n"
" $('table.directory tr').\n"
" removeClass('even').filter(':visible:even').addClass('even');\n"
"}\n"
"function toggleLevel(level)\n"
"{\n"
" $('table.directory tr').each(function(){ \n"
" var l = this.id.split('_').length-1;\n"
" var i = $('#img'+this.id.substring(3));\n"
" var a = $('#arr'+this.id.substring(3));\n"
" if (l<level+1) {\n"
" i.attr('src','ftv2folderopen.png');\n"
" a.attr('src','ftv2mnode.png');\n"
" $(this).show();\n"
" } else if (l==level+1) {\n"
" i.attr('src','ftv2folderclosed.png');\n"
" a.attr('src','ftv2pnode.png');\n"
" $(this).show();\n"
" } else {\n"
" $(this).hide();\n"
" }\n"
" });\n"
" updateStripes();\n"
"}\n"
"function toggleFolder(id) \n"
"{\n"
" var n = $('[id^=row_'+id+']');\n"
" var i = $('[id^=img_'+id+']');\n"
" var a = $('[id^=arr_'+id+']');\n"
" var c = n.slice(1);\n"
" if (c.filter(':first').is(':visible')===true) {\n"
" i.attr('src','ftv2folderclosed.png');\n"
" a.attr('src','ftv2pnode.png');\n"
" c.hide();\n"
" } else {\n"
" i.attr('src','ftv2folderopen.png');\n"
" a.attr('src','ftv2mnode.png');\n"
" c.show();\n"
" }\n"
" updateStripes();\n"
"}\n"
"\n"
"function toggleInherit(id)\n"
"{\n"
" var rows = $('tr.inherit.'+id);\n"
" var img = $('tr.inherit_header.'+id+' img');\n"
" var src = $(img).attr('src');\n"
" if (rows.filter(':first').is(':visible')===true) {\n"
" rows.hide();\n"
" $(img).attr('src',src.substring(0,src.length-8)+'closed.png');\n"
" } else {\n"
" rows.show();\n"
" $(img).attr('src',src.substring(0,src.length-10)+'open.png');\n"
" }\n"
"}\n"
"\n"
<!-- start footer part -->
<!--BEGIN GENERATE_TREEVIEW-->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
$navpath
<li class="footer">$generatedby
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
</ul>
</div>
<img class="footer" src="$relpath$doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
</ul>
</div>
<!--END GENERATE_TREEVIEW-->
<!--BEGIN !GENERATE_TREEVIEW-->
<hr class="footer"/><address class="footer"><small>
......
"<!-- start footer part -->\n"
"<!--BEGIN GENERATE_TREEVIEW-->\n"
"<div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n"
" <ul>\n"
" $navpath\n"
" <li class=\"footer\">$generatedby\n"
" <a href=\"http://www.doxygen.org/index.html\">\n"
" <img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/></a> $doxygenversion </li>\n"
" </ul>\n"
" </div>\n"
" <img class=\"footer\" src=\"$relpath$doxygen.png\" alt=\"doxygen\"/></a> $doxygenversion </li>\n"
" </ul>\n"
"</div>\n"
"<!--END GENERATE_TREEVIEW-->\n"
"<!--BEGIN !GENERATE_TREEVIEW-->\n"
"<hr class=\"footer\"/><address class=\"footer\"><small>\n"
......
......@@ -526,35 +526,37 @@ static bool getLink(UseSDict *usedict, // dictonary with used modules
static void generateLink(CodeOutputInterface &ol, char *lname)
{
ClassDef *cd=0;
QCString tmp = lname;
tmp = tmp.lower();
// check if lname is a linkable type or interface
if ( (getFortranTypeDefs(lname, currentModule, cd, useMembers)) && cd->isLinkable() )
// check if lowercase lname is a linkable type or interface
if ( (getFortranTypeDefs(tmp, currentModule, cd, useMembers)) && cd->isLinkable() )
{
if ( (cd->compoundType() == ClassDef::Class) && // was Entry::INTERFACE_SEC) &&
(getGenericProcedureLink(cd, lname, ol)) )
(getGenericProcedureLink(cd, tmp, ol)) )
{
//cout << "=== generic procedure resolved" << endl;
}
else
{ // write type or interface link
ol.linkableSymbol(g_yyLineNr, lname, cd, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),lname);
addToSearchIndex(lname);
ol.linkableSymbol(g_yyLineNr, tmp, cd, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),tmp);
addToSearchIndex(tmp.data());
}
}
// check for function/variable
else if (getLink(useMembers, lname, ol, lname))
else if (getLink(useMembers, tmp, ol, tmp))
{
//cout << "=== found link for " << lname << endl;
//cout << "=== found link for lowercase " << lname << endl;
}
else
{
// nothing found, just write out the word
ol.linkableSymbol(g_yyLineNr, lname, 0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
ol.linkableSymbol(g_yyLineNr, tmp, 0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
//startFontClass("charliteral"); //test
codifyLines(lname);
codifyLines(tmp);
//endFontClass(); //test
addToSearchIndex(lname);
addToSearchIndex(tmp.data());
}
}
......@@ -838,9 +840,15 @@ IGNORE (CALL)
endFontClass();
}
<Declaration>{ID} { // local var
g_code->codify(yytext);
if (g_currentMemberDef && g_currentMemberDef->isFunction())
addLocalVar(yytext);
if (g_currentMemberDef && !g_currentMemberDef->isFunction())
{
g_code->codify(yytext);
addLocalVar(yytext);
}
else
{
generateLink(*g_code, yytext);
}
}
<Declaration>[(] { // start of array specification
bracketCount++;
......
......@@ -767,6 +767,7 @@ private {
//cout << "5=========> got variable: " << argType << "::" << yytext << endl;
/* work around for bug in QCString.replace (QCString works) */
QCString name=yytext;
name = name.lower();
/* remember attributes for the symbol */
modifiers[current_root][name.lower()] |= currentModifiers;
argName= name;
......@@ -853,7 +854,7 @@ private {
QCString name(argName);
QCString attr("dimension");
attr += yytext;
modifiers[current_root][name] |= attr;
modifiers[current_root][name.lower()] |= attr;
}
<Variable>{COMMA} { //printf("COMMA: %d<=..<=%d\n", yyColNr-yyleng, yyColNr);
// locate !< comment
......@@ -963,7 +964,7 @@ private {
<Subprog>{BS} { /* ignore white space */ }
<Subprog>{ID} { current->name = yytext;
//cout << "1a==========> got " << current->type << " " << yytext << " " << yyLineNr << endl;
modifiers[current_root][current->name.lower()].returnName = current->name;
modifiers[current_root][current->name.lower()].returnName = current->name.lower();
if (ifType == IF_ABSTRACT || ifType == IF_SPECIFIC)
{
......@@ -1893,6 +1894,7 @@ static void initEntry()
static void addCurrentEntry()
{
//printf("===Adding entry %s to %s\n", current->name.data(), current_root->name.data());
current->name = current->name.lower();
current_root->addSubEntry(current);
last_entry = current;
current = new Entry ;
......
This diff is collapsed.
......@@ -62,14 +62,13 @@ class FTVHelp : public IndexIntf
static void generateTreeViewImages();
void generateTreeViewScripts();
private:
void generateScript(FTextStream &t);
void generateTree(FTextStream &t,const QList<FTVNode> &nl,int level,int &index);
bool generateJSTree(FTextStream &tidx,FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
//bool generateJSTree(FTextStream &tidx,FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
//bool generateJSTreeTopLevel(FTextStream &tidx,FTextStream &t,const QList<FTVNode> &nl,int level,bool &first);
QCString generateIndentLabel(FTVNode *n,int level);
void generateIndent(FTextStream &t,FTVNode *n,int level);
void generateLink(FTextStream &t,FTVNode *n);
void generateJSLink(FTextStream &t,FTVNode *n);
//void generateJSLink(FTextStream &t,FTVNode *n);
QList<FTVNode> *m_indentNodes;
int m_indent;
bool m_topLevelIndex;
......
......@@ -694,6 +694,10 @@ void GroupDef::writeNestedGroups(OutputList &ol,const QCString &title)
ol.parseText(title);
ol.endMemberHeader();
ol.startMemberList();
if (Config_getBool("SORT_GROUP_NAMES"))
{
groupList->sort();
}
GroupDef *gd=groupList->first();
while (gd)
{
......
......@@ -6,13 +6,15 @@
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
<link href="$relpath$$stylesheet" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="$relpath$jquery.js"></script>
<script type="text/javascript" src="$relpath$dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath$$stylesheet" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
......@@ -47,3 +49,4 @@ $mathjax
</table>
</div>
<!--END TITLEAREA-->
<!-- end header part -->
......@@ -6,13 +6,15 @@
"<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->\n"
"<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->\n"
"<link href=\"$relpath$tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"
"<link href=\"$relpath$$stylesheet\" rel=\"stylesheet\" type=\"text/css\" />\n"
"<script type=\"text/javascript\" src=\"$relpath$jquery.js\"></script>\n"
"<script type=\"text/javascript\" src=\"$relpath$dynsections.js\"></script>\n"
"$treeview\n"
"$search\n"
"$mathjax\n"
"<link href=\"$relpath$$stylesheet\" rel=\"stylesheet\" type=\"text/css\" />\n"
"</head>\n"
"<body>\n"
"<div id=\"top\"><!-- do not remove this div! -->\n"
"<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n"
"\n"
"<!--BEGIN TITLEAREA-->\n"
"<div id=\"titlearea\">\n"
......@@ -47,3 +49,4 @@
"</table>\n"
"</div>\n"
"<!--END TITLEAREA-->\n"
"<!-- end header part -->\n"
......@@ -363,6 +363,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::ManOnly:
case DocVerbatim::LatexOnly:
case DocVerbatim::XmlOnly:
case DocVerbatim::RtfOnly:
/* nothing */
break;
......@@ -1054,11 +1055,11 @@ void HtmlDocVisitor::visitPre(DocSection *s)
{
if (m_hide) return;
forceEndParagraph(s);
m_t << "<h" << s->level()+1 << ">";
m_t << "<h" << s->level() << ">";
m_t << "<a class=\"anchor\" id=\"" << s->anchor();
m_t << "\"></a>" << endl;
filter(convertCharEntitiesToUTF8(s->title().data()));
m_t << "</h" << s->level()+1 << ">\n";
m_t << "</h" << s->level() << ">\n";
}
void HtmlDocVisitor::visitPost(DocSection *s)
......@@ -1480,9 +1481,9 @@ void HtmlDocVisitor::visitPre(DocParamSect *s)
default:
ASSERT(0);
}
m_t << "<dl class=\"" << className << "\"><dt><b>";
m_t << "<dl class=\"" << className << "\"><dt>";
m_t << heading << ":";
m_t << "</b></dt><dd>" << endl;
m_t << "</dt><dd>" << endl;
m_t << " <table class=\"" << className << "\">" << endl;
}
......
This diff is collapsed.
......@@ -55,7 +55,7 @@ class HtmlGenerator : public OutputGenerator
void printDoc(DocNode *,const char *);
void startFile(const char *name,const char *manName,const char *title);
void writeFooter();
void writeFooter(const char *navPath);
void endFile();
void clearBuffer();
void writeSearchInfo();
......@@ -120,7 +120,7 @@ class HtmlGenerator : public OutputGenerator
void endInlineHeader();
void startAnonTypeScope(int) {}
void endAnonTypeScope(int) {}
void startMemberItem(const char *anchor,int);
void startMemberItem(const char *anchor,int,const char *inheritId);
void endMemberItem();
void startMemberTemplateParams();
void endMemberTemplateParams(const char *anchor);
......@@ -133,8 +133,10 @@ class HtmlGenerator : public OutputGenerator
void endMemberGroup(bool);
void insertMemberAlign(bool);
void startMemberDescription(const char *anchor);
void startMemberDescription(const char *anchor,const char *inheritId);
void endMemberDescription();
void writeInheritedSectionTitle(const char *id,const char *file,
const char *anchor,const char *title,const char *name);
void writeRuler() { t << "<hr/>"; }
void writeAnchor(const char *,const char *name)
......@@ -276,7 +278,7 @@ class HtmlGenerator : public OutputGenerator
//static void generateSectionImages();
private:
static void writePageFooter(FTextStream &t,const QCString &,const QCString &);
static void writePageFooter(FTextStream &t,const QCString &,const QCString &,const QCString &);
QCString lastTitle;
QCString lastFile;
QCString relPath;
......
......@@ -253,7 +253,8 @@ void startFile(OutputList &ol,const char *name,const char *manName,
ol.writeSearchInfo();
}
void endFile(OutputList &ol,bool skipNavIndex,bool skipEndContents)
void endFile(OutputList &ol,bool skipNavIndex,bool skipEndContents,
const QCString &navPath)
{
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
ol.pushGeneratorState();
......@@ -263,12 +264,10 @@ void endFile(OutputList &ol,bool skipNavIndex,bool skipEndContents)
if (!skipEndContents) ol.endContents();
if (generateTreeView)
{
ol.writeString("</div>\n");
ol.writeString(" <div id=\"nav-path\" class=\"navpath\">\n");
ol.writeString(" <ul>\n");
ol.writeString("</div><!-- doc-content -->\n");
}
}
ol.writeFooter(); // write the footer
ol.writeFooter(navPath); // write the footer
ol.popGeneratorState();
ol.endFile();
}
......@@ -276,11 +275,13 @@ void endFile(OutputList &ol,bool skipNavIndex,bool skipEndContents)
void endFileWithNavPath(Definition *d,OutputList &ol)
{
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
QCString navPath;
if (generateTreeView)
{
d->writeNavigationPath(ol);
ol.writeString("</div><!-- doc-content -->\n");
navPath = d->navigationPathAsString();
}
endFile(ol,generateTreeView,TRUE);
endFile(ol,generateTreeView,TRUE,navPath);
}
//----------------------------------------------------------------------
......@@ -389,6 +390,11 @@ static void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int
for ( ; bcli.current() ; ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
if (cd->getLanguage()==SrcLangExt_VHDL && (VhdlDocGen::VhdlClasses)cd->protection()!=VhdlDocGen::ENTITYCLASS)
{
continue;
}
bool b;
if (cd->getLanguage()==SrcLangExt_VHDL)
{
......@@ -436,7 +442,14 @@ static void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int
}
if (ftv)
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
if (cd->getLanguage()==SrcLangExt_VHDL)
{
ftv->addContentsItem(hasChildren,bcli.current()->usedName,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
else
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
}
}
else
......@@ -716,7 +729,10 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
}
if (ftv)
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
if (cd->getLanguage()!=SrcLangExt_VHDL) // prevents double insertion in Design Unit List
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
}
}
else
......@@ -1175,6 +1191,21 @@ void writeClassTree(ClassSDict *clDict,FTVHelp *ftv,bool addToIndex,bool globalO
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
if (cd->getLanguage()==SrcLangExt_VHDL)
{
if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS
)// no architecture
{
continue;
}
if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ARCHITECTURECLASS)
{
QCString n=cd->name();
cd->setClassName(n.data());
}
}
if (!globalOnly ||
cd->getOuterScope()==0 ||
cd->getOuterScope()==Doxygen::globalScope
......@@ -1257,15 +1288,23 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv,
count+=classCount;
}
ftv->addContentsItem(count>0,nd->localName(),nd->getReference(),
nd->getOutputFileBase(),0,FALSE,TRUE,nd);
if (nd->getLanguage()==SrcLangExt_VHDL)
{
QCString q=nd->getOutputFileBase().replace(0,strlen("namespace"),"class");
ftv->addContentsItem(count>0,nd->localName(),nd->getReference(),q,0,FALSE,TRUE,nd);
}
else
{
ftv->addContentsItem(count>0,nd->localName(),nd->getReference(),
nd->getOutputFileBase(),0,FALSE,TRUE,nd);
}
if (addToIndex)
{
if (nd->getLanguage()==SrcLangExt_VHDL) // UGLY HACK
{
ClassDef* ccd=getClass(nd->displayName().data());
if (ccd) Doxygen::indexList.addContentsItem(FALSE,ccd->displayName(),ccd->getReference(),ccd->getOutputFileBase(),0);
QCString q=nd->getOutputFileBase().replace(0,strlen("namespace"),"class");
Doxygen::indexList.addContentsItem(count>0,nd->localName(),nd->getReference(),q,QCString(),count>0,showClasses);
}
else
{
......@@ -1332,8 +1371,7 @@ static void writeNamespaceIndex(OutputList &ol)
ol.startIndexKey();
if (nd->getLanguage()==SrcLangExt_VHDL)
{
ClassDef* ccd=getClass(nd->displayName());
if (ccd) ol.writeObjectLink(0,ccd->getOutputFileBase(),0,nd->displayName());
ol.writeObjectLink(0, nd->getOutputFileBase().replace(0,strlen("namespace"),"class"),0,nd->displayName());
}
else
{
......@@ -1379,7 +1417,11 @@ static void writeNamespaceIndex(OutputList &ol)
Doxygen::indexList.incContentsDepth();
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeNamespaceTree(Doxygen::namespaceSDict,ftv,TRUE,FALSE,addToIndex);
static bool optimizeOutputVhdl = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
if (!optimizeOutputVhdl) // prevents double insertions (Packages/Design Unit List)
{
writeNamespaceTree(Doxygen::namespaceSDict,ftv,TRUE,FALSE,addToIndex);
}
QGString outStr;
FTextStream t(&outStr);
ftv->generateTreeViewInline(t);
......@@ -1433,8 +1475,13 @@ static void writeAnnotatedClassList(OutputList &ol)
for (cli.toFirst();(cd=cli.current());++cli)
{
if (cd->getLanguage()==SrcLangExt_VHDL &&(!(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))
if (cd->getLanguage()==SrcLangExt_VHDL &&
((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS)
) // no architecture
{
continue;
}
ol.pushGeneratorState();
if (cd->isEmbeddedInOuterScope())
......
......@@ -259,7 +259,8 @@ void endTitle(OutputList &ol,const char *fileName,const char *name);
void startFile(OutputList &ol,const char *name,const char *manName,
const char *title,HighlightedItem hli=HLI_None,
bool additionalIndices=FALSE,const char *altSidebarName=0);
void endFile(OutputList &ol,bool skipNavIndex=FALSE,bool skipEndContents=FALSE);
void endFile(OutputList &ol,bool skipNavIndex=FALSE,bool skipEndContents=FALSE,
const QCString &navPath=QCString());
void endFileWithNavPath(Definition *d,OutputList &ol);
void initClassMemberIndices();
......
......@@ -378,7 +378,6 @@ void LatexDocVisitor::visit(DocStyleChange *s)
void LatexDocVisitor::visit(DocVerbatim *s)
{
//static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE");
if (m_hide) return;
QCString lang = m_langExt;
if (!s->language().isEmpty()) // explicit language setting
......@@ -404,6 +403,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::HtmlOnly:
case DocVerbatim::XmlOnly:
case DocVerbatim::ManOnly:
case DocVerbatim::RtfOnly:
/* nothing */
break;
case DocVerbatim::LatexOnly:
......
......@@ -501,7 +501,7 @@ static void writeDefaultStyleSheetPart2(FTextStream &t)
static void writeDefaultStyleSheetPart3(FTextStream &t)
{
static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE");
//static bool latexSourceCode = Config_getBool("LATEX_SOURCE_CODE");
t << "}}\n";
//t << "\\cfoot{}\n\n";
t << "\\fancyfoot[CO]{\\fancyplain{}{}}\n";
......@@ -557,25 +557,25 @@ static void writeDefaultStyleSheetPart3(FTextStream &t)
"}\n\n";
t << "% Used by @code ... @endcode\n"
"\\newenvironment{DoxyCode}{%\n";
if (latexSourceCode)
{
//if (latexSourceCode)
//{
t << "\n\n\\begin{scriptsize}\\begin{alltt}%" << endl;
}
else
{
t << " \\footnotesize%\n"
" \\verbatim%\n";
}
//}
//else
//{
// t << " \\footnotesize%\n"
// " \\verbatim%\n";
//}
t << "}{%\n";
if (latexSourceCode)
{
//if (latexSourceCode)
//{
t << "\\end{alltt}\\end{scriptsize}%" << endl;
}
else
{
t << " \\endverbatim%\n"
" \\normalsize%\n";
}
//}
//else
//{
// t << " \\endverbatim%\n"
// " \\normalsize%\n";
//}
t << "}\n\n";
t << "% Used by @example, @include, @includelineno and @dontinclude\n"
"\\newenvironment{DoxyCodeInclude}{%\n"
......@@ -1656,7 +1656,7 @@ void LatexGenerator::writeCodeLink(const char *ref,const char *f,
t << "\n ";
col=0;
}
if (m_prettyCode && !disableLinks && !ref && usePDFLatex && pdfHyperlinks)
if (/*m_prettyCode &&*/ !disableLinks && !ref && usePDFLatex && pdfHyperlinks)
{
t << "\\hyperlink{";
if (f) t << stripPath(f);
......@@ -2030,14 +2030,14 @@ void LatexGenerator::codify(const char *str)
}
}
result[i]=0; // add terminator
if (m_prettyCode)
{
//if (m_prettyCode)
//{
filterLatexString(t,result,insideTabbing,TRUE);
}
else
{
t << result;
}
//}
//else
//{
// t << result;
//}
break;
}
}
......@@ -2102,7 +2102,7 @@ void LatexGenerator::endMemberTemplateParams(const char *)
}
}
void LatexGenerator::startMemberItem(const char *,int annoType)
void LatexGenerator::startMemberItem(const char *,int annoType,const char *)
{
//printf("LatexGenerator::startMemberItem(%d)\n",annType);
if (!insideTabbing)
......@@ -2122,7 +2122,7 @@ void LatexGenerator::endMemberItem()
t << endl;
}
void LatexGenerator::startMemberDescription(const char *)
void LatexGenerator::startMemberDescription(const char *,const char *)
{
if (!insideTabbing)
{
......@@ -2528,13 +2528,13 @@ void LatexGenerator::endCodeLine()
void LatexGenerator::startFontClass(const char *name)
{
if (!m_prettyCode) return;
//if (!m_prettyCode) return;
t << "\\textcolor{" << name << "}{";
}
void LatexGenerator::endFontClass()
{
if (!m_prettyCode) return;
//if (!m_prettyCode) return;
t << "}";
}
......@@ -2542,7 +2542,7 @@ void LatexGenerator::startCodeAnchor(const char *name)
{
static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
if (!m_prettyCode) return;
//if (!m_prettyCode) return;
if (usePDFLatex && pdfHyperlinks)
{
t << "\\hypertarget{" << stripPath(name) << "}{}";
......
......@@ -48,7 +48,7 @@ class LatexGenerator : public OutputGenerator
void startFile(const char *name,const char *manName,const char *title);
void writeSearchInfo() {}
void writeFooter() {}
void writeFooter(const char *) {}
void endFile();
void clearBuffer();
......@@ -113,7 +113,7 @@ class LatexGenerator : public OutputGenerator
void endInlineHeader();
void startAnonTypeScope(int);
void endAnonTypeScope(int);
void startMemberItem(const char *,int);
void startMemberItem(const char *,int,const char *);
void endMemberItem();
void startMemberTemplateParams();
void endMemberTemplateParams(const char *);
......@@ -162,8 +162,10 @@ class LatexGenerator : public OutputGenerator
void endCenter() { t << "\\end{center}" << endl; }
void startSmall() { t << "\\footnotesize "; }
void endSmall() { t << "\\normalsize "; }
void startMemberDescription(const char *);
void startMemberDescription(const char *,const char *);
void endMemberDescription();
void writeInheritedSectionTitle(const char *,const char *,
const char *,const char *,const char *) {}
void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; }
void endDescList() { t << "\\end{Desc}" << endl; }
void startSimpleSect(SectionTypes,const char *,const char *,const char *);
......
......@@ -71,6 +71,7 @@ HEADERS = arguments.h \
jquery_ui_js.h \
jquery_fx_js.h \
svgpan_js.h \
dynsections_js.h \
language.h \
latexdocvisitor.h \
latexgen.h \
......
......@@ -171,6 +171,9 @@ navtree_css.h: navtree.css
svgpan_js.h: svgpan.js
cat svgpan.js | $(TO_C_CMD) >svgpan_js.h
dynsections_js.h: dynsections.js
cat dynsections.js | $(TO_C_CMD) >dynsections_js.h
doxygen_bst.h: doxygen.bst
cat doxygen.bst | $(TO_C_CMD) >doxygen_bst.h
......
......@@ -219,6 +219,7 @@ void ManDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::HtmlOnly:
case DocVerbatim::XmlOnly:
case DocVerbatim::LatexOnly:
case DocVerbatim::RtfOnly:
case DocVerbatim::Dot:
case DocVerbatim::Msc:
/* nothing */
......
......@@ -524,7 +524,7 @@ void ManGenerator::endAnonTypeScope(int indentLevel)
}
void ManGenerator::startMemberItem(const char *,int)
void ManGenerator::startMemberItem(const char *,int,const char *)
{
if (firstCol && !insideTabbing) t << ".in +1c\n";
t << "\n.ti -1c\n.RI \"";
......
......@@ -45,7 +45,7 @@ class ManGenerator : public OutputGenerator
static void init();
void startFile(const char *name,const char *manName,const char *title);
void writeSearchInfo() {}
void writeFooter() {}
void writeFooter(const char *) {}
void endFile();
void clearBuffer();
......@@ -111,7 +111,7 @@ class ManGenerator : public OutputGenerator
void endInlineHeader();
void startAnonTypeScope(int);
void endAnonTypeScope(int);
void startMemberItem(const char *,int);
void startMemberItem(const char *,int,const char *);
void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams(const char *) {}
......@@ -158,8 +158,10 @@ class ManGenerator : public OutputGenerator
void endCenter() {}
void startSmall() {}
void endSmall() {}
void startMemberDescription(const char *) { t << "\n.RI \"\\fI"; firstCol=FALSE; }
void startMemberDescription(const char *,const char *) { t << "\n.RI \"\\fI"; firstCol=FALSE; }
void endMemberDescription() { t << "\\fP\""; firstCol=FALSE; }
void writeInheritedSectionTitle(const char *,const char *,
const char *,const char *,const char *) {}
void startDescList(SectionTypes);
void endDescList() {}
void startSimpleSect(SectionTypes,const char *,const char *,const char *);
......
......@@ -31,10 +31,10 @@ class QGString;
class SectionDict;
class MemberSDict;
class GroupList;
class MemberList;
struct BodyInfo;
struct DocInfo;
struct BriefInfo;
class MemberList;
class ExampleSDict;
class Entry;
......
......@@ -710,8 +710,6 @@ MemberDef::~MemberDef()
void MemberDef::setReimplements(MemberDef *md)
{
makeResident();
//if (redefines==0) redefines = new MemberList;
//if (redefines->find(md)==-1) redefines->inSort(md);
m_impl->redefines = md;
}
......@@ -1231,7 +1229,7 @@ bool MemberDef::isBriefSectionVisible() const
void MemberDef::writeDeclaration(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
bool inGroup
bool inGroup,const char *inheritId
)
{
//printf("%s MemberDef::writeDeclaration() inGroup=%d\n",name().data(),inGroup);
......@@ -1321,7 +1319,10 @@ void MemberDef::writeDeclaration(OutputList &ol,
// start a new member declaration
bool isAnonymous = annoClassDef || m_impl->annMemb || m_impl->annEnumType;
///printf("startMemberItem for %s\n",name().data());
ol.startMemberItem( anchor(), isAnonymous ? 1 : m_impl->tArgList ? 3 : 0);
ol.startMemberItem(anchor(),
isAnonymous ? 1 : m_impl->tArgList ? 3 : 0,
inheritId
);
// If there is no detailed description we need to write the anchor here.
bool detailsVisible = isDetailedSectionLinkable();
......@@ -1378,9 +1379,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
int ir=i+l;
//printf("<<<<<<<<<<<<<<\n");
ol.startAnonTypeScope(s_indentLevel++);
annoClassDef->writeDeclaration(ol,m_impl->annMemb,inGroup);
annoClassDef->writeDeclaration(ol,m_impl->annMemb,inGroup,inheritId);
//printf(">>>>>>>>>>>>>> startMemberItem(2)\n");
ol.startMemberItem(anchor(),2);
ol.startMemberItem(anchor(),2,inheritId);
int j;
for (j=0;j< s_indentLevel-1;j++)
{
......@@ -1443,7 +1444,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
);
}
bool htmlOn = ol.isEnabled(OutputGenerator::Html);
if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
if (htmlOn && /*Config_getBool("HTML_ALIGN_MEMBERS") &&*/ !ltype.isEmpty())
{
ol.disable(OutputGenerator::Html);
}
......@@ -1646,7 +1647,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
/* && !annMemb */
)
{
ol.startMemberDescription(anchor());
ol.startMemberDescription(anchor(),inheritId);
ol.parseDoc(briefFile(),briefLine(),
getOuterScope()?getOuterScope():d,this,briefDescription(),
TRUE,FALSE,0,TRUE,FALSE);
......@@ -1939,7 +1940,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if ((isVariable() || isTypedef()) && (i=r.match(ldef,0,&l))!=-1)
{
// find enum type and insert it in the definition
MemberListIterator vmli(*ml);
QListIterator<MemberDef> vmli(*ml);
MemberDef *vmd;
bool found=FALSE;
for ( ; (vmd=vmli.current()) && !found ; ++vmli)
......@@ -3173,7 +3174,7 @@ void MemberDef::writeEnumDeclaration(OutputList &typeDecl,
int enumMemCount=0;
QList<MemberDef> *fmdl=m_impl->enumFields;
MemberList *fmdl=m_impl->enumFields;
uint numVisibleEnumValues=0;
if (fmdl)
{
......
......@@ -184,7 +184,7 @@ class MemberDef : public Definition
bool isDocumentedFriendClass() const;
MemberDef *reimplements() const;
LockingPtr<MemberList> reimplementedBy() const;
LockingPtr< MemberList > reimplementedBy() const;
//int inbodyLine() const;
//QCString inbodyFile() const;
......@@ -196,7 +196,7 @@ class MemberDef : public Definition
MemberDef *getAnonymousEnumType() const;
bool isDocsForDefinition() const;
MemberDef *getEnumScope() const;
LockingPtr<MemberList> enumFieldList() const;
LockingPtr< MemberList > enumFieldList() const;
bool hasExamples();
LockingPtr<ExampleSDict> getExamples() const;
......@@ -348,7 +348,7 @@ class MemberDef : public Definition
// output generation
void writeDeclaration(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
bool inGroup);
bool inGroup,const char *inheritId=0);
void writeDocumentation(MemberList *ml,OutputList &ol,
const char *scopeName,Definition *container,
bool inGroup,bool showEnumValues=FALSE,bool
......
......@@ -117,11 +117,12 @@ void MemberGroup::writeDeclarations(OutputList &ol,
}
void MemberGroup::writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *inheritId
)
{
//printf("MemberGroup::writePlainDeclarations() memberList->count()=%d\n",memberList->count());
memberList->writePlainDeclarations(ol,cd,nd,fd,gd);
memberList->writePlainDeclarations(ol,cd,nd,fd,gd,inheritId);
}
void MemberGroup::writeDocumentation(OutputList &ol,const char *scopeName,
......@@ -136,6 +137,42 @@ void MemberGroup::writeDocumentationPage(OutputList &ol,const char *scopeName,
memberList->writeDocumentationPage(ol,scopeName,container);
}
void MemberGroup::addGroupedInheritedMembers(OutputList &ol,ClassDef *cd,
MemberList::ListType lt,const QCString &inheritId)
{
//printf("** addGroupedInheritedMembers()\n");
MemberListIterator li(*memberList);
MemberDef *md;
for (li.toFirst();(md=li.current());++li)
{
//printf("matching %d == %d\n",lt,md->getSectionList(m_parent)->listType());
if (lt==md->getSectionList(m_parent)->listType())
{
MemberList ml(lt);
ml.append(md);
ml.writePlainDeclarations(ol,cd,0,0,0,inheritId);
}
}
}
int MemberGroup::countGroupedInheritedMembers(MemberList::ListType lt)
{
//printf("** countGroupedInheritedMembers()\n");
int count=0;
MemberListIterator li(*memberList);
MemberDef *md;
for (li.toFirst();(md=li.current());++li)
{
//printf("matching %d == %d\n",lt,md->getSectionList(m_parent)->listType());
if (lt==md->getSectionList(m_parent)->listType())
{
count++;
}
}
return count;
}
/*! Add this group as a subsection of the declaration section, instead
* of rendering it in its own section
*/
......
......@@ -22,6 +22,7 @@
#include <qlist.h>
#include <qfile.h>
#include "sortdict.h"
#include "memberlist.h"
#define DOX_NOGROUP -1
......@@ -29,7 +30,6 @@ class MemberDef;
class ClassDef;
class NamespaceDef;
class FileDef;
class MemberList;
class GroupDef;
class OutputList;
class Definition;
......@@ -48,20 +48,24 @@ class MemberGroup
void insertMember(MemberDef *md);
void setAnchors(ClassDef *);
void writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *inheritId);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
bool showInline=FALSE);
void writeDocumentation(OutputList &ol,const char *scopeName,
Definition *container,bool showEnumValues,bool showInline);
void writeDocumentationPage(OutputList &ol,const char *scopeName,
Definition *container);
void addGroupedInheritedMembers(OutputList &ol,ClassDef *cd,
MemberList::ListType lt,const QCString &inheritId);
QCString documentation() { return doc; }
bool allMembersInSameSection() { return inSameSection; }
void addToDeclarationSection();
int countDecMembers(GroupDef *gd=0);
int countDocMembers();
int countGroupedInheritedMembers(MemberList::ListType lt);
void distributeMemberGroupDocumentation();
void findSectionsInDocumentation();
int varCount() const;
......
......@@ -30,6 +30,9 @@
MemberList::MemberList()
{
memberGroupList=0;
m_numDecMembers=-1; // special value indicating that value needs to be computed
m_numDocMembers=-1; // special value indicating that value needs to be computed
}
MemberList::MemberList(ListType lt) : m_listType(lt)
......@@ -248,7 +251,8 @@ bool MemberList::declVisible() const
}
void MemberList::writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *inheritId
)
{
//printf("----- writePlainDeclaration() ----\n");
......@@ -286,7 +290,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
case MemberDef::Event:
{
if (first) ol.startMemberList(),first=FALSE;
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritId);
break;
}
case MemberDef::Enumeration:
......@@ -319,7 +323,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.startMemberList();
first=FALSE;
}
ol.startMemberItem(md->anchor(),0);
ol.startMemberItem(md->anchor(),0,inheritId);
ol.writeString("enum ");
ol.insertMemberAlign();
md->writeEnumDeclaration(ol,cd,nd,fd,gd);
......@@ -356,7 +360,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.startMemberList();
first=FALSE;
}
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritId);
break;
}
case MemberDef::EnumValue:
......@@ -365,7 +369,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{
//printf("EnumValue!\n");
if (first) ol.startMemberList(),first=FALSE;
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritId);
}
}
break;
......@@ -410,10 +414,11 @@ 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 showEnumValues,
bool showInline)
bool showInline,ClassDef *inheritedFrom)
{
//printf("----- writeDeclaration() this=%p ----\n",this);
//printf("----- writeDeclaration() this=%p ---- inheritedFrom=%p\n",this,inheritedFrom);
static bool optimizeVhdl = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
QCString inheritId;
countDecMembers(showEnumValues,gd); // count members shown in this section
Definition *ctx = cd;
......@@ -421,87 +426,120 @@ void MemberList::writeDeclarations(OutputList &ol,
if (ctx==0 && gd) ctx = gd;
if (ctx==0 && fd) ctx = fd;
if (numDecMembers()==0) return;
//printf("%p: MemberList::writeDeclaration(title=`%s',subtitle=`%s')=%d\n",
// this,title,subtitle,numDecMembers());
if (title)
// this,title,subtitle,numDecMembers());
int num = numDecMembers();
if (inheritedFrom)
{
if (showInline)
{
ol.startInlineHeader();
}
else
if (cd && !optimizeVhdl)
{
ol.startMemberHeader(listTypeAsString());
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
inheritId = substitute(listTypeAsString(),"-","_")+"_"+
stripPath(cd->getOutputFileBase());
if (title)
{
ol.writeInheritedSectionTitle(inheritId,cd->getOutputFileBase(),
cd->anchor(),title,cd->displayName());
}
ol.popGeneratorState();
}
ol.parseText(title);
if (showInline)
}
else if (num>0)
{
if (title)
{
ol.endInlineHeader();
if (showInline)
{
ol.startInlineHeader();
}
else
{
ol.startMemberHeader(listTypeAsString());
}
ol.parseText(title);
if (showInline)
{
ol.endInlineHeader();
}
else
{
ol.endMemberHeader();
}
}
else
if (subtitle)
{
ol.endMemberHeader();
QCString st=subtitle;
st = st.stripWhiteSpace();
if (!st.isEmpty())
{
ol.startMemberSubtitle();
ol.parseDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,0,FALSE,FALSE);
ol.endMemberSubtitle();
}
}
}
if (subtitle)
if (num>0)
{
QCString st=subtitle;
st = st.stripWhiteSpace();
if (!st.isEmpty())
// TODO: Two things need to be worked out for proper VHDL output:
// 1. Signals and types under the group need to be
// formatted to associate them with the group somehow
// indentation, or at the very least, extra space after
// the group is done
// 2. This might need to be repeated below for memberGroupLists
if (optimizeVhdl) // use specific declarations function
{
ol.startMemberSubtitle();
ol.parseDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,0,FALSE,FALSE);
ol.endMemberSubtitle();
VhdlDocGen::writeVhdlDeclarations(this,ol,0,cd,0,0);
}
else
{
writePlainDeclarations(ol,cd,nd,fd,gd,inheritId);
}
}
// TODO: Two things need to be worked out for proper VHDL output:
// 1. Signals and types under the group need to be
// formatted to associate them with the group somehow
// indentation, or at the very least, extra space after
// the group is done
// 2. This might need to be repeated below for memberGroupLists
if (optimizeVhdl) // use specific declarations function
{
VhdlDocGen::writeVhdlDeclarations(this,ol,0,cd,0,0);
}
else
{
writePlainDeclarations(ol,cd,nd,fd,gd);
}
//printf("memberGroupList=%p\n",memberGroupList);
if (memberGroupList)
{
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
while ((mg=mgli.current()))
//printf("memberGroupList=%p\n",memberGroupList);
if (memberGroupList)
{
bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]";
//printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader);
ol.startMemberGroupHeader(hasHeader);
if (hasHeader)
MemberGroupListIterator mgli(*memberGroupList);
MemberGroup *mg;
while ((mg=mgli.current()))
{
ol.parseText(mg->header());
}
ol.endMemberGroupHeader();
if (!mg->documentation().isEmpty())
{
//printf("Member group has docs!\n");
ol.startMemberGroupDocs();
ol.parseDoc("[generated]",-1,ctx,0,mg->documentation()+"\n",FALSE,FALSE);
ol.endMemberGroupDocs();
bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]";
if (inheritId.isEmpty())
{
//printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader);
ol.startMemberGroupHeader(hasHeader);
if (hasHeader)
{
ol.parseText(mg->header());
}
ol.endMemberGroupHeader();
if (!mg->documentation().isEmpty())
{
//printf("Member group has docs!\n");
ol.startMemberGroupDocs();
ol.parseDoc("[generated]",-1,ctx,0,mg->documentation()+"\n",FALSE,FALSE);
ol.endMemberGroupDocs();
}
ol.startMemberGroup();
}
//printf("--- mg->writePlainDeclarations ---\n");
mg->writePlainDeclarations(ol,cd,nd,fd,gd,inheritId);
if (inheritId.isEmpty())
{
ol.endMemberGroup(hasHeader);
}
++mgli;
}
ol.startMemberGroup();
//printf("--- mg->writePlainDeclarations ---\n");
mg->writePlainDeclarations(ol,cd,nd,fd,gd);
ol.endMemberGroup(hasHeader);
++mgli;
}
}
if (inheritedFrom && cd)
{
// also add members that of this list type, that are grouped together
// in a separate list in class 'inheritedFrom'
cd->addGroupedInheritedMembers(ol,m_listType,inheritId);
}
//printf("----- end writeDeclaration() ----\n");
}
void MemberList::writeDocumentation(OutputList &ol,
......
......@@ -137,10 +137,13 @@ class MemberList : public QList<MemberDef>
void countDecMembers(bool countEnumValues=FALSE,GroupDef *gd=0);
void countDocMembers(bool countEnumValues=FALSE);
void writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *inheritId);
void writeDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *title,const char *subtitle,bool showEnumValues=FALSE,bool showInline=FALSE);
const char *title,const char *subtitle,
bool showEnumValues=FALSE,bool showInline=FALSE,
ClassDef *inheritedFrom=0);
void writeDocumentation(OutputList &ol,const char *scopeName,
Definition *container,const char *title,bool showEnumValues=FALSE,bool showInline=FALSE);
void writeSimpleDocumentation(OutputList &ol,Definition *container);
......
......@@ -51,8 +51,6 @@
#nav-tree .selected a {
text-decoration:none;
padding:2px;
margin:0px;
color:#fff;
}
......
......@@ -297,7 +297,7 @@ function showNode(o, node, index)
showNode(o,node,index); // retry with child node expanded
},true);
} else {
if (o.toroot=="index.html" || n.childrenData) {
if (o.toroot=="index.html" /*|| n.childrenData*/) {
expandNode(o, n, true, true);
}
selectAndHighlight(n);
......
......@@ -51,8 +51,6 @@
"\n"
"#nav-tree .selected a {\n"
" text-decoration:none;\n"
" padding:2px;\n"
" margin:0px;\n"
" color:#fff;\n"
"}\n"
"\n"
......
......@@ -297,7 +297,7 @@
" showNode(o,node,index); // retry with child node expanded\n"
" },true);\n"
" } else {\n"
" if (o.toroot==\"index.html\" || n.childrenData) {\n"
" if (o.toroot==\"index.html\" /*|| n.childrenData*/) {\n"
" expandNode(o, n, true, true);\n"
" }\n"
" selectAndHighlight(n);\n"
......
......@@ -302,7 +302,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void startFile(const char *name,const char *manName,
const char *title) = 0;
virtual void writeSearchInfo() = 0;
virtual void writeFooter() = 0;
virtual void writeFooter(const char *navPath) = 0;
virtual void endFile() = 0;
virtual void startIndexSection(IndexSections) = 0;
virtual void endIndexSection(IndexSections) = 0;
......@@ -340,7 +340,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endInlineHeader() = 0;
virtual void startAnonTypeScope(int) = 0;
virtual void endAnonTypeScope(int) = 0;
virtual void startMemberItem(const char *,int) = 0;
virtual void startMemberItem(const char *,int,const char *) = 0;
virtual void endMemberItem() = 0;
virtual void startMemberTemplateParams() = 0;
virtual void endMemberTemplateParams(const char *) = 0;
......@@ -362,8 +362,11 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void writeStartAnnoItem(const char *type,const char *file,
const char *path,const char *name) = 0;
virtual void writeEndAnnoItem(const char *name) = 0;
virtual void startMemberDescription(const char *anchor) = 0;
virtual void startMemberDescription(const char *anchor,const char *inheritId) = 0;
virtual void endMemberDescription() = 0;
virtual void writeInheritedSectionTitle(const char *id,
const char *file,const char *anchor,
const char *title,const char *name) = 0;
virtual void startIndent() = 0;
virtual void endIndent() = 0;
virtual void writeSynopsis() = 0;
......@@ -419,6 +422,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void startInlineMemberDoc() = 0;
virtual void endInlineMemberDoc() = 0;
virtual void startLabels() = 0;
virtual void writeLabel(const char *,bool) = 0;
virtual void endLabels() = 0;
......
......@@ -304,6 +304,7 @@ FORALL3(bool a1,bool a2,bool a3,a1,a2,a3)
FORALL3(const ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
FORALL3(const char *a1,int a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,SectionInfo::SectionType a3,a1,a2,a3)
FORALL3(uchar a1,uchar a2,uchar a3,a1,a2,a3)
FORALL4(SectionTypes a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4)
......
......@@ -87,8 +87,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startFile,name,manName,title); }
void writeSearchInfo()
{ forall(&OutputGenerator::writeSearchInfo); }
void writeFooter()
{ forall(&OutputGenerator::writeFooter); }
void writeFooter(const char *navPath)
{ forall(&OutputGenerator::writeFooter,navPath); }
void endFile()
{ forall(&OutputGenerator::endFile); }
void startTitleHead(const char *fileName)
......@@ -201,8 +201,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startAnonTypeScope,i1); }
void endAnonTypeScope(int i1)
{ forall(&OutputGenerator::endAnonTypeScope,i1); }
void startMemberItem(const char *anchor,int i1)
{ forall(&OutputGenerator::startMemberItem,anchor,i1); }
void startMemberItem(const char *anchor,int i1,const char *id=0)
{ forall(&OutputGenerator::startMemberItem,anchor,i1,id); }
void endMemberItem()
{ forall(&OutputGenerator::endMemberItem); }
void startMemberTemplateParams()
......@@ -295,10 +295,13 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startBold); }
void endBold()
{ forall(&OutputGenerator::endBold); }
void startMemberDescription(const char *anchor)
{ forall(&OutputGenerator::startMemberDescription,anchor); }
void startMemberDescription(const char *anchor,const char *inheritId=0)
{ forall(&OutputGenerator::startMemberDescription,anchor,inheritId); }
void endMemberDescription()
{ forall(&OutputGenerator::endMemberDescription); }
void writeInheritedSectionTitle(const char *id,const char *file,
const char *anchor,const char *title,const char *name)
{ forall(&OutputGenerator::writeInheritedSectionTitle,id,file,anchor,title,name); }
void startSimpleSect(SectionTypes t,const char *file,const char *anchor,
const char *title)
{ forall(&OutputGenerator::startSimpleSect,t,file,anchor,title); }
......@@ -308,8 +311,6 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startParamList,t,title); }
void endParamList()
{ forall(&OutputGenerator::endParamList); }
//void writeDescItem()
//{ forall(&OutputGenerator::writeDescItem); }
void startIndent()
{ forall(&OutputGenerator::startIndent); }
void endIndent()
......@@ -508,6 +509,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO3(bool,HighlightedItem,const char *);
FORALLPROTO3(bool,bool,bool);
FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(const char *,int,const char *);
FORALLPROTO3(const char *,const char *,SectionInfo::SectionType);
FORALLPROTO3(uchar,uchar,uchar);
FORALLPROTO3(const char *,const char *,const char *);
......
......@@ -640,6 +640,7 @@ void PerlModDocVisitor::visit(DocVerbatim *s)
return;
case DocVerbatim::Verbatim: type = "preformatted"; break;
case DocVerbatim::HtmlOnly: type = "htmlonly"; break;
case DocVerbatim::RtfOnly: type = "rtfonly"; break;
case DocVerbatim::ManOnly: type = "manonly"; break;
case DocVerbatim::LatexOnly: type = "latexonly"; break;
case DocVerbatim::XmlOnly: type = "xmlonly"; break;
......
......@@ -149,6 +149,7 @@ class PrintDocVisitor : public DocVisitor
case DocVerbatim::Code: printf("<code>"); break;
case DocVerbatim::Verbatim: printf("<verbatim>"); break;
case DocVerbatim::HtmlOnly: printf("<htmlonly>"); break;
case DocVerbatim::RtfOnly: printf("<rtfonly>"); break;
case DocVerbatim::ManOnly: printf("<manonly>"); break;
case DocVerbatim::LatexOnly: printf("<latexonly>"); break;
case DocVerbatim::XmlOnly: printf("<xmlonly>"); break;
......@@ -161,6 +162,7 @@ class PrintDocVisitor : public DocVisitor
case DocVerbatim::Code: printf("</code>"); break;
case DocVerbatim::Verbatim: printf("</verbatim>"); break;
case DocVerbatim::HtmlOnly: printf("</htmlonly>"); break;
case DocVerbatim::RtfOnly: printf("</rtfonly>"); break;
case DocVerbatim::ManOnly: printf("</manonly>"); break;
case DocVerbatim::LatexOnly: printf("</latexonly>"); break;
case DocVerbatim::XmlOnly: printf("</xmlonly>"); break;
......
......@@ -371,6 +371,9 @@ void RTFDocVisitor::visit(DocVerbatim *s)
//m_t << "\\par" << endl;
m_t << "}" << endl;
break;
case DocVerbatim::RtfOnly:
m_t << s->text();
break;
case DocVerbatim::HtmlOnly:
case DocVerbatim::LatexOnly:
case DocVerbatim::XmlOnly:
......
......@@ -1571,7 +1571,7 @@ void RTFGenerator::endDescItem()
newParagraph();
}
void RTFGenerator::startMemberDescription(const char *)
void RTFGenerator::startMemberDescription(const char *,const char *)
{
DBG_RTF(t << "{\\comment (startMemberDescription)}" << endl)
t << "{" << endl;
......@@ -1837,7 +1837,7 @@ void RTFGenerator::endClassDiagram(const ClassDiagram &d,
// t << text;
//}
void RTFGenerator::startMemberItem(const char *,int)
void RTFGenerator::startMemberItem(const char *,int,const char *)
{
DBG_RTF(t <<"{\\comment startMemberItem }" << endl)
t << rtf_Style_Reset << rtf_BList_DepthStyle() << endl; // set style to apropriate depth
......
......@@ -44,7 +44,7 @@ class RTFGenerator : public OutputGenerator
void startFile(const char *name,const char *manName,const char *title);
void writeSearchInfo() {}
void writeFooter() {}
void writeFooter(const char *) {}
void endFile();
void clearBuffer();
//void postProcess(QByteArray &);
......@@ -111,7 +111,7 @@ class RTFGenerator : public OutputGenerator
void endInlineHeader();
void startAnonTypeScope(int) {}
void endAnonTypeScope(int) {}
void startMemberItem(const char *,int);
void startMemberItem(const char *,int,const char *);
void endMemberItem();
void startMemberTemplateParams() {}
void endMemberTemplateParams(const char *) {}
......@@ -154,8 +154,10 @@ class RTFGenerator : public OutputGenerator
void startSmall() { t << "{\\sub "; }
void endSmall() { t << "}"; }
void startMemberDescription(const char *);
void startMemberDescription(const char *,const char *);
void endMemberDescription();
void writeInheritedSectionTitle(const char *,const char *,
const char *,const char *,const char *) {}
void startDescList(SectionTypes);
void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endSimpleSect();
......
......@@ -17,14 +17,14 @@ function end_form($value)
function end_page()
{
global $config;
global $translator;
if ($config['GENERATE_TREEVIEW'])
{
echo "</div>\n<div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"footer\">";
echo $translator['logo'];
echo "</li>\n </ul>\n</div>";
}
//global $config;
//global $translator;
//if ($config['GENERATE_TREEVIEW'])
//{
// echo "</div>\n<div id=\"nav-path\" class=\"navpath\">\n <ul>\n <li class=\"footer\">";
// echo $translator['logo'];
// echo "</li>\n </ul>\n</div>";
//}
echo "</body></html>";
}
......
......@@ -17,14 +17,14 @@
"\n"
"function end_page()\n"
"{\n"
" global $config;\n"
" global $translator;\n"
" if ($config['GENERATE_TREEVIEW'])\n"
" {\n"
" echo \"</div>\\n<div id=\\\"nav-path\\\" class=\\\"navpath\\\">\\n <ul>\\n <li class=\\\"footer\\\">\";\n"
" echo $translator['logo'];\n"
" echo \"</li>\\n </ul>\\n</div>\";\n"
" }\n"
" //global $config;\n"
" //global $translator;\n"
" //if ($config['GENERATE_TREEVIEW'])\n"
" //{\n"
" // echo \"</div>\\n<div id=\\\"nav-path\\\" class=\\\"navpath\\\">\\n <ul>\\n <li class=\\\"footer\\\">\";\n"
" // echo $translator['logo'];\n"
" // echo \"</li>\\n </ul>\\n</div>\";\n"
" //}\n"
" echo \"</body></html>\";\n"
"}\n"
"\n"
......
......@@ -54,23 +54,23 @@
//! Application error.
#define tcl_err \
printf("Error %d %s() in %s line %d! ",__LINE__,__FUNCTION__,tcl.file_name.data(),yylineno); \
printf("Error %d %s() at line %d! ",__LINE__,tcl.file_name.data(),yylineno); \
yy_push_state(ERROR); \
yyless(0); \
printf
//! Application warning.
#define tcl_war \
printf("Warning %d %s() in %s line %d: ",__LINE__,__FUNCTION__,tcl.file_name.data(),yylineno); \
printf("Warning %d %s() at line %d: ",__LINE__,tcl.file_name.data(),yylineno); \
printf
//! Application message.
#define tcl_inf \
if (0) printf("--- %.4d %s() %d@%d: ",__LINE__,__FUNCTION__,yylineno,yy_start_stack_ptr) && printf
if (0) printf("--- %.4d %d@%d: ",__LINE__,yylineno,yy_start_stack_ptr) && printf
//! Debug message.
#define D\
if (0) printf("--- %.4d %s() %d@%d: %s\n",__LINE__,__FUNCTION__,yylineno,yy_start_stack_ptr,yytext);
if (0) printf("--- %.4d %d@%d: %s\n",__LINE__,yylineno,yy_start_stack_ptr,yytext);
// BEGIN of copy from tclUtil.c
// - Tcl_Interp removed
......
This diff is collapsed.
This diff is collapsed.
......@@ -123,13 +123,17 @@
// - Changed file encoding to utf-8, adapted idLanguageCharset()
// - New German orthography (ngerman) is now default in LaTeX
//
// 2012/04/11 Peter Grotrian
// - Updated for "new since 1.8.0" version
// - Some small corrections
//
// Todo:
// - see FIXME
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
class TranslatorGerman : public TranslatorAdapter_1_8_0
class TranslatorGerman : public Translator
{
public:
......@@ -222,11 +226,11 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
/*! put after an enum name in the list of all members */
virtual QCString trEnumName()
{ return "enum Bezeichner"; }
{ return "enum-Bezeichner"; }
/*! put after an enum value in the list of all members */
virtual QCString trEnumValue()
{ return "enum Wert"; }
{ return "enum-Wert"; }
/*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn()
......@@ -950,7 +954,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
/*! Text for the \\invariant command */
virtual QCString trInvariant()
{
return "Invariant";
return "Invariante";
}
/*! Text shown before a multi-line variable/enum initialization */
......@@ -1029,7 +1033,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
virtual QCString trStaticProtectedAttribs()
{
return "Statische geschützte Attribute";
return "Statische, geschützte Attribute";
}
virtual QCString trPrivateTypes()
......@@ -1044,7 +1048,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
virtual QCString trStaticPrivateAttribs()
{
return "Statische private Attribute";
return "Statische, private Attribute";
}
//////////////////////////////////////////////////////////////////////////
......@@ -1170,8 +1174,8 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
"Pfeil stehen die Variable(n), mit deren Hilfe auf die Struktur oder "
"Klasse an der Pfeilspitze zugegriffen werden kann.</li>\n"
"<li>Ein gestrichelter gelber Pfeil kennzeichnet eine Verknüpfung "
"zwischen einer Template Instanz und der Template Klasse von welcher "
"es abstammt. Neben dem Pfeil sind die Template Parameter aufgeführt.</li>\n"
"zwischen einer Template-Instanz und der Template-Klasse von welcher "
"es abstammt. Neben dem Pfeil sind die Template-Parameter aufgeführt.</li>\n"
"</ul>\n";
}
......@@ -1531,7 +1535,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
return "Hier ist ein Graph der zeigt, was diese Funktion aufruft:";
return "Hier ist ein Graph, der zeigt, was diese Funktion aufruft:";
}
//////////////////////////////////////////////////////////////////////////
......@@ -1670,7 +1674,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return "Enumerator-Dokumentation"; }
{ return "Dokumentation der Aufzählungswerte"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.5.4 (mainly for Fortran)
......@@ -1981,6 +1985,47 @@ class TranslatorGerman : public TranslatorAdapter_1_8_0
virtual QCString trDirDepGraph(const char *name)
{ return QCString("Diagramm der Verzeichnisabhängigkeiten für ")+name+":"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.8.0
//////////////////////////////////////////////////////////////////////////
/*! Detail level selector shown for hierarchical indices */
virtual QCString trDetailLevel()
{ return "Detailebene"; }
/*! Section header for list of template parameters */
virtual QCString trTemplateParameters()
{ return "Template-Parameter"; }
/*! Used in dot graph when UML_LOOK is enabled and there are many fields */
virtual QCString trAndMore(const QCString &number)
{ return "und "+number+" mehr ..."; }
/*! Used file list for a Java enum */
virtual QCString trEnumGeneratedFromFiles(bool single)
{ QCString result = "Die Dokumentation für diesen enum wurde aus ";
if (single)
result += "der folgenden Datei";
else
result += "den folgenden Dateien";
result+=" generiert:";
return result;
}
/*! Header of a Java enum page (Java enums are represented as classes). */
virtual QCString trEnumReference(const char *name)
{ return QCString(name)+" Enum-Referenz"; }
/*! Used for a section containing inherited members */
virtual QCString trInheritedFrom(const char *members,const char *what)
{ return QCString(members)+" geerbt von "+what; }
/*! Header of the sections with inherited members specific for the
* base class(es)
*/
virtual QCString trAdditionalInheritedMembers()
{ return "Weitere Geerbte Elemente"; }
};
#endif
This diff is collapsed.
......@@ -15,7 +15,10 @@
*
*/
/*
#ifndef TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
/*!
* translator_es.h modified by Lucas Cruz (7-julio-2000)
* Some notes:
* - It's posible that some sentences haven't got meaning because
......@@ -26,12 +29,11 @@
* Updated to 1.5.8 by Bartomeu Creus Navarro (10-abril-2009)
* Updated to 1.6.3 by Bartomeu Creus Navarro (3-marzo-2010)
* Updated to 1.6.4 by Bartomeu Creus Navarro (26-mayo-2010) [(16-jun-2010) grabado en UTF-8]
* Updated to 1.8.0 by Bartomeu Creus Navarro (11-abril-2012)
*/
#ifndef TRANSLATOR_ES_H
#define TRANSLATOR_ES_H
class TranslatorSpanish : public TranslatorAdapter_1_7_5
class TranslatorSpanish : public Translator
{
public:
......@@ -1929,6 +1931,63 @@ class TranslatorSpanish : public TranslatorAdapter_1_7_5
return sdate;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.7.5
//////////////////////////////////////////////////////////////////////////
/*! Header for the page with bibliographic citations */
virtual QCString trCiteReferences()
{ return "Referencias bibliográficas"; }
/*! Text for copyright paragraph */
virtual QCString trCopyright()
{ return "Copyright"; }
/*! Header for the graph showing the directory dependencies */
virtual QCString trDirDepGraph(const char *name)
{ return QCString("Gráfico de dependencias de directorios para ")+name+":"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.8.0
//////////////////////////////////////////////////////////////////////////
/*! Detail level selector shown for hierarchical indices */
virtual QCString trDetailLevel()
{ return "detalle nivel"; }
/*! Section header for list of template parameters */
virtual QCString trTemplateParameters()
{ return "Parámetros del template"; }
/*! Used in dot graph when UML_LOOK is enabled and there are many fields */
virtual QCString trAndMore(const QCString &number)
{ return "y "+number+" más..."; }
/*! Used file list for a Java enum */
virtual QCString trEnumGeneratedFromFiles(bool single)
{ QCString result = "La documentación para este enum ha sido generada a partir de";
if (single)
result += "l siguiente fichero:";
else
result += " los siguientes ficheros:";
return result;
}
/*! Header of a Java enum page (Java enums are represented as classes). */
virtual QCString trEnumReference(const char *name)
{ return QCString("Referencia del enum ") + QCString(name); }
/*! Used for a section containing inherited members */
virtual QCString trInheritedFrom(const char *members,const char *what)
{ return QCString(members)+" heredados desde "+what; }
/*! Header of the sections with inherited members specific for the
* base class(es)
*/
virtual QCString trAdditionalInheritedMembers()
{ return "Otros miembros heredados"; }
//////////////////////////////////////////////////////////////////////////
};
......
......@@ -78,10 +78,12 @@
//
// 2010/05/27
// - Updates for 1.6.3
// 2012/04/12
// - Updates for 1.8.0
#ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H
class TranslatorCroatian : public TranslatorAdapter_1_8_0
class TranslatorCroatian : public Translator
{
private:
......@@ -1565,6 +1567,46 @@ class TranslatorCroatian : public TranslatorAdapter_1_8_0
virtual QCString trDirDepGraph(const char *name)
{ return QCString("Direktoriji o kojima ovisi ")+name+":"; }
//////////////////////////////////////////////////////////////////////////
// new since 1.8.0
//////////////////////////////////////////////////////////////////////////
/*! Detail level selector shown for hierarchical indices */
virtual QCString trDetailLevel()
{ return "razina detalja"; }
/*! Section header for list of template parameters */
virtual QCString trTemplateParameters()
{ return "Parametri predloška"; }
/*! Used in dot graph when UML_LOOK is enabled and there are many fields */
virtual QCString trAndMore(const QCString &number)
{ return "i još "+number+" ..."; }
/*! Used file list for a Java enum */
virtual QCString trEnumGeneratedFromFiles(bool single)
{ QCString result = "Dokumatacija za ovu enumeraciju je generirana iz ";
if (!single) result += "datoteka:";
else result += "datoteke:";
return result;
}
/*! Header of a Java enum page (Java enums are represented as classes). */
virtual QCString trEnumReference(const char *name)
{ return "Opis enumeracije " + QCString(name); }
/*! Used for a section containing inherited members */
virtual QCString trInheritedFrom(const char *members,const char *what)
{ return QCString(members)+" naslijeđeni od "+what; }
/*! Header of the sections with inherited members specific for the
* base class(es)
*/
virtual QCString trAdditionalInheritedMembers()
{ return "Dodatni naslijeđeni članovi"; }
//////////////////////////////////////////////////////////////////////////
};
#endif
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -97,6 +97,8 @@ class VhdlDocGen
static QCString convertFileNameToClassName(QCString name);
// --- used by vhdlscanner.l -----------
static bool isSubClass(ClassDef* cd,ClassDef *scd, bool followInstances,int level);
static QCString getIndexWord(const char* ,int index);
static bool foundInsertedComponent(const QCString& name,Entry* root);
static bool deleteCharRev(QCString &s,char c);
......@@ -272,6 +274,7 @@ class VhdlDocGen
static QCString parseForConfig(QCString & entity,QCString & arch);
static QCString parseForBinding(QCString & entity,QCString & arch);
static void addBaseClass(ClassDef* cd,ClassDef *ent);
private:
static void findAllArchitectures(QList<QCString>& ql,const ClassDef *cd);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment