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,2 @@
reference.sgml
Makefile.in
Makefile

View File

@@ -45,7 +45,8 @@ libgtop_la_LIBADD = ../sysdeps/guile/guile.lo \
../sysdeps/@sysdeps_dir@/open.lo \
../sysdeps/@sysdeps_dir@/proctime.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

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