Commit e6060ed2 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.6-20060115

parent 01b177fe
DOXYGEN Version 1.4.6
DOXYGEN Version 1.4.6-20060115
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (30 December 2005)
Dimitri van Heesch (15 January 2006)
DOXYGEN Version 1.4.6
DOXYGEN Version 1.4.6_20060115
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (30 December 2005)
Dimitri van Heesch (dimitri@stack.nl) (15 January 2006)
......@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=NO
doxygen_version_mmn=20060115
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......@@ -319,7 +319,7 @@ echo "using $f_make"
echo -n " Checking for GNU install tool... "
if test "$f_insttool" = NO; then
install_names="ginstall install"
install_dirs="/usr/bin /usr/local/bin /bin /sbin $bin_dirs"
install_dirs="/usr/bin /usr/local/bin /bin /sbin /usr/ucb $bin_dirs"
install_prog=NO
install_found=NO
for i in $install_names; do
......
......@@ -225,13 +225,14 @@ void ClassDef::internalInsertMember(MemberDef *md,
//printf("adding %s::%s\n",name().data(),md->name().data());
if (!isReference())
{
static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS");
/********************************************/
/* insert member in the declaration section */
/********************************************/
if (md->isRelated() &&
(Config_getBool("EXTRACT_PRIVATE") || prot!=Private))
{
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
related.inSort(md);
else
related.append(md);
......@@ -239,7 +240,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
}
else if (md->isFriend())
{
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
friends.inSort(md);
else
friends.append(md);
......@@ -250,28 +251,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (md->memberType())
{
case MemberDef::Signal: // Qt specific
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
signals.inSort(md);
else
signals.append(md);
md->setSectionList(this,&signals);
break;
case MemberDef::DCOP: // KDE2 specific
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
dcopMethods.inSort(md);
else
dcopMethods.append(md);
md->setSectionList(this,&dcopMethods);
break;
case MemberDef::Property:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
properties.inSort(md);
else
properties.append(md);
md->setSectionList(this,&properties);
break;
case MemberDef::Event:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
events.inSort(md);
else
events.append(md);
......@@ -282,7 +283,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
case Package: // slots in packages are not possible!
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proSlots.inSort(md);
else
proSlots.append(md);
......@@ -290,14 +291,14 @@ void ClassDef::internalInsertMember(MemberDef *md,
break;
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubSlots.inSort(md);
else
pubSlots.append(md);
md->setSectionList(this,&pubSlots);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priSlots.inSort(md);
else
priSlots.append(md);
......@@ -313,28 +314,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proStaticAttribs.inSort(md);
else
proStaticAttribs.append(md);
md->setSectionList(this,&proStaticAttribs);
break;
case Package:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pacStaticAttribs.inSort(md);
else
pacStaticAttribs.append(md);
md->setSectionList(this,&pacStaticAttribs);
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubStaticAttribs.inSort(md);
else
pubStaticAttribs.append(md);
md->setSectionList(this,&pubStaticAttribs);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priStaticAttribs.inSort(md);
else
priStaticAttribs.append(md);
......@@ -347,28 +348,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proStaticMethods.inSort(md);
else
proStaticMethods.append(md);
md->setSectionList(this,&proStaticMethods);
break;
case Package:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pacStaticMethods.inSort(md);
else
pacStaticMethods.append(md);
md->setSectionList(this,&pacStaticMethods);
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubStaticMethods.inSort(md);
else
pubStaticMethods.append(md);
md->setSectionList(this,&pubStaticMethods);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priStaticMethods.inSort(md);
else
priStaticMethods.append(md);
......@@ -384,28 +385,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proAttribs.inSort(md);
else
proAttribs.append(md);
md->setSectionList(this,&proAttribs);
break;
case Package:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pacAttribs.inSort(md);
else
pacAttribs.append(md);
md->setSectionList(this,&pacAttribs);
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubAttribs.inSort(md);
else
pubAttribs.append(md);
md->setSectionList(this,&pubAttribs);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priAttribs.inSort(md);
else
priAttribs.append(md);
......@@ -418,28 +419,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proTypes.inSort(md);
else
proTypes.append(md);
md->setSectionList(this,&proTypes);
break;
case Package:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pacTypes.inSort(md);
else
pacTypes.append(md);
md->setSectionList(this,&pacTypes);
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubTypes.inSort(md);
else
pubTypes.append(md);
md->setSectionList(this,&pubTypes);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priTypes.inSort(md);
else
priTypes.append(md);
......@@ -452,28 +453,28 @@ void ClassDef::internalInsertMember(MemberDef *md,
switch (prot)
{
case Protected:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
proMethods.inSort(md);
else
proMethods.append(md);
md->setSectionList(this,&proMethods);
break;
case Package:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pacMethods.inSort(md);
else
pacMethods.append(md);
md->setSectionList(this,&pacMethods);
break;
case Public:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
pubMethods.inSort(md);
else
pubMethods.append(md);
md->setSectionList(this,&pubMethods);
break;
case Private:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
priMethods.inSort(md);
else
priMethods.append(md);
......
......@@ -35,10 +35,11 @@ static int compItems(void *item1,void *item2)
ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2;
static bool b = Config_getBool("SORT_BY_SCOPE_NAME");
//printf("compItems: %d %s<->%s\n",b,c1->qualifiedName().data(),c2->qualifiedName().data());
if (b)
{
return stricmp(c1->qualifiedName(),
c2->qualifiedName());
return stricmp(c1->name(),
c2->name());
}
else
{
......
......@@ -59,6 +59,7 @@ static int g_condCtx;
static QStack<CondCtx> g_condStack;
static QCString g_blockName;
static int g_lastCommentContext;
static bool g_inSpecialComment;
static void replaceCommentMarker(const char *s,int len)
{
......@@ -271,6 +272,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
%x SComment
%x CComment
%x Verbatim
%x VerbatimCode
%x ReadLine
%x CondLine
......@@ -300,6 +302,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput("/**",3);
//copyToOutput(yytext+i,yyleng-i);
replaceAliases(yytext+i,yyleng-i);
g_inSpecialComment=TRUE;
BEGIN(SComment);
}
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
......@@ -320,7 +323,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng);
BEGIN(CComment);
}
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{"[a-z]*)/[^a-z_A-Z0-9] { /* start of a verbatim block */
<CComment,ReadLine>[\\@]("dot"|"code")/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng);
g_lastCommentContext = YY_START;
g_blockName=&yytext[1];
BEGIN(VerbatimCode);
}
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"f$"|"f["|"f{"[a-z]*)/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng);
if (yytext[2]=='[')
{
......@@ -351,13 +360,26 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
BEGIN(g_lastCommentContext);
}
}
<Verbatim>[^@\\\n]* { /* any character not a backslash or new line */
<VerbatimCode>[\\@]("enddot"|"endcode") { /* end of verbatim block */
copyToOutput(yytext,yyleng);
if (&yytext[4]==g_blockName)
{
BEGIN(g_lastCommentContext);
}
}
<VerbatimCode>^"//"[\!\/]? { /* skip leading comments */
if (!g_inSpecialComment)
{
copyToOutput(yytext,yyleng);
}
}
<Verbatim,VerbatimCode>[^@\/\\\n]* { /* any character not a backslash or new line */
copyToOutput(yytext,yyleng);
}
<Verbatim>\n { /* new line in verbatim block */
<Verbatim,VerbatimCode>\n { /* new line in verbatim block */
copyToOutput(yytext,yyleng);
}
<Verbatim>. { /* any other character */
<Verbatim,VerbatimCode>. { /* any other character */
copyToOutput(yytext,yyleng);
}
<SkipString>\\. { /* escaped character in string */
......@@ -432,6 +454,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<SComment>\n { /* end of special comment */
copyToOutput(" */",3);
copyToOutput(yytext,yyleng);
g_inSpecialComment=FALSE;
BEGIN(Scan);
}
<ReadLine>[^\\@\n]*/\n {
......
......@@ -48,7 +48,7 @@ static int yyread(char *buf,int max_size)
%}
CONSTSUFFIX ([uU][lL]?[lL]?)|(lL][lL]?[uU]?)
CONSTSUFFIX ([uU][lL]?[lL]?)|([lL][lL]?[uU]?)
%option nounput
......
......@@ -702,10 +702,19 @@ QCString Definition::qualifiedName()
{
m_qualifiedName = m_outerScope->qualifiedName()+"::"+m_localName;
}
//printf("end Definition::qualifiedName()=%s\n",qualifiedName.data());
//printf("end Definition::qualifiedName()=%s\n",m_qualifiedName.data());
return m_qualifiedName;
};
void Definition::setOuterScope(Definition *d)
{
if (m_outerScope!=d)
{
m_qualifiedName.resize(0); // flush cached scope name
m_outerScope = d;
}
}
QCString Definition::localName() const
{
return m_localName;
......
......@@ -206,7 +206,7 @@ class Definition
virtual Definition *findInnerCompound(const char *name);
virtual Definition *getOuterScope() const { return m_outerScope; }
virtual void addInnerCompound(Definition *d);
virtual void setOuterScope(Definition *d) { m_outerScope = d; }
virtual void setOuterScope(Definition *d);
MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; }
MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; }
......
......@@ -1015,7 +1015,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken;
else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_EMPHASIS: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
}
break;
case CMD_BOLD:
......@@ -1025,7 +1029,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken;
else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_BOLD: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
}
break;
case CMD_CODE:
......@@ -1035,7 +1043,11 @@ reparsetoken:
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD || tok==TK_HTMLTAG) goto reparsetoken;
else if (tok==TK_WORD || tok==TK_HTMLTAG)
{
DBG(("CMD_CODE: reparsing command %s\n",g_token->name.data()));
goto reparsetoken;
}
}
break;
case CMD_HTMLONLY:
......@@ -5164,8 +5176,9 @@ reparsetoken:
// the command ended normally, keep scanning for new tokens.
retval = 0;
}
else if (retval==TK_LISTITEM || retval==TK_ENDLIST || retval==TK_WORD)
else if (retval>0 && retval<RetVal_OK)
{
// the command ended with a new command, reparse this token
tok = retval;
goto reparsetoken;
}
......
......@@ -1186,6 +1186,9 @@ static void resolveClassNestingRelations()
// anyway, so we can at least relate scopes properly.
{
Definition *d = buildScopeFromQualifiedName(cd->name(),cd->name().contains("::"));
if (d!=cd) // avoid recursion in case of redundant scopes, i.e: namespace N { class N::C {}; }
// for this case doxygen assumes the exitance of a namespace N::N in which C is to be found!
{
d->addInnerCompound(cd);
cd->setOuterScope(d);
warn(cd->getDefFileName(),cd->getDefLine(),
......@@ -1193,6 +1196,7 @@ static void resolveClassNestingRelations()
"found!\n",cd->name().data()
);
}
}
else
{
//printf("****** adding %s to scope %s\n",cd->name().data(),d->name().data());
......@@ -1309,7 +1313,7 @@ static void buildNamespaceList(Entry *root)
// also add namespace to the correct structural context
Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName);
//printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"none");
//printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"<none>");
if (d==0) // we didn't find anything, create the scope artificially
// anyway, so we can at least relate scopes properly.
{
......@@ -1337,6 +1341,25 @@ static void buildNamespaceList(Entry *root)
//----------------------------------------------------------------------
static NamespaceDef *findUsedNamespace(const NamespaceSDict *unl,
const QCString &name)
{
NamespaceDef *usingNd =0;
if (unl)
{
//printf("Found namespace dict %d\n",unl->count());
NamespaceSDict::Iterator unli(*unl);
NamespaceDef *und;
for (unli.toFirst();(und=unli.current());++unli)
{
QCString uScope=und->name()+"::";
usingNd = getResolvedNamespace(uScope+name);
//printf("Also trying with scope=`%s' usingNd=%p\n",(uScope+name).data(),usingNd);
}
}
return usingNd;
}
static void findUsingDirectives(Entry *root)
{
if (root->section==Entry::USINGDIR_SEC)
......@@ -1384,7 +1407,34 @@ static void findUsingDirectives(Entry *root)
}
} while (scopeOffset>=0 && usingNd==0);
//printf("%s -> %p\n",name.data(),usingNd);
if (usingNd==0 && nd) // not found, try used namespaces in this scope
// or in one of the parent namespace scopes
{
NamespaceDef *pnd = nd;
while (pnd && usingNd==0)
{
// also try with one of the used namespaces found earlier
usingNd = findUsedNamespace(pnd->getUsedNamespaces(),name);
// goto the parent
Definition *s = pnd->getOuterScope();
if (s && s->definitionType()==Definition::TypeNamespace)
{
pnd = (NamespaceDef*)s;
}
else
{
pnd = 0;
}
}
}
if (usingNd==0 && fd) // still nothing, also try used namespace in the
// global scope
{
usingNd = findUsedNamespace(fd->getUsedNamespaces(),name);
}
//printf("%s -> %s\n",name.data(),usingNd?usingNd->name().data():"<none>");
// add the namespace the correct scope
if (usingNd)
......@@ -1911,7 +1961,8 @@ static MemberDef *addVariableToFile(
)
// variable already in the scope
{
if (! // not a php array
if (md->getFileDef() &&
! // not a php array
(getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) &&
(md->argsString()!=root->args && root->args.find('[')!=-1)
)
......@@ -8852,6 +8903,7 @@ void parseInput()
Doxygen::memberNameSDict.sort();
Doxygen::functionNameSDict.sort();
Doxygen::hiddenClasses.sort();
printf("Sorting %d classes\n",Doxygen::classSDict.count());
Doxygen::classSDict.sort();
msg("Freeing entry tree\n");
......
......@@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
font-family: Fixed, monospace;
font-family: monospace, fixed;
font-size: 95%;
}
PRE.fragment {
......@@ -96,14 +96,7 @@ PRE.fragment {
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #F4F4FB; font-weight: bold; }
TD.mdPrefix {
background-color: #F4F4FB;
color: #606060;
font-size: 80%;
}
TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
......@@ -156,13 +149,6 @@ SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
.mdTable {
border: 1px solid #868686;
background-color: #F4F4FB;
}
.mdRow {
padding: 8px 10px;
}
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
......@@ -308,3 +294,51 @@ HR { height: 1px;
border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
width: 100%;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
}
/* End Styling for detailed member documentation */
......@@ -80,7 +80,7 @@
"A:hover { text-decoration: none; background-color: #f2f2ff }\n"
"DL.el { margin-left: -1cm }\n"
".fragment {\n"
" font-family: Fixed, monospace;\n"
" font-family: monospace, fixed;\n"
" font-size: 95%;\n"
"}\n"
"PRE.fragment {\n"
......@@ -96,14 +96,7 @@
" padding-bottom: 4px;\n"
"}\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n"
"TD.md { background-color: #F4F4FB; font-weight: bold; }\n"
"TD.mdPrefix {\n"
" background-color: #F4F4FB;\n"
" color: #606060;\n"
" font-size: 80%;\n"
"}\n"
"TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }\n"
"TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }\n"
"\n"
"DIV.groupHeader {\n"
" margin-left: 16px;\n"
" margin-top: 12px;\n"
......@@ -156,13 +149,6 @@
"SPAN.preprocessor { color: #806020 }\n"
"SPAN.stringliteral { color: #002080 }\n"
"SPAN.charliteral { color: #008080 }\n"
".mdTable {\n"
" border: 1px solid #868686;\n"
" background-color: #F4F4FB;\n"
"}\n"
".mdRow {\n"
" padding: 8px 10px;\n"
"}\n"
".mdescLeft {\n"
" padding: 0px 8px 4px 8px;\n"
" font-size: 80%;\n"
......@@ -308,3 +294,51 @@
" border-top: 1px solid black;\n"
"}\n"
"\n"
"/* Style for detailed member documentation */\n"
".memtemplate {\n"
" font-size: 80%;\n"
" color: #606060;\n"
" font-weight: normal;\n"
"} \n"
".memnav { \n"
" background-color: #e8eef2;\n"
" border: 1px solid #84b0c7;\n"
" text-align: center;\n"
" margin: 2px;\n"
" margin-right: 15px;\n"
" padding: 2px;\n"
"}\n"
".memitem {\n"
" width: 100%;\n"
" background-color: #eef3f5;\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: #dedeee;\n"
" -moz-border-radius: 8px 8px 8px 8px;\n"
"}\n"
".memname {\n"
" white-space: nowrap;\n"
"}\n"
".memdoc{\n"
" padding-left: 10px;\n"
"}\n"
".memproto {\n"
" background-color: #d5e1e8;\n"
" width: 100%;\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: #84b0c7;\n"
" font-weight: bold;\n"
" -moz-border-radius: 8px 8px 8px 8px;\n"
"}\n"
".paramkey {\n"
" text-align: right;\n"
"}\n"
".paramtype {\n"
" white-space: nowrap;\n"
"}\n"
".paramname {\n"
" color: #602020;\n"
" font-style: italic;\n"
"}\n"
"/* End Styling for detailed member documentation */\n"
......@@ -1235,21 +1235,39 @@ void HtmlGenerator::endIndexValue(const char *,bool)
t << "</td></tr>" << endl;
}
void HtmlGenerator::startMemberDocList()
{
DBG_HTML(t << "<!-- startMemberDocList -->" << endl;)
t << "<table class=\"memlist\">" << endl;
t << " <tr>" << endl;
t << " <td>" << endl;
}
void HtmlGenerator::endMemberDocList()
{
DBG_HTML(t << "<!-- endMemberDocList -->" << endl;)
t << " </td>" << endl;
t << " </tr>" << endl;
t << "</table>" << endl;
}
void HtmlGenerator::startMemberDoc(const char *,const char *,const char *,const char *)
{
DBG_HTML(t << "<!-- startMemberDoc -->" << endl;)
t << "<p>" << endl;
t << "<table class=\"mdTable\" cellpadding=\"2\" cellspacing=\"0\">" << endl;
t << "<table class=\"memitem\">" << endl;
t << " <tr>" << endl;
t << " <td class=\"mdRow\">" << endl;
t << " <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">" << endl;
t << " <td>" << endl;
t << " <table class=\"memproto\">" << endl;
}
void HtmlGenerator::startMemberDocPrefixItem()
{
DBG_HTML(t << "<!-- startMemberDocPrefixItem -->" << endl;)
t << " <tr>" << endl;
t << " <td class=\"mdPrefix\" colspan=\"4\">" << endl;
t << " <td class=\"memtemplate\" colspan=\"5\">";
}
void HtmlGenerator::endMemberDocPrefixItem()
......@@ -1259,13 +1277,11 @@ void HtmlGenerator::endMemberDocPrefixItem()
t << " </tr>" << endl;
}
void HtmlGenerator::startMemberDocName(bool align)
void HtmlGenerator::startMemberDocName(bool /*align*/)
{
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <tr>" << endl;
t << " <td class=\"md\" nowrap valign=\"top\"";
if (align) t << " align=\"right\"";
t << ">";
t << " <td class=\"memname\">";
}
void HtmlGenerator::endMemberDocName()
......@@ -1277,11 +1293,8 @@ void HtmlGenerator::endMemberDocName()
void HtmlGenerator::startParameterList(bool openBracket)
{
DBG_HTML(t << "<!-- startParameterList -->" << endl;)
t << " <td class=\"md\" valign=\"top\">";
if (openBracket)
{
t << "(&nbsp;";
}
t << " <td>";
if (openBracket) t << "(";
t << "</td>" << endl;
}
......@@ -1290,17 +1303,17 @@ void HtmlGenerator::startParameterType(bool first,const char *key)
if (first)
{
DBG_HTML(t << "<!-- startFirstParameterType -->" << endl;)
t << " <td class=\"md\" nowrap valign=\"top\">";
t << " <td class=\"paramtype\">";
}
else
{
DBG_HTML(t << "<!-- startParameterType -->" << endl;)
t << " <tr>" << endl;
t << " <td class=\"md\" nowrap align=\"right\">";
t << " <td class=\"paramkey\">";
if (key) t << key;
t << "</td>" << endl;
t << " <td class=\"md\"></td>" << endl;
t << " <td class=\"md\" nowrap>";
t << " <td></td>" << endl;
t << " <td class=\"paramtype\">";
}
}
......@@ -1310,15 +1323,10 @@ void HtmlGenerator::endParameterType()
t << "&nbsp;</td>" << endl;
}
void HtmlGenerator::startParameterName(bool oneArgOnly)
void HtmlGenerator::startParameterName(bool /*oneArgOnly*/)
{
DBG_HTML(t << "<!-- startParameterName -->" << endl;)
t << " <td class=\"mdname";
if (oneArgOnly)
{
t << "1\" valign=\"top";
}
t << "\" nowrap>"; //&nbsp;";
t << " <td class=\"paramname\">";
}
void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
......@@ -1329,21 +1337,21 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
if (emptyList)
{
t << " </td>" << endl;
t << " <td class=\"md\" valign=\"top\">";
t << " <td>";
if (closeBracket) t << "&nbsp;)";
t << "&nbsp;</td>" << endl;
t << " <td class=\"md\" nowrap>";
t << " <td width=\"100%\">";
}
else
{
t << "</td>" << endl;
t << "</td><td>&nbsp;</td>" << endl;
t << " </tr>" << endl;
t << " <tr>" << endl;
t << " <td class=\"md\"></td>" << endl;
t << " <td class=\"md\">";
t << " <td></td>" << endl;
t << " <td>";
if (closeBracket) t << ")";
t << "&nbsp;</td>" << endl;
t << " <td class=\"md\" colspan=\"2\">";
t << "</td>" << endl;
t << " <td></td><td></td><td width=\"100%\">";
}
}
else
......@@ -1370,7 +1378,6 @@ void HtmlGenerator::endMemberDoc(bool hasArgs)
t << " </table>" << endl;
t << " </td>" << endl;
t << " </tr>" << endl;
t << "</table>" << endl;
}
void HtmlGenerator::startDotGraph()
......@@ -1461,17 +1468,15 @@ void HtmlGenerator::startIndent()
// It's back to abusing tables :-(
//t << "<div class=\"in\">" << endl;
DBG_HTML(t << "<!-- startIndent -->" << endl;)
t << "<table cellspacing=\"5\" cellpadding=\"0\" border=\"0\">\n"
" <tr>\n"
" <td>\n"
" &nbsp;\n"
" </td>\n"
" <td>\n";
t << " <tr>\n"
" <td >\n";
}
void HtmlGenerator::endIndent()
{
DBG_HTML(t << "<!-- endIndent -->" << endl;)
t << " </td>\n"
" </tr>\n"
"</table>\n";
......
......@@ -95,6 +95,8 @@ class HtmlGenerator : public OutputGenerator
void endMemberHeader();
void startMemberSubtitle();
void endMemberSubtitle();
void startMemberDocList();
void endMemberDocList();
void startMemberList();
void endMemberList();
void startAnonTypeScope(int) {}
......
......@@ -93,6 +93,8 @@ class LatexGenerator : public OutputGenerator
void endMemberHeader();
void startMemberSubtitle() {}
void endMemberSubtitle() {}
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList();
void endMemberList();
void startAnonTypeScope(int);
......
......@@ -98,6 +98,8 @@ class ManGenerator : public OutputGenerator
void startMemberSubtitle() {}
void endMemberSubtitle() {}
void writeListItem();
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList();
void endMemberList();
void startAnonTypeScope(int);
......
......@@ -1306,10 +1306,17 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bool hasHtmlHelp = Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP");
HtmlHelp *htmlHelp = 0;
if (hasHtmlHelp)
{
if (isEnumerate() && name().at(0)=='@')
{
// don't add to index
}
else
{
htmlHelp = HtmlHelp::getInstance();
htmlHelp->addIndexItem(ciname,name(),cfiname,cfname,memAnchor);
}
}
// get member name
QCString doxyName=name().copy();
......@@ -2249,6 +2256,10 @@ bool MemberDef::isConstructor() const
{
return name()=="this";
}
else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP)
{ // for PHP
return name()=="__construct";
}
else // for other languages
{
QCString locName = classDef->localName();
......@@ -2273,6 +2284,10 @@ bool MemberDef::isDestructor() const
{
return name()=="~this";
}
else if (fileDef && getLanguageFromFileName(fileDef->name())==SrcLangExt_PHP)
{ // for PHP
return name()=="__destruct";
}
else // other languages
{
return name().find('~')!=-1 && name().find("operator")==-1;
......
......@@ -369,6 +369,7 @@ void MemberList::writeDocumentation(OutputList &ol,
ol.parseText(title);
ol.endGroupHeader();
}
ol.startMemberDocList();
MemberListIterator mli(*this);
MemberDef *md;
......@@ -386,6 +387,7 @@ void MemberList::writeDocumentation(OutputList &ol,
mg->writeDocumentation(ol,scopeName,container);
}
}
ol.endMemberDocList();
}
void MemberList::writeDocumentationPage(OutputList &ol,
......
......@@ -151,44 +151,45 @@ void NamespaceDef::insertMember(MemberDef *md)
{
//memList->append(md);
allMemberList.append(md);
static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
switch(md->memberType())
{
case MemberDef::Variable:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decVarMembers.inSort(md);
else
decVarMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docVarMembers.inSort(md);
else
docVarMembers.append(md);
break;
case MemberDef::Function:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decFuncMembers.inSort(md);
else
decFuncMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docFuncMembers.inSort(md);
else
docFuncMembers.append(md);
break;
case MemberDef::Typedef:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decTypedefMembers.inSort(md);
else
decTypedefMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docTypedefMembers.inSort(md);
else
docTypedefMembers.append(md);
break;
case MemberDef::Enumeration:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decEnumMembers.inSort(md);
else
decEnumMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docEnumMembers.inSort(md);
else
docEnumMembers.append(md);
......@@ -196,21 +197,21 @@ void NamespaceDef::insertMember(MemberDef *md)
case MemberDef::EnumValue:
break;
case MemberDef::Prototype:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decProtoMembers.inSort(md);
else
decProtoMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docProtoMembers.inSort(md);
else
docProtoMembers.append(md);
break;
case MemberDef::Define:
if (Config_getBool("SORT_BRIEF_DOCS"))
if (sortBriefDocs)
decDefineMembers.inSort(md);
else
decDefineMembers.append(md);
if (Config_getBool("SORT_MEMBER_DOCS"))
if (sortBriefDocs)
docDefineMembers.inSort(md);
else
docDefineMembers.append(md);
......
......@@ -306,6 +306,8 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endMemberHeader() = 0;
virtual void startMemberSubtitle() = 0;
virtual void endMemberSubtitle() = 0;
virtual void startMemberDocList() = 0;
virtual void endMemberDocList() = 0;
virtual void startMemberList() = 0;
virtual void endMemberList() = 0;
virtual void startAnonTypeScope(int) = 0;
......
......@@ -162,6 +162,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberSubtitle); }
void endMemberSubtitle()
{ forall(&OutputGenerator::endMemberSubtitle); }
void startMemberDocList()
{ forall(&OutputGenerator::startMemberDocList); }
void endMemberDocList()
{ forall(&OutputGenerator::endMemberDocList); }
void startMemberList()
{ forall(&OutputGenerator::startMemberList); }
void endMemberList()
......
......@@ -101,6 +101,8 @@ class RTFGenerator : public OutputGenerator
void endMemberHeader() { endGroupHeader(); }
void startMemberSubtitle();
void endMemberSubtitle();
void startMemberDocList() {}
void endMemberDocList() {}
void startMemberList();
void endMemberList();
void startAnonTypeScope(int) {}
......
/*****************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2005 by Dimitri van Heesch.
*
......@@ -5674,6 +5674,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
extLookup.insert(".d", (void*)SrcLangExt_D);
extLookup.insert(".php", (void*)SrcLangExt_PHP);
extLookup.insert(".php4", (void*)SrcLangExt_PHP);
extLookup.insert(".php5", (void*)SrcLangExt_PHP);
extLookup.insert(".inc", (void*)SrcLangExt_PHP);
extLookup.insert(".phtml", (void*)SrcLangExt_PHP);
extLookup.insert(".m", (void*)SrcLangExt_ObjC);
......
......@@ -11,7 +11,7 @@ while (<FILE>) {
$minor=$1
} elsif (/doxygen_version_revision=(\d+)/) {
$revision=$1
} elsif (/doxygen_version_mmn=(\w+)/) {
} elsif (/doxygen_version_mmn=(\w+)/ && ($1 ne "NO")) {
$mmn=$1
}
}
......
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