summaryrefslogtreecommitdiffstats
path: root/doc/extract-guile-c-doc.scm
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 07:33:12 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 07:33:12 +0000
commit36082a2fe36ecd800d784ae44c14f1f18c66a7e9 (patch)
tree6c68e0c0097987aff85a01dabddd34b862309a7c /doc/extract-guile-c-doc.scm
parentInitial commit. (diff)
downloadgnutls28-upstream.tar.xz
gnutls28-upstream.zip
Adding upstream version 3.7.9.upstream/3.7.9upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/extract-guile-c-doc.scm')
-rw-r--r--doc/extract-guile-c-doc.scm69
1 files changed, 69 insertions, 0 deletions
diff --git a/doc/extract-guile-c-doc.scm b/doc/extract-guile-c-doc.scm
new file mode 100644
index 0000000..3a310ab
--- /dev/null
+++ b/doc/extract-guile-c-doc.scm
@@ -0,0 +1,69 @@
+;;; extract-c-doc.scm -- Output Texinfo from "snarffed" C files.
+;;;
+;;; Copyright 2006-2012 Free Software Foundation, Inc.
+;;;
+;;;
+;;; 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 3 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, write to the Free Software
+;;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+;;; Written by Ludovic Courtès <ludo@chbouib.org>.
+
+(use-modules (system documentation c-snarf)
+ (system documentation output)
+
+ (srfi srfi-1))
+
+(define (main file cpp+args cpp-flags . procs)
+ ;; Arguments:
+ ;;
+ ;; 1. C file to be processed;
+ ;; 2. how to invoke the CPP (e.g., "cpp -E");
+ ;; 3. additional CPP flags (e.g., "-I /usr/local/include");
+ ;; 4. optionally, a list of Scheme procedure names whose documentation is
+ ;; to be output. If no such list is passed, then documentation for
+ ;; all the Scheme functions available in the C source file is issued.
+ ;;
+ (let* ((cpp+args (string-tokenize cpp+args))
+ (cpp (car cpp+args))
+ (cpp-flags (append (cdr cpp+args)
+ (string-tokenize cpp-flags)
+ (list "-DSCM_MAGIC_SNARF_DOCS "))))
+ ;;(format (current-error-port) "cpp-flags: ~a~%" cpp-flags)
+ (format (current-error-port) "extracting Texinfo doc from `~a'... "
+ file)
+
+ ;; Don't mention the name of C functions.
+ (*document-c-functions?* #f)
+
+ (let ((proc-doc-list
+ (run-cpp-and-extract-snarfing file cpp cpp-flags)))
+ (display "@c Automatically generated, do not edit.\n")
+ (display (string-concatenate
+ (map procedure-texi-documentation
+ (if (null? procs)
+ proc-doc-list
+ (filter (lambda (proc-doc)
+ (let ((proc-name
+ (assq-ref proc-doc
+ 'scheme-name)))
+ (member proc-name procs)))
+ proc-doc-list))))))
+ (format (current-error-port) "done.~%")
+ (exit 0)))
+
+
+;;; Local Variables:
+;;; mode: scheme
+;;; coding: latin-1
+;;; End: