summaryrefslogtreecommitdiff
path: root/gnuradio-core
diff options
context:
space:
mode:
authoreb2008-01-16 03:10:08 +0000
committereb2008-01-16 03:10:08 +0000
commit7811f7f3d743aebafbe5daf2f5088d139b774459 (patch)
treed37e1b3eb6b1c1831f56176ef07a7e865f94bde9 /gnuradio-core
parent9949abfaf792fd860cb6d73775b53b655ca5417b (diff)
downloadgnuradio-7811f7f3d743aebafbe5daf2f5088d139b774459.tar.gz
gnuradio-7811f7f3d743aebafbe5daf2f5088d139b774459.tar.bz2
gnuradio-7811f7f3d743aebafbe5daf2f5088d139b774459.zip
Merged eb/firas-doc -r7443:7444 into trunk. These changes allow
doxygen to generate a unified output that includes both C++ and Python docs. There's still work to do to get this cleaned up, but it's a great start! git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@7445 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-core')
-rw-r--r--gnuradio-core/doc/Doxyfile.in326
-rw-r--r--gnuradio-core/doc/other/Makefile.am15
-rwxr-xr-xgnuradio-core/doc/other/doxypy.py356
-rw-r--r--gnuradio-core/doc/other/group_defs.dox51
4 files changed, 651 insertions, 97 deletions
diff --git a/gnuradio-core/doc/Doxyfile.in b/gnuradio-core/doc/Doxyfile.in
index 83229cd00..c6d998f2a 100644
--- a/gnuradio-core/doc/Doxyfile.in
+++ b/gnuradio-core/doc/Doxyfile.in
@@ -1,4 +1,4 @@
-# Doxyfile 1.4.1
+# Doxyfile 1.5.3
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -14,6 +14,14 @@
# Project related configuration options
#---------------------------------------------------------------------------
+# This tag specifies the encoding used for all characters in the config file that
+# follow. The default is UTF-8 which is also the encoding used for all text before
+# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
+# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
+# possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
@@ -45,24 +53,14 @@ CREATE_SUBDIRS = NO
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
+# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
+# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
OUTPUT_LANGUAGE = English
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
@@ -135,11 +133,19 @@ SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = NO
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
# comments) as a brief description. This used to be the default behaviour.
@@ -161,12 +167,11 @@ DETAILS_AT_TOP = YES
INHERIT_DOCS = YES
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
-DISTRIBUTE_GROUP_DOC = NO
+SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments.
@@ -189,13 +194,34 @@ ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
-# only. Doxygen will then generate output that is more tailored for Java.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for Java.
# For instance, namespaces will be presented as packages, qualified scopes
# will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
+# include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
# subgroup of that type (e.g. under the Public Functions section). Set it to
@@ -238,6 +264,13 @@ EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
+# If this flag is set to YES, the members of anonymous namespaces will be extracted
+# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
+# where file will be replaced with the base name of the file that contains the anonymous
+# namespace. By default anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
@@ -370,17 +403,16 @@ SHOW_USED_FILES = YES
# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation.
+# in the documentation. The default is NO.
-# -eb
-SHOW_DIRECTORIES = NO
+SHOW_DIRECTORIES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from the
# version control system). Doxygen will invoke the program by executing (via
# popen()) the command <command> <input-file>, where <command> is the value of
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the progam writes to standard output
+# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
@@ -428,7 +460,7 @@ WARN_NO_PARAMDOC = NO
# $version, which will be replaced by the version of the file (if it could
# be obtained via FILE_VERSION_FILTER)
-WARN_FORMAT = "$file:$line: $text"
+WARN_FORMAT = "$file:$line: $text "
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
@@ -447,16 +479,23 @@ WARN_LOGFILE =
INPUT = @top_srcdir@
+# This tag can be used to specify the character encoding of the source files that
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
FILE_PATTERNS = *.h \
- *.cc \
- *.dox
+ *.dox \
+ *.py
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
@@ -468,28 +507,88 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
-EXCLUDE = CVS .svn .libs .deps \
- @top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.cc \
- @top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_general.cc \
- @top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.cc \
- @top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_io.cc \
- @top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.cc \
- @top_builddir@/gr-atsc/src/lib/atsc.cc \
- @top_builddir@/gr-audio-alsa/src/audio_alsa.cc \
- @top_builddir@/gr-audio-jack/src/audio_jack.cc \
- @top_builddir@/gr-audio-oss/src/audio_oss.cc \
- @top_builddir@/gr-audio-osx/src/audio_osx.cc \
- @top_builddir@/gr-audio-portaudio/src/audio_portaudio.cc \
- @top_builddir@/gr-audio-windows/src/audio_windows.cc \
- @top_builddir@/gr-comedi/src/comedi.cc \
- @top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm_full_rate.cc \
- @top_builddir@/gr-howto-write-a-block/src/lib/howto.cc \
- @top_builddir@/gr-pager/src/pager_swig.cc \
- @top_builddir@/gr-radio-astronomy/src/lib/ra.cc \
- @top_builddir@/gr-trellis/src/lib/trellis.cc \
- @top_builddir@/gr-usrp/src/usrp1.cc \
- @top_builddir@/gr-video-sdl/src/video_sdl.cc
- @top_srcdir@/usrp
+# We split these by top_srcdir and top_builddir (this matters in a VPATH build)
+
+EXCLUDE = \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.cc \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.py \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_general.cc \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_general.py \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.cc \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.py \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_io.cc \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_io.py \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.cc \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.py \
+ @abs_top_builddir@/gnuradio-core/src/lib/swig/gnuradio_swig_python.py \
+ @abs_top_builddir@/gr-atsc/src/lib/atsc.cc \
+ @abs_top_builddir@/gr-atsc/src/lib/atsc.py \
+ @abs_top_builddir@/gr-audio-oss/src/audio_oss.py \
+ @abs_top_builddir@/gr-audio-osx/src/test_audio_loop.py \
+ @abs_top_builddir@/gr-cvsd-vocoder/src/lib/cvsd_vocoder.py \
+ @abs_top_builddir@/gr-cvsd-vocoder/src/python/encdec.py \
+ @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm \
+ @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm_full_rate.py \
+ @abs_top_builddir@/gr-gsm-fr-vocoder/src/python/encdec.py \
+ @abs_top_builddir@/gr-pager/src/pager_swig.py \
+ @abs_top_builddir@/gr-radar-mono/src/python/usrp_radar_mono.py \
+ @abs_top_builddir@/gr-trellis/src/lib/trellis.py \
+ @abs_top_builddir@/gr-usrp/src/usrp1.py \
+ @abs_top_builddir@/gr-video-sdl/src/video_sdl.py \
+ @abs_top_builddir@/usrp/host/swig \
+ @abs_top_srcdir@/docs \
+ @abs_top_srcdir@/dtools \
+ @abs_top_srcdir@/gnuradio-core/doc/doxypy/doxypy.py \
+ @abs_top_srcdir@/gnuradio-core/doc/xml \
+ @abs_top_srcdir@/gnuradio-core/src/lib/bug_work_around_6.cc \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/assembly.h \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_all.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_fir_XXX.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_fir_filter_XXX.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_fir_util.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_freq_xlating_fir_filter_XXX.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_interp_fir_filter_XXX.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_gr_rational_resampler_base_XXX.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/generate_utils.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/filter/sse_debug.h \
+ @abs_top_srcdir@/gnuradio-core/src/lib/gengen/generate_all.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/gengen/generate_common.py \
+ @abs_top_srcdir@/gnuradio-core/src/lib/missing/bug_work_around_8.cc \
+ @abs_top_srcdir@/gnuradio-core/src/lib/runtime/gr_error_handler.cc \
+ @abs_top_srcdir@/gnuradio-core/src/python/bin \
+ @abs_top_srcdir@/gnuradio-core/src/python/build_utils.py \
+ @abs_top_srcdir@/gnuradio-core/src/python/build_utils_codes.py \
+ @abs_top_srcdir@/gnuradio-core/src/python/gnuradio/gr/gr_threading.py \
+ @abs_top_srcdir@/gnuradio-core/src/python/gnuradio/gr/gr_threading_23.py \
+ @abs_top_srcdir@/gnuradio-core/src/python/gnuradio/gr/gr_threading_24.py \
+ @abs_top_srcdir@/gnuradio-core/src/tests \
+ @abs_top_srcdir@/gnuradio-core/src/utils \
+ @abs_top_srcdir@/gr-atsc/src/lib/gen_encoder.py \
+ @abs_top_srcdir@/gr-atsc/src/python \
+ @abs_top_srcdir@/gr-howto-write-a-block \
+ @abs_top_srcdir@/gr-qtgui \
+ @abs_top_srcdir@/gr-sounder/src/python/usrp_sounder.py \
+ @abs_top_srcdir@/gr-trellis/doc \
+ @abs_top_srcdir@/gr-trellis/src/lib/generate_all.py \
+ @abs_top_srcdir@/gr-trellis/src/lib/generate_trellis.py \
+ @abs_top_srcdir@/usrp/doc \
+ @abs_top_srcdir@/usrp/firmware \
+ @abs_top_srcdir@/usrp/fpga \
+ @abs_top_srcdir@/usrp/host/apps \
+ @abs_top_srcdir@/usrp/host/apps-inband \
+ @abs_top_srcdir@/usrp/host/lib/inband \
+ @abs_top_srcdir@/usrp/host/lib/legacy/ad9862.h \
+ @abs_top_srcdir@/usrp/host/lib/legacy/check_data.py \
+ @abs_top_srcdir@/usrp/host/lib/legacy/circular_buffer.h \
+ @abs_top_srcdir@/usrp/host/lib/legacy/circular_linked_list.h \
+ @abs_top_srcdir@/usrp/host/lib/legacy/dump_data.py \
+ @abs_top_srcdir@/usrp/host/lib/legacy/gen_usrp_dbid.py \
+ @abs_top_srcdir@/usrp/host/lib/legacy/usrp_dbid.py \
+ @abs_top_srcdir@/usrp/host/misc \
+ @abs_top_srcdir@/usrp/host/swig
+
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
@@ -499,9 +598,33 @@ EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-
-EXCLUDE_PATTERNS = moc_*.cc
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = \
+ */.deps/* \
+ */.libs/* \
+ */.svn/* \
+ */CVS/* \
+ */__init__.py \
+ */gr-atsc/src/lib/Gr* \
+ */moc_*.cc \
+ */omnithread/ot_* \
+ */qa_*.cc \
+ */qa_*.h \
+ */qa_*.py
+
+
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the output.
+# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
+# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS = ad9862 \
+ numpy \
+ usrpm
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
@@ -546,13 +669,14 @@ INPUT_FILTER =
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
-FILTER_PATTERNS =
+FILTER_PATTERNS = *.py=@top_srcdir@/gnuradio-core/doc/other/doxypy.py
+
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to source browsing
@@ -561,7 +685,9 @@ FILTER_SOURCE_FILES = NO
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
+# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
+# then you must also enable this option. If you don't then doxygen will produce
+# a warning and turn it on anyway
SOURCE_BROWSER = NO
@@ -588,6 +714,21 @@ REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
@@ -672,6 +813,14 @@ HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
# can add a path in front of the file if the result should not be
@@ -736,7 +885,6 @@ TREEVIEW_WIDTH = 250
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
-# -eb
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
@@ -884,7 +1032,7 @@ MAN_LINKS = NO
# generate an XML file that captures the structure of
# the code including all documentation.
-GENERATE_XML = YES
+GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
@@ -909,7 +1057,6 @@ XML_DTD =
# and cross-referencing information) to the XML output. Note that
# enabling this will significantly increase the size of the XML output.
-# -eb
XML_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
@@ -976,7 +1123,7 @@ MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+# PREDEFINED and EXPAND_AS_DEFINED tags.
EXPAND_ONLY_PREDEF = NO
@@ -1079,6 +1226,14 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = YES
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
+# be found in the default search path.
+
+MSCGEN_PATH =
+
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
# or is not a class.
@@ -1136,7 +1291,7 @@ INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
# generate a call dependency graph for every global function or class method.
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
@@ -1144,6 +1299,14 @@ INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
+# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
@@ -1173,31 +1336,23 @@ DOT_PATH =
DOTFILE_DIRS =
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the number
+# of direct children of the root node in a graph is already larger than
+# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-MAX_DOT_GRAPH_HEIGHT = 1024
+DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
# that lay further from the root node will be omitted. Note that setting this
# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
MAX_DOT_GRAPH_DEPTH = 0
@@ -1214,7 +1369,6 @@ DOT_TRANSPARENT = NO
# makes dot run faster, but since only newer versions of dot (>1.8.10)
# support this, this feature is disabled by default.
-# -eb
DOT_MULTI_TARGETS = YES
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
diff --git a/gnuradio-core/doc/other/Makefile.am b/gnuradio-core/doc/other/Makefile.am
index b6641af1a..5e05d5d36 100644
--- a/gnuradio-core/doc/other/Makefile.am
+++ b/gnuradio-core/doc/other/Makefile.am
@@ -22,10 +22,11 @@
include $(top_srcdir)/Makefile.common
EXTRA_DIST = \
- tv-channel-frequencies \
- vector_docstub.h \
- shared_ptr_docstub.h \
- omnithread.html \
- omnithread.pdf \
- omnithread.ps \
- group_defs.dox
+ doxypy.py \
+ group_defs.dox \
+ omnithread.html \
+ omnithread.pdf \
+ omnithread.ps \
+ shared_ptr_docstub.h \
+ tv-channel-frequencies \
+ vector_docstub.h
diff --git a/gnuradio-core/doc/other/doxypy.py b/gnuradio-core/doc/other/doxypy.py
new file mode 100755
index 000000000..34353b6ac
--- /dev/null
+++ b/gnuradio-core/doc/other/doxypy.py
@@ -0,0 +1,356 @@
+#!/usr/bin/env python
+
+__applicationName__ = "doxypy"
+__blurb__ = """
+doxypy is an input filter for Doxygen. It preprocesses python
+files so that docstrings of classes and functions are reformatted
+into Doxygen-conform documentation blocks.
+"""
+
+__doc__ = __blurb__ + \
+"""
+In order to make Doxygen preprocess files through doxypy, simply
+add the following lines to your Doxyfile:
+ FILTER_SOURCE_FILES = YES
+ INPUT_FILTER = "python /path/to/doxypy.py"
+"""
+
+__version__ = "0.3rc2"
+__date__ = "18th December 2007"
+__website__ = "http://code.foosel.org/doxypy"
+
+__author__ = (
+ "Philippe 'demod' Neumann (doxypy at demod dot org)",
+ "Gina 'foosel' Haeussge (gina at foosel dot net)"
+)
+
+__licenseName__ = "GPL v2"
+__license__ = """This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+
+import sys
+import re
+
+from optparse import OptionParser, OptionGroup
+
+class FSM(object):
+ """ FSM implements a finite state machine. Transitions are given as
+ 4-tuples, consisting of an origin state, a target state, a condition
+ for the transition (given as a reference to a function which gets called
+ with a given piece of input) and a pointer to a function to be called
+ upon the execution of the given transition.
+ """
+
+ def __init__(self, start_state=None, transitions=[]):
+ self.transitions = transitions
+ self.current_state = start_state
+ self.current_input = None
+ self.current_transition = None
+
+ def setStartState(self, state):
+ self.current_state = state
+
+ def addTransition(self, from_state, to_state, condition, callback):
+ self.transitions.append([from_state, to_state, condition, callback])
+
+ def makeTransition(self, input):
+ """ Makes a transition based on the given input.
+ @param input input to parse by the FSM
+ """
+ for transition in self.transitions:
+ [from_state, to_state, condition, callback] = transition
+ if from_state == self.current_state:
+ match = condition(input)
+ if match:
+ self.current_state = to_state
+ self.current_input = input
+ self.current_transition = transition
+ callback(match)
+ return
+
+
+class Doxypy(object):
+ def __init__(self):
+ self.start_single_comment_re = re.compile("^\s*(''')")
+ self.end_single_comment_re = re.compile("(''')\s*$")
+
+ self.start_double_comment_re = re.compile("^\s*(\"\"\")")
+ self.end_double_comment_re = re.compile("(\"\"\")\s*$")
+
+ self.single_comment_re = re.compile("^\s*(''').*(''')\s*$")
+ self.double_comment_re = re.compile("^\s*(\"\"\").*(\"\"\")\s*$")
+
+ self.defclass_re = re.compile("^(\s*)(def .+:|class .+:)")
+ self.empty_re = re.compile("^\s*$")
+ self.hashline_re = re.compile("^\s*#.*$")
+ self.importline_re = re.compile("^\s*(import |from .+ import)")
+
+ self.multiline_defclass_start_re = re.compile("^(\s*)(def|class)(\s.*)?$")
+ self.multiline_defclass_end_re = re.compile(":\s*$")
+
+ ## Transition list format
+ # ["FROM", "TO", condition, action]
+ transitions = [
+ ### FILEHEAD
+
+ # single line comments
+ ["FILEHEAD", "FILEHEAD", self.single_comment_re.search, self.appendCommentLine],
+ ["FILEHEAD", "FILEHEAD", self.double_comment_re.search, self.appendCommentLine],
+
+ # multiline comments
+ ["FILEHEAD", "FILEHEAD_COMMENT_SINGLE", self.start_single_comment_re.search, self.appendCommentLine],
+ ["FILEHEAD_COMMENT_SINGLE", "FILEHEAD", self.end_single_comment_re.search, self.appendCommentLine],
+ ["FILEHEAD_COMMENT_SINGLE", "FILEHEAD_COMMENT_SINGLE", self.catchall, self.appendCommentLine],
+ ["FILEHEAD", "FILEHEAD_COMMENT_DOUBLE", self.start_double_comment_re.search, self.appendCommentLine],
+ ["FILEHEAD_COMMENT_DOUBLE", "FILEHEAD", self.end_double_comment_re.search, self.appendCommentLine],
+ ["FILEHEAD_COMMENT_DOUBLE", "FILEHEAD_COMMENT_DOUBLE", self.catchall, self.appendCommentLine],
+
+ # other lines
+ ["FILEHEAD", "FILEHEAD", self.empty_re.search, self.appendFileheadLine],
+ ["FILEHEAD", "FILEHEAD", self.hashline_re.search, self.appendFileheadLine],
+ ["FILEHEAD", "FILEHEAD", self.importline_re.search, self.appendFileheadLine],
+ ["FILEHEAD", "DEFCLASS", self.defclass_re.search, self.resetCommentSearch],
+ ["FILEHEAD", "DEFCLASS_MULTI", self.multiline_defclass_start_re.search, self.resetCommentSearch],
+ ["FILEHEAD", "DEFCLASS_BODY", self.catchall, self.appendFileheadLine],
+
+ ### DEFCLASS
+
+ # single line comments
+ ["DEFCLASS", "DEFCLASS_BODY", self.single_comment_re.search, self.appendCommentLine],
+ ["DEFCLASS", "DEFCLASS_BODY", self.double_comment_re.search, self.appendCommentLine],
+
+ # multiline comments
+ ["DEFCLASS", "COMMENT_SINGLE", self.start_single_comment_re.search, self.appendCommentLine],
+ ["COMMENT_SINGLE", "DEFCLASS_BODY", self.end_single_comment_re.search, self.appendCommentLine],
+ ["COMMENT_SINGLE", "COMMENT_SINGLE", self.catchall, self.appendCommentLine],
+ ["DEFCLASS", "COMMENT_DOUBLE", self.start_double_comment_re.search, self.appendCommentLine],
+ ["COMMENT_DOUBLE", "DEFCLASS_BODY", self.end_double_comment_re.search, self.appendCommentLine],
+ ["COMMENT_DOUBLE", "COMMENT_DOUBLE", self.catchall, self.appendCommentLine],
+
+ # other lines
+ ["DEFCLASS", "DEFCLASS", self.empty_re.search, self.appendDefclassLine],
+ ["DEFCLASS", "DEFCLASS", self.defclass_re.search, self.resetCommentSearch],
+ ["DEFCLASS", "DEFCLASS_BODY", self.catchall, self.stopCommentSearch],
+
+ ### DEFCLASS_BODY
+
+ ["DEFCLASS_BODY", "DEFCLASS", self.defclass_re.search, self.startCommentSearch],
+ ["DEFCLASS_BODY", "DEFCLASS_MULTI", self.multiline_defclass_start_re.search, self.startCommentSearch],
+ ["DEFCLASS_BODY", "DEFCLASS_BODY", self.catchall, self.appendNormalLine],
+
+ ### DEFCLASS_MULTI
+ ["DEFCLASS_MULTI", "DEFCLASS", self.multiline_defclass_end_re.search, self.appendDefclassLine],
+ ["DEFCLASS_MULTI", "DEFCLASS_MULTI", self.catchall, self.appendDefclassLine],
+ ]
+
+ self.fsm = FSM("FILEHEAD", transitions)
+
+ self.output = []
+
+ self.comment = []
+ self.filehead = []
+ self.defclass = []
+ self.indent = ""
+
+ def __closeComment(self):
+ """ Appends any open comment block and triggering block to the output. """
+
+ if options.autobrief:
+ if len(self.comment) == 1 \
+ or (len(self.comment) > 2 and self.comment[1].strip() == ''):
+ self.comment[0] = self.__docstringSummaryToBrief(self.comment[0])
+
+ if self.comment:
+ block = self.makeCommentBlock()
+ self.output.extend(block)
+
+ if self.defclass:
+ self.output.extend(self.defclass)
+
+ def __docstringSummaryToBrief(self, line):
+ """ Adds \\brief to the docstrings summary line.
+
+ A \\brief is prepended, provided no other doxygen command is at the start of the line.
+ """
+ stripped = line.strip()
+ if stripped and not stripped[0] in ('@', '\\'):
+ return "\\brief " + line
+ else:
+ return line
+
+ def catchall(self, input):
+ """ The catchall-condition, always returns true. """
+ return True
+
+ def resetCommentSearch(self, match):
+ """ Restarts a new comment search for a different triggering line.
+ Closes the current commentblock and starts a new comment search.
+ """
+ self.__closeComment()
+ self.startCommentSearch(match)
+
+ def startCommentSearch(self, match):
+ """ Starts a new comment search.
+ Saves the triggering line, resets the current comment and saves
+ the current indentation.
+ """
+ self.defclass = [self.fsm.current_input]
+ self.comment = []
+ self.indent = match.group(1)
+
+ def stopCommentSearch(self, match):
+ """ Stops a comment search.
+ Closes the current commentblock, resets the triggering line and
+ appends the current line to the output.
+ """
+ self.__closeComment()
+
+ self.defclass = []
+ self.output.append(self.fsm.current_input)
+
+ def appendFileheadLine(self, match):
+ """ Appends a line in the FILEHEAD state.
+ Closes the open comment block, resets it and appends the current line.
+ """
+ self.__closeComment()
+ self.comment = []
+ self.output.append(self.fsm.current_input)
+
+ def appendCommentLine(self, match):
+ """ Appends a comment line.
+ The comment delimiter is removed from multiline start and ends as
+ well as singleline comments.
+ """
+ (from_state, to_state, condition, callback) = self.fsm.current_transition
+
+ # single line comment
+ if (from_state == "DEFCLASS" and to_state == "DEFCLASS_BODY") \
+ or (from_state == "FILEHEAD" and to_state == "FILEHEAD"):
+ # remove comment delimiter from begin and end of the line
+ activeCommentDelim = match.group(1)
+ line = self.fsm.current_input
+ self.comment.append(line[line.find(activeCommentDelim)+len(activeCommentDelim):line.rfind(activeCommentDelim)])
+
+ if (to_state == "DEFCLASS_BODY"):
+ self.__closeComment()
+ self.defclass = []
+ # multiline start
+ elif from_state == "DEFCLASS" or from_state == "FILEHEAD":
+ # remove comment delimiter from begin of the line
+ activeCommentDelim = match.group(1)
+ line = self.fsm.current_input
+ self.comment.append(line[line.find(activeCommentDelim)+len(activeCommentDelim):])
+ # multiline end
+ elif to_state == "DEFCLASS_BODY" or to_state == "FILEHEAD":
+ # remove comment delimiter from end of the line
+ activeCommentDelim = match.group(1)
+ line = self.fsm.current_input
+ self.comment.append(line[0:line.rfind(activeCommentDelim)])
+ if (to_state == "DEFCLASS_BODY"):
+ self.__closeComment()
+ self.defclass = []
+ # in multiline comment
+ else:
+ # just append the comment line
+ self.comment.append(self.fsm.current_input)
+
+ def appendNormalLine(self, match):
+ """ Appends a line to the output. """
+ self.output.append(self.fsm.current_input)
+
+ def appendDefclassLine(self, match):
+ """ Appends a line to the triggering block. """
+ self.defclass.append(self.fsm.current_input)
+
+ def makeCommentBlock(self):
+ """ Indents the current comment block with respect to the current
+ indentation level.
+ @returns a list of indented comment lines
+ """
+ doxyStart = "##"
+ commentLines = self.comment
+
+ commentLines = map(lambda x: "%s# %s" % (self.indent, x), commentLines)
+ l = [self.indent + doxyStart]
+ l.extend(commentLines)
+
+ return l
+
+ def parse(self, input):
+ """ Parses a python file given as input string and returns the doxygen-
+ compatible representation.
+ @param input the python code to parse
+ @returns the modified python code
+ """
+ lines = input.split("\n")
+
+ for line in lines:
+ self.fsm.makeTransition(line)
+
+ if self.fsm.current_state == "DEFCLASS":
+ self.__closeComment()
+
+ return "\n".join(self.output)
+
+def loadFile(filename):
+ """ Loads file "filename" and returns the content.
+ @param filename The name of the file to load
+ @returns the content of the file.
+ """
+ f = open(filename, 'r')
+
+ try:
+ content = f.read()
+ return content
+ finally:
+ f.close()
+
+def optParse():
+ """ Parses commandline options. """
+ parser = OptionParser(prog=__applicationName__, version="%prog " + __version__)
+
+ parser.set_usage("%prog [options] filename")
+ parser.add_option("--autobrief",
+ action="store_true", dest="autobrief",
+ help="Use the docstring summary line as \\brief description"
+ )
+
+ ## parse options
+ global options
+ (options, filename) = parser.parse_args()
+
+ if not filename:
+ print >>sys.stderr, "No filename given."
+ sys.exit(-1)
+
+ return filename[0]
+
+def main():
+ """ Opens the file given as first commandline argument and processes it,
+ then prints out the processed file.
+ """
+ filename = optParse()
+
+ try:
+ input = loadFile(filename)
+ except IOError, (errno, msg):
+ print >>sys.stderr, msg
+ sys.exit(-1)
+
+ fsm = Doxypy()
+ output = fsm.parse(input)
+ print output
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/gnuradio-core/doc/other/group_defs.dox b/gnuradio-core/doc/other/group_defs.dox
index 47cce21c2..de64f3594 100644
--- a/gnuradio-core/doc/other/group_defs.dox
+++ b/gnuradio-core/doc/other/group_defs.dox
@@ -1,6 +1,6 @@
/*!
* \defgroup block Signal Processing Blocks
- * These are the signal processing blocks, blah, blah blah...
+ * These are the signal processing blocks...
* @{
*/
@@ -22,10 +22,53 @@
* \defgroup converter Type Conversions
*/
+/*!
+ * \defgroup level Signal Level Control
+ */
+
+/*!
+ * \defgroup clock Signal Clock Synchronization
+ */
+
/*! @} */
-/*! \defgroup filter_design Filter Design */
-/*! \defgroup filter_primitive Filter Primitives */
+/*! \defgroup filter_design Digital Filter Design */
+/*! \defgroup graphical Graphical Utilities */
/*! \defgroup internal Implementation Details */
-/*! \defgroup qa Quality Assurance */
+/*! \defgroup hardware Hardware */
+/*! \defgroup encdec Voice Encoders and Decoders */
+/*! \defgroup coding Information Coding and Decoding */
+/*! \defgroup modulation Signal Modulation */
+/*! \defgroup demodulation Signal Demodulation */
+/*! \defgroup math Mathmatics */
+/*! \defgroup tools Tools */
+/*! \defgroup misc Miscellaneous */
+/*!
+ * \defgroup applications Applications
+ * These are some applications build using gnuradio...
+ * @{
+ */
+
+/*!
+ * \defgroup radar Radar
+ * Radar Applications...
+ */
+
+/*!
+ * \defgroup atsc ATSC
+ * ATSC Applications...
+ */
+
+/*!
+ * \defgroup pager Pager
+ * Pager Applications
+ */
+
+/*!
+ * \defgroup sounder Sounder
+ * Channel Sounder
+ */
+
+/*! @} */
+/*! \defgroup usrp USRP */