Commit e4cebf12 authored by dimitri's avatar dimitri

Release-1.2.4

parent ba068113
DOXYGEN Version 1.2.3-20001220
DOXYGEN Version 1.2.4
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (20 December 2000)
Dimitri van Heesch (24 December 2000)
DOXYGEN Version 1.2.3-20001220
DOXYGEN Version 1.2.4
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (20 December 2000)
Dimitri van Heesch (24 December 2000)
1.2.3-20001220
1.2.4
......@@ -15,7 +15,7 @@
\documentclass[a4paper,ps2pdf]{article}
\usepackage{a4wide}
\usepackage{makeidx}
\usepackage{fancyheadings}
\usepackage{fancyhdr}
\usepackage{epsf}
\usepackage{doxygen}
\usepackage{multicol}
......
......@@ -33,7 +33,21 @@ To define a group, you should put the \ref cmddefgroup "\\defgroup"
command in a special comment block. The first argument of the command
is a label that should uniquely identify the group. You can make an
entity a member of a specific group by putting
a \ref cmdingroup "\\ingroup" command inside its documentation.
a \ref cmdingroup "\\ingroup" command inside its documentation block.
To avoid putting \ref cmdingroup "\\ingroup" commands in the documentation
of each member you can also group members together by the
open marker <code>\@{</code> before the group and the
closing marker <code>\@}</code> after the group. The markers can
be put in the documentation of the group definition or in a separate
documentation block.
Groups can also be nested using these grouping markers.
Note that compound entities (like classes, files and namespaces) can
be put into multiple groups, but members (like variable, functions, typedefs
and enums) can only be a member of one group
(this restriction is to avoid ambiguous linking targets).
\par Example:
\verbinclude group.cpp
......
......@@ -462,19 +462,17 @@ Compilation is now done by performing the following steps:
nmake
\endverbatim
<li>To generate the doxygen documentation, do ensure, that the
<code>html</code> and <code>latex</code> subdirectories exist.
Then go to the <code>doc</code> subdirectory and type:
<li>To generate the doxygen documentation, go to the <code>doc</code>
subdirectory and type:
\verbatim
doxygen
nmake
\endverbatim
The generated docs int HTML are located in the <code>html</code>
The generated docs int HTML are located in the <code>..\html</code>
subdirectory.
The sources for LaTeX documentation are located in <code>latex</code>
The sources for LaTeX documentation are located in <code>..\latex</code>
subdirectory. From those sources, the DVI, PostScript, and PDF
documentation can be generated.
</ol>
......
>Test: "class_test.html"
example a0 "()"
<tagfile>
<compound kind="class">
<name>Test</name>
<filename>class_test.html</filename>
<member kind="function">
<name>example</name>
<anchor>a0</anchor>
<arglist>()</arglist>
</member>
</compound>
</tagfile>
/*! \defgroup group1 The First Group
/** @defgroup group1 The First Group
* This is the first group
* @{
*/
/*! \defgroup group2 The Second Group
/** @brief class C1 in group 1 */
class C1 {};
/** @brief class C2 in group 1 */
class C2 {};
/** function in group 1 */
void func() {}
/** @} end of group1 */
/**
* @defgroup group2 The Second Group
* This is the second group
*/
/*! \defgroup group3 The Third Group
/** @defgroup group3 The Third Group
* This is the third group
*/
/*! \defgroup group4 The Fourth Group
* \ingroup group3
/** @defgroup group4 The Fourth Group
* @ingroup group3
* Group 4 is a subgroup of group 3
*/
/*! \ingroup group1
* \brief class C1 in group 1
*/
class C1 {};
/*! \ingroup group1
* \brief class C2 in group 1
*/
class C2 {};
/*! \ingroup group2
* \brief class C3 in group 2
/**
* @ingroup group2
* @brief class C3 in group 2
*/
class C3 {};
/*! \ingroup group2
* \brief class C4 in group 2
/** @ingroup group2
* @brief class C4 in group 2
*/
class C4 {};
/*! \ingroup group3
* \brief class C5 in \link group3 the third group\endlink.
/** @ingroup group3
* @brief class C5 in @link group3 the third group@endlink.
*/
class C5 {};
/*! \ingroup group1 group2 group3 group4
* namespace N1 is in all groups
* \sa \link group1 The first group\endlink, group2, group3, group4
/** @ingroup group1 group2 group3 group4
* namespace N1 is in four groups
* @sa @link group1 The first group@endlink, group2, group3, group4
*
* Also see @ref mypage2
*/
namespace N1 {};
/*! \file
* \ingroup group3
* \brief this file in group 3
/** @file
* @ingroup group3
* @brief this file in group 3
*/
/** @defgroup group5 The Fifth Group
* This is the fifth group
* @{
*/
/** @page mypage1 This is a section in group 5
* Text of the first section
*/
/** @page mypage2 This is another section in group 5
* Text of the second section
*/
/** @} */
Name: doxygen
Version: 1.2.3-20001220
Version: 1.2.4
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -654,7 +654,6 @@ void ClassDef::writeDocumentation(OutputList &ol)
QCString pageTitle=name().copy();
QCString pageType;
ArgumentList *outerTempArgList = outerTemplateArguments();
if (outerTempArgList) pageType+=" Template";
switch(compType)
{
case Class: pageType+=" Class"; break;
......@@ -663,6 +662,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
default: pageType+=" Interface"; break;
}
pageTitle+=pageType+" Reference";
if (outerTempArgList) pageTitle.prepend(" Template");
startFile(ol,fileName,pageTitle);
startTitle(ol,getOutputFileBase());
parseText(ol,theTranslator->trCompoundReference(name(),compType,outerTempArgList!=0));
......
......@@ -1140,6 +1140,9 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
<Body>[0-9]+ {
g_code->codify(yytext);
}
<Body>[0-9]+[xX][0-9A-F]+ {
g_code->codify(yytext);
}
<MemberCall2,FuncCall>{KEYWORD}/([^a-z_A-Z0-9]) {
addParmType();
g_parmName=yytext;
......
......@@ -225,6 +225,9 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t,
BEGIN( Start );
declinfoYYlex();
//printf("type=`%s' class=`%s' name=`%s' args=`%s'\n",
// type.data(),scope.data(),name.data(),args.data());
cl=scope.copy();
//printf("scope=`%s'\n",scope.data());
int il=0,ir=0;
......@@ -248,7 +251,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t,
a=removeRedundantWhiteSpace(args);
exc=removeRedundantWhiteSpace(exceptionString);
if (!t.isEmpty() && t.at(t.length()-1)==')')
if (!t.isEmpty() && t.at(t.length()-1)==')') // for function pointers
{
a.prepend(")");
t=t.left(t.length()-1);
......
......@@ -760,7 +760,7 @@ FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+
ID [a-z_A-Z][a-z_A-Z0-9]*
SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+
URLMASK [a-z_A-Z0-9\~\:\?\@\%\#\.\-\+\/\=]+
URLMASK [a-z_A-Z0-9\~\:\?\@\&\%\#\.\-\+\/\=]+
NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9]
WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]"\"")
ATTR ({B}+[^>\n]*)?
......
......@@ -66,8 +66,6 @@
// lists
ClassList classList; // all documented classes
NamespaceList namespaceList; // all namespaces
//PageList *exampleList = new PageList; // all example files
//PageList *pageList = new PageList; // all related documentation pages
MemberNameList memberNameList; // class member + related functions
MemberNameList functionNameList; // all unrelated functions
FileNameList inputNameList; // all input files
......@@ -122,7 +120,6 @@ void clearAll()
namespaceDict.clear();
memberNameDict.clear();
functionNameDict.clear();
//substituteDict.clear();
sectionDict.clear();
inputNameDict->clear();
excludeNameDict.clear();
......@@ -1077,7 +1074,6 @@ static void findUsingDeclarations(Entry *root)
}
else if (fd)
{
//printf("Inside file %s\n",fd->name().data());
fd->addUsingDeclaration(usingCd);
}
}
......@@ -1252,7 +1248,7 @@ static MemberDef *addVariableToFile(
);
bool ambig;
FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
FileDef *fd = findFileDef(inputNameDict,root->fileName,ambig);
// see if the function is inside a namespace
NamespaceDef *nd = 0;
......@@ -1678,8 +1674,9 @@ static void buildMemberList(Entry *root)
//}
// new member function, signal or slot.
//printf("new member: %s class template args=`%s'\n",
// root->args.data(),argListToString(cd->templateArguments()).data());
//printf("new member: %s member template args=`%s'\n",
// root->args.data(),
// argListToString(root->mtArgList).data());
MemberDef *md=new MemberDef(
root->fileName,root->startLine,
root->type,name,root->args,root->exception,
......@@ -3246,11 +3243,12 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
}
}
if (root->tArgList==0 && !classTempList.isEmpty())
if (root->tArgList==0 && root->mtArgList==0 && !classTempList.isEmpty())
{
// no template specifiers found during parsing (because \fn was used),
// but there are template names in the scope, so we build the template
// specifiers from that.
printf("Building template list from `%s'\n",classTempList.data());
root->tArgList = new ArgumentList;
QRegExp re(idMask);
int i,p=0,l;
......@@ -3385,7 +3383,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
"4. class definition %s found\n",cd->name().data());
int ci;
ArgumentList *classTemplArgs = cd->templateArguments();
ArgumentList *funcTemplArgs = md->templateArguments();
ArgumentList *funcTemplArgs = md->memberDefTemplateArguments();
if ((ci=cd->name().find("::"))!=-1) // nested class
{
ClassDef *parentClass = getClass(cd->name().left(ci));
......@@ -3475,8 +3473,11 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
//printf("root->tArgList=`%s'\n",argListToString(root->tArgList).data());
if (matching) // replace member's argument list
{
//printf("Setting scope template argument of member to %s\n",
// argListToString(root->tArgList).data()
//printf("Setting scope template argument of member %s to %s\n",
// md->name().data(), argListToString(root->tArgList).data()
// );
//printf("Setting member template argument of member %s to %s\n",
// md->name().data(), argListToString(root->mtArgList).data()
// );
md->setScopeDefTemplateArguments(root->tArgList);
md->setMemberDefTemplateArguments(root->mtArgList);
......@@ -3949,7 +3950,17 @@ static void findEnums(Entry *root)
else if (isGlobal)
{
md->setDefinition(name);
fd->insertMember(md);
if (fd==0 && root->tagInfo)
{
bool ambig;
QCString filePathName = root->parent->fileName;
fd=findFileDef(inputNameDict,filePathName,ambig);
}
if (fd)
{
fd->insertMember(md);
md->setFileDef(fd);
}
}
else if (cd)
{
......
......@@ -704,7 +704,7 @@ int countNamespaces()
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
if (nd->isLinkableInProject() && nd->countMembers()>0) count++;
if (nd->isLinkableInProject()) count++;
}
return count;
}
......@@ -746,12 +746,17 @@ void writeNamespaceIndex(OutputList &ol)
//ol.newParagraph();
ol.endTextBlock();
ol.startIndexList();
bool first=TRUE;
NamespaceDef *nd=namespaceList.first();
while (nd)
{
if (nd->isLinkableInProject() && nd->countMembers()>0)
if (nd->isLinkableInProject())
{
if (first)
{
ol.startIndexList();
first=FALSE;
}
ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
if (!nd->briefDescription().isEmpty())
{
......@@ -776,7 +781,7 @@ void writeNamespaceIndex(OutputList &ol)
}
nd=namespaceList.next();
}
ol.endIndexList();
if (!first) ol.endIndexList();
if (hasHtmlHelp)
{
htmlHelp->decContentsDepth();
......
......@@ -146,7 +146,7 @@ void writeInstallScript()
t << " print STDERR \"Error: opening file $oldf for writing\\n\";\n";
t << " exit 1;\n";
t << " }\n";
t << " if ($oldf!=\"tree.js\") {\n";
t << " if ($oldf ne \"tree.js\") {\n";
t << " while (<F>) {\n";
t << " s/doxygen\\=\\\"([^ \\\"\\:\\t\\>\\<]*)\\:([^ \\\"\\t\\>\\<]*)\\\" (href|src)=\\\"\\2/doxygen\\=\\\"$1:$subst{$1}\\\" \\3=\\\"$subst{$1}/g;\n";
t << " print G \"$_\";\n";
......
......@@ -510,7 +510,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
bool found=FALSE;
while (nd && !found)
{
if (nd->isLinkableInProject() && nd->countMembers()>0)
if (nd->isLinkableInProject())
{
if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; // Namespace Documentation}\n":
......
......@@ -258,7 +258,7 @@ MemberDef::MemberDef(const char *df,int dl,
initLines=0;
type=t;
args=a;
args=args.stripWhiteSpace();
args=removeRedundantWhiteSpace(args);
if (type.isEmpty()) decl=name()+args; else decl=type+" "+name()+args;
declLine=0;
memberGroup=0;
......@@ -763,11 +763,11 @@ void MemberDef::writeDeclaration(OutputList &ol,
// if member template specifiers are not part of the name, but they are
// present, we add them
if (tArgList && !(name().find('<')!=-1 && name().find('>')!=-1)
&& cd && cd->templateArguments())
{
ol.docify(tempArgListToString(tArgList));
}
//if (tArgList && !(name().find('<')!=-1 && name().find('>')!=-1)
// && cd && cd->templateArguments())
//{
// ol.docify(tempArgListToString(tArgList));
//}
if (argsString())
{
......@@ -923,6 +923,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (si==-1) si=0;
while ((pi=r.match(ldef,i+l,&l))!=-1) ei=i=pi+l;
// first si characters of ldef contain compound type name
ol.startMemberDocName();
ol.docify(ldef.left(si));
ol.docify(" { ... } ");
// last ei characters of ldef contain pointer/reference specifiers
......
......@@ -292,7 +292,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{
if (!Config::genTagFile.isEmpty())
{
tagFile << " <member>" << endl;
tagFile << " <member kind=\"enumeration\">" << endl;
tagFile << " <name>" << convertToXML(md->name()) << "</name>" << endl;
tagFile << " <anchor>" << convertToXML(md->anchor()) << "</anchor>" << endl;
tagFile << " <arglist>" << convertToXML(md->argsString()) << "</arglist>" << endl;
......@@ -332,7 +332,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{
if (!Config::genTagFile.isEmpty())
{
tagFile << " <member>" << endl;
tagFile << " <member kind=\"enumvalue\">" << endl;
tagFile << " <name>" << convertToXML(fmd->name()) << "</name>" << endl;
tagFile << " <anchor>" << convertToXML(fmd->anchor()) << "</anchor>" << endl;
tagFile << " <arglist>" << convertToXML(fmd->argsString()) << "</arglist>" << endl;
......
......@@ -1000,7 +1000,8 @@ BN [ \t\r\n]
if (g_includeStack.isEmpty())
g_curlyCount--;
outputChar(*yytext);
ASSERT(g_curlyCount>=0);
// This should hold otherwise the preprocessor is confused
//ASSERT(g_curlyCount>=0);
}
<CopyLine>"'"\\[0-7]{1,3}"'" {
outputArray(yytext,yyleng);
......
This diff is collapsed.
......@@ -719,6 +719,7 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
me->protection = tmi->prot;
me->virt = tmi->virt;
me->stat = tmi->isStatic;
me->fileName = ce->fileName;
TagInfo *ti = new TagInfo;
ti->tagName = m_tagName;
ti->anchor = tmi->anchor;
......
......@@ -299,12 +299,8 @@ QCString stripAnnonymousNamespaceScope(const QCString &s)
void writePageRef(OutputList &ol,const char *cn,const char *mn)
{
//bool htmlOn = ol.isEnabled(OutputGenerator::Html);
//bool manOn = ol.isEnabled(OutputGenerator::Man);
ol.pushGeneratorState();
//ol.enableAll();
ol.disable(OutputGenerator::Html);
ol.disable(OutputGenerator::Man);
if (Config::pdfHyperFlag) ol.disable(OutputGenerator::Latex);
......@@ -313,12 +309,13 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn)
ol.docify(theTranslator->trPageAbbreviation());
ol.endPageRef(cn,mn);
//if (htmlOn) ol.enable(OutputGenerator::Html);
//if (manOn) ol.enable(OutputGenerator::Man);
ol.popGeneratorState();
}
/*! Generate a place holder for a position in a list. Used for
* translators to be able to specify different elements orders
* depending on whether text flows from left to right or visa versa.
*/
QCString generateMarker(int id)
{
QCString result;
......@@ -326,8 +323,9 @@ QCString generateMarker(int id)
return result;
}
// strip part of the path if it matches
// one of the paths in the stripFromPath list
/*! strip part of \a path if it matches
* one of the paths in the Config::stripFromPath list
*/
QCString stripFromPath(const QCString &path)
{
const char *s=Config::stripFromPath.first();
......@@ -343,9 +341,10 @@ QCString stripFromPath(const QCString &path)
return path;
}
// try to determine if this files is a source or a header file by looking
// at the extension (5 variations are allowed in both upper and lower case)
// If anyone knows or uses another extension please let me know :-)
/*! try to determine if \a name is a source or a header file name by looking
* at the extension. A number of variations is allowed in both upper and
* lower case) If anyone knows or uses another extension please let me know :-)
*/
int guessSection(const char *name)
{
QCString n=((QCString)name).lower();
......@@ -369,35 +368,9 @@ int guessSection(const char *name)
return 0;
}
//QCString resolveDefines(const char *n)
//{
// return n;
// if (n)
// {
// Define *def=defineDict[n];
// if (def && def->nargs==0 && !def->definition.isEmpty())
// {
// return def->definition;
// }
// return n;
// }
// return 0;
//}
//QCString resolveTypedefs(const QCString &n)
//{
// QCString *subst=typedefDict[n];
// if (subst && !subst->isEmpty())
// {
// return *subst;
// }
// else
// {
// return n;
// }
//}
/*! Get a class definition given its name.
* Returns 0 if the class is not found.
*/
ClassDef *getClass(const char *name)
{
if (name==0 || name[0]=='\0') return 0;
......@@ -515,9 +488,11 @@ QCString removeRedundantWhiteSpace(const QCString &s)
(i!=0 && i!=l-1 && isId(s.at(i-1)) && isId(s.at(i+1)))
)
{
if ((c=='*' || c=='&' || c=='@') &&
!result.isEmpty() && isId(result.at(result.length()-1))
) result+=' ';
if ((c=='*' || c=='&' || c=='@'))
{
uint rl=result.length();
if (rl>0 && (isId(result.at(rl-1)) || result.at(rl-1)=='>')) result+=' ';
}
result+=c;
}
}
......@@ -571,12 +546,6 @@ void linkifyText(const TextGeneratorIntf &out,const char *scName,const char *nam
if (i==-1) i=splitText.find(' ');
if (i!=-1) // add a link-break at i in case of Html output
{
//ol.docify(splitText.left(i+1));
//ol.pushGeneratorState();
//ol.disableAllBut(OutputGenerator::Html);
//ol.lineBreak();
//ol.popGeneratorState();
//ol.docify(splitText.right(splitLength-i-1));
out.writeString(splitText.left(i+1));
out.writeBreak();
out.writeString(splitText.right(splitLength-i-1));
......@@ -644,12 +613,13 @@ void linkifyText(const TextGeneratorIntf &out,const char *scName,const char *nam
}
} while (!found && scopeOffset>=0);
//if (!found) printf("Trying to link %s in %s\n",word.data(),scName);
//if (!found) printf("Trying to link %s in %s\n",word.data(),scName);
if (!found &&
getDefs(scName,word,0,md,cd,fd,nd,gd) &&
(md->isTypedef() || md->isEnumerate() ||
md->isReference() || md->isVariable()) &&
(external ? md->isLinkable() : md->isLinkableInProject())
md->isReference() || md->isVariable()
) &&
(external ? md->isLinkable() : md->isLinkableInProject())
)
{
//printf("Found ref\n");
......@@ -760,26 +730,6 @@ QCString argListToString(ArgumentList *al)
return result;
}
//QCString tempArgListToString(ArgumentList *al)
//{
// QCString result;
// if (al==0) return result;
// Argument *a=al->first();
// result+="<";
// while (a)
// {
// int ni=a->type.findRev(' ');
// if (ni!=-1)
// result+=a->type.right(a->type.length()-ni-1);
// else
// result+=a->type;
// a = al->next();
// if (a) result+=",";
// }
// result+=">";
// return result;
//}
QCString tempArgListToString(ArgumentList *al)
{
QCString result;
......@@ -1001,13 +951,16 @@ void setAnchors(char id,MemberList *ml,int groupId)
MemberDef *md;
for (;(md=mli.current());++mli)
{
QCString anchor;
if (groupId==-1)
anchor.sprintf("%c%d",id,count++);
else
anchor.sprintf("%c%d_%d",id,groupId,count++);
//printf("Member %s anchor %s\n",md->name(),anchor.data());
md->setAnchor(anchor);
if (!md->isReference())
{
QCString anchor;
if (groupId==-1)
anchor.sprintf("%c%d",id,count++);
else
anchor.sprintf("%c%d_%d",id,groupId,count++);
//printf("Member %s anchor %s\n",md->name(),anchor.data());
md->setAnchor(anchor);
}
}
}
......@@ -2112,7 +2065,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
QList<MemberDef> members;
//printf("Function with global scope `%s' args=`%s'\n",namespaceName.data(),args);
//printf(" Function with global scope `%s' args=`%s'\n",namespaceName.data(),args);
MemberListIterator mli(*mn);
for (mli.toFirst();(md=mli.current());++mli)
{
......@@ -2821,28 +2774,6 @@ QCString convertNameToFile(const char *name,bool allowDots)
return result;
}
/*! Converts a string to HTML-encoded string */
QCString convertToHtml(const QCString &s)
{
QCString result;
char c;
const char *p=s.data();
while ((c=*p++)!=0)
{
switch(c)
{
case '<': result+="&lt;"; break;
case '>': result+="&gt;"; break;
case '&': result+="&amp;"; break;
case '"': result+="&quot;"; break;
default:
result+=c;
break;
}
}
return result;
}
/*! Input is a scopeName, output is the scopename split into a
* namespace part (as large as possible) and a classname part.
*/
......@@ -2923,6 +2854,7 @@ QCString stripScope(const char *name)
return result;
}
/*! Converts a string to an XML-encoded string */
QCString convertToXML(const char *s)
{
QCString result;
......@@ -2943,3 +2875,10 @@ QCString convertToXML(const char *s)
}
return result;
}
/*! Converts a string to a HTML-encoded string */
QCString convertToHtml(const char *s)
{
return convertToXML(s);
}
......@@ -133,7 +133,6 @@ void setFileNameForSections(QList<QCString> *anchorList,const char *fileName);
QCString stripAnnonymousScope(const QCString &s);
QCString stripAnnonymousNamespaceScope(const QCString &s);
QCString stripFromPath(const QCString &path);
QCString convertToXML(const char *s);
bool rightScopeMatch(const QCString &scope, const QCString &name);
bool leftScopeMatch(const QCString &scope, const QCString &name);
void writePageRef(OutputList &ol,const char *cn,const char *mn);
......@@ -145,12 +144,13 @@ void initClassHierarchy(ClassList *cl);
bool hasVisibleRoot(BaseClassList *bcl);
int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0);
QCString convertNameToFile(const char *name,bool allowDots=FALSE);
QCString convertToHtml(const QCString &s);
void extractNamespaceName(const QCString &scopeName,
QCString &className,QCString &namespaceName);
QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &templ);
QCString stripScope(const char *name);
int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s);
QCString convertToXML(const char *s);
#endif
......@@ -11,6 +11,8 @@ use Cwd;
# get current working directory
$pwd=cwd();
# work-around slashes problems for badly ported perl interpreters
$pwd=~s{/}{\\}g;
# create config file
open(FILE,">makeconfig") || die "Cannot create file makeconfig!";
......
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