diff options
author | Ludovic Courtès <ludo@chbouib.org> | 2007-05-31 00:08:59 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@chbouib.org> | 2007-05-31 00:08:59 +0200 |
commit | 6b55b3d61e743045b88375ab86bc389d3ee2292f (patch) | |
tree | 1b6dd16a90e0bb579c5c0c89c7716af5579ccab4 /doc/extract-guile-c-doc.scm | |
parent | e6b134bbb87a1281ef65c881506542e1f2ea3e2a (diff) | |
download | gnutls-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.scm | 71 |
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: |