New file. Improved automatical generation of the documentation file

1998-08-11  Martin Baulig  <martin@home-of-linux.org>

	* guile/features.awk: New file.
	* guile/make-docbook.scm: Improved automatical generation of
	the documentation file `reference.sgml'.
	* guile/reference.sgml: This file is automatically generated,
	but many people have problems with it, so we add it to CVS.
This commit is contained in:
Martin Baulig
1998-08-11 15:32:48 +00:00
committed by Martin Baulig
parent 974eb766de
commit 59a07e10f1
6 changed files with 1875 additions and 19 deletions

View File

@@ -1,3 +1,11 @@
1998-08-11 Martin Baulig <martin@home-of-linux.org>
* guile/features.awk: New file.
* guile/make-docbook.scm: Improved automatical generation of
the documentation file `reference.sgml'.
* guile/reference.sgml: This file is automatically generated,
but many people have problems with it, so we add it to CVS.
1998-08-10 Martin Baulig <martin@home-of-linux.org> 1998-08-10 Martin Baulig <martin@home-of-linux.org>
* include/glibtop/procmap.h (glibtop_proc_map): New file. * include/glibtop/procmap.h (glibtop_proc_map): New file.

View File

@@ -1,3 +1,2 @@
reference.sgml
Makefile.in Makefile.in
Makefile Makefile

View File

@@ -45,7 +45,8 @@ libgtop_la_LIBADD = ../sysdeps/guile/guile.lo \
../sysdeps/@sysdeps_dir@/open.lo \ ../sysdeps/@sysdeps_dir@/open.lo \
../sysdeps/@sysdeps_dir@/proctime.lo \ ../sysdeps/@sysdeps_dir@/proctime.lo \
../sysdeps/@sysdeps_dir@/prockernel.lo \ ../sysdeps/@sysdeps_dir@/prockernel.lo \
../sysdeps/@sysdeps_dir@/procuid.lo ../sysdeps/@sysdeps_dir@/procuid.lo \
../sysdeps/@sysdeps_dir@/procmap.lo
libnames_la_LIBADD = ../sysdeps/guile/names/guile-names.lo libnames_la_LIBADD = ../sysdeps/guile/names/guile-names.lo

61
guile/features.awk Normal file
View File

