gr39: Update the whole Doxygen setup
Just taken from gr_modtool ... Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
82ca4ef197
commit
61e90740eb
|
@ -1,21 +1,9 @@
|
||||||
# Copyright 2011 Free Software Foundation, Inc.
|
# Copyright 2011-2020 Free Software Foundation, Inc.
|
||||||
|
# Copyright 2013-2021 Sylvain Munaut <tnt@246tNt.com>
|
||||||
#
|
#
|
||||||
# This file is part of gr-iqbalance
|
# This file is part of gr-iqbalance
|
||||||
#
|
#
|
||||||
# gr-iqbalance is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# gr-iqbalance 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 gr-iqbalance; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Begin conditional configuration
|
# Begin conditional configuration
|
||||||
|
|
|
@ -1,22 +1,10 @@
|
||||||
# Copyright 2011 Free Software Foundation, Inc.
|
# Copyright 2011 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gr-test
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Create the doxygen configuration file
|
# Create the doxygen configuration file
|
||||||
|
@ -29,6 +17,7 @@ file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} abs_top_builddir)
|
||||||
set(HAVE_DOT ${DOXYGEN_DOT_FOUND})
|
set(HAVE_DOT ${DOXYGEN_DOT_FOUND})
|
||||||
set(enable_html_docs YES)
|
set(enable_html_docs YES)
|
||||||
set(enable_latex_docs NO)
|
set(enable_latex_docs NO)
|
||||||
|
set(enable_mathjax NO)
|
||||||
set(enable_xml_docs YES)
|
set(enable_xml_docs YES)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
|
|
|
@ -199,13 +199,6 @@ TAB_SIZE = 8
|
||||||
|
|
||||||
ALIASES =
|
ALIASES =
|
||||||
|
|
||||||
# This tag can be used to specify a number of word-keyword mappings (TCL only).
|
|
||||||
# A mapping has the form "name=value". For example adding
|
|
||||||
# "class=itcl::class" will allow you to use the command class in the
|
|
||||||
# itcl::class meaning.
|
|
||||||
|
|
||||||
TCL_SUBST =
|
|
||||||
|
|
||||||
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
|
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
|
||||||
# sources only. Doxygen will then generate output that is more tailored for C.
|
# sources only. Doxygen will then generate output that is more tailored for C.
|
||||||
# For instance, some of the names that are used will be different. The list
|
# For instance, some of the names that are used will be different. The list
|
||||||
|
@ -723,8 +716,6 @@ EXCLUDE_PATTERNS = */.deps/* \
|
||||||
|
|
||||||
EXCLUDE_SYMBOLS = ad9862 \
|
EXCLUDE_SYMBOLS = ad9862 \
|
||||||
numpy \
|
numpy \
|
||||||
*swig* \
|
|
||||||
*Swig* \
|
|
||||||
*my_top_block* \
|
*my_top_block* \
|
||||||
*my_graph* \
|
*my_graph* \
|
||||||
*app_top_block* \
|
*app_top_block* \
|
||||||
|
@ -1220,14 +1211,14 @@ FORMULA_TRANSPARENT = YES
|
||||||
# output. When enabled you may also need to install MathJax separately and
|
# output. When enabled you may also need to install MathJax separately and
|
||||||
# configure the path to it using the MATHJAX_RELPATH option.
|
# configure the path to it using the MATHJAX_RELPATH option.
|
||||||
|
|
||||||
USE_MATHJAX = NO
|
USE_MATHJAX = @enable_mathjax@
|
||||||
|
|
||||||
# When MathJax is enabled you can set the default output format to be used for
|
# When MathJax is enabled you can set the default output format to be used for
|
||||||
# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
|
# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
|
||||||
# SVG. The default value is HTML-CSS, which is slower, but has the best
|
# SVG. The default value is HTML-CSS, which is slower, but has the best
|
||||||
# compatibility.
|
# compatibility.
|
||||||
|
|
||||||
MATHJAX_FORMAT = HTML-CSS
|
MATHJAX_FORMAT = SVG
|
||||||
|
|
||||||
# When MathJax is enabled you need to specify the location relative to the
|
# When MathJax is enabled you need to specify the location relative to the
|
||||||
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
||||||
|
@ -1239,12 +1230,12 @@ MATHJAX_FORMAT = HTML-CSS
|
||||||
# However, it is strongly recommended to install a local
|
# However, it is strongly recommended to install a local
|
||||||
# copy of MathJax from http://www.mathjax.org before deployment.
|
# copy of MathJax from http://www.mathjax.org before deployment.
|
||||||
|
|
||||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
MATHJAX_RELPATH = @MATHJAX2_PATH@
|
||||||
|
|
||||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
|
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
|
||||||
# names that should be enabled during MathJax rendering.
|
# names that should be enabled during MathJax rendering.
|
||||||
|
|
||||||
MATHJAX_EXTENSIONS =
|
MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
|
||||||
|
|
||||||
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript
|
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript
|
||||||
# pieces of code that will be used on startup of the MathJax code.
|
# pieces of code that will be used on startup of the MathJax code.
|
||||||
|
@ -1680,11 +1671,6 @@ EXTERNAL_GROUPS = YES
|
||||||
|
|
||||||
EXTERNAL_PAGES = YES
|
EXTERNAL_PAGES = YES
|
||||||
|
|
||||||
# The PERL_PATH should be the absolute path and name of the perl script
|
|
||||||
# interpreter (i.e. the result of `which perl').
|
|
||||||
|
|
||||||
PERL_PATH = /usr/bin/perl
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration options related to the dot tool
|
# Configuration options related to the dot tool
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
@ -1697,15 +1683,6 @@ PERL_PATH = /usr/bin/perl
|
||||||
|
|
||||||
CLASS_DIAGRAMS = YES
|
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
|
# If set to YES, the inheritance and collaboration graphs will hide
|
||||||
# inheritance and usage relations if the target is undocumented
|
# inheritance and usage relations if the target is undocumented
|
||||||
# or is not a class.
|
# or is not a class.
|
||||||
|
@ -1834,7 +1811,7 @@ DIRECTORY_GRAPH = YES
|
||||||
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
|
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
|
||||||
# visible in IE 9+ (other browsers do not have this requirement).
|
# visible in IE 9+ (other browsers do not have this requirement).
|
||||||
|
|
||||||
DOT_IMAGE_FORMAT = png
|
DOT_IMAGE_FORMAT = svg
|
||||||
|
|
||||||
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
|
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
|
||||||
# enable generation of interactive SVG images that allow zooming and panning.
|
# enable generation of interactive SVG images that allow zooming and panning.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,22 +2,10 @@
|
||||||
# Copyright 2010 Free Software Foundation, Inc.
|
# Copyright 2010 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gr-test
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
Python interface to contents of doxygen xml documentation.
|
Python interface to contents of doxygen xml documentation.
|
||||||
|
@ -64,7 +52,6 @@ This line is uninformative and is only to test line breaks in the comments.
|
||||||
u'Outputs the vital aadvark statistics.'
|
u'Outputs the vital aadvark statistics.'
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from .doxyindex import DoxyIndex, DoxyFunction, DoxyParam, DoxyClass, DoxyFile, DoxyNamespace, DoxyGroup, DoxyFriend, DoxyOther
|
from .doxyindex import DoxyIndex, DoxyFunction, DoxyParam, DoxyClass, DoxyFile, DoxyNamespace, DoxyGroup, DoxyFriend, DoxyOther
|
||||||
|
|
||||||
|
|
|
@ -2,22 +2,10 @@
|
||||||
# Copyright 2010 Free Software Foundation, Inc.
|
# Copyright 2010 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gr-test
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
A base class is created.
|
A base class is created.
|
||||||
|
@ -25,8 +13,6 @@ A base class is created.
|
||||||
Classes based upon this are used to make more user-friendly interfaces
|
Classes based upon this are used to make more user-friendly interfaces
|
||||||
to the doxygen xml docs than the generated classes provide.
|
to the doxygen xml docs than the generated classes provide.
|
||||||
"""
|
"""
|
||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pdb
|
import pdb
|
||||||
|
|
|
@ -2,29 +2,15 @@
|
||||||
# Copyright 2010 Free Software Foundation, Inc.
|
# Copyright 2010 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gr-test
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
Classes providing more user-friendly interfaces to the doxygen xml
|
Classes providing more user-friendly interfaces to the doxygen xml
|
||||||
docs than the generated classes provide.
|
docs than the generated classes provide.
|
||||||
"""
|
"""
|
||||||
from __future__ import absolute_import
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -60,14 +46,6 @@ class DoxyIndex(Base):
|
||||||
self._members.append(converted)
|
self._members.append(converted)
|
||||||
|
|
||||||
|
|
||||||
def generate_swig_doc_i(self):
|
|
||||||
"""
|
|
||||||
%feature("docstring") gr_make_align_on_samplenumbers_ss::align_state "
|
|
||||||
Wraps the C++: gr_align_on_samplenumbers_ss::align_state";
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class DoxyCompMem(Base):
|
class DoxyCompMem(Base):
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,4 +5,3 @@ These do the real work of parsing the doxygen xml files but the
|
||||||
resultant classes are not very friendly to navigate so the rest of the
|
resultant classes are not very friendly to navigate so the rest of the
|
||||||
doxyxml module processes them further.
|
doxyxml module processes them further.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
"""
|
"""
|
||||||
Generated Mon Feb 9 19:08:05 2009 by generateDS.py.
|
Generated Mon Feb 9 19:08:05 2009 by generateDS.py.
|
||||||
"""
|
"""
|
||||||
from __future__ import absolute_import
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
|
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
|
|
|
@ -4,17 +4,12 @@
|
||||||
# Generated Thu Jun 11 18:44:25 2009 by generateDS.py.
|
# Generated Thu Jun 11 18:44:25 2009 by generateDS.py.
|
||||||
#
|
#
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
from xml.dom import Node
|
from xml.dom import Node
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# User methods
|
# User methods
|
||||||
#
|
#
|
||||||
|
@ -69,7 +64,7 @@ def showIndent(outfile, level):
|
||||||
outfile.write(' ')
|
outfile.write(' ')
|
||||||
|
|
||||||
def quote_xml(inStr):
|
def quote_xml(inStr):
|
||||||
s1 = (isinstance(inStr, six.string_types) and inStr or
|
s1 = (isinstance(inStr, str) and inStr or
|
||||||
'%s' % inStr)
|
'%s' % inStr)
|
||||||
s1 = s1.replace('&', '&')
|
s1 = s1.replace('&', '&')
|
||||||
s1 = s1.replace('<', '<')
|
s1 = s1.replace('<', '<')
|
||||||
|
@ -77,7 +72,7 @@ def quote_xml(inStr):
|
||||||
return s1
|
return s1
|
||||||
|
|
||||||
def quote_attrib(inStr):
|
def quote_attrib(inStr):
|
||||||
s1 = (isinstance(inStr, six.string_types) and inStr or
|
s1 = (isinstance(inStr, str) and inStr or
|
||||||
'%s' % inStr)
|
'%s' % inStr)
|
||||||
s1 = s1.replace('&', '&')
|
s1 = s1.replace('&', '&')
|
||||||
s1 = s1.replace('<', '<')
|
s1 = s1.replace('<', '<')
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
"""
|
"""
|
||||||
Generated Mon Feb 9 19:08:05 2009 by generateDS.py.
|
Generated Mon Feb 9 19:08:05 2009 by generateDS.py.
|
||||||
"""
|
"""
|
||||||
from __future__ import absolute_import
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
|
|
||||||
|
|
|
@ -4,16 +4,12 @@
|
||||||
# Generated Thu Jun 11 18:43:54 2009 by generateDS.py.
|
# Generated Thu Jun 11 18:43:54 2009 by generateDS.py.
|
||||||
#
|
#
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
from xml.dom import Node
|
from xml.dom import Node
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# User methods
|
# User methods
|
||||||
#
|
#
|
||||||
|
@ -68,7 +64,7 @@ def showIndent(outfile, level):
|
||||||
outfile.write(' ')
|
outfile.write(' ')
|
||||||
|
|
||||||
def quote_xml(inStr):
|
def quote_xml(inStr):
|
||||||
s1 = (isinstance(inStr, six.string_types) and inStr or
|
s1 = (isinstance(inStr, str) and inStr or
|
||||||
'%s' % inStr)
|
'%s' % inStr)
|
||||||
s1 = s1.replace('&', '&')
|
s1 = s1.replace('&', '&')
|
||||||
s1 = s1.replace('<', '<')
|
s1 = s1.replace('<', '<')
|
||||||
|
@ -76,7 +72,7 @@ def quote_xml(inStr):
|
||||||
return s1
|
return s1
|
||||||
|
|
||||||
def quote_attrib(inStr):
|
def quote_attrib(inStr):
|
||||||
s1 = (isinstance(inStr, six.string_types) and inStr or
|
s1 = (isinstance(inStr, str) and inStr or
|
||||||
'%s' % inStr)
|
'%s' % inStr)
|
||||||
s1 = s1.replace('&', '&')
|
s1 = s1.replace('&', '&')
|
||||||
s1 = s1.replace('<', '<')
|
s1 = s1.replace('<', '<')
|
||||||
|
|
|
@ -2,27 +2,14 @@
|
||||||
# Copyright 2010 Free Software Foundation, Inc.
|
# Copyright 2010 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gr-test
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
Utilities for extracting text from generated classes.
|
Utilities for extracting text from generated classes.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
def is_string(txt):
|
def is_string(txt):
|
||||||
if isinstance(txt, str):
|
if isinstance(txt, str):
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef PYDOC_MACROS_H
|
||||||
|
#define PYDOC_MACROS_H
|
||||||
|
|
||||||
|
#define __EXPAND(x) x
|
||||||
|
#define __COUNT(_1, _2, _3, _4, _5, _6, _7, COUNT, ...) COUNT
|
||||||
|
#define __VA_SIZE(...) __EXPAND(__COUNT(__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1))
|
||||||
|
#define __CAT1(a, b) a##b
|
||||||
|
#define __CAT2(a, b) __CAT1(a, b)
|
||||||
|
#define __DOC1(n1) __doc_##n1
|
||||||
|
#define __DOC2(n1, n2) __doc_##n1##_##n2
|
||||||
|
#define __DOC3(n1, n2, n3) __doc_##n1##_##n2##_##n3
|
||||||
|
#define __DOC4(n1, n2, n3, n4) __doc_##n1##_##n2##_##n3##_##n4
|
||||||
|
#define __DOC5(n1, n2, n3, n4, n5) __doc_##n1##_##n2##_##n3##_##n4##_##n5
|
||||||
|
#define __DOC6(n1, n2, n3, n4, n5, n6) __doc_##n1##_##n2##_##n3##_##n4##_##n5##_##n6
|
||||||
|
#define __DOC7(n1, n2, n3, n4, n5, n6, n7) \
|
||||||
|
__doc_##n1##_##n2##_##n3##_##n4##_##n5##_##n6##_##n7
|
||||||
|
#define DOC(...) __EXPAND(__EXPAND(__CAT2(__DOC, __VA_SIZE(__VA_ARGS__)))(__VA_ARGS__))
|
||||||
|
|
||||||
|
#endif // PYDOC_MACROS_H
|
|
@ -2,34 +2,22 @@
|
||||||
# Copyright 2010-2012 Free Software Foundation, Inc.
|
# Copyright 2010-2012 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
# This file was generated by gr_modtool, a tool from the GNU Radio framework
|
||||||
# This file is a part of gr-iqbalance
|
# This file is a part of gnuradio
|
||||||
#
|
#
|
||||||
# GNU Radio is free software; you can redistribute it and/or modify
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
#
|
||||||
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
#
|
||||||
"""
|
"""
|
||||||
Creates the swig_doc.i SWIG interface file.
|
Updates the *pydoc_h files for a module
|
||||||
Execute using: python swig_doc.py xml_path outputfilename
|
Execute using: python update_pydoc.py xml_path outputfilename
|
||||||
|
|
||||||
The file instructs SWIG to transfer the doxygen comments into the
|
The file instructs Pybind11 to transfer the doxygen comments into the
|
||||||
python docstrings.
|
python docstrings.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import sys, time
|
import os, sys, time, glob, re, json
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile
|
from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile
|
||||||
from doxyxml import DoxyOther, base
|
from doxyxml import DoxyOther, base
|
||||||
|
@ -87,6 +75,7 @@ def utoascii(text):
|
||||||
return ''
|
return ''
|
||||||
out = text.encode('ascii', 'replace')
|
out = text.encode('ascii', 'replace')
|
||||||
# swig will require us to replace blackslash with 4 backslashes
|
# swig will require us to replace blackslash with 4 backslashes
|
||||||
|
# TODO: evaluate what this should be for pybind11
|
||||||
out = out.replace(b'\\', b'\\\\\\\\')
|
out = out.replace(b'\\', b'\\\\\\\\')
|
||||||
out = out.replace(b'"', b'\\"').decode('ascii')
|
out = out.replace(b'"', b'\\"').decode('ascii')
|
||||||
return str(out)
|
return str(out)
|
||||||
|
@ -115,7 +104,7 @@ def format_params(parameteritems):
|
||||||
entry_templ = '%feature("docstring") {name} "{docstring}"'
|
entry_templ = '%feature("docstring") {name} "{docstring}"'
|
||||||
def make_entry(obj, name=None, templ="{description}", description=None, params=[]):
|
def make_entry(obj, name=None, templ="{description}", description=None, params=[]):
|
||||||
"""
|
"""
|
||||||
Create a docstring entry for a swig interface file.
|
Create a docstring key/value pair, where the key is the object name.
|
||||||
|
|
||||||
obj - a doxyxml object from which documentation will be extracted.
|
obj - a doxyxml object from which documentation will be extracted.
|
||||||
name - the name of the C object (defaults to obj.name())
|
name - the name of the C object (defaults to obj.name())
|
||||||
|
@ -126,6 +115,8 @@ def make_entry(obj, name=None, templ="{description}", description=None, params=[
|
||||||
"""
|
"""
|
||||||
if name is None:
|
if name is None:
|
||||||
name=obj.name()
|
name=obj.name()
|
||||||
|
if hasattr(obj,'_parse_data') and hasattr(obj._parse_data,'definition'):
|
||||||
|
name=obj._parse_data.definition.split(' ')[-1]
|
||||||
if "operator " in name:
|
if "operator " in name:
|
||||||
return ''
|
return ''
|
||||||
if description is None:
|
if description is None:
|
||||||
|
@ -134,56 +125,28 @@ def make_entry(obj, name=None, templ="{description}", description=None, params=[
|
||||||
description += '\n\n'
|
description += '\n\n'
|
||||||
description += utoascii(format_params(params))
|
description += utoascii(format_params(params))
|
||||||
docstring = templ.format(description=description)
|
docstring = templ.format(description=description)
|
||||||
if not docstring:
|
|
||||||
return ''
|
|
||||||
return entry_templ.format(
|
|
||||||
name=name,
|
|
||||||
docstring=docstring,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
return {name: docstring}
|
||||||
def make_func_entry(func, name=None, description=None, params=None):
|
|
||||||
"""
|
|
||||||
Create a function docstring entry for a swig interface file.
|
|
||||||
|
|
||||||
func - a doxyxml object from which documentation will be extracted.
|
|
||||||
name - the name of the C object (defaults to func.name())
|
|
||||||
description - if this optional variable is set then it's value is
|
|
||||||
used as the description instead of extracting it from func.
|
|
||||||
params - a parameter list that overrides using func.params.
|
|
||||||
"""
|
|
||||||
#if params is None:
|
|
||||||
# params = func.params
|
|
||||||
#params = [prm.declname for prm in params]
|
|
||||||
#if params:
|
|
||||||
# sig = "Params: (%s)" % ", ".join(params)
|
|
||||||
#else:
|
|
||||||
# sig = "Params: (NONE)"
|
|
||||||
#templ = "{description}\n\n" + sig
|
|
||||||
#return make_entry(func, name=name, templ=utoascii(templ),
|
|
||||||
# description=description)
|
|
||||||
return make_entry(func, name=name, description=description, params=params)
|
|
||||||
|
|
||||||
|
|
||||||
def make_class_entry(klass, description=None, ignored_methods=[], params=None):
|
def make_class_entry(klass, description=None, ignored_methods=[], params=None):
|
||||||
"""
|
"""
|
||||||
Create a class docstring for a swig interface file.
|
Create a class docstring key/value pair.
|
||||||
"""
|
"""
|
||||||
if params is None:
|
if params is None:
|
||||||
params = klass.params
|
params = klass.params
|
||||||
output = []
|
output = {}
|
||||||
output.append(make_entry(klass, description=description, params=params))
|
output.update(make_entry(klass, description=description, params=params))
|
||||||
for func in klass.in_category(DoxyFunction):
|
for func in klass.in_category(DoxyFunction):
|
||||||
if func.name() not in ignored_methods:
|
if func.name() not in ignored_methods:
|
||||||
name = klass.name() + '::' + func.name()
|
name = klass.name() + '::' + func.name()
|
||||||
output.append(make_func_entry(func, name=name))
|
output.update(make_entry(func, name=name))
|
||||||
return "\n\n".join(output)
|
return output
|
||||||
|
|
||||||
|
|
||||||
def make_block_entry(di, block):
|
def make_block_entry(di, block):
|
||||||
"""
|
"""
|
||||||
Create class and function docstrings of a gnuradio block for a
|
Create class and function docstrings of a gnuradio block
|
||||||
swig interface file.
|
|
||||||
"""
|
"""
|
||||||
descriptions = []
|
descriptions = []
|
||||||
# Get the documentation associated with the class.
|
# Get the documentation associated with the class.
|
||||||
|
@ -208,18 +171,16 @@ def make_block_entry(di, block):
|
||||||
super_description = "\n\n".join(descriptions)
|
super_description = "\n\n".join(descriptions)
|
||||||
# Associate the combined description with the class and
|
# Associate the combined description with the class and
|
||||||
# the make function.
|
# the make function.
|
||||||
output = []
|
output = {}
|
||||||
output.append(make_class_entry(block, description=super_description))
|
output.update(make_class_entry(block, description=super_description))
|
||||||
output.append(make_func_entry(make_func, description=super_description,
|
output.update(make_entry(make_func, description=super_description,
|
||||||
params=block.params))
|
params=block.params))
|
||||||
return "\n\n".join(output)
|
return output
|
||||||
|
|
||||||
def make_block2_entry(di, block):
|
def make_block2_entry(di, block):
|
||||||
"""
|
"""
|
||||||
Create class and function docstrings of a new style gnuradio block for a
|
Create class and function docstrings of a new style gnuradio block
|
||||||
swig interface file.
|
|
||||||
"""
|
"""
|
||||||
descriptions = []
|
|
||||||
# For new style blocks all the relevant documentation should be
|
# For new style blocks all the relevant documentation should be
|
||||||
# associated with the 'make' method.
|
# associated with the 'make' method.
|
||||||
class_description = combine_descriptions(block)
|
class_description = combine_descriptions(block)
|
||||||
|
@ -228,28 +189,21 @@ def make_block2_entry(di, block):
|
||||||
description = class_description + "\n\nConstructor Specific Documentation:\n\n" + make_description
|
description = class_description + "\n\nConstructor Specific Documentation:\n\n" + make_description
|
||||||
# Associate the combined description with the class and
|
# Associate the combined description with the class and
|
||||||
# the make function.
|
# the make function.
|
||||||
output = []
|
output = {}
|
||||||
output.append(make_class_entry(
|
output.update(make_class_entry(
|
||||||
block, description=description,
|
block, description=description,
|
||||||
ignored_methods=['make'], params=make_func.params))
|
ignored_methods=['make'], params=make_func.params))
|
||||||
makename = block.name() + '::make'
|
makename = block.name() + '::make'
|
||||||
output.append(make_func_entry(
|
output.update(make_entry(
|
||||||
make_func, name=makename, description=description,
|
make_func, name=makename, description=description,
|
||||||
params=make_func.params))
|
params=make_func.params))
|
||||||
return "\n\n".join(output)
|
return output
|
||||||
|
|
||||||
def make_swig_interface_file(di, swigdocfilename, custom_output=None):
|
def get_docstrings_dict(di, custom_output=None):
|
||||||
|
|
||||||
output = ["""
|
output = {}
|
||||||
/*
|
if custom_output:
|
||||||
* This file was automatically generated using swig_doc.py.
|
output.update(custom_output)
|
||||||
*
|
|
||||||
* Any changes to it will be lost next time it is regenerated.
|
|
||||||
*/
|
|
||||||
"""]
|
|
||||||
|
|
||||||
if custom_output is not None:
|
|
||||||
output.append(custom_output)
|
|
||||||
|
|
||||||
# Create docstrings for the blocks.
|
# Create docstrings for the blocks.
|
||||||
blocks = di.in_category(Block)
|
blocks = di.in_category(Block)
|
||||||
|
@ -262,7 +216,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None):
|
||||||
# Don't want to risk writing to output twice.
|
# Don't want to risk writing to output twice.
|
||||||
if make_func.name() not in make_funcs:
|
if make_func.name() not in make_funcs:
|
||||||
make_funcs.add(make_func.name())
|
make_funcs.add(make_func.name())
|
||||||
output.append(make_block_entry(di, block))
|
output.update(make_block_entry(di, block))
|
||||||
except block.ParsingError:
|
except block.ParsingError:
|
||||||
sys.stderr.write('Parsing error for block {0}\n'.format(block.name()))
|
sys.stderr.write('Parsing error for block {0}\n'.format(block.name()))
|
||||||
raise
|
raise
|
||||||
|
@ -274,7 +228,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None):
|
||||||
# Don't want to risk writing to output twice.
|
# Don't want to risk writing to output twice.
|
||||||
if make_func_name not in make_funcs:
|
if make_func_name not in make_funcs:
|
||||||
make_funcs.add(make_func_name)
|
make_funcs.add(make_func_name)
|
||||||
output.append(make_block2_entry(di, block))
|
output.update(make_block2_entry(di, block))
|
||||||
except block.ParsingError:
|
except block.ParsingError:
|
||||||
sys.stderr.write('Parsing error for block {0}\n'.format(block.name()))
|
sys.stderr.write('Parsing error for block {0}\n'.format(block.name()))
|
||||||
raise
|
raise
|
||||||
|
@ -285,7 +239,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None):
|
||||||
if f.name() not in make_funcs and not f.name().startswith('std::')]
|
if f.name() not in make_funcs and not f.name().startswith('std::')]
|
||||||
for f in funcs:
|
for f in funcs:
|
||||||
try:
|
try:
|
||||||
output.append(make_func_entry(f))
|
output.update(make_entry(f))
|
||||||
except f.ParsingError:
|
except f.ParsingError:
|
||||||
sys.stderr.write('Parsing error for function {0}\n'.format(f.name()))
|
sys.stderr.write('Parsing error for function {0}\n'.format(f.name()))
|
||||||
|
|
||||||
|
@ -296,37 +250,97 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None):
|
||||||
if k.name() not in block_names and not k.name().startswith('std::')]
|
if k.name() not in block_names and not k.name().startswith('std::')]
|
||||||
for k in klasses:
|
for k in klasses:
|
||||||
try:
|
try:
|
||||||
output.append(make_class_entry(k))
|
output.update(make_class_entry(k))
|
||||||
except k.ParsingError:
|
except k.ParsingError:
|
||||||
sys.stderr.write('Parsing error for class {0}\n'.format(k.name()))
|
sys.stderr.write('Parsing error for class {0}\n'.format(k.name()))
|
||||||
|
|
||||||
# Docstrings are not created for anything that is not a function or a class.
|
# Docstrings are not created for anything that is not a function or a class.
|
||||||
# If this excludes anything important please add it here.
|
# If this excludes anything important please add it here.
|
||||||
|
|
||||||
output = "\n\n".join(output)
|
return output
|
||||||
|
|
||||||
swig_doc = open(swigdocfilename, 'w')
|
def sub_docstring_in_pydoc_h(pydoc_files, docstrings_dict, output_dir, filter_str=None):
|
||||||
swig_doc.write(output)
|
if filter_str:
|
||||||
swig_doc.close()
|
docstrings_dict = {k: v for k, v in docstrings_dict.items() if k.startswith(filter_str)}
|
||||||
|
|
||||||
|
with open(os.path.join(output_dir,'docstring_status'),'w') as status_file:
|
||||||
|
|
||||||
|
for pydoc_file in pydoc_files:
|
||||||
|
if filter_str:
|
||||||
|
filter_str2 = "::".join((filter_str,os.path.split(pydoc_file)[-1].split('_pydoc_template.h')[0]))
|
||||||
|
docstrings_dict2 = {k: v for k, v in docstrings_dict.items() if k.startswith(filter_str2)}
|
||||||
|
else:
|
||||||
|
docstrings_dict2 = docstrings_dict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
file_in = open(pydoc_file,'r').read()
|
||||||
|
for key, value in docstrings_dict2.items():
|
||||||
|
file_in_tmp = file_in
|
||||||
|
try:
|
||||||
|
doc_key = key.split("::")
|
||||||
|
# if 'gr' in doc_key:
|
||||||
|
# doc_key.remove('gr')
|
||||||
|
doc_key = '_'.join(doc_key)
|
||||||
|
regexp = r'(__doc_{} =\sR\"doc\()[^)]*(\)doc\")'.format(doc_key)
|
||||||
|
regexp = re.compile(regexp, re.MULTILINE)
|
||||||
|
|
||||||
|
(file_in, nsubs) = regexp.subn(r'\1'+value+r'\2', file_in, count=1)
|
||||||
|
if nsubs == 1:
|
||||||
|
status_file.write("PASS: " + pydoc_file + "\n")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise KeyboardInterrupt
|
||||||
|
except: # be permissive, TODO log, but just leave the docstring blank
|
||||||
|
status_file.write("FAIL: " + pydoc_file + "\n")
|
||||||
|
file_in = file_in_tmp
|
||||||
|
|
||||||
|
output_pathname = os.path.join(output_dir, os.path.basename(pydoc_file).replace('_template.h','.h'))
|
||||||
|
# FIXME: Remove this debug print
|
||||||
|
print('output docstrings to {}'.format(output_pathname))
|
||||||
|
with open(output_pathname,'w') as file_out:
|
||||||
|
file_out.write(file_in)
|
||||||
|
|
||||||
|
def copy_docstring_templates(pydoc_files, output_dir):
|
||||||
|
with open(os.path.join(output_dir,'docstring_status'),'w') as status_file:
|
||||||
|
for pydoc_file in pydoc_files:
|
||||||
|
file_in = open(pydoc_file,'r').read()
|
||||||
|
output_pathname = os.path.join(output_dir, os.path.basename(pydoc_file).replace('_template.h','.h'))
|
||||||
|
# FIXME: Remove this debug print
|
||||||
|
print('copy docstrings to {}'.format(output_pathname))
|
||||||
|
with open(output_pathname,'w') as file_out:
|
||||||
|
file_out.write(file_in)
|
||||||
|
status_file.write("DONE")
|
||||||
|
|
||||||
|
def argParse():
|
||||||
|
"""Parses commandline args."""
|
||||||
|
desc='Scrape the doxygen generated xml for docstrings to insert into python bindings'
|
||||||
|
parser = ArgumentParser(description=desc)
|
||||||
|
|
||||||
|
parser.add_argument("function", help="Operation to perform on docstrings", choices=["scrape","sub","copy"])
|
||||||
|
|
||||||
|
parser.add_argument("--xml_path")
|
||||||
|
parser.add_argument("--bindings_dir")
|
||||||
|
parser.add_argument("--output_dir")
|
||||||
|
parser.add_argument("--json_path")
|
||||||
|
parser.add_argument("--filter", default=None)
|
||||||
|
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Parse command line options and set up doxyxml.
|
# Parse command line options and set up doxyxml.
|
||||||
err_msg = "Execute using: python swig_doc.py xml_path outputfilename"
|
args = argParse()
|
||||||
if len(sys.argv) != 3:
|
if args.function.lower() == 'scrape':
|
||||||
raise Exception(err_msg)
|
di = DoxyIndex(args.xml_path)
|
||||||
xml_path = sys.argv[1]
|
docstrings_dict = get_docstrings_dict(di)
|
||||||
swigdocfilename = sys.argv[2]
|
with open(args.json_path, 'w') as fp:
|
||||||
di = DoxyIndex(xml_path)
|
json.dump(docstrings_dict, fp)
|
||||||
|
elif args.function.lower() == 'sub':
|
||||||
|
with open(args.json_path, 'r') as fp:
|
||||||
|
docstrings_dict = json.load(fp)
|
||||||
|
pydoc_files = glob.glob(os.path.join(args.bindings_dir,'*_pydoc_template.h'))
|
||||||
|
sub_docstring_in_pydoc_h(pydoc_files, docstrings_dict, args.output_dir, args.filter)
|
||||||
|
elif args.function.lower() == 'copy':
|
||||||
|
pydoc_files = glob.glob(os.path.join(args.bindings_dir,'*_pydoc_template.h'))
|
||||||
|
copy_docstring_templates(pydoc_files, args.output_dir)
|
||||||
|
|
||||||
# gnuradio.gr.msq_queue.insert_tail and delete_head create errors unless docstrings are defined!
|
|
||||||
# This is presumably a bug in SWIG.
|
|
||||||
#msg_q = di.get_member(u'gr_msg_queue', DoxyClass)
|
|
||||||
#insert_tail = msg_q.get_member(u'insert_tail', DoxyFunction)
|
|
||||||
#delete_head = msg_q.get_member(u'delete_head', DoxyFunction)
|
|
||||||
output = []
|
|
||||||
#output.append(make_func_entry(insert_tail, name='gr_py_msg_queue__insert_tail'))
|
|
||||||
#output.append(make_func_entry(delete_head, name='gr_py_msg_queue__delete_head'))
|
|
||||||
custom_output = "\n\n".join(output)
|
|
||||||
|
|
||||||
# Generate the docstrings interface file.
|
|
||||||
make_swig_interface_file(di, swigdocfilename, custom_output=custom_output)
|
|
Loading…
Reference in New Issue