]> sigrok.org Git - libsigrok.git/blobdiff - bindings/swig/doc.py
C++: Declare all callbacks invoked from C noexcept
[libsigrok.git] / bindings / swig / doc.py
index 16cc16520e03ed84021d7ecd991ad5102aa6bad6..4987b6ceb656a468bacae19e926e7a181008d8ae 100644 (file)
@@ -17,6 +17,7 @@
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ##
 
+from __future__ import print_function
 from xml.etree import ElementTree
 import sys, os
 
@@ -40,20 +41,36 @@ for compound in index.findall('compound'):
     brief = get_text(cls.find('briefdescription'))
     if brief:
         if language == 'python':
-            print '%%feature("docstring") %s "%s";' % (class_name, brief)
+            print('%%feature("docstring") %s "%s";' % (class_name, brief))
         elif language == 'java':
-            print '%%typemap(javaclassmodifiers) %s "/** %s */\npublic class"' % (
-            class_name, brief)
+            print('%%typemap(javaclassmodifiers) %s "/** %s */\npublic class"' % (
+            class_name, brief))
     for section in cls.findall('sectiondef'):
         if section.attrib['kind'] != 'public-func':
             continue
         for function in section.findall('memberdef'):
             function_name = function.find('name').text
             brief = get_text(function.find('briefdescription'))
+            parameters = {}
+            for para in function.find('detaileddescription').findall('para'):
+                paramlist = para.find('parameterlist')
+                if paramlist is not None:
+                    for param in paramlist.findall('parameteritem'):
+                        namelist = param.find('parameternamelist')
+                        name = namelist.find('parametername').text
+                        description = get_text(param.find('parameterdescription'))
+                        if description:
+                            parameters[name] = description
             if brief:
                 if language == 'python':
-                    print '%%feature("docstring") %s::%s "%s";' % (
-                        class_name, function_name, brief)
+                    print(str.join('\n', [
+                        '%%feature("docstring") %s::%s "%s' % (
+                            class_name, function_name, brief)] + [
+                        '@param %s %s' % (name, desc)
+                            for name, desc in parameters.items()]) + '";')
                 elif language == 'java':
-                    print '%%javamethodmodifiers %s::%s "/** %s */\npublic"' % (
-                    class_name, function_name, brief)
+                    print(str.join('\n', [
+                        '%%javamethodmodifiers %s::%s "/** %s' % (
+                            class_name, function_name, brief)] + [
+                        '   * @param %s %s' % (name, desc)
+                            for name, desc in parameters.items()]) + ' */\npublic"')