summaryrefslogtreecommitdiff
path: root/doc/extract-guile-c-doc.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@chbouib.org>2007-05-31 00:08:59 +0200
committerLudovic Courtès <ludo@chbouib.org>2007-05-31 00:08:59 +0200
commit6b55b3d61e743045b88375ab86bc389d3ee2292f (patch)
tree1b6dd16a90e0bb579c5c0c89c7716af5579ccab4 /doc/extract-guile-c-doc.scm
parente6b134bbb87a1281ef65c881506542e1f2ea3e2a (diff)
downloadgnutls-6b55b3d61e743045b88375ab86bc389d3ee2292f.tar.gz
Integrated documentation of Guile bindings.
Diffstat (limited to 'doc/extract-guile-c-doc.scm')
-rw-r--r--doc/extract-guile-c-doc.scm71
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/extract-guile-c-doc.scm b/doc/extract-guile-c-doc.scm
new file mode 100644
index 0000000000..de90a158eb
--- /dev/null
+++ b/doc/extract-guile-c-doc.scm
@@ -0,0 +1,71 @@
+;;; extract-c-doc.scm -- Output Texinfo from "snarffed" C files.
+;;;
+;;; Copyright 2006, 2007 Free Software Foundation
+;;;
+;;;
+;;; 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, 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 . args)
+ ;; 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* ((file (car args))
+ (cpp+args (string-tokenize (cadr args)))
+ (cpp (car cpp+args))
+ (cpp-flags (apply string-append (caddr args)
+ " -DSCM_MAGIC_SNARF_DOCS "
+ (cdr cpp+args)))
+ (procs (cdddr args)))
+ ;;(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
+ (string-tokenize cpp-flags))))
+ (display (apply string-append
+ (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: