Commit 6e8975ab authored by dimitri's avatar dimitri

Release-1.3.8-20040803

parent e305d804
...@@ -166,7 +166,7 @@ MAN_LINKS = NO ...@@ -166,7 +166,7 @@ MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = YES GENERATE_XML = NO
XML_OUTPUT = xml XML_OUTPUT = xml
XML_SCHEMA = XML_SCHEMA =
XML_DTD = XML_DTD =
......
DOXYGEN Version 1.3.8 DOXYGEN Version 1.3.8-20040803
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (25 July 2004) Dimitri van Heesch (03 August 2004)
...@@ -13,6 +13,7 @@ irix-g++ ...@@ -13,6 +13,7 @@ irix-g++
irix-n32 irix-n32
linux-g++ linux-g++
macosx-c++ macosx-c++
m68k-atari-mint-g++
netbsd-g++ netbsd-g++
openbsd-g++ openbsd-g++
osf1-cxx osf1-cxx
......
DOXYGEN Version 1.3.8 DOXYGEN Version 1.3.8_20040803
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (25 July 2004) Dimitri van Heesch (dimitri@stack.nl) (03 August 2004)
1.3.8 1.3.8-20040803
...@@ -850,7 +850,7 @@ void MainWidget::launchWizard() ...@@ -850,7 +850,7 @@ void MainWidget::launchWizard()
// step1 // step1
wizard.setProjectName(Config_getString("PROJECT_NAME")); wizard.setProjectName(Config_getString("PROJECT_NAME"));
wizard.setProjectNumber(Config_getString("PROJECT_NUMBER")); wizard.setProjectNumber(Config_getString("PROJECT_NUMBER"));
if (Config_getList("INPUT").count()==1) if (Config_getList("INPUT").count()>0)
{ {
QString dirName=Config_getList("INPUT").getFirst(); QString dirName=Config_getList("INPUT").getFirst();
QFileInfo fi(dirName); QFileInfo fi(dirName);
...@@ -1109,6 +1109,8 @@ void MainWidget::loadConfigFile() ...@@ -1109,6 +1109,8 @@ void MainWidget::loadConfigFile()
if (!fn.isEmpty()) if (!fn.isEmpty())
{ {
loadConfigFromFile(fn); loadConfigFromFile(fn);
// set current dir to where the config file is located
QDir::setCurrent(QFileInfo(fn).dirPath(TRUE));
} }
} }
......
...@@ -194,6 +194,9 @@ if test -z "$f_platform"; then ...@@ -194,6 +194,9 @@ if test -z "$f_platform"; then
Cygwin:*) Cygwin:*)
f_platform=win32-g++ f_platform=win32-g++
;; ;;
*MiNT:*)
f_platform=m68k-atari-mint-g++
;;
*) *)
echo echo
echo "Your platform was not recognised by this configure script" echo "Your platform was not recognised by this configure script"
...@@ -431,6 +434,13 @@ HAVE_DOT = $f_dot ...@@ -431,6 +434,13 @@ HAVE_DOT = $f_dot
EOF EOF
fi fi
if test "$f_platform" = "m68k-atari-mint-g++"; then
cat >> .makeconfig <<EOF
TMAKE += -unix
EOF
fi
touch .tmakeconfig touch .tmakeconfig
if test "$f_shared" = NO; then if test "$f_shared" = NO; then
if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then
...@@ -526,8 +536,7 @@ done ...@@ -526,8 +536,7 @@ done
echo -n " Generating src/lang_cfg.h..." echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>); echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l; chomp @l;
@allowed=(NL,SE,CZ,FR,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR, @allowed=(split(/,/,"NL,SE,CZ,FR,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR,DK,SK,UA,GR,TW,SR,CA,LT,ZA"));
DK,SK,UA,GR,TW,SR,CA,LT,ZA);
foreach my $elem (@l){ foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/; $elem =~ tr/a-z/A-Z/;
$r=0; $r=0;
......
...@@ -33,10 +33,9 @@ CASE_SENSE_NAMES = NO ...@@ -33,10 +33,9 @@ CASE_SENSE_NAMES = NO
IMAGE_PATH = . IMAGE_PATH = .
INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \ INPUT = index.doc install.doc starting.doc docblocks.doc lists.doc \
grouping.doc formulas.doc diagrams.doc preprocessing.doc \ grouping.doc formulas.doc diagrams.doc preprocessing.doc \
external.doc faq.doc trouble.doc history.doc features.doc \ autolink.doc output.doc external.doc faq.doc trouble.doc history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc \ doxygen_usage.doc doxytag_usage.doc \
doxywizard_usage.doc \ doxywizard_usage.doc installdox_usage.doc \
installdox_usage.doc output.doc autolink.doc \
config.doc commands.doc htmlcmds.doc language.doc \ config.doc commands.doc htmlcmds.doc language.doc \
perlmod.doc perlmod_tree.doc arch.doc perlmod.doc perlmod_tree.doc arch.doc
FILE_PATTERNS = *.cpp *.h *.doc FILE_PATTERNS = *.cpp *.h *.doc
......
...@@ -54,6 +54,8 @@ Written by Dimitri van Heesch\\[2ex] ...@@ -54,6 +54,8 @@ Written by Dimitri van Heesch\\[2ex]
\input{formulas} \input{formulas}
\input{diagrams} \input{diagrams}
\input{preprocessing} \input{preprocessing}
\input{autolink}
\input{output}
\input{external} \input{external}
\input{faq} \input{faq}
\input{trouble} \input{trouble}
...@@ -64,8 +66,6 @@ Written by Dimitri van Heesch\\[2ex] ...@@ -64,8 +66,6 @@ Written by Dimitri van Heesch\\[2ex]
\input{doxytag_usage} \input{doxytag_usage}
\input{doxywizard_usage} \input{doxywizard_usage}
\input{installdox_usage} \input{installdox_usage}
\input{output}
\input{autolink}
\input{config} \input{config}
\input{commands} \input{commands}
\input{htmlcmds} \input{htmlcmds}
......
...@@ -71,6 +71,10 @@ The first part forms a user manual: ...@@ -71,6 +71,10 @@ The first part forms a user manual:
<li>Section \ref formulas shows how to insert formulas in the documentation. <li>Section \ref formulas shows how to insert formulas in the documentation.
<li>Section \ref diagrams describes the diagrams and graphs that doxygen can generate. <li>Section \ref diagrams describes the diagrams and graphs that doxygen can generate.
<li>Section \ref preprocessing explains how doxygen deals with macro definitions. <li>Section \ref preprocessing explains how doxygen deals with macro definitions.
<li>Section \ref autolink shows how to put links to files, classes,
and members in the documentation.
<li>Section \ref output shows how to generate the various output formats
supported by doxygen.
<li>Section \ref external explains how to let doxygen create links to externally generated documentation. <li>Section \ref external explains how to let doxygen create links to externally generated documentation.
<li>Section \ref faq gives answers to frequently asked questions. <li>Section \ref faq gives answers to frequently asked questions.
<li>Section \ref trouble tells you what to do when you have problems. <li>Section \ref trouble tells you what to do when you have problems.
...@@ -87,10 +91,6 @@ The second part forms a reference manual: ...@@ -87,10 +91,6 @@ The second part forms a reference manual:
<li>Section \ref doxywizard_usage shows how to use the \c doxywizard program. <li>Section \ref doxywizard_usage shows how to use the \c doxywizard program.
<li>Section \ref installdox_usage shows how to use the \c installdox <li>Section \ref installdox_usage shows how to use the \c installdox
script that is generated by doxygen if you use tag files. script that is generated by doxygen if you use tag files.
<li>Section \ref output shows how to generate the various output formats
supported by doxygen.
<li>Section \ref autolink shows how to put links to files, classes,
and members in the documentation.
<li>Section \ref config shows how to fine-tune doxygen, so it <li>Section \ref config shows how to fine-tune doxygen, so it
generates the documentation you want. generates the documentation you want.
<li>Section \ref commands shows an overview of the special commands that can be <li>Section \ref commands shows an overview of the special commands that can be
......
...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -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 than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile). configuration file (with default name and known as Doxyfile).
Currently (version 1.3.7-20040719), 30 languages Currently (version 1.3.8), 30 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French, Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<td>Chinese</td> <td>Chinese</td>
<td>Li Daobing<br>Wei Liu</td> <td>Li Daobing<br>Wei Liu</td>
<td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td> <td>lidaobing at gmail dot com<br>liuwei at asiainfo dot com</td>
<td>1.3.08</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Chinese Traditional</td> <td>Chinese Traditional</td>
...@@ -126,7 +126,7 @@ when the translator was updated. ...@@ -126,7 +126,7 @@ when the translator was updated.
<td>German</td> <td>German</td>
<td>Jens Seidel</td> <td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td> <td>jensseidel at users dot sf dot net</td>
<td>1.3.8</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Greek</td> <td>Greek</td>
...@@ -234,7 +234,7 @@ when the translator was updated. ...@@ -234,7 +234,7 @@ when the translator was updated.
<td>Swedish</td> <td>Swedish</td>
<td>Mikael Hallin</td> <td>Mikael Hallin</td>
<td>mikaelhallin at yahoo dot se</td> <td>mikaelhallin at yahoo dot se</td>
<td>1.3.3</td> <td>1.3.8</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Ukrainian</td> <td>Ukrainian</td>
...@@ -263,7 +263,7 @@ when the translator was updated. ...@@ -263,7 +263,7 @@ when the translator was updated.
\hline \hline
Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\ Catalan & Albert Mora & {\tt\tiny amora@iua.upf.es} & 1.2.17 \\
\hline \hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.3.08 \\ Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\
~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\ ~ & Wei Liu & {\tt\tiny liuwei@asiainfo.com} & ~ \\
\hline \hline
Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\ Chinese Traditional & Daniel YC Lin & {\tt\tiny daniel@twpda.com} & 1.3.8 \\
...@@ -283,7 +283,7 @@ when the translator was updated. ...@@ -283,7 +283,7 @@ when the translator was updated.
\hline \hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\ French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.3.8 \\
\hline \hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.3.8 \\ German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & up-to-date \\
\hline \hline
Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\ Greek & Harry Kalogirou & {\tt\tiny harkal@rainbow.cs.unipi.gr} & 1.2.11 \\
\hline \hline
...@@ -326,7 +326,7 @@ when the translator was updated. ...@@ -326,7 +326,7 @@ when the translator was updated.
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\ Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline \hline
Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.3 \\ Swedish & Mikael Hallin & {\tt\tiny mikaelhallin@yahoo.se} & 1.3.8 \\
\hline \hline
Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@gmx.de} & 1.2.11 \\ Ukrainian & Olexij Tkatchenko & {\tt\tiny olexij.tkatchenko@gmx.de} & 1.2.11 \\
\hline \hline
......
...@@ -790,16 +790,18 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) ...@@ -790,16 +790,18 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#endif #endif
#if defined(PNG_READ_sRGB_SUPPORTED) #if defined(PNG_READ_sRGB_SUPPORTED)
#undef png_abs
#define png_abs(x) (((x)>0)?(x):-(x))
if (info_ptr->valid & PNG_INFO_sRGB) if (info_ptr->valid & PNG_INFO_sRGB)
{ {
if (abs(int_x_white - 31270L) > 1000 || if (png_abs(int_x_white - 31270L) > 1000 ||
abs(int_y_white - 32900L) > 1000 || png_abs(int_y_white - 32900L) > 1000 ||
abs(int_x_red - 64000L) > 1000 || png_abs(int_x_red - 64000L) > 1000 ||
abs(int_y_red - 33000L) > 1000 || png_abs(int_y_red - 33000L) > 1000 ||
abs(int_x_green - 30000L) > 1000 || png_abs(int_x_green - 30000L) > 1000 ||
abs(int_y_green - 60000L) > 1000 || png_abs(int_y_green - 60000L) > 1000 ||
abs(int_x_blue - 15000L) > 1000 || png_abs(int_x_blue - 15000L) > 1000 ||
abs(int_y_blue - 6000L) > 1000) png_abs(int_y_blue - 6000L) > 1000)
{ {
png_warning(png_ptr, png_warning(png_ptr,
...@@ -925,15 +927,17 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) ...@@ -925,15 +927,17 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
#ifdef PNG_READ_cHRM_SUPPORTED #ifdef PNG_READ_cHRM_SUPPORTED
#ifdef PNG_FIXED_POINT_SUPPORTED #ifdef PNG_FIXED_POINT_SUPPORTED
#undef png_abs
#define png_abs(x) (((x)>0)?(x):-(x))
if (info_ptr->valid & PNG_INFO_cHRM) if (info_ptr->valid & PNG_INFO_cHRM)
if (abs(info_ptr->int_x_white - 31270L) > 1000 || if (png_abs(info_ptr->int_x_white - 31270L) > 1000 ||
abs(info_ptr->int_y_white - 32900L) > 1000 || png_abs(info_ptr->int_y_white - 32900L) > 1000 ||
abs(info_ptr->int_x_red - 64000L) > 1000 || png_abs(info_ptr->int_x_red - 64000L) > 1000 ||
abs(info_ptr->int_y_red - 33000L) > 1000 || png_abs(info_ptr->int_y_red - 33000L) > 1000 ||
abs(info_ptr->int_x_green - 30000L) > 1000 || png_abs(info_ptr->int_x_green - 30000L) > 1000 ||
abs(info_ptr->int_y_green - 60000L) > 1000 || png_abs(info_ptr->int_y_green - 60000L) > 1000 ||
abs(info_ptr->int_x_blue - 15000L) > 1000 || png_abs(info_ptr->int_x_blue - 15000L) > 1000 ||
abs(info_ptr->int_y_blue - 6000L) > 1000) png_abs(info_ptr->int_y_blue - 6000L) > 1000)
{ {
png_warning(png_ptr, png_warning(png_ptr,
"Ignoring incorrect cHRM value when sRGB is also present"); "Ignoring incorrect cHRM value when sRGB is also present");
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.8 Version: 1.3.8_20040803
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -132,6 +132,8 @@ ...@@ -132,6 +132,8 @@
#define _OS_CYGWIN_ #define _OS_CYGWIN_
#elif defined(__BEOS__) #elif defined(__BEOS__)
#define _OS_BEOS_ #define _OS_BEOS_
#elif defined(__MINT__)
#define _OS_MINT_
#else #else
#error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com" #error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
#endif #endif
......
...@@ -119,6 +119,8 @@ ...@@ -119,6 +119,8 @@
<xsd:element name="definition" minOccurs="0" /> <xsd:element name="definition" minOccurs="0" />
<xsd:element name="argsstring" minOccurs="0" /> <xsd:element name="argsstring" minOccurs="0" />
<xsd:element name="name" /> <xsd:element name="name" />
<xsd:element name="read" minOccurs="0" />
<xsd:element name="write" minOccurs="0" />
<xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
......
...@@ -119,6 +119,8 @@ ...@@ -119,6 +119,8 @@
" <xsd:element name=\"definition\" minOccurs=\"0\" />\n" " <xsd:element name=\"definition\" minOccurs=\"0\" />\n"
" <xsd:element name=\"argsstring\" minOccurs=\"0\" />\n" " <xsd:element name=\"argsstring\" minOccurs=\"0\" />\n"
" <xsd:element name=\"name\" />\n" " <xsd:element name=\"name\" />\n"
" <xsd:element name=\"read\" minOccurs=\"0\" />\n"
" <xsd:element name=\"write\" minOccurs=\"0\" />\n"
" <xsd:element name=\"reimplements\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"reimplements\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"reimplementedby\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"reimplementedby\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"param\" type=\"paramType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"param\" type=\"paramType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
......
...@@ -667,6 +667,48 @@ static void handleInitialStyleCommands(DocPara *parent,QList<DocNode> &children) ...@@ -667,6 +667,48 @@ static void handleInitialStyleCommands(DocPara *parent,QList<DocNode> &children)
} }
} }
static int handleAHref(DocNode *parent,QList<DocNode> &children,const HtmlAttribList &tagHtmlAttribs)
{
HtmlAttribListIterator li(tagHtmlAttribs);
HtmlAttrib *opt;
int index=0;
int retval = RetVal_OK;
for (li.toFirst();(opt=li.current());++li,++index)
{
if (opt->name=="name") // <a name=label> tag
{
if (!opt->value.isEmpty())
{
DocAnchor *anc = new DocAnchor(parent,opt->value,TRUE);
children.append(anc);
break; // stop looking for other tag attribs
}
else
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: found <a> tag with name option but without value!");
}
}
else if (opt->name=="href") // <a href=url>..</a> tag
{
// copy attributes
HtmlAttribList attrList = tagHtmlAttribs;
// and remove the href attribute
bool result = attrList.remove(index);
ASSERT(result);
DocHRef *href = new DocHRef(parent,attrList,opt->value);
children.append(href);
g_insideHtmlLink=TRUE;
retval = href->parse();
g_insideHtmlLink=FALSE;
break;
}
else // unsupported option for tag a
{
}
}
return retval;
}
const char *DocStyleChange::styleString() const const char *DocStyleChange::styleString() const
{ {
switch (m_style) switch (m_style)
...@@ -1924,6 +1966,11 @@ endlink: ...@@ -1924,6 +1966,11 @@ endlink:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
DocDotFile::DocDotFile(DocNode *parent,const QString &name) :
m_parent(parent), m_name(name), m_relPath(g_relPath)
{
}
void DocDotFile::parse() void DocDotFile::parse()
{ {
g_nodeStack.push(this); g_nodeStack.push(this);
...@@ -2001,6 +2048,12 @@ void DocDotFile::parse() ...@@ -2001,6 +2048,12 @@ void DocDotFile::parse()
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
DocImage::DocImage(DocNode *parent,const HtmlAttribList &attribs,const QString &name,Type t) :
m_parent(parent), m_attribs(attribs), m_name(name),
m_type(t), m_relPath(g_relPath)
{
}
void DocImage::parse() void DocImage::parse()
{ {
g_nodeStack.push(this); g_nodeStack.push(this);
...@@ -2134,11 +2187,24 @@ int DocHtmlHeader::parse() ...@@ -2134,11 +2187,24 @@ int DocHtmlHeader::parse()
} }
goto endheader; goto endheader;
} }
else if (tagId==HTML_A)
{
if (!g_token->endTag)
{
handleAHref(this,m_children,g_token->attribs);
}
}
else if (tagId==HTML_BR)
{
DocLineBreak *lb = new DocLineBreak(this);
m_children.append(lb);
}
else else
{ {
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected html tag <%s%s> found within <h%d> context", warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected html tag <%s%s> found within <h%d> context",
g_token->endTag?"/":"",g_token->name.data(),m_level); g_token->endTag?"/":"",g_token->name.data(),m_level);
} }
} }
break; break;
case TK_SYMBOL: case TK_SYMBOL:
...@@ -4042,44 +4108,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag ...@@ -4042,44 +4108,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
} }
break; break;
case HTML_A: case HTML_A:
{ retval=handleAHref(this,m_children,tagHtmlAttribs);
HtmlAttribListIterator li(tagHtmlAttribs);
HtmlAttrib *opt;
int index=0;
for (li.toFirst();(opt=li.current());++li,++index)
{
if (opt->name=="name") // <a name=label> tag
{
if (!opt->value.isEmpty())
{
DocAnchor *anc = new DocAnchor(this,opt->value,TRUE);
m_children.append(anc);
break; // stop looking for other tag attribs
}
else
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: found <a> tag with name option but without value!");
}
}
else if (opt->name=="href") // <a href=url>..</a> tag
{
// copy attributes
HtmlAttribList attrList = tagHtmlAttribs;
// and remove the href attribute
bool result = attrList.remove(index);
ASSERT(result);
DocHRef *href = new DocHRef(this,attrList,opt->value);
m_children.append(href);
g_insideHtmlLink=TRUE;
retval = href->parse();
g_insideHtmlLink=FALSE;
break;
}
else // unsupported option for tag a
{
}
}
}
break; break;
case HTML_H1: case HTML_H1:
retval=handleHtmlHeader(tagHtmlAttribs,1); retval=handleHtmlHeader(tagHtmlAttribs,1);
...@@ -4273,6 +4302,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName) ...@@ -4273,6 +4302,7 @@ int DocPara::handleHtmlEndTag(const QString &tagName)
break; break;
default: default:
// we should not get here! // we should not get here!
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected end tag %s\n",tagName.data());
ASSERT(0); ASSERT(0);
break; break;
} }
......
...@@ -568,8 +568,7 @@ class DocImage : public CompAccept<DocImage>, public DocNode ...@@ -568,8 +568,7 @@ class DocImage : public CompAccept<DocImage>, public DocNode
{ {
public: public:
enum Type { Html, Latex, Rtf }; enum Type { Html, Latex, Rtf };
DocImage(DocNode *parent,const HtmlAttribList &attribs,const QString &name,Type t) : DocImage(DocNode *parent,const HtmlAttribList &attribs,const QString &name,Type t);
m_parent(parent), m_attribs(attribs), m_name(name), m_type(t) {}
Kind kind() const { return Kind_Image; } Kind kind() const { return Kind_Image; }
Type type() const { return m_type; } Type type() const { return m_type; }
QString name() const { return m_name; } QString name() const { return m_name; }
...@@ -577,6 +576,7 @@ class DocImage : public CompAccept<DocImage>, public DocNode ...@@ -577,6 +576,7 @@ class DocImage : public CompAccept<DocImage>, public DocNode
bool hasCaption() const { return !m_children.isEmpty(); } bool hasCaption() const { return !m_children.isEmpty(); }
QString width() const { return m_width; } QString width() const { return m_width; }
QString height() const { return m_height; } QString height() const { return m_height; }
QString relPath() const { return m_relPath; }
const HtmlAttribList &attribs() const { return m_attribs; } const HtmlAttribList &attribs() const { return m_attribs; }
void accept(DocVisitor *v) { CompAccept<DocImage>::accept(this,v); } void accept(DocVisitor *v) { CompAccept<DocImage>::accept(this,v); }
void parse(); void parse();
...@@ -588,18 +588,19 @@ class DocImage : public CompAccept<DocImage>, public DocNode ...@@ -588,18 +588,19 @@ class DocImage : public CompAccept<DocImage>, public DocNode
Type m_type; Type m_type;
QString m_width; QString m_width;
QString m_height; QString m_height;
QString m_relPath;
}; };
/*! @brief Node representing a dot file */ /*! @brief Node representing a dot file */
class DocDotFile : public CompAccept<DocDotFile>, public DocNode class DocDotFile : public CompAccept<DocDotFile>, public DocNode
{ {
public: public:
DocDotFile(DocNode *parent,const QString &name) : DocDotFile(DocNode *parent,const QString &name);
m_parent(parent), m_name(name) { }
void parse(); void parse();
Kind kind() const { return Kind_DotFile; } Kind kind() const { return Kind_DotFile; }
QString name() const { return m_name; } QString name() const { return m_name; }
QString file() const { return m_file; } QString file() const { return m_file; }
QString relPath() const { return m_relPath; }
bool hasCaption() const { return !m_children.isEmpty(); } bool hasCaption() const { return !m_children.isEmpty(); }
QString width() const { return m_width; } QString width() const { return m_width; }
QString height() const { return m_height; } QString height() const { return m_height; }
...@@ -609,6 +610,7 @@ class DocDotFile : public CompAccept<DocDotFile>, public DocNode ...@@ -609,6 +610,7 @@ class DocDotFile : public CompAccept<DocDotFile>, public DocNode
DocNode *m_parent; DocNode *m_parent;
QString m_name; QString m_name;
QString m_file; QString m_file;
QString m_relPath;
QString m_width; QString m_width;
QString m_height; QString m_height;
}; };
......
This diff is collapsed.
...@@ -70,6 +70,8 @@ Entry::Entry(const Entry &e) ...@@ -70,6 +70,8 @@ Entry::Entry(const Entry &e)
docFile = e.docFile.copy(); docFile = e.docFile.copy();
relates = e.relates.copy(); relates = e.relates.copy();
relatesDup = e.relatesDup; relatesDup = e.relatesDup;
read = e.read.copy();
write = e.write.copy();
brief = e.brief.copy(); brief = e.brief.copy();
briefLine = e.briefLine; briefLine = e.briefLine;
briefFile = e.briefFile.copy(); briefFile = e.briefFile.copy();
......
...@@ -289,6 +289,8 @@ class Entry ...@@ -289,6 +289,8 @@ class Entry
QCString inbodyFile; //!< file in which the body doc was found QCString inbodyFile; //!< file in which the body doc was found
QCString relates; //!< related class (doc block) QCString relates; //!< related class (doc block)
bool relatesDup; //!< keep duplicate doc in original file also bool relatesDup; //!< keep duplicate doc in original file also
QCString read; //!< property read accessor
QCString write; //!< property write accessor
QCString inside; //!< name of the class in which documents are found QCString inside; //!< name of the class in which documents are found
QCString exception; //!< throw specification QCString exception; //!< throw specification
int bodyLine; //!< line number of the definition in the source int bodyLine; //!< line number of the definition in the source
......
...@@ -240,6 +240,12 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -240,6 +240,12 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.startTextBlock(); ol.startTextBlock();
writeDetailedDocumentation(ol); writeDetailedDocumentation(ol);
ol.endTextBlock(); ol.endTextBlock();
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.disable(OutputGenerator::RTF);
ol.newParagraph();
ol.popGeneratorState();
} }
else if (!briefDescription().isEmpty()) else if (!briefDescription().isEmpty())
{ {
...@@ -275,11 +281,15 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -275,11 +281,15 @@ void FileDef::writeDocumentation(OutputList &ol)
fd->name().right(5)==".java"; fd->name().right(5)==".java";
} }
ol.startTypewriter(); ol.startTypewriter();
if (isIDLorJava) if (isIDLorJava) // IDL/Java include
{ {
ol.docify("import "); ol.docify("import ");
} }
else else if (ii->imported) // Objective-C include
{
ol.docify("#import ");
}
else // C/C++ include
{ {
ol.docify("#include "); ol.docify("#include ");
} }
...@@ -303,11 +313,12 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -303,11 +313,12 @@ void FileDef::writeDocumentation(OutputList &ol)
if (!Config_getString("GENERATE_TAGFILE").isEmpty() && !fd->isReference()) if (!Config_getString("GENERATE_TAGFILE").isEmpty() && !fd->isReference())
{ {
const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no"; const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
Doxygen::tagFile << " <includes id=\"" Doxygen::tagFile << " <includes id=\""
<< convertToXML(fd->getOutputFileBase()) << convertToXML(fd->getOutputFileBase()) << "\" "
<< "\" name=\"" << "name=\"" << convertToXML(fd->name()) << "\" "
<< convertToXML(fd->name()) << "local=\"" << locStr << "\" "
<< "\" local=\"" << locStr << "\">" << "imported=\"" << impStr << "\">"
<< convertToXML(ii->includeName) << convertToXML(ii->includeName)
<< "</includes>" << "</includes>"
<< endl; << endl;
...@@ -543,66 +554,30 @@ void FileDef::insertMember(MemberDef *md) ...@@ -543,66 +554,30 @@ void FileDef::insertMember(MemberDef *md)
{ {
case MemberDef::Variable: case MemberDef::Variable:
case MemberDef::Property: case MemberDef::Property:
if (sortBriefDocs) if (sortBriefDocs) decVarMembers.inSort(md); else decVarMembers.append(md);
decVarMembers.inSort(md); if (sortMemberDocs) docVarMembers.inSort(md); else docVarMembers.append(md);
else
decVarMembers.append(md);
if (sortMemberDocs)
docVarMembers.inSort(md);
else
docVarMembers.append(md);
break; break;
case MemberDef::Function: case MemberDef::Function:
if (sortBriefDocs) if (sortBriefDocs) decFuncMembers.inSort(md); else decFuncMembers.append(md);
decFuncMembers.inSort(md); if (sortMemberDocs) docFuncMembers.inSort(md); else docFuncMembers.append(md);
else
decFuncMembers.append(md);
if (sortMemberDocs)
docFuncMembers.inSort(md);
else
docFuncMembers.append(md);
break; break;
case MemberDef::Typedef: case MemberDef::Typedef:
if (sortBriefDocs) if (sortBriefDocs) decTypedefMembers.inSort(md); else decTypedefMembers.append(md);
decTypedefMembers.inSort(md); if (sortMemberDocs) docTypedefMembers.inSort(md); else docTypedefMembers.append(md);
else
decTypedefMembers.append(md);
if (sortMemberDocs)
docTypedefMembers.inSort(md);
else
docTypedefMembers.append(md);
break; break;
case MemberDef::Enumeration: case MemberDef::Enumeration:
if (sortBriefDocs) if (sortBriefDocs) decEnumMembers.inSort(md); else decEnumMembers.append(md);
decEnumMembers.inSort(md); if (sortMemberDocs) docEnumMembers.inSort(md); else docEnumMembers.append(md);
else
decEnumMembers.append(md);
if (sortMemberDocs)
docEnumMembers.inSort(md);
else
docEnumMembers.append(md);
break; break;
case MemberDef::EnumValue: // enum values are shown inside their enums case MemberDef::EnumValue: // enum values are shown inside their enums
break; break;
case MemberDef::Prototype: case MemberDef::Prototype:
if (sortBriefDocs) if (sortBriefDocs) decProtoMembers.inSort(md); else decProtoMembers.append(md);
decProtoMembers.inSort(md); if (sortMemberDocs) docProtoMembers.inSort(md); else docProtoMembers.append(md);
else
decProtoMembers.append(md);
if (sortMemberDocs)
docProtoMembers.inSort(md);
else
docProtoMembers.append(md);
break; break;
case MemberDef::Define: case MemberDef::Define:
if (sortBriefDocs) if (sortBriefDocs) decDefineMembers.inSort(md); else decDefineMembers.append(md);
decDefineMembers.inSort(md); if (sortMemberDocs) docDefineMembers.inSort(md); else docDefineMembers.append(md);
else
decDefineMembers.append(md);
if (sortMemberDocs)
docDefineMembers.inSort(md);
else
docDefineMembers.append(md);
break; break;
default: default:
err("FileDef::insertMembers(): " err("FileDef::insertMembers(): "
...@@ -693,7 +668,8 @@ void FileDef::addUsingDeclaration(Definition *d) ...@@ -693,7 +668,8 @@ void FileDef::addUsingDeclaration(Definition *d)
} }
} }
void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local,
bool imported)
{ {
//printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local); //printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
QCString iName = fd ? fd->absFilePath().data() : incName; QCString iName = fd ? fd->absFilePath().data() : incName;
...@@ -703,6 +679,7 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) ...@@ -703,6 +679,7 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
ii->fileDef = fd; ii->fileDef = fd;
ii->includeName = incName; ii->includeName = incName;
ii->local = local; ii->local = local;
ii->imported = imported;
includeList->append(ii); includeList->append(ii);
includeDict->insert(iName,ii); includeDict->insert(iName,ii);
} }
...@@ -759,7 +736,8 @@ void FileDef::addIncludedUsingDirectives() ...@@ -759,7 +736,8 @@ void FileDef::addIncludedUsingDirectives()
} }
void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local) void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,
bool local,bool imported)
{ {
//printf("FileDef::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local); //printf("FileDef::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
QCString iName = fd ? fd->absFilePath().data() : incName; QCString iName = fd ? fd->absFilePath().data() : incName;
...@@ -769,6 +747,7 @@ void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local ...@@ -769,6 +747,7 @@ void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local
ii->fileDef = fd; ii->fileDef = fd;
ii->includeName = incName; ii->includeName = incName;
ii->local = local; ii->local = local;
ii->imported = imported;
includedByList->append(ii); includedByList->append(ii);
includedByDict->insert(iName,ii); includedByDict->insert(iName,ii);
} }
...@@ -970,7 +949,7 @@ static void generateIndent(QTextStream &t,DirEntry *de,int level) ...@@ -970,7 +949,7 @@ static void generateIndent(QTextStream &t,DirEntry *de,int level)
} }
} }
#if 0
static void writeDirTreeNode(QTextStream &t,Directory *root,int level) static void writeDirTreeNode(QTextStream &t,Directory *root,int level)
{ {
QCString indent; QCString indent;
...@@ -1001,12 +980,43 @@ static void writeDirTreeNode(QTextStream &t,Directory *root,int level) ...@@ -1001,12 +980,43 @@ static void writeDirTreeNode(QTextStream &t,Directory *root,int level)
} }
} }
} }
#endif
static void addDirsAsGroups(Directory *root,GroupDef *parent,int level)
{
GroupDef *gd=0;
if (root->kind()==DirEntry::Dir)
{
gd = new GroupDef("<generated>",
1,
root->name(), // name
root->name() // title
);
if (parent)
{
parent->addGroup(gd);
}
else
{
Doxygen::groupSDict.append(root->name(),gd);
}
}
QListIterator<DirEntry> dli(root->children());
DirEntry *de;
for (dli.toFirst();(de=dli.current());++dli)
{
if (de->kind()==DirEntry::Dir)
{
addDirsAsGroups((Directory *)de,gd,level+1);
}
}
}
void generateFileTree(QTextStream &t) void generateFileTree()
{ {
FTVHelp::generateTreeViewImages(); FTVHelp::generateTreeViewImages();
Directory *root=new Directory(0,""); Directory *root=new Directory(0,"root");
root->setLast(TRUE); root->setLast(TRUE);
FileNameListIterator fnli(Doxygen::inputNameList); FileNameListIterator fnli(Doxygen::inputNameList);
FileName *fn; FileName *fn;
...@@ -1019,12 +1029,15 @@ void generateFileTree(QTextStream &t) ...@@ -1019,12 +1029,15 @@ void generateFileTree(QTextStream &t)
mergeFileDef(root,fd); mergeFileDef(root,fd);
} }
} }
t << "<div class=\"directory\">\n"; //t << "<div class=\"directory\">\n";
writeDirTreeNode(t,root,0); //writeDirTreeNode(t,root,0);
t << "</div>\n"; //t << "</div>\n";
addDirsAsGroups(root,0,0);
delete root; delete root;
} }
//-------------------------------------------------------------------
void FileDef::combineUsingRelations() void FileDef::combineUsingRelations()
{ {
if (visited) return; // already done if (visited) return; // already done
......
...@@ -46,6 +46,7 @@ struct IncludeInfo ...@@ -46,6 +46,7 @@ struct IncludeInfo
FileDef *fileDef; FileDef *fileDef;
QCString includeName; QCString includeName;
bool local; bool local;
bool imported;
}; };
/*! \class FileDef filedef.h /*! \class FileDef filedef.h
...@@ -140,8 +141,8 @@ class FileDef : public Definition ...@@ -140,8 +141,8 @@ class FileDef : public Definition
bool generateSourceFile() const; bool generateSourceFile() const;
void addIncludeDependency(FileDef *fd,const char *incName,bool local); void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported);
void addIncludedByDependency(FileDef *fd,const char *incName,bool local); void addIncludedByDependency(FileDef *fd,const char *incName,bool local,bool imported);
QList<IncludeInfo> *includeFileList() const { return includeList; } QList<IncludeInfo> *includeFileList() const { return includeList; }
QList<IncludeInfo> *includedByFileList() const { return includedByList; } QList<IncludeInfo> *includedByFileList() const { return includedByList; }
...@@ -286,7 +287,8 @@ class Directory : public DirEntry ...@@ -286,7 +287,8 @@ class Directory : public DirEntry
QList<DirEntry> m_children; QList<DirEntry> m_children;
}; };
void generateFileTree(QTextStream &t); //void generateFileTree(QTextStream &t);
void generateFileTree();
#endif #endif
...@@ -709,7 +709,7 @@ void HtmlDocVisitor::visitPre(DocImage *img) ...@@ -709,7 +709,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
baseName=baseName.right(baseName.length()-i-1); baseName=baseName.right(baseName.length()-i-1);
} }
m_t << "<div align=\"center\">" << endl; m_t << "<div align=\"center\">" << endl;
m_t << "<img src=\"" << img->name() << "\" alt=\"" m_t << "<img src=\"" << img->relPath() << img->name() << "\" alt=\""
<< baseName << "\"" << htmlAttribsToString(img->attribs()) << ">" << endl; << baseName << "\"" << htmlAttribsToString(img->attribs()) << ">" << endl;
if (img->hasCaption()) if (img->hasCaption())
{ {
...@@ -743,7 +743,7 @@ void HtmlDocVisitor::visitPost(DocImage *img) ...@@ -743,7 +743,7 @@ void HtmlDocVisitor::visitPost(DocImage *img)
void HtmlDocVisitor::visitPre(DocDotFile *df) void HtmlDocVisitor::visitPre(DocDotFile *df)
{ {
if (m_hide) return; if (m_hide) return;
writeDotFile(df->file(),""); writeDotFile(df->file(),df->relPath());
m_t << "<div align=\"center\">" << endl; m_t << "<div align=\"center\">" << endl;
if (df->hasCaption()) if (df->hasCaption())
{ {
......
...@@ -309,6 +309,12 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file) ...@@ -309,6 +309,12 @@ void HtmlGenerator::writeStyleSheetFile(QFile &file)
static void writeDefaultHeaderFile(QTextStream &t, const char *title, static void writeDefaultHeaderFile(QTextStream &t, const char *title,
const char *relPath,bool usePathCmd) const char *relPath,bool usePathCmd)
{ {
QString relPathStr;
if (usePathCmd)
relPathStr="$relpath$";
else
relPathStr=relPath;
t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"
"<html><head>" "<html><head>"
"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=" "<meta http-equiv=\"Content-Type\" content=\"text/html;charset="
...@@ -320,11 +326,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title, ...@@ -320,11 +326,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
t << "href=\""; t << "href=\"";
if (Config_getString("HTML_STYLESHEET").isEmpty()) if (Config_getString("HTML_STYLESHEET").isEmpty())
{ {
if (usePathCmd) t << relPathStr << "doxygen.css";
t << "$relpath$";
else
t << relPath;
t << "doxygen.css";
} }
else else
{ {
...@@ -334,7 +336,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title, ...@@ -334,7 +336,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
{ {
err("Error: user specified HTML style sheet file does not exist!\n"); err("Error: user specified HTML style sheet file does not exist!\n");
} }
t << cssfi.fileName(); t << relPathStr << cssfi.fileName();
} }
t << "\" rel=\"stylesheet\" type=\"text/css\">\n" t << "\" rel=\"stylesheet\" type=\"text/css\">\n"
"</head><body>\n"; "</head><body>\n";
......
...@@ -93,6 +93,10 @@ class MemberDef : public Definition ...@@ -93,6 +93,10 @@ class MemberDef : public Definition
NamespaceDef* getNamespaceDef() const { return nspace; } NamespaceDef* getNamespaceDef() const { return nspace; }
//Definition *getCompoundDef() const; //Definition *getCompoundDef() const;
// grabbing the property read/write accessor names
const char *getReadAccessor() const { return read; }
const char *getWriteAccessor() const { return write; }
// querying the grouping definition // querying the grouping definition
GroupDef *getGroupDef() const { return group; } GroupDef *getGroupDef() const { return group; }
Grouping::GroupPri_t getGroupPri() const { return grouppri; } Grouping::GroupPri_t getGroupPri() const { return grouppri; }
...@@ -161,6 +165,8 @@ class MemberDef : public Definition ...@@ -161,6 +165,8 @@ class MemberDef : public Definition
void setSectionList(Definition *d,MemberList *sl); void setSectionList(Definition *d,MemberList *sl);
void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs); void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; } void setExplicitExternal(bool b) { explExt=b; }
void setReadAccessor(const char *r) { read=r; }
void setWriteAccessor(const char *w) { write=w; }
void makeRelated() { related=TRUE; } void makeRelated() { related=TRUE; }
...@@ -307,6 +313,8 @@ class MemberDef : public Definition ...@@ -307,6 +313,8 @@ class MemberDef : public Definition
QCString type; // return type QCString type; // return type
QCString args; // function arguments/variable array specifiers QCString args; // function arguments/variable array specifiers
QCString bitfields; // struct member bitfields QCString bitfields; // struct member bitfields
QCString read; // property read accessor
QCString write; // property write accessor
QCString exception; // exceptions that can be thrown QCString exception; // exceptions that can be thrown
QCString init; // initializer QCString init; // initializer
int initLines; // number of lines in the initializer int initLines; // number of lines in the initializer
......
...@@ -99,6 +99,7 @@ static bool g_macroExpansion; // from the configuration ...@@ -99,6 +99,7 @@ static bool g_macroExpansion; // from the configuration
static bool g_expandOnlyPredef; // from the configuration static bool g_expandOnlyPredef; // from the configuration
static int g_commentCount; static int g_commentCount;
static bool g_insideComment; static bool g_insideComment;
static bool g_isImported;
static void setFileName(const char *name) static void setFileName(const char *name)
...@@ -1065,12 +1066,12 @@ static void readIncludeFile(const QCString &inc) ...@@ -1065,12 +1066,12 @@ static void readIncludeFile(const QCString &inc)
if (oldFileDef) if (oldFileDef)
{ {
// add include dependency to the file in which the #include was found // add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude); oldFileDef->addIncludeDependency(g_yyFileDef,incFileName,localInclude,g_isImported);
// add included by dependency // add included by dependency
if (g_yyFileDef) if (g_yyFileDef)
{ {
//printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data()); //printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude); g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude,g_isImported);
} }
} }
FileState *fs=new FileState; FileState *fs=new FileState;
...@@ -1100,12 +1101,12 @@ static void readIncludeFile(const QCString &inc) ...@@ -1100,12 +1101,12 @@ static void readIncludeFile(const QCString &inc)
FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig); FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
//printf("findFileDef(%s)=%p\n",incFileName.data(),fd); //printf("findFileDef(%s)=%p\n",incFileName.data(),fd);
// add include dependency to the file in which the #include was found // add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(fd,incFileName,localInclude); oldFileDef->addIncludeDependency(fd,incFileName,localInclude,g_isImported);
// add included by dependency // add included by dependency
if (fd) if (fd)
{ {
//printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig); //printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig);
fd->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude); fd->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude,g_isImported);
} }
} }
if (Debug::isFlagSet(Debug::Preprocessor)) if (Debug::isFlagSet(Debug::Preprocessor))
...@@ -1386,11 +1387,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1386,11 +1387,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<ReadString>. { <ReadString>. {
g_defArgsStr+=*yytext; g_defArgsStr+=*yytext;
} }
<Command>"include"{B}+/{ID} { <Command>("include"|"import"){B}+/{ID} {
g_isImported = yytext[1]=='m';
if (g_macroExpansion) if (g_macroExpansion)
BEGIN(IncludeID); BEGIN(IncludeID);
} }
<Command>"include"{B}*[<"] { <Command>("include"|"import"){B}*[<"] {
g_isImported = yytext[1]=='m';
char c[2]; char c[2];
c[0]=yytext[yyleng-1];c[1]='\0'; c[0]=yytext[yyleng-1];c[1]='\0';
g_incName=c; g_incName=c;
......
...@@ -837,7 +837,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -837,7 +837,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%x ObjCProtocolList %x ObjCProtocolList
%x QtPropType %x QtPropType
%x QtPropName %x QtPropName
%x QtPropRW %x QtPropRead
%x QtPropWrite
%% %%
...@@ -1181,7 +1182,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1181,7 +1182,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->virt = Virtual; current->virt = Virtual;
lineCount(); lineCount();
} }
<FindMembers>{B}*"abstract"{BN}+ { current->type += " abstract "; <FindMembers>{B}*"abstract"{BN}+ {
if (!insidePHP)
{
current->type += " abstract ";
}
current->virt = Pure; current->virt = Pure;
lineCount(); lineCount();
} }
...@@ -1253,7 +1258,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1253,7 +1258,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
<FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface <FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface
lineCount(); lineCount();
if (insideIDL || insideJava || insideCS || insideD) if (insideIDL || insideJava || insideCS || insideD || insidePHP)
{ {
isTypedef=FALSE; isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC; current->section = Entry::INTERFACE_SEC;
...@@ -1621,15 +1626,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1621,15 +1626,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
<QtPropName>{ID} { <QtPropName>{ID} {
current->name=yytext; current->name=yytext;
BEGIN(QtPropRW); BEGIN(QtPropRead);
} }
<QtPropRW>"READ" { <QtPropRead>"READ" {
current->memSpec |= Entry::Readable; current->memSpec |= Entry::Readable;
} }
<QtPropRW>"WRITE" { <QtPropRead>{ID} {
current->read = yytext;
BEGIN(QtPropWrite);
}
<QtPropWrite>"WRITE" {
current->memSpec |= Entry::Writable; current->memSpec |= Entry::Writable;
} }
<QtPropRW>")" { <QtPropWrite>{ID} {
current->write = yytext;
unput(';'); unput(';');
BEGIN(FindMembers); BEGIN(FindMembers);
} }
...@@ -1666,7 +1676,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -1666,7 +1676,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{ {
addType( current ) ; addType( current ) ;
} }
bool javaLike = insideJava || insideCS || insideD; bool javaLike = insideJava || insideCS || insideD || insidePHP;
if (javaLike && strcmp(yytext,"public")==0) if (javaLike && strcmp(yytext,"public")==0)
{ {
current->protection = Public; current->protection = Public;
...@@ -2230,27 +2240,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2230,27 +2240,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{ {
current->type = current->type.mid(3); current->type = current->type.mid(3);
} }
if (!current->name.isEmpty() && current->section!=Entry::ENUM_SEC)
{
current->type=current->type.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace();
current->args=removeRedundantWhiteSpace(current->args); current->args=removeRedundantWhiteSpace(current->args);
// was: current->args.simplifyWhiteSpace();
current->name=current->name.stripWhiteSpace(); current->name=current->name.stripWhiteSpace();
//if (!current->name.isEmpty() && current->type.left(8)=="typedef ")
//{
// // add typedef to dictionary
// QCString dest = extractName(current->type.right(current->type.length()-8));
// if (Doxygen::typedefDict[current->name]==0 && !dest.isEmpty())
// {
// //printf("1>>>>>>>>>> adding %s->%s\n",current->name.data(),dest.data());
// QCString scope;
// if (current_root->section & Entry::SCOPE_MASK) scope=current_root->name;
// Doxygen::typedefDict.insert(current->name, new TypedefInfo(dest,scope));
// }
//}
current->section = Entry::VARIABLE_SEC ; current->section = Entry::VARIABLE_SEC ;
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
//printf("New variable type=`%s' name=`%s' groupId=%d\n",current->type.data(),current->name.data(),current->mGrpId); //printf("New variable type=`%s' name=`%s' groupId=%d\n",current->type.data(),current->name.data(),current->mGrpId);
current_root->addSubEntry( current ) ; current_root->addSubEntry( current ) ;
}
if ( *yytext == ',') if ( *yytext == ',')
{ {
current = new Entry(*current); current = new Entry(*current);
...@@ -3558,15 +3558,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3558,15 +3558,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
roundCount=0; roundCount=0;
BEGIN(SkipUnionSwitch); BEGIN(SkipUnionSwitch);
} }
else if (insideJava && (strcmp(yytext,"implements")==0 || strcmp(yytext,"extends")==0)) else if ((insideJava || insidePHP) && (strcmp(yytext,"implements")==0 || strcmp(yytext,"extends")==0))
{
current->type.resize(0);
baseProt=Public;
baseVirt=Normal;
baseName.resize(0);
BEGIN( BasesProt ) ;
}
else if (insidePHP && (strcmp(yytext,"extends")==0))
{ {
current->type.resize(0); current->type.resize(0);
baseProt=Public; baseProt=Public;
...@@ -3684,10 +3676,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3684,10 +3676,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN( ReadBody ) ; BEGIN( ReadBody ) ;
} }
} }
<BasesProt>"virtual" { baseVirt = Virtual; } <BasesProt>"virtual"{BN}+ { lineCount(); baseVirt = Virtual; }
<BasesProt>"public" { baseProt = Public; } <BasesProt>"public"{BN}+ { lineCount(); baseProt = Public; }
<BasesProt>"protected" { baseProt = Protected; } <BasesProt>"protected"{BN}+ { lineCount(); baseProt = Protected; }
<BasesProt>"private" { baseProt = Private; } <BasesProt>"private"{BN}+ { lineCount(); baseProt = Private; }
<BasesProt>{BN} { lineCount(); } <BasesProt>{BN} { lineCount(); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); } <BasesProt>. { unput(*yytext); BEGIN(Bases); }
<Bases>("::")?{BN}*({ID}{BN}*"::"{BN}*)*{ID} { <Bases>("::")?{BN}*({ID}{BN}*"::"{BN}*)*{ID} {
......
...@@ -99,6 +99,7 @@ class TagIncludeInfo ...@@ -99,6 +99,7 @@ class TagIncludeInfo
QString name; QString name;
QString text; QString text;
bool isLocal; bool isLocal;
bool isImported;
}; };
/*! Container for file specific info that can be read from a tagfile */ /*! Container for file specific info that can be read from a tagfile */
...@@ -470,6 +471,7 @@ class TagFileParser : public QXmlDefaultHandler ...@@ -470,6 +471,7 @@ class TagFileParser : public QXmlDefaultHandler
m_curIncludes->id = attrib.value("id"); m_curIncludes->id = attrib.value("id");
m_curIncludes->name = attrib.value("name"); m_curIncludes->name = attrib.value("name");
m_curIncludes->isLocal = attrib.value("local")=="yes" ? TRUE : FALSE; m_curIncludes->isLocal = attrib.value("local")=="yes" ? TRUE : FALSE;
m_curIncludes->isImported = attrib.value("imported")=="yes" ? TRUE : FALSE;
m_curFile->includes.append(m_curIncludes); m_curFile->includes.append(m_curIncludes);
} }
else else
...@@ -1215,7 +1217,7 @@ void TagFileParser::addIncludes() ...@@ -1215,7 +1217,7 @@ void TagFileParser::addIncludes()
// ifd->getOutputFileBase().data(),ii->id.data()); // ifd->getOutputFileBase().data(),ii->id.data());
if (ifd->getOutputFileBase()==QCString(ii->id)) if (ifd->getOutputFileBase()==QCString(ii->id))
{ {
fd->addIncludeDependency(ifd,ii->text,ii->isLocal); fd->addIncludeDependency(ifd,ii->text,ii->isLocal,ii->isImported);
} }
} }
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
*/ */
#define CN_SPC #define CN_SPC
class TranslatorChinese : public TranslatorAdapter_1_3_3 class TranslatorChinese : public Translator
{ {
public: public:
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
...@@ -1467,9 +1467,22 @@ class TranslatorChinese : public TranslatorAdapter_1_3_3 ...@@ -1467,9 +1467,22 @@ class TranslatorChinese : public TranslatorAdapter_1_3_3
*/ */
virtual QCString trSearchMatches() virtual QCString trSearchMatches()
{ {
return "Matches:"; /* return "Matches:"; */
return "符合的结果:"; return "符合的结果:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
/* return filename + " Source File"; */
return filename + CN_SPC"源文件";
}
}; };
#endif #endif
...@@ -84,13 +84,16 @@ ...@@ -84,13 +84,16 @@
// - Updated a few strings which changed in CVS revision 1.22 // - Updated a few strings which changed in CVS revision 1.22
// ("compound" vs. "class") // ("compound" vs. "class")
// //
// 2004/08/01 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated for "new since 1.3.8" version
//
// Todo: // Todo:
// - see FIXME // - see FIXME
#ifndef TRANSLATOR_DE_H #ifndef TRANSLATOR_DE_H
#define TRANSLATOR_DE_H #define TRANSLATOR_DE_H
class TranslatorGerman : public TranslatorAdapter_1_3_8 class TranslatorGerman : public Translator
{ {
public: public:
...@@ -156,7 +159,7 @@ class TranslatorGerman : public TranslatorAdapter_1_3_8 ...@@ -156,7 +159,7 @@ class TranslatorGerman : public TranslatorAdapter_1_3_8
/*! this is the text of a link put after brief descriptions. */ /*! this is the text of a link put after brief descriptions. */
virtual QCString trMore() virtual QCString trMore()
{ return "Mehr..."; } { return "Mehr ..."; }
/*! put in the class documentation */ /*! put in the class documentation */
virtual QCString trListOfAllMembers() virtual QCString trListOfAllMembers()
...@@ -1604,6 +1607,18 @@ class TranslatorGerman : public TranslatorAdapter_1_3_8 ...@@ -1604,6 +1607,18 @@ class TranslatorGerman : public TranslatorAdapter_1_3_8
{ {
return "Treffer:"; return "Treffer:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return filename + " Quellcode";
}
}; };
#endif #endif
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#ifndef TRANSLATOR_DK_H #ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H #define TRANSLATOR_DK_H
class TranslatorDanish : public TranslatorAdapter_1_3_8 class TranslatorDanish : public Translator
{ {
public: public:
...@@ -1445,6 +1445,19 @@ class TranslatorDanish : public TranslatorAdapter_1_3_8 ...@@ -1445,6 +1445,19 @@ class TranslatorDanish : public TranslatorAdapter_1_3_8
return "Fundne ord:"; //translation? return "Fundne ord:"; //translation?
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.8
//////////////////////////////////////////////////////////////////////////
/*! This is used in HTML as the title of page with source code for
* file filename
*/
virtual QCString trSourceFile(QCString& filename)
{
return "Kildefilen " + filename;
}
/*---------- For internal use: ----------------------------------------*/ /*---------- For internal use: ----------------------------------------*/
protected: protected:
/*! For easy flexible-noun implementation. /*! For easy flexible-noun implementation.
......
...@@ -69,7 +69,7 @@ Problem! ...@@ -69,7 +69,7 @@ Problem!
#ifndef TRANSLATOR_SE_H #ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H #define TRANSLATOR_SE_H
class TranslatorSwedish : public TranslatorAdapter_1_3_3 class TranslatorSwedish : public TranslatorAdapter_1_3_8
{ {
public: public:
...@@ -1350,7 +1350,56 @@ class TranslatorSwedish : public TranslatorAdapter_1_3_3 ...@@ -1350,7 +1350,56 @@ class TranslatorSwedish : public TranslatorAdapter_1_3_3
return "Hr r anropnings diagrammet fr den hr funktionen:"; return "Hr r anropnings diagrammet fr den hr funktionen:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual QCString trSearchForIndex()
{
return "Sk efter";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
return "Skresultat";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual QCString trSearchResults(int numDocuments)
{
if (numDocuments==0)
{
return "Tyvrr finns det inga dokument som matchar din skning.";
}
else if (numDocuments==1)
{
return "Hittade <b>1</b> dokument som matchar din skning.";
}
else
{
return "Hittade <b>$num</b> dokument som matchar din skning. "
"Visar de bsta trffarna frst.";
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual QCString trSearchMatches()
{
return "Trffar:";
}
}; };
......
...@@ -1010,7 +1010,6 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1010,7 +1010,6 @@ ClassDef *getResolvedClassRec(Definition *scope,
QCString name=n; QCString name=n;
QCString explicitScopePart; QCString explicitScopePart;
//int qualifierIndex = name.findRev("::"); // todo: deal with cases like A<B::C>
int qualifierIndex = computeQualifiedIndex(name); int qualifierIndex = computeQualifiedIndex(name);
//printf("name=%s qualifierIndex=%d\n",name.data(),qualifierIndex); //printf("name=%s qualifierIndex=%d\n",name.data(),qualifierIndex);
if (qualifierIndex!=-1) // qualified name if (qualifierIndex!=-1) // qualified name
...@@ -1032,7 +1031,6 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1032,7 +1031,6 @@ ClassDef *getResolvedClassRec(Definition *scope,
//printf("Looking for symbol %s result=%p\n",name.data(),dl); //printf("Looking for symbol %s result=%p\n",name.data(),dl);
if (dl==0) if (dl==0)
{ {
// name is not a known symbol
return 0; return 0;
} }
...@@ -1181,7 +1179,7 @@ ClassDef *getResolvedClass(Definition *scope, ...@@ -1181,7 +1179,7 @@ ClassDef *getResolvedClass(Definition *scope,
} }
//printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>", //printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>",
// n,result?result->name().data():"<none>"); // n,result?result->name().data():"<none>");
//
return result; return result;
} }
...@@ -4120,14 +4118,22 @@ QCString substituteTemplateArgumentsInString( ...@@ -4120,14 +4118,22 @@ QCString substituteTemplateArgumentsInString(
++formAli,actArg=actualArgs->next() ++formAli,actArg=actualArgs->next()
) )
{ {
//printf("n=%s formArg->type=%s formArg->name=%s\n",
// n.data(),formArg->type.data(),formArg->name.data());
if (formArg->type=="class" || formArg->type=="typename") if (formArg->type=="class" || formArg->type=="typename")
{ {
//printf("n=%s formArg->type=%s formArg->name=%si formArg->defval=%s\n",
// n.data(),formArg->type.data(),formArg->name.data(),formArg->defval.data());
if (formArg->name==n && actArg && !actArg->type.isEmpty()) // base class is a template argument if (formArg->name==n && actArg && !actArg->type.isEmpty()) // base class is a template argument
{ {
// replace formal argument with the actual argument of the instance // replace formal argument with the actual argument of the instance
if (actArg->name.isEmpty())
{
result += actArg->type+" "; result += actArg->type+" ";
}
else // for case where the actual arg is something like "unsigned int"
// the "int" part is in actArg->name.
{
result += actArg->type+" "+actArg->name+" ";
}
found=TRUE; found=TRUE;
} }
else if (formArg->name==n && actArg==0 && !formArg->defval.isEmpty() && else if (formArg->name==n && actArg==0 && !formArg->defval.isEmpty() &&
......
...@@ -619,6 +619,15 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -619,6 +619,15 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
} }
t << " <name>" << convertToXML(md->name()) << "</name>" << endl; t << " <name>" << convertToXML(md->name()) << "</name>" << endl;
if (md->memberType() == MemberDef::Property)
{
if (md->isReadable())
t << " <read>" << convertToXML(md->getReadAccessor()) << "</read>" << endl;
if (md->isWritable())
t << " <write>" << convertToXML(md->getWriteAccessor()) << "</write>" << endl;
}
MemberDef *rmd = md->reimplements(); MemberDef *rmd = md->reimplements();
if (rmd) if (rmd)
{ {
......
#! Use the common Unix template
#$ IncludeTemplate("../unix/app.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/lib.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/subdirs.t");
#
#
#
# tmake configuration for linux-g++
#
TEMPLATE = app
CONFIG = qt warn_on release
TMAKE_CC = gcc
TMAKE_CFLAGS = -pipe
TMAKE_CFLAGS_WARN_ON = -Wall -W -fno-exceptions
TMAKE_CFLAGS_WARN_OFF =
TMAKE_CFLAGS_RELEASE = -O2
TMAKE_CFLAGS_DEBUG = -g
TMAKE_CFLAGS_SHLIB = -fPIC
TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
TMAKE_CXX = g++
TMAKE_CXXFLAGS = $$TMAKE_CFLAGS
TMAKE_CXXFLAGS_WARN_ON = $$TMAKE_CFLAGS_WARN_ON
TMAKE_CXXFLAGS_WARN_OFF = $$TMAKE_CFLAGS_WARN_OFF
TMAKE_CXXFLAGS_RELEASE = $$TMAKE_CFLAGS_RELEASE
TMAKE_CXXFLAGS_DEBUG = $$TMAKE_CFLAGS_DEBUG
TMAKE_CXXFLAGS_SHLIB = $$TMAKE_CFLAGS_SHLIB
TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YACC
TMAKE_INCDIR =
TMAKE_LIBDIR =
TMAKE_INCDIR_X11 = /usr/X11R6/include
TMAKE_LIBDIR_X11 = /usr/X11R6/lib
TMAKE_INCDIR_QT = $(QTDIR)/include
TMAKE_LIBDIR_QT = $(QTDIR)/lib
TMAKE_INCDIR_OPENGL = /usr/X11R6/include
TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
TMAKE_LINK = g++
TMAKE_LINK_SHLIB = g++
TMAKE_LFLAGS =
TMAKE_LFLAGS_RELEASE =
TMAKE_LFLAGS_DEBUG = -g
TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_X11SM = -lICE -lSM
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
TMAKE_MOC = moc
TMAKE_AR = ar cqs
TMAKE_RANLIB =
TMAKE_TAR = tar -cf
TMAKE_GZIP = gzip -9f
...@@ -144,6 +144,10 @@ SOURCE=..\qtools\qglobal.cpp ...@@ -144,6 +144,10 @@ SOURCE=..\qtools\qglobal.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\qtools\qgcache.cpp
# End Source File
# Begin Source File
SOURCE=..\qtools\qgvector.cpp SOURCE=..\qtools\qgvector.cpp
# End Source File # End Source File
# Begin 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