@@ -0,0 +1,61 @@
BEGIN {
string = "";
names = "";
}
function output(line) {
split (line, line_fields, /\|/);
retval = line_fields[1];
feature = line_fields[2];
param_def = line_fields[4];
orig = feature; sub(/^@/,"",feature);
space = feature; gsub(/./," ",space);
if (string == "")
string = " '(";
else
string = string" ";
string = string"(\""feature"\" (\""retval"\"";
feature_nounder = feature;
sub(/_/, "-", feature_nounder);
if (names == "")
names = " '(";
else
names = names" ";
names = names"(\""feature"\" \""feature_nounder"\")\n";
nr_params = split (param_def, params, /:/);
for (param = 1; param <= nr_params; param++) {
list = params[param];
type = params[param];
sub(/\(.*/, "", type);
sub(/^\w+\(/, "", list); sub(/\)$/, "", list);
string = string" (\""type"\"";
count = split (list, fields, /,/);
for (field = 1; field <= count; field++) {
string = string" \""fields[field]"\"";
}
string = string")";
}
string = string"))\n";
}
/^[^#]/ { output($0) }
END {
print "(define libgtop-features";
print string" )";
print ")\n";
print "(define libgtop-feature-names";
print names" )";
print ")\n";
}

View File

@@ -1,12 +1,18 @@
;; $Id$ ;; $Id$
(load "features.scm")
(define sysdeps-list '()) (define sysdeps-list '())
(define type-names '("void"
"int64_t" "u_int64_t" "double"
"int" "char" "const char *"))
(define make-sysdeps-list (define make-sysdeps-list
(lambda () (lambda ()
(letrec ((names (glibtop-names-sysdeps)) (letrec ((names (cdr (glibtop-names-sysdeps)))
(labels (glibtop-labels-sysdeps)) (labels (cdr (glibtop-labels-sysdeps)))
(descriptions (glibtop-descriptions-sysdeps)) (descriptions (cdr (glibtop-descriptions-sysdeps)))
) )
(for-each (lambda (feature) (for-each (lambda (feature)
(let* ((label (car labels)) (let* ((label (car labels))
@@ -31,11 +37,13 @@
(let* ((names (eval-string (string "(glibtop-names-" feature ")"))) (let* ((names (eval-string (string "(glibtop-names-" feature ")")))
(types (eval-string (string "(glibtop-types-" feature ")"))) (types (eval-string (string "(glibtop-types-" feature ")")))
(labels (eval-string (string "(glibtop-labels-" feature ")"))) (labels (eval-string (string "(glibtop-labels-" feature ")")))
(sysdeps (assoc-ref sysdeps-list feature)) (retval "void") (sysdeps (assoc-ref sysdeps-list feature))
(retval (car (car (assoc-ref libgtop-features feature))))
(name (assoc-ref sysdeps 'name)) (name (assoc-ref sysdeps 'name))
(label (assoc-ref sysdeps 'label)) (label (assoc-ref sysdeps 'label))
(description (assoc-ref sysdeps 'description)) (description (assoc-ref sysdeps 'description))
(descriptions (eval-string (string "(glibtop-descriptions-" feature ")"))) (descriptions (eval-string (string "(glibtop-descriptions-" feature ")")))
(feature_nounder (car (assoc-ref libgtop-feature-names feature)))
(decl-list '()) (field-list '()) (decl-list '()) (field-list '())
(synopsis-start-string (synopsis-start-string
@@ -73,14 +81,43 @@
(funcdef-string (funcdef-string
(string "<funcdef>" retval " " (string "<funcdef>" retval " "
"<function>glibtop_get_" feature "__r</function>" "<function>glibtop_get_" feature "_l</function>"
"</funcdef>\n") "</funcdef>\n")
) )
(paramdef-string (paramdef-string
(string "<paramdef>glibtop *<parameter>server</parameter>, " (lambda ()
"glibtop_" feature " *<parameter>" feature "</parameter>\n" (let ((start (string "<paramdef>glibtop *<parameter>"
"</paramdef>") "server</parameter>, glibtop_"
feature " *<parameter>" feature
"</parameter>")
)
(param_string (string))
(end (string "\n</paramdef>"))
(param_lists
(cdr (car (assoc-ref libgtop-features feature))))
)
(for-each
(lambda (x)
(let ((type (car x))
(params (cdr x))
)
(for-each
(lambda (param)
(set! param_string (string param_string
", " type
" <parameter>"
param
"</parameter>"
)
)
)
params)
)
)
param_lists)
(string start param_string end))
)
) )
(funcdef-noserver-string (funcdef-noserver-string
@@ -163,6 +200,7 @@
(lambda (x) (lambda (x)
(set! new-type (car type-list)) (set! new-type (car type-list))
(set! type-list (cdr type-list)) (set! type-list (cdr type-list))
(set! new-type (list-ref type-names new-type))
(if (equal? old-type new-type) (if (equal? old-type new-type)
(set-car! fields (set-car! fields
(append (list new-type) (append (list new-type)
@@ -213,8 +251,8 @@
(string "typedef struct _glibtop_" name) (string "typedef struct _glibtop_" name)
5) 5)
(string "glibtop_" name ";\n\n" (string "glibtop_" name ";\n\n"
"struct glibtop_" name "\n{\n\t" "struct _glibtop_" name "\n{\n\t"
"unsigned long\tflags;\n") "u_int64_t\tflags;\n")
) )
) )
) )
@@ -269,7 +307,7 @@
(string "</funcsynopsis>\n") (string "</funcsynopsis>\n")
(string "<funcsynopsis>\n") (string "<funcsynopsis>\n")
funcdef-string funcdef-string
paramdef-string (paramdef-string)
(string "</funcsynopsis>\n</blockquote>\n") (string "</funcsynopsis>\n</blockquote>\n")
definition-start-string definition-start-string
(string "<blockquote>\n<literallayout>\n") (string "<blockquote>\n<literallayout>\n")
@@ -279,6 +317,7 @@
"<variablelist>\n\n" "<variablelist>\n\n"
(make-param-description) (make-param-description)
"</variablelist>\n\n" "</variablelist>\n\n"
"&include-" feature_nounder ".sgml;\n\n"
) )
) )
) )
@@ -299,13 +338,9 @@
(begin (begin
(make-sysdeps-list) (make-sysdeps-list)
(display (string "<chapter id=\"functions\">\n"
"<title>Function Reference List</title>\n\n")
)
(for-each (lambda (x) (for-each (lambda (x)
(display (make-function-reference x)) (display (make-function-reference x))
) )
(glibtop-names-sysdeps)) (cdr (glibtop-names-sysdeps)))
) )

1752
guile/reference.sgml Normal file

File diff suppressed because it is too large Load Diff