Commit 41e1827f authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.4-20010121

parent 583cc329
# 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. 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 #all: src/version.cpp configgen doxywizard
cd qtools ; $(MAKE) # cd qtools ; $(MAKE)
cd src ; $(MAKE) # cd src ; $(MAKE)
clean: FORCE clean: FORCE
cd examples ; $(MAKE) clean cd examples ; $(MAKE) clean
...@@ -11,6 +11,7 @@ clean: FORCE ...@@ -11,6 +11,7 @@ clean: FORCE
cd addon/configgen ; $(MAKE) clean cd addon/configgen ; $(MAKE) clean
cd addon/doxywizard ; $(MAKE) clean cd addon/doxywizard ; $(MAKE) clean
cd addon/xmlread ; $(MAKE) clean cd addon/xmlread ; $(MAKE) clean
cd addon/xmlgen ; $(MAKE) clean
-rm -f bin/doxy* -rm -f bin/doxy*
-rm -f objects/*.o -rm -f objects/*.o
...@@ -18,13 +19,17 @@ distclean: clean ...@@ -18,13 +19,17 @@ distclean: clean
cd src ; $(MAKE) distclean cd src ; $(MAKE) distclean
cd addon/configgen ; $(MAKE) distclean cd addon/configgen ; $(MAKE) distclean
cd addon/doxywizard ; $(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 bin/doxy*
-rm -f html -rm -f html
-rm -f objects/*.o -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 Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig -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 -f src/version.cpp
-rm -r addon/configgen/Makefile addon/doxywizard/Makefile -rm -r addon/configgen/Makefile addon/doxywizard/Makefile
-rm -f addon/configgen/Makefile.configgen -rm -f addon/configgen/Makefile.configgen
...@@ -36,6 +41,9 @@ distclean: clean ...@@ -36,6 +41,9 @@ distclean: clean
-rm -f addon/xmlread/xmlread.pro -rm -f addon/xmlread/xmlread.pro
-rm -f addon/xmlread/Makefile addon/xmlread/Makefile.xmlread -rm -f addon/xmlread/Makefile addon/xmlread/Makefile.xmlread
-rm -f addon/xmlread/*.o -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 install: doxywizard_install
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
...@@ -68,7 +76,7 @@ pdf: docs ...@@ -68,7 +76,7 @@ pdf: docs
cd latex ; $(MAKE) cd latex ; $(MAKE)
archive: clean 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 \ qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \ Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION packages VERSION packages
......
...@@ -10,11 +10,12 @@ clean: ...@@ -10,11 +10,12 @@ clean:
-del objects\*.o -del objects\*.o
distclean: clean distclean: clean
-del src\Makefile.doxygen \ -del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.doxytag \ src\Makefile.doxytag \
src\Makefile.doxysearch src\Makefile.doxysearch
-del Makefile src\Makefile examples\Makefile doc\Makefile -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 -del src\version.cpp
docs: docs:
......
...@@ -20,11 +20,12 @@ clean: FORCE ...@@ -20,11 +20,12 @@ clean: FORCE
-del objects\*.o -del objects\*.o
distclean: clean distclean: clean
-del src\Makefile.doxygen \ -del src\Makefile.libdoxygen \
src\Makefile.doxygen \
src\Makefile.doxytag \ src\Makefile.doxytag \
src\Makefile.doxysearch src\Makefile.doxysearch
-del Makefile src\Makefile examples\Makefile doc\Makefile -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 -del src\version.cpp
docs: FORCE docs: FORCE
......
DOXYGEN Version 1.2.4-20010107 DOXYGEN Version 1.2.4-20010121
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, 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() ...@@ -695,95 +695,6 @@ void checkConfig()
#endif #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 // expand the relative stripFromPath values
char *sfp = Config::stripFromPath.first(); char *sfp = Config::stripFromPath.first();
while (sfp) while (sfp)
......
...@@ -1509,17 +1509,17 @@ void init() ...@@ -1509,17 +1509,17 @@ void init()
); );
addDependency("manExtension","generateMan"); 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", //ConfigBool::add( "generateXML",
"GENERATE_XML", // "GENERATE_XML",
"FALSE", // "FALSE",
"generate XML output", // "generate XML output",
"If the GENERATE_XML tag is set to YES Doxygen will \n" // "If the GENERATE_XML tag is set to YES Doxygen will \n"
"generate an XML file that captures the structure of \n" // "generate an XML file that captures the structure of \n"
"the code including all documentation. Warning: This feature \n" // "the code including all documentation. Warning: This feature \n"
"is still experimental and very incomplete.\n" // "is still experimental and very incomplete.\n"
); // );
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Preprocessor","Configuration options related to the preprocessor "); 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. * 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 ...@@ -28,6 +28,7 @@ f_insttool=install
f_english=NO f_english=NO
f_configgen=NO f_configgen=NO
f_wizard=NO f_wizard=NO
f_xmlgen=NO
while test -n "$1"; do while test -n "$1"; do
case $1 in case $1 in
...@@ -70,6 +71,9 @@ while test -n "$1"; do ...@@ -70,6 +71,9 @@ while test -n "$1"; do
--with-doxywizard) --with-doxywizard)
f_wizard=YES f_wizard=YES
;; ;;
--with-xmlgen)
f_xmlgen=YES
;;
-h | -help | --help) -h | -help | --help)
f_help=y f_help=y
;; ;;
...@@ -87,7 +91,7 @@ if test "$f_help" = y; then ...@@ -87,7 +91,7 @@ if test "$f_help" = y; then
Usage: $0 [--help] [--shared] [--static] [--release] [--debug] Usage: $0 [--help] [--shared] [--static] [--release] [--debug]
[--perl name] [--make name] [--dot name] [--platform target] [--perl name] [--make name] [--dot name] [--platform target]
[--prefix dir] [--install name] [--english-only] [--prefix dir] [--install name] [--english-only]
[--with-configgen] [--with-doxywizard] [--with-configgen] [--with-doxywizard] [--with-xmlgen]
Options: Options:
...@@ -127,6 +131,9 @@ Options: ...@@ -127,6 +131,9 @@ Options:
--with-doxywizard Build the GUI frontend for doxygen. This --with-doxywizard Build the GUI frontend for doxygen. This
requires Qt 2.x.x requires Qt 2.x.x
--with-xmlgen Builds a separate doxygen executable that
generates XML output.
EOF EOF
test "$f_error" = y && exit 1 test "$f_error" = y && exit 1
exit 0; exit 0;
...@@ -373,7 +380,7 @@ TMAKE_CXXFLAGS += -DENGLISH_ONLY ...@@ -373,7 +380,7 @@ TMAKE_CXXFLAGS += -DENGLISH_ONLY
EOF EOF
fi 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 for i in $f_inmakefiles ; do
SRC=$i SRC=$i
...@@ -385,25 +392,32 @@ for i in $f_inmakefiles ; do ...@@ -385,25 +392,32 @@ for i in $f_inmakefiles ; do
# #
EOF EOF
cat .makeconfig $SRC >> $DST cat .makeconfig >> $DST
if test $i = Makefile.in; then 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 if test $f_configgen = YES; then
echo " \$(MAKE) -C addon/configgen" >> $DST echo " \$(MAKE) -C addon/configgen" >> $DST
fi fi
echo "doxywizard:" >> $DST
if test $f_wizard = YES; then if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard" >> $DST echo " \$(MAKE) -C addon/doxywizard" >> $DST
fi fi
if test $f_xmlgen = YES; then
echo " \$(MAKE) -C addon/xmlgen" >> $DST
fi
echo "" >> $DST
echo "doxywizard_install:" >> $DST echo "doxywizard_install:" >> $DST
if test $f_wizard = YES; then if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard install" >> $DST echo " \$(MAKE) -C addon/doxywizard install" >> $DST
fi fi
fi fi
cat $SRC >> $DST
echo " Created $DST from $SRC..." echo " Created $DST from $SRC..."
done 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 for i in $f_inprofiles ; do
SRC=$i SRC=$i
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<li>Requires very little overhead from the writer of the documentation. <li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used. 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, <li>Supports documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines. templates, variables, functions, typedefs, enums and defines.
<li>JavaDoc (1.1), Qt-Doc, and KDOC compatible. <li>JavaDoc (1.1), Qt-Doc, and KDOC compatible.
......
...@@ -49,8 +49,8 @@ documentation. Note that all attributes of a HTML tag are ignored ...@@ -49,8 +49,8 @@ documentation. Note that all attributes of a HTML tag are ignored
<li>\c </H1> Ends an unnumberd section. <li>\c </H1> Ends an unnumberd section.
<li>\c <H2> Starts an unnumbered subsection. <li>\c <H2> Starts an unnumbered subsection.
<li>\c </H2> Ends 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}, starts an unnumbered subsubsection using \c <H3> in HTML.
<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}, ends an unnumbered subsubsection using \c <H3> in HTML.
<li>\c <I> Starts a piece of text displayed in an italic font. <li>\c <I> Starts a piece of text displayed in an italic font.
<li>\c <INPUT> Does not generated any output. <li>\c <INPUT> Does not generated any output.
<li>\c </I> Ends a \c <I> section. <li>\c </I> Ends a \c <I> section.
......
...@@ -45,7 +45,7 @@ Documents produced by Doxygen are derivative works derived from the ...@@ -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. input used in their production; they are not affected by this license.
<h2>Introduction</h2> <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. (Corba, Microsoft and KDE-DCOP flavors) and C.
It can help you in three ways: 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 ...@@ -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 miss certain features?). Even if you decide not to use it, please let me
know why. 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> <h2>How to report a bug</h2>
If you think you have found a bug in doxygen, please report it so I can I would appreciate an e-mail if you have found
fix it. 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: Always try to include the following information in your bug report:
- The version of doxygen you are using. - The version of doxygen you are using (for instance 1.2.4).
- The name and version number of your operating system - 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 If you send only a (vague) description of a bug, you are usually not very
demonstrating the problem you have. Please make sure the example is valid helpful and will costs me much more time to figure out what you mean.
source code (try compiling it) and if the problem is really captured by In the worst-case your bug report may even be completely ignored by me!
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.
My e-mail address: <a href="mailto:dimitri@stack.nl">dimitri@stack.nl</a> 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 ...@@ -29,6 +29,7 @@ type doc\Makefile.win_%MAKE%.in >>doc\Makefile
REM build in release or debug mode REM build in release or debug mode
type qtools\qtools.pro.in | sed "s/\$extraopts/%MODE%/g" >qtools\qtools.pro 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\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\doxytag.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxytag.pro
type src\doxysearch.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxysearch.pro type src\doxysearch.pro.in | sed "s/\$extraopts/%MODE%/g" >src\doxysearch.pro
......
Name: doxygen Name: doxygen
Version: 1.2.4-20010107 Version: 1.2.4-20010121
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -75,3 +75,4 @@ INCLUDEPATH = . ...@@ -75,3 +75,4 @@ INCLUDEPATH = .
TMAKE_CXXFLAGS = -DQT_NO_CODECS -DQT_LITE_UNICODE TMAKE_CXXFLAGS = -DQT_NO_CODECS -DQT_LITE_UNICODE
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
DESTDIR = ../lib
...@@ -14,12 +14,16 @@ ...@@ -14,12 +14,16 @@
# input used in their production; they are not affected by this license. # 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.doxygen $@
$(MAKE) -f Makefile.doxytag $@ $(MAKE) -f Makefile.doxytag $@
$(MAKE) -f Makefile.doxysearch $@ $(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 $(ENV) $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen
Makefile.doxytag: doxytag.pro doxytag.t Makefile.doxytag: doxytag.pro doxytag.t
...@@ -29,11 +33,13 @@ Makefile.doxysearch: doxysearch.pro ...@@ -29,11 +33,13 @@ Makefile.doxysearch: doxysearch.pro
$(ENV) $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch $(ENV) $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch
tmake: tmake:
$(ENV) $(PERL) $(TMAKE) libdoxygen.pro >Makefile.libdoxygen
$(ENV) $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen $(ENV) $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen
$(ENV) $(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag $(ENV) $(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag
$(ENV) $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch $(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.doxygen clean
$(MAKE) -f Makefile.doxytag clean $(MAKE) -f Makefile.doxytag clean
$(MAKE) -f Makefile.doxysearch clean $(MAKE) -f Makefile.doxysearch clean
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include "example.h" #include "example.h"
#include "outputlist.h" #include "outputlist.h"
#include "dot.h" #include "dot.h"
#include "xml.h" //#include "xml.h"
static QCString stripExtension(const char *fName) static QCString stripExtension(const char *fName)
{ {
...@@ -155,8 +155,8 @@ void ClassDef::addMemberListToGroup(MemberList *ml) ...@@ -155,8 +155,8 @@ void ClassDef::addMemberListToGroup(MemberList *ml)
int groupId=md->getMemberGroupId(); int groupId=md->getMemberGroupId();
if (groupId!=-1) if (groupId!=-1)
{ {
QCString *pGrpHeader = memberHeaderDict[groupId]; QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId]; QCString *pDocs = Doxygen::memberDocDict[groupId];
if (pGrpHeader) if (pGrpHeader)
{ {
MemberGroup *mg = memberGroupDict->find(groupId); MemberGroup *mg = memberGroupDict->find(groupId);
...@@ -721,10 +721,10 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -721,10 +721,10 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <compound kind=\"" << compoundTypeString(); Doxygen::tagFile << " <compound kind=\"" << compoundTypeString();
tagFile << "\">" << endl; Doxygen::tagFile << "\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl; Doxygen::tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
} }
...@@ -754,20 +754,20 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -754,20 +754,20 @@ void ClassDef::writeDocumentation(OutputList &ol)
{ {
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <base"; Doxygen::tagFile << " <base";
if (bcd->prot==Protected) if (bcd->prot==Protected)
{ {
tagFile << " protection=\"protected\""; Doxygen::tagFile << " protection=\"protected\"";
} }
else if (bcd->prot==Private) else if (bcd->prot==Private)
{ {
tagFile << " protection=\"private\""; Doxygen::tagFile << " protection=\"private\"";
} }
if (bcd->virt==Virtual) 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); ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers);
} }
...@@ -1121,7 +1121,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1121,7 +1121,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
while (file) while (file)
{ {
bool ambig; bool ambig;
FileDef *fd=findFileDef(inputNameDict,file,ambig); FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig);
if (fd) if (fd)
{ {
if (first) if (first)
...@@ -1169,7 +1169,8 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1169,7 +1169,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " </compound>" << endl; writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
} }
endFile(ol); endFile(ol);
...@@ -1254,7 +1255,9 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1254,7 +1255,9 @@ void ClassDef::writeMemberList(OutputList &ol)
// generate link to the class instead. // generate link to the class instead.
{ {
ol.writeListItem(); ol.writeListItem();
ol.writeBoldString(md->name()); ol.startBold();
ol.docify(md->name());
ol.endBold();
if ( md->isFunction() || md->isSignal() || md->isSlot() ) if ( md->isFunction() || md->isSignal() || md->isSlot() )
ol.docify(md->argsString()); ol.docify(md->argsString());
else if (md->isEnumerate()) else if (md->isEnumerate())
...@@ -1271,7 +1274,9 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1271,7 +1274,9 @@ void ClassDef::writeMemberList(OutputList &ol)
} }
else else
{ {
ol.writeBoldString(cd->name()); ol.startBold();
ol.docify(cd->name());
ol.endBold();
} }
ol.writeString(")"); ol.writeString(")");
memberWritten=TRUE; memberWritten=TRUE;
...@@ -1851,126 +1856,6 @@ void ClassDef::determineIntfUsageRelation() ...@@ -1851,126 +1856,6 @@ void ClassDef::determineIntfUsageRelation()
} }
#endif #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 PackageDef *ClassDef::packageDef() const
{ {
return fileDef ? fileDef->packageDef() : 0; return fileDef ? fileDef->packageDef() : 0;
......
...@@ -126,25 +126,11 @@ class ClassDef : public Definition ...@@ -126,25 +126,11 @@ class ClassDef : public Definition
void addMembersToMemberGroup(); void addMembersToMemberGroup();
void distributeMemberGroupDocumentation(); void distributeMemberGroupDocumentation();
void generateXML(QTextStream &t); //void generateXML(QTextStream &t);
void generateXMLSection(QTextStream &t,MemberList *ml,const char *type); //void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
PackageDef *packageDef() const; 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 */ /* member lists by protection */
MemberList pubMembers; MemberList pubMembers;
MemberList proMembers; MemberList proMembers;
...@@ -180,6 +166,21 @@ class ClassDef : public Definition ...@@ -180,6 +166,21 @@ class ClassDef : public Definition
MemberList variableMembers; MemberList variableMembers;
MemberList propertyMembers; 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 */ /* user defined member groups */
MemberGroupList *memberGroupList; MemberGroupList *memberGroupList;
MemberGroupDict *memberGroupDict; MemberGroupDict *memberGroupDict;
......
...@@ -80,7 +80,7 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi ...@@ -80,7 +80,7 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi
} }
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <class kind=\"" << cd->compoundTypeString() Doxygen::tagFile << " <class kind=\"" << cd->compoundTypeString()
<< "\">" << convertToXML(cd->name()) << "</class>" << endl; << "\">" << convertToXML(cd->name()) << "</class>" << endl;
} }
ol.startMemberItem(FALSE); ol.startMemberItem(FALSE);
...@@ -102,6 +102,25 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi ...@@ -102,6 +102,25 @@ void ClassList::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *fi
ol.endBold(); ol.endBold();
} }
ol.endMemberItem(FALSE); 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(); cd=next();
......
...@@ -21,10 +21,10 @@ ...@@ -21,10 +21,10 @@
#include "qtbc.h" #include "qtbc.h"
#include <stdio.h> #include <stdio.h>
class OutputList; class OutputDocInterface;
class FileDef; class FileDef;
extern void parseCode(OutputList &,const char *,const QCString &, extern void parseCode(OutputDocInterface &,const char *,const QCString &,
bool ,const char *,FileDef *fd=0, bool ,const char *,FileDef *fd=0,
int startLine=-1,int endLine=-1,bool inlineFragment=FALSE); int startLine=-1,int endLine=-1,bool inlineFragment=FALSE);
extern void initParseCodeContext(); extern void initParseCodeContext();
......
...@@ -85,6 +85,7 @@ typedef QList<CodeVarDef> CodeVarList; ...@@ -85,6 +85,7 @@ typedef QList<CodeVarDef> CodeVarList;
* statics * statics
*/ */
static OutputDocInterface * g_code;
static CodeClassList g_codeClassList; static CodeClassList g_codeClassList;
static CodeClassDict g_codeClassDict(1009); static CodeClassDict g_codeClassDict(1009);
static CodeVarList g_codeVarList; static CodeVarList g_codeVarList;
...@@ -109,7 +110,6 @@ static bool g_inClass; ...@@ -109,7 +110,6 @@ static bool g_inClass;
static QCString g_classScope; static QCString g_classScope;
static QCString g_realScope; static QCString g_realScope;
static QStack<void> g_scopeStack; // 1 if bracket starts a scope, 2 for internal blocks static QStack<void> g_scopeStack; // 1 if bracket starts a scope, 2 for internal blocks
static OutputList * g_code;
static CodeClassDef g_ccd; static CodeClassDef g_ccd;
static CodeVarDef g_cvd; static CodeVarDef g_cvd;
static bool g_exampleBlock; static bool g_exampleBlock;
...@@ -268,7 +268,7 @@ static void codifyLines(char *text) ...@@ -268,7 +268,7 @@ static void codifyLines(char *text)
* line numbers for each line. If \a text contains newlines, the link will be * 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. * 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 *ref,const char *file,
const char *anchor,const char *text) const char *anchor,const char *text)
{ {
...@@ -379,7 +379,7 @@ static void addParameter() ...@@ -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; int i=0;
QCString className=clName; QCString className=clName;
...@@ -450,7 +450,7 @@ static ClassDef *stripClassName(const char *s) ...@@ -450,7 +450,7 @@ static ClassDef *stripClassName(const char *s)
} }
static bool getLink(const char *className, static bool getLink(const char *className,
const char *memberName,OutputList &result, const char *memberName,OutputDocInterface &result,
const char *text=0) const char *text=0)
{ {
MemberDef *md; MemberDef *md;
...@@ -505,10 +505,10 @@ static bool getLink(const char *className, ...@@ -505,10 +505,10 @@ static bool getLink(const char *className,
return FALSE; 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); //printf("generateClassMemberLink(%s,%s)\n",mcd->name().data(),memName);
MemberName *mmn=memberNameDict[memName]; MemberName *mmn=Doxygen::memberNameDict[memName];
if (mmn) if (mmn)
{ {
MemberNameIterator mmni(*mmn); MemberNameIterator mmni(*mmn);
...@@ -548,7 +548,7 @@ static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *mem ...@@ -548,7 +548,7 @@ static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *mem
return FALSE; return FALSE;
} }
static void generateMemberLink(OutputList &ol,const char *varName, static void generateMemberLink(OutputDocInterface &ol,const char *varName,
char *memName) char *memName)
{ {
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n", //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
...@@ -567,21 +567,23 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -567,21 +567,23 @@ static void generateMemberLink(OutputList &ol,const char *varName,
if (ccd) if (ccd)
{ {
//printf("Class found!\n"); //printf("Class found!\n");
OutputList result(&ol); OutputDocInterface *result = ol.clone();
if (getLink(ccd->name,memName,result)) if (getLink(ccd->name,memName,*result))
{ {
//printf("Found result!\n"); //printf("Found result!\n");
ol+=result; ol.append(result);
delete result;
return; return;
} }
char *s=ccd->bases.first(); char *s=ccd->bases.first();
while (s) while (s)
{ {
OutputList result(&ol); OutputDocInterface *result = ol.clone();
if (getLink(s,memName,result)) if (getLink(s,memName,*result))
{ {
//printf("Found result!\n"); //printf("Found result!\n");
ol+=result; ol.append(result);
delete result;
return; return;
} }
s=ccd->bases.next(); s=ccd->bases.next();
...@@ -590,16 +592,17 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -590,16 +592,17 @@ static void generateMemberLink(OutputList &ol,const char *varName,
else else
{ {
//printf("Class not found!\n"); //printf("Class not found!\n");
OutputList result(&ol); OutputDocInterface *result = ol.clone();
//printf("cvd->type=`%s'\n",cvd->type.data()); //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 else
{ {
codifyLines(memName); codifyLines(memName);
} }
delete result;
return; return;
} }
} }
...@@ -609,7 +612,7 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -609,7 +612,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
if (vcd && vcd->isLinkable()) if (vcd && vcd->isLinkable())
{ {
//printf("Found class %s for variable `%s'\n",g_classScope.data(),varName); //printf("Found class %s for variable `%s'\n",g_classScope.data(),varName);
MemberName *vmn=memberNameDict[varName]; MemberName *vmn=Doxygen::memberNameDict[varName];
if (vmn==0) if (vmn==0)
{ {
int vi; int vi;
...@@ -619,7 +622,7 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -619,7 +622,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
{ {
ClassDef *jcd = getClass(vn.left(vi)); ClassDef *jcd = getClass(vn.left(vi));
vn=vn.right(vn.length()-vi-2); 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()); //printf("Trying name `%s' scope=%s\n",vn.data(),scope.data());
if (vmn) if (vmn)
{ {
...@@ -666,9 +669,9 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -666,9 +669,9 @@ static void generateMemberLink(OutputList &ol,const char *varName,
return; 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; CodeClassDef *ccd=0;
QCString locScope=g_classScope.copy(); QCString locScope=g_classScope.copy();
QCString locFunc=removeRedundantWhiteSpace(funcName); QCString locFunc=removeRedundantWhiteSpace(funcName);
...@@ -693,22 +696,24 @@ static void generateFunctionLink(OutputList &ol,char *funcName) ...@@ -693,22 +696,24 @@ static void generateFunctionLink(OutputList &ol,char *funcName)
char *s=ccd->bases.first(); char *s=ccd->bases.first();
while (s) while (s)
{ {
if (getLink(s,locFunc,result,funcName)) if (getLink(s,locFunc,*result,funcName))
{ {
ol+=result; ol.append(result);
delete result;
return; return;
} }
s=ccd->bases.next(); s=ccd->bases.next();
} }
} }
if (getLink(locScope,locFunc,result,funcName)) if (getLink(locScope,locFunc,*result,funcName))
{ {
ol+=result; ol.append(result);
} }
else else
{ {
codifyLines(funcName); codifyLines(funcName);
} }
delete result;
return; return;
} }
...@@ -808,7 +813,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -808,7 +813,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
//FileInfo *f; //FileInfo *f;
bool ambig; bool ambig;
FileDef *fd; FileDef *fd;
if ((fd=findFileDef(inputNameDict,yytext,ambig)) && if ((fd=findFileDef(Doxygen::inputNameDict,yytext,ambig)) &&
fd->isLinkable()) fd->isLinkable())
{ {
g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext); g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext);
...@@ -1561,12 +1566,12 @@ void initParseCodeContext() ...@@ -1561,12 +1566,12 @@ void initParseCodeContext()
g_anchorCount = 0; 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, bool exBlock, const char *exName,FileDef *fd,
int startLine,int endLine,bool inlineFragment) int startLine,int endLine,bool inlineFragment)
{ {
if (s.isEmpty()) return; if (s.isEmpty()) return;
g_code = new OutputList(&ol); g_code = od.clone();
g_inputString = s; g_inputString = s;
g_inputPosition = 0; g_inputPosition = 0;
g_currentFontClass = 0; g_currentFontClass = 0;
...@@ -1606,7 +1611,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -1606,7 +1611,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
BEGIN( Body ); BEGIN( Body );
codeYYlex(); codeYYlex();
endFontClass(); endFontClass();
ol+=*g_code; od.append(g_code);
delete g_code; delete g_code;
return; 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 * from config_templ.h
* *
* DO NOT EDIT! * 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 * from config_templ.l
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -2657,95 +2657,6 @@ void checkConfig() ...@@ -2657,95 +2657,6 @@ void checkConfig()
#endif #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 // expand the relative stripFromPath values
char *sfp = Config::stripFromPath.first(); char *sfp = Config::stripFromPath.first();
while (sfp) while (sfp)
......
...@@ -229,7 +229,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, ...@@ -229,7 +229,7 @@ void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t,
// type.data(),scope.data(),name.data(),args.data()); // type.data(),scope.data(),name.data(),args.data());
int nb = name.findRev('['); 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)); args.prepend(name.right(name.length()-nb));
name=name.left(nb); name=name.left(nb);
......
...@@ -249,8 +249,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -249,8 +249,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
BEGIN( ReadDocBlock ); BEGIN( ReadDocBlock );
} }
<ReadFuncArgType,ReadFuncArgDef>[,)>] { <ReadFuncArgType,ReadFuncArgDef>[,)>] {
g_curArgTypeName=removeRedundantWhiteSpace( g_curArgTypeName=removeRedundantWhiteSpace(g_curArgTypeName);
g_curArgTypeName.simplifyWhiteSpace());
g_curArgDefValue=g_curArgDefValue.stripWhiteSpace(); g_curArgDefValue=g_curArgDefValue.stripWhiteSpace();
int l=g_curArgTypeName.length(); int l=g_curArgTypeName.length();
if (l>0) if (l>0)
......
...@@ -35,7 +35,7 @@ Definition::Definition(const char *df,int dl, ...@@ -35,7 +35,7 @@ Definition::Definition(const char *df,int dl,
n=name; n=name;
brief=b; brief=b;
doc=d; doc=d;
sectionList=0, sectionDict=0,
startBodyLine=endBodyLine=-1, startBodyLine=endBodyLine=-1,
bodyDef=0; bodyDef=0;
sourceRefList=0; sourceRefList=0;
...@@ -46,7 +46,7 @@ Definition::Definition(const char *df,int dl, ...@@ -46,7 +46,7 @@ Definition::Definition(const char *df,int dl,
Definition::~Definition() Definition::~Definition()
{ {
delete sectionList; delete sectionDict;
delete sourceRefList; delete sourceRefList;
delete sourceRefDict; delete sourceRefDict;
} }
...@@ -90,18 +90,39 @@ void Definition::addSectionsToDefinition(QList<QCString> *anchorList) ...@@ -90,18 +90,39 @@ void Definition::addSectionsToDefinition(QList<QCString> *anchorList)
while (s) while (s)
{ {
SectionInfo *si=0; SectionInfo *si=0;
if (!s->isEmpty() && (si=sectionDict[*s])) if (!s->isEmpty() && (si=Doxygen::sectionDict[*s]))
{ {
//printf("Add section `%s' to definition `%s'\n", //printf("Add section `%s' to definition `%s'\n",
// si->label.data(),n.data()); // si->label.data(),n.data());
if (sectionList==0) sectionList = new SectionList; if (sectionDict==0)
sectionList->append(si); {
sectionDict = new SectionDict(17);
}
if (sectionDict->find(*s)==0)
{
sectionDict->insert(*s,si);
}
si->definition = this; si->definition = this;
} }
s=anchorList->next(); 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) void Definition::setBriefDescription(const char *b)
{ {
brief=QCString(b).stripWhiteSpace(); brief=QCString(b).stripWhiteSpace();
...@@ -177,32 +198,34 @@ static bool readCodeFragment(const char *fileName, ...@@ -177,32 +198,34 @@ static bool readCodeFragment(const char *fileName,
} }
if (found) if (found)
{ {
// full the line with spaces until the right column // fill the line with spaces until the right column
int i; QCString spaces;
for (i=0;i<col;i++) result+=' '; spaces.fill(' ',col);
result+=spaces;
// copy until end of line // copy until end of line
result+=c; result+=c;
if (c==':') result+=cn; if (c==':') result+=cn;
startLine=lineNr; startLine=lineNr;
const int maxLineLength=4096; const int maxLineLength=4096;
char lineStr[maxLineLength]; char lineStr[maxLineLength];
char *p=lineStr; do
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); int size_read;
result+=lineStr; do {
f.readLine(lineStr,maxLineLength); // read up to maxLineLength-1 bytes, the last byte being zero
size_read = f.readLine(lineStr, maxLineLength);
result+=lineStr;
} while (size_read == (maxLineLength-1));
lineNr++; 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; endLine=lineNr;
return TRUE; return TRUE;
} }
...@@ -395,8 +418,6 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) ...@@ -395,8 +418,6 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
ol.popGeneratorState(); ol.popGeneratorState();
} }
bool Definition::hasDocumentation() bool Definition::hasDocumentation()
{ {
return !doc.isEmpty() || // has detailed docs return !doc.isEmpty() || // has detailed docs
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
class FileDef; class FileDef;
class OutputList; class OutputList;
class SectionList; class SectionDict;
class MemberList; class MemberList;
class MemberDict; class MemberDict;
class MemberDef; class MemberDef;
...@@ -93,6 +93,7 @@ class Definition ...@@ -93,6 +93,7 @@ class Definition
* documentation. * documentation.
*/ */
void addSectionsToDefinition(QList<QCString> *anchorList); void addSectionsToDefinition(QList<QCString> *anchorList);
void writeDocAnchorsToTagFile();
// source references // source references
void setBodySegment(int bls,int ble) void setBodySegment(int bls,int ble)
...@@ -136,7 +137,7 @@ class Definition ...@@ -136,7 +137,7 @@ class Definition
QCString brief; // brief description QCString brief; // brief description
QCString doc; // detailed description QCString doc; // detailed description
QCString ref; // reference to external documentation 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 MemberList *sourceRefList; // list of entities that refer to this
// entity in their definition // entity in their definition
MemberDict *sourceRefDict; MemberDict *sourceRefDict;
......
...@@ -158,13 +158,13 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h) ...@@ -158,13 +158,13 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,int x,int y,int w,int h)
if (!ref.isEmpty()) if (!ref.isEmpty())
{ {
t << "doxygen=\"" << ref << ":"; t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
t << "href=\""; t << "href=\"";
if (!ref.isEmpty()) if (!ref.isEmpty())
{ {
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
} }
t << cd->getOutputFileBase() << ".html\" "; t << cd->getOutputFileBase() << ".html\" ";
t << "alt=\"" << cd->name(); t << "alt=\"" << cd->name();
...@@ -916,7 +916,7 @@ void TreeDiagram::drawConnectors(QTextStream &t,Image *image, ...@@ -916,7 +916,7 @@ void TreeDiagram::drawConnectors(QTextStream &t,Image *image,
void clearVisitFlags() void clearVisitFlags()
{ {
ClassListIterator cli(classList); ClassListIterator cli(Doxygen::classList);
ClassDef *cd; ClassDef *cd;
for (;(cd=cli.current());++cli) for (;(cd=cli.current());++cli)
{ {
......
...@@ -20,14 +20,14 @@ ...@@ -20,14 +20,14 @@
#include "qtbc.h" #include "qtbc.h"
class OutputList; class OutputDocInterface;
extern void parseDoc(OutputList &ol, extern void parseDoc(OutputDocInterface &ol,
const char *fileName,int startLine, const char *fileName,int startLine,
const char *clName, const char *memName, const char *clName, const char *memName,
const QCString &docString); const QCString &docString);
extern void parseExample(OutputList &ol,const QCString &docString, extern void parseExample(OutputDocInterface &ol,const QCString &docString,
const char *fileName); const char *fileName);
extern void parseText(OutputList &ol,const QCString &txtString); extern void parseText(OutputDocInterface &ol,const QCString &txtString);
#endif #endif
This diff is collapsed.
...@@ -87,13 +87,13 @@ static bool convertMapFile(QTextStream &t,const char *mapName) ...@@ -87,13 +87,13 @@ static bool convertMapFile(QTextStream &t,const char *mapName)
if (*refPtr!='\0') if (*refPtr!='\0')
{ {
t << "doxygen=\"" << refPtr << ":"; t << "doxygen=\"" << refPtr << ":";
if ((dest=tagDestinationDict[refPtr])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
t << "href=\""; t << "href=\"";
if (*refPtr!='\0') if (*refPtr!='\0')
{ {
if ((dest=tagDestinationDict[refPtr])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
} }
t << urlPtr << "\" shape=\"rect\" coords=\"" t << urlPtr << "\" shape=\"rect\" coords=\""
<< x1 << "," << y1 << "," << x2 << "," << y2 << "\">" << endl; << x1 << "," << y1 << "," << x2 << "," << y2 << "\">" << endl;
...@@ -693,8 +693,8 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() ...@@ -693,8 +693,8 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
// build a graph with each class as a node and the inheritance relations // build a graph with each class as a node and the inheritance relations
// as edges // as edges
initClassHierarchy(&classList); initClassHierarchy(&Doxygen::classList);
ClassListIterator cli(classList); ClassListIterator cli(Doxygen::classList);
ClassDef *cd; ClassDef *cd;
for (cli.toLast();(cd=cli.current());--cli) for (cli.toLast();(cd=cli.current());--cli)
{ {
......
This diff is collapsed.
...@@ -38,63 +38,60 @@ class PageSList; ...@@ -38,63 +38,60 @@ class PageSList;
class PageSDict; class PageSDict;
class PageInfo; 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 QList<QCString> StringList;
typedef QDict<FileDef> FileDict; typedef QDict<FileDef> FileDict;
typedef QDict<QCString> StringDict; typedef QDict<QCString> StringDict;
typedef QDict<GroupDef> GroupDict; 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 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 #endif
...@@ -14,40 +14,22 @@ ...@@ -14,40 +14,22 @@
# #
# TMake project file for doxygen # TMake project file for doxygen
TEMPLATE = doxygen.t TEMPLATE = app.t
CONFIG = console warn_on $extraopts CONFIG = console warn_on $extraopt
HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \ HEADERS = doxygen.h
membername.h index.h memberlist.h definition.h \ SOURCES = main.cpp
entry.h logos.h instdox.h message.h code.h \ unix:LIBS += -L../lib -ldoxygen -lqtools
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
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../qtools -lqtools win32-mingw:LIBS += -L../lib -ldoxygen -lqtools
win32-msvc:LIBS += qtools.lib shell32.lib win32-msvc:LIBS += qtools.lib doxygen.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\qtools win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib shell32.lib win32-borland:LIBS += qtools.lib doxygen.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\qtools win32-borland:TMAKE_LFLAGS += -L..\lib
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
INCLUDEPATH += ../qtools INCLUDEPATH += ../qtools .
TARGET = ../bin/doxygen DESTDIR = ../bin
TARGET = doxygen
unix:TARGETDEPS = ../lib/libdoxygen.a
win32:TARGETDEPS = ..\lib\doxygen.lib
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
...@@ -19,13 +19,13 @@ CONFIG = console warn_on $extraopts ...@@ -19,13 +19,13 @@ CONFIG = console warn_on $extraopts
HEADERS = suffixtree.h searchindex.h logos.h version.h HEADERS = suffixtree.h searchindex.h logos.h version.h
SOURCES = doxytag.cpp suffixtree.cpp searchindex.cpp \ SOURCES = doxytag.cpp suffixtree.cpp searchindex.cpp \
logos.cpp version.cpp logos.cpp version.cpp
unix:LIBS += -L../qtools -lqtools unix:LIBS += -L../lib -lqtools
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../qtools -lqtools win32-mingw:LIBS += -L../lib -lqtools
win32-msvc:LIBS += qtools.lib shell32.lib 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:LIBS += qtools.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\qtools win32-borland:TMAKE_LFLAGS += -L..\lib
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
INCLUDEPATH += ../qtools INCLUDEPATH += ../qtools
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "dot.h" #include "dot.h"
#include "message.h" #include "message.h"
#include "code.h" #include "code.h"
#include "xml.h" //#include "xml.h"
/*! create a new file definition, where \a p is the file path, /*! 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 \a the file name, and \a ref is an HTML anchor name if the
...@@ -125,10 +125,10 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -125,10 +125,10 @@ void FileDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <compound kind=\"file\">" << endl; Doxygen::tagFile << " <compound kind=\"file\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <path>" << convertToXML(getPath()) << "</path>" << endl; Doxygen::tagFile << " <path>" << convertToXML(getPath()) << "</path>" << endl;
tagFile << " <filename>" << convertToXML(diskname) << ".html</filename>" << endl; Doxygen::tagFile << " <filename>" << convertToXML(diskname) << ".html</filename>" << endl;
} }
ol.startTextBlock(); ol.startTextBlock();
...@@ -282,7 +282,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -282,7 +282,7 @@ void FileDef::writeDocumentation(OutputList &ol)
); );
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl; Doxygen::tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
} }
} }
else else
...@@ -436,7 +436,8 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -436,7 +436,8 @@ void FileDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " </compound>" << endl; writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
} }
endFile(ol); endFile(ol);
...@@ -481,8 +482,8 @@ void FileDef::addMemberListToGroup(MemberList *ml, ...@@ -481,8 +482,8 @@ void FileDef::addMemberListToGroup(MemberList *ml,
int groupId=md->getMemberGroupId(); int groupId=md->getMemberGroupId();
if ((md->*func)() && groupId!=-1) if ((md->*func)() && groupId!=-1)
{ {
QCString *pGrpHeader = memberHeaderDict[groupId]; QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId]; QCString *pDocs = Doxygen::memberDocDict[groupId];
//printf("Member `%s' pGrpHeader=%p\n",md->name().data(),pGrpHeader); //printf("Member `%s' pGrpHeader=%p\n",md->name().data(),pGrpHeader);
if (pGrpHeader) if (pGrpHeader)
{ {
...@@ -665,47 +666,6 @@ void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local ...@@ -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 bool FileDef::generateSourceFile() const
{ {
return !isReference() && return !isReference() &&
......
...@@ -135,13 +135,9 @@ class FileDef : public Definition ...@@ -135,13 +135,9 @@ class FileDef : public Definition
void addMembersToMemberGroup(); void addMembersToMemberGroup();
void distributeMemberGroupDocumentation(); void distributeMemberGroupDocumentation();
void generateXML(QTextStream &t); //void generateXML(QTextStream &t);
void generateXMLSection(QTextStream &t,MemberList *ml,const char *type); //void generateXMLSection(QTextStream &t,MemberList *ml,const char *type);
protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
MemberList allMemberList; MemberList allMemberList;
MemberList defineMembers; MemberList defineMembers;
MemberList protoMembers; MemberList protoMembers;
...@@ -149,6 +145,11 @@ class FileDef : public Definition ...@@ -149,6 +145,11 @@ class FileDef : public Definition
MemberList enumMembers; MemberList enumMembers;
MemberList funcMembers; MemberList funcMembers;
MemberList varMembers; MemberList varMembers;
protected:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
private:
ClassList *classList; ClassList *classList;
QDict<IncludeInfo> *includeDict; QDict<IncludeInfo> *includeDict;
......
...@@ -433,7 +433,7 @@ void FTVHelp::addContentsItem(bool isDir, ...@@ -433,7 +433,7 @@ void FTVHelp::addContentsItem(bool isDir,
if (ref) if (ref)
{ {
tagName += ":"; tagName += ":";
QCString *s = tagDestinationDict[ref]; QCString *s = Doxygen::tagDestinationDict[ref];
if (s) if (s)
{ {
tagDir = *s + "/"; tagDir = *s + "/";
......
...@@ -128,8 +128,8 @@ void GroupDef::addMemberListToGroup(MemberList *ml, ...@@ -128,8 +128,8 @@ void GroupDef::addMemberListToGroup(MemberList *ml,
int groupId=md->getMemberGroupId(); int groupId=md->getMemberGroupId();
if ((md->*func)() && groupId!=-1) if ((md->*func)() && groupId!=-1)
{ {
QCString *pGrpHeader = memberHeaderDict[groupId]; QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = memberDocDict[groupId]; QCString *pDocs = Doxygen::memberDocDict[groupId];
if (pGrpHeader) if (pGrpHeader)
{ {
MemberGroup *mg = memberGroupDict->find(groupId); MemberGroup *mg = memberGroupDict->find(groupId);
...@@ -271,10 +271,10 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -271,10 +271,10 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <compound kind=\"group\">" << endl; Doxygen::tagFile << " <compound kind=\"group\">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <title>" << convertToXML(title) << "</title>" << endl; Doxygen::tagFile << " <title>" << convertToXML(title) << "</title>" << endl;
tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl; Doxygen::tagFile << " <filename>" << convertToXML(fileName) << ".html</filename>" << endl;
} }
ol.startMemberSections(); ol.startMemberSections();
...@@ -293,7 +293,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -293,7 +293,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name()); ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name());
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl; Doxygen::tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
} }
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
if (!fd->briefDescription().isEmpty() && Config::briefMemDescFlag) if (!fd->briefDescription().isEmpty() && Config::briefMemDescFlag)
...@@ -322,7 +322,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -322,7 +322,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),0,nd->name()); ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),0,nd->name());
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl; Doxygen::tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
} }
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
if (!nd->briefDescription().isEmpty() && Config::briefMemDescFlag) if (!nd->briefDescription().isEmpty() && Config::briefMemDescFlag)
...@@ -350,7 +350,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -350,7 +350,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle()); ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle());
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl; Doxygen::tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl;
} }
ol.endMemberItem(FALSE); ol.endMemberItem(FALSE);
if (!gd->briefDescription().isEmpty() && Config::briefMemDescFlag) if (!gd->briefDescription().isEmpty() && Config::briefMemDescFlag)
...@@ -421,12 +421,12 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -421,12 +421,12 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " <page>" << convertToXML(pageName) << "</page>" << endl; Doxygen::tagFile << " <page>" << convertToXML(pageName) << "</page>" << endl;
} }
SectionInfo *si=0; SectionInfo *si=0;
if (!pi->title.isEmpty() && !pi->name.isEmpty() && 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.startSection(si->label,si->title,TRUE);
ol.docify(si->title); ol.docify(si->title);
...@@ -500,7 +500,8 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -500,7 +500,8 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (!Config::genTagFile.isEmpty()) if (!Config::genTagFile.isEmpty())
{ {
tagFile << " </compound>" << endl; writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
} }
endFile(ol); endFile(ol);
...@@ -516,7 +517,7 @@ void addClassToGroups(Entry *root,ClassDef *cd) ...@@ -516,7 +517,7 @@ void addClassToGroups(Entry *root,ClassDef *cd)
for (;(s=sli.current());++sli) for (;(s=sli.current());++sli)
{ {
GroupDef *gd=0; GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s])) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{ {
gd->addClass(cd); gd->addClass(cd);
//printf("Compound %s: in group %s\n",cd->name().data(),s->data()); //printf("Compound %s: in group %s\n",cd->name().data(),s->data());
...@@ -533,7 +534,7 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd) ...@@ -533,7 +534,7 @@ void addNamespaceToGroups(Entry *root,NamespaceDef *nd)
{ {
GroupDef *gd=0; GroupDef *gd=0;
//printf("group `%s'\n",s->data()); //printf("group `%s'\n",s->data());
if (!s->isEmpty() && (gd=groupDict[*s])) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{ {
gd->addNamespace(nd); gd->addNamespace(nd);
//printf("Namespace %s: in group %s\n",nd->name().data(),s->data()); //printf("Namespace %s: in group %s\n",nd->name().data(),s->data());
...@@ -548,7 +549,7 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) ...@@ -548,7 +549,7 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup)
for (;(s=sli.current());++sli) for (;(s=sli.current());++sli)
{ {
GroupDef *gd=0; GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s])) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{ {
gd->addGroup(subGroup); gd->addGroup(subGroup);
} }
...@@ -563,7 +564,7 @@ void addMemberToGroups(Entry *root,MemberDef *md) ...@@ -563,7 +564,7 @@ void addMemberToGroups(Entry *root,MemberDef *md)
for (;(s=sli.current());++sli) for (;(s=sli.current());++sli)
{ {
GroupDef *gd=0; GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s])) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{ {
GroupDef *mgd = md->getGroupDef(); GroupDef *mgd = md->getGroupDef();
if (mgd==0) if (mgd==0)
...@@ -592,7 +593,7 @@ void addExampleToGroups(Entry *root,PageInfo *eg) ...@@ -592,7 +593,7 @@ void addExampleToGroups(Entry *root,PageInfo *eg)
for (;(s=sli.current());++sli) for (;(s=sli.current());++sli)
{ {
GroupDef *gd=0; GroupDef *gd=0;
if (!s->isEmpty() && (gd=groupDict[*s])) if (!s->isEmpty() && (gd=Doxygen::groupDict[*s]))
{ {
gd->addExample(eg); gd->addExample(eg);
//printf("Example %s: in group %s\n",eg->name().data(),s->data()); //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) ...@@ -181,7 +181,7 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l)
{ {
t << "<a class=\"qindexRef\" "; t << "<a class=\"qindexRef\" ";
t << "doxygen=\"" << s << ":"; 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 if (strcmp(s,"_cgi")!=0) t << "/"; // small hack to get the cgi binary link right
t << "\" "; t << "\" ";
} }
...@@ -192,7 +192,7 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l) ...@@ -192,7 +192,7 @@ void HtmlGenerator::startQuickIndexItem(const char *s,const char *l)
t << "href=\""; t << "href=\"";
if (s) if (s)
{ {
if ((dest=tagDestinationDict[s])) t << *dest; if ((dest=Doxygen::tagDestinationDict[s])) t << *dest;
if (strcmp(s,"_cgi")!=0) t << "/"; if (strcmp(s,"_cgi")!=0) t << "/";
} }
t << l << "\">"; t << l << "\">";
...@@ -313,7 +313,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f, ...@@ -313,7 +313,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
{ {
t << "<a class=\"elRef\" "; t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":"; t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
else else
...@@ -323,7 +323,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f, ...@@ -323,7 +323,7 @@ void HtmlGenerator::writeIndexItem(const char *ref,const char *f,
t << "href=\""; t << "href=\"";
if (ref) if (ref)
{ {
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
} }
if (f) t << f << ".html\">"; if (f) t << f << ".html\">";
} }
...@@ -368,7 +368,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f, ...@@ -368,7 +368,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
{ {
t << "<a class=\"elRef\" "; t << "<a class=\"elRef\" ";
t << "doxygen=\"" << ref << ":"; t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
else else
...@@ -378,7 +378,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f, ...@@ -378,7 +378,7 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
t << "href=\""; t << "href=\"";
if (ref) if (ref)
{ {
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
} }
if (f) t << f << ".html"; if (f) t << f << ".html";
if (anchor) t << "#" << anchor; if (anchor) t << "#" << anchor;
...@@ -395,7 +395,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f, ...@@ -395,7 +395,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
{ {
t << "<a class=\"codeRef\" "; t << "<a class=\"codeRef\" ";
t << "doxygen=\"" << ref << ":"; t << "doxygen=\"" << ref << ":";
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
else else
...@@ -405,7 +405,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f, ...@@ -405,7 +405,7 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
t << "href=\""; t << "href=\"";
if (ref) if (ref)
{ {
if ((dest=tagDestinationDict[ref])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
} }
if (f) t << f << ".html"; if (f) t << f << ".html";
if (anchor) t << "#" << anchor; if (anchor) t << "#" << anchor;
...@@ -468,12 +468,26 @@ void HtmlGenerator::endSection(const char *,bool sub) ...@@ -468,12 +468,26 @@ void HtmlGenerator::endSection(const char *,bool sub)
t << "</a>" << endl; t << "</a>" << endl;
} }
void HtmlGenerator::writeSectionRef(const char *name,const char *lab, void HtmlGenerator::writeSectionRef(const char *ref,const char *name,
const char *title) const char *anchor,const char *title)
{ {
QCString *dest;
//printf("writeSectionRef(%s,%s,%s,%s)\n",ref,name,anchor,title);
QCString refName=name; QCString refName=name;
if (refName.right(5)!=".html") refName+=".html"; 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); docify(title);
t << "</a>"; t << "</a>";
} }
...@@ -488,12 +502,6 @@ void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab, ...@@ -488,12 +502,6 @@ void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab,
t << "</a>"; t << "</a>";
} }
void HtmlGenerator::writeSectionRefAnchor(const char *name,const char *lab,
const char *title)
{
writeSectionRef(name,lab,title);
}
void HtmlGenerator::docify(const char *str) void HtmlGenerator::docify(const char *str)
{ {
if (str) if (str)
...@@ -591,17 +599,17 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d, ...@@ -591,17 +599,17 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
d.writeImage(t,dir,fileName); d.writeImage(t,dir,fileName);
} }
void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue) //void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue)
{ //{
QCString colorString; // QCString colorString;
colorString.sprintf("%02x%02x%02x",red,green,blue); // colorString.sprintf("%02x%02x%02x",red,green,blue);
t << "<font color=\"#" << colorString << "\">"; // t << "<font color=\"#" << colorString << "\">";
} //}
//
void HtmlGenerator::endColorFont() //void HtmlGenerator::endColorFont()
{ //{
t << "</font>"; // t << "</font>";
} //}
void HtmlGenerator::writeFormula(const char *n,const char *text) void HtmlGenerator::writeFormula(const char *n,const char *text)
{ {
......
...@@ -44,7 +44,6 @@ class HtmlGenerator : public OutputGenerator ...@@ -44,7 +44,6 @@ class HtmlGenerator : public OutputGenerator
bool isEnabled(OutputType o) { return (o==Html && active); } bool isEnabled(OutputType o) { return (o==Html && active); }
OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; } OutputGenerator *get(OutputType o) { return (o==Html) ? this : 0; }
//void generateExternalIndex(); //void generateExternalIndex();
void startFile(const char *name,const char *title,bool external); void startFile(const char *name,const char *title,bool external);
void writeFooter(int,bool); void writeFooter(int,bool);
...@@ -127,8 +126,8 @@ class HtmlGenerator : public OutputGenerator ...@@ -127,8 +126,8 @@ class HtmlGenerator : public OutputGenerator
void endPreFragment() { t << "</pre>"; } void endPreFragment() { t << "</pre>"; }
void startCodeLine() { col=0; } void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); } void endCodeLine() { codify("\n"); }
void writeBoldString(const char *text) //void writeBoldString(const char *text)
{ t << "<b>"; docify(text); t << "</b>"; } // { t << "<b>"; docify(text); t << "</b>"; }
void startEmphasis() { t << "<em>"; } void startEmphasis() { t << "<em>"; }
void endEmphasis() { t << "</em>"; } void endEmphasis() { t << "</em>"; }
void startBold() { t << "<b>"; } void startBold() { t << "<b>"; }
...@@ -185,17 +184,17 @@ class HtmlGenerator : public OutputGenerator ...@@ -185,17 +184,17 @@ class HtmlGenerator : public OutputGenerator
void endDescList() { t << "</dl>"; } void endDescList() { t << "</dl>"; }
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
void endSection(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 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 addIndexItem(const char *,const char *) {}
void startIndent(); void startIndent();
void endIndent(); void endIndent();
void writeSynopsis() {} void writeSynopsis() {}
void startClassDiagram(); void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *); void endClassDiagram(ClassDiagram &,const char *,const char *);
void startColorFont(uchar r,uchar g,uchar b); //void startColorFont(uchar r,uchar g,uchar b);
void endColorFont(); //void endColorFont();
void startPageRef() {} void startPageRef() {}
void endPageRef(const char *,const char *) {} void endPageRef(const char *,const char *) {}
void startQuickIndexItem(const char *,const char *); void startQuickIndexItem(const char *,const char *);
......
This diff is collapsed.
...@@ -67,16 +67,25 @@ void writeGraphicalClassHierarchy(OutputList &ol); ...@@ -67,16 +67,25 @@ void writeGraphicalClassHierarchy(OutputList &ol);
void writeGraphInfo(OutputList &ol); void writeGraphInfo(OutputList &ol);
void writePackageIndex(OutputList &ol); void writePackageIndex(OutputList &ol);
int countClassHierarchy(); void countDataStructures();
int countClassMembers();
int countFileMembers(); extern int annotatedClasses;
void countFiles(int &htmlFiles,int &files); extern int hierarchyClasses;
int countGroups(); extern int documentedFunctions;
int countNamespaces(); extern int documentedMembers;
int countAnnotatedClasses(); extern int documentedDefines;
int countNamespaceMembers(); extern int documentedFiles;
int countIncludeFiles(); extern int documentedHtmlFiles;
int countRelatedPages(); extern int documentedGroups;
int countPackages(); 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 #endif
This diff is collapsed.
...@@ -114,8 +114,8 @@ class LatexGenerator : public OutputGenerator ...@@ -114,8 +114,8 @@ class LatexGenerator : public OutputGenerator
void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl; } void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl; }
void startCodeLine() { col=0; } void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); } void endCodeLine() { codify("\n"); }
void writeBoldString(const char *text) //void writeBoldString(const char *text)
{ t << "{\\bf "; docify(text); t << "}"; } // { t << "{\\bf "; docify(text); t << "}"; }
void startEmphasis() { t << "{\\em "; } void startEmphasis() { t << "{\\em "; }
void endEmphasis() { t << "}"; } void endEmphasis() { t << "}"; }
void startBold() { t << "{\\bf "; } void startBold() { t << "{\\bf "; }
...@@ -182,9 +182,9 @@ class LatexGenerator : public OutputGenerator ...@@ -182,9 +182,9 @@ class LatexGenerator : public OutputGenerator
void endDescList() { t << "\\end{Desc}" << endl; } void endDescList() { t << "\\end{Desc}" << endl; }
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
void endSection(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 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 addIndexItem(const char *,const char *);
void startIndent() {} void startIndent() {}
void endIndent() {} void endIndent() {}
...@@ -192,8 +192,8 @@ class LatexGenerator : public OutputGenerator ...@@ -192,8 +192,8 @@ class LatexGenerator : public OutputGenerator
//void generateExternalIndex() {} //void generateExternalIndex() {}
void startClassDiagram(); void startClassDiagram();
void endClassDiagram(ClassDiagram &,const char *,const char *); void endClassDiagram(ClassDiagram &,const char *,const char *);
void startColorFont(uchar,uchar,uchar) {} //void startColorFont(uchar,uchar,uchar) {}
void endColorFont() {} //void endColorFont() {}
void startPageRef(); void startPageRef();
void endPageRef(const char *,const char *); void endPageRef(const char *,const char *);
void startQuickIndexItem(const char *,const char *) {} void startQuickIndexItem(const char *,const char *) {}
......
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.
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