Commit 20bd371f authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3-20030514

parent ea4b32cb
DOXYGEN Version 1.3-20030430
DOXYGEN Version 1.3-20030514
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (30 April 2003)
Dimitri van Heesch (14 May 2003)
DOXYGEN Version 1.3_20030430
DOXYGEN Version 1.3_20030514
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 April 2003)
Dimitri van Heesch (dimitri@stack.nl) (14 May 2003)
1.3-20030430
1.3-20030514
......@@ -1478,7 +1478,7 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
\addindex DOT_IMAGE_FORMAT
The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
generated by dot. Possible values are gif, jpg, and png.
If left blank gif will be used.
If left blank png will be used.
\anchor cfg_dot_path
<dt>\c DOT_PATH <dd>
......
......@@ -30,7 +30,7 @@
]{hyperref}
\makeindex
\setcounter{tocdepth}{1}
\setlength{\footrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\begin{titlepage}
\includegraphics[width=\textwidth]{doxygen_logo}
......
......@@ -183,8 +183,8 @@ Thanks go to:
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, Karel Lindveld, Ivan Lee, Albert
Vernon, Adam McKee, Vijapurapu Anatharac, Ben Hunsberger and
Walter Wartenweiler, Jeff Garbers, David Harris and Terry Brown
for donating money.
Walter Wartenweiler, Jeff Garbers, David Harris, Terry Brown and
Nicolas Reimen for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
......
......@@ -445,8 +445,10 @@ Here is what is required:
<li>To generate LaTeX documentation or formulas in HTML you need the tools:
<code>latex</code>, <code>dvips</code> and <code>gswin32</code>.
To get these working under Windows
install the fpTeX distribution. You can download it at:
http://www.ese-metz.fr/~popineau/fptex/wwwfptex.html
install the fpTeX distribution. You can find more info at:
http://www.fptex.org/ and download it from CTAN or one of its mirrors.
In the Netherlands for example this would be:
ftp://ftp.easynet.nl/mirror/CTAN/systems/win32/fptex/
Make sure the tools are available from a dos box, by adding the
directory they are in to the search path.
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_20030430
Version: 1.3_20030514
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -594,6 +594,6 @@ Q_EXPORT void qObsolete( const char *message );
#endif
// DvH: added to avoid warnings on recent gcc versions
#define Q_DELETE_VOID_UNDEFINED
#define Q_DELETING_VOID_UNDEFINED
#endif // QGLOBAL_H
......@@ -1415,7 +1415,7 @@ void ClassDef::writeMemberList(OutputList &ol)
{
QCString name=mi->ambiguityResolutionScope+md->name();
//ol.writeListItem();
ol.writeString(" <tr bgcolor=\"#f0f0f0\"><td>");
ol.writeString(" <tr class=\"memlist\"><td>");
Definition *bd = md->getGroupDef();
if (bd==0) bd=cd;
ol.writeObjectLink(bd->getReference(),bd->getOutputFileBase(),
......
......@@ -1388,7 +1388,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
addType();
g_name+=yytext;
}
<Body>"("{B}*("*"{B}*)*{SCOPENAME}*{B}*")"/{B}* { // (*p)->func()
<Body>"("{B}*("*"{B}*)+{SCOPENAME}*{B}*")"/{B}* { // (*p)->func() but not "if (p) ..."
g_code->codify(yytext);
int s=0;while (s<yyleng && !isId(yytext[s])) s++;
int e=yyleng-1;while (e>=0 && !isId(yytext[e])) e--;
......@@ -2085,7 +2085,11 @@ void parseCode(BaseCodeDocInterface &od,const char *className,const QCString &s,
return;
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
// int codeYYwrap() { return 1 ; }
void codeYYdummy() { yy_flex_realloc(0,0); }
}
#else
#error "You seem to be using a version of flex newer than 2.5.4. These are currently incompatible with 2.5.4, and do NOT work with doxygen! Please use version 2.5.4 or expect things to be parsed wrongly! A bug report has been submitted (#732132)."
#endif
......@@ -25,10 +25,13 @@
#include "bufstr.h"
#include "debug.h"
#include "message.h"
#include "config.h"
static BufStr *g_inBuf;
static BufStr *g_outBuf;
static int g_inBufPos;
static int g_col;
static int g_blockHeadCol;
static void replaceCommentMarker(const char *s,int len)
{
......@@ -59,9 +62,35 @@ static void replaceCommentMarker(const char *s,int len)
g_outBuf->addArray(p,len-(p-s));
}
static inline int computeIndent(const char *s)
{
int col=0;
static int tabSize=Config_getInt("TAB_SIZE");
const char *p=s;
char c;
while ((c=*p++))
{
if (c==' ') col++;
else if (c=='\t') col+=tabSize-(col%tabSize);
else break;
}
return col;
}
static inline void copyToOutput(const char *s,int len)
{
g_outBuf->addArray(s,len);
int i;
static int tabSize=Config_getInt("TAB_SIZE");
for (i=0;i<len;i++)
{
switch (s[i])
{
case '\n': g_col=0; break;
case '\t': g_col+=tabSize-(g_col%tabSize); break;
default: g_col++; break;
}
}
}
#undef YY_INPUT
......@@ -76,10 +105,22 @@ static int yyread(char *buf,int max_size)
return bytesToCopy;
}
#define replaceComment(offset) \
int i=computeIndent(&yytext[offset]); \
if (i==g_blockHeadCol) \
{ \
replaceCommentMarker(yytext,yyleng); \
} \
else \
{ \
copyToOutput(" */",3); \
int i;for (i=yyleng-1;i>=0;i--) unput(yytext[i]); \
BEGIN(Scan); \
} \
%}
%option noyywrap
%option nounput
%x Scan
%x SkipString
......@@ -99,18 +140,20 @@ static int yyread(char *buf,int max_size)
<Scan>\n { /* new line */
copyToOutput(yytext,yyleng);
}
<Scan>("//!"|"///").*\n/[ \t]*"//"[\/!][^\/] { /* start C++ style special comment block */
<Scan>("//!"|"///").*/\n[ \t]*"//"[\/!][^\/] { /* start C++ style special comment block */
int i=3;
if (yytext[2]=='/')
{
while (i<yyleng && yytext[i]=='/') i++;
}
g_blockHeadCol=g_col;
copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i);
BEGIN(SComment);
}
<Scan>"//##Documentation".*\n { /* Start of Rational Rose ANSI C++ comment block */
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
int i=17; //=strlen("//##Documentation");
g_blockHeadCol=g_col;
copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i);
BEGIN(SComment);
......@@ -169,28 +212,28 @@ static int yyread(char *buf,int max_size)
BEGIN(Scan);
}
<SComment>^[ \t]*"///"[\/]*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(0);
}
<SComment>\n[ \t]*"///"[\/]*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(1);
}
<SComment>^[ \t]*"///"[^\/\n].*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(0);
}
<SComment>\n[ \t]*"///"[^\/\n].*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(1);
}
<SComment>^[ \t]*"//!".*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(0);
}
<SComment>\n[ \t]*"//!".*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(1);
}
<SComment>^[ \t]*"//##".*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(0);
}
<SComment>\n[ \t]*"//##".*/\n {
replaceCommentMarker(yytext,yyleng);
replaceComment(1);
}
<SComment>\n { /* end of special comment */
copyToOutput(" */",3);
......@@ -205,6 +248,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf)
g_inBuf = inBuf;
g_outBuf = outBuf;
g_inBufPos = 0;
g_col = 0;
BEGIN(Scan);
yylex();
if (Debug::isFlagSet(Debug::CommentCnv))
......@@ -214,7 +258,9 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf)
}
//----------------------------------------------------------------------------
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
void commentcnvYYdummy() { yy_flex_realloc(0,0); }
}
#endif
......@@ -65,7 +65,6 @@ void config_warn(const char *fmt, ...)
#define MAX_INCLUDE_DEPTH 10
#define YY_NEVER_INTERACTIVE 1
#define YY_NO_UNPUT
/* -----------------------------------------------------------------
*/
......@@ -410,6 +409,7 @@ static void readIncludeFile(const char *incName)
%}
%option nounput
%option noyywrap
%x Start
......@@ -2713,6 +2713,6 @@ bool Config::parse(const char *fn)
return TRUE;
}
//extern "C" { // some bogus code to keep the compiler happy
// int configYYwrap() { return 1 ; }
//}
extern "C" { // some bogus code to keep the compiler happy
//int configYYwrap() { return 1 ; }
}
......@@ -49,6 +49,8 @@ static int yyread(char *buf,int max_size)
%}
%option nounput
%%
"?" { return TOK_QUESTIONMARK; }
......
......@@ -29,9 +29,6 @@
#include "util.h"
#include "message.h"
#define YY_NO_UNPUT
/* -----------------------------------------------------------------
*
* statics
......@@ -97,6 +94,7 @@ static int yyread(char *buf,int max_size)
B [ \t]
ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+)
%option nounput
%option noyywrap
%x Start
......
......@@ -409,6 +409,9 @@ void stringToArgumentList(const char *argsString,ArgumentList* &al)
//printf("stringToArgumentList(%s) result=%s\n",argsString,argListToString(al).data());
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
void defargsYYdummy() { yy_flex_realloc(0,0); }
}
#endif
......@@ -1923,38 +1923,40 @@ void DocImage::parse()
{
case TK_COMMAND:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Illegal command %s as part of a \\image",
g_token->name.data());
g_token->name.data());
break;
case TK_SYMBOL:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported symbol %s found",
g_token->name.data());
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unsupported symbol %s found",
g_token->name.data());
break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected token %s",
tokToString(tok));
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected token %s",
tokToString(tok));
break;
}
}
}
tok=doctokenizerYYlex();
while (tok==TK_WORD) // there are values following the title
if (!m_children.isEmpty())
{
if (g_token->name=="width")
{
m_width=g_token->chars;
}
else if (g_token->name=="height")
{
m_height=g_token->chars;
}
else
tok=doctokenizerYYlex();
while (tok==TK_WORD) // there are values following the title
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unknown option %s after image title",
if (g_token->name=="width")
{
m_width=g_token->chars;
}
else if (g_token->name=="height")
{
m_height=g_token->chars;
}
else
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unknown option %s after image title",
g_token->name.data());
}
tok=doctokenizerYYlex();
}
tok=doctokenizerYYlex();
}
ASSERT(tok==0);
doctokenizerYYsetStatePara();
handlePendingStyleCommands(this,m_children);
......
......@@ -917,6 +917,9 @@ void doctokenizerYYsetInsidePre(bool b)
g_insidePre = b;
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
void doctokenizerYYdummy() { yy_flex_realloc(0,0); }
}
#endif
This diff is collapsed.
......@@ -275,8 +275,6 @@ void HtmlDocVisitor::visit(DocFormula *f)
m_t << " src=\"" << f->name() << ".png\">";
if (bDisplay)
m_t << endl << "<p>" << endl;
else
m_t << " ";
}
void HtmlDocVisitor::visit(DocIndexEntry *)
......
......@@ -88,6 +88,9 @@ static const char *defaultStyleSheet =
" margin-top : 2px; \n"
" margin-bottom : 2px \n"
"}\n"
"TR.memlist {\n"
" background-color: #f0f0f0; \n"
"}\n"
"p.formulaDsp { text-align: center; }\n"
"img.formulaDsp { }\n"
"img.formulaInl { vertical-align: middle; }\n"
......
......@@ -2285,7 +2285,9 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
/* Some groups should appear twice under different parent-groups.
* That is why we should not check if it was visited
*/
if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0))
if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0) &&
(!gd->isReference() || Config_getBool("EXTERNAL_GROUPS")) // hide external groups by default
)
{
//printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info
......
......@@ -65,7 +65,6 @@ HEADERS = bufstr.h \
namespacedef.h \
outputgen.h \
outputlist.h \
page.h \
pagedef.h \
perlmodgen.h \
pngenc.h \
......
......@@ -1897,6 +1897,7 @@ void MemberDef::writeEnumDeclaration(OutputList &typeDecl,
if (numVisibleEnumValues>0)
{
uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE");
if (enumValuesPerLine==0) enumValuesPerLine=1;
typeDecl.docify("{ ");
if (fmdl)
{
......
......@@ -413,6 +413,15 @@ void MemberList::addListReferences(Definition *def)
if (md->getGroupDef()==0 || def->definitionType()==Definition::TypeGroup)
{
md->addListReference(def);
if (md->memberType()==MemberDef::Enumeration && md->enumFieldList())
{
MemberListIterator vmli(*md->enumFieldList());
MemberDef *vmd;
for ( ; (vmd=vmli.current()) ; ++vmli)
{
vmd->addListReference(def);
}
}
}
}
if (memberGroupList)
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2003 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#if 0
#include "sortdict.h"
#include "config.h"
#include "docparser.h"
#include "section.h"
#include "doxygen.h"
class PageInfo
{
public:
PageInfo(const char *f, int l,const char *n,const char *d,const char *t) :
defFileName(f), defLine(l), name(n),
doc(d), title(t), context(0), xrefListItems(0),m_inGroup(0)
{
sectionDict = new SectionDict(17);
}
~PageInfo()
{
delete sectionDict;
}
// where the page definition was found
QCString defFileName;
int defLine;
// contents of the page
QCString name;
QCString doc;
QCString title;
// external reference? if so then this is the tag file name
QCString reference;
QCString fileName;
// class, file or namespace in which the page was found
Definition *context;
// functions to get a uniform interface with Definitions
QCString getOutputFileBase() const { return fileName; }
bool isReference() const { return !reference.isEmpty(); }
QCString getReference() const { return reference; }
//void addSections(QList<QCString> *anchorList)
//{
// if (anchorList)
// {
// QCString *s=anchorList->first();
// while (s)
// {
// SectionInfo *si=0;
// if (!s->isEmpty() && (si=Doxygen::sectionDict[*s]))
// {
// //printf("Add section `%s' to definition `%s'\n",
// // si->label.data(),n.data());
// if (sectionDict==0)
// {
// sectionDict = new SectionDict(17);
// }
// if (sectionDict->find(*s)==0)
// {
// sectionDict->insert(*s,si);
// }
// si->pageRef = this;
// si->fileName = fileName;
// }
// s=anchorList->next();
// }
// }
//}
void findSectionsInDocumentation()
{
docFindSections(doc,this,0,0,defFileName);
}
void writeDocAnchorsToTagFile()
{
if (!Config_getString("GENERATE_TAGFILE").isEmpty() && sectionDict)
{
QDictIterator<SectionInfo> sdi(*sectionDict);
SectionInfo *si;
for (;(si=sdi.current());++sdi)
{
if (!si->generated)
{
Doxygen::tagFile << " <docanchor>" << si->label << "</docanchor>" << endl;
}
}
}
}
void makePartOfGroup(GroupDef *gd) { m_inGroup = gd; }
GroupDef *getGroupDef() const { return m_inGroup; }
// is this page part of a group
SectionDict *sectionDict;
QList<ListItemInfo> *xrefListItems;
private:
GroupDef *m_inGroup;
};
class PageSDict : public SDict<PageInfo>
{
public:
PageSDict(int size) : SDict<PageInfo>(size) {}
virtual ~PageSDict() {}
int compareItems(GCI i1,GCI i2)
{
return stricmp(((PageInfo *)i1)->name,((PageInfo *)i2)->name);
}
};
#endif
......@@ -17,11 +17,6 @@
#include "definition.h"
#include "sortdict.h"
//#include "config.h"
//#include "docparser.h"
//#include "section.h"
//#include "doxygen.h"
class PageDef : public Definition
{
......@@ -44,97 +39,7 @@ class PageDef : public Definition
QCString title() const { return m_title; }
GroupDef *getGroupDef() const;
void setFileName(const char *name) { m_fileName = name; }
#if 0
bool isReference() const { return !reference.isEmpty(); }
QCString getReference() const { return reference; }
PageInfo(const char *f, int l,const char *n,const char *d,const char *t) :
defFileName(f), defLine(l), name(n),
doc(d), title(t), context(0), xrefListItems(0),m_inGroup(0)
{
sectionDict = new SectionDict(17);
}
~PageInfo()
{
delete sectionDict;
}
// where the page definition was found
QCString defFileName;
int defLine;
// contents of the page
QCString name;
QCString doc;
QCString title;
// external reference? if so then this is the tag file name
QCString reference;
QCString fileName;
// class, file or namespace in which the page was found
Definition *context;
//void addSections(QList<QCString> *anchorList)
//{
// if (anchorList)
// {
// QCString *s=anchorList->first();
// while (s)
// {
// SectionInfo *si=0;
// if (!s->isEmpty() && (si=Doxygen::sectionDict[*s]))
// {
// //printf("Add section `%s' to definition `%s'\n",
// // si->label.data(),n.data());
// if (sectionDict==0)
// {
// sectionDict = new SectionDict(17);
// }
// if (sectionDict->find(*s)==0)
// {
// sectionDict->insert(*s,si);
// }
// si->pageRef = this;
// si->fileName = fileName;
// }
// s=anchorList->next();
// }
// }
//}
void findSectionsInDocumentation()
{
docFindSections(doc,this,0,0,defFileName);
}
void writeDocAnchorsToTagFile()
{
if (!Config_getString("GENERATE_TAGFILE").isEmpty() && sectionDict)
{
QDictIterator<SectionInfo> sdi(*sectionDict);
SectionInfo *si;
for (;(si=sdi.current());++sdi)
{
if (!si->generated)
{
Doxygen::tagFile << " <docanchor>" << si->label << "</docanchor>" << endl;
}
}
}
}
void makePartOfGroup(GroupDef *gd) { m_inGroup = gd; }
GroupDef *getGroupDef() const { return m_inGroup; }
// is this page part of a group
SectionDict *sectionDict;
QList<ListItemInfo> *xrefListItems;
private:
GroupDef *m_inGroup;
#endif
private:
QCString m_fileName;
QCString m_title;
......
......@@ -354,6 +354,12 @@ static void processConcatOperators(QCString &expr)
//printf("processConcatOperators: out=`%s'\n",expr.data());
}
static void yyunput (int c,char *buf_ptr );
static void returnCharToStream(char c)
{
unput(c);
}
/*! replaces the function macro \a def whose argument list starts at
* \a pos in expression \a expr.
* Notice that this routine may scan beyond the \a expr string if needed.
......@@ -1900,7 +1906,9 @@ static int getCurrentChar(const QCString &expr,QCString *rest,uint pos)
}
else
{
int cc=yyinput();unput(cc);
int cc=yyinput();
returnCharToStream(cc);
//unput((char)cc);
//printf("%c=yyinput()\n",cc);
return cc;
}
......@@ -1921,7 +1929,8 @@ static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c)
}
else
{
unput(c);
//unput(c);
returnCharToStream(c);
}
//printf("result: unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
}
......@@ -2114,7 +2123,10 @@ void preprocessFile(const char *fileName,BufStr &output)
}
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
// int preYYwrap() { return 1 ; }
void preYYdummy() { yy_flex_realloc(0,0); }
}
#endif
......@@ -32,10 +32,8 @@ RefList::RefList(const char *listName,
m_dictIterator = 0;
m_id = 0;
m_listName = listName;
//m_optionName = optionName;
m_pageTitle = pageTitle;
m_secTitle = secTitle;
/*m_type = type;*/
}
/*! Destroy the todo list. Currently not called! */
......@@ -95,11 +93,6 @@ QCString RefList::listName() const
return m_listName;
}
//QCString RefList::optionName() const
//{
// return m_optionName;
//}
QCString RefList::pageTitle() const
{
return m_pageTitle;
......@@ -110,10 +103,3 @@ QCString RefList::sectionTitle() const
return m_secTitle;
}
//BaseOutputDocInterface::SectionTypes RefList::sectionType() const
//{
// return m_type;
//}
......@@ -50,26 +50,21 @@ class RefList
RefItem *getFirstRefItem();
RefItem *getNextRefItem();
QCString listName() const;
//QCString optionName() const;
QCString pageTitle() const;
QCString sectionTitle() const;
//BaseOutputDocInterface::SectionTypes sectionType() const;
RefList(const char *listName,
const char *pageTitle,const char *secTitle
/*,BaseOutputDocInterface::SectionTypes type*/
);
~RefList();
private:
int m_id;
QCString m_listName;
//QCString m_optionName;
QCString m_pageTitle;
QCString m_secTitle;
QIntDict<RefItem> *m_dict;
QIntDictIterator<RefItem> *m_dictIterator;
//BaseOutputDocInterface::SectionTypes m_type;
};
#endif
......@@ -1884,9 +1884,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
/*
<FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); }
*/
<ReadBody,ReadNSBody>[^\r\n\#{}"'/]* { current->program += yytext ; }
<ReadBody,ReadNSBody>"//".* { current->program += yytext ; }
<ReadBody,ReadNSBody>"#".* { if (! insidePHP)
<ReadBody,ReadNSBody>[^\r\n\#{}"'/]* { current->program += yytext ; }
<ReadBody,ReadNSBody>"//".* { current->program += yytext ; }
<ReadBody,ReadNSBody>"#".* { if (! insidePHP)
REJECT;
current->program += yytext ;
}
......@@ -4454,14 +4454,16 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<LineDoc>[\n\r]+{B}*"//"[!/] { lineCount(); }
<LineDoc>\n {
yyLineNr++;
if (!Config_getBool("HIDE_IN_BODY_DOCS") &&
lastDocContext==SkipCurly) // inside body
if (lastDocContext==SkipCurly) // inside body
{
if (!previous->doc.isEmpty())
if (!Config_getBool("HIDE_IN_BODY_DOCS"))
{
previous->doc+="<p>";
if (!previous->doc.isEmpty())
{
previous->doc+="<p>";
}
previous->doc += current->brief;
}
previous->doc += current->brief;
current->brief.resize(0);
}
BEGIN( lastDocContext );
......@@ -5003,7 +5005,10 @@ void parseMain(Entry *rt)
parseCompounds(rt);
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
//----------------------------------------------------------------------------
extern "C" { // some bogus code to keep the compiler happy
void scannerYYdummy() { yy_flex_realloc(0,0); }
}
#endif
......@@ -895,6 +895,10 @@ void TagFileParser::buildMemberList(Entry *ce,QList<TagMemberInfo> &members)
me->virt = tmi->virt;
me->stat = tmi->isStatic;
me->fileName = ce->fileName;
if (ce->section == Entry::GROUPDOC_SEC)
{
me->groups->append(new Grouping(ce->name,Grouping::GROUPING_INGROUP));
}
addDocAnchors(me,tmi->docAnchors);
TagInfo *ti = new TagInfo;
ti->tagName = m_tagName;
......@@ -1113,8 +1117,8 @@ void TagFileParser::buildLists(Entry *root)
}
// build group list, but only if config file says to include it
if (Config_getBool("EXTERNAL_GROUPS"))
{
//if (Config_getBool("EXTERNAL_GROUPS"))
//{
TagGroupInfo *tgi = m_tagFileGroups.first();
while (tgi)
{
......@@ -1132,7 +1136,7 @@ void TagFileParser::buildLists(Entry *root)
root->addSubEntry(ge);
tgi = m_tagFileGroups.next();
}
}
//}
// build page list
TagPageInfo *tpi = m_tagFilePages.first();
......
......@@ -13,26 +13,21 @@
* Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@icmc.usp.br>
* http://www.icmc.sc.usp.br/~chino
* Version: 1.2.19 (2002/10/15)
* Version: 1.3 (2003/05/01)
*
* History:
* 1.3:
* - Updated to Doxygen 1.3.x.
* 1.2.19:
* - Updated to Doxygen 1.2.19
* - Translation Review (Thanks to Jorge Ramos and others)
* - Small fixes in C output.
* - Latex generation support fixed (invalid package name).
* 1.2.18 (2002/07/30):
* - Updated to Doxygen 1.2.18
* 1.2.17 (2002/07/10):
* - Updated to Doxygen 1.2.17.
* 1.2.13.2 (2002/05/10):
* - Latex Babel package language name fixed.
* - "Estrura" bug identified and fixed (Thanks to Jorge Ramos).
*/
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class TranslatorBrazilian: public TranslatorAdapter_1_3
class TranslatorBrazilian: public Translator
{
public:
......@@ -1422,5 +1417,48 @@ class TranslatorBrazilian: public TranslatorAdapter_1_3
return "Eventos";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return "Tipos do Pacote";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return "Funções do Pacote";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return "Funções Estáticas do Pacote";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return "Atributos do Pacote";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return "Atributos Estáticos do Pacote";
}
};
#endif
......@@ -147,6 +147,9 @@
// 2002/10/15
// - The new trEvents() and trEventDocumentation() implemented.
//
// 2003/04/28
// - The five new methods "since 1.3" implemented.
//
// Todo
// ----
// - The trReimplementedFromList() should pass the kind of the
......@@ -165,8 +168,7 @@
// Windows version. The version which does not call the function is
// probably slightly faster.
class TranslatorCzech : public TranslatorAdapter_1_3
class TranslatorCzech : public Translator
{
private:
/*! The decode() inline assumes the source written in the
......@@ -1553,12 +1555,51 @@ class TranslatorCzech : public TranslatorAdapter_1_3
*/
virtual QCString trEvents()
{
return "Události";
return decode("Události");
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return "Dokumentace událostí";
return decode("Dokumentace událostí");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return decode("Typy v balíku");
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return decode("Funkce v balíku");
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return decode("Statické funkce v balíku");
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return decode("Atributy balíku");
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return decode("Statické atributy balíku");
}
};
......
......@@ -73,13 +73,17 @@
// - changed "Datenelemente" to "Methoden" in
// tr{,Static}{Public,Protected,Private}Members
//
// 2003/04/28 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated for "new since 1.3" version
// - translated Java package to Paket
//
// Todo:
// - see FIXME
#ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H
class TranslatorGerman : public TranslatorAdapter_1_3
class TranslatorGerman : public Translator
{
public:
......@@ -1225,31 +1229,31 @@ class TranslatorGerman : public TranslatorAdapter_1_3
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
return (QCString)"Package "+name;
return (QCString)"Paket "+name;
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
return "Package Liste";
return "Paketliste";
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
return "Hier folgen die packages mit einer Kurzbeschreibung (wenn verfügbar):";
return "Hier folgen die Pakete mit einer Kurzbeschreibung (wenn verfügbar):";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return "Packages";
return "Pakete";
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Package Dokumentation";
return "Paketdokumentation";
}
/*! Text shown before a multi-line define */
......@@ -1477,6 +1481,49 @@ class TranslatorGerman : public TranslatorAdapter_1_3
return "Ereignisdokumentation";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return "Pakettypen";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return "Paketfunktionen";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return "Statische Paketfunktionen";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return "Paketattribute";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return "Statische Paketattribute";
}
};
#endif
This diff is collapsed.
......@@ -19,6 +19,7 @@
*
* Revision history
*
* 2003/04: translated new items used since version 1.3
* 2002/11: translated new items used since version 1.2.18
* 2002/08: translated new items used since version 1.2.17
* 2002/07: translated new items used since version 1.2.16
......@@ -67,7 +68,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
class TranslatorItalian : public TranslatorAdapter_1_3
class TranslatorItalian : public Translator
{
public:
......@@ -1389,6 +1390,46 @@ class TranslatorItalian : public TranslatorAdapter_1_3
return "Documentazione degli eventi";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return "Tipi con visibilità di package";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return "Funczioni con visibilità di package";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return "Funzioni statiche con visibilità di package";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return "Attributi con visibilità di package";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return "Attributi statici con visibilità di package";
}
};
#endif
......@@ -823,11 +823,12 @@ void linkifyText(const TextGeneratorIntf &out,const char *scName,const char *nam
do // for each scope (starting with full scope and going to empty scope)
{
QCString fullName = word;
QCString prefix;
replaceNamespaceAliases(fullName,fullName.length());
if (scopeOffset>0)
{
QCString prefix = scopeName.left(scopeOffset);
prefix = scopeName.left(scopeOffset);
replaceNamespaceAliases(prefix,scopeOffset);
fullName.prepend(prefix+"::");
}
......@@ -2518,7 +2519,7 @@ bool resolveRef(/* in */ const char *scName,
GroupDef *gd = 0;
// check if nameStr is a member or global.
//printf("getDefs(scope=%s,name=%s,args=%s\n",scopeStr.data(),nameStr.data(),argsStr.data());
//printf("getDefs(scope=%s,name=%s,args=%s)\n",scopeStr.data(),nameStr.data(),argsStr.data());
if (getDefs(scopeStr,nameStr,argsStr,
md,cd,fd,nd,gd,
scopePos==0 && !memberScopeFirst,
......@@ -3192,6 +3193,12 @@ QCString stripScope(const char *name)
}
/*! Convert nibble (range 0..15) to hex char */
static char nibbleToHex(int n)
{
return (n < 10) ? ('0'+n) : ('a'+n-10);
}
/*! Converts a string to an XML-encoded string */
QCString convertToXML(const char *s)
{
......@@ -3208,7 +3215,18 @@ QCString convertToXML(const char *s)
case '&': result+="&amp;"; break;
case '\'': result+="&apos;"; break;
case '"': result+="&quot;"; break;
default: result+=c; break;
default:
if (c<0)
{
result+=(QCString)"&#x" +
nibbleToHex((((uchar)c)>>4)&0xf)+
nibbleToHex(c&0xf)+";";
}
else
{
result+=c;
}
break;
}
}
return result;
......
......@@ -25,7 +25,7 @@ CFG=Doxygen - Win32 Debug
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "Doxygen"
# PROP Scc_LocalPath "."
CPP=xicl6.exe
CPP=cwcl.exe
RSC=rc.exe
!IF "$(CFG)" == "Doxygen - Win32 Release"
......@@ -49,7 +49,7 @@ RSC=rc.exe
BSC32=snBsc.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=cwlink.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 qtools.lib libpng.lib zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"Release"
......@@ -74,7 +74,7 @@ LINK32=xilink6.exe
BSC32=snBsc.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=cwlink.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 qtools.lib libpng.lib zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"Debug"
# SUBTRACT LINK32 /nodefaultlib
......@@ -282,6 +282,10 @@ SOURCE=..\src\packagedef.cpp
# End Source File
# Begin Source File
SOURCE=..\src\pagedef.cpp
# End Source File
# Begin Source File
SOURCE=..\src\perlmodgen.cpp
# End Source File
# Begin Source File
......@@ -550,6 +554,10 @@ SOURCE=..\src\page.h
# End Source File
# Begin Source File
SOURCE=..\src\pagedef.h
# End Source File
# Begin Source File
SOURCE=..\src\perlmodgen.h
# End Source File
# Begin Source File
......
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