Commit 6a74bbc3 authored by dimitri's avatar dimitri

Release-1.2.4-20010121

parent eab60398
# Doxyfile 1.2.3-20001126
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ENABLED_SECTIONS =
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
ALIASES =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = src \
qtools \
$(QTDIR)/src/doc/qarray.doc \
$(QTDIR)/src/doc/qdict.doc \
$(QTDIR)/src/doc/qintdict.doc \
$(QTDIR)/src/doc/qlist.doc \
$(QTDIR)/src/doc/qptrdict.doc \
$(QTDIR)/src/doc/qsortedlist.doc \
$(QTDIR)/src/doc/qstack.doc \
$(QTDIR)/src/doc/qstrlist.doc \
$(QTDIR)/src/doc/qvector.doc \
$(QTDIR)/src/doc/qvaluelist.doc \
$(QTDIR)/src/doc/qtl.doc
FILE_PATTERNS = *.h \
*.cpp \
q*.doc
RECURSIVE = NO
EXCLUDE = src/code.cpp \
src/config.cpp \
src/ce_lex.cpp \
src/ce_parse.cpp \
src/declinfo.cpp \
src/defargs.cpp \
src/doxytag.cpp \
src/pre.cpp \
src/scanner.cpp \
src/tag.cpp \
src/doc.cpp \
src/logos.cpp
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION = .3
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
MAX_DOT_GRAPH_WIDTH = 2048
MAX_DOT_GRAPH_HEIGHT = 2048
GENERATE_LEGEND = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =
DOXYGEN Version 1.2.4-20010107
DOXYGEN Version 1.2.4-20010121
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (07 January 2001)
Dimitri van Heesch (21 January 2001)
all: src/version.cpp configgen doxywizard
cd qtools ; $(MAKE)
cd src ; $(MAKE)
#all: src/version.cpp configgen doxywizard
# cd qtools ; $(MAKE)
# cd src ; $(MAKE)
clean: FORCE
cd examples ; $(MAKE) clean
......@@ -11,6 +11,7 @@ clean: FORCE
cd addon/configgen ; $(MAKE) clean
cd addon/doxywizard ; $(MAKE) clean
cd addon/xmlread ; $(MAKE) clean
cd addon/xmlgen ; $(MAKE) clean
-rm -f bin/doxy*
-rm -f objects/*.o
......@@ -18,13 +19,17 @@ distclean: clean
cd src ; $(MAKE) distclean
cd addon/configgen ; $(MAKE) distclean
cd addon/doxywizard ; $(MAKE) distclean
cd addon/xmlread ; $(MAKE) distclean
cd addon/xmlgen ; $(MAKE) distclean
-rm -f lib/lib*
-rm -f bin/doxy*
-rm -f html
-rm -f objects/*.o
-rm -f src/Makefile.doxygen src/Makefile.doxytag src/Makefile.doxysearch qtools/Makefile.qtools
-rm -f src/Makefile.doxygen src/Makefile.libdoxygen src/Makefile.doxytag
-rm -f src/Makefile.doxysearch qtools/Makefile.qtools
-rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig
-rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro qtools/qtools.pro
-rm -f src/doxygen.pro src/libdoxygen.pro src/doxytag.pro src/doxysearch.pro qtools/qtools.pro
-rm -f src/version.cpp
-rm -r addon/configgen/Makefile addon/doxywizard/Makefile
-rm -f addon/configgen/Makefile.configgen
......@@ -36,6 +41,9 @@ distclean: clean
-rm -f addon/xmlread/xmlread.pro
-rm -f addon/xmlread/Makefile addon/xmlread/Makefile.xmlread
-rm -f addon/xmlread/*.o
-rm -f addon/xmlgen/xmlgen.pro
-rm -f addon/xmlgen/Makefile addon/xmlgen/Makefile.xmlgen
-rm -f addon/xmlgen/*.o
install: doxywizard_install
$(INSTTOOL) -d $(INSTALL)/bin
......@@ -68,7 +76,7 @@ pdf: docs
cd latex ; $(MAKE)
archive: clean
tar zcvf dx`date +%y%m%d`.tgz addon tmake doc wintools examples bin objects \
tar zcvf dx`date +%y%m%d`.tgz Doxyfile addon tmake doc wintools examples bin lib objects \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION packages
......
......@@ -10,11 +10,12 @@ clean:
-del objects\*.o
distclean: clean
-del src\Makefile.doxygen \
-del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.doxytag \
src\Makefile.doxysearch
-del Makefile src\Makefile examples\Makefile doc\Makefile
-del src\doxygen.pro src\doxytag.pro src\doxysearch.pro
-del src\libdoxygen.pro src\doxygen.pro src\doxytag.pro src\doxysearch.pro
-del src\version.cpp
docs:
......
......@@ -20,11 +20,12 @@ clean: FORCE
-del objects\*.o
distclean: clean
-del src\Makefile.doxygen \
-del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.doxytag \
src\Makefile.doxysearch
-del Makefile src\Makefile examples\Makefile doc\Makefile
-del src\doxygen.pro src\doxytag.pro src\doxysearch.pro
-del src\libdoxygen.pro src\doxygen.pro src\doxytag.pro src\doxysearch.pro
-del src\version.cpp
docs: FORCE
......
DOXYGEN Version 1.2.4-20010107
DOXYGEN Version 1.2.4-20010121
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (07 January 2001)
Dimitri van Heesch (21 January 2001)
1.2.4-20010107
1.2.4-20010121
......@@ -695,95 +695,6 @@ void checkConfig()
#endif
}
// Test to see if output directory is valid
if (Config::outputDir.isEmpty())
Config::outputDir=QDir::currentDirPath();
else
{
QDir dir(Config::outputDir);
if (!dir.exists())
{
dir.setPath(QDir::currentDirPath());
if (!dir.mkdir(Config::outputDir))
{
err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not "
"exist and cannot be created\n",Config::outputDir.data());
exit(1);
}
else if (!Config::quietFlag)
{
err("Notice: Output directory `%s' does not exist. "
"I have created it for you.\n", Config::outputDir.data());
}
dir.cd(Config::outputDir);
}
Config::outputDir=dir.absPath();
}
if (Config::htmlOutputDir.isEmpty() && Config::generateHtml)
{
Config::htmlOutputDir=Config::outputDir+"/html";
}
else if (Config::htmlOutputDir && Config::htmlOutputDir[0]!='/')
{
Config::htmlOutputDir.prepend(Config::outputDir+'/');
}
QDir htmlDir(Config::htmlOutputDir);
if (Config::generateHtml && !htmlDir.exists() &&
!htmlDir.mkdir(Config::htmlOutputDir))
{
err("Could not create output directory %s\n",Config::htmlOutputDir.data());
exit(1);
}
if (Config::latexOutputDir.isEmpty() && Config::generateLatex)
{
Config::latexOutputDir=Config::outputDir+"/latex";
}
else if (Config::latexOutputDir && Config::latexOutputDir[0]!='/')
{
Config::latexOutputDir.prepend(Config::outputDir+'/');
}
QDir latexDir(Config::latexOutputDir);
if (Config::generateLatex && !latexDir.exists() &&
!latexDir.mkdir(Config::latexOutputDir))
{
err("Could not create output directory %s\n",Config::latexOutputDir.data());
exit(1);
}
if (Config::rtfOutputDir.isEmpty() && Config::generateRTF)
{
Config::rtfOutputDir=Config::outputDir+"/rtf";
}
else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/')
{
Config::rtfOutputDir.prepend(Config::outputDir+'/');
}
QDir rtfDir(Config::rtfOutputDir);
if (Config::generateRTF && !rtfDir.exists() &&
!rtfDir.mkdir(Config::rtfOutputDir))
{
err("Could not create output directory %s\n",Config::rtfOutputDir.data());
exit(1);
}
if (Config::manOutputDir.isEmpty() && Config::generateMan)
{
Config::manOutputDir=Config::outputDir+"/man";
}
else if (Config::manOutputDir && Config::manOutputDir[0]!='/')
{
Config::manOutputDir.prepend(Config::outputDir+'/');
}
QDir manDir(Config::manOutputDir);
if (Config::generateMan && !manDir.exists() &&
!manDir.mkdir(Config::manOutputDir))
{
err("Could not create output directory %s\n",Config::manOutputDir.data());
exit(1);
}
// expand the relative stripFromPath values
char *sfp = Config::stripFromPath.first();
while (sfp)
......
......@@ -1509,17 +1509,17 @@ void init()
);
addDependency("manExtension","generateMan");
//-----------------------------------------------------------------------------------------------
ConfigInfo::add( "XML","configuration options related to the XML output");
//ConfigInfo::add( "XML","configuration options related to the XML output");
//-----------------------------------------------------------------------------------------------
ConfigBool::add( "generateXML",
"GENERATE_XML",
"FALSE",
"generate XML output",
"If the GENERATE_XML tag is set to YES Doxygen will \n"
"generate an XML file that captures the structure of \n"
"the code including all documentation. Warning: This feature \n"
"is still experimental and very incomplete.\n"
);
//ConfigBool::add( "generateXML",
// "GENERATE_XML",
// "FALSE",
// "generate XML output",
// "If the GENERATE_XML tag is set to YES Doxygen will \n"
// "generate an XML file that captures the structure of \n"
// "the code including all documentation. Warning: This feature \n"
// "is still experimental and very incomplete.\n"
// );
//-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Preprocessor","Configuration options related to the preprocessor ");
//-----------------------------------------------------------------------------------------------
......
all clean depend: Makefile.xmlgen
$(MAKE) -f Makefile.xmlgen $@
distclean: clean
$(RM) -f Makefile.xmlgen
tmake:
export TMAKEPATH=$(TMAKEPATH) ; $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen
Makefile.xmlgen: xmlgen.pro
export TMAKEPATH=$(TMAKEPATH) ; $(PERL) $(TMAKE) xmlgen.pro >Makefile.xmlgen
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2001 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.
*
*/
#include "doxygen.h"
#include "message.h"
#include "xml.h"
/*! \file
* \brief main entry point for doxygen's XML generator
*
* This file contains main()
*/
/*! Main that generate XML output
*
*/
int main(int argc,char **argv)
{
initDoxygen();
readConfiguration(argc,argv);
parseInput();
msg("Generating XML output\n");
generateXML();
return 0;
}
This diff is collapsed.
/******************************************************************************
*
*
* $Id$
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
......
TEMPLATE = xmlgen.t
CONFIG = console warn_on $extraopt
HEADERS = xml.h xml_dtd.h
SOURCES = main.cpp xml.cpp
DEPENDPATH = ../../src
unix:LIBS += -L../../lib -ldoxygen -lqtools
win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../../lib -ldoxygen -lqtools
win32-msvc:LIBS += qtools.lib doxygen.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\..\lib
win32-borland:LIBS += qtools.lib doxygen.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\..\lib
win32:TMAKE_CXXFLAGS += -DQT_NODLL
INCLUDEPATH += ../../qtools ../../src
DESTDIR = ../../bin
TARGET = doxygen_xml
unix:TARGETDEPS = ../../lib/libdoxygen.a
win32:TARGETDEPS = ..\..\lib\doxygen.lib
OBJECTS_DIR = obj
#
# $Id$
#
# Copyright (C) 1997-2001 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.
#!
#! doxygen.t: This is a custom template for building Doxygen
#!
#$ IncludeTemplate("app.t");
xml_dtd.h: doxygen.dtd
cat doxygen.dtd | sed -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >xml_dtd.h
......@@ -28,6 +28,7 @@ f_insttool=install
f_english=NO
f_configgen=NO
f_wizard=NO
f_xmlgen=NO
while test -n "$1"; do
case $1 in
......@@ -70,6 +71,9 @@ while test -n "$1"; do
--with-doxywizard)
f_wizard=YES
;;
--with-xmlgen)
f_xmlgen=YES
;;
-h | -help | --help)
f_help=y
;;
......@@ -87,7 +91,7 @@ if test "$f_help" = y; then
Usage: $0 [--help] [--shared] [--static] [--release] [--debug]
[--perl name] [--make name] [--dot name] [--platform target]
[--prefix dir] [--install name] [--english-only]
[--with-configgen] [--with-doxywizard]
[--with-configgen] [--with-doxywizard] [--with-xmlgen]
Options:
......@@ -127,6 +131,9 @@ Options:
--with-doxywizard Build the GUI frontend for doxygen. This
requires Qt 2.x.x
--with-xmlgen Builds a separate doxygen executable that
generates XML output.
EOF
test "$f_error" = y && exit 1
exit 0;
......@@ -373,7 +380,7 @@ TMAKE_CXXFLAGS += -DENGLISH_ONLY
EOF
fi
f_inmakefiles="Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/configgen/Makefile.in addon/doxywizard/Makefile.in addon/xmlread/Makefile.in"
f_inmakefiles="Makefile.in addon/xmlgen/Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/configgen/Makefile.in addon/doxywizard/Makefile.in addon/xmlread/Makefile.in"
for i in $f_inmakefiles ; do
SRC=$i
......@@ -385,25 +392,32 @@ for i in $f_inmakefiles ; do
#
EOF
cat .makeconfig $SRC >> $DST
cat .makeconfig >> $DST
if test $i = Makefile.in; then
echo "configgen:" >> $DST
echo "" >> $DST
echo "all: src/version.cpp " >> $DST
echo " \$(MAKE) -C qtools" >> $DST
echo " \$(MAKE) -C src" >> $DST
if test $f_configgen = YES; then
echo " \$(MAKE) -C addon/configgen" >> $DST
fi
echo "doxywizard:" >> $DST
if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard" >> $DST
fi
if test $f_xmlgen = YES; then
echo " \$(MAKE) -C addon/xmlgen" >> $DST
fi
echo "" >> $DST
echo "doxywizard_install:" >> $DST
if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard install" >> $DST
fi
fi
cat $SRC >> $DST
echo " Created $DST from $SRC..."
done
f_inprofiles="qtools/qtools.pro.in src/doxygen.pro.in src/doxytag.pro.in src/doxysearch.pro.in addon/configgen/configgen.pro.in addon/doxywizard/doxywizard.pro.in addon/xmlread/xmlread.pro.in"
f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/doxygen.pro.in src/doxytag.pro.in src/doxysearch.pro.in addon/configgen/configgen.pro.in addon/doxywizard/doxywizard.pro.in addon/xmlread/xmlread.pro.in addon/xmlgen/xmlgen.pro.in"
for i in $f_inprofiles ; do
SRC=$i
......
......@@ -23,7 +23,7 @@
<li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used.
<li>Supports C++, (Corba, Microsoft, and KDE-DCOP) IDL and C sources.
<li>Supports C++, (Corba, Microsoft, and KDE-DCOP) Java, IDL and C sources.
<li>Supports documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines.
<li>JavaDoc (1.1), Qt-Doc, and KDOC compatible.
......
......@@ -49,8 +49,8 @@ documentation. Note that all attributes of a HTML tag are ignored
<li>\c </H1> Ends an unnumberd section.
<li>\c <H2> Starts an unnumbered subsection.
<li>\c </H2> Ends an unnumbered subsection.
<li>\c <H?> Where ? is one of {3,4,5,6}, starts an unnumbered subsubsection.
<li>\c </H?> Where ? is one of {3,4,5,6}, ends an unnumbered subsubsection.
<li>\c <H?> Where ? is one of {3,4,5,6}, starts an unnumbered subsubsection using \c <H3> in HTML.
<li>\c </H?> Where ? is one of {3,4,5,6}, ends an unnumbered subsubsection using \c <H3> in HTML.
<li>\c <I> Starts a piece of text displayed in an italic font.
<li>\c <INPUT> Does not generated any output.
<li>\c </I> Ends a \c <I> section.
......
......@@ -45,7 +45,7 @@ Documents produced by Doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
<h2>Introduction</h2>
Doxygen is a documentation system for C++, IDL
Doxygen is a documentation system for C++, Java, IDL
(Corba, Microsoft and KDE-DCOP flavors) and C.
It can help you in three ways:
......
......@@ -78,26 +78,31 @@ If you are trying Doxygen let me know what you think of it (do you
miss certain features?). Even if you decide not to use it, please let me
know why.
Furthermore, I would appreciate a mail if you have found
a bug, or if you have ideas (or even better some code or a patch)
how to fix existing bugs and limitations. For patches please use
"diff -u"
<h2>How to report a bug</h2>
If you think you have found a bug in doxygen, please report it so I can
fix it.
I would appreciate an e-mail if you have found
a bug, or if you have ideas (or even better some code or a patch)
how to fix existing bugs and limitations. For patches please use
"diff -u" or include the files you modified. If you send more than
one file please tar or zip everything, so I only have to save and download
one file.
Always include the following information in your bug report:
- The version of doxygen you are using.
- The name and version number of your operating system
Always try to include the following information in your bug report:
- The version of doxygen you are using (for instance 1.2.4).
- The name and version number of your operating system (for instance
SuSE Linux 6.4)
- It is usually a good idea to send along the configuation file as well,
but please use doxygen with the <code>-s</code> flag while generating it
to keep it small.
- The easiest way for me to solve bugs is if you can send me a small example
demonstrating the problem you have. Please make sure the example is valid
source code (could potentially compile) and that the problem is really
captured by the example (I often get examples that do not trigger the
actual bug!).
The easiest way for me to solve bugs is if you can send me a small example
demonstrating the problem you have. Please make sure the example is valid
source code (try compiling it) and if the problem is really captured by
the example.
It is usually a good idea to send along the configuation file as well,
but please use doxygen with the <code>-s</code> flag while generating it.
If you send only a (vague) description of a bug, you are usually not very
helpful and will costs me much more time to figure out what you mean.
In the worst-case your bug report may even be completely ignored by me!
My e-mail address: <a href="mailto:dimitri@stack.nl">dimitri@stack.nl</a>
*/
......
......@@ -29,6 +29,7 @@ type doc\Makefile.win_%MAKE%.in >>doc\Makefile
REM build in release or debug mode
type qtools\qtools.pro.in | sed "s/\$extraopts/%MODE%/g" >qtools\qtools.pro
type src\libdoxygen.pro.in | sed "s/\$extraopts/%MODE%/g" >src\libdoxygen.pro
type src\doxygen.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxygen.pro
type src\doxytag.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxytag.pro
type src\doxysearch.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxysearch.pro
......
Name: doxygen
Version: 1.2.4-20010107
Version: 1.2.4-20010121
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -75,3 +75,4 @@ INCLUDEPATH = .
TMAKE_CXXFLAGS = -DQT_NO_CODECS -DQT_LITE_UNICODE
win32:TMAKE_CXXFLAGS += -DQT_NODLL
OBJECTS_DIR = ../objects
DESTDIR = ../lib
......@@ -14,12 +14,16 @@
# input used in their production; they are not affected by this license.
#
all: Makefile.doxygen Makefile.doxytag Makefile.doxysearch Makefile
all: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch Makefile
$(MAKE) -f Makefile.libdoxygen $@
$(MAKE) -f Makefile.doxygen $@
$(MAKE) -f Makefile.doxytag $@
$(MAKE) -f Makefile.doxysearch $@
Makefile.doxygen: doxygen.pro doxygen.t
Makefile.libdoxygen: libdoxygen.pro libdoxygen.t
$(ENV) $(PERL) $(TMAKE) libdoxygen.pro >Makefile.libdoxygen
Makefile.doxygen: doxygen.pro
$(ENV) $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen
Makefile.doxytag: doxytag.pro doxytag.t
......@@ -29,11 +33,13 @@ Makefile.doxysearch: doxysearch.pro
$(ENV) $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch
tmake:
$(ENV) $(PERL) $(TMAKE) libdoxygen.pro >Makefile.libdoxygen
$(ENV) $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen
$(ENV) $(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag
$(ENV) $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch
clean: Makefile.doxygen Makefile.doxytag Makefile.doxysearch
clean: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch
$(MAKE) -f Makefile.libdoxygen clean
$(MAKE) -f Makefile.doxygen clean
$(MAKE) -f Makefile.doxytag clean
$(MAKE) -f Makefile.doxysearch clean
......
......@@ -33,7 +33,7 @@
#include "example.h"
#include "outputlist.h"
#include "dot.h"
#include "xml.h"
//#include "xml.h"
static QCString stripExtension(const char *fName)
{
......@@ -155,8 +155,8 @@ void ClassDef::addMemberListToGroup(MemberList *ml)
int groupId=md->getMemberGroupId();
if (groupId!=-1)
{
QCString *pGrpHeader = memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId];
QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = Doxygen::memberDocDict[groupId];
if (pGrpHeader)
{
MemberGroup *mg = memberGroupDict->find(groupId);
......@@ -721,10 +721,10 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " <compound kind=\"" << compoundTypeString();
tagFile << "\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
Doxygen::tagFile << " <compound kind=\"" << compoundTypeString();
Doxygen::tagFile << "\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
}
......@@ -754,20 +754,20 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
if (!Config::genTagFile.isEmpty())
{
tagFile << " <base";
Doxygen::tagFile << " <base";
if (bcd->prot==Protected)
{
tagFile << " protection=\"protected\"";
Doxygen::tagFile << " protection=\"protected\"";
}
else if (bcd->prot==Private)
{
tagFile << " protection=\"private\"";
Doxygen::tagFile << " protection=\"private\"";
}
if (bcd->virt==Virtual)
{
tagFile << " virtualness=\"virtual\"";
Doxygen::tagFile << " virtualness=\"virtual\"";
}
tagFile << ">" << convertToXML(cd->name()) << "</base>" << endl;
Doxygen::tagFile << ">" << convertToXML(cd->name()) << "</base>" << endl;
}
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers);
}
......@@ -1121,7 +1121,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
while (file)
{
bool ambig;
FileDef *fd=findFileDef(inputNameDict,file,ambig);
FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig);
if (fd)
{
if (first)
......@@ -1169,7 +1169,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " </compound>" << endl;
writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
}
endFile(ol);
......@@ -1254,7 +1255,9 @@ void ClassDef::writeMemberList(OutputList &ol)
// generate link to the class instead.
{
ol.writeListItem();
ol.writeBoldString(md->name());
ol.startBold();
ol.docify(md->name());
ol.endBold();
if ( md->isFunction() || md->isSignal() || md->isSlot() )
ol.docify(md->argsString());
else if (md->isEnumerate())
......@@ -1271,7 +1274,9 @@ void ClassDef::writeMemberList(OutputList &ol)
}
else
{
ol.writeBoldString(cd->name());
ol.startBold();
ol.docify(cd->name());
ol.endBold();
}
ol.writeString(")");
memberWritten=TRUE;
......@@ -1851,126 +1856,6 @@ void ClassDef::determineIntfUsageRelation()
}
#endif
void ClassDef::generateXMLSection(QTextStream &t,MemberList *ml,const char *type)
{
if (ml->count()>0)
{
t << " <sectiondef type=\"" << type << "\">" << endl;
t << " <memberlist>" << endl;
MemberListIterator mli(*ml);
MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli)
{
md->generateXML(t,this);
}
t << " </memberlist>" << endl;
t << " </sectiondef>" << endl;
}
}
void ClassDef::generateXML(QTextStream &t)
{
if (name().find('@')!=-1) return; // skip anonymous compounds
t << " <compounddef id=\""
<< getOutputFileBase() << "\" type=\""
<< compoundTypeString() << "\">" << endl;
t << " <compoundname>";
writeXMLString(t,name());
t << "</compoundname>" << endl;
if (inherits->count()>0)
{
t << " <basecompoundlist>" << endl;
BaseClassListIterator bcli(*inherits);
BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli)
{
t << " <basecompoundref idref=\""
<< bcd->classDef->getOutputFileBase()
<< "\" prot=\"";
switch (bcd->prot)
{
case Public: t << "public"; break;
case Protected: t << "protected"; break;
case Private: t << "private"; break;
}
t << "\" virt=\"";
switch(bcd->virt)
{
case Normal: t << "non-virtual"; break;
case Virtual: t << "virtual"; break;
case Pure: t <<"pure-virtual"; break;
}
t << "\"/>" << endl;
}
t << " </basecompoundlist>" << endl;
}
if (inheritedBy->count()>0)
{
t << " <derivedcompoundlist>" << endl;
BaseClassListIterator bcli(*inheritedBy);
BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli)
{
t << " <derivedcompoundref idref=\""
<< bcd->classDef->getOutputFileBase()
<< "\" prot=\"";
switch (bcd->prot)
{
case Public: t << "public"; break;
case Protected: t << "protected"; break;
case Private: t << "private"; break;
}
t << "\" virt=\"";
switch(bcd->virt)
{
case Normal: t << "non-virtual"; break;
case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break;
}
t << "\"/>" << endl;
}
t << " </derivedcompoundlist>" << endl;
}
int numMembers =
pubTypes.count()+pubMembers.count()+pubAttribs.count()+
pubSlots.count()+signals.count()+dcopMethods.count()+
pubStaticMembers.count()+
pubStaticAttribs.count()+proTypes.count()+proMembers.count()+
proAttribs.count()+proSlots.count()+proStaticMembers.count()+
proStaticAttribs.count()+priTypes.count()+priMembers.count()+
priAttribs.count()+priSlots.count()+priStaticMembers.count()+
priStaticAttribs.count()+friends.count()+related.count();
if (numMembers>0)
{
t << " <sectionlist>" << endl;
generateXMLSection(t,&pubTypes,"public-type");
generateXMLSection(t,&pubMembers,"public-func");
generateXMLSection(t,&pubAttribs,"public-attrib");
generateXMLSection(t,&pubSlots,"public-slot");
generateXMLSection(t,&signals,"signal");
generateXMLSection(t,&dcopMethods,"dcop-func");
generateXMLSection(t,&properties,"property");
generateXMLSection(t,&pubStaticMembers,"public-static-func");
generateXMLSection(t,&pubStaticAttribs,"public-static-attrib");
generateXMLSection(t,&proTypes,"protected-type");
generateXMLSection(t,&proMembers,"protected-func");
generateXMLSection(t,&proAttribs,"protected-attrib");
generateXMLSection(t,&proSlots,"protected-slot");
generateXMLSection(t,&proStaticMembers,"protected-static-func");
generateXMLSection(t,&proStaticAttribs,"protected-static-attrib");
generateXMLSection(t,&priTypes,"private-type");
generateXMLSection(t,&priMembers,"private-func");
generateXMLSection(t,&priAttribs,"private-attrib");
generateXMLSection(t,&priSlots,"private-slot");
generateXMLSection(t,&priStaticMembers,"private-static-func");
generateXMLSection(t,&priStaticAttribs,"private-static-attrib");
generateXMLSection(t,&friends,"signal");
generateXMLSection(t,&related,"related");
t << " </sectionlist>" << endl;
}
t << " </compounddef>" << endl;
}
PackageDef *ClassDef::packageDef() const
{
return fileDef ? fileDef->packageDef() : 0;
......
......@@ -126,25 +126,11 @@ class ClassDef : public Definition
void addMembersToMemberGroup();
void distributeMemberGroupDocumentation();
void generateXML(QTextStream &t);
void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
//void generateXML(QTextStream &t);
//void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
PackageDef *packageDef() const;
protected:
void addUsedInterfaceClasses(MemberDef *md,const char *typeStr);
void addMemberListToGroup(MemberList *);
private:
QCString fileName; // HTML containing the class docs
IncludeInfo *incInfo; // header file to refer to
QCString incName; // alternative include file name
QCString memListFileName;
QCString scopelessName; // name without any scopes
BaseClassList *inherits;
BaseClassList *inheritedBy;
NamespaceDef *nspace; // the namespace this class is in
/* member lists by protection */
MemberList pubMembers;
MemberList proMembers;
......@@ -180,6 +166,21 @@ class ClassDef : public Definition
MemberList variableMembers;
MemberList propertyMembers;
protected:
void addUsedInterfaceClasses(MemberDef *md,const char *typeStr);
void addMemberListToGroup(MemberList *);
private:
QCString fileName; // HTML containing the class docs
IncludeInfo *incInfo; // header file to refer to
QCString incName; // alternative include file name
QCString memListFileName;
QCString scopelessName; // name without any scopes
BaseClassList *inherits;
BaseClassList *inheritedBy;
NamespaceDef *nspace; // the namespace this class is in
/* user defined member groups */
MemberGroupList *memberGroupList;
MemberGroupDict *memberGroupDict;
......
......@@ -80,7 +80,7 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi
}
if (!Config::genTagFile.isEmpty())
{
tagFile << " <class kind=\"" << cd->compoundTypeString()
Doxygen::tagFile << " <class kind=\"" << cd->compoundTypeString()
<< "\">" << convertToXML(cd->name()) << "</class>" << endl;
}
ol.startMemberItem(FALSE);
......@@ -102,6 +102,25 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi
ol.endBold();
}
ol.endMemberItem(FALSE);
if (!cd->briefDescription().isEmpty())
{
ol.startMemberDescription();
parseDoc(ol,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->briefDescription());
if ((!cd->briefDescription().isEmpty() && Config::repeatBriefFlag) ||
!cd->documentation().isEmpty())
{
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.endEmphasis();
ol.docify(" ");
ol.startTextLink(cd->getOutputFileBase(),"_details");
parseText(ol,theTranslator->trMore());
ol.endTextLink();
ol.startEmphasis();
ol.popGeneratorState();
}
ol.endMemberDescription();
}
}
}
cd=next();
......
......@@ -21,10 +21,10 @@
#include "qtbc.h"
#include <stdio.h>
class OutputList;
class OutputDocInterface;
class FileDef;
extern void parseCode(OutputList &,const char *,const QCString &,
extern void parseCode(OutputDocInterface &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext();
......
......@@ -85,6 +85,7 @@ typedef QList<CodeVarDef> CodeVarList;
* statics
*/
static OutputDocInterface * g_code;
static CodeClassList g_codeClassList;
static CodeClassDict g_codeClassDict(1009);
static CodeVarList g_codeVarList;
......@@ -109,7 +110,6 @@ static bool g_inClass;
static QCString g_classScope;
static QCString g_realScope;
static QStack<void> g_scopeStack; // 1 if bracket starts a scope, 2 for internal blocks
static OutputList * g_code;
static CodeClassDef g_ccd;
static CodeVarDef g_cvd;
static bool g_exampleBlock;
......@@ -268,7 +268,7 @@ static void codifyLines(char *text)
* line numbers for each line. If \a text contains newlines, the link will be
* split into multiple links with the same destination, one for each line.
*/
static void writeMultiLineCodeLink(OutputList &ol,
static void writeMultiLineCodeLink(OutputDocInterface &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
......@@ -379,7 +379,7 @@ static void addParameter()
}
}
static void generateClassLink(OutputList &ol,char *clName,int *clNameLen=0)
static void generateClassLink(OutputDocInterface &ol,char *clName,int *clNameLen=0)
{
int i=0;
QCString className=clName;
......@@ -450,7 +450,7 @@ static ClassDef *stripClassName(const char *s)
}
static bool getLink(const char *className,
const char *memberName,OutputList &result,
const char *memberName,OutputDocInterface &result,
const char *text=0)
{
MemberDef *md;
......@@ -505,10 +505,10 @@ static bool getLink(const char *className,
return FALSE;
}
static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *memName)
static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const char *memName)
{
//printf("generateClassMemberLink(%s,%s)\n",mcd->name().data(),memName);
MemberName *mmn=memberNameDict[memName];
MemberName *mmn=Doxygen::memberNameDict[memName];
if (mmn)
{
MemberNameIterator mmni(*mmn);
......@@ -548,7 +548,7 @@ static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *mem
return FALSE;
}
static void generateMemberLink(OutputList &ol,const char *varName,
static void generateMemberLink(OutputDocInterface &ol,const char *varName,
char *memName)
{
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
......@@ -567,21 +567,23 @@ static void generateMemberLink(OutputList &ol,const char *varName,
if (ccd)
{
//printf("Class found!\n");
OutputList result(&ol);
if (getLink(ccd->name,memName,result))
OutputDocInterface *result = ol.clone();
if (getLink(ccd->name,memName,*result))
{
//printf("Found result!\n");
ol+=result;
ol.append(result);
delete result;
return;
}
char *s=ccd->bases.first();
while (s)
{
OutputList result(&ol);
if (getLink(s,memName,result))
OutputDocInterface *result = ol.clone();
if (getLink(s,memName,*result))
{
//printf("Found result!\n");
ol+=result;
ol.append(result);
delete result;
return;
}
s=ccd->bases.next();
......@@ -590,16 +592,17 @@ static void generateMemberLink(OutputList &ol,const char *varName,
else
{
//printf("Class not found!\n");
OutputList result(&ol);
OutputDocInterface *result = ol.clone();
//printf("cvd->type=`%s'\n",cvd->type.data());
if (getLink(cvd->type,memName,result))
if (getLink(cvd->type,memName,*result))
{
ol+=result;
ol.append(result);
}
else
{
codifyLines(memName);
}
delete result;
return;
}
}
......@@ -609,7 +612,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
if (vcd && vcd->isLinkable())
{
//printf("Found class %s for variable `%s'\n",g_classScope.data(),varName);
MemberName *vmn=memberNameDict[varName];
MemberName *vmn=Doxygen::memberNameDict[varName];
if (vmn==0)
{
int vi;
......@@ -619,7 +622,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
{
ClassDef *jcd = getClass(vn.left(vi));
vn=vn.right(vn.length()-vi-2);
vmn=memberNameDict[vn];
vmn=Doxygen::memberNameDict[vn];
//printf("Trying name `%s' scope=%s\n",vn.data(),scope.data());
if (vmn)
{
......@@ -666,9 +669,9 @@ static void generateMemberLink(OutputList &ol,const char *varName,
return;
}
static void generateFunctionLink(OutputList &ol,char *funcName)
static void generateFunctionLink(OutputDocInterface &ol,char *funcName)
{
OutputList result(&ol);
OutputDocInterface *result = ol.clone();
CodeClassDef *ccd=0;
QCString locScope=g_classScope.copy();
QCString locFunc=removeRedundantWhiteSpace(funcName);
......@@ -693,22 +696,24 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
char *s=ccd->bases.first();
while (s)
{
if (getLink(s,locFunc,result,funcName))
if (getLink(s,locFunc,*result,funcName))
{
ol+=result;
ol.append(result);
delete result;
return;
}
s=ccd->bases.next();
}
}
if (getLink(locScope,locFunc,result,funcName))
if (getLink(locScope,locFunc,*result,funcName))
{
ol+=result;
ol.append(result);
}
else
{
codifyLines(funcName);
}
delete result;
return;
}
......@@ -808,7 +813,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
//FileInfo *f;
bool ambig;
FileDef *fd;
if ((fd=findFileDef(inputNameDict,yytext,ambig)) &&
if ((fd=findFileDef(Doxygen::inputNameDict,yytext,ambig)) &&
fd->isLinkable())
{
g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext);
......@@ -1561,12 +1566,12 @@ void initParseCodeContext()
g_anchorCount = 0;
}
void parseCode(OutputList &ol,const char *className,const QCString &s,
void parseCode(OutputDocInterface &od,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd,
int startLine,int endLine,bool inlineFragment)
{
if (s.isEmpty()) return;
g_code = new OutputList(&ol);
g_code = od.clone();
g_inputString = s;
g_inputPosition = 0;
g_currentFontClass = 0;
......@@ -1606,7 +1611,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
BEGIN( Body );
codeYYlex();
endFontClass();
ol+=*g_code;
od.append(g_code);
delete g_code;
return;
}
......
/* This file was generated by configgen on Sun Dec 3 18:27:54 2000
/* This file was generated by configgen on Sun Jan 14 14:24:47 2001
* from config_templ.h
*
* DO NOT EDIT!
......
/* This file was generated by configgen on Fri Dec 15 14:00:31 2000
/* This file was generated by configgen on Sun Jan 14 14:24:47 2001
* from config_templ.l
*
* DO NOT EDIT!
......@@ -2657,95 +2657,6 @@ void checkConfig()
#endif
}
// Test to see if output directory is valid
if (Config::outputDir.isEmpty())
Config::outputDir=QDir::currentDirPath();
else
{
QDir dir(Config::outputDir);
if (!dir.exists())
{
dir.setPath(QDir::currentDirPath());
if (!dir.mkdir(Config::outputDir))
{
err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not "
"exist and cannot be created\n",Config::outputDir.data());
exit(1);
}
else if (!Config::quietFlag)
{
err("Notice: Output directory `%s' does not exist. "
"I have created it for you.\n", Config::outputDir.data());
}
dir.cd(Config::outputDir);
}
Config::outputDir=dir.absPath();
}
if (Config::htmlOutputDir.isEmpty() && Config::generateHtml)
{
Config::htmlOutputDir=Config::outputDir+"/html";
}
else if (Config::htmlOutputDir && Config::htmlOutputDir[0]!='/')
{
Config::htmlOutputDir.prepend(Config::outputDir+'/');
}
QDir htmlDir(Config::htmlOutputDir);
if (Config::generateHtml && !htmlDir.exists() &&
!htmlDir.mkdir(Config::htmlOutputDir))
{
err("Could not create output directory %s\n",Config::htmlOutputDir.data());
exit(1);
}
if (Config::latexOutputDir.isEmpty() && Config::generateLatex)
{
Config::latexOutputDir=Config::outputDir+"/latex";
}
else if (Config::latexOutputDir && Config::latexOutputDir[0]!='/')
{
Config::latexOutputDir.prepend(Config::outputDir+'/');
}
QDir latexDir(Config::latexOutputDir);
if (Config::generateLatex && !latexDir.exists() &&
!latexDir.mkdir(Config::latexOutputDir))
{
err("Could not create output directory %s\n",Config::latexOutputDir.data());
exit(1);
}
if (Config::rtfOutputDir.isEmpty() && Config::generateRTF)
{
Config::rtfOutputDir=Config::outputDir+"/rtf";
}
else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/')
{
Config::rtfOutputDir.prepend(Config::outputDir+'/');
}
QDir rtfDir(Config::rtfOutputDir);
if (Config::generateRTF && !rtfDir.exists() &&
!rtfDir.mkdir(Config::rtfOutputDir))
{
err("Could not create output directory %s\n",Config::rtfOutputDir.data());
exit(1);
}
if (Config::manOutputDir.isEmpty() && Config::generateMan)
{
Config::manOutputDir=Config::outputDir+"/man";
}
else if (Config::manOutputDir && Config::manOutputDir[0]!='/')
{
Config::manOutputDir.prepend(Config::outputDir+'/');
}
QDir manDir(Config::manOutputDir);
if (Config::generateMan && !manDir.exists() &&
!manDir.mkdir(Config::manOutputDir))
{
err("Could not create output directory %s\n",Config::manOutputDir.data());
exit(1);
}
// expand the relative stripFromPath values
char *sfp = Config::stripFromPath.first();
while (sfp)
......
......@@ -229,7 +229,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t,
// type.data(),scope.data(),name.data(),args.data());
int nb = name.findRev('[');
if (nb!=-1) // correct for [] in name ambigity (due to Java return type allowing [])
if (nb!=-1 && args.isEmpty()) // correct for [] in name ambigity (due to Java return type allowing [])
{
args.prepend(name.right(name.length()-nb));
name=name.left(nb);
......
......@@ -249,8 +249,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
BEGIN( ReadDocBlock );
}
<ReadFuncArgType,ReadFuncArgDef>[,)>] {
g_curArgTypeName=removeRedundantWhiteSpace(
g_curArgTypeName.simplifyWhiteSpace());
g_curArgTypeName=removeRedundantWhiteSpace(g_curArgTypeName);
g_curArgDefValue=g_curArgDefValue.stripWhiteSpace();
int l=g_curArgTypeName.length();
if (l>0)
......
......@@ -35,7 +35,7 @@ Definition::Definition(const char *df,int dl,
n=name;
brief=b;
doc=d;
sectionList=0,
sectionDict=0,
startBodyLine=endBodyLine=-1,
bodyDef=0;
sourceRefList=0;
......@@ -46,7 +46,7 @@ Definition::Definition(const char *df,int dl,
Definition::~Definition()
{
delete sectionList;
delete sectionDict;
delete sourceRefList;
delete sourceRefDict;
}
......@@ -90,18 +90,39 @@ void Definition::addSectionsToDefinition(QList<QCString> *anchorList)
while (s)
{
SectionInfo *si=0;
if (!s->isEmpty() && (si=sectionDict[*s]))
if (!s->isEmpty() && (si=Doxygen::sectionDict[*s]))
{
//printf("Add section `%s' to definition `%s'\n",
// si->label.data(),n.data());
if (sectionList==0) sectionList = new SectionList;
sectionList->append(si);
if (sectionDict==0)
{
sectionDict = new SectionDict(17);
}
if (sectionDict->find(*s)==0)
{
sectionDict->insert(*s,si);
}
si->definition = this;
}
s=anchorList->next();
}
}
void Definition::writeDocAnchorsToTagFile()
{
if (!Config::genTagFile.isEmpty() && sectionDict)
{
QDictIterator<SectionInfo> sdi(*sectionDict);
SectionInfo *si;
for (;(si=sdi.current());++sdi)
{
if (definitionType()==TypeMember) Doxygen::tagFile << " ";
Doxygen::tagFile << " <docanchor>" << si->label << "</docanchor>" << endl;
}
}
}
void Definition::setBriefDescription(const char *b)
{
brief=QCString(b).stripWhiteSpace();
......@@ -177,32 +198,34 @@ static bool readCodeFragment(const char *fileName,
}
if (found)
{
// full the line with spaces until the right column
int i;
for (i=0;i<col;i++) result+=' ';
// fill the line with spaces until the right column
QCString spaces;
spaces.fill(' ',col);
result+=spaces;
// copy until end of line
result+=c;
if (c==':') result+=cn;
startLine=lineNr;
const int maxLineLength=4096;
char lineStr[maxLineLength];
char *p=lineStr;
while ((c=f.getch())!='\n' && c!=-1) *p++=c;
//printf("First line str=`%s' atEnd=%d lineNr=%d endLine=%d\n",lineStr.data(),f.atEnd(),lineNr,endLine);
*p++='\n';
*p++='\0';
while (lineNr<endLine && !f.atEnd())
{
//printf("adding line=`%s' lineNr=%d\n",lineStr.data(),lineNr);
do
{
int size_read;
do {
// read up to maxLineLength-1 bytes, the last byte being zero
size_read = f.readLine(lineStr, maxLineLength);
result+=lineStr;
f.readLine(lineStr,maxLineLength);
} while (size_read == (maxLineLength-1));
lineNr++;
} while (lineNr<endLine && !f.atEnd());
int charIndex = result.findRev('}');
if (charIndex > 0)
{
result.truncate(charIndex+1);
result+='\n';
}
p=lineStr+strlen(lineStr);
while (--p>=lineStr && *p!='}') /* skip */;
*(++p)='\n';
*(++p)='\0';
result+=lineStr;
endLine=lineNr;
return TRUE;
}
......@@ -395,8 +418,6 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
ol.popGeneratorState();
}
bool Definition::hasDocumentation()
{
return !doc.isEmpty() || // has detailed docs
......
......@@ -23,7 +23,7 @@
class FileDef;
class OutputList;
class SectionList;
class SectionDict;
class MemberList;
class MemberDict;
class MemberDef;
......@@ -93,6 +93,7 @@ class Definition
* documentation.
*/
void addSectionsToDefinition(QList<QCString> *anchorList);
void writeDocAnchorsToTagFile();
// source references
void setBodySegment(int bls,int ble)
......@@ -136,7 +137,7 @@ class Definition
QCString brief; // brief description
QCString doc; // detailed description
QCString ref; // reference to external documentation
SectionList *sectionList; // list of all sections
SectionDict *sectionDict; // dictionary of all sections
MemberList *sourceRefList; // list of entities that refer to this
// entity in their definition
MemberDict *sourceRefDict;
......
......@@ -158,13 +158,13 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h)
if (!ref.isEmpty())
{
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
t << "href=\"";
if (!ref.isEmpty())
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
t << cd->getOutputFileBase() << ".html\" ";
t << "alt=\"" << cd->name();
......@@ -916,7 +916,7 @@ void TreeDiagram::drawConnectors(QTextStream &t,Image *image,
void clearVisitFlags()
{
ClassListIterator cli(classList);
ClassListIterator cli(Doxygen::classList);
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
......
......@@ -20,14 +20,14 @@
#include "qtbc.h"
class OutputList;
class OutputDocInterface;
extern void parseDoc(OutputList &ol,
extern void parseDoc(OutputDocInterface &ol,
const char *fileName,int startLine,
const char *clName, const char *memName,
const QCString &docString);
extern void parseExample(OutputList &ol,const QCString &docString,
extern void parseExample(OutputDocInterface &ol,const QCString &docString,
const char *fileName);
extern void parseText(OutputList &ol,const QCString &txtString);
extern void parseText(OutputDocInterface &ol,const QCString &txtString);
#endif
This diff is collapsed.
......@@ -87,13 +87,13 @@ static bool convertMapFile(QTextStream &t,const char *mapName)
if (*refPtr!='\0')
{
t << "doxygen=\"" << refPtr << ":";
if ((dest=tagDestinationDict[refPtr])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
t << "\" ";
}
t << "href=\"";
if (*refPtr!='\0')
{
if ((dest=tagDestinationDict[refPtr])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
}
t << urlPtr << "\" shape=\"rect\" coords=\""
<< x1 << "," << y1 << "," << x2 << "," << y2 << "\">" << endl;
......@@ -693,8 +693,8 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
// build a graph with each class as a node and the inheritance relations
// as edges
initClassHierarchy(&classList);
ClassListIterator cli(classList);
initClassHierarchy(&Doxygen::classList);
ClassListIterator cli(Doxygen::classList);
ClassDef *cd;
for (cli.toLast();(cd=cli.current());--cli)
{
......
This diff is collapsed.
......@@ -38,63 +38,60 @@ class PageSList;
class PageSDict;
class PageInfo;
extern PageSDict *exampleSDict;
extern PageSDict *pageSDict;
extern PageInfo *mainPage;
extern FileNameDict *includeNameDict;
extern FileNameDict *exampleNameDict;
extern FileNameDict *inputNameDict;
extern FileNameDict *imageNameDict;
typedef QList<QCString> StringList;
typedef QDict<FileDef> FileDict;
typedef QDict<QCString> StringDict;
typedef QDict<GroupDef> GroupDict;
extern ClassList classList;
extern ClassDict classDict;
extern QStrList tagfileList;
extern MemberNameList memberNameList;
extern MemberNameList functionNameList;
extern MemberNameDict memberNameDict;
extern MemberNameDict functionNameDict;
extern FileList fileList;
extern FileDict fileDict;
extern ClassDef unrelatedClass;
extern QTextStream tagFile;
extern SectionDict sectionDict;
extern FileNameList inputNameList;
extern StringDict typedefDict;
extern StringDict namespaceAliasDict;
extern GroupList groupList;
extern GroupDict groupDict;
extern NamespaceList namespaceList;
extern NamespaceDict namespaceDict;
extern FormulaList formulaList;
extern FormulaDict formulaDict;
extern FormulaDict formulaNameDict;
extern StringDict tagDestinationDict;
extern StringDict aliasDict;
extern QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading
extern QIntDict<QCString> memberDocDict; // dictionary of the member groups heading
extern QDict<void> expandAsDefinedDict;
extern PackageSDict packageDict;
extern int annotatedClasses;
extern int hierarchyClasses;
extern int documentedFunctions;
extern int documentedMembers;
extern int documentedDefines;
extern int documentedFiles;
extern int documentedHtmlFiles;
extern int documentedGroups;
extern int documentedNamespaces;
extern int documentedNamespaceMembers;
extern int documentedIncludeFiles;
extern int documentedPages;
extern int documentedPackages;
extern QCString spaces;
extern const char * getOverloadDocs();
/*! \brief This class serves as a namespace for global variables used by doxygen.
*
* All fields in this class are public and static, so they can be used directly.
*/
class Doxygen
{
public:
static ClassList classList;
static ClassDict classDict;
static PageSDict *exampleSDict;
static PageSDict *pageSDict;
static PageInfo *mainPage;
static FileNameDict *includeNameDict;
static FileNameDict *exampleNameDict;
static FileNameDict *inputNameDict;
static FileNameDict *imageNameDict;
static QStrList tagfileList;
static MemberNameList memberNameList;
static MemberNameList functionNameList;
static MemberNameDict memberNameDict;
static MemberNameDict functionNameDict;
static FileList fileList;
static FileDict fileDict;
static ClassDef unrelatedClass;
static QTextStream tagFile;
static SectionDict sectionDict;
static FileNameList inputNameList;
static StringDict typedefDict;
static StringDict namespaceAliasDict;
static GroupList groupList;
static GroupDict groupDict;
static NamespaceList namespaceList;
static NamespaceDict namespaceDict;
static FormulaList formulaList;
static FormulaDict formulaDict;
static FormulaDict formulaNameDict;
static StringDict tagDestinationDict;
static StringDict aliasDict;
static QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading
static QIntDict<QCString> memberDocDict; // dictionary of the member groups heading
static QDict<void> expandAsDefinedDict;
static PackageSDict packageDict;
};
void initDoxygen();
void readConfiguration(int argc, char **argv);
void parseInput();
void generateOutput();
#endif
......@@ -14,40 +14,22 @@
#
# TMake project file for doxygen
TEMPLATE = doxygen.t
CONFIG = console warn_on $extraopts
HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \
membername.h index.h memberlist.h definition.h \
entry.h logos.h instdox.h message.h code.h \
filedef.h util.h cppvalue.h constexp.h \
outputgen.h outputlist.h htmlgen.h latexgen.h \
filename.h defargs.h groupdef.h gifenc.h diagram.h image.h \
namespacedef.h version.h language.h translator.h \
translator_nl.h translator_se.h translator_cz.h translator_fr.h \
translator_it.h formula.h debug.h membergroup.h htmlhelp.h \
translator_ru.h translator_pl.h dot.h rtfgen.h xml.h xml_dtd.h \
reflist.h page.h sortdict.h translator_hu.h translator_kr.h \
translator_ro.h translator_si.h translator_cn.h ftvhelp.h \
treeview.h tagreader.h packagedef.h
SOURCES = doxygen.cpp scanner.cpp doc.cpp classdef.cpp classlist.cpp \
memberdef.cpp membername.cpp index.cpp memberlist.cpp \
entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \
config.cpp filedef.cpp util.cpp groupdef.cpp \
outputgen.cpp outputlist.cpp htmlgen.cpp latexgen.cpp mangen.cpp \
cppvalue.cpp ce_lex.cpp ce_parse.cpp pre.cpp \
filename.cpp declinfo.cpp defargs.cpp define.cpp \
diagram.cpp gifenc.cpp image.cpp namespacedef.cpp \
version.cpp language.cpp definition.cpp formula.cpp debug.cpp \
membergroup.cpp htmlhelp.cpp dot.cpp rtfgen.cpp xml.cpp \
reflist.cpp ftvhelp.cpp tagreader.cpp packagedef.cpp
unix:LIBS += -L../qtools -lqtools
TEMPLATE = app.t
CONFIG = console warn_on $extraopt
HEADERS = doxygen.h
SOURCES = main.cpp
unix:LIBS += -L../lib -ldoxygen -lqtools
win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../qtools -lqtools
win32-msvc:LIBS += qtools.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\qtools
win32-borland:LIBS += qtools.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\qtools
win32-mingw:LIBS += -L../lib -ldoxygen -lqtools
win32-msvc:LIBS += qtools.lib doxygen.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib doxygen.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib
win32:TMAKE_CXXFLAGS += -DQT_NODLL
INCLUDEPATH += ../qtools
TARGET = ../bin/doxygen
INCLUDEPATH += ../qtools .
DESTDIR = ../bin
TARGET = doxygen
unix:TARGETDEPS = ../lib/libdoxygen.a
win32:TARGETDEPS = ..\lib\doxygen.lib
OBJECTS_DIR = ../objects
......@@ -19,13 +19,13 @@ CONFIG = console warn_on $extraopts
HEADERS = suffixtree.h searchindex.h logos.h version.h
SOURCES = doxytag.cpp suffixtree.cpp searchindex.cpp \
logos.cpp version.cpp
unix:LIBS += -L../qtools -lqtools
unix:LIBS += -L../lib -lqtools
win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../qtools -lqtools
win32-mingw:LIBS += -L../lib -lqtools
win32-msvc:LIBS += qtools.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\qtools
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\qtools
win32-borland:TMAKE_LFLAGS += -L..\lib
win32:TMAKE_CXXFLAGS += -DQT_NODLL
INCLUDEPATH += ../qtools
OBJECTS_DIR = ../objects
......
......@@ -30,7 +30,7 @@
#include "dot.h"
#include "message.h"
#include "code.h"
#include "xml.h"
//#include "xml.h"
/*! create a new file definition, where \a p is the file path,
\a the file name, and \a ref is an HTML anchor name if the
......@@ -125,10 +125,10 @@ void FileDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " <compound kind=\"file\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <path>" << convertToXML(getPath()) << "</path>" << endl;
tagFile << " <filename>" << convertToXML(diskname) << ".html</filename>" << endl;
Doxygen::tagFile << " <compound kind=\"file\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <path>" << convertToXML(getPath()) << "</path>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(diskname) << ".html</filename>" << endl;
}
ol.startTextBlock();
......@@ -282,7 +282,7 @@ void FileDef::writeDocumentation(OutputList &ol)
);
if (!Config::genTagFile.isEmpty())
{
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
Doxygen::tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
}
}
else
......@@ -436,7 +436,8 @@ void FileDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " </compound>" << endl;
writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
}
endFile(ol);
......@@ -481,8 +482,8 @@ void FileDef::addMemberListToGroup(MemberList *ml,
int groupId=md->getMemberGroupId();
if ((md->*func)() && groupId!=-1)
{
QCString *pGrpHeader = memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId];
QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = Doxygen::memberDocDict[groupId];
//printf("Member `%s' pGrpHeader=%p\n",md->name().data(),pGrpHeader);
if (pGrpHeader)
{
......@@ -665,47 +666,6 @@ void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local
}
}
void FileDef::generateXMLSection(QTextStream &t,MemberList *ml,const char *type)
{
if (ml->count()>0)
{
t << " <sectiondef type=\"" << type << "\">" << endl;
t << " <memberlist>" << endl;
MemberListIterator mli(*ml);
MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli)
{
md->generateXML(t,this);
}
t << " </memberlist>" << endl;
t << " </sectiondef>" << endl;
}
}
void FileDef::generateXML(QTextStream &t)
{
t << " <compounddef id=\""
<< getOutputFileBase() << "\" type=\"file\">" << endl;
t << " <compoundname>";
writeXMLString(t,name());
t << "</compoundname>" << endl;
int numMembers = defineMembers.count()+protoMembers.count()+
typedefMembers.count()+enumMembers.count()+
funcMembers.count()+varMembers.count();
if (numMembers>0)
{
t << " <sectionlist>" << endl;
generateXMLSection(t,&defineMembers,"define");
generateXMLSection(t,&protoMembers,"prototype");
generateXMLSection(t,&typedefMembers,"typedef");
generateXMLSection(t,&enumMembers,"enum");
generateXMLSection(t,&funcMembers,"func");
generateXMLSection(t,&varMembers,"var");
t << " </sectionlist>" << endl;
}
t << " </compounddef>" << endl;
}
bool FileDef::generateSourceFile() const
{
return !isReference() &&
......
......@@ -135,13 +135,9 @@ class FileDef : public Definition
void addMembersToMemberGroup();
void distributeMemberGroupDocumentation();
void generateXML(QTextStream &t);
void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
//void generateXML(QTextStream &t);
//void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
MemberList allMemberList;
MemberList defineMembers;
MemberList protoMembers;
......@@ -150,6 +146,11 @@ class FileDef : public Definition
MemberList funcMembers;
MemberList varMembers;
protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
ClassList *classList;
QDict<IncludeInfo> *includeDict;
QList<IncludeInfo> *includeList;
......
......@@ -433,7 +433,7 @@ void FTVHelp::addContentsItem(bool isDir,
if (ref)
{
tagName += ":";
QCString *s = tagDestinationDict[ref];
QCString *s = Doxygen::tagDestinationDict[ref];
if (s)
{
tagDir = *s + "/";
......
......@@ -128,8 +128,8 @@ void GroupDef::addMemberListToGroup(MemberList *ml,
int groupId=md->getMemberGroupId();
if ((md->*func)() && groupId!=-1)
{
QCString *pGrpHeader = memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId];
QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = Doxygen::memberDocDict[groupId];
if (pGrpHeader)
{
MemberGroup *mg = memberGroupDict->find(groupId);
......@@ -271,10 +271,10 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " <compound kind=\"group\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <title>" << convertToXML(title) << "</title>" << endl;
tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
Doxygen::tagFile << " <compound kind=\"group\">" << endl;
Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
Doxygen::tagFile << " <title>" << convertToXML(title) << "</title>" << endl;
Doxygen::tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
}
ol.startMemberSections();
......@@ -293,7 +293,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name());
if (!Config::genTagFile.isEmpty())
{
tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
Doxygen::tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
}
ol.endMemberItem(FALSE);
if (!fd->briefDescription().isEmpty() && Config::briefMemDescFlag)
......@@ -322,7 +322,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),0,nd->name());
if (!Config::genTagFile.isEmpty())
{
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
Doxygen::tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
}
ol.endMemberItem(FALSE);
if (!nd->briefDescription().isEmpty() && Config::briefMemDescFlag)
......@@ -350,7 +350,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle());
if (!Config::genTagFile.isEmpty())
{
tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl;
Doxygen::tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl;
}
ol.endMemberItem(FALSE);
if (!gd->briefDescription().isEmpty() && Config::briefMemDescFlag)
......@@ -421,12 +421,12 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " <page>" << convertToXML(pageName) << "</page>" << endl;
Doxygen::tagFile << " <page>" << convertToXML(pageName) << "</page>" << endl;
}
SectionInfo *si=0;
if (!pi->title.isEmpty() && !pi->name.isEmpty() &&
(si=sectionDict[pi->name])!=0)
(si=Doxygen::sectionDict[pi->name])!=0)
{
ol.startSection(si->label,si->title,TRUE);
ol.docify(si->title);
......@@ -500,7 +500,8 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty())
{
tagFile << " </compound>" << endl;
writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
}
endFile(ol);
......@@ -516,7 +517,7 @@ void addClassToGroups(Entry *root,ClassDef *cd)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s]))
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
gd->addClass(cd);
//printf("Compound %s: in group %s\n",cd->name().data(),s->data());
......@@ -533,7 +534,7 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd)
{
GroupDef *gd=0;
//printf("group `%s'\n",s->data());
if (!s->isEmpty() && (gd=groupDict[*s]))
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
gd->addNamespace(nd);
//printf("Namespace %s: in group %s\n",nd->name().data(),s->data());
......@@ -548,7 +549,7 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s]))
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
gd->addGroup(subGroup);
}
......@@ -563,7 +564,7 @@ void addMemberToGroups(Entry *root,MemberDef *md)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s]))
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
GroupDef *mgd = md->getGroupDef();
if (mgd==0)
......@@ -592,7 +593,7 @@ void addExampleToGroups(Entry *root,PageInfo *eg)
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s]))
if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{
gd->addExample(eg);
//printf("Example %s: in group %s\n",eg->name().data(),s->data());
......
......@@ -181,7 +181,7 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l)
{
t << "<a class=\"qindexRef\" ";
t << "doxygen=\"" << s << ":";
if ((dest=tagDestinationDict[s])) t << *dest;
if ((dest=Doxygen::tagDestinationDict[s])) t << *dest;
if (strcmp(s,"_cgi")!=0) t << "/"; // small hack to get the cgi binary link right
t << "\" ";
}
......@@ -192,7 +192,7 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l)
t << "href=\"";
if (s)
{
if ((dest=tagDestinationDict[s])) t << *dest;
if ((dest=Doxygen::tagDestinationDict[s])) t << *dest;
if (strcmp(s,"_cgi")!=0) t << "/";
}
t << l << "\">";
......@@ -313,7 +313,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
{
t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
......@@ -323,7 +323,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html\">";
}
......@@ -368,7 +368,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
{
t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
......@@ -378,7 +378,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html";
if (anchor) t << "#" << anchor;
......@@ -395,7 +395,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
{
t << "<a class=\"codeRef\" ";
t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
else
......@@ -405,7 +405,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
t << "href=\"";
if (ref)
{
if ((dest=tagDestinationDict[ref])) t << *dest << "/";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
if (f) t << f << ".html";
if (anchor) t << "#" << anchor;
......@@ -468,12 +468,26 @@ void HtmlGenerator::endSection(const char *,bool sub)
t << "</a>" << endl;
}
void HtmlGenerator::writeSectionRef(const char *name,const char *lab,
const char *title)
void HtmlGenerator::writeSectionRef(const char *ref,const char *name,
const char *anchor,const char *title)
{
QCString *dest;
//printf("writeSectionRef(%s,%s,%s,%s)\n",ref,name,anchor,title);
QCString refName=name;
if (refName.right(5)!=".html") refName+=".html";
t << "<a href=\"" << refName << "#" << lab << "\">";
t << "<a ";
if (ref)
{
t << "doxygen=\"" << ref << ":";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
t << "href=\"";
if (ref)
{
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
}
t << refName << "#" << anchor << "\">";
docify(title);
t << "</a>";
}
......@@ -488,12 +502,6 @@ void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab,
t << "</a>";
}
void HtmlGenerator::writeSectionRefAnchor(const char *name,const char *lab,
const char *title)
{
writeSectionRef(name,lab,title);
}
void HtmlGenerator::docify(const char *str)
{
if (str)
......@@ -591,17 +599,17 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
d.writeImage(t,dir,fileName);
}
void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue)
{
QCString colorString;
colorString.sprintf("%02x%02x%02x",red,green,blue);
t << "<font color=\"#" << colorString << "\">";
}
void HtmlGenerator::endColorFont()
{
t << "</font>";
}
//void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue)
//{
// QCString colorString;
// colorString.sprintf("%02x%02x%02x",red,green,blue);
// t << "<font color=\"#" << colorString << "\">";
//}
//
//void HtmlGenerator::endColorFont()
//{
// t << "</font>";
//}
void HtmlGenerator::writeFormula(const char *n,const char *text)
{
......
......@@ -44,7 +44,6 @@ class HtmlGenerator : public OutputGenerator
bool isEnabled(OutputType o) { return (o==Html && active); }
OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; }
//void generateExternalIndex();
void startFile(const char *name,const char *title,bool external);
void writeFooter(int,bool);
......@@ -127,8 +126,8 @@ class HtmlGenerator : public OutputGenerator
void endPreFragment() { t << "</pre>"; }
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
void writeBoldString(const char *text)
{ t << "<b>"; docify(text); t << "</b>"; }
//void writeBoldString(const char *text)
// { t << "<b>"; docify(text); t << "</b>"; }
void startEmphasis() { t << "<em>"; }
void endEmphasis() { t << "</em>"; }
void startBold() { t << "<b>"; }
......@@ -185,17 +184,17 @@ class HtmlGenerator : public OutputGenerator
void endDescList() { t << "</dl>"; }
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *);
void writeSectionRef(const char *,const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *);
void addIndexItem(const char *,const char *) {}
void startIndent();
void endIndent();
void writeSynopsis() {}
void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *);
void startColorFont(uchar r,uchar g,uchar b);
void endColorFont();
//void startColorFont(uchar r,uchar g,uchar b);
//void endColorFont();
void startPageRef() {}
void endPageRef(const char *,const char *) {}
void startQuickIndexItem(const char *,const char *);
......
This diff is collapsed.
......@@ -67,16 +67,25 @@ void writeGraphicalClassHierarchy(OutputList &ol);
void writeGraphInfo(OutputList &ol);
void writePackageIndex(OutputList &ol);
int countClassHierarchy();
int countClassMembers();
int countFileMembers();
void countFiles(int &htmlFiles,int &files);
int countGroups();
int countNamespaces();
int countAnnotatedClasses();
int countNamespaceMembers();
int countIncludeFiles();
int countRelatedPages();
int countPackages();
void countDataStructures();
extern int annotatedClasses;
extern int hierarchyClasses;
extern int documentedFunctions;
extern int documentedMembers;
extern int documentedDefines;
extern int documentedFiles;
extern int documentedHtmlFiles;
extern int documentedGroups;
extern int documentedNamespaces;
extern int documentedNamespaceMembers;
extern int documentedIncludeFiles;
extern int documentedPages;
extern int documentedPackages;
void startTitle(OutputList &ol,const char *fileName);
void endTitle(OutputList &ol,const char *fileName,const char *name);
void startFile(OutputList &ol,const char *name,const char *title,bool external=FALSE);
void endFile(OutputList &ol,bool external=FALSE);
#endif
This diff is collapsed.
......@@ -114,8 +114,8 @@ class LatexGenerator : public OutputGenerator
void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl; }
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
void writeBoldString(const char *text)
{ t << "{\\bf "; docify(text); t << "}"; }
//void writeBoldString(const char *text)
// { t << "{\\bf "; docify(text); t << "}"; }
void startEmphasis() { t << "{\\em "; }
void endEmphasis() { t << "}"; }
void startBold() { t << "{\\bf "; }
......@@ -182,9 +182,9 @@ class LatexGenerator : public OutputGenerator
void endDescList() { t << "\\end{Desc}" << endl; }
void startSection(const char *,const char *,bool);
void endSection(const char *,bool);
void writeSectionRef(const char *,const char *,const char *);
void writeSectionRef(const char *,const char *,const char *,const char *);
void writeSectionRefItem(const char *,const char *,const char *);
void writeSectionRefAnchor(const char *,const char *,const char *);
//void writeSectionRefAnchor(const char *,const char *,const char *);
void addIndexItem(const char *,const char *);
void startIndent() {}
void endIndent() {}
......@@ -192,8 +192,8 @@ class LatexGenerator : public OutputGenerator
//void generateExternalIndex() {}
void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *);
void startColorFont(uchar,uchar,uchar) {}
void endColorFont() {}
//void startColorFont(uchar,uchar,uchar) {}
//void endColorFont() {}
void startPageRef();
void endPageRef(const char *,const char *);
void startQuickIndexItem(const char *,const char *) {}
......
This diff is collapsed.
......@@ -14,7 +14,7 @@
#!
#! doxygen.t: This is a custom template for building Doxygen
#!
#$ IncludeTemplate("app.t");
#$ IncludeTemplate("lib.t");
LEX = flex
YACC = bison
......@@ -75,9 +75,6 @@ sub GenerateDep {
$(YACC) -l -d -p cppExpYY constexp.y -o ce_parse.c
-rm ce_parse.c
xml_dtd.h: doxygen.dtd
cat doxygen.dtd | sed -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >xml_dtd.h
treeview.h: treeview.js
cat treeview.js | sed -e "s/\\\\/\\\\\\\\/g" -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >treeview.h
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